flask-debugtoolbar-0.15.1/0000775000175000017500000000000014613236757015227 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/.gitignore0000664000175000017500000000600614613236757017221 0ustar kalyanikalyani# Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/#use-with-ide .pdm.toml # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ flask-debugtoolbar-0.15.1/example/0000775000175000017500000000000014613236757016662 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/example/templates/0000775000175000017500000000000014613236757020660 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/example/templates/index.html0000664000175000017500000000032714613236757022657 0ustar kalyanikalyani Flask-debug-toolbar

Flask-debug-toolbar

Redirect example flask-debugtoolbar-0.15.1/example/app.py0000664000175000017500000000250614613236757020017 0ustar kalyanikalyani# Run using: `FLASK_DEBUG=True flask run` from flask import Flask, render_template, redirect, url_for from flask_sqlalchemy import SQLAlchemy from flask_debugtoolbar import DebugToolbarExtension app = Flask(__name__) app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = True #app.config['DEBUG_TB_PANELS'] = ( # 'flask_debugtoolbar.panels.headers.HeaderDebugPanel', # 'flask_debugtoolbar.panels.logger.LoggingPanel', # 'flask_debugtoolbar.panels.timer.TimerDebugPanel', #) #app.config['DEBUG_TB_HOSTS'] = ('127.0.0.1', '::1' ) app.config['SECRET_KEY'] = 'asd' app.config['SQLALCHEMY_RECORD_QUERIES'] = True app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db' # This is no longer needed for Flask-SQLAlchemy 3.0+, if you're using 2.X you'll want to define this: # app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) toolbar = DebugToolbarExtension(app) class ExampleModel(db.Model): __tablename__ = 'examples' value = db.Column(db.String(100), primary_key=True) @app.route('/') def index(): app.logger.info("Hello there") ExampleModel.query.get(1) return render_template('index.html') @app.route('/redirect') def redirect_example(): response = redirect(url_for('index')) response.set_cookie('test_cookie', '1') return response with app.app_context(): db.create_all() flask-debugtoolbar-0.15.1/test/0000775000175000017500000000000014613236757016206 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/test/conftest.py0000664000175000017500000000021014613236757020376 0ustar kalyanikalyaniimport pytest @pytest.fixture(autouse=True) def mock_env_development(monkeypatch): monkeypatch.setenv("FLASK_ENV", "development") flask-debugtoolbar-0.15.1/test/test_utils.py0000664000175000017500000000750714613236757020770 0ustar kalyanikalyaniimport ntpath import posixpath from markupsafe import Markup import pytest from flask_debugtoolbar.utils import (_relative_paths, _shortest_relative_path, format_sql, decode_text, HAVE_PYGMENTS) @pytest.mark.parametrize('value,paths,expected,path_module', [ # should yield relative path to the parent directory ('/foo/bar', ['/foo'], ['bar'], posixpath), ('c:\\foo\\bar', ['c:\\foo'], ['bar'], ntpath), # should not yield result if no path is a parent directory ('/foo/bar', ['/baz'], [], posixpath), ('c:\\foo\\bar', ['c:\\baz'], [], ntpath), # should only yield relative paths for parent directories ('/foo/bar', ['/foo', '/baz'], ['bar'], posixpath), ('c:\\foo\\bar', ['c:\\foo', 'c:\\baz'], ['bar'], ntpath), # should yield all results when multiple parents match ('/foo/bar/baz', ['/foo', '/foo/bar'], ['bar/baz', 'baz'], posixpath), ('c:\\foo\\bar\\baz', ['c:\\foo', 'c:\\foo\\bar'], ['bar\\baz', 'baz'], ntpath), # should ignore case differences on windows ('c:\\Foo\\bar', ['c:\\foo'], ['bar'], ntpath), # should preserve original case ('/Foo/Bar', ['/Foo'], ['Bar'], posixpath), ('c:\\Foo\\Bar', ['c:\\foo'], ['Bar'], ntpath), ]) def test_relative_paths(value, paths, expected, path_module): assert list(_relative_paths(value, paths, path_module)) == expected @pytest.mark.parametrize('value,paths,expected,path_module', [ # should yield relative path to the parent directory ('/foo/bar', ['/foo'], 'bar', posixpath), ('c:\\foo\\bar', ['c:\\foo'], 'bar', ntpath), # should return the original value if no path is a parent directory ('/foo/bar', ['/baz'], '/foo/bar', posixpath), ('c:\\foo\\bar', ['c:\\baz'], 'c:\\foo\\bar', ntpath), # should yield shortest result when multiple parents match ('/foo/bar/baz', ['/foo', '/foo/bar'], 'baz', posixpath), ('c:\\foo\\bar\\baz', ['c:\\foo', 'c:\\foo\\bar'], 'baz', ntpath), ]) def test_shortest_relative_path(value, paths, expected, path_module): assert _shortest_relative_path(value, paths, path_module) == expected def test_decode_text_unicode(): value = u'\uffff' decoded = decode_text(value) assert decoded == value def test_decode_text_ascii(): value = 'abc' assert decode_text(value.encode('ascii')) == value def test_decode_text_non_ascii(): value = b'abc \xff xyz' assert isinstance(value, bytes) decoded = decode_text(value) assert not isinstance(decoded, bytes) assert decoded.startswith('abc') assert decoded.endswith('xyz') @pytest.fixture() def no_pygments(monkeypatch): monkeypatch.setattr('flask_debugtoolbar.utils.HAVE_PYGMENTS', False) def test_format_sql_no_pygments(no_pygments): sql = 'select 1' assert format_sql(sql, {}) == sql def test_format_sql_no_pygments_non_ascii(no_pygments): sql = b"select '\xff'" formatted = format_sql(sql, {}) assert formatted.startswith(u"select '") def test_format_sql_no_pygments_escape_html(no_pygments): sql = 'select x < 1' formatted = format_sql(sql, {}) assert not isinstance(formatted, Markup) assert Markup('%s') % formatted == 'select x < 1' @pytest.mark.skipif(not HAVE_PYGMENTS, reason='test requires the "Pygments" library') def test_format_sql_pygments(): sql = 'select 1' html = format_sql(sql, {}) assert isinstance(html, Markup) assert html.startswith(' Hello world flask-debugtoolbar-0.15.1/test/basic_app.py0000664000175000017500000000164714613236757020511 0ustar kalyanikalyanifrom flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy from flask_debugtoolbar import DebugToolbarExtension app = Flask('basic_app') app.config['DEBUG'] = True app.config['SECRET_KEY'] = 'abc123' app.config['SQLALCHEMY_RECORD_QUERIES'] = True app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' # This is no longer needed for Flask-SQLAlchemy 3.0+, # if you're using 2.X you'll want to define this: # app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # make sure these are printable in the config panel app.config['BYTES_VALUE'] = b'\x00' app.config['UNICODE_VALUE'] = u'\uffff' toolbar = DebugToolbarExtension(app) db = SQLAlchemy(app) class Foo(db.Model): __tablename__ = 'foo' id = db.Column(db.Integer, primary_key=True) @app.route('/') def index(): Foo.query.filter_by(id=1).all() return render_template('basic_app.html') with app.app_context(): db.create_all() flask-debugtoolbar-0.15.1/.github/0000775000175000017500000000000014613236757016567 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/.github/workflows/0000775000175000017500000000000014613236757020624 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/.github/workflows/tests.yml0000664000175000017500000000254614613236757022520 0ustar kalyanikalyaniname: Tests on: push: branches: - master paths-ignore: - 'docs/**' - '*.rst' pull_request: paths-ignore: - 'docs/**' - '*.rst' jobs: tests: name: ${{ matrix.name }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - {name: Linux, python: '3.12', os: ubuntu-latest, tox: py312} - {name: Windows, python: '3.12', os: windows-latest, tox: py312} - {name: Mac, python: '3.12', os: macos-latest, tox: py312} - {name: Minimal, python: '3.12', os: ubuntu-latest, tox: minimal} - {name: '3.11', python: '3.11', os: ubuntu-latest, tox: py311} - {name: '3.10', python: '3.10', os: ubuntu-latest, tox: py310} - {name: '3.9', python: '3.9', os: ubuntu-latest, tox: py39} - {name: '3.8', python: '3.8', os: ubuntu-latest, tox: py38} - {name: '3.7', python: '3.7', os: ubuntu-latest, tox: py37} - {name: Style, python: '3.10', os: ubuntu-latest, tox: stylecheck} steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python }} - name: update pip run: | pip install -U setuptools wheel python -m pip install -U pip - run: pip install tox - run: tox -e ${{ matrix.tox }} flask-debugtoolbar-0.15.1/src/0000775000175000017500000000000014613236757016016 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/0000775000175000017500000000000014613236757021647 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/__init__.py0000664000175000017500000002323714613236757023767 0ustar kalyanikalyaniimport contextvars import os import urllib.parse import warnings import flask from flask import Blueprint, current_app, request, g, send_from_directory, url_for from flask.globals import request_ctx from jinja2 import __version__ as __jinja_version__ from jinja2 import Environment, PackageLoader from flask_debugtoolbar.compat import iteritems from flask_debugtoolbar.toolbar import DebugToolbar from flask_debugtoolbar.utils import decode_text, gzip_compress, gzip_decompress try: # Python 3.8+ from importlib.metadata import version __version__ = version("Flask-DebugToolbar") except ImportError: import pkg_resources __version__ = pkg_resources.get_distribution("Flask-DebugToolbar").version module = Blueprint('debugtoolbar', __name__) def replace_insensitive(string, target, replacement): """Similar to string.replace() but is case insensitive Code borrowed from: http://forums.devshed.com/python-programming-11/case-insensitive-string-replace-490921.html """ no_case = string.lower() index = no_case.rfind(target.lower()) if index >= 0: return string[:index] + replacement + string[index + len(target):] else: # no results so return the original string return string def _printable(value): try: return decode_text(repr(value)) except Exception as e: return '' % ( object.__repr__(value), type(e).__name__, e) class DebugToolbarExtension(object): _static_dir = os.path.realpath( os.path.join(os.path.dirname(__file__), 'static')) _toolbar_codes = [200, 201, 400, 401, 403, 404, 405, 500, 501, 502, 503, 504] _redirect_codes = [301, 302, 303, 304] def __init__(self, app=None): self.app = app # Support threads running `flask.copy_current_request_context` without # poping toolbar during `teardown_request` self.debug_toolbars_var = contextvars.ContextVar('debug_toolbars') jinja_extensions = ['jinja2.ext.i18n'] if __jinja_version__[0] == '2': jinja_extensions.append('jinja2.ext.with_') # Configure jinja for the internal templates and add url rules # for static data self.jinja_env = Environment( autoescape=True, extensions=jinja_extensions, loader=PackageLoader(__name__, 'templates')) self.jinja_env.filters['urlencode'] = urllib.parse.quote_plus self.jinja_env.filters['printable'] = _printable self.jinja_env.globals['url_for'] = url_for if app is not None: self.init_app(app) def init_app(self, app): for k, v in iteritems(self._default_config(app)): app.config.setdefault(k, v) if not app.config['DEBUG_TB_ENABLED']: return if not app.config.get('SECRET_KEY'): raise RuntimeError( "The Flask-DebugToolbar requires the 'SECRET_KEY' config " "var to be set") DebugToolbar.load_panels(app) app.before_request(self.process_request) app.after_request(self.process_response) app.teardown_request(self.teardown_request) # Monkey-patch the Flask.dispatch_request method app.dispatch_request = self.dispatch_request app.add_url_rule('/_debug_toolbar/static/', '_debug_toolbar.static', self.send_static_file) app.register_blueprint(module, url_prefix='/_debug_toolbar/views') def _default_config(self, app): return { 'DEBUG_TB_ENABLED': app.debug, 'DEBUG_TB_HOSTS': (), 'DEBUG_TB_INTERCEPT_REDIRECTS': True, 'DEBUG_TB_PANELS': ( 'flask_debugtoolbar.panels.versions.VersionDebugPanel', 'flask_debugtoolbar.panels.timer.TimerDebugPanel', 'flask_debugtoolbar.panels.headers.HeaderDebugPanel', 'flask_debugtoolbar.panels.request_vars.RequestVarsDebugPanel', 'flask_debugtoolbar.panels.config_vars.ConfigVarsDebugPanel', 'flask_debugtoolbar.panels.template.TemplateDebugPanel', 'flask_debugtoolbar.panels.sqlalchemy.SQLAlchemyDebugPanel', 'flask_debugtoolbar.panels.logger.LoggingPanel', 'flask_debugtoolbar.panels.route_list.RouteListDebugPanel', 'flask_debugtoolbar.panels.profiler.ProfilerDebugPanel', 'flask_debugtoolbar.panels.g.GDebugPanel', ), 'SQLALCHEMY_RECORD_QUERIES': app.debug, } def dispatch_request(self): """Modified version of Flask.dispatch_request to call process_view.""" req = request_ctx.request app = current_app if req.routing_exception is not None: app.raise_routing_exception(req) rule = req.url_rule # if we provide automatic options for this URL and the # request came with the OPTIONS method, reply automatically if getattr(rule, 'provide_automatic_options', False) \ and req.method == 'OPTIONS': return app.make_default_options_response() # otherwise dispatch to the handler for that endpoint view_func = app.view_functions[rule.endpoint] view_func = self.process_view(app, view_func, req.view_args) return view_func(**req.view_args) def _show_toolbar(self): """Return a boolean to indicate if we need to show the toolbar.""" if request.blueprint == 'debugtoolbar': return False hosts = current_app.config['DEBUG_TB_HOSTS'] if hosts and request.remote_addr not in hosts: return False return True def send_static_file(self, filename): """Send a static file from the flask-debugtoolbar static directory.""" return send_from_directory(self._static_dir, filename) def process_request(self): g.debug_toolbar = self if not self._show_toolbar(): return real_request = request._get_current_object() self.debug_toolbars_var.set({}) self.debug_toolbars_var.get()[real_request] = ( DebugToolbar(real_request, self.jinja_env)) for panel in self.debug_toolbars_var.get()[real_request].panels: panel.process_request(real_request) def process_view(self, app, view_func, view_kwargs): """ This method is called just before the flask view is called. This is done by the dispatch_request method. """ real_request = request._get_current_object() try: toolbar = self.debug_toolbars_var.get({})[real_request] except KeyError: return view_func for panel in toolbar.panels: new_view = panel.process_view(real_request, view_func, view_kwargs) if new_view: view_func = new_view return view_func def process_response(self, response): real_request = request._get_current_object() if real_request not in self.debug_toolbars_var.get({}): return response # Intercept http redirect codes and display an html page with a # link to the target. if current_app.config['DEBUG_TB_INTERCEPT_REDIRECTS']: if response.status_code in self._redirect_codes: redirect_to = response.location redirect_code = response.status_code if redirect_to: content = self.render('redirect.html', { 'redirect_to': redirect_to, 'redirect_code': redirect_code }) response.content_length = len(content) response.location = None response.response = [content] response.status_code = 200 # If the http response code is an allowed code then we process to add the # toolbar to the returned html response. if not (response.status_code in self._toolbar_codes and response.is_sequence and response.headers['content-type'].startswith('text/html')): return response content_encoding = response.headers.get('Content-Encoding') if content_encoding and 'gzip' in content_encoding: response_html = gzip_decompress(response.data).decode() else: response_html = response.get_data(as_text=True) no_case = response_html.lower() body_end = no_case.rfind('') if body_end >= 0: before = response_html[:body_end] after = response_html[body_end:] elif no_case.startswith(''): before = response_html after = '' else: warnings.warn('Could not insert debug toolbar.' ' tag not found in response.') return response toolbar = self.debug_toolbars_var.get()[real_request] for panel in toolbar.panels: panel.process_response(real_request, response) toolbar_html = toolbar.render_toolbar() content = ''.join((before, toolbar_html, after)) content = content.encode('utf-8') if content_encoding and 'gzip' in content_encoding: content = gzip_compress(content) response.response = [content] response.content_length = len(content) return response def teardown_request(self, exc): # debug_toolbars_var won't be set under `flask.copy_current_request_context` self.debug_toolbars_var.get({}).pop(request._get_current_object(), None) def render(self, template_name, context): template = self.jinja_env.get_template(template_name) return template.render(**context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/utils.py0000664000175000017500000000526014613236757023364 0ustar kalyanikalyaniimport itertools import os.path import sys import io import gzip try: from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import SqlLexer from pygments.styles import get_style_by_name PYGMENT_STYLE = get_style_by_name('colorful') HAVE_PYGMENTS = True except ImportError: HAVE_PYGMENTS = False try: import sqlparse HAVE_SQLPARSE = True except ImportError: HAVE_SQLPARSE = False from flask import current_app from markupsafe import Markup def format_fname(value): # If the value has a builtin prefix, return it unchanged if value.startswith(('{', '<')): return value value = os.path.normpath(value) # If the file is absolute, try normalizing it relative to the project root # to handle it as a project file if os.path.isabs(value): value = _shortest_relative_path( value, [current_app.root_path], os.path) # If the value is a relative path, it is a project file if not os.path.isabs(value): return os.path.join('.', value) # Otherwise, normalize other paths relative to sys.path return '<%s>' % _shortest_relative_path(value, sys.path, os.path) def _shortest_relative_path(value, paths, path_module): relpaths = _relative_paths(value, paths, path_module) return min(itertools.chain(relpaths, [value]), key=len) def _relative_paths(value, paths, path_module): for path in paths: try: relval = path_module.relpath(value, path) except ValueError: # on Windows, relpath throws a ValueError for # paths with different drives continue if not relval.startswith(path_module.pardir): yield relval def decode_text(value): """ Decode a text-like value for display. Unicode values are returned unchanged. Byte strings will be decoded with a text-safe replacement for unrecognized characters. """ if isinstance(value, bytes): return value.decode('ascii', 'replace') else: return value def format_sql(query, args): if HAVE_SQLPARSE: query = sqlparse.format(query, reindent=True, keyword_case='upper') if not HAVE_PYGMENTS: return decode_text(query) return Markup(highlight( query, SqlLexer(), HtmlFormatter(noclasses=True, style=PYGMENT_STYLE))) def gzip_compress(data, compresslevel=6): buff = io.BytesIO() with gzip.GzipFile(fileobj=buff, mode='wb', compresslevel=compresslevel) as f: f.write(data) return buff.getvalue() def gzip_decompress(data): with gzip.GzipFile(fileobj=io.BytesIO(data), mode='rb') as f: return f.read() flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/0000775000175000017500000000000014613236757023131 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/__init__.py0000664000175000017500000000430414613236757025243 0ustar kalyanikalyani"""Base DebugPanel class""" class DebugPanel(object): """ Base class for debug panels. """ # name = Base # If content returns something, set to true in subclass has_content = False # If the client is able to activate/de-activate the panel user_enable = False # We'll maintain a local context instance so we can expose our template # context variables to panels which need them: context = {} # Panel methods def __init__(self, jinja_env, context={}): self.context.update(context) self.jinja_env = jinja_env # If the client enabled the panel self.is_active = False @classmethod def init_app(cls, app): """Method that can be overridden by child classes. Can be used for setting up additional URL-rules/routes. Example:: class UMLDiagramPanel(DebugPanel): @classmethod def init_app(cls, app): app.add_url_rule( '/_flask_debugtoolbar_umldiagram/', '_flask_debugtoolbar_umldiagram.serve_generated_image', cls.serve_generated_image ) @classmethod def serve_generated_image(cls, app): return Response(...) """ pass def render(self, template_name, context): template = self.jinja_env.get_template(template_name) return template.render(**context) def dom_id(self): return 'flDebug%sPanel' % (self.name.replace(' ', '')) def nav_title(self): """Title showing in toolbar""" raise NotImplementedError def nav_subtitle(self): """Subtitle showing until title in toolbar""" return '' def title(self): """Title showing in panel""" raise NotImplementedError def url(self): raise NotImplementedError def content(self): raise NotImplementedError # Standard middleware methods def process_request(self, request): pass def process_view(self, request, view_func, view_kwargs): pass def process_response(self, request, response): pass flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/route_list.py0000664000175000017500000000155314613236757025700 0ustar kalyanikalyanifrom flask_debugtoolbar.panels import DebugPanel from flask import current_app _ = lambda x: x class RouteListDebugPanel(DebugPanel): """ Panel that displays the URL routing rules. """ name = 'RouteList' has_content = True routes = [] def nav_title(self): return _('Route List') def title(self): return _('Route List') def url(self): return '' def nav_subtitle(self): count = len(self.routes) return '%s %s' % (count, 'route' if count == 1 else 'routes') def process_request(self, request): self.routes = [ rule for rule in current_app.url_map.iter_rules() if not rule.rule.startswith('/_debug_toolbar') ] def content(self): return self.render('panels/route_list.html', { 'routes': self.routes, }) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/request_vars.py0000664000175000017500000000255114613236757026231 0ustar kalyanikalyanifrom flask import session from flask_debugtoolbar.panels import DebugPanel _ = lambda x: x class RequestVarsDebugPanel(DebugPanel): """ A panel to display request variables (POST/GET, session, cookies). """ name = 'RequestVars' has_content = True def nav_title(self): return _('Request Vars') def title(self): return _('Request Vars') def url(self): return '' def process_request(self, request): self.request = request self.session = session self.view_func = None self.view_args = [] self.view_kwargs = {} def process_view(self, request, view_func, view_kwargs): self.view_func = view_func self.view_kwargs = view_kwargs def content(self): context = self.context.copy() context.update({ 'get': self.request.args.lists(), 'post': self.request.form.lists(), 'cookies': self.request.cookies.items(), 'view_func': ('%s.%s' % (self.view_func.__module__, self.view_func.__name__) if self.view_func else '[unknown]'), 'view_args': self.view_args, 'view_kwargs': self.view_kwargs or {}, 'session': self.session.items(), }) return self.render('panels/request_vars.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/logger.py0000664000175000017500000000630014613236757024761 0ustar kalyanikalyanifrom __future__ import with_statement import datetime import logging try: import threading except ImportError: threading = None from flask_debugtoolbar.panels import DebugPanel from flask_debugtoolbar.utils import format_fname _ = lambda x: x class ThreadTrackingHandler(logging.Handler): def __init__(self): if threading is None: raise NotImplementedError("threading module is not available, \ the logging panel cannot be used without it") logging.Handler.__init__(self) self.records = {} # a dictionary that maps threads to log records def emit(self, record): self.get_records().append(record) def get_records(self, thread=None): """ Returns a list of records for the provided thread, of if none is provided, returns a list for the current thread. """ if thread is None: thread = threading.current_thread() if thread not in self.records: self.records[thread] = [] return self.records[thread] def clear_records(self, thread=None): if thread is None: thread = threading.current_thread() if thread in self.records: del self.records[thread] handler = None _init_lock = threading.Lock() def _init_once(): global handler if handler is not None: return with _init_lock: if handler is not None: return # Call werkzeug's internal logging to make sure it gets configured # before we add our handler. Otherwise werkzeug will see our handler # and not configure console logging for the request log. # Werkzeug's default log level is INFO so this message probably won't # be seen. try: from werkzeug._internal import _log except ImportError: pass else: _log('debug', 'Initializing Flask-DebugToolbar log handler') handler = ThreadTrackingHandler() logging.root.addHandler(handler) class LoggingPanel(DebugPanel): name = 'Logging' has_content = True def process_request(self, request): _init_once() handler.clear_records() def get_and_delete(self): records = handler.get_records() handler.clear_records() return records def nav_title(self): return _("Logging") def nav_subtitle(self): # FIXME l10n: use ngettext num_records = len(handler.get_records()) return '%s message%s' % (num_records, '' if num_records == 1 else 's') def title(self): return _('Log Messages') def url(self): return '' def content(self): records = [] for record in self.get_and_delete(): records.append({ 'message': record.getMessage(), 'time': datetime.datetime.fromtimestamp(record.created), 'level': record.levelname, 'file': format_fname(record.pathname), 'file_long': record.pathname, 'line': record.lineno, }) context = self.context.copy() context.update({'records': records}) return self.render('panels/logger.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/g.py0000664000175000017500000000104614613236757023732 0ustar kalyanikalyanifrom flask import g from flask_debugtoolbar.panels import DebugPanel _ = lambda x: x class GDebugPanel(DebugPanel): """ A panel to display flask.g content. """ name = 'g' has_content = True def nav_title(self): return _('flask.g') def title(self): return _('flask.g content') def url(self): return '' def content(self): context = self.context.copy() context.update({ 'g_content': g.__dict__ }) return self.render('panels/g.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/headers.py0000664000175000017500000000244514613236757025123 0ustar kalyanikalyanifrom flask_debugtoolbar.panels import DebugPanel _ = lambda x: x class HeaderDebugPanel(DebugPanel): """ A panel to display HTTP headers. """ name = 'Header' has_content = True # List of headers we want to display header_filter = ( 'CONTENT_TYPE', 'HTTP_ACCEPT', 'HTTP_ACCEPT_CHARSET', 'HTTP_ACCEPT_ENCODING', 'HTTP_ACCEPT_LANGUAGE', 'HTTP_CACHE_CONTROL', 'HTTP_CONNECTION', 'HTTP_HOST', 'HTTP_KEEP_ALIVE', 'HTTP_REFERER', 'HTTP_USER_AGENT', 'QUERY_STRING', 'REMOTE_ADDR', 'REMOTE_HOST', 'REQUEST_METHOD', 'SCRIPT_NAME', 'SERVER_NAME', 'SERVER_PORT', 'SERVER_PROTOCOL', 'SERVER_SOFTWARE', ) def nav_title(self): return _('HTTP Headers') def title(self): return _('HTTP Headers') def url(self): return '' def process_request(self, request): self.headers = dict( [(k, request.environ[k]) for k in self.header_filter if k in request.environ] ) def content(self): context = self.context.copy() context.update({ 'headers': self.headers }) return self.render('panels/headers.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/versions.py0000664000175000017500000000221714613236757025355 0ustar kalyanikalyaniimport os from sysconfig import get_path from flask_debugtoolbar.panels import DebugPanel try: # Python 3.8+ from importlib.metadata import version flask_version = version('flask') except ImportError: import pkg_resources flask_version = pkg_resources.get_distribution('flask').version _ = lambda x: x class VersionDebugPanel(DebugPanel): """ Panel that displays the Flask version. """ name = 'Version' has_content = True def nav_title(self): return _('Versions') def nav_subtitle(self): return 'Flask %s' % flask_version def url(self): return '' def title(self): return _('Versions') def content(self): try: import importlib.metadata except ImportError: packages = [] else: packages_metadata = [p.metadata for p in importlib.metadata.distributions()] packages = sorted(packages_metadata, key=lambda p: p['Name'].lower()) return self.render('panels/versions.html', { 'packages': packages, 'python_lib_dir': os.path.normpath(get_path('platlib')), }) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/timer.py0000664000175000017500000000630214613236757024624 0ustar kalyanikalyanitry: import resource except ImportError: pass # Will fail on Win32 systems import time from flask_debugtoolbar.panels import DebugPanel _ = lambda x: x class TimerDebugPanel(DebugPanel): """ Panel that displays the time a response took in milliseconds. """ name = 'Timer' try: # if resource module not available, don't show content panel resource except NameError: has_content = False has_resource = False else: has_content = True has_resource = True def process_request(self, request): self._start_time = time.time() if self.has_resource: self._start_rusage = resource.getrusage(resource.RUSAGE_SELF) def process_response(self, request, response): self.total_time = (time.time() - self._start_time) * 1000 if self.has_resource: self._end_rusage = resource.getrusage(resource.RUSAGE_SELF) def nav_title(self): return _('Time') def nav_subtitle(self): # TODO l10n if not self.has_resource: return 'TOTAL: %0.2fms' % (self.total_time) utime = self._end_rusage.ru_utime - self._start_rusage.ru_utime stime = self._end_rusage.ru_stime - self._start_rusage.ru_stime return 'CPU: %0.2fms (%0.2fms)' % ( (utime + stime) * 1000.0, self.total_time) def title(self): return _('Resource Usage') def url(self): return '' def _elapsed_ru(self, name): return (getattr(self._end_rusage, name) - getattr(self._start_rusage, name)) def content(self): utime = 1000 * self._elapsed_ru('ru_utime') stime = 1000 * self._elapsed_ru('ru_stime') vcsw = self._elapsed_ru('ru_nvcsw') ivcsw = self._elapsed_ru('ru_nivcsw') # minflt = self._elapsed_ru('ru_minflt') # majflt = self._elapsed_ru('ru_majflt') # these are documented as not meaningful under Linux. If you're running BSD # feel free to enable them, and add any others that I hadn't gotten to before # I noticed that I was getting nothing but zeroes and that the docs agreed. :-( # # blkin = self._elapsed_ru('ru_inblock') # blkout = self._elapsed_ru('ru_oublock') # swap = self._elapsed_ru('ru_nswap') # rss = self._end_rusage.ru_maxrss # srss = self._end_rusage.ru_ixrss # urss = self._end_rusage.ru_idrss # usrss = self._end_rusage.ru_isrss # TODO l10n on values rows = ( (_('User CPU time'), '%0.3f msec' % utime), (_('System CPU time'), '%0.3f msec' % stime), (_('Total CPU time'), '%0.3f msec' % (utime + stime)), (_('Elapsed time'), '%0.3f msec' % self.total_time), (_('Context switches'), '%d voluntary, %d involuntary' % (vcsw, ivcsw)), # ('Memory use', '%d max RSS, %d shared, %d unshared' % (rss, srss, urss + usrss)), # ('Page faults', '%d no i/o, %d requiring i/o' % (minflt, majflt)), # ('Disk operations', '%d in, %d out, %d swapout' % (blkin, blkout, swap)), ) context = self.context.copy() context.update({ 'rows': rows, }) return self.render('panels/timer.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/config_vars.py0000664000175000017500000000113714613236757026005 0ustar kalyanikalyanifrom flask import current_app from flask_debugtoolbar.panels import DebugPanel _ = lambda x: x class ConfigVarsDebugPanel(DebugPanel): """ A panel to display all variables from Flask configuration """ name = 'ConfigVars' has_content = True def nav_title(self): return _('Config') def title(self): return _('Config') def url(self): return '' def content(self): context = self.context.copy() context.update({ 'config': current_app.config, }) return self.render('panels/config_vars.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/profiler.py0000664000175000017500000000752314613236757025334 0ustar kalyanikalyanitry: import cProfile as profile except ImportError: import profile import functools import pstats from flask import current_app from flask_debugtoolbar.panels import DebugPanel from flask_debugtoolbar.utils import format_fname class ProfilerDebugPanel(DebugPanel): """ Panel that displays the time a response took with cProfile output. """ name = 'Profiler' user_activate = True def __init__(self, jinja_env, context={}): DebugPanel.__init__(self, jinja_env, context=context) if current_app.config.get('DEBUG_TB_PROFILER_ENABLED'): self.is_active = True self.dump_filename = current_app.config.get( "DEBUG_TB_PROFILER_DUMP_FILENAME" ) def has_content(self): return bool(self.profiler) def process_request(self, request): if not self.is_active: return self.profiler = profile.Profile() self.stats = None def process_view(self, request, view_func, view_kwargs): if self.is_active: func = functools.partial(self.profiler.runcall, view_func) functools.update_wrapper(func, view_func) return func def process_response(self, request, response): if not self.is_active: return False if self.profiler is not None: self.profiler.disable() try: stats = pstats.Stats(self.profiler) except TypeError: self.is_active = False return False function_calls = [] for func in stats.sort_stats(1).fcn_list: current = {} info = stats.stats[func] # Number of calls if info[0] != info[1]: current['ncalls'] = '%d/%d' % (info[1], info[0]) else: current['ncalls'] = info[1] # Total time current['tottime'] = info[2] * 1000 # Quotient of total time divided by number of calls if info[1]: current['percall'] = info[2] * 1000 / info[1] else: current['percall'] = 0 # Cumulative time current['cumtime'] = info[3] * 1000 # Quotient of the cumulative time divided by the number of # primitive calls. if info[0]: current['percall_cum'] = info[3] * 1000 / info[0] else: current['percall_cum'] = 0 # Filename filename = pstats.func_std_string(func) current['filename_long'] = filename current['filename'] = format_fname(filename) function_calls.append(current) self.stats = stats self.function_calls = function_calls if self.dump_filename: if callable(self.dump_filename): filename = self.dump_filename() else: filename = self.dump_filename self.profiler.dump_stats(filename) return response def title(self): if not self.is_active: return "Profiler not active" return 'View: %.2fms' % (float(self.stats.total_tt) * 1000,) def nav_title(self): return 'Profiler' def nav_subtitle(self): if not self.is_active: return "in-active" return 'View: %.2fms' % (float(self.stats.total_tt) * 1000,) def url(self): return '' def content(self): if not self.is_active: return "The profiler is not activated, activate it to use it" context = { 'stats': self.stats, 'function_calls': self.function_calls, } return self.render('panels/profiler.html', context) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/template.py0000664000175000017500000000743614613236757025330 0ustar kalyanikalyaniimport collections import json import sys import uuid from flask import ( template_rendered, request, g, Response, current_app, abort, url_for ) from flask_debugtoolbar import module from flask_debugtoolbar.panels import DebugPanel _ = lambda x: x class TemplateDebugPanel(DebugPanel): """ Panel that displays the time a response took in milliseconds. """ name = 'Template' has_content = True # save the context for the 5 most recent requests template_cache = collections.deque(maxlen=5) @classmethod def get_cache_for_key(self, key): for cache_key, value in self.template_cache: if key == cache_key: return value raise KeyError(key) def __init__(self, *args, **kwargs): super(self.__class__, self).__init__(*args, **kwargs) self.key = str(uuid.uuid4()) self.templates = [] template_rendered.connect(self._store_template_info) def _store_template_info(self, sender, **kwargs): # only record in the cache if the editor is enabled and there is # actually a template for this request if not self.templates and is_editor_enabled(): self.template_cache.append((self.key, self.templates)) self.templates.append(kwargs) def process_request(self, request): pass def process_response(self, request, response): pass def nav_title(self): return _('Templates') def nav_subtitle(self): return "%d rendered" % len(self.templates) def title(self): return _('Templates') def url(self): return '' def content(self): return self.render('panels/template.html', { 'key': self.key, 'templates': self.templates, 'editable': is_editor_enabled(), }) def is_editor_enabled(): return current_app.config.get('DEBUG_TB_TEMPLATE_EDITOR_ENABLED') def require_enabled(): if not is_editor_enabled(): abort(403) def _get_source(template): with open(template.filename, 'rb') as fp: source = fp.read() return source.decode(_template_encoding()) def _template_encoding(): return getattr(current_app.jinja_loader, 'encoding', 'utf-8') @module.route('/template/') def template_editor(key): require_enabled() # TODO set up special loader that caches templates it loads # and can override template contents templates = [t['template'] for t in TemplateDebugPanel.get_cache_for_key(key)] return g.debug_toolbar.render('panels/template_editor.html', { 'static_path': url_for('_debug_toolbar.static', filename=''), 'request': request, 'templates': [ {'name': t.name, 'source': _get_source(t)} for t in templates ] }) @module.route('/template//save', methods=['POST']) def save_template(key): require_enabled() template = TemplateDebugPanel.get_cache_for_key(key)[0]['template'] content = request.form['content'].encode(_template_encoding()) with open(template.filename, 'wb') as fp: fp.write(content) return 'ok' @module.route('/template/', methods=['POST']) def template_preview(key): require_enabled() context = TemplateDebugPanel.get_cache_for_key(key)[0]['context'] content = request.form['content'] env = current_app.jinja_env.overlay(autoescape=True) try: template = env.from_string(content) return template.render(context) except Exception as e: tb = sys.exc_info()[2] try: while tb.tb_next: tb = tb.tb_next msg = {'lineno': tb.tb_lineno, 'error': str(e)} return Response(json.dumps(msg), status=400, mimetype='application/json') finally: del tb flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/panels/sqlalchemy.py0000664000175000017500000001107014613236757025644 0ustar kalyanikalyanitry: from flask_sqlalchemy import SQLAlchemy except ImportError: sqlalchemy_available = False get_recorded_queries = SQLAlchemy = None debug_enables_record_queries = False else: try: from flask_sqlalchemy.record_queries import get_recorded_queries debug_enables_record_queries = False except ImportError: # For flask_sqlalchemy < 3.0.0 from flask_sqlalchemy import get_debug_queries as get_recorded_queries # flask_sqlalchemy < 3.0.0 automatically enabled # SQLALCHEMY_RECORD_QUERIES in debug or test mode debug_enables_record_queries = True location_property = 'context' else: location_property = 'location' sqlalchemy_available = True from flask import request, current_app, abort, g from flask_debugtoolbar import module from flask_debugtoolbar.panels import DebugPanel from flask_debugtoolbar.utils import format_fname, format_sql import itsdangerous _ = lambda x: x def query_signer(): return itsdangerous.URLSafeSerializer(current_app.config['SECRET_KEY'], salt='fdt-sql-query') def is_select(statement): prefix = b'select' if isinstance(statement, bytes) else 'select' return statement.lower().strip().startswith(prefix) def dump_query(statement, params): if not params or not is_select(statement): return None try: return query_signer().dumps([statement, params]) except TypeError: return None def load_query(data): try: statement, params = query_signer().loads(request.args['query']) except (itsdangerous.BadSignature, TypeError): abort(406) # Make sure it is a select statement if not is_select(statement): abort(406) return statement, params def extension_used(): return 'sqlalchemy' in current_app.extensions def recording_enabled(): return ( (debug_enables_record_queries and current_app.debug) or current_app.config.get('SQLALCHEMY_RECORD_QUERIES') ) def is_available(): return sqlalchemy_available and extension_used() and recording_enabled() def get_queries(): if get_recorded_queries: return get_recorded_queries() else: return [] class SQLAlchemyDebugPanel(DebugPanel): """ Panel that displays the time a response took in milliseconds. """ name = 'SQLAlchemy' @property def has_content(self): return bool(get_queries()) or not is_available() def process_request(self, request): pass def process_response(self, request, response): pass def nav_title(self): return _('SQLAlchemy') def nav_subtitle(self): count = len(get_queries()) if not count and not is_available(): return 'Unavailable' return '%d %s' % (count, 'query' if count == 1 else 'queries') def title(self): return _('SQLAlchemy queries') def url(self): return '' def content(self): queries = get_queries() if not queries and not is_available(): return self.render('panels/sqlalchemy_error.html', { 'sqlalchemy_available': sqlalchemy_available, 'extension_used': extension_used(), 'recording_enabled': recording_enabled(), }) data = [] for query in queries: data.append({ 'duration': query.duration, 'sql': format_sql(query.statement, query.parameters), 'signed_query': dump_query(query.statement, query.parameters), 'location_long': getattr(query, location_property), 'location': format_fname(getattr(query, location_property)) }) return self.render('panels/sqlalchemy.html', {'queries': data}) # Panel views @module.route('/sqlalchemy/sql_select', methods=['GET', 'POST']) @module.route('/sqlalchemy/sql_explain', methods=['GET', 'POST'], defaults=dict(explain=True)) def sql_select(explain=False): statement, params = load_query(request.args['query']) engine = SQLAlchemy().get_engine(current_app) if explain: if engine.driver == 'pysqlite': statement = 'EXPLAIN QUERY PLAN\n%s' % statement else: statement = 'EXPLAIN\n%s' % statement result = engine.execute(statement, params) return g.debug_toolbar.render('panels/sqlalchemy_select.html', { 'result': result.fetchall(), 'headers': result.keys(), 'sql': format_sql(statement, params), 'duration': float(request.args['duration']), }) flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/toolbar.py0000664000175000017500000000417014613236757023665 0ustar kalyanikalyanitry: from urllib.parse import unquote except ImportError: from urllib import unquote from flask import url_for, current_app from werkzeug.utils import import_string class DebugToolbar(object): _cached_panel_classes = {} def __init__(self, request, jinja_env): self.jinja_env = jinja_env self.request = request self.panels = [] self.template_context = { 'static_path': url_for('_debug_toolbar.static', filename='') } self.create_panels() def create_panels(self): """ Populate debug panels """ activated = self.request.cookies.get('fldt_active', '') activated = unquote(activated).split(';') for panel_class in self._iter_panels(current_app): panel_instance = panel_class(jinja_env=self.jinja_env, context=self.template_context) if panel_instance.dom_id() in activated: panel_instance.is_active = True self.panels.append(panel_instance) def render_toolbar(self): context = self.template_context.copy() context.update({'panels': self.panels}) template = self.jinja_env.get_template('base.html') return template.render(**context) @classmethod def load_panels(cls, app): for panel_class in cls._iter_panels(app): # Call `.init_app()` on panels panel_class.init_app(app) @classmethod def _iter_panels(cls, app): for panel_path in app.config['DEBUG_TB_PANELS']: panel_class = cls._import_panel(app, panel_path) if panel_class is not None: yield panel_class @classmethod def _import_panel(cls, app, path): cache = cls._cached_panel_classes try: return cache[path] except KeyError: pass try: panel_class = import_string(path) except ImportError as e: app.logger.warning('Disabled %s due to ImportError: %s', path, e) panel_class = None cache[path] = panel_class return panel_class flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/0000775000175000017500000000000014613236757023136 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/css/0000775000175000017500000000000014613236757023726 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/css/toolbar.css0000664000175000017500000002056514613236757026112 0ustar kalyanikalyani/* Debug Toolbar CSS Reset, adapted from Eric Meyer's CSS Reset */ #flDebug, #flDebug * { margin:0; padding:0; border:0; outline:0; font-size:12px; line-height:1.5em; color:#000; vertical-align:baseline; background: none; font-family: inherit; text-align:left; } #flDebug { font-family: sans-serif; color: #000; background: #fff; } #flDebug tbody, #flDebug code, #flDebug pre { font-family: Consolas, Monaco, "Bitstream Vera Sans Mono", "Lucida Console", monospace; } #flDebug #flDebugToolbar { background:#111; width:200px; z-index:100000000; position:fixed; top:0; bottom:0; right:0; opacity:0.9; overflow-y: auto; } #flDebug #flDebugToolbar small { color:#999; } #flDebug #flDebugToolbar ul { margin:0; padding:0; list-style:none; } #flDebug #flDebugToolbar li { border-bottom:1px solid #222; color:#fff; display:block; font-weight:bold; float:none; margin:0; padding:0; position:relative; width:auto; } #flDebug #flDebugToolbar li>a, #flDebug #flDebugToolbar li>div.flDebugContentless { font-weight:normal; font-style:normal; text-decoration:none; display:block; font-size:16px; padding:10px 10px 5px 25px; color:#fff; } #flDebug #flDebugToolbar li a:hover { color:#111; background-color:#ffc; } #flDebug #flDebugToolbar li.flDebugActive { background-image:url(../img/indicator.png); background-repeat:no-repeat; background-position:left center; background-color:#333; padding-left:10px; } #flDebug #flDebugToolbar li.flDebugActive a:hover { color:#b36a60; background-color:transparent; } #flDebug #flDebugToolbar li small { font-size:12px; color:#999; font-style:normal; text-decoration:none; font-variant:small-caps; } #flDebug #flDebugToolbar li .flDebugSwitch { font-size: 10px; position: absolute; display: block; color: white; height: 16px; width: 16px; cursor: pointer; top: 15px; right: 2px; } #flDebug #flDebugToolbar li .flDebugSwitch.flDebugActive { background-image: url(../img/tick.png); } #flDebug #flDebugToolbar li .flDebugSwitch.flDebugInactive { background-image: url(../img/tick-red.png); } #flDebug #flDebugToolbarHandle { position:fixed; background:#fff; border:1px solid #111; top:30px; right:0; z-index:100000000; opacity:0.75; } #flDebug a#flDebugShowToolBarButton { display:block; height:75px; width:30px; border-right:none; border-bottom:4px solid #fff; border-top:4px solid #fff; border-left:4px solid #fff; color:#fff; font-size:10px; font-weight:bold; text-decoration:none; text-align:center; text-indent:-999999px; background:#000 url(../img/djdt_vertical.png) no-repeat left center; opacity:0.5; } #flDebug a#flDebugShowToolBarButton:hover { background-color:#111; padding-right:6px; border-top-color:#FFE761; border-left-color:#FFE761; border-bottom-color:#FFE761; opacity:1.0; } #flDebug code { display:inline; white-space:pre; overflow:auto; } #flDebug tr.flDebugOdd { background-color:#f5f5f5; } #flDebug .flDebugPanelContentParent { display:none; position:fixed; margin:0; top:0; right:200px; bottom:0; left:0px; background-color:#eee; color:#666; overflow: auto; z-index:100000000; } #flDebug .flDebugPanelContentParent > div { border-bottom:1px solid #ddd; } #flDebug .flDebugPanelTitle { position:absolute; background-color:#ffc; color:#666; padding-left:20px; top:0; right:0; left:0; height:50px; } #flDebug .flDebugPanelTitle code { display:inline; font-size:inherit; } #flDebug .flDebugPanelContent { position:absolute; top:50px; right:0; bottom:0; left:0; height:auto; padding:0 0 0 20px; } #flDebug .flDebugPanelContent .flDebugScroll { height:100%; overflow:auto; display:block; padding:0 10px 10px 0; } #flDebug h3 { font-size:24px; font-weight:normal; line-height:50px; } #flDebug h4 { font-size:20px; font-weight:bold; margin-top:0.8em; } #flDebug h5 { font-size: 14px; } #flDebug .flDebugPanelContentParent table { border:1px solid #ccc; border-collapse:collapse; width:100%; background-color:#fff; display:block; margin-top:0.8em; overflow: auto; } #flDebug .flDebugPanelContentParent tbody td, #flDebug .flDebugPanelContentParent tbody th { vertical-align:top; padding:2px 3px; } #flDebug .flDebugPanelContentParent thead th { padding:1px 6px 1px 3px; text-align:left; font-weight:bold; font-size:14px; } #flDebug .flDebugPanelContentParent tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; } #flDebug .flDebugPanelContentParent ol li { margin: 0 0 1em 2em; } #flDebug .flDebugPanelContentParent pre { border:1px solid #ccc; background-color:#fff; display:block; margin:0.8em 0; padding: 0.2em 0.5em; } #flDebug .flTemplateHideContextDiv { background-color:#fff; } #flDebug .flDebugPanelContentParent .flDebugClose { text-indent:-9999999px; display:block; position:absolute; top:4px; right:15px; height:40px; width:40px; background:url(../img/close.png) no-repeat center center; } #flDebug .flDebugPanelContentParent .flDebugClose:hover { background-image:url(../img/close_hover.png); } #flDebug .flDebugPanelContentParent .flDebugClose.flDebugBack { background-image:url(../img/back.png); } #flDebug .flDebugPanelContentParent .flDebugClose.flDebugBack:hover { background-image:url(../img/back_hover.png); } #flDebug .flDebugPanelContentParent dt, #flDebug .flDebugPanelContentParent dd { display:block; } #flDebug .flDebugPanelContentParent dt { margin-top:0.75em; } #flDebug .flDebugPanelContentParent dd { margin-left:10px; } #flDebug a.flDebugToggleTemplate { padding:4px; background-color:#bbb; -moz-border-radius:3px; -webkit-border-radius:3px; } #flDebug a.flDebugToggleTemplate:hover { padding:4px; background-color:#444; color:#ffe761; -moz-border-radius:3px; -webkit-border-radius:3px; } #flDebug a.flDebugTemplateShowContext, #flDebug a.flDebugTemplateShowContext span.flDebugToggleArrow { color:#999; } #flDebug a.flDebugTemplateShowContext:hover, #flDebug a.flDebugTemplateShowContext:hover span.flDebugToggleArrow { color:#000; cursor:pointer; } #flDebug .flDebugSqlWrap { position:relative; } #flDebug .flDebugSql { z-index:100000002; } #flDebug .flDebugHideStacktraceDiv tbody th { text-align: left; } #flDebug span.flDebugLineChart { background-color:#777; height:3px; position:absolute; bottom:0; top:0; left:0; display:block; z-index:1000000001; } #flDebug span.flDebugLineChartWarning { background-color:#900; } #flDebug .highlight { color:#000; } #flDebug .highlight .err { color:#000; } /* Error */ #flDebug .highlight .g { color:#000; } /* Generic */ #flDebug .highlight .k { color:#000; font-weight:bold } /* Keyword */ #flDebug .highlight .o { color:#000; } /* Operator */ #flDebug .highlight .n { color:#000; } /* Name */ #flDebug .highlight .mi { color:#000; font-weight:bold } /* Literal.Number.Integer */ #flDebug .highlight .l { color:#000; } /* Literal */ #flDebug .highlight .x { color:#000; } /* Other */ #flDebug .highlight .p { color:#000; } /* Punctuation */ #flDebug .highlight .m { color:#000; font-weight:bold } /* Literal.Number */ #flDebug .highlight .s { color:#333 } /* Literal.String */ #flDebug .highlight .w { color:#888888 } /* Text.Whitespace */ #flDebug .highlight .il { color:#000; font-weight:bold } /* Literal.Number.Integer.Long */ #flDebug .highlight .na { color:#333 } /* Name.Attribute */ #flDebug .highlight .nt { color:#000; font-weight:bold } /* Name.Tag */ #flDebug .highlight .nv { color:#333 } /* Name.Variable */ #flDebug .highlight .s2 { color:#333 } /* Literal.String.Double */ #flDebug .highlight .cp { color:#333 } /* Comment.Preproc */ /* tablesorted */ #flDebug table.flDebugTablesorter { width: 100%; } #flDebug table.flDebugTablesorter thead th, table.flDebugTablesorter tfoot th { padding-right: 20px; } #flDebug table.flDebugTablesorter thead th { background: url(../img/bg.gif) center right no-repeat; cursor: pointer; } #flDebug table.flDebugTablesorter tbody tr.odd td { background-color: #F0F0F6; } #flDebug table.flDebugTablesorter thead .headerSortUp { background-image: url(../img/asc.gif); } #flDebug table.flDebugTablesorter thead .headerSortDown { background-image: url(../img/desc.gif); } #flDebug table.flDebugTablesorter thead .headerSortDown, #flDebug table.flDebugTablesorter thead .headerSortUp { background-color: #8dbdd8; } flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/js/0000775000175000017500000000000014613236757023552 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/js/jquery-migrate.js0000664000175000017500000007635214613236757027072 0ustar kalyanikalyani/*! * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z * Copyright OpenJS Foundation and other contributors */ ( function( factory ) { "use strict"; if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define( [ "jquery" ], function( jQuery ) { return factory( jQuery, window ); } ); } else if ( typeof module === "object" && module.exports ) { // Node/CommonJS // eslint-disable-next-line no-undef module.exports = factory( require( "jquery" ), window ); } else { // Browser globals factory( jQuery, window ); } } )( function( jQuery, window ) { "use strict"; jQuery.migrateVersion = "3.4.1"; // Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2 function compareVersions( v1, v2 ) { var i, rVersionParts = /^(\d+)\.(\d+)\.(\d+)/, v1p = rVersionParts.exec( v1 ) || [ ], v2p = rVersionParts.exec( v2 ) || [ ]; for ( i = 1; i <= 3; i++ ) { if ( +v1p[ i ] > +v2p[ i ] ) { return 1; } if ( +v1p[ i ] < +v2p[ i ] ) { return -1; } } return 0; } function jQueryVersionSince( version ) { return compareVersions( jQuery.fn.jquery, version ) >= 0; } // A map from disabled patch codes to `true`. This should really // be a `Set` but those are unsupported in IE. var disabledPatches = Object.create( null ); // Don't apply patches for specified codes. Helpful for code bases // where some Migrate warnings have been addressed and it's desirable // to avoid needless patches or false positives. jQuery.migrateDisablePatches = function() { var i; for ( i = 0; i < arguments.length; i++ ) { disabledPatches[ arguments[ i ] ] = true; } }; // Allow enabling patches disabled via `jQuery.migrateDisablePatches`. // Helpful if you want to disable a patch only for some code that won't // be updated soon to be able to focus on other warnings - and enable it // immediately after such a call: // ```js // jQuery.migrateDisablePatches( "workaroundA" ); // elem.pluginViolatingWarningA( "pluginMethod" ); // jQuery.migrateEnablePatches( "workaroundA" ); // ``` jQuery.migrateEnablePatches = function() { var i; for ( i = 0; i < arguments.length; i++ ) { delete disabledPatches[ arguments[ i ] ]; } }; jQuery.migrateIsPatchEnabled = function( patchCode ) { return !disabledPatches[ patchCode ]; }; ( function() { // Support: IE9 only // IE9 only creates console object when dev tools are first opened // IE9 console is a host object, callable but doesn't have .apply() if ( !window.console || !window.console.log ) { return; } // Need jQuery 3.x-4.x and no older Migrate loaded if ( !jQuery || !jQueryVersionSince( "3.0.0" ) || jQueryVersionSince( "5.0.0" ) ) { window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" ); } if ( jQuery.migrateWarnings ) { window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" ); } // Show a message on the console so devs know we're active window.console.log( "JQMIGRATE: Migrate is installed" + ( jQuery.migrateMute ? "" : " with logging active" ) + ", version " + jQuery.migrateVersion ); } )(); var warnedAbout = {}; // By default each warning is only reported once. jQuery.migrateDeduplicateWarnings = true; // List of warnings already given; public read only jQuery.migrateWarnings = []; // Set to false to disable traces that appear with warnings if ( jQuery.migrateTrace === undefined ) { jQuery.migrateTrace = true; } // Forget any warnings we've already given; public jQuery.migrateReset = function() { warnedAbout = {}; jQuery.migrateWarnings.length = 0; }; function migrateWarn( code, msg ) { var console = window.console; if ( jQuery.migrateIsPatchEnabled( code ) && ( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) ) { warnedAbout[ msg ] = true; jQuery.migrateWarnings.push( msg + " [" + code + "]" ); if ( console && console.warn && !jQuery.migrateMute ) { console.warn( "JQMIGRATE: " + msg ); if ( jQuery.migrateTrace && console.trace ) { console.trace(); } } } } function migrateWarnProp( obj, prop, value, code, msg ) { Object.defineProperty( obj, prop, { configurable: true, enumerable: true, get: function() { migrateWarn( code, msg ); return value; }, set: function( newValue ) { migrateWarn( code, msg ); value = newValue; } } ); } function migrateWarnFuncInternal( obj, prop, newFunc, code, msg ) { var finalFunc, origFunc = obj[ prop ]; obj[ prop ] = function() { // If `msg` not provided, do not warn; more sophisticated warnings // logic is most likely embedded in `newFunc`, in that case here // we just care about the logic choosing the proper implementation // based on whether the patch is disabled or not. if ( msg ) { migrateWarn( code, msg ); } // Since patches can be disabled & enabled dynamically, we // need to decide which implementation to run on each invocation. finalFunc = jQuery.migrateIsPatchEnabled( code ) ? newFunc : // The function may not have existed originally so we need a fallback. ( origFunc || jQuery.noop ); return finalFunc.apply( this, arguments ); }; } function migratePatchAndWarnFunc( obj, prop, newFunc, code, msg ) { if ( !msg ) { throw new Error( "No warning message provided" ); } return migrateWarnFuncInternal( obj, prop, newFunc, code, msg ); } function migratePatchFunc( obj, prop, newFunc, code ) { return migrateWarnFuncInternal( obj, prop, newFunc, code ); } if ( window.document.compatMode === "BackCompat" ) { // jQuery has never supported or tested Quirks Mode migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" ); } var findProp, class2type = {}, oldInit = jQuery.fn.init, oldFind = jQuery.find, rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/, rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g, // Require that the "whitespace run" starts from a non-whitespace // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position. rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; migratePatchFunc( jQuery.fn, "init", function( arg1 ) { var args = Array.prototype.slice.call( arguments ); if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) && typeof arg1 === "string" && arg1 === "#" ) { // JQuery( "#" ) is a bogus ID selector, but it returned an empty set // before jQuery 3.0 migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" ); args[ 0 ] = []; } return oldInit.apply( this, args ); }, "selector-empty-id" ); // This is already done in Core but the above patch will lose this assignment // so we need to redo it. It doesn't matter whether the patch is enabled or not // as the method is always going to be a Migrate-created wrapper. jQuery.fn.init.prototype = jQuery.fn; migratePatchFunc( jQuery, "find", function( selector ) { var args = Array.prototype.slice.call( arguments ); // Support: PhantomJS 1.x // String#match fails to match when used with a //g RegExp, only on some strings if ( typeof selector === "string" && rattrHashTest.test( selector ) ) { // The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0 // First see if qS thinks it's a valid selector, if so avoid a false positive try { window.document.querySelector( selector ); } catch ( err1 ) { // Didn't *look* valid to qSA, warn and try quoting what we think is the value selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) { return "[" + attr + op + "\"" + value + "\"]"; } ); // If the regexp *may* have created an invalid selector, don't update it // Note that there may be false alarms if selector uses jQuery extensions try { window.document.querySelector( selector ); migrateWarn( "selector-hash", "Attribute selector with '#' must be quoted: " + args[ 0 ] ); args[ 0 ] = selector; } catch ( err2 ) { migrateWarn( "selector-hash", "Attribute selector with '#' was not fixed: " + args[ 0 ] ); } } } return oldFind.apply( this, args ); }, "selector-hash" ); // Copy properties attached to original jQuery.find method (e.g. .attr, .isXML) for ( findProp in oldFind ) { if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) { jQuery.find[ findProp ] = oldFind[ findProp ]; } } // The number of elements contained in the matched element set migratePatchAndWarnFunc( jQuery.fn, "size", function() { return this.length; }, "size", "jQuery.fn.size() is deprecated and removed; use the .length property" ); migratePatchAndWarnFunc( jQuery, "parseJSON", function() { return JSON.parse.apply( null, arguments ); }, "parseJSON", "jQuery.parseJSON is deprecated; use JSON.parse" ); migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady, "holdReady", "jQuery.holdReady is deprecated" ); migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort, "unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" ); // Now jQuery.expr.pseudos is the standard incantation migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos", "jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" ); migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos", "jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" ); // Prior to jQuery 3.1.1 there were internal refs so we don't warn there if ( jQueryVersionSince( "3.1.1" ) ) { migratePatchAndWarnFunc( jQuery, "trim", function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "$1" ); }, "trim", "jQuery.trim is deprecated; use String.prototype.trim" ); } // Prior to jQuery 3.2 there were internal refs so we don't warn there if ( jQueryVersionSince( "3.2.0" ) ) { migratePatchAndWarnFunc( jQuery, "nodeName", function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, "nodeName", "jQuery.nodeName is deprecated" ); migratePatchAndWarnFunc( jQuery, "isArray", Array.isArray, "isArray", "jQuery.isArray is deprecated; use Array.isArray" ); } if ( jQueryVersionSince( "3.3.0" ) ) { migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) { // As of jQuery 3.0, isNumeric is limited to // strings and numbers (primitives or objects) // that can be coerced to finite numbers (gh-2662) var type = typeof obj; return ( type === "number" || type === "string" ) && // parseFloat NaNs numeric-cast false positives ("") // ...but misinterprets leading-number strings, e.g. hex literals ("0x...") // subtraction forces infinities to NaN !isNaN( obj - parseFloat( obj ) ); }, "isNumeric", "jQuery.isNumeric() is deprecated" ); // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol". split( " " ), function( _, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); migratePatchAndWarnFunc( jQuery, "type", function( obj ) { if ( obj == null ) { return obj + ""; } // Support: Android <=2.3 only (functionish RegExp) return typeof obj === "object" || typeof obj === "function" ? class2type[ Object.prototype.toString.call( obj ) ] || "object" : typeof obj; }, "type", "jQuery.type is deprecated" ); migratePatchAndWarnFunc( jQuery, "isFunction", function( obj ) { return typeof obj === "function"; }, "isFunction", "jQuery.isFunction() is deprecated" ); migratePatchAndWarnFunc( jQuery, "isWindow", function( obj ) { return obj != null && obj === obj.window; }, "isWindow", "jQuery.isWindow() is deprecated" ); } // Support jQuery slim which excludes the ajax module if ( jQuery.ajax ) { var oldAjax = jQuery.ajax, rjsonp = /(=)\?(?=&|$)|\?\?/; migratePatchFunc( jQuery, "ajax", function() { var jQXHR = oldAjax.apply( this, arguments ); // Be sure we got a jQXHR (e.g., not sync) if ( jQXHR.promise ) { migratePatchAndWarnFunc( jQXHR, "success", jQXHR.done, "jqXHR-methods", "jQXHR.success is deprecated and removed" ); migratePatchAndWarnFunc( jQXHR, "error", jQXHR.fail, "jqXHR-methods", "jQXHR.error is deprecated and removed" ); migratePatchAndWarnFunc( jQXHR, "complete", jQXHR.always, "jqXHR-methods", "jQXHR.complete is deprecated and removed" ); } return jQXHR; }, "jqXHR-methods" ); // Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion // behavior is gone in jQuery 4.0 and as it has security implications, we don't // want to restore the legacy behavior. if ( !jQueryVersionSince( "4.0.0" ) ) { // Register this prefilter before the jQuery one. Otherwise, a promoted // request is transformed into one with the script dataType and we can't // catch it anymore. jQuery.ajaxPrefilter( "+json", function( s ) { // Warn if JSON-to-JSONP auto-promotion happens. if ( s.jsonp !== false && ( rjsonp.test( s.url ) || typeof s.data === "string" && ( s.contentType || "" ) .indexOf( "application/x-www-form-urlencoded" ) === 0 && rjsonp.test( s.data ) ) ) { migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" ); } } ); } } var oldRemoveAttr = jQuery.fn.removeAttr, oldToggleClass = jQuery.fn.toggleClass, rmatchNonSpace = /\S+/g; migratePatchFunc( jQuery.fn, "removeAttr", function( name ) { var self = this, patchNeeded = false; jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) { if ( jQuery.expr.match.bool.test( attr ) ) { // Only warn if at least a single node had the property set to // something else than `false`. Otherwise, this Migrate patch // doesn't influence the behavior and there's no need to set or warn. self.each( function() { if ( jQuery( this ).prop( attr ) !== false ) { patchNeeded = true; return false; } } ); } if ( patchNeeded ) { migrateWarn( "removeAttr-bool", "jQuery.fn.removeAttr no longer sets boolean properties: " + attr ); self.prop( attr, false ); } } ); return oldRemoveAttr.apply( this, arguments ); }, "removeAttr-bool" ); migratePatchFunc( jQuery.fn, "toggleClass", function( state ) { // Only deprecating no-args or single boolean arg if ( state !== undefined && typeof state !== "boolean" ) { return oldToggleClass.apply( this, arguments ); } migrateWarn( "toggleClass-bool", "jQuery.fn.toggleClass( boolean ) is deprecated" ); // Toggle entire class name of each element return this.each( function() { var className = this.getAttribute && this.getAttribute( "class" ) || ""; if ( className ) { jQuery.data( this, "__className__", className ); } // If the element has a class name or if we're passed `false`, // then remove the whole classname (if there was one, the above saved it). // Otherwise bring back whatever was previously saved (if anything), // falling back to the empty string if nothing was stored. if ( this.setAttribute ) { this.setAttribute( "class", className || state === false ? "" : jQuery.data( this, "__className__" ) || "" ); } } ); }, "toggleClass-bool" ); function camelCase( string ) { return string.replace( /-([a-z])/g, function( _, letter ) { return letter.toUpperCase(); } ); } var origFnCss, internalCssNumber, internalSwapCall = false, ralphaStart = /^[a-z]/, // The regex visualized: // // /----------\ // | | /-------\ // | / Top \ | | | // /--- Border ---+-| Right |-+---+- Width -+---\ // | | Bottom | | // | \ Left / | // | | // | /----------\ | // | /-------------\ | | |- END // | | | | / Top \ | | // | | / Margin \ | | | Right | | | // |---------+-| |-+---+-| Bottom |-+----| // | \ Padding / \ Left / | // BEGIN -| | // | /---------\ | // | | | | // | | / Min \ | / Width \ | // \--------------+-| |-+---| |---/ // \ Max / \ Height / rautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/; // If this version of jQuery has .swap(), don't false-alarm on internal uses if ( jQuery.swap ) { jQuery.each( [ "height", "width", "reliableMarginRight" ], function( _, name ) { var oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get; if ( oldHook ) { jQuery.cssHooks[ name ].get = function() { var ret; internalSwapCall = true; ret = oldHook.apply( this, arguments ); internalSwapCall = false; return ret; }; } } ); } migratePatchFunc( jQuery, "swap", function( elem, options, callback, args ) { var ret, name, old = {}; if ( !internalSwapCall ) { migrateWarn( "swap", "jQuery.swap() is undocumented and deprecated" ); } // Remember the old values, and insert the new ones for ( name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } ret = callback.apply( elem, args || [] ); // Revert the old values for ( name in options ) { elem.style[ name ] = old[ name ]; } return ret; }, "swap" ); if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) { jQuery.cssProps = new Proxy( jQuery.cssProps || {}, { set: function() { migrateWarn( "cssProps", "jQuery.cssProps is deprecated" ); return Reflect.set.apply( this, arguments ); } } ); } // In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version: // https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233 // This way, number values for the CSS properties below won't start triggering // Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438). if ( jQueryVersionSince( "4.0.0" ) ) { // We need to keep this as a local variable as we need it internally // in a `jQuery.fn.css` patch and this usage shouldn't warn. internalCssNumber = { animationIterationCount: true, columnCount: true, fillOpacity: true, flexGrow: true, flexShrink: true, fontWeight: true, gridArea: true, gridColumn: true, gridColumnEnd: true, gridColumnStart: true, gridRow: true, gridRowEnd: true, gridRowStart: true, lineHeight: true, opacity: true, order: true, orphans: true, widows: true, zIndex: true, zoom: true }; if ( typeof Proxy !== "undefined" ) { jQuery.cssNumber = new Proxy( internalCssNumber, { get: function() { migrateWarn( "css-number", "jQuery.cssNumber is deprecated" ); return Reflect.get.apply( this, arguments ); }, set: function() { migrateWarn( "css-number", "jQuery.cssNumber is deprecated" ); return Reflect.set.apply( this, arguments ); } } ); } else { // Support: IE 9-11+ // IE doesn't support proxies, but we still want to restore the legacy // jQuery.cssNumber there. jQuery.cssNumber = internalCssNumber; } } else { // Make `internalCssNumber` defined for jQuery <4 as well as it's needed // in the `jQuery.fn.css` patch below. internalCssNumber = jQuery.cssNumber; } function isAutoPx( prop ) { // The first test is used to ensure that: // 1. The prop starts with a lowercase letter (as we uppercase it for the second regex). // 2. The prop is not empty. return ralphaStart.test( prop ) && rautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) ); } origFnCss = jQuery.fn.css; migratePatchFunc( jQuery.fn, "css", function( name, value ) { var camelName, origThis = this; if ( name && typeof name === "object" && !Array.isArray( name ) ) { jQuery.each( name, function( n, v ) { jQuery.fn.css.call( origThis, n, v ); } ); return this; } if ( typeof value === "number" ) { camelName = camelCase( name ); // Use `internalCssNumber` to avoid triggering our warnings in this // internal check. if ( !isAutoPx( camelName ) && !internalCssNumber[ camelName ] ) { migrateWarn( "css-number", "Number-typed values are deprecated for jQuery.fn.css( \"" + name + "\", value )" ); } } return origFnCss.apply( this, arguments ); }, "css-number" ); var origData = jQuery.data; migratePatchFunc( jQuery, "data", function( elem, name, value ) { var curData, sameKeys, key; // Name can be an object, and each entry in the object is meant to be set as data if ( name && typeof name === "object" && arguments.length === 2 ) { curData = jQuery.hasData( elem ) && origData.call( this, elem ); sameKeys = {}; for ( key in name ) { if ( key !== camelCase( key ) ) { migrateWarn( "data-camelCase", "jQuery.data() always sets/gets camelCased names: " + key ); curData[ key ] = name[ key ]; } else { sameKeys[ key ] = name[ key ]; } } origData.call( this, elem, sameKeys ); return name; } // If the name is transformed, look for the un-transformed name in the data object if ( name && typeof name === "string" && name !== camelCase( name ) ) { curData = jQuery.hasData( elem ) && origData.call( this, elem ); if ( curData && name in curData ) { migrateWarn( "data-camelCase", "jQuery.data() always sets/gets camelCased names: " + name ); if ( arguments.length > 2 ) { curData[ name ] = value; } return curData[ name ]; } } return origData.apply( this, arguments ); }, "data-camelCase" ); // Support jQuery slim which excludes the effects module if ( jQuery.fx ) { var intervalValue, intervalMsg, oldTweenRun = jQuery.Tween.prototype.run, linearEasing = function( pct ) { return pct; }; migratePatchFunc( jQuery.Tween.prototype, "run", function( ) { if ( jQuery.easing[ this.easing ].length > 1 ) { migrateWarn( "easing-one-arg", "'jQuery.easing." + this.easing.toString() + "' should use only one argument" ); jQuery.easing[ this.easing ] = linearEasing; } oldTweenRun.apply( this, arguments ); }, "easing-one-arg" ); intervalValue = jQuery.fx.interval; intervalMsg = "jQuery.fx.interval is deprecated"; // Support: IE9, Android <=4.4 // Avoid false positives on browsers that lack rAF // Don't warn if document is hidden, jQuery uses setTimeout (#292) if ( window.requestAnimationFrame ) { Object.defineProperty( jQuery.fx, "interval", { configurable: true, enumerable: true, get: function() { if ( !window.document.hidden ) { migrateWarn( "fx-interval", intervalMsg ); } // Only fallback to the default if patch is enabled if ( !jQuery.migrateIsPatchEnabled( "fx-interval" ) ) { return intervalValue; } return intervalValue === undefined ? 13 : intervalValue; }, set: function( newValue ) { migrateWarn( "fx-interval", intervalMsg ); intervalValue = newValue; } } ); } } var oldLoad = jQuery.fn.load, oldEventAdd = jQuery.event.add, originalFix = jQuery.event.fix; jQuery.event.props = []; jQuery.event.fixHooks = {}; migrateWarnProp( jQuery.event.props, "concat", jQuery.event.props.concat, "event-old-patch", "jQuery.event.props.concat() is deprecated and removed" ); migratePatchFunc( jQuery.event, "fix", function( originalEvent ) { var event, type = originalEvent.type, fixHook = this.fixHooks[ type ], props = jQuery.event.props; if ( props.length ) { migrateWarn( "event-old-patch", "jQuery.event.props are deprecated and removed: " + props.join() ); while ( props.length ) { jQuery.event.addProp( props.pop() ); } } if ( fixHook && !fixHook._migrated_ ) { fixHook._migrated_ = true; migrateWarn( "event-old-patch", "jQuery.event.fixHooks are deprecated and removed: " + type ); if ( ( props = fixHook.props ) && props.length ) { while ( props.length ) { jQuery.event.addProp( props.pop() ); } } } event = originalFix.call( this, originalEvent ); return fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }, "event-old-patch" ); migratePatchFunc( jQuery.event, "add", function( elem, types ) { // This misses the multiple-types case but that seems awfully rare if ( elem === window && types === "load" && window.document.readyState === "complete" ) { migrateWarn( "load-after-event", "jQuery(window).on('load'...) called after load event occurred" ); } return oldEventAdd.apply( this, arguments ); }, "load-after-event" ); jQuery.each( [ "load", "unload", "error" ], function( _, name ) { migratePatchFunc( jQuery.fn, name, function() { var args = Array.prototype.slice.call( arguments, 0 ); // If this is an ajax load() the first arg should be the string URL; // technically this could also be the "Anything" arg of the event .load() // which just goes to show why this dumb signature has been deprecated! // jQuery custom builds that exclude the Ajax module justifiably die here. if ( name === "load" && typeof args[ 0 ] === "string" ) { return oldLoad.apply( this, args ); } migrateWarn( "shorthand-removed-v3", "jQuery.fn." + name + "() is deprecated" ); args.splice( 0, 0, name ); if ( arguments.length ) { return this.on.apply( this, args ); } // Use .triggerHandler here because: // - load and unload events don't need to bubble, only applied to window or image // - error event should not bubble to window, although it does pre-1.7 // See http://bugs.jquery.com/ticket/11820 this.triggerHandler.apply( this, args ); return this; }, "shorthand-removed-v3" ); } ); jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu" ).split( " " ), function( _i, name ) { // Handle event binding migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) { return arguments.length > 0 ? this.on( name, null, data, fn ) : this.trigger( name ); }, "shorthand-deprecated-v3", "jQuery.fn." + name + "() event shorthand is deprecated" ); } ); // Trigger "ready" event only once, on document ready jQuery( function() { jQuery( window.document ).triggerHandler( "ready" ); } ); jQuery.event.special.ready = { setup: function() { if ( this === window.document ) { migrateWarn( "ready-event", "'ready' event is deprecated" ); } } }; migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) { return this.on( types, null, data, fn ); }, "pre-on-methods", "jQuery.fn.bind() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "unbind", function( types, fn ) { return this.off( types, null, fn ); }, "pre-on-methods", "jQuery.fn.unbind() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "delegate", function( selector, types, data, fn ) { return this.on( types, selector, data, fn ); }, "pre-on-methods", "jQuery.fn.delegate() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "undelegate", function( selector, types, fn ) { return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); }, "pre-on-methods", "jQuery.fn.undelegate() is deprecated" ); migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) { return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver ); }, "pre-on-methods", "jQuery.fn.hover() is deprecated" ); var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, makeMarkup = function( html ) { var doc = window.document.implementation.createHTMLDocument( "" ); doc.body.innerHTML = html; return doc.body && doc.body.innerHTML; }, warnIfChanged = function( html ) { var changed = html.replace( rxhtmlTag, "<$1>" ); if ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) { migrateWarn( "self-closed-tags", "HTML tags must be properly nested and closed: " + html ); } }; /** * Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead. * @deprecated */ jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() { jQuery.migrateEnablePatches( "self-closed-tags" ); }; migratePatchFunc( jQuery, "htmlPrefilter", function( html ) { warnIfChanged( html ); return html.replace( rxhtmlTag, "<$1>" ); }, "self-closed-tags" ); // This patch needs to be disabled by default as it re-introduces // security issues (CVE-2020-11022, CVE-2020-11023). jQuery.migrateDisablePatches( "self-closed-tags" ); var origOffset = jQuery.fn.offset; migratePatchFunc( jQuery.fn, "offset", function() { var elem = this[ 0 ]; if ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) { migrateWarn( "offset-valid-elem", "jQuery.fn.offset() requires a valid DOM element" ); return arguments.length ? this : undefined; } return origOffset.apply( this, arguments ); }, "offset-valid-elem" ); // Support jQuery slim which excludes the ajax module // The jQuery.param patch is about respecting `jQuery.ajaxSettings.traditional` // so it doesn't make sense for the slim build. if ( jQuery.ajax ) { var origParam = jQuery.param; migratePatchFunc( jQuery, "param", function( data, traditional ) { var ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; if ( traditional === undefined && ajaxTraditional ) { migrateWarn( "param-ajax-traditional", "jQuery.param() no longer uses jQuery.ajaxSettings.traditional" ); traditional = ajaxTraditional; } return origParam.call( this, data, traditional ); }, "param-ajax-traditional" ); } migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf", "jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()" ); // Support jQuery slim which excludes the deferred module in jQuery 4.0+ if ( jQuery.Deferred ) { var oldDeferred = jQuery.Deferred, tuples = [ // Action, add listener, callbacks, .then handlers, final state [ "resolve", "done", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), jQuery.Callbacks( "once memory" ), "rejected" ], [ "notify", "progress", jQuery.Callbacks( "memory" ), jQuery.Callbacks( "memory" ) ] ]; migratePatchFunc( jQuery, "Deferred", function( func ) { var deferred = oldDeferred(), promise = deferred.promise(); function newDeferredPipe( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var fn = typeof fns[ i ] === "function" && fns[ i ]; // Deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.fail(function() { bind to newDefer or newDefer.reject }) // deferred.progress(function() { bind to newDefer or newDefer.notify }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && typeof returned.promise === "function" ) { returned.promise() .done( newDefer.resolve ) .fail( newDefer.reject ) .progress( newDefer.notify ); } else { newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); } migratePatchAndWarnFunc( deferred, "pipe", newDeferredPipe, "deferred-pipe", "deferred.pipe() is deprecated" ); migratePatchAndWarnFunc( promise, "pipe", newDeferredPipe, "deferred-pipe", "deferred.pipe() is deprecated" ); if ( func ) { func.call( deferred, deferred ); } return deferred; }, "deferred-pipe" ); // Preserve handler of uncaught exceptions in promise chains jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook; } return jQuery; } ); flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/js/toolbar.js0000664000175000017500000001623614613236757025562 0ustar kalyanikalyani(function($) { $.cookie = function(name, value, options) { if (typeof value != 'undefined') { options = options || {}; if (value === null) { value = ''; options.expires = -1; } var expires = ''; if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { var date; if (typeof options.expires == 'number') { date = new Date(); date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); } else { date = options.expires; } expires = '; expires=' + date.toUTCString(); } var path = options.path ? '; path=' + (options.path) : ''; var domain = options.domain ? '; domain=' + (options.domain) : ''; var secure = options.secure ? '; secure' : ''; document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); } else { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = $.trim(cookies[i]); if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } }; $('head').append(''); var COOKIE_NAME = 'fldt'; var COOKIE_NAME_ACTIVE = COOKIE_NAME +'_active'; var fldt = { init: function() { $('#flDebug').show(); var current = null; $('#flDebugPanelList li a').on('click', function() { if (!this.className) { return false; } current = $('#flDebug #' + this.className + '-content'); if (current.is(':visible')) { $(document).trigger('close.flDebug'); $(this).parent().removeClass('flDebugActive'); } else { $('.flDebugPanelContentParent').hide(); // Hide any that are already open current.show(); $('#flDebugToolbar li').removeClass('flDebugActive'); $(this).parent().addClass('flDebugActive'); } return false; }); $('#flDebugPanelList li .flDebugSwitch').on('click', function() { var $panel = $(this).parent(); var $this = $(this); var dom_id = $panel.attr('id'); // Turn cookie content into an array of active panels var active_str = $.cookie(COOKIE_NAME_ACTIVE); var active = (active_str) ? active_str.split(';') : []; active = $.grep(active, function(n,i) { return n != dom_id; }); if ($this.hasClass('flDebugActive')) { $this.removeClass('flDebugActive'); $this.addClass('flDebugInactive'); } else { active.push(dom_id); $this.removeClass('flDebugInactive'); $this.addClass('flDebugActive'); } if (active.length > 0) { $.cookie(COOKIE_NAME_ACTIVE, active.join(';'), { path: '/', expires: 10 }); } else { $.cookie(COOKIE_NAME_ACTIVE, null, { path: '/', expires: -1 }); } }); $('#flDebug a.flDebugClose').on('click', function() { $(document).trigger('close.flDebug'); $('#flDebugToolbar li').removeClass('flDebugActive'); return false; }); $('#flDebug a.flDebugRemoteCall').on('click', function() { $('#flDebugWindow').load(this.href, {}, function() { $('#flDebugWindow a.flDebugBack').click(function() { $(this).parent().parent().hide(); return false; }); }); $('#flDebugWindow').show(); return false; }); $('#flDebugTemplatePanel a.flDebugTemplateShowContext').on('click', function() { fldt.toggle_arrow($(this).children('.flDebugToggleArrow')) fldt.toggle_content($(this).parent().next()); return false; }); $('#flDebugSQLPanel a.flDebugShowStacktrace').on('click', function() { fldt.toggle_content($('.flDebugHideStacktraceDiv', $(this).parents('tr'))); return false; }); $('#flDebugHideToolBarButton').on('click', function() { fldt.hide_toolbar(true); return false; }); $('#flDebugShowToolBarButton').on('click', function() { fldt.show_toolbar(); return false; }); $(document).on('close.flDebug', function() { // If a sub-panel is open, close that if ($('#flDebugWindow').is(':visible')) { $('#flDebugWindow').hide(); return; } // If a panel is open, close that if ($('.flDebugPanelContentParent').is(':visible')) { $('.flDebugPanelContentParent').hide(); return; } // Otherwise, just minimize the toolbar if ($('#flDebugToolbar').is(':visible')) { fldt.hide_toolbar(true); return; } }); if ($.cookie(COOKIE_NAME)) { fldt.hide_toolbar(false); } else { fldt.show_toolbar(false); } $('#flDebug table.flDebugTablesorter').each(function() { var headers = {}; $(this).find('thead th').each(function(idx, elem) { headers[idx] = $(elem).data(); }); $(this).tablesorter({headers: headers}); }) .bind('sortEnd', function() { $(this).find('tbody tr').each(function(idx, elem) { var even = idx % 2 === 0; $(elem) .toggleClass('flDebugEven', even) .toggleClass('flDebugOdd', !even); }); }); }, toggle_content: function(elem) { if (elem.is(':visible')) { elem.hide(); } else { elem.show(); } }, close: function() { $(document).trigger('close.flDebug'); return false; }, hide_toolbar: function(setCookie) { // close any sub panels $('#flDebugWindow').hide(); // close all panels $('.flDebugPanelContentParent').hide(); $('#flDebugToolbar li').removeClass('flDebugActive'); // finally close toolbar $('#flDebugToolbar').hide('fast'); $('#flDebugToolbarHandle').show(); // Unbind keydown $(document).unbind('keydown.flDebug'); if (setCookie) { $.cookie(COOKIE_NAME, 'hide', { path: '/', expires: 10 }); } }, show_toolbar: function(animate) { // Set up keybindings $(document).on('keydown.flDebug', function(e) { if (e.keyCode == 27) { fldt.close(); } }); $('#flDebugToolbarHandle').hide(); if (animate) { $('#flDebugToolbar').show('fast'); } else { $('#flDebugToolbar').show(); } $.cookie(COOKIE_NAME, null, { path: '/', expires: -1 }); }, toggle_arrow: function(elem) { var uarr = String.fromCharCode(0x25b6); var darr = String.fromCharCode(0x25bc); elem.html(elem.html() == uarr ? darr : uarr); }, load_href: function(href) { $.get(href, function(data, status, xhr) { document.open(); document.write(xhr.responseText); document.close(); }); return false; }, $: $ }; $(document).ready(function() { fldt.init(); }); window.fldt = fldt; })(jQuery.noConflict(true)); flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/0000775000175000017500000000000014613236757023712 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/desc.gif0000664000175000017500000000006614613236757025321 0ustar kalyanikalyaniGIF89a#-0!, ɭT2Y;flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/djdt_vertical.png0000664000175000017500000000062414613236757027240 0ustar kalyanikalyaniPNG  IHDR(K'E[IDATHc`eDppUNaPã"Vbƣ$1±$ & 6ªLf\tU~xFQ ؎#=> Q#f:.uB_Aһc#7C$PzBV@i@|'șCQ?C8^8}:&Y +܏CZtq(JR]Q H7c` [!^AOP!ـ׍ gHOB$aL~$L0S}o@c*[l`|ЀӘ(2OIENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/bg.gif0000664000175000017500000000010014613236757024760 0ustar kalyanikalyaniGIF89a #-0!,  bxT2W>e`U;flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/close.png0000664000175000017500000000113414613236757025524 0ustar kalyanikalyaniPNG  IHDR"":G #IDATxݘj0ݕ/3 ={i0oV+]g9J8iLCh$'IzG!S ~zB OBþET>J}-HM V3p8y:>y)k~U6|GЁγlTnDQ(VS+ eG7ND.IcdT)#70'8@VQțq,7Lӣt:a2YM&>E!o_~lj!'SxL9f}C94Xq1q/b!34*6˗Oh0 1!˖ڎGvfѓMh8^*^O/w0 n:6[EZ"MBnvͳqb4$ } %PGNW[<"5!ǾZBQS\Ԕ9wIENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/tick-red.png0000775000175000017500000000103214613236757026121 0ustar kalyanikalyaniPNG  IHDRaIDATxڭOHQǿ3- ܂5:!Յ=lR a;;)K"PRke+H!ҥ@D(bu_߇#;ءB|<!Lw={uЦixDD'n|)}&IENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/back.png0000664000175000017500000000107714613236757025325 0ustar kalyanikalyaniPNG  IHDR"":G IDATxݘAN@=[W^3t L [p.HHPb&X h 54MaxLOá*\\6le0R 7\.& \T&@j\]8S=i‰a5˂UNIFf2$ڰQq3م{xFRX8@AD0">i6%LB_ H_PBiP :Ծ3C|Qu&Rsb^&aWIVY:^^,8o"jdAl*zYaGvf Mu u\4ڣՇ @Is aa7RHX-KADPdFo!APcCcz d=-,htAO)Kr4UKY/986_ HVQ %Ky>Y8yZ'6}53!j>K?Ԝ! >jgɃxIENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/indicator.png0000664000175000017500000000067414613236757026403 0ustar kalyanikalyaniPNG  IHDR'ՆIDAT(SuҿK@\i''tADtAo8`Aqq At*$R돊RQlhӤIwKljǑ~KD!B ,1B1b,rLTe"gtU1liofvI=ȡ)-X|L'V@qύ_r6A+JƦ;+޺@ +i2?}tcZlYXc.U͛ @$j$*2[Ry!~:|!['nLU"ggwd+,ʠky]$Sb`SLb~BztOT|Wyc{8`e'6g|" _YB8 [zM3Ӆ;IENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/panel_bg.png0000664000175000017500000000010614613236757026164 0ustar kalyanikalyaniPNG  IHDRĉ IDATc3 6UEQHIENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/asc.gif0000664000175000017500000000006614613236757025151 0ustar kalyanikalyaniGIF89a#-0!,  ڛgk$-;flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/close_hover.png0000664000175000017500000000130714613236757026731 0ustar kalyanikalyaniPNG  IHDR"":G IDATxݘjQ}l]% vBDօXt!.|JQDmZӎtIGk4Ԕ֯9!9х0Ϗs=s]7R{2P:Ru'}rS($@F<4L 2& k\ 2jTVچrvnAAn3?` N LRpe%&yF^bqA2<0V$4`ϒitsL:­vn ud#sB/Fe2py/=73 +O]8 )c\4f Π_Ja:m-P;(Qq$q[F. vX݁vi axf`R2&\گgxs 0mlW a!4Bz2 G %DPb Xר@N_aBU=}nFs?*+/h'Y58ڭ~qO:|skPŢ'/w0+t'6ev _\ #FTD[*R "ɐ@H\ 4V,JԊZB] ŹE3x|IENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/back_hover.png0000664000175000017500000000114614613236757026525 0ustar kalyanikalyaniPNG  IHDR"":G -IDATxXMKAGxԟ7{1؎axH"-@ DskuK I(:MH/,N;N0S#v[. m0\.g;L PHtCHEC.U! hF")b7*aWY;<NJ<$eB sP AbbAB,en*H%b "U%c}z"7 s:D9._3Q{d8GZϰG }{)aW# ctŽCB"/o<"KA^|J(1hUJ("Ȏd7GH6A\##77!!SڦFb%bY ܄&O񋳺R<)z'y}^[zwJZIE󃅑R*[*R "!+"g#-^'ZhkNiFRiPe?$,p鸄. c5c=̇7 IENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/static/img/tick.png0000775000175000017500000000107114613236757025354 0ustar kalyanikalyaniPNG  IHDRaIDATxڭMHTQ{83w&͡5 lQD K +!CABZK~*5#YTHPpQG"IP.jQizz0 >x=RE.W{* !? E b/%ҕg .itH b5Õ퓉so =e?vO峺3o6[-l7^JKaSjjs+o_wG_0.Y3lFwɝoۙ,0nx`Ի9CE%8p/vJ|+Fkf\8P%R9](&LpgPlTF 4z\ GrEAWsTVڼ cN*p(sYޥc"*XD'Qq U`R#%K\D(D#O?^>H'-X?,|2YIENDB`flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/0000775000175000017500000000000014613236757023645 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/0000775000175000017500000000000014613236757025127 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/sqlalchemy_select.html0000664000175000017500000000157714613236757031530 0ustar kalyanikalyani
Back

SQL Details

Executed SQL
{{ sql }}
Original query duration
{{ '%.4f'|format(duration * 1000) }} ms
{% if result %} {% for h in headers %} {% endfor %} {% for row in result %} {% for column in row %} {% endfor %} {% endfor %}
{{ h|upper }}
{{ column }}
{% else %}

Empty set

{% endif %}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/sqlalchemy.html0000664000175000017500000000205614613236757030162 0ustar kalyanikalyani {% for query in queries %} {% endfor %}
 (ms) Action Context Query
{{ '%.4f'|format(query.duration * 1000) }} {% if query.signed_query %} SELECT
EXPLAIN
{% endif %}
{{ query.location }}
{{ query.sql }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/logger.html0000664000175000017500000000114414613236757027274 0ustar kalyanikalyani{% if records %} {% for record in records %} {% endfor %}
Level Time Message Location
{{ record.level }} {{ record.time }} {{ record.message }} {{ record.file }}:{{ record.line }}
{% else %}

No messages logged.

{% endif %} flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/request_vars.html0000664000175000017500000000354014613236757030542 0ustar kalyanikalyani

View information

View Function args kwargs
{{ view_func }} {{ view_args|default("None") }} {% if view_kwargs.items() %} {% for k, v in view_kwargs.items() %} {{ k }}={{ v }}{% if not loop.last %}, {% endif %} {% endfor %} {% else %} None {% endif %}
{% macro show_map(map) %} {% for key, value in map %} {% endfor %}
Variable Value
{{ key|printable }} {{ value|printable }}
{% endmacro %}

COOKIES Variables

{% if cookies %} {{ show_map(cookies) }} {% else %}

No COOKIE data

{% endif %}

SESSION Variables

{% if session %} {{ show_map(session) }} {% else %}

No SESSION data

{% endif %} {% macro show_multi_map(map) %} {% for key, value in map %} {% endfor %}
Variable Value
{{ key|printable }} {%- set sep = joiner() -%} {%- for v in value -%} {{ sep() }}{{ v|printable }} {%- endfor -%}
{% endmacro %}

GET Variables

{% if get %} {{ show_multi_map(get) }} {% else %}

No GET data

{% endif %}

POST Variables

{% if post %} {{ show_multi_map(post) }} {% else %}

No POST data

{% endif %} flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/config_vars.html0000664000175000017500000000061714613236757030321 0ustar kalyanikalyani {% for key, value in config|dictsort %} {% endfor %}
Key Value
{{ key }} {{ value|printable }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/profiler.html0000664000175000017500000000136114613236757027640 0ustar kalyanikalyani {% for row in function_calls %} {% endfor %}
Calls Total Time (ms) Per Call (ms) Cumulative Time (ms) Per Call (ms) Function
{{ row.ncalls }} {{ row.tottime }} {{ '%.4f'|format(row.percall) }} {{ row.cumtime }} {{ '%.4f'|format(row.percall_cum) }} {{ row.filename|escape }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/template_editor.html0000664000175000017500000001401514613236757031177 0ustar kalyanikalyani Editing {{ templates[0].name }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/template.html0000664000175000017500000000127014613236757027630 0ustar kalyanikalyani{% if templates %} {% if editable %} Edit templates {% endif %} {% for template in templates %}

{{ template.template.name }}

{% for k, v in template.context|dictsort %} {% endfor %}
Variable Value
{{ k }} {{ v|printable }}
{% endfor %} {% else %}

No template rendered

{% endif %} flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/g.html0000664000175000017500000000051114613236757026240 0ustar kalyanikalyani {% for key, value in g_content|dictsort %} {% endfor %}
Key Value
{{ key|escape }} {{ value|escape }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/versions.html0000664000175000017500000000144214613236757027666 0ustar kalyanikalyani

Installed Packages

Current Site Packages Directory:

{{ python_lib_dir }}
{% for package in packages %} {% else %} {% endfor %}
Package Version Homepage Summary
{{ package.get('Name') }} {{ package.get('Version') }} {{ package.get('Home-page') }} {{ package.get('Summary') }}
Python 3.8 NOT INSTALLED This panel requires Python >= 3.8 in order to display installed packages and version information.
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/timer.html0000664000175000017500000000060314613236757027134 0ustar kalyanikalyani {% for key, value in rows %} {% endfor %}
Resource Value
{{ key|escape }} {{ value|escape }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/headers.html0000664000175000017500000000050714613236757027432 0ustar kalyanikalyani {% for key, value in headers|dictsort %} {% endfor %}
Key Value
{{ key|escape }} {{ value|escape }}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/sqlalchemy_error.html0000664000175000017500000000244614613236757031376 0ustar kalyanikalyani

Queries Unavailable

The toolbar was unable to fetch the SQLAlchemy queries for this request. To enable the SQLAlchemy query display, please:

    {% if not sqlalchemy_available %}
  1. Install required libraries:
    • Flask-SQLAlchemy
  2. {% endif %} {% if not extension_used %}
  3. Configure Flask-SQLAlchemy:

    The Flask-SQLAlchemy extension needs to be configured for this application. Please see the Flask-SQLAlchemy documentation for details.

  4. {% endif %} {% if not recording_enabled %}
  5. Enable query recording:

    Since this app is not currently running in DEBUG mode, Flask-SQLAlchemy will not record queries by default. To enable query recording in non-debug mode, set the following configuration value:

    app.config['SQLALCHEMY_RECORD_QUERIES'] = True

    See the documention of Flask-SQLAlchemy's get_debug_queries() for additional details.

  6. {% endif %}
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/panels/route_list.html0000664000175000017500000000120614613236757030205 0ustar kalyanikalyani {% if routes %} {% for route in routes|sort(attribute='rule') %} {% endfor %} {% else %} {% endif %}
URL route Endpoint name HTTP methods Is alias Redirect to
{{ route.rule }} {{ route.endpoint }} {{ route.methods|sort|join(', ') }} {{ route.alias }} {{ route.redirect_to }}
No routes have been configured.
flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/base.html0000664000175000017500000000440714613236757025452 0ustar kalyanikalyani flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/templates/redirect.html0000664000175000017500000000107714613236757026341 0ustar kalyanikalyani Redirect intercepted

Redirect ({{ redirect_code }})

Location: {{ redirect_to }}

The Flask Debug Toolbar has intercepted a redirect to the above URL for debug viewing purposes. You can click the above link to continue with the redirect as normal. If you'd like to disable this feature, you can set the config variable DEBUG_TB_INTERCEPT_REDIRECTS to False.

flask-debugtoolbar-0.15.1/src/flask_debugtoolbar/compat.py0000664000175000017500000000021514613236757023502 0ustar kalyanikalyaniimport sys PY2 = sys.version_info[0] == 2 if PY2: iteritems = lambda d: d.iteritems() else: iteritems = lambda d: iter(d.items()) flask-debugtoolbar-0.15.1/.readthedocs.yaml0000664000175000017500000000202614613236757020456 0ustar kalyanikalyani# Read the Docs configuration file for Sphinx projects # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the OS, Python version and other tools you might need build: os: ubuntu-lts-latest tools: python: "latest" # You can also specify other tool versions: # nodejs: "20" # rust: "1.70" # golang: "1.20" # Build documentation in the "docs/" directory with Sphinx sphinx: configuration: docs/conf.py # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs # builder: "dirhtml" # Fail on all warnings to avoid broken references fail_on_warning: true # Optionally build your docs in additional formats such as PDF and ePub # formats: # - pdf # - epub # Optional but recommended, declare the Python requirements required # to build your documentation # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: install: - path: . extra_requirements: - docs flask-debugtoolbar-0.15.1/pyproject.toml0000664000175000017500000000015014613236757020137 0ustar kalyanikalyani[build-system] requires = [ "setuptools>=42", "wheel" ] build-backend = "setuptools.build_meta" flask-debugtoolbar-0.15.1/tox.ini0000664000175000017500000000105314613236757016541 0ustar kalyanikalyani[tox] envlist = py3{12,11,10,9,8,7} stylecheck minimal skip_missing_interpreters = True [testenv] deps = pytest Flask-SQLAlchemy Pygments commands = pytest [testenv:minimal] deps = . commands = python -c "from flask_debugtoolbar import DebugToolbarExtension" [testenv:stylecheck] deps = pycodestyle commands = # E731: do not assign a lambda expression, use a def # W504: line break after binary operator pycodestyle src/flask_debugtoolbar test --ignore=E731,W504 [pycodestyle] max-line-length = 100 flask-debugtoolbar-0.15.1/docs/0000775000175000017500000000000014613236757016157 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/docs/_themes/0000775000175000017500000000000014613236757017603 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/docs/panels.rst0000664000175000017500000000537714613236757020207 0ustar kalyanikalyaniBuilt-In Panels =============== Versions -------- flask_debugtoolbar.panels.versions.VersionDebugPanel Shows the installed Flask version. The expanded view displays all installed packages and their versions as detected by ``setuptools``. Time ---- flask_debugtoolbar.panels.timer.TimerDebugPanel Shows the time taken to process the current request. The expanded view includes the breakdown of CPU time, by user and system, wall clock time, and context switches. .. image:: _static/screenshot-time-panel.png HTTP Headers ------------ flask_debugtoolbar.panels.headers.HeaderDebugPanel Displays the HTTP headers for the current request. .. image:: _static/screenshot-headers-panel.png Request Vars ------------ flask_debugtoolbar.panels.request_vars.RequestVarsDebugPanel Displays details of the Flask request-related variables, including the view function parameters, cookies, session variables, and GET and POST variables. .. image:: _static/screenshot-request-vars-panel.png Config ------ flask_debugtoolbar.panels.config_vars.ConfigVarsDebugPanel Shows the contents of the Flask application's config dict ``app.config``. .. image:: _static/screenshot-config-panel.png Templates --------- flask_debugtoolbar.panels.template.TemplateDebugPanel Shows information about the templates rendered for this request, and the value of the template parameters provided. .. image:: _static/screenshot-template-panel.png SQLAlchemy ---------- flask_debugtoolbar.panels.sqlalchemy.SQLAlchemyDebugPanel Shows SQL queries run during the current request. .. note:: This panel requires using the `Flask-SQLAlchemy`_ extension in order to record the queries. See the Flask-SQLAlchemy :ref:`flasksqlalchemy:quickstart` section to configure it. For additional details on query recording see the :py:func:`~flask_sqlalchemy.get_debug_queries` documentation. .. note:: SQL syntax highlighting requires `Pygments`_ to be installed. .. image:: _static/screenshot-sqlalchemy-panel.png .. _Flask-SQLAlchemy: https://flask-sqlalchemy.palletsprojects.com/ .. _Pygments: https://pygments.org/ Logging ------- flask_debugtoolbar.panels.logger.LoggingPanel Displays log messages recorded during the current request. .. image:: _static/screenshot-logger-panel.png Route List ---------- flask_debugtoolbar.panels.route_list.RouteListDebugPanel Displays the Flask URL routing rules. Profiler -------- flask_debugtoolbar.panels.profiler.ProfilerDebugPanel Reports profiling data for the current request. Due to the performance overhead, profiling is disabled by default. Click the checkmark to toggle profiling on or off. After enabling the profiler, refresh the page to re-run it with profiling. .. image:: _static/screenshot-profiler-panel.png flask-debugtoolbar-0.15.1/docs/conf.py0000664000175000017500000002017614613236757017464 0ustar kalyanikalyani# -*- coding: utf-8 -*- # # Flask-DebugToolbar documentation build configuration file, created by # sphinx-quickstart on Wed Feb 15 18:08:39 2012. # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import datetime import os import pkg_resources import sys import time import flask_debugtoolbar BUILD_DATE = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time()))) # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) # -- General configuration ----------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. #needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. extensions = [ 'sphinx.ext.viewcode', 'sphinx.ext.intersphinx', 'pallets_sphinx_themes', ] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' # The master toctree document. master_doc = 'index' # General information about the project. project = u'Flask-DebugToolbar' copyright = u'2012-{0}'.format(BUILD_DATE.year) # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The full version, including alpha/beta/rc tags. release = flask_debugtoolbar.__version__ # The short X.Y version. version = '.'.join(release.split('.')[:2]) # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. #add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). #add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] intersphinx_mapping = { 'flasksqlalchemy': ('https://flask-sqlalchemy.palletsprojects.com/', None) } # -- Options for HTML output --------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = 'flask' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. sys.path.append(os.path.abspath('_themes')) html_theme_path = ['_themes'] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. #html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. #html_additional_pages = {} # If false, no module index is generated. #html_domain_indices = True # If false, no index is generated. #html_use_index = True # If true, the index is split into individual pages for each letter. #html_split_index = False # If true, links to the reST sources are added to the pages. #html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. #html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. #html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = 'Flask-DebugToolbardoc' # -- Options for LaTeX output -------------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). #'pointsize': '10pt', # Additional stuff for the LaTeX preamble. #'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'Flask-DebugToolbar.tex', u'Flask-DebugToolbar Documentation', u'Matt Good', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of # the title page. #latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. #latex_use_parts = False # If true, show page references after internal links. #latex_show_pagerefs = False # If true, show URL addresses after external links. #latex_show_urls = False # Documents to append as an appendix to all manuals. #latex_appendices = [] # If false, no module index is generated. #latex_domain_indices = True # -- Options for manual page output -------------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ('index', 'flask-debugtoolbar', u'Flask-DebugToolbar Documentation', [u'Matt Good'], 1) ] # If true, show URL addresses after external links. #man_show_urls = False # -- Options for Texinfo output ------------------------------------------------ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ('index', 'Flask-DebugToolbar', u'Flask-DebugToolbar Documentation', u'Matt Good', 'Flask-DebugToolbar', 'One line description of project.', 'Miscellaneous'), ] # Documents to append as an appendix to all manuals. #texinfo_appendices = [] # If false, no module index is generated. #texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. #texinfo_show_urls = 'footnote' flask-debugtoolbar-0.15.1/docs/index.rst0000664000175000017500000000614014613236757020021 0ustar kalyanikalyaniFlask-DebugToolbar ================== This extension adds a toolbar overlay to Flask applications containing useful information for debugging. .. image:: _static/example.gif Installation ------------ Installing is simple with `pip`_:: $ pip install flask-debugtoolbar .. _pip: https://pip.pypa.io/ Usage ----- Setting up the debug toolbar is simple:: from flask import Flask from flask_debugtoolbar import DebugToolbarExtension app = Flask(__name__) # the toolbar is only enabled in debug mode: app.debug = True # set a 'SECRET_KEY' to enable the Flask session cookies app.config['SECRET_KEY'] = '' toolbar = DebugToolbarExtension(app) The toolbar will automatically be injected into HTML responses when debug mode is on. In production, setting ``app.debug = False`` will disable the toolbar. This extension also supports the Flask app factory pattern by separately creating the toolbar and later initializing it for an app:: toolbar = DebugToolbarExtension() # Then later on. app = create_app('the-config.cfg') toolbar.init_app(app) Configuration ------------- The toolbar support several configuration options: ==================================== ===================================== ========================== Name Description Default ==================================== ===================================== ========================== ``DEBUG_TB_ENABLED`` Enable the toolbar? ``app.debug`` ``DEBUG_TB_HOSTS`` Whitelist of hosts to display toolbar any host ``DEBUG_TB_INTERCEPT_REDIRECTS`` Should intercept redirects? ``True`` ``DEBUG_TB_PANELS`` List of module/class names of panels enable all built-in panels ``DEBUG_TB_PROFILER_ENABLED`` Enable the profiler on all requests ``False``, user-enabled ``DEBUG_TB_TEMPLATE_EDITOR_ENABLED`` Enable the template editor ``False`` ``DEBUG_TB_PROFILER_DUMP_FILENAME`` Filename of the profiler stats dump, ``None``, no dump will be written can be a ``str`` or a ``callable`` ==================================== ===================================== ========================== To change one of the config options, set it in the Flask app's config like:: app.config['DEBUG_TB_INTERCEPT_REDIRECTS'] = False Panels ------ .. toctree:: panels Contributing ------------ Fork us `on GitHub `_ Thanks ------ This was based on the original `django-debug-toolbar`_. Thanks to `Michael van Tellingen`_ for the original development of this Flask extension, and to all the `individual contributors`_. .. _django-debug-toolbar: https://github.com/jazzband/django-debug-toolbar .. _Michael van Tellingen: https://github.com/mvantellingen .. _individual contributors: https://github.com/pallets-eco/flask-debugtoolbar/graphs/contributors Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` flask-debugtoolbar-0.15.1/docs/Makefile0000664000175000017500000001315514613236757017624 0ustar kalyanikalyani# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* html: _themes $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Flask-DebugToolbar.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Flask-DebugToolbar.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/Flask-DebugToolbar" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Flask-DebugToolbar" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." _themes: git clone git://github.com/Pylons/pylons_sphinx_theme.git _themes cd ..; git submodule update --init; cd docsflask-debugtoolbar-0.15.1/docs/_static/0000775000175000017500000000000014613236757017605 5ustar kalyanikalyaniflask-debugtoolbar-0.15.1/docs/_static/screenshot-time-panel.png0000664000175000017500000012374314613236757024533 0ustar kalyanikalyaniPNG  IHDR,ܴsRGB pHYs  @IDATx@S/$^ 2d(CʼnumZj]u[[qB2dʆ Y{%! A~Www^n$g@TWUW8\# hHAi ?00?Ç @$ƻf>7 ~``U@Iw|n5@?pݡ@5D"Dm1&%jA:`= @u",,d2^LB==J*!ƻJC@T#YYlaDl\D Iء@ "զvixOOeB+4N^J}Ӭ @IIr˕YpF] @2299,hHKKKG|>_,KW qSBB T*0ޕ P deZnGUQrU±Ș@ l E*ff4T2S]Pd3:"V Mƛ~!lTo> б~eWF%=2R>iEm'mZS (g`offX2iyo{ n.)׳c{Gmz` M:bgёޫhDm"P^->z uf䔆e۲jo{:0jA :*˸hPf^~t 4UafWW2PO3D-07:yBP5 d@Iso?DQ0-?ѻ! S3F17x䜑,J@kde)&tuYeiss,o!ni4! ll%6*- B52sr]ٝz8Kze GW @UrUvb100*28cAA;g_t|pUMƛƧ^Tay˂޻)BC!V6VVj;oD1QYOwpR7 }66Xgٸ$ Pds8,p! O1\Lwv2,w[2KTo'6*.1[$zƎlՏce'}R `2Ll?_1J\MXn8'PPs0bRH׉R& ۰\PCLrs,S)Zm%ZҟWGk3qt`Ԧ"O0¿dհ#b̋!n׀ndmiܹs}+=&:#0I{AG-`U@iYeݱ:xKT ;|HvoI)/)H)Wc|uGT<;7v֡;d8mQi;}qxa_L6nA6ɿ;'/&2KIBnƧ hNv v/ƈ+}*fQap^,dSiUԆ[ <^., Srq`aaaZ'55@@ȳƛ^}|t\\WePDC4tq|li! wXudC:"(܅kO6tdR^,4=g ڴޘч=Nӻkp\M:{ٶT5Hr$wtrDl/bBbݾ#Y俫{c+l;,GdgN~)AH*P/Ge7|tr³"FT8MOD2eLdEej׼bCZqTsj1hmYOZnMJ;Vm+5YaBaq[KypʉwJJr+FEX EoS'sщj6#&$-7Z=Ntr> qHn̆F91%,w>zvUڽǵ+ uY4uͶ*V*x'El<͝pak͉Ͻ*<^9Г \(e ?@t#4Bɳ̓~#}1|M?lj( q.DVĆ>Tm.]sIH;0⳴p"7w?|)eаyែ%gĽ}T(w"hL|w,a>!!ϲΦ`}-]"""aa}*܍/DfGT'7#U4|Pddw4116VEcM_[[Դ>*BT(٩gWsرȒ "Q$;mk-\pe]B}w6qTMgQM5>4F@d_oboz;1B)~:vƊv&se[AQAANLг+ fn\wEgL oҐ{y,*]iػsqu>Xе/ Sl3wufL?wsmxԁ԰#WY{&.l/cVS ޒ/@)}:Fc3.2ɢ vcBmz߈f7vZ0Qge!:bRXK.W k׮wE2LHM'Q)B.*euKK~2)=u(N|8ֶf$˺x` ,7KwjuMT7 *S~ PC iV*vʻkP>JW:.]@vTK=acbҐ-?~p'%`]H=Fpԩ_W_}$o/30VIJϠCatYUTkZωU}2S_uN>y>-ӯ[gmnTF7ǃ9Jd~(.+y-_Kʁ P%t rCOlU&`nxMmIt:5\Ef;iʦyNsW/H~q뗦 r9~ۣsPg󽬕WR=6 !/T0'8ԇ/My*ܦQc'!o*|?5O;d/ԫ?iˌzҋ:(.&'*䡆gMl RnS\=B^•%@*,-wU1x<ȍ76x6ή+?5@Oq'h/JԈ:~J7JrRa\BzN-!f7`R޳{t17 Ξ3pN(|zH5}VZ q*2[z|=<-R(Y'`ݢk%Dʌ{ר Xe"w<u՜kJ88'N-됞aX:$x802|MүGu%u/7ܢ,)A'I2W:T9]]<.W 7,--sT5 b߃8#ήWEb TFT,)k vyN4xi/j9úJEv<Ϣd?sF:]+[nw)sM#m6!Oۏ>Uf=>ˡ"RK #7wp1{':tM:o_^7s4E? ?`9Z+.FڲAYK{Nr 7Ot97*RH~B:.wv C.2~"$)vTb(N@{ki?bZE_NRF,fllŊAB7)z#i)Lg5xQ;5 4*D 8:y[Qu"yx^.<9>L&r\Mڛ>Xख़) ,'4T;r] 'Vi)][kԂsg~y2YK9ݫ] H]BU>/O5^W8*|ȞcϔN)PAuT#@UU,kyKmbR`dF2]]!$fPGG+6~oo:Ii[ny>r(C˥{喻gɒ;/(.FM TGyttFm=ꬍD$MXٛ6ť,7+[KzNX&pJm'x`q\Y66p zL_!>iBBm[g/좐iWwunL)} @* `g)jOX1O21up1[ޖwJ#s}|O1j[%]A싷x/[whi4DqB^~H% w3WsK >SV+sWdM'^u9ˉVbJD0kd+]2ᦽK/"8֕'Vl} b$":<~ ׏bH.Ml"뙐Z:%T|fjR|7>Sexzynn1TKK@%W:9 fP6Ȫ\Or!`cY腅BfɆ8nj6[ֶ"Y##4/0`*[a4D P `LB[EEDC\[[[ە}Hvvv  b] 4Mj:]Tt A^'1_G@qBe@G GxPG 'T ~` u@qBe@G GxPG 'T ~XPG  1iBE@ ?cJ D4.@ CC#\~{}޵qJS>5pG,,=8\,\wΝY}+{'5((3=:| .G'~mi' ?#5g{}3S=˦ݻ7AtݼsQﺆ:3ڦc֜i+s-M,?skŐ ajttJ>2k>荟mE w\ߦft~N1:@"nu4('2 Zc[m-Elll@@װMOjR9}%3|~μ?e&#~Nmdd S7,_bퟶB(om&QO64j$_+r,3+ \;ԥniX@ 2`y;W:2lҳP%Ң -oĮm[#T.\F<K.|Hϟ4gN6h{ίԁ3wǿ5j\3ū! z Ho0"!4oςn/1fKG Qˡm0z9rczl}*,GLD-(*:u6]9y޽AHekY xU<@oNc;7d# 晧_?"&cV4QRIÑNMDńu86ke[ulRFQ@"ddՍv,"31cl%} =#.o1/ L.䆇~Ϯ#TM׈kA@Tud^?*-@R v|JJ;nJ3k)$n\X2_$R hl+l"ݹ'GR/ޏ;+x*zѾ#=5xACh>q8v~Z0؞欉']y3aa?bĵGN|,Ns;qThBEjSw!CSA.m}KeJ^4B^?>rWuTK 7h?rsKQ8 1 TۜlnӃbw7%P~'my:]'D0e^+3fƫz'q^~{G֭+{S)4A&vKz,z8N|G&֊EUjgF;.N`rЈ=n1햒ἱn}G&j+ڮycc(Oʻͫ?Fom&>DӓaEXnrD3Wk }D.-r)w ˍ 4%W<@ PchP֥q̐ GLBfGm8.qס ٸ[6/ҕ,nNέ ^CT zGs ?ݾMJW ΝFh:DtVf^j5 $6 Ҩ۴_& IܱnV$^>fIWPkBs3[$mEOH_4;@A-oZx6Sޔ{,<͓,gi}l3tՇ\CNU/a(r X\ɚsHr^xoc)'6}om"P|>Į255jvFأ>4`+B!kX-^nVhMEkR+~8ͤǫ_&@%Pbe!'&} &VV > mee % L [c;,E }}cbj ?+[)j5Q+BÁYiIgtLyܴBַ27ְf oB}բoT3DslKc[5D -ǼDz -mmVZ,|,? w0@ 09@ LwQAB Ճ7U-= ͔78J~=GG)a^J 57y+l*E1\(eRZ|,bvS;??hRKYr @|x l~W SH1옞 #bNn߁9 rjز{:%]w̋OҼwyA=NHx|SN]P@lu ܤ͉/KB$bFWaj↯mæYorqfįJ|onˎQ8SӖ&ٱO?Q|[swJh]'mڬ)=3$-;wmAdطer>iqF-j_I!d۸uV]IHJƻTyUJori_N'ljAjȍdn} y'f{t6ʱ QS]3Q=N_j3\t^ U x\ ae> qC) ֭[t^8"`D)ё-'B&,}$Iiޕy1[u-~P{ 5E$b@,fvmT[*OZp-YP$R]m<9&=O:% Y?ohQC]$E"͔Oy S.,ZYyDG:*6GRQS>Z_ZP:@@ps;ɱ7Ǖr-܁یuY--Qre";f[8.=%8Ai>1fJ`Ե4L_+`AR @e`ckiE6T1 ClA_[Z:LJ~ 2uvsvh3n [J{\آvZXT>_Lv!oj%*e*b!"sZZ K8K)f!D2B1Px*-I e'&OǨ~:*iN19+,0Ǚ]] yI&&8:+>1Yoڦ۽i x[4eOүEb;mͥ- yó᧧O=9wgXk3B.=m*>f Z\Qn \!FrZ< ̴Nq1K:d@ DDD888UGm 9(j.Y|6mwO&KH,7E^>X?bmy7=Mׯe^ax_"?ewgO~ʼnUen ؆^8edP7#A[^4=+[*Ru&z@O$]cX4i-7 2bg:s=T1spi@:W K-҃ȧmHCF!{:X;a`!``g3[ncSw 6l8xm<~CY3Apg")e_>˞$IT/KNu= P3 C47>:"":Qgqd Qy3/'!͢:SN<#PIָ MtE#_py~a;V}>awAfo / 4yKW:J*mݼZ@UC$+<5ӝJAQYlyV";]7?e4DḆEW'uvQNi>N'kb_Wt][n,WaUԲX@f덺@#JQ8B"!9݌ΑЄJ8Rd핖~W-jEMv]v̰)pC}|{@1 ̽Ϡ>'xъ'pZGcKrssG`!!Dn#wA3XHt!Uz~Bc"<0Bt@T b1oSnUbHn|%VnƊol W4&4֫jOяj'_# :UVlKK֛cߨ--lׅp(lZ&,{ݺ"a2=*9lح)]N:u}Η-7վbױXFZ%޹q]vB{.Q<I [4jZuU3>9`ϵwqNAGVP!Rܷ]:l_4giWLWZ 5,6x aP]m{>Mk@?R=l-ZgBSB^{vߔMd+S $l~zr/Sp~ZH {u}ڠ[S;Nv/ e*ii2ГDKR/zF4uz!<^޴3"UA186c47"L^$q(CKJM zW \H@$@V*,^%FZEǶ<ƔJ#TﮑxJ @IQ"ޘU e&FXo84WXWI}~^y_ﭙn! HА "$"H[d0s xcaYtX RlBpm=3a[pyvTàyH[L,NyPXOekx^_:pTM)) $o΀ljj|4[ _iI=vnglitL{逹 M;_p@ Jeff |Hllj!/;pXq Qr@F ""AVCon@IDATU5@:22g4c;7d@ (O+U@|7$VX82Ï}\FT@T*!HȐptϧNҤ lDP@sAi%H@TgwE)(=AzEs{NА#k&ƻZ?P P$f*7_hga8BGzzVm1㡄6n8YjRe7}T:\*@9.~Z@;! 7 ];hN6}nE7~Wކ3[lo, rWik]R;IQ٤E0 .ǖ+%&E8/wO"ybOއ,;w*@9[ޕ@Pb1D G&TqUp3:?u"X6~˗+#-T0ޕAd 6۔>=_![%f. ybb"c㳸xW_.ħ8\9˙KOJ"!D(Œ(ā1_ZN!UI`Æ ..."eM8NSNZVܺ{)!În} =g n=R]נ JN@;DWsPz蕓wc:i{m3o5`o"T/? mq\JZ(?/'r+EaM,pvQ)wq oM(gp.:H)>FwgN P7t`@77'Sy`)r!HtŊz*;leVQ#"P[BB^|gR["8)|d3ddFVxy_ɖ)d T1ooo":Ys#Uon/taܧΓL$)Ahމ6bV׵tNӼ}Z*5iO1 5?ni,o&-ac#gs+ cT+G3n-g+cF~*c+,hrmZn̸ ,(v6 f$h?ȩJLp@(ϟ?/T1{&88xT;.sWmجss#*/j[ը Np["AZ9f -~Xx2h'|-˾ND&/-)}6mRR|K| D,ݡhդve}RvڥR:J;.MzzM-?R\-x Py|||ongg[T*WsoM#˭)eSad0{|NXl+vjzyYדT[:лFNq/,6]ߢe$ξөщާ}l]յ?x7`w㕍?4Wm-Wޠ)DB-n@ީ5t6,~Y1k^O܆VM[{L=aqO_[_:Pt e[o .Zߕ.қ)#qC a_~lY~)/G% 4Cz֭r]yޚT oMy~kR5vckohh_ws|ŠxZБ-$tgK3| g ;6H{մOD迸uj>4%L.b!皹 Yt"u;}=;25 ӓ9331{0u0~Kr|`G7~ێ7k3c㣭q?LCOHgY@$r,kΜ9ýwo]r hxc]r(i!`2xFB5!}݈#dætkl¦Xx [zm%g[PFLB5fы>=&CQj$a!ŝXBxZYmkp@,03! [Y]}FrcL8/7;9ux!~w[Yθ~ xxSڳZFj]i|`' E(`% ;Aܛ{T+t?XYYUo1D!6ϝ=˃ KH ?=:`h畷3GN Ch='G_2fzLY21+WOt|u\b򪝛6>cHzl^I_$9bVuw6tj4_(lOCN|URfqi.{`z<^еdٴ>oތڑ{q)U=|JbשHG](HmlKMi__f .twwwi o^ܭ/Uoo~q јعtN<?2$뮄|"CƃRԷE?+{HusBnZ#饵>eO=[|7/b[ZQz{Q='|uxkr0*ש+`缩}\E&Qp/-@r8Wи:Ҥ!1ixdq2&zȹiIYxsth&eVEۿZ^;DHPKk{Z!~}V>Of%G*#c W %iӦ]vVJoY:U (6w˥*-m[}y z >f߰ȕE֍/-uk>Pᾔ^+}"nkqs5ֱkc$n+!\!2 ȥ~$=11W?9v_sٖ9άWh0ꯕKM4/i?r/2vNd)[nzI sC$H=Ր&YPݲ.oQu"C}:DkJWo5eyT:>j7ztr^Vnˮ>=]nkbi^k*| <|p<`-7|CjMq턼Olk+brq7R_wP@ׂFrpnV6&ZI3qX!)K*dXX>'CYLmkvExOl+/C)@LK;[YbaVڧB62."`q@*pg2Y*d@@Yyx}o2oooZ,|Տ7X w3 zlLx@xbVZNin'v!15srs*Hs3rdGr @/֭[O(ll妌7ǟa E*[@eoV[:, B@ǎ]xI7e7N=] 32Ij ('˗~2XN&[!/g"zP j Tn)lMU:o- P'R]l,0fx/I ^UzFĖv0PZ`mgvoa//xqFxc&ĎR'Ž{/Ⓛk^ȖFY+e0YҒWft%7`طKӤb܏PS׻&?kݮW %&xp9He`ߦ)O |}+^Vc!ɧI ;fF<&EGݸ>|1$o ?#A~r 4I@Ro@kk}Ww/={=8Βr4 MPc?,.t=.ť𐞵Yv,ն{Z,^Tzm{ !R+- Sjp]o~5ѳyp$bvDzH,R,B½ F#-1/!<$ 3|ͿSk#A _ŧSmb!~6⤏6>~!Cq9ȶYHxB_lGҒb?}RRڵ|E;.܈f"ܺsms#nnaJ5U7qM^fX-^ƻ7::5M>XwѓX7#{ΎxȈq֝[g=eR\2RR@V)r+'^!rXG {D iWi" "b׳g=۩x{,`C#łtD: $$@(Ny1o̎…檞| ٙw5O,9gƁn˗]^b1'tu8T1*bV7^@6$FBTdy/gd y[J"a#'x!)NQox=BgR*Akbr4]4JYQ !nDmܫU2PJ^`}HXꙕPBIbu5QLr*QJu'IFև*a!x>(BXSrAA[uڑw78R|tB -e޶ztF_uك3'9 6y~oo4ܔrzߢxO(q mE 5+u]2ֱR DV槤fkqNѰϘP\Ok쓪ղk9KJڔRl )>Y\)Ïqa7ryHNwel/{YN;Zv-\oL&ePfU{@`Uj6["+dJqn 9B噙&zEɹ,¤']|5erh'b@RTi2 ~NB%:{!>sZ eF"tnT%RZK'@@ś8~re$e:[8f qm^ ^,2vv6TPw%jEв4gSEQMӼZ73-QJYA17hMgDyCӶTַ7QTd&aEMev^z>uJ]V6ѧ03ĭBnU )*h }Ҁ7D7d*idcYtY@Bv6"HҢoWb ^j1QKަ)PʎM(Q=x=ͫ7W"YU™/}EY5nsmj!N]arud~| !@ Rô)QEeaJp<"㨲 QJbdҶvaMAbblhN}5v|Mɉgɫ3Q2HJrBd֬?qjNefBFtfl&2Q/ 9Ȩ 1n.uU9rUp:HH˕Hc^$|P2奇+ABc!Q,mȼĐx` 9ʡ,.x~U%U3; u2+mHPw72&Hʜ[J4V3'neFK| +̈.rEiO/ܪ7s,Qo bh/>q$ѣ2*4Q*YKN~vNjQ>9|Q2 ^W~ARE]Q 12stf#"tޤzmd/Z%k*@EŵJH Yilxy1=;u{ VMQǎ!..H62Fs߈CG@puP@*=\\MDD\Imd (-)$Y#1"ˍk(6nT<ˍV}m` !IݺYcX$őU,7GrcMdM`1 +Dhb-1 zaikQ? > 浪X潌o>m]UUr+gP>C۸T19%DMsi D @KdFf\[a}O,k&nU  "St  @;$ƻ>P  H@  nT@ )-\m^^;S!   `H _Id  Z6 H /JFwEi|nMZx|h?"L?+*MmKlk⤴M*(;B\J}&=݇*q5͎l^WXPĥ:vTjM   rΛ~ld>_#kd_Ñ #O}2'7ڑ zz*ώylČ%%7 NroooC }u ݜs)S҄p@@+7-CAz55ut/3#l9d:4N_)Iy .ȌyD<=_9.@q}/Zo.adt:J4YMs3Ie.Q]s1$rpvJ迥cPJj|E)rrh9=UڮU5h|%gn-):TI[1=3czKc}RrڧYL>kV4nv' D!,5 +REy!eO9h.|Waf_Ãe F322 h49ﰧF^͓OF{Z*5Ehl,mC|X{i R sA2Fk?%!b[]z2 vnN׺֟R'5λ"5*9t գ &>^X<}[I/a OHnwLR 3S=V;+G  E@eo LXwR%iD/s3NfKvjmoጐ藭%n? pz˺wPCu,_#i~9v? :U ؍GiTxt=M(!)9|n:̌ۮ?ͬQȮׯ?&z3LeYL.!$5@\a0e_q[;IYJc*Bf&]f+Vq̗ @ |ͪLC=mUxpwFᩍ:)Wh`o7 vkkI#q7UmceFsGUm)O>8jLы7ED@ = |mp*beD}-dϝҴPD2=Yv;ٱ=W $yy&,G~3NF`̼ėuה%$bQmh,,vaIIJA򲱲3L|]®DG>+UIzXi[]%-f_($9=W{Qq'ѢF$ܤpEVg{KFy?Z;ڒf\W*qbv`CPNwE"5WMȳr91C#mH8v&e!) { kT'4y}i!*ĥXvyDl`PރCk'U7ULl%W",| &@)((:߽{gl\n8^GT,~^TĢɒo:dF1YYIyN`e~~5=;CVyyy,RzMeW+) !wXCjwnrkSY t9YY'GaU\& +~n4@֪A !!AGGѶٳxMƻ:! =2@ ~y`@L^hO @4M̓yǼlF׼?9ͼ塓̑slPR.YDJɖ=;j+[ Lnp†O^mU{H|t3)#zn`*xYnP?{}2 ~IT„IHy@ڋwPVUTȿCT*d-+i[& *^('#Y),*!*mUJ2'Tm=jpMlᕈhPЏR @O @p߶܆vKY9'm īBBt*˪WJTFϲCjn 6#1NTUf}DZoSj=Sh@K46fB"I6wsmVǾ\kghˈώx4i8Zlao ! f'pe*b<|M\svc,#*.Ox4]P7Q([nfqG' ?{t̞zgOX폅ov{ƛ\{j0j66+~ٯ8 g]fUY&.fJiJ,.ˠjǧZrs4{MsVn gQ9xwg#nD&xkb16̏*&NSh݇ck*tRp2խyZ,YAj+X{DCW㥷/{M4z bX5iw>Rm>ф" ktqyCS=čvnq#(Rc8ǖc0)5猸El2S[LyDz>^3gkGȝv{&GnŖ'nwK-Ve\WٺItTG%y+_6#e_q *d}>OSO 1-Jxsvŀh8]mxȊ/}OuۡnE|`mҿGzh\$b93 x9Z':m]+R}tD j~+8 :yW0'4cyi|:'kq 6z[QO;c|}r? H\Zrsmt ˽@ 1O=6"T]An5<*,L!&y)n:1k*YkrEn&#oQ,FQ!*ECV )9noTA @}0O[A%bJx~ MV²P  /EpfC@ ~ `  @쁁@ xw F%$zZ   ~x:@xZ ?0@vF@F{H[j~:o=+E$]XwJ~X=-5JDD^^MFeѳrKʑF'un̏. @'XjBRȼ֓ v%_S+J0VHhmwv QF?,>np;XD%qFͨ)7ck~:u$/(Ό14D杉jB$D OH1}^zCi"\.$MfR1;kBJۣb߶ΚS)FsPq%wICɐe&]SEU*w1)5 >C.Dz ;cGbUcºަVUسs[ɨ' n@%RW)Ad16~Յzf0 qб.Ңc; :xrnK͘ukFci]A'3OdSXsLNLйa(n)7Ɵl't:jjAW8g-h~!n45-58UNWWFŗԪ<%|}zW`ÂcNP63OHbʸ*x@JLn$Bثj !1ޏB_ļxEbVKEZǥ\"Td7XDk݈["o}s]Txv^M-]!z[63Φ5Ӧ|@oJ Fx[{g,9IhrF1Ѡ>]/m9[nD$ȵ;%]_Y8# N3?tťldNbX*4c-7/4SgؿC7/i $E?g ߭  ;č{͑-+/h>}*o^ Hb wD;]g)nO$iMJJ\vB؝^YAFMȇh xcUD*"CAL +烐ZboÏ^檄;j8`ꊴ76e^ KC۹x/dݤ[~7o8ɌwuSzM܊vI&,]]wB'AA Y^TCE(U+ X}3*2ITW̡m8^x5ޘp<,\ w%6q"$ɩZ~reAiY^r"tzS@; ^>O 9EC "dBQ{̍2ѷFkA$'+/++/]Z>WY=ûjaVbnG1v@={yZn[cE莶GHnBN\'f̎Kf곤Q:ENGr6G ŋ - Ţ%]<Gv\נ!ȂK j{a}JIqhO#/jMN[POyjd{7QlӍą=eUr,}aN՗>p/?L1;]To ~7;rp~o|9]:`-HO eʋ|?+%O>w5w<|M/|߻=dV2//=QaNyYL!514*)=kmo|_|-|󝮋dSy'ѝBFL?@ P f;KKfgȢVվPF?M*'o5EJy5V5yH\I0[M{A˪WVhZAAU^Y?=/-J\,FUH^]K0oۋE_((EV1"ܥhT+@W&sF MH T6EV&"q^Bop<9[^'aL{IS"_Uh 2El4ULNM>wE4jI-n"aF@K[ڝ9ЪƫA6@ xpOC@ AfY@y8lcalI./yvq׌mװYc}\ET,׶N|<φ#oB\z1X>/pM\dȨlmpܲv_(!<'ֲdj8U*;E[W=qh/?9rkA`bumnY~JFoU]kyz9t#6̬Qxt0005@))Y'pIDATDiu Pop#QNqcnDDD=tp)>_nIQ̣{'co7DDqq{}v.(TL#=4u* sH*IpPn1K]YB@$Fp = X{ITUt<b47\|zyע5'"-Tkbq~[׭뇾ƛ;7 J3~އwt?4g Vnjj>)M|f"o<˚؋U9r1*LM-b +[61s3OLUc)mT(-$ 1hU?˗/wB/g }Ik㭱- =ޱ£.=a̩j8摶]&ɩS;M,sNbRT=d"aSG'GL$n8J#Qmd :~L`BPXc۬f+  X];~&S]:a,~Տ'? |R757DKBl?u;X)㽟Ys; J5Z~_hdXWTIZ}υJmZkyEƈQBRZrEctiS5קw#MfU؋X#q@@yкYGS^nI=ץK=4ǭebAƖ-uSĢ<>c;fDd͵%F mu|wvj21,@zhVktTD 4Ϟd3d# +o8uǍU;/Y{vV;;! ~RJ"-!gS\J';Ub@n3_m5E8*#bjv K/h]z aWAú~Ę6Ym΅ѸBkg9Ttˑw93`| @1~?xg:-Vya $=p7-a|vzբq<5m1[Hsx 9dZ{<ٖ9H[8&1[pϘ%9L$oh?~gw 9#DENg͚0P_A$9x쓸G>9l5#ÓCs%1ϑ̋8d2>IB fLs&PoUֲ`s7YavlͰS5BEMZ;LÛ"53+Rf*sIB/yw7Bm:3\Q *}m@; @;92ū_F .v&r^KsNLJ҄/R1#y 9 A@@z=ꇝDq'kߓdFJ pnBIvTk' (<{s5!ɕ\;wHu𴥤S \_a~&)ZL~U9BDJ&Ɠ)i2Ù]d!':'\vEGl|Tx㗮-W@ }t S;41ބ|X}&E&۹|$ -kG}X|jh; @_@oOFߞ9@Ux @ m?+iЮDW b%P\\ܬx3 *ĥ;*GJʑyt}fMZm5iFQzVnR9[WPQ%.Q3{2srS5 Um?5:AY @ɜwᕵ#LMMUWumRjӬ:~(|*gdڽbWm!~}SG2<] [MUM)?oiyL9/)5FF]aoͱCוvw]J5bY7`^EŹ/( E9x3iFUVVp}Η Y0V@b=798q~a}щeeőg쟼60)Vn9*JqSzz_\{Lћa\t^k)|b>o~ǖw/wM%\hh3"|{ }u Q2˸&JX.a4rӝ7\j{XqQ0A}}2BzzFFFc|ptscbNXߝFN睙b5g4gKlŢ^֤S m;ednĀN]ߟB'B~ׅ _?f姯c\sqR}Uzؓ*>_z '\oo;[onULipNFC6=7Jߕl\ªH ;?WnGU"f}-onz3a'ǽ}5ehU Gz{Mw?pߛVv_gomkuRl$nХ&%N,[i"$hl#u5-ogɖЧRX;Y[^_t_&q7l!@k7%™r߱F5&8-/gFpM-^fUHZ"{ },+? ˈ=vT?3C y[hO:޽OMPo\Uo؄֬P(2mp@p]=4cFn<6vJ”$E;o ܣ)ަ(av.M6^Z4[Wk{ gppOux͸c}\8촟-º?^{7ϡnIF/% 'έ`s@~&9®#t/@"lne=vïSyc`MA7w7 i=7Xhlú:jWkumo.է@%VmLy@W!j]傾GVeic(fSÓ-BE\il SVQQWI9)Zx?]9FqtE0acgyFjqE̹La Xu9 # yke0rغQW\lBLvX4(Wh`oF<ϋ ӝ!ˍXNo,g#F 6Yz(6Q6!A }CZ{JQPJ&qU-j'=&,,B+7 P rA6D Khi[8P^\*̑Eoӓ8ZKYXMLGhw,N" c?n>幝z54X[WhFF*솇9_oeUx|\VΠMPg殳bܘju:Ru !̡P[v/g1aUIqط1zՊe&u{MU9le Ј:yR"vծ;NhѯSC"(F*ࠎR5Mm.^:`15u޾L<&2T!vokrE_ ~=55l.δ:Ed1_& ",VFıgтI֥e*M E=O+cгpV,%%8r:}Y\u>\xcۺpPQ[kT#9O=UAFMG:9G!j µǒ̏QAc_^x}v^vYMۮ{.a]jHCv=z'=;vdVcx"En:}zʴ~Drlċq|#f \~mEhJOŒqlY#DEA"D_잶t؏,F^п񌌃ll B[SXn=ޥG ^#h`@'Z.8nL{];.m9NwvGEFi9.&~yCVq8l=E; \ϕm/KD3{EG'Ɗ!5&!nc}4>&'&+(xW kAc&~ҽ,m!Cn^iB/6SWdycК>B>NbS 2ѵt>x]z "b#=g/DL\#&n@F2Vcֈ[&]WQs?|>KC .2\_Gv *:pnV==\NS_`Ǿ 5tQv_ȓ6źǭh lSudj4W*m|:𦈠~=ܿ P ~:ݻwK+[Y;Ex0E6o1zQ*&K1XxK/*њ#(*dPhGnJ*VT!y5֔SC)u}M)n^V(})Sr h3"[^:,Yrюx] vt'7>V  h3yۜé2q })*rOީQB<-[gCJNBDL7jU+Ȼ(@]`:Ϳwcڥ3 zDyoKBOE_ZdwzǦ/yی@6o3]@@b -wyrTXXXL~VBc貳[VX=lfΣaMH߉x 5p@JɋuqGkՀCՂJ' 3| oj ۼ$ۤ#@ eQGy,7֋h٥r1'ל'CLhбU8]e-x"$L 5NܥqFX$:w8 Og@ KhDb/7lE3[[}-z_mX{~mrփgW8C}&V[@J+ZRw6g!|Mxs$ms 7,/d8[|8  "Лw@ @hxڍUXt EZsz?Ұ J[I58:>O &r%_Jd۾ (M kK8y>:|"׹x^_k^$֜N_)IٸWGlMF߹b-ݷ$YYQv#W9/tgx8/@g$.nPm쵛t3(?v՚/Ei>[254?7YYBq7)6>6gh_學0&))ŃujT$QzIN);9d{C=#-|Ƒ oQ&OF^Oh ݎƓK]M ]OT$@>yyq41ea +QXQ!8sFY$zEF5ozF>+o)S5z@f-'PǐPm9uו+Vбx|78DG9Ӏ2?T}iq*x.P\lYѣ7|DAEEEr+ i" ή\0N];$ǁC@(B{ݏZ|_9"x~疬Q8^^?oަ+Aw`4|wys)e<K7q_ѫ_文|-%z$5zm *Ʈ*Sbnl~ԭOCMN3Na {Pl,n)eQD')RRХ?Zcٖl@rN}9*rte(*l`5z9yꮄj!yc3ha37$<4'ףSGqK+SBᓬ/v-QJ*FKkc&9kx&CG~cMS@A!{i!`wto e($/5/[I#D*M E=O/.535v#ss?+S۩50x-jF>{h3ߒ9[ׅFzbZ*}7VmU&+h 70^fAU-Lԗ@ Ѐixwk,wH{|Dpf\xR  ~S=OkՅ1w-vͿn  hF@@Lw{~:@Fn D hZ` О[  xDi@ 9p O%#2 ZA@FFHԡ@+JPyF!@`p @OwF!@`p @OwF!@`p @OwF!@`p @OwF!@`p @OwF!@`p @Oɤ # IENDB`flask-debugtoolbar-0.15.1/docs/_static/.gitignore0000664000175000017500000000000014613236757021563 0ustar kalyanikalyaniflask-debugtoolbar-0.15.1/docs/_static/screenshot-profiler-panel.png0000664000175000017500000014511614613236757025415 0ustar kalyanikalyaniPNG  IHDRsRGB pHYs  @IDATx]@I"݂ (;vA+Qϊ]?Yήwg AbTl ! S ㌘͛ov͛ /vF#P9TcF@姮=M PpEMF+J0ՇVՇ=.#*rs|&K+khp54x\$XM`*lՌ >)BP𗝍B}| (T2XyW2=F#PM15 M^~~z / '_#(7Z#B`0TKJR\s ,c#Pw l,F#P.4ԋeA!55B7s8BAq!ޠA~Lp$Fʻڛ T$jn--M--zbXr"g F& wMh,F#P1L 9^jE6Eഴ3dTuzቃ5EwrZ:}ؒ΍mOϛ\@Q2CIy#1.c2G+Kď1O~腿؜bl6?^18 #0`/Mz A&@,#r1, |U@uYr.22%@p,$**|nǫrjl +ZQ[CS{(U9] P1D/;$&Syг| e&l2Jyah<Xn~`Ug-Ex4a{l'.|`$t#e8܍&&HFdg} ʸaF%r+25L* ikI^8dqěAihL|$"jy%iWPnލ"zbjȋo=u1,="E  C:k_kn ~ߟP_@#!H^=2inJ c+T~jM%d|ACo$yK+O5E-oh=i prʍ~Oƙ/l vi4 (IZA>+#_\ >o/E{kcC\MdnLu$AVg:b37,V\} C`0*re@Ƽ$q^` ̵jhsK"8/ C4?>k@w"Kӡvw_LWK t0'JVu1=kT}/G&յ5`in~Q , kڤ#t--G

EdR?$aضm[C%k&D5mnf'CQ1F)fVJD #P˓ٌ֖s,NLWWRQòy<0'\)k)4V5қc)P5 /@Zm0~/XNV204(rj8R5ty\G{'gb@_QXUAòLnAkH烯.c:h1scF"vMWJwxD4O[7i?ٍ] iύLoFuǜ"[{ ޹伲쿻|3 ~!2 )[/)کSlI-ii `jbuID]7Gq TV{GW0θ-8-bаmN5@ymxfrY\}_:C؇2O7|&W㴴404idN <\.gʛd^s;1@,ǧ!&ZyXz܁9HhN'bDln𫪪6h@B'1+BDU-׬F#'.*:&/:$^D$+!J£c9~+W\}VYPl ah\_k [QߦȄ>Pf4y2I*ʦa~ ɘ1+yRMj9۰m,mN۰[P 6mұEz*P81_#{ i﵆m.,N+%KHIuAwz9.ACGpz?H.~Sz͞ ;ʹ՚vɳt.mϔç뷞* ~tm %TEEb+wӦMg2IK/)Wmuxe(m,' aǨHߔk-S%'ӟ_S貟Vxm2fwx+#] [eC4g%͉{_(d|HnN#"D?㽍~!meKw"#G}'2ֱPdpXCr_Nt]]<( 6fA&-$Wk.̥힗%'hqEi1Eke6j1Z͒޵}nk-QKr^dڃɮuHy:B''wѳB8c&GuJm zKx(o2^(2AO*L{ab^F~2BʡJ+dOrMx" ^> fdf{'y:Q˵P16#1u==vz\vjjJY,yۺSF@I Ǭf98"s`[ `N]EQ ǃ\d"+*tE@E!wE!`050t +/<4pptE櫲a]eP0*E0s/,=7 kmy#OP̢8\ ^ZҸQyIaA@oWʻ @E`0ՌeÙ[|> WU-kO̬+ 9WWҘ1F#s#Nפ=W)`0FRʻR`L1F#Py`]ybF#X1SF#TXyW3F#`*+V#`0Vޕ-`0JA+J3`0@!IcF! H'W;ќ9T }}+I#YzTyMm,F#`J@LR08#(kVVpbY1F@IV8 #<B#===;;BCC<ya9c0uXj Ao hX'^!O+gGE^ZQN>8{ w`,h\Q"" r=܆&gpc^!^H<-U.PWZqi@BPEsTȣc2#kdpsDw2QGF-*JJqYF@y ?Wj]Fs3?w cQ/|Rf3xp꯿z'u''ܛ ߝ%r΢rYw >1՚ <W[ԣTQuH 0K=V$`*w  Î951'7{κ> NZrGӢvnk0M=rj˷4ji..n+jضq6@IUKIEl[K@~ƨ 霬\b4?l^^WY:O?T:(?eNn|W#yhӦMM[ݺ&GVo`J{X]FϱDX ^_+tޱg%Hr?2sC=w^ "uksf[/Q\*=b-D!<~c=H}@zƝ{#t__*E7عs+s`05(yޛų:ۧ'?=}c?:Ngf|4޲k^Yػ-?A(röFV85 EvZb`Ч!LG{ʛ9}NahhS}6ELD=q'TȮ1#}Q:<^nͿ-;V{* `0Do1[SB=0@?Cnb/6N1nozY_jca֬Qg\DNlИߤ ,)@DEVf]:Z5lr1!E*W Vg`0UM%ڳ6v:Bѯ4+3S|N >yGӛ9a)ꫩ檾mރPo{Hy!Ez0{ :! FkՙR7VzQ$2ȓpʻ\F8v"pMϾz4zߥgZ\qr/sZ ٫ m$M5o=^gwփ>èyk0P+0;ekko؅=ir$Caw^eSrz6 INCʃ@y7]5hN~>m0~t#^*ANbozn(/ByP#@R t EJ*%ٲP g+2dJVa@y箝 KTՉekrKWvy\;ؠ94M _>]M}0toI4=3YN;?Ey>;s ?] s*o{ty}sIn &^Q_DC&j{(K~M8FFrN B+ >YmΉ<| Qc{F%u}gl}qE7iI{Y{;h/xS [Jb \xal7dA|Q.7v1?n9$JٞhS+ɞ>*Ikf;PncA:/cR$y+ 4kgnϒY xgnMst;vd-E%5‡x3ߤMo}rj>7iu % )-`"[vw3'%a{~($ xpxۗܿ>[YY MyXnE|elhBGۅD,Žp<v2ſ˷ Ǯzss{VB f=tq0j2R)5-hW9|IדYb*ZQ\w/b5~\Ѽ!::-Y7H B;Rw D )l/(<_ޗM6Dlv^~3öqb*? 2,M7c{ s./#hhf#nddL:3f'ZJ,T_p:+H;=S ݺx$|r2uk%}c y !_N qsw= U:4⹂[!R^d:(ӳՈ-:7^޿|d|fR'Ӿk870+:2 F:josҼv>[8d7 nfCj ]=7v.|Hu ‹MP篌40jtI)욞8'+}7-uM;P8V % 5{rϚ+Ϝ.&WkVS {M]{3?y^M" Űf#YYiRمs-d_(u% ܩCG!]ՂO` tNUgZfj*Eh/gv6f OzKrtԅ*gI͠ aUV*DTf{)T{Dk/m2jFe=9#Kzp]eV򑥨c1^ #o#82 5N/pYAu2Ь O8@,Yz+e3}ua#SҺ%QJe'>뙳<~SJw\-Ő05^)r<$ERעىTF.ų<lNݞh.@Ȯz/4iYI,NYfЗݖedf2{\g&­NU_KG"*Υ .u[R#RrSIPK: }x"#(e5wt&3|/;+oH Ԗ9TETU[gt3,J_ps[bJ K\{۶".Sv{߰OHX׎`O>;&>m6_cU^hJoqdgX/C^PJ"sޑA;)~= (2>cЭlĞ[Qdi0}=~h:Q[JPlGB%,z~'yr[jlC 6$=^okՏ ny\"_g>'O'([#(e7te&ڰfgYM :ލ;67Gƣb^TC#[ǙOrhf:I%v EqMX`}9v?q76uqa=\,g"8F ETJѷj=!n,9r "'.cTAlJmqV6dg.``4J.Y[gs\ !LpKI)!Z9+M޽KIKf7h e rݎPQaNNvGo-i?!a?7Jhan 'O߀ZwHG1PJyÈ#̚|3ÚrXM0n:l > Z|N֐s3%@2HHHul!>nvJ2rut([Mk+еC[HLݐao"ZοD oEkcDljbxy~σנWY &bȡGj]y'sMޖy87Kj7:^"_[n~gM0dT,Fqb&SCa#q\+%#1+ثe|!adZ$JM2:-e YlC]  lF}CERHI@FxzE-Z*# s5 KplVJzz>6l_va˕Fc5 [ m}/h$/%6hԇfzKn($|QuԮ֪Sja|l.\kF'@+[jTJ8?F#`0"|F#&&qF#P?0Fr7n q_rkɩ=mMqԤîPoOH,P_LQza<Ӵ^QAp EPظ߼q&?b!& f`0">Ɔˣc nj ӈe줝klq\ƿ|DθC  tՄ_2qNXz#X~#N[[7A VbhʻbF6@@:Z ^0e۲CWwofC e`#NԼ{F5{X;vs1H/MURbӑݨVm\u6vm1W{!%q,1mKfF()^H@cSQ1M4`ᦊ,6WF$$qmzMݛ*H%_}n+o;wHzh]SOQac Esn{{I6,zqClsuCiQT8'77uZ 8mѯvTPxLVs;$ʨqtn 6nKHNYM}nط'0Z7>1J~v4$#kz62bJʄԤd AI>>J{ J@ R\[1GyghF6CP .%̉<|Mb튩.oc)E]YqO?Z7R?T0~3r7e^^xEڕOv,cE0y!PEB 2)4F[Unj5V=v3̪όyZ'1TPʓP^EPdy\N!E4#M3sLi$2Tc=6eИF4M4,C 㱿<Huæj`FϘ'6Ϛ$:]N5it6XW ULq9ak닅tǷtcͫʮk_W Ʊono輴~w?O;q 0o?§a~RhձG Mְ)=KT$ M0h{\ƴwڃ\ݦb+!þJ@)oMTkĚ^D7==Z1'D!~ٳWn?wv{kkk+g^loomeht!߯YDX[;NZ}3DJENῑ|=Z3u/SܯwܝUi=߄TTYJE*ہFSb͞=v9~pp4cuύ9ņ~12s`s{8V#ƅ"ߝwj6fM3ezoҴArU `91bXNҞ⍆z%7tNBl1K3IhS'(~x,N"x5YK&Ȋ%2 wlQI_JQiu&Q!ޤhB!lLC&1 ! W^˯ǟt5<;oRs_d 'ɳyLf)*U<_Baf" !ݻwn5 f$ %=0EcZ 0ӾwxoSR2Uu aVIω8l_,ytػwwMa%.vv?622'^~,yQX̥\mmG*`oC(8VlLTTL2(NsCE7qCQ@L$̢& )W0թM ƶcSM!0&LW`L!t&k_NJi[aJYO2:'!si Ydw7JS-,Ī=6K8lXׁZhsBzTWlC%z6B.S73هSI0'u޴ JUڱPp4F#P3MʻXG7l g#Bs gኬ[W*g=sVwoJr Ӡ}{ɵ65t% AZ\uB_%+KA1+5hq9x\|tC_-75®-^Nj-fD_G P;@B@Pe5TJ0.+`QEc* Y Mr!ܖi:֩[ӨE*#'f_vƐ&_vWP;sSAĩ-sDrhl!Qr|bt_s3CNv |-PF R4FNŸj*E (]da!/n'cmRހSگ4xtizC܈owYX9/qsl@8CJ&/t{}6,*G!Cnݸccqd'}?S≜_WIsT-n"|JteEMp %[{{cΜ^=d tC&+ZYE(ݦ؏6[PP(! yls2V+  c9|YF-THIi7lU9xد0ʐԗJG Faw6,xͮ ut標KwPZ{A)ҟ*\uS0>7-R,h1tԘ<AbB:D7L}9/ɎtU^7gY-jTr4wod_bhl+e#@IDAT1Irq|ckcnW2l)gV`cT?G;VZF@1kYⲸ\@CXN2hU@EII+]\6UbaBnk/'{gcJ@(ѽ}]v_/%l@MEF\0b^!T0CEKS|.,&Ga˻7O*$I|N. #$KZ[B}!R< ĵv;F#Pv45:Y>l*హm * a|Ѥ-@X<Fv#[] jw]BzWj1t 67]K:oNAA(o0u4Դ .Ύ IEp|BM[FW#T<YYV| ?G[ T&6fWr.3HMLf5:E-jqdДS "Wu%UQp1F#Pw];XBv@8^в`a:1Ec gP`]`0!WOTB/'*\UCj+R3עDkQcaQ1Fth UNy.}I)VsvlxagٸqOy>;qEs?=F*=#._Q9vk¹vث*o"gUܗ ܎Z@WiA~-lTLI-l-pV/;nׄjQc]jM\@E+ooEo{zk ;8kgwUqٜ.+]G{3JLikm"YvYZ#PSޝ >9Euhl}0,ě  ++plN`b7Ghw秵+2)ENe3XZ*VZRyq˛ 0۔g٨+\kO 3|??`:/%eܰNqR8Y*fǕTu`})M -S]2[Mܪ9maڂcOq?O[XW[Z=n^aj&uS1mF3Y~mHe𐆁>ihg=̹>\83(k U'&Xg~*Vy. 㰠ώvW% Au+?+z?y;}PJ'7jihhR쾰l247p-rJEXSTlBj 0~.^NV)?V$}O[jR:cj̟*4q6]ľi1i5 q,F#P+̰62iǙ7 Nַ'$NoQu 6C@Y|ܧ[.{VX0jA[cm1<&z<_Y>܀| xҪOܣ&Z]5Vk1@#G۹_y͚ [P{޸~#wPI\Z^@AGSWzeS^{|prԌ:0"*kւ~MTO0l^Mb1@!op_wu7d;LK&}kٹsgqw> X|lpAA䶓mlmO-`Մ]lfݹZPH 7 0@F@u1mBG'P5v\Ttjӈ "C$u0_bRQ8_N񌰠xL70ɳi1!ݩk7>ʂc0l'a0F P@y9_1A!Lp| IV#lhX`T1UbVr5~'=;sU6l1F#P}%OTRH&VB!hQmz\IEeH3MV"Bэ8T`]bFHMVm?ڙM䍟hso}A$k?q+ lfx2WqIK nv$aWܛqF#PFT͏=yFXS>;eЭa m/=c~TZ'td8`m!:ۚPv:oEj"dTl-Ѓ){wmب)1TYz ]bF`hJ9MMF:N9 Hvu1o|?0rB^hҴ;[XR򉓓pXtd\QQqLE!oQ%J%I}qXq^/J/l%K7?z͑[)(0nc!Y}t׳ piNIϥ禇fEmav ^E$ݪe4:dJ9T%gT#rV}**SYPXOhG]5t"' #jDOCV*h/Bc(")݂%k]'ҞiP;k7?RJ`&laݗiK͓/+CRʛ|WODѕ"U1}gw`ˆq6 xw$#ٰ\cjB }%į۵mѦ=ڔs8*,SYTK)K5HI[U Tʒ4%pi^>;ij5!9ɋ{1VL>vJbܗ,PӟcSDS# f8s׏BQ;,^$Civ`f dmڑ ~b;hQw.3}$܈ CoKǎ7R{JF r??rQ-~l]hPpf|{'T|Mn@D@9KILLI%_bfg}+~KCmV7b63y|d ;3V|M:kb ,a t{!Ĭ6/5$FSܽ}&Jw0U)g)edQ0$W%P2aλX'tD zo7gI<;s#~chDCcs٬!EOVaڱNj||YxjoM Qu|u_\F ZNe|yt4 |٫Nmn&J#5XIQ[/..=O5ހЈG=<irq&+t,-KτQU HTrRX9O)YjrbW}**T%ވ"c"A#bDC3Av9W%`ۖ"Dž8]z9"4pRv&#ywwҍ ;p]㤞8>cw6<_ZI_6Eު \ԑ`u#\47A͖-œӰ-:dtIGnZԉxXz_<-==]>}dfNX EvXĥh4m㯼xq\$c7mڨ|[iUYBYaJR`,*yT%P%UZi4Cڀ%ZiQGzw9+3n~={I ZzR<:HJی|[ya !  `# IHIEk"i {QMl"OO,OϳSO=Y{={] 6W% Aj &!@ :~;;--!E"\uu6>:<<\K䙛<ӧt=1b d}qk-WƐ2@`2lY[﶐ mW4?8Ob1 }]<Rh1!x{y#dg@Y][nyD_v_)^-b1@ df!Vf:Q K"2ܼG)G 9;tI [)KJ8b1 p,܆ 4ck {1޽KqZ衜RgzI>&Oz*kYp6唈;MKN2ޠmZ95a6_뮖ķqB?9 ;޽ :Y˻m"|2vm;jv13Ns.]}8C.3a_K-n.6qL|'rZu;6gzj"r r"͈b \Ϣ[Oaf41*D LMN7۱zOoAP}*옹;q2wwrH݈vgӞH8`ϊBZ7c?-gޅ/]ehػKG>_Jn;֓k5=iQpV5Vk@k!?;.v}-L^j#꒬IAyS_L ?D!R(t_>-`c_]9tᖈ*fɘH!{[-Tgձx]O2On1 e=\8q@l}># b[XxيUOL;_cO:=y\>qKW۾xj \&χ̆еhVͻ&qRvT]oO9]]ѣnsp0[eC{mKViTr.f±<H2 [gƕ9gŹXct6UiRpKTe[>^Հo9Ih'L>A;4P?s:O[3:Wc&~zFj:vuCHp1zuwQ'~U+('_)8}lCk]lZ#M‰al{nnm?ê9'u{t }U!u;MA4lڞ b D-@j %qbk SBp+?9R2C k>8/^D wu28iعJ ^=HJD$c"bi䖏~,Eg9 Wnݕ;=D D.m6/(zdp%.Z}æ 8"|B8٬`{uƼ*DRŅ'N ")smKg>=|MbUhfF!l->5k+)...>M=MD T;MK`C+t 炼,t-B~b ,z 7 ߏĚY5 }{{?_˔+YvO360PU 6fo9>~͋@ sbj?&}1\VAAhZځ{'OCmW3n[I%|{nLBaœa.*Hm1`aH2$**^WMI'>ܯ1A򴺌\m ,FoTv^ ʀVcޏ}͋ kC爁ƀLƛm[KT} 2?u0t录}` ~y7DD P"`#޵sФҼG`H/fՌ ")E_>3ѵOI$^uSU-S7>{+҅O_|4Gnx.d0h2^LU+t|gD$G ^uc' \ PI=D kCW@7;Rҳ?\xF;i[ f=;&{&|Nu[v؂;HKf,BΦ0B~[焥vάjM%.=MiS4j!Jn=+aݘ0v `Ӊvu 쮧&<>7*(J;> {}C; o~f\ut,,F+ɉ {Sd;b&VCcs^}ԟkT6@ | 4.Či:>.zi Mm1τ4祸C7~k%aU˨tƿۼp<ΤUN%^^鿅pzww8 ۭ`Kli[4M@kh!䕏8 GO/-+:%13[" 3/e||/$x%Ow7Y`٭&@3& i˻oj&g&`F}]L`^p9|xakM¯m/w'mHuʓ?3␵'*'q 77{>6}y lDq\O0f@3"z=%m ;8:\CfTTz)TttSVA-%UŀA p*]PمK(Ѳkl `yZ(`A+#saii)29p?"5PRQQѧCdŪ7H+-x4H?bbq{?@̲E!w73g7x"-9W?ϯh[3]p@c@yUêll{N_7C7[ @ 4dA PVשj)v t: @ ȅdB#R@ D3)!7Ȁ\˨2ޭD411Ҫ?dHuk11@ m)jޕp `b1 W=b1@ e@b1h~Py8yR@  x'@ ??D94?JQ;r Y*ƦF‹)3J)55 cs9gc@ Z-l`i*4qJD4}$JZlvaT$ż[׺[,ԜLvKvi|G[UnX,0t1 %ͪy3h\p$\)oEkm:v}1q5;rmlȎ85X펀 '͈d oRS}KmGqkE#@xSAh ։lDaE&y\-=B>)UErBV~7E'5}P!9b@zeA'~=,)6׍kBc O[qccz^:J叡μ1cSot 76t#`E'ٚ0dl]W >%c j {3K|ASNGk2׍Bf1'\;^rSÂcEѳǦ̌zuAAO60/V vs4]>X%P[}mXo{io₡j n}/bqk쐵INK/pL;CCmoUka12}S~clI0 vuքe^^KʚۼATQ9<- 'zpy,fe j&-kY?lI A9,QVfd ;Uu7栠^+bޯ%@.y4r_6BZw؊{+=;bUDGQDIJ԰3iYޒYz›?J{ !zLX=껤kU'=lvQ%=]x߯QxK)ES{P(t_9s]|OBX' oذݶ&Eal<Kˇ6M #h6Ό<[I!us#pn0O$Hv7t-D#+L $ f,|f{WhZ))/_C;?Ɯac>g廽Jf6cPOg>]OSٓ㨛߿5lZw'gRMn蔳`_] uA}a%EPznvڷ'7/dg i޸}yZ3kLhòU l< [o{ >'U0eSƾ:jT=OR&gC_n4fJL!0ar*w!vnkڄCqs L>t8;:{1`}H/e{[ 'Gpӯ+~c]2c;M9( uwxYv{wBΜvn4QNtg&e1>SݥXfM 6k;?v,d?acQKm-Psփu1[w8=FX;?:?z䌱WJ^{u)X>đ[F6(ti7yY Ň.HV@ B@sjx9j.ͷYšZ\ϼH5YԜ|-z2{2(8  A${+A[B46Fى[qM5QǤ#o>Gޝ3ck ʤ.S#a؁pa߿z==j\(xy#b6]`@4 8޿l I\yE0i 4хaG.S̰^`+i:k_HO>;s:z~`$uRgIu:8;;Sʀ`KnA|. t2fp>pO? 5pwn:9 {h-F_j,vB;Y n_,"4V-89Z}?B4TkvƃJ+HhLIy̶cփ 7'rw>p;CL_MF&F7Wn''7H qt[jEiFMŇD i5,aTy(N|ETq})ʝ=&?a  e =l-#W}Ћ]>t@hh&`ԜI[N9nmjttQw-s'=DZڟ=#6Xo-Ҷsch(Ko 4"}즫c$-|(/C^SDP)?9TOVEˤ]xW,i;tU~>*\|vNExϿ 9Yɬ"WPRUR2um?gl.2j*)Yt8\@URE_1@(..Dyzz fP 6QWx$6]hCU12?ˋ4P1^a]R443xfJ%e## w#2S%8¬D8%'DLiS4uEI` hh,Q?|z`yPDc+k bk+5śe.14v  Exj̀miRG;~'&ZZbVWWkkk.<<\X+KO***Ə/9M~q߱\^Äu&Rg _{tBQAmmx^ZZ kإ^X2x bFC)y]\CT602㳿 XXh`jD#ӆ0Q]H;f d)"fumk|CL\=I:UQk&Qb[ҕյE<;2ްLBD`F:x,砑ze?7D5K'Lcҡ$ }:HnZ2wpoZD(8bi3>ѫ8?X݂ q0F.T~ zY6w9+BYyARC-1\SY5GG?ڵ&E 6Ѓ.`)[=AumR~Κn!Vf;aoG:XfZ cөXw^Z<[j:t4ͪ>r3?g3TN>7hib\Iܲ3Iȴk6]ܕ KJw谏O5djk=phWy] $cӎSڻBɤN;;qnn[/b1,&]=wlV?1@ |; w-M%>+Qp4p8Znxvazrfpc,L@uW#X{O*]2>+CZ:#'  nʔZvd zer􀌷$"?b k0$Om] .rNW]l GA(~ҊR eZ9s)rA]P-ݠ=9h:DbuΛda,v..T(U3]ssr%ITax Āf?w:VK&F}L[LRRƠI-Mww$U Qr0;@C_B) s}O@SU’ɠN)k 4q0ުhn^PPWW/++-7ڵk1-H&6  ^?p:'?gwoJ@}5g¹~ ?ں"FhphtbBw͌r7JFT̪lVS -EJ$E ضmmM}W[[ _P)͎ յ\7ǰu\S[ԶnZB=۬ZЎꡅSl8g5}_V×R$'%xK4s>f@Is>cuXSMwB%b1'zzz֭9rf-0ۂfG_Mb7\Euh+Xs0px5-gAML:|6_VgUUs|z*fą;^c[8/8:|BeDdB('?3kct n(b5WW|A 1@ | DDDe5AWUp@IDATJ(m !(zr:{:i$<{*mVxgor 7bB/.VRYی7bpww߳gҠنl"߄7S7Ϥ6͎(0bu2tSMSXl$ P (e5 6^SBɠ4~FN)1T45l,9y% F(N0%,J!"SFIO,F7 : APPSӷ%M|Zٴ X8i5&.e.6Yl9 ϵZ?طЕv4|ao:^] ^PWAH०!C4%\KRVf{N{64m^H542'*?'N#꒬0A4J@E]CII<) ?o|1YXʆK3?|30hsU'*3XΈҦhޓ($$~@0I*Ag JTyU'x>U\Wc>QWBg\\KzPbfm06%(qMζ>p&~ $%%ŋZv`w#ُ|ڡB/a.e9zcBc +`+I:巿pw^hۜ?8{KMY,Tڡ;̅ɢb6P9v\;G&wI8u)Q)炔in@x-BEGK8Vu~W/{uVj*7 @{-!DC xb+YLE*& fcFMȿi'Q+z;$C .un7cUeMzq,EؠվJв G ]/(9p＀ޗ=X޷olmB.-!1,M4{-ggpx)%d{ 矿A[!DYOUSH ٹpuQ4O&)%P{#l;9<Z/Ke '>8/"G/2KIQwA1Lfd2vQT. FH6vR2vrs4U6d6=Eȃ $'J|y,ܿZh2xylAza}̌!e%8v{Nx* jWy^'vܕp?_)ja&_ [pUS4d'ǵws|nҤY|'Jc:YWrkv6E0]W G^Z ={." ɿmV%$ oN[ʹ.%rR<4R-1SOPA.PE{D"988MR1,>V 9$v5߯sd1ʀ&dmJx$#bq/NJcrGyΜ4S<̻UM8=C\/?@"eǩflKJa ͣSpȚszEɮ.〕-GWPu"0"i'1&׆vQ[[v%Ze&t@RtqT:${<(zb=AcSZم3o('u=پ5 qkf'TlNvi>EPT@ٛ}:.&/1U2x ,:}t{EA;?"`sgY.\8|! Dyr6s\-f2ݴ F7^99:qXdŮ̸^SPUu퀛K=^sKEraw\VOٴͻ>7O 4x3s6o4[5U.+Y\8ywP9hMA&Q%|~+rA@'BhZ.E!>fy"K#w~2a|)Ʉ se9k*3WA_l,yrv?[ Mn| T$?Q~x|qՇ' ?{^QYqYfO$!JlyR~6grj^-9ͫԬD\'I\O?#3*~z>jrDrN҇C1`z?sA^:l!ͽ{iE{_\>u~C ЯC+؎oMΣ`9=;ZvIwiɩYs[Mqqtt~rsodR2O~ v{;Ox /hxY h;C33T m [6>sL|̹x# t暝g>7>[\ /;$sxX?E))P~sы2xٙ*"{? ?alcb5X3r_J)dr)*/rplMHU= P:`ET6mmFgaMvJO LfL5Ƣ6`l[CM[ £K~]$( M; Ĝ46<"o $- B2^n~@S\n@쥣_:5p_ț}dD?M2Jlao 6n?v,]ku?&,[`q[Wc}E^}yD `aaޑ(߸~˅KZ9 {0Ǐ;wB%N!5ͫyn:V0- ЕVMv//o lO#jE]—fVL9]G;C>Y/|u&܂K|L8x+^̻KPǐ@y$9fc_\u3aa$'J|ycs.qeL];,xDb؞;J`cyOMr+ _wE1СySN =as'RGz4Y0sfr9k@I/z%2YpU0wh:oNcPPOuZOo)v̻y.`<0>}!osn@}4|(5597gEc_vtK%'7p34zNU뛻*LKG*dɒ/ &\0X!];15~;GZd%.*x`a&va,gOA}gNI}g˦){Zl]Aau3.3NKgSؾejv6VT!°^mvp8(ޥ6`޼"`PX7^ xp@$g/GdS FΛc懓jwCcX/GIVi\mD.o0Erлp'N =vM%״UIO5"aݥ8e}́zQa!ΰj^ЯclFQz؁Nj5"W{i`NA0濒Ѝ`=b0J  ;p6BM3PKI[;rDJ_;: –_n>V؄-3W(7#]€`lz7&tzLk}U]_]5~vr'''7ܸƕZxcmHh̀ Rc| 3pBjݕՏτ4祸v F( pZF9Eu's'G3+qg3܍nEMwG惬8AnyƜ3ile}Wq%+d]\blBA x"N4fJ O;w1ow'mtcG)Yx հXĝMvs[^[B>SvfRC|M;`SO5 <9|ƸakMkD(B)J0j9Oʍxϲ ʁAK,z;DS\~rֱ=&vV)5wQ*w=*StkgPbǾzj԰ ߆RP}IvI { "'/3\^q#=b1 /RӋ o=Gl+ʒV'9t2TUjc4h ="%5!Nzcbj`#еl lЈbm091IdCIQkQ3`dH ڄ"SdJ3ZGraC*bHzqgݵfMhwd o& фI?\ &v47Ԭ|j5Y4- V-;*3c>C/1BQþHjʹAuv|>Aˡ{[Xph;btR7kgh֞^ K/ Zԋ5Izx ~ У T&s(̬sT5Y^h#`bBMW X]=S+O߃ Zg~o@)5uhs6$[ cl!UVC|t1@ Z&b*HVh¦a ;\GȈWmUMu8iJӢ-oX }uPՉ )*zOřDΦ.|*Od3ѱPfp֨H$p~% v~vR:b13P\ˈdeWlTDjBG??6V񮊽[PjlEV0(IJB[**.tpMOR%^<|I'G T;âs- 0*k:t35R b'⢼OK%(Ո!7՝䦯N$@#*p<]D%ٰKպK;BۨZCk* a;9}=Iʕ)źɱH{X0&Us +PlnّP^6W~w (ǧ 0 Aw@BB å>%9uu4FA^^ 2:YtBfMջ9GJ<^\oNp;zNgN;;ki9u%iWد-0>Q耣P[AU??! Gs À,C5(kܷ*޺\mhQdb1 K˫")ƊصDVm-pX` 'P]҃|Pq)]>eq55uTEtpjQSLUE-'ffq΄G]FaFJ&8jjk>'e\V{_4︱ݫ3(QQ%BXXD3 J!)4?JQHNm )o4h9,EcS#R*hv44l_ (N1xQ,h`i*RR%"˾67BCeݲ.͎ȝ ڱiV2͊yj^hxLLLq \] A `5<^m?都ԂRXoµ̨/no? 4G{zM9(P֪o _DrTzr6Ertqq"9 @wl8(KmGq8j}t>J/5!g=j)xOhɺ$GJN,I=tF,er]-Jxpe)gRy.Nz.B8i)Uyr%HǏ르rCzK 喪4x$-TsN3y(П<7ث2:=nTYTccz^:J@}ȞOtzay3DbbfWS/ʈYf"%c<#ωۇ163CT5_x9& 5S.Jhhdk46~WDgH5C#D5oņ΃݇:ظRqcEƩfP7q}Ie&,$nyK Г3h 4x+̌JvbqrwgqDPN(\!f*UMƃep+ЌY.D+w{yr2@U(I`WkM8>_R֜ wQrTr8RBPp~75̔cKy:LommEcnGDˈ.<ȼ9((؀kq1ȾJaBj}Ƒ X!/g HN&=&*lI:g Jbfc|E]k\ I''[O`O_++[[ R<3dY ]}yj󄱇cm6޿aIcW߹gB7-l4 l͠鹽|vw.g@({8*󟱩']ɢݚ>nOy .q18Hh 4xE^Qj?ʑ `UIzX! *&lT%~X>g!,#c<`]R-䚍3G҉s|8ewnJ_xP3l-rwrԂq=sE qeKXOn#ťy(qM$QJѐҷ/4?'X8UyqLZsKLg%_*q'ׅns.~OO`tsW1'&y阹hnn:}`W.lۃ;& 0 \?+ׇ7Z"߮=v_ +86PøT`]XrM_ U?b(D1 }bh vZ8L) P!9*v9\m36M|Tp(6 X7eQQس8i2T+ pzu ^edw}F)9<45#K.cce^g'B5i.%|-lD+ojS7w>Awq$ocԮ8.7xM9VSJyQNtk&|/ܱ&~nd y l`ܭU5Z>< gW'j ]2{ȣUtA/C~r/̵KJ1Ux n;ăG i Z*w#'-WR'9xo|A1̓# !`USF235 hdӫ@{C'}DܿkP  ??R;Tg+oJr$)oڐj2vmHum2>ل 8$kDp%CK0xouޘPRTG6339ECTԂKx5]Bv@$?$\s[: tr:?.5^:( 1Іh^9O ~ʃg >?{Dh7?wL` T̔p۪x<}xfE(z|Ih2giX#&`=`dQLl< 92!E=}T[G0Zn4h#s #ɩKvUGS+6Zڦ]ɉWD~RJ._ ]C͸Uk?+l5(pCL>W&Mg߽Jaþz8{ո6QGVӄO4?n^gktB)+:b9L=(k" A#{.+zOci\Mf}KF n"]\'{>@@cY3s[S8P_-AC6ab]]s-hpj`\m/w9E9 ~zkAɧܗdx.&GqQ! }MJd\ e/NؓXK(!GQ%$\|{p~Vlh|-+/kEdw3D"l@闚~zu( 2⌌+c bO kg%c*a~xjiP`gp2ƒ4Bg-1x!s/taO n[-GMpSD[8櫦=wb?+5PzN(>򶈙|mwXa D&vk±p,z3 ͠R3Jd %;;BşvܕÚQ_) kR3P8̛7Χ#H g=Or_P#ř_`XO_Whbzz"'exUw'$l\Ž+.زzbe sf ȵ L,Z@16hfWqJwXO veFV736%yEgc/NJjr s3'MT&/tU1CRlUFid2(D^Ju%=Loн`Zt2ƒ4u77 ˸nҤIM~ѓ'fflKJL {WSϼMwFEEKI +$7/ RB!)KJоhҤuI{3s9=>g 8̥O>k 'UԗtĔJnX*fDD卣]ӓF;5wGemos56&=肩JE'=m2# h+oݦdF!V tn]=.*N<Tp EGvqUԟp0}tM\\QE  6֎La_|k`Z-gN[t_>HcuW% 5fWrڻ- ceҹA )dE{|7Vq9jOn=v!DqȬo ⴇSx:PG^Ö(h?vձhOz_\ozc>lZ*ҳq.4x`ӭE@6A '_aoz9ihp: f3oLfYq+tQ"Md!ɛPT/?Nz:sjC-'|:BY;.Zv_X#i6qnwb dyt"AND}5O8T^9u΂)pl-14XzQwY Sܦ@F5]l,sP9~c7º BD}~FkĭixׅFq.N\~OpWQlOfBp 7])*~K') BJ$%^w4^FJI(0BXˋ^>ClKX@D63VK't_ZW}-Hv j+_-13ѱ}W}tD^ |yDʃ6KrCzR д`׃0 6roLmNSMWf)(1ǃ#pUױ% =9 <!ņp|m&@} 9zlwwnU@mEI\σF{xĩ*3x o0G_B`RkJښϑpkz#(TD7]גߖa,AGgRQdyT0}aU48!.C=%#Z:gtxD!N=.1m†wfl`)dL*-94GeW"9ƾљd >i ,h׻2i3;b :Zսpqj>Fݞ,WMBobWKM5߃(]p9c<'ㄒ&|x+o_M`Cp**#Տ9A:sJzϯ9+N 8tol"ֈLt{fR桛RZ 2玕D#TrI~ >P>s٩-Ne1rZ}Mv0LZ=k<$M)[dz'xD"Z^y, 8BP,8ޮ87P/=)pvW|dVLFSw: ]? t9Lz?a%%lXdj~'0@7~q!12tގZxP8ua[I{<8}! $14VI UP`Z@ ֏O )&hj1Tn=2hp-ZT(*NHiyYP-&3|Ã9!ˌ:R @SAPA%Łp8?#oc=Q[VCE_c>#(&9R}L\^kfp^J5?1A%r[@[MxnBǓho#Z #4F֠Zo_&/q#n61*BcƵ'Vth:W׵r.,|2$1T,K}YU "dθFtpX; biz&m=ck6?$͡0NKĩ"8^N@sAPIU奍xVU#hdc`2'rf^'H1֑(@CQ~eWK'ԦJ{АUnjs8|vRB}1pVSF),>sԗ0qF­-w+&LO5" Gkm/S9h s+pF+;10X%H[ .SNp̙(c>Xo*qCk--6>:6 0ۋ@p ATܷFhJus[QQ~T λnM逳?0FeN~o&긄J*Qzf-\`_|ڮ)N ~64xjs>Kv9+':A\tXޙ1DM !Hpbg{Zr{o 6×x IDAT6} G;ű3 g妮k 4՛ MGZcI&i] !+ n|S!/F`~XM?lCY)1) 'o atQp;NQ"%l ];L\x6x盦'4Ypx I3 t# UG-?1x&g%#hG)/OMʧtOC, @3z}f}?f>>n|w>r%'[8U`@k"ASuhž,_ޞ˦RfPBC\}zpp:K ^XJEo`.`9RJP UQg`툢;*{)F{O5Vr5~_vP>`Blݒ,1. dqtt 5Y{ ,/m6aFBc!=zm 3Q[o:N'̶ikE` Nzfv5F-Ip!r_9X{nx 4|MY o? -⌻^N 1uJmx04 U܀ʞ o`hnU^!H t {qwwus4frLU$_t 2RuՅ ɉie=I&GX OgK+<Ժzo ۙ'&Y"fV>V8!Xq9[{)$8ȳr9 hN\2M@ɻd\X>8▉ӥ=n<oq}PXF lً J5^YlvK{_#z# p`NSъ׫ڰNs#C=Cȿα7Dq,o@ߣOg18u3c}fH+_--T|q۹3 L`l@]!;MjoY\M2?x/;@VE7)ZYjar3/X\`f<%6VXhJoF]ɴٳ{nW:7]?2?e ^qKZ0]M砖Mf^ZNM񍘝Ո*}w]^Fjh` 6100q ~KMM0L, 6$4r$)9UM+R޴QIO$X|<L4%f^pHɎ) x{SoHUU͟Z{CTU}j6Jpr؃.1D%74;JO$uNK% "Ř밃.((o7TVV/ ^7; U!tuJKnhE }6''GAAŎϟ?P0xۛ]`^ay 11#Q>z Τ|sbƻĤ/}_4. f^Ir~b 4?qy9IENDB`flask-debugtoolbar-0.15.1/docs/_static/example.gif0000664000175000017500000047103314613236757021737 0ustar kalyanikalyaniGIF89a|X-.!,!AO]gv7T.n,?]-,@+>q,@,3PkNdAP^O.hwy-h.O-,@)HVA]@,mIhM+pg>JJJ@@AXXXUUUR\Rt\Wggg}}}sssnxenf_#</KVKYben(Z7{;w7z+n=d~7zNtY{JydYeym{M[* +5$>(ARX#66"74\SjynsIOPJZ[jmxlx,/IBS[V3k2Zhru&n+mZqfE?VM_VLCaYge{5yRowɇ ɋ:ߠ !/#ΓIϗUəbףYۨe̤oOSUzh.0}ّΕ⯻ȀĉȋԵ·׬Фіؼ׸͵㗕廼羆ȳʌ͔ӗǍܥֳȏ!! NETSCAPE2.0,|X{O?&\ȰÃJ"E^ȱă;)2B%%$ɲ˗0WœIfJm~)Sϟ.;ox!MT)SN*ujӧK^gԥV‹ի٬_V=lֲކz֭ݻ[žj7lڵ>wյt _%+TnyFF1]eLXrfĐu,Z1fU Z-n[[z1iʗsvUPcNJ_&k߱. _wW<¥vs~N|g?u;l~~'sHwZ)`yk u)8o%W x^`ņ^Sivi6`~."XՅŧe^x{Y([e棆nmVx5Xt礔MHQcnS"EXZ#X?.i9mfhu#O҈T_Y_E(0& ii2)@*!Fލ矍J*-8h}zyc+Z*Zfrܤ&%ϧ~꧄(7fpjR2{l޶u‹' o nu/gmҫp _pq,~pD Blr4L,h0hhr,&l(λ<(m.jvY;dn0bڜÙrݵXw淵rý6Ԍr1uY3CmաߕN{AϏ> ?0~|ؽ2d? /P`;( Dv#'1]/zs`'~@ O( Ⰴ>nxA F7[IL41EY1} _N A%E P; 6:/.`"B/r G^}ܢ YC^. c  6J҉oa 3iFNRҋ)1i+Ñ 28Ԥ(Wюq^^@ &gL;dJyӜ.]Cl%Sɽcsdd8mҝ)(ERRS!#IOxPYl>ُz9=kewPBF}Y8~FjPrH2 Rť^|R1(?wsLɹhB[ʭG).1:2fA\IB2?, n59-CM=/5ńwk]{׽5a=!N`Hh1+1CN5v%8 HX5jY[MmdJu5ͽ.gぜ{:DpM~` Qѐs-q?Cr!Tt яE@ЀbѾ|B=6 س$Z=c/&{Ԙ/ҲRfX5 s*.z(j|0AA?i7TH/:>Ǩ16405 ((hb*(xjP@4Y 1+?]Jz@Dju{^"`]Vu^jNE[{AR ( 6 5 S zwx7sWw|'wvv6xʦx/xy*u{Ky=n\^g Oe ^LFe=g 5O" E|u %UP`f%oXw^Wq g[aJ#}g^t} ,@  `T>`O> p |u͇@]S =ٰ5QX(uWV^$DІwu=o\HVZfuQo\ܳvf&@ 7\&v8v(3880n8*Uwl"u(\cKG؃GmTyIp(*JFgvge^]a=\f㌁(g( yI`p^v GF]?dTvT4`>U o`uM@ߠVPT -CבwrfETtt =Jq&oC탍6AYo>='ۥCI'p " |)y t |ɒِdlwyi cАIZI^ot]^Qf6֠QҨo 6tوQ^C $Q@JE~i^مEfOExk(I^&L>ʈ/:}=Z=p>=e\3s{) eTӆ>q0X 0ࡿ w9 SBfHhc`Q8gd`\'hB`|ƗM$z?ԢuXdhEaT (0IVrJAiCpLD' ^HE0p $.sbAToĠjspfJo0VjqYO{Lpf9>e`gD;8ϊ@Zy'(ʭzxKJxx7gy|IvCz|uw xgGj_ZȖ=s=O^#UZ& ِwpm9h\54?g04إi@j@0h@|8oDZ3 @HP |ɰl@oX{n"Z6) #p 6 {P֊zӐn >:Ħl mJ Ю KnpCK:t_Jz8D4AC9Qq^#jgA ^ySYKq6^:'h|>$Pڐd砌ڟt p P= p10 :ԳT # e` d `\ŸJY^īk> $˹` ɣ#: q <LSi b"Fbz j .c2 0! ;cdd ,u[EP e4ܓ _P Io/e%Uh5K & ]."`֐K Í q> }ƻZC 0s0P> Q`}*K  07ȠAFq1J^t?WK !p װ|YO|d tU]obMi `P ̭5 0 G:e>ҐWuPb <`X ذܸYUY9"co@JO aDg\ \{s K"ِ j3 д͠#=m Ʃ_J(gb?wM t F֜ 8ʷݬZuT `;?Ȭ! @Lh}<\ ,t נpNp^l#,C|r>-qP&Km Ap-תZ l tMzhg]3 ]}?hF\4ܗܿz֩FU,µEK `j ˹d%mt$qܢRNWPЬCg}ra#Lp ]moq}[=H+>M>qS[J-j ]= } οpi(ί5 .iK1$`-:}GL|Iny6zGᶌ0g{C0aNa}-y dr>t^_H)$ewN5Ujl>VG3eM%ek(>=Օu^[蚞ݍeݽ~u/%B}3-.f^?#HMv?c%ٽVV^NM >sN ^` ԰Mxfk.I:tn܍oۡ.ŭ~&*h..f^ ם]} x~hN-~ ٞ-:sw笞>w֐w`jHSnKlEwN /E>AO>whB~Tkn$-K />avjRxWUfz#w2_{.wܾ,Oм7O7p ߚo J 0 p/  +?o= _?@o/ׯO.O!L@a 4(A lF0"É+BDÌ-~l挚k$fʔ)aG;K1^HQ'Udѓ%KF䥅Ϝ]zuϬ!CtTJbɒDѕlͪEjX)|*gػzInYK>M$lm2[ɕJ-xgb6i2k7{ڱQQ%I\_Qggfym4mjn\W7t]ywfNI׎n{Yn*ū兩md'7=G+:B[%( ך0 .C.GD O9V\%VDYAo1GQ0j0LH QD.qo|(2I++$H#C-LF'uKBJ0M5dM7$\IN;9)E?AݳPE3OD3Q8'RK/C75B!3H=4SS/UOP%]QO%%VWgtQUGeTOL rXa+^=6C&ZeL Z6D[o5uZ2[jGgewtM׼rm.Jq=wuۭ`j,8$;aUvO4ϊ)sb<nc;8:AdMxK^Y69!>YuK}U]q5Zs5V6yǚaFi6q&Zh3YAziZ_FzlT:eom})n;oo{'i G<O;oƿVx'xG>ygy矇>z>Q>{>?|'|G?}g}߇?~秿~??ЀD`@6Ё`%8A VЂ`5AvЃaE8BЄ'Da UBЅ/a e8CІ7auCЇ?b8D"шGDbD&6щOb8E*VъWbE.vы_c8F2ьgDcոF6эoc8G:юwcG>яd 9HBҐDd"HF6ґd$%9IJVҒd&5INvғe(EҔdBVRt*[)KXRe.~?ae1Kτf49MjVӚf6Mnvӛg8řMgӜDg:չNvӝg4{g<}3g?BxԠEhBP6ԡhD9P}30L|DE:RԤ'EiJUz波Շ2{Q1VSԧ?jP:΁3@jRL4թOS)ӡVժWjVUnӢXRԨ59m4Vխok\:Wծwk^Wկl`;XְElb::UMYT}jUlf5YvֳmhE;ZҖ\kȖe0kZֶmnu[ޚ\j:LQjZ[6׹υnt;ݼnq*YV}nx;^׼煫uWTQָ-T M׾o~[XnT>Fp]>Vۍ{pY{n'Fq7ص: Y7qwYc] ?CGFr<;]q{\6uIJ-񒵼e.wY,np3 F9Oje6InS)i6ߚ߼g>M14;3~Ft_0_7c~)?YSPc!5iN?W}+:r@N'n2{ɌO*SǴ9-h TbVfaV_=mj=^3~3.MU"8@w-A鎂=oz7֏=;|f+>8a78*6n[PzW;nlm}U\!q.;yuc?ٞ1T=>UXqyHyٝw~̥>u&̢mhLۮucJǹ7>W^/wց7ޚtvNzx}RExC5FL\ O{.zD}u jf0ߑw4natҘn'Ȇz֐6rТd}ԇYLlm14{?|}ƌd '*2u+?p+0,Kws =:z臑+9Y;u~u |Nj2Ld}99b 삶Z|:tsB _btkSPNo0@k9t˂n@k|72@06{4nsa g{@i@dl8yu3=%uӅ"c𓷳C0x@4w+@1DN1} T.}&'mjͯO~AZMS,s>Jfq@}ؾ^"apWڇy{ͯkwVCRx(ЁDRڲW|eX/0xQWQx2=[m؎EчXx HXUY4ݼz}pD5+ ϕY}TA~:5+RFoQp٣ǖu4Rпz~қEڪ}?<0Yܿo+]">%}Y5Qtp*U3 u{ [ ܊[5Eܽ=\ŵ|(b(2]+-5\]%-5E=U]eו'ʵݙ]e]]]څ]U^}ABI#&VC-ں]-_^]_J^D%(_E_M(R5^e`u`^`7 V]_]M^ V`a]>a5_ك(dcM[`>6auamFnɵb$vb,/)F`3FVf5vޔ39Vc2'%N &>Fc->_?&@.d@&d%4(G_'>[˄~hhNƊ!<[Zn_&c0)c `Yv NEbeCVd/e[~FdJcv6)NceU_VU>^eW]Df`&daXebbk맴x[UT6 ~]g`a~ca`hn\݌v._&aEi݁;熎ĂNhi7c*U~xh^huV6ඞk郾aj6.kn^&[謾cU&Oجg:ҳ&>kiZed.s,WFUbgiVifٞmmrcvklsn]nm ~`>mNmeRU ;[bR/ҮXc-n}Z*^;d.Ffim>i6f~Hv__Xh?u>gc6@lNܖ`.pI>bbOFiWNhNe6父 p6p_:7ǝ=1 o:fr.mqijaef!q~f]b %gfdc qa #G^"q,z]H^ZQ.5f^6*o 7f_'7"BpmFtVtm4jFr3?JrJ'qmE n1E2t>wsSGu#Oq~&a" Nܽnp0H&XԢ=!lINpqVoc:>bJnvun`gt S_opHp7mFkWw?Ow=.pVdfv w.{|~/S0:UȂhX8.C)MQ.VL~CYjf@k /wFFkAwm1pnVugmVguoOq6fA'/ygygBV=7n .WuW?9ux`*:;7^Ȗ,Jx+W6r )kH{{~.w&~7|@?|Nf滖{yW׭zzY9݂OzazaR5eCmG|1frH_t~}wG7ShqRsiŇ c^~odgD'|_z~ׇ˭q~ )(01dx!Ĉ1e"ƌ5>ر ȐdI'U\˔/_l sM:WTO9sigQ7{Ф@*ETFTSSf%5ذe[6S]uӝ^F ^1zŋr9ґ^݆8.>G=2 JHgQH]TܫL͖^x`q g}tLۯ`۳{Տ>?6ovԝn/\nUU  ƲO?$HdhE7HO?XT?#D ikfm)^d3ᦔ{pAxӁUQhXm-wf#ըݍ\V${h$aBRvA壔YiZ%eM9، %_HeJ7A5y&piֈn+#O=C- C,F@)ZChbAI$)bn6\9WOuVYejֵhychz*%cs*%kZlꬪ,.++5z;[L`.Ux{(Af !ܔriXU]oyߗ0wu <_0zMkpx0] r~ ]A~p qL1Mf%8dMjZA1h/m[_*g6/|%86_N^Mnh'v\n }mP OyZm Yau`~^^kJt tK3O]p8Z szPZ]8캗~_ž0xݾk <ʲz}N{۾=ux%*BBnQ&Y}Fǀjk? HPr'^p _U@)V,֮u. nVfaW?)eN"[_<Ұ6!s>!(!F<"hDDp>&OJ"-r^"(F,EO<#&*nΊc|#(9ұv(C]};?47ⱐ<$"E22_z>"9(&<!Mr$( 2,%Bp|+aL%.sK#>%09]<&2oɢ`23L&4)iRl&0iYmr5 Cm~<':9Nq|'<)9t<}Sρ'@O2E'Bʹ>=G<,QDFT%S=0|± d!H Rz#rDB2ӚptcVcG=" 1H$OeS9%DBA$pNo(R0PqD8@")F\{h tM'zɾ1Z( BRֻ@ZF`Z.V "Amt:NZgpjCFuW1RGG1C$,1N"(BO!T+/<Apu.Ч~wG:J,aG9 < i%H}4` il1   I>AAH HA PF hw@,;m$ˏ7?^@, cƻ@,71Lú EH?0+ ;`sCJT:\@r|㧴A[N=Mpq2^t Vncx㥴M@HKZьvtZf@ )b.H!B4PI@[Y c2L[PҮ?Z h z~m5Pڐ@zہ-b.iGfVS=ʹ@sBC 3}=µAJSH?S֕ :I=R{ SbjZhkч4]2 +< )0躯*RLX5J A j {v.7X1v0zK bҶ였 \ĩyMso8u3_CT8| 7!ŻX#.pG䎎w$C0:>V8; 6}\M*v'uFAUU 5i ;LZo\` &XA,\V?U^]X)H9C_1> WbU\>dCb1杠q=y roa܁}I `]_8î,%,H^6T 8_A`gW mO M B >(iP% @!@ML!Ĕ!m}Z@g!"$]>,!q f" ;` QWYә]AT_D"*5"5Cf0b$+fC5b?+X [4bV"pVAAt,b.Z/H[UAxe1Hܑ55PJaxŖS=_A`A+Z6/t}cZݖH-Fc,#A5:PC6=TqA!1Ր1& q8y" ͔TbA ԃHe]#:C C$>bN L@Ji, Y! NODPV4%A,mbe?(ׅU=_a}bm`OF%NlJ_R BePeA ;^B^l0gHܕ% %bH^&IbIΐR'@UEכ]WlB(L@]/ěa=Ul-kH1ȺSgZĂIB ,Z.&nfOWHMU7À8A@4$g,'c >!@8AT5gljo8`'_Udn|{CqV4x'Y)'4tX5W3ւT:^Kf6f:m5"މ_1ATVV4be$(IU(A̖ ,A@UV(eHz֯gݡi,8I $}[)yXH,#Լ9)Dv1HH8iI:TEb=vZX~D2ӈҐ=좺I=RЦvӨC6p*|eP>9dåPy*:\5̪ jCBjH~c5+ *jbӤ6N<=k6qfRn+k4u8a+mhU@k+Vƫk-k;yⒾR+,V+*,6!=-N,VʷVn&"lNrȎ,/y~TȒʮ,]l,Ƭ>Z,Ϊl*m ,ɞV m.-,Fm-f^m:0)-vmj-B׎RZ-٦m&-ܬھmmҊ-ʭ3q--Zߺmn 6Ⲉ>.FN.V^.fn.v~.膮.閮.ꦮB.n.Ʈ.֮..n.//m6>/FN/mfn/v~/^////Ư/֯///00'/07?0GO0W_0go0w00 0 0 0 ǰ 0 װ 00011'/17?1GO1W_1go1w11111DZ1ױ111  2!!2"'"/2#7#?2$G$O2%W%_2&g&o2'w'2((2))2**2++2,Dz,2-ײ-2..2//20031132'2/3373?34G4O35W5_36g6o37w73883993::3;;3<dz<3=׳=3>>3??3@@4AA4B'B/4C7C?4DGDO4EWE_4FgFo4GwG4HH4II4JJ4KK4LǴL4M״M4NN4OO4PP5QQ5R'R/5S7S?5TGTO5UWU_5VgVo5WwW5XX5YY5ZZ5[[5\ǵ\5]׵]5^^5__5``6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwg6hh6ii6jj6kk6lǶl6m׶m6nn6oo6pp7qq7r'r/7s7s?7tGtO7uWu_7vgvo7www7xx7yy7zz7{{7|Ƿ|7}׷}7~~7788'/87?8GO8W_8go8w88888Ǹ8׸8縎8899'/97?9GO9W_9go9w99999ǹ9׹'5и54 C)8C4)z5B)B@!,|X-!"&.  '''(((%'(6668886??/&/--OA]o7T.n&%F(.S%$`%#l$;j'&u#'B'1FN$Dl,QuMzAV_F&&R+(pp.`'%i'%p3%]) L*IK-lf1Hf(aQH3mIjE%tG$oR2_NZZZVXWMPNIRoUjupNLzjSzyzjljj\l<*%$#4NT m"R$I"S;e7{?t6xg'|CiStOxoxm{\Z*5$>(ARX570Vgwt\M[WOUVjsv~-&&'+$IT!J$d/ZS!p` a!w.lkHtSzoqSSa(.E?WNaYjiRRt9ixVwolȋ;,!ёΕR˙h֢ZסhڦhΧtSv.0}х䮷ʏΗ̙խΗֹи攒廂廼ȴ˕՞Ӗɏ٥԰ƙS'/*\ȰÇ#JHŋ3jȱǏ CIɒԩ^>yɛ3L0oY3N{8}iNGqIQ=BӪGsb9uT2bJ4j֮OM{,ׯS6mڪHR57(YKr{[[Vj+Xt6.Y㬅}t-ď֕9豁e\:+AE/9ʹfa&W*Ztw>?nPǘ y}ׅ={ag9WcS=cw=xF[jIUtyY6_e!_k>!8{%RCM-abQHq `<fZ#܇m"5\͸^`L-H$s:W${HwVµdsrY#Ǜe#iea7Sg~zHMC䝉v]ǨW. hK>q:wa&r[a n(_'JESՆhvI)|hBFkZ+zU7FJ;閫jp wl1y1&s;nT)0V/3pjٷؓ-]g&kfǂ?- BM*/wͱ~qo7{uR6,#F4c*íVe5evYՍq!{wgG1"L_{ 褗n骃O袿.yͲzĶsaKt‡7/4}3S=so}<ݗAs4޿}O߿_8@at|r!L x'%O(%dAO~a<u{ cghχ71~$ф IhZ|k"?xlyG 9G<6>̍"H(Ac/Gё mq[l X/7bP 1DqYĤhi|$%(HA2"yF#I.sɹy}x–a+x;zπKwJ13;OJvO4;IDgi>|g# 8ON.Og>jNE:?is~vnU&2գ ]qMb7-'ϡE{xAItp:+` Wxl6$7(?"WH@ [5Ъ j+Fy@s2_~=F&A <he.c]dM,3t{#/{}hՇ>Q"51vKN^}L o3yg7Jo[%+7maRpѭe(.2rmiL+%@ILc1nq]) S 7pw4•udwה@6wk3e>(|Wdҷug_PJ1zWdDnW~57|$=IH Pe `stp  @H0 @@}PxptwVH̄ < X~t6}WY6A<(W=ˤIxtHzktS00 wW]w ِW*QZЅQ &'P xVpcߦ$VvK(d}t$dh}H˃a({cvpf6@7`}4=@ h^ G9xXo󘉚Ovt'ԉԈON=^v @~x`*(p$ @# hCg]9^HJDtce|a(h==gR9Hhb0u5 PАIxZbb j8#i)*I'gpˤ@w{@vH>כ@ &d5eC7~)}ۗgs6 H@ts# ㋱HD % uYʔoK}ygIh=j+Cu؛pv=*k ɐCЛ@ ydk(nZ*iwYo@}Y^ӛEg~@o==0N4>}WX]T`1hv e^nO` c Ѩ<^VP]Ґbd H:h2`Mg{}Vi\tJ)| c=~v(󦽗` 6.,|֬@WW\ EXG|ߠ XZ d\RL`T\yjs}#c <9Z6Ђ]вq^<-0O>% -Ɣx&rԤqMr$Ktj%J{S"D>GplN)ʵq3' ` }Ŭ6U㣏<|<9h}`0 dɜѰ*Ϭ:x|W j `j m }\nWJմ &\$ޮ_`uSZ j֑MQVW+ɒhFgv(K >xH {- {>N38 ZS@+COxfMBO @ |sDEJO E[({HPIgH#; ^H/ihn厇]/Ej?Sog]L`:o2oM>}=6ް֧UTצ_O~ې Πݻ Sـ^p̯/Yӟ?UOoo?OO?˟M@ :s … 6DСā 1|pbDF3um^x͟G^}౷?ǎ>Ro{/>B@/AdA1$l,B '*p8 #D 1 E$DSBC4ѳMOqwlEDHQ1R!2JI2n3L1!dM `Rh?3O=۫O-P?i+3@PDE4HEM tQKŔI?J=R5T74TIEkFQtTUk}SW[ YRSbh/"l[/ 7ZrɍVYjwt 7^y祷^{7_}p_8`&y58a^_ba3#݊ݽ/nX6[rәrcOF9eWfe_9fgޏAYkg:h&h{df8 yE%jj:kk;l&lF;mfm߆;ninn푧ox'xG>{gy矇>K>z]y{?|'|mggy߇?~秿?t`8@D`ȼ6Ё`Ƿ@ VЂ`5AJaAЄ'UBj/a eІauЇ?8D"FGD"D&6Q~Ib{D*VъǓbع+vы_\(E0ьg ՘D4э],q:p qcyXc AFBq$>`G~D` HAVsd&eHEN DH9q;@(SJY҇e,;I>Ѡ11 xF1qJ"G2FTx+U(KjVӁD y64p ȏ~ȃ@ ~C礆;`e4BkӟC9ʏ}Ñ判;` CPXN4CBӤ' _@ߡx'?$9 sG5x cȝeX&IR6yMtu/G]*iTRVf|pG؜OSlAE,d-胨ȩH϶6ֱ4|k"9VU` z` ܜ04C bXֶplR##A0zD%ɹ+U B6׹c9Ucz<`Xtc`Bn:Dsz#].c^֚z[_Dш*ZPiuW:WFZ %(ހ(aw; m^ܙ!<1*'b 7N/qes7yus?za:GGzҕώLg=\[S.tw_{>v]PG{վvL+Nٽalv|?x+@ 0| ~|%xS-yl};ƗG=7}e?{K*oݧ<۱^G~|/?wF?}=v֛}wywE'c??W;$@4s5dt+@C{ | ]CS@4DdA˾K4L:@ "4Bـ!t'B3)AI1(-B*7[BlB.43/TC,7V+A495C |A,D2:|a]ȅ\1(? DBϢGS;94:tXNN EDO􂡂TLc'Op`'hX#h C֋{`5_ F`Fa1\8R\P;u)(E/.U ܽnjP%EX;'jE 7Կ8d9wFftR E\-pƱcOk =$}ЃAJ#[|zI,ǴSB=A^|e,bDO tG{|}D=v,ai0$.~xG0e8aw@sHaڇth t؅ܺG8<{IA8Cv& DPuIۇ4œLɷHv%!B{h)~#zs$GЅR;xscǴy8'JʭLǮ9R&ISI$IՌ3Hm)h0J~;$W<ʄ$j} 8Dixh*‡+j@\ĘcKO˕*hF~(KOG[Kd3P̬Vz<#OМ܇gxhxäªOڄ#0txޱNB7H&ș%́g0*gr8y<ρpD@j~Ra@E~/_}%?IdҳsM0bsqZ9>4 8DB(;jɊwp,~8JrPKD TǗP(th5P4ϕۆ0xG4Nwl%t`h%NT}OmN:]k@Q@USx#`ᤆ;M͉#̴1؆rS71ʼn<>KWYu9{yFawmD %(yM)v9taa] P2И%xVydEMbBM^}\&^/Qf='-c*c)bbMXe9Q/E> OԪELԢ0fB(;LV>@Џ9B~})F@<=D> n-=WfT&YMN7.e/e0gm9ǿaW4 rzYOK.;e

./N=aCYk=IMu%ѾudeTGOgop\r.fY]ܖcg"*=M]~Lh`B+OOLm9wN-(T,N4he~6=-bZNwT/HFdi{⢍fwhlނc`zY2"eF08bbcw9̍Ti'F\6(2k)VTzi6.ZoVe,&{psFya(`lޅa@&]d kYs҆m;}޺va>>V|ǾaV= XZB:; Whu nRNNLs^Ccn ՉaUmUh)G`1?(FP? Q+Tmb榅; P`0 x@0Qr> 0 J PGH10pԁTY NjA( RXXP 7RU(p0he8J @4UR%f=ðB!spna-rR@r'(`G_gqn '.3Gu(΁?Gt)J&.hˇuyu\]]_^u`u\'v_d7dvfe/cWviovaGhwije7)knk_/O'Trテ0RHuY HUα$ӉSTO@ju@wlAOnrR''RRxxxxy'yxOyy?oyyy'7Gzxz~qPר .wnRpSSYH7>9Uppsn%{ zG/zG|JO|ȄL/|'|x7|ȗxǏ'}'GW!}/}|Oz|z"(xUY@(0(QZ0_ Y(F@؜To, '虋y7}oow}o/w?}?Wه~X`?2L C 4qB76H"B%bʼn5zT1Õ)[4ď*+РBaJ E;@T(TPHh2@hTv% "--{(޼z@/-ly3nXd'SY#H3B9=ȗA_5KήE#-F[k̘k\{Ny޳gܭunn=/J9a`$`䳳o/ul~dɕGCezt!h ffYH j _u`Mwӈ%Y7qAb#Q[Bx_=`ѧ}E.6U[qxFM mUb΁(ܕL(i fas&^09gf hۏ}'y!@{J@ؐDY$J. !I\n儓JOgvseh)r.\o̹ bα"Jkͪb!1(i Ԡd-h~N֪m6mʩAnbj(3+ԭK㖻˜ﭼi> ?0 w @Pqv!aר'qk$oeut"RB!yj(9;Π6yY9HOM;c׬KL+1~Նlf҉4v% Cܚf 02RVX"moYAO+8`7.KA. K#Zwc^s+`+:"͑藺٦lz NL7Y7<`O R.TS|i)zb/)impvÿ!;2jڝ޶ENU )wQiQXQR(>@{ߋ\Ԯ-%|Pk`[$c\Fiqvx4~)p~X[,P=l*Vd|\2>n̈́YlXw!f ;ƠQ}'c=JpSdu CPO'## \9ŊQCHkf<#UpnJXXL}3K2ykedψ5Hac׼vJj5Fb5{" XY mjQѨŭm1y\; ½џgl'*_si rX/퉡t QHC4#5IAJR.uiIQRt/MMYSԦ>LOsP5l`BiP_ թt8)UpJys5íRd/keϛt7l=2n l@8`:kP*N!Z'CsG@b,!Y͚4aWQj& +Q5AP`9B05s]׾5-au'7x=%x-iS־6m+IޖdmJh>7ӭu;~HY7}6`738gg 83R6+h/0@Xɑ.S89}PCL_c>f?;}q]x?WO'yiQavR8x}amSO!z#B9a2C> z|l.|$;'Mq=3~PdwG @ ~C~![;@=CeAQ<@}% =Rf`]%_)&(E0%?TB &߱`|Ҡ]I[@~5~A>4@[;@T;a|>AJ`eH ` =&?lwCGJI^:@}GYx bT,ʢI@">A>Z&1&p!#`I"5P@0h"a5A))Xx'a!aN.;+ d50.AbC @a-"C4`2̀@?GX":8d%@A " ?$AdC@F$ 30$HA=G5@T V 4?\,/ LI *C@>*dL_Ij%GQ&^$H@4%e$T  "pBB@zFr$'3=>@C5fm"E1L9`Ӆ ".D) x>!@F">8@b-ޠ1D@=k@c;!gN 9L.J@q:ln¦a`#dXC' ` .5dd0A{"Cmަ<'o!H@#d*>.vwv >ܧkB5d. Tg0 fA.F[2~;(${"q 9. `Z aJaZpp#:8" Lb5c-~=4# .g [a"gF 6U$8@9(p$&V z b̡2"!&ĩa~:"eL>cP^jB  F.~@N> .*!f4着a!c=0Ze^JGx) ?:8C0:+0,AlaCAD;@ `)e"g~<+5'Q4XYrߐ`& A~*D3ơӆ@`|g|a`0b9b6HG~!(x@r&ݞ"A0`ǚ~&n@L(.p.nr -RF2.#>H|&A:؆Ӕ%^ۂ\emv~)"o&#7o7› ~Cv1F6% /7+꡿C7t=0a> 79$=<[>6"&c.d C7e2 ?@ʮabm/F{zC +A+jmѡiݚ$C20 C@q^pBv(.$!h 2jfmrj{> zibmj2ί ^r1r"CD>.bi.?.3&` XFr!11ϱ1{҇p:+wB&cb&x֢ :1(~,1<>Ă>@:{gN.@BkF@c֢ `1+3$N*6>@.?3AmkE`GvhI/bN7DJoLzD7O":/07w38\؍|s"-DhH6z`ް 6>u/6"ȧl'0 {_dZLF3;Ё|N4i$(*aG""u.6ADRe~lC 'l*6bch)ueuA]!S[wz=/Z:wP>|d8|C}[=|:7e7>zw}KGP7YG(8Zu[ۉ縎Cc?\c^898 ⸑75?a_Gǹ1v 99k9đW99mG |31 }RbE0vU(8- Z@A,؞\0^(B tV-4B3)96B pO)4B Lv#z)99t, * @-l:-@zLzQ(EW(-$(X d:!Bs?EE#-愒R`,H{<,d]|{_*PB7YXp{PE V0*< ,z;[T|Pl<,`Y*|x0@ (3py(?c@܀U@+; FȂBG|)*|BU t@sEc*(¢R*Լ7B+xRLE,*@BzƏA+ΫY4zvOhG:7:-0@A+xPCRt_@V ## ##3BDZY d~P4S*ĂDSޟ@B+)=04| 8ԏU,=S 8; @ RE\{@800ұш Z E Q*UjВAShH 2:5ՊQ iUZ18a՟G&UtN D:jUyWfժU[׮;lYgѦUm[oƕ;n]w;iߤJhEd=(R)91"Wgvjxvח{?> ㅿ`~:u&_@4@. t`A N1A V/A%B-t aCΰT!r09DRäD]ΈF,&0B\v!K<ڢ7C1e4јr~=ġݪG8RljCh.7pEcTxG8m?ѐHdd%1IKʈ@"J?6qSs )R:̉!!)2td*XHOsgC&La|In%*c*\rq*9KVӐL+qyJBzQD$5Nut;OyΓ'N%hQNE1щ>GARi%5IQRT-uKaS5MqSʔ=OSE5PT.UGuSUUUY6Un]=*VVze5Y- SmE[W^-m]:WhL֥}5a՗ e%c=XN(Ɓ:L /0GXDu`b 3N`2#T8 {Moz^gi |,=α~ֹX9y,,԰Q۩c=۹{ކTu{vYrCxB<I;N #>Yt-oU׼_N"@0+zP| Tlx% G?anQ G:c c F?x[d~#9A}dO.-'6 Q̒l܀ 8񈧢b;C@/Xoe܂?aPǡa`٭cxh9Z{L˜jUUc mxzbB9Q4: n@R 02 cz^v(z CE#>A<#\pju۬7oT:u1d,Pyû;^x@]t{$"<MA Y 0ay{)sы#s+ 8'K얼 6mQMWhVe7{QEl^v#& |"?֡RBAQP}( 1zBT1 z47\$Zrxgc^XwpG ~@ÿHְQacQ3}] ~1[$Wf [ar豟}E2C>[?8lwʹ;f16K2j=aHNHn2m>/̴!P+n  .0~*f0BNBB ~Lmmb\."j* ` N_<@a v[0"b @4pe~m0 0q®C.l`o Ao 0 jߐp QQ %!j1-q*=q81ID}UPcjaq\q[*mh1?yL1q16Iѽtq1џ'ї k1bqY-Qb1ɪjQ Ҩ 2! Q!!r"UJ%""5Dq[1"72$5*H+,j[p L 2Q$mZm؀j ,n*ENk&R9jl.2)&2̡P*B ź-)a | ؀a0Ar ʢ.E@|l*2`o&1aᢁȘk+.Q3DEA tA$5!(Y),2m6 8!AN.A@ $R m|-Ss<A.@;M<1w4!P`!(j4Һ`pҬAmA@9BY0R\uJ[>rv;vTwwwxGTxuxExsySyiyygzSz7{W5.-÷)|7Q&ח}W$ߗlw#W~JWX# t !*vX!8}]"X;j_r76/? r@sz@gANu NK`XX]=8 :x*&L rYoR)3&?[ ,)8`1̃ 8bt b< a"ZT*%W\sҡ!OC+, Ѧ$7ሕWyHoBN-F`Cvr=5PHxMyQ5_J,ؘra)7h9ᑑ ,`aE4DzA2, *0rXhފ+J-O TKhl;lN;^LnmYm*mո" eKobދooN pKpT p0 ? 1 Oo_&ӋqǸq~Lr%r*r. s2Ls6ߌs0sϓ t>MWAlJ/]NtRtNuYuZ E]\fkMvڋͶj-Vr+ wP͍v=Q~wMxǂPGx\.91:nlZA5(b y*f0>ДkC;?8b@ uC Bf CI#ں=O>r옌l `b윐;?qh">X߷ [9;=?YއD̰-$ R M ± pJā.a! G&.h<΀G0:i 䑌LV:p\<Y4Ρ +#T {\ℿGFq$)h?#P$ʇ?=Vb0 ~4$4E7zC7(io >WV+'=;pb8}sJ b A2; ׻%PZ#w CFOnRFS?H@=qt]J !k "^}:]4m6|p(?b GPMjF!Q.2 aXU0;xb  G0j"Z͡N#}5|)-k!Ta5\bS1}rN+wM+gN+M*FTc5$Js"e`fvb2ӊ _Hr~Q0QEqwraS]4  A!nhawCn|.*Z! $i5Ё)\5f耜^Ny0ǁ|؈!w $ i*0Q`}EG`kg a52:E t b،44;nJ1CgUda3 0y Pbv!^]N l@ &2 { (A4E,F(* )rXLtO~) 7=PSBEXpBUi2v^J X#Hn#?{n€_emY Wks";!x Ȁ jh/X-H+j1 "H1$j&x(Hj*81,؂.00i284Hi:;ȃ=?2f3Vsքu2TXrQZօ2dXrߕjՆ#2tVqskg*|؇3$?3%HSLIF1COyLФA'n1lh(ǤPLp`7:Rp`0 &0 @guÐ_Zv4ec> a=L[ VbX$ ^UoKh'ЉeQ-`ReV ` ^ HB>(`Q:T>~GPdEN=!gPaYDClbY XQ;EhyH`tD0a"@Bc>,y:849dTM M TyU(cH)ʕP2TxWdF?e D @ T]d@pe5֔v3pP  @P?5;$L^DuS @Jf=T^5;I6:]Ll"b3̄D:&0eM;`VNlx3p7pE1WY:8 UQ`3[RPD?,`E=t9IXu 6FkIP?K*3+ ٠ G;ʡM'd1 ٠@l:R0tt*:Ң{(sزӣ<I3SFzIJӤLP3ygPxs`eAoa7SoS P9-&h CQ( ln*70ea y6p6qo <);MQqs1:8PQ5`qr3eTQr,!vu )0(~sm4Ga@ pR#0tyaStd,`LQݱqJ fX{$u1jJ)pj5y8|t"@ uG 6 0~' 0&"Z$J 1P"n)*f3Bo0 uvaq7=0 `b ua//в/5'pB*Q ZwtiF0bw7&гxBHzjGp gݡv2٧a*~W~?qG ѳ |t xji 6~,p#Q`z5QjzmY gXl6~R|քUZ,6[4țK7̫%λЛ%һ4[[4{5ګ753AHk狾7#CỾ&Ӿ=1X*0iT Ո;B@ 5` $?9n(\4dFU \zsS94VVĒĺ<Iɥ&BPBlY"t]:7"_,0)<| {;ٕE`>.0 V!dU`B ޹nq o{C?YI #P e]kP?;5<#φB7š Cpp0SLpt@%^ְp"@<w̜ĵU^t M u`HRDBUk##+" ?/;BESIUS,E[К L}j#< -sl /i i{B $Bb@?? r{@{ ̠r q`e D\)E[&8.s06]a3V@p Z`F a ;$ge%P`wn|=0d<0Gl2`QID3^s;t}j0l[ך=ZB@wsP¢H#Pqۅ}gDMR2ނXrS޽w2]rO2TȒ̢_K!Lf ੘f w*&~Sq̢c.ʒ[q1 G 5,{l㟊S0. ֊ʦc  Y0b0 7^KW[.xH> t= $bgb0( 0 {# b>淒J zPziQzKP P O{AP #pGPSQWzyn*UY$`2sK[ n 0AtB*s^&WE{`z^#fa0(uqB w#spP 툒-$hs1Qm->;%._S?8/ _ V_-^/#o /#k')3$",? .0 246b?/ =/CE/e2BKMwvQ6@"6 Y_2 ^_B=P P πdf7p !,|X-$>5! '+->631,'''(((')'6669996??/&/,AN[gw.Q>y/p'*L%$a%5m/TB2IN*MrTqAMW_K('hvtt/d'%p3%EBB^@U-UQJ6vKoI)_X!EEELLMZZZVXVQRPILnRltmJIpjSzyzjljd[f&&;<:%(MXKcgq'O"S>Z9g.s ~C^CiRsLtpxYY*9(Aae0!69:5OordXZJipsY~ ./???&$BLRP%e/DUir a!x,YpLzopH\WE?WNaYjiRR(.r4oSqm͔7ϒ6*ЗMעV٥g֯tSwșh.0w҂䕼ⱶ̏δ̵ƛˉЬӵη伄⛙ýǕ˭ʌʗˌԍԗҘ٦ԯK7O*\ϟ #lHĈ/jqÌCDqDM㨲˗0cʜIK6UlSgJ(w8O{ǴP=:OJjW[bZWU3˕lѱ]M ׻w϶ ܿXjՋv`|\0bŅ>x⽉NL1ƚ' LXoeW-K5Zn]cV\:lKNiVq?UkţTr/[\8u]۩{֩wzku_LɜT' 9ϙv"g(cy8|>מn)jڅdr|Ũ*학qfV y+veBG* #xpȪ +*+G뭓:k&Vg.dR;ᎉ.zˮcF*N쎪J:^}ʳnuYQ9·v {mJbܰ[lsS/|#7n,ɖ1 ˼|\<0ge/AsI:E3/}JtYkl`7(2D^sM2y:;<] 7^|뙂OD_\2b暍?xx 9h:RWf||%\ڍ'衫>\戯Zu^t|drNαnwn-?l<(h_ﭵ2?>F5Y' G@}[ė6q{z#?A0>,v -\JR1 f*4C ްFa%N!8E*FхULbC-0 QؽQcٷqg`=85Vs=q#$! O5& d KHC #iDZL#[L*ґd$!>I҇tduBNbd%(8ZrE!qIL򉲜%%D% ,WYLOLgV".0iIX60K8MV(2v~/ IFIr IFCzr\$O2ҠCoRD(mLӊRLe5_kN5&YQ4pؼ+zKT!@ܧvYQg3`D':?揂Sݹ1,G?QTRR$2)%LaJT g! UNPS}E5:U3p*3a#RՅ\^˼5u[3Z،:*UUTԄ7XPk٨WX[ê>;}JvNeFq Z+lC;8um*$-*າ${X9zӳ3Ԣ {r-7kRK”nLV}' D㊷# I yH4)Ȣ8  7%%WݟQ 0~t X#/: Mh@~{:Tu]HJjayGb~W'/*Y$r@)Tr$*~/M ڏdB)E6pmZ:'tl:׋.9ճczh7)g΀C|R<ԗZ(E2 " XI 8:f򮸧0#eʈ[_"y-aQu [~kOv5<`1N4J Q"'FuB]wbXqRԡU"6*iEֻ _FRz3̓94?豍{$چZk"w/o;hR-!X(a[ 0E+}[܍H`wiѥÏzԓs1@!  1 o~ HP0F~GPp9s hX# h 4WB+y_ghi+}fցqGS#q˥Kp+ƀl|yw` ސ ؀ Yȅabnb'y Mc 0 z ̰yc4z)jI ]05B4\yyTDB'`H~c @ɐP)%U4rG{dQ|VL(|*eR  @0 p 0D #`| ʅpJˆ^xoDRep IߕIX]no8A}W?prUdJ eU 5dwAWq+ A$i6ޠ /0_/ 0~yyoHyyT8yHy0zeIz'tRpO$ėMi=oLAqχMn'h? Gs@XBLyfn2XlOVVbFv aY}P # C0B0H0Nb@B @$c`BP @Fdb׃U7iƘ4 PBOœV{EAs49`OЉYi;hqJ69PfX9{bX8ac190o膓= y' 0z\@:2 lF~9O _" 5}?g喉 H)PIN`Ty?|2zhiSWԗKdP$  $d^ $ $ p c' 'bIIwYZ U6H=y׉#tt٠K9xvL4pW 8 (?P ڰЅ:ڠړAPƚ* KV1κJ\z]DȢ~鋔|}hwX=m,op g@ԠV YsJdV^ ~WrHpPBpB Aj MP{ MPJfK/2 +J Lsi'T=5}ZpT_4}ՉT+H`Q`qp NxZ0C&W;˴򸺾Ȩ5BP @jhoʸ "%H SwquMܰРo܀j? ˫]j+i˅J mުz| ܠ ڡ\ |I8; P:䭛UW)}M`jڲTZzHH aO[*vdFLXSPs0BPMP( Zy% ]숗ӛwX×MBl# Q0 ÛKMt PƩu8гZ M`ۓ 2 9P Pzb i,yZyPȼJ9z lZ)UBNx]七<+@GBr }ԛ ē 9۲Դܓ안:d'L)uJYx@@м'  n: [@p @ҐļXUoLC\+d 5ƚP Cĩ 8ऴGK` : wе`ҕZj,LLZ[k ؖm  ӧpxn0 `J\0`jM@#,T^VtlwX7w)${i|ק .H M>p*Jj9 =Yoe, Ȁyx RLJP]@  j܋ڲĀ{ J%Џ"묟}[Y6hH]y%p @ A }j}MMO}](Tzpaao+h܀z & apؐ 2Fc t]Mǿ>UEbI)nHVkE Nu}6HYfFeي}탋hwNjTͫю:|}ڤU|TQR`F{]-ݮL=tc^B@uI~]TK!uCvq BF%Ene=[l=$ ޥ ,v >Ԯz[-.~g M뼞-FlvLTjMsvUt6F+[`Wmڏo7 N뵟C?p٫2EVH`R8nXQڭOha7}V{;غL.LRޝ7?ϟ/? d8DmKW۹y~$HР>E2$8oFLQI g-ʕ;ybQRٌŖ-iJ=mԉSSE+VWUmسTi#—%&ԧ\|}PСlwI2T;*Á{9Mjtu69/f7ffo^<ML36{?n(}o7f8ȺPh^Ѿʫg.Va;BW~EB̭~u"*0AE*#píyQK Ks.$>.2tȸԚ1Dq{EBERsD%̋{/f㑺1ߤD*tT$ÌG1Q:D B<԰2&y;BKTS!!{B(Iϱ25 *RQA"T-NKIƘkn5[ɕl"{+dܕ]yWaUUeŕd-X]]V_%$oXdEVXd5o`e7:=wl6sͥe畗Wku-v}6܀6Zs7d\am7~ nXZf ؇5&6ێsu凷URr N܃ W/z jQXi1F׼f7ЇFthF+:Џt%=iJWҗr\hMwӟuiRԧFuUgPYԯueUַuuVzֿvkbFvlf7;Ɇv=mjv]mnw߆;wYFw nvԆ<1tyVw}w^5<1+ɽo7|x%w̛"9N0>uy==qC7ǹqc8u GGsty}D?<1a]|^/} ]?r=!lߏhp@P|2 +>@+;Ӂ <3@Xvē磀۰j>>؅jjhT2KzKk4?_=hh8*3_3@C@AX{vAA0tgBX{M -T@C; 4 }@tȺ4$$%i؀`'`iC2Z{('|B<0<̀/0R, CLK,|9C sjPe0jYX_ > ü I HӀ\аjP>] v lㆲF D3G;Dq}yd7whx 3ڃ{$k9PăT #<Ì$D?-|KA>Pj 00Lp糀T~D+sx tx q{~Xsm ~$aȿ^iR~'{cds I?0>ɇ$21:v`NDN$ω|LB0C.`0kXlkx5EIO0O 4|C04Ls xh? ¡{Js3XDC^M|21$wDPK1E XL 2:۰ϫ +>+%.m2\)A$,, ˙D7PKEku%@$[B~($DBfHR8S0 0rЇG%c&lB-BAkɍL COhBx{K/5 pHRp|\[=>K7Ü԰\`\9w;%ѫqsJt$d<$K2,|($b@MN]QT>S]S1H U"ş `R,0k8Kj&h1<\@&Ej0 S4hUle o c9uʹV;pȇ@]6Jr(iXV$ X ~M7E"m 3҃ Hվ2mPj9mA>C> C|>Yx4 #C|'Jg==Z~|wQ'D7%U,R%ԅC#-XTc]cd/ȅep Y#TBc,5{ۺSCXI[^} )ҔVDQfZD8EUSΒVPݟ΋10|Wj {̐M5VdmWMF +WI Ov;=x+Pcݱuc4 E[)m@L12,[[d45vh2 b$E0P|` aoPC@< +3I0$fc{S]SmS2ƫ 4]{l}> c>さśtC.v+_180B4eDSS X<"a 9˴vxjO|> }øAZ~>l^eU5vSGNΉ+c3j6P5fnKVI0pɸ5>0O+h%.Ϗ`*fR O e7D68[($kPFv芖~2hhhfhxh>$h^iniF陎hh^9EFStB]\([k\UF/68z@Yikv2ih6Nkvk鉆khi6kvDK^md9z(s9fȎ~>ˆ4{蘆26l$6l셆k^3öm9ŊťqX9#D![m~khVƲlfhn녮inn2~Afָ mqifFnoi^n^nnnopnMCbykk: 38B4*K7sYu38pO2?qWCq38O_k'\ ^qNS#$2o3W#qoO]q) #292#g3%)&kV3gs7u ls:w<:?=s<_tD?;KtFItMsHJuEG=SGwxt;Z6u9136p-Xmb 7s2/`%''s`igvYvhmpr7sGtWugvp4h6qzw{|}wW5w~'7wwPoswxEcxu>y'GWe6wy~|G2OdmӃz~omF 7Gz๣zk9oDor7ܴʊ M%hz_oW{o{gW9w38ݮO{{o{_A|'|vG3Vp ο||'pWgwׇؗ٧ڷw|mGw(oD'7GW7|އ~fFc~y-x0GWg_}}vk~pwy,h „ 2d!Ĉ!jFM(1>hG,i$ʔ3\Pe˘232i&Μ:w'РB-jAsw"c{6)}ZrpfƗ`"-k,ڴjײm붨P+Mw*X:1W @ 1c12n1ر`Rl2̚7׌`Ō֯=J3F!4N߳ \1pCg`pI cy$Kl:ڷo/; #\|NostR$/Rs@\rpN?sZ'~Ag,u- Zx!j!z!!8"ِx"&"-"1vwPSK? C r@/t4sյAÁ8Ls(=ЀX) UEx&m&q9'uy'y'}' :{/5P'JhA]{M'04]% {K+>Ȱ@eʪdhƤ&++ 1QA9U&!qQpk}#= ;,,@ 0>:+&9:,{/&%5+r *PnF;\4SsJ6R.#tҴ621Ӽ@~:=`lcܫ~ D&_!2r`_a)J!dM~pWa^h^ |{`pď & &Btok'N:%UYP~0L pY]NZH\0&a ~"${CoeER%,1b-C8?LJb&!$-z3)SYTJT-4`a.&GD1/ +wB6e3tI:Њ?x:hdf =`̀ i` W/@=nK$F 4eUːY0sf?835IU?AНUPCK0 bΝ9_rp ^g4>9Ѓ.V!eU"sp- $0u<1hF:hn4`nv;V*ZE] P!"0jS "b0boXe.@*̮?Ou.x=,zsճ{G"sdt' 0 b*;,!=! U^!_Gܚeٖ*tZX + ^*lY%` *y٣ySe߬ P7P?(R2l6p63 0C:t_ .?9t2 p6u:`&9Ղ>C :>C:,b2.#3.J%ADb$Z0U%LD@/ɄГaN ܬiP&9̚ 0R ̚?t8 6)> /># 8b; A3fFn$=cYؚD_\t:ބ:C]Bìm@08>#A`B6B<2H); .PZ-NFA )6A6\7p$YFzLGeˉKbUMd'$]BSΚMB 0A3eU P `A `A"AR eN TX@8Ha(ifeɰeHfZKPJ\I Q^A2$8Pa% 6eWTR&B^1e *?dw~&ɸfHˉm~EP\ -{f)'PMh%>x*t`r%WsVF'fʤuR&NxVx yY{bQzjc>Hd:$"=/,4@Z%%$59dqL>ge47H^(Feh96LЃ@HaŖ;$ uaO}.ae(b2? NndfC<L'~nf`a]I.Qinx)I**zv(4^| bC7tm_ړ[ zR± )*">ރEK˭rhSc#j+ҪJ$bj*Lh kn+FiPԘv Kꑂ Y*J9>bjdŧ]DLvY~j*d )l6*l/Q*6b꽚k`2DȎ2,>˾,Ƭˢ֬ˮ,,ά0:Z,-F@8,Ӳ,l͞ D dNɆߎJDϸڪ [F,bLd``-΃^JėfĂ`@^\v\cн:WdcI n.N0U,m(]rjlnɲޅ/I oyn%No. =Y7{9?=?`qI:oȠI>M6ooΝCX*o6|~ ^/baeռ@8 P'5T>ϛ)i)>TC!a@/cW1pL8;P ;DP0 lM A ; &VL1C+{pM {0_̰rA8L::78%:2 ? !tXT9< 4 KXC-I>T`@5l7$B/X0F(l {LGtH:HC:C]pM;IC؁?SB@r(h=xC<'A42pi81I1\PSiXuA(022@@C"&/9A3\7mZV$- 61fq7A{4L1@0C |6v?` (6ɗ0s yI$ȗGRJq[i`z˳8yj';@iہ+9>e8K3H{\ l/LA$ CkZ80>& /@sD @55߶}3>a0\}0q^+MdiAK yZ_p;g6o4/k :z'0_zKfY ;Mgq0{5k7yS¿+Zs'%73qzH+3>A }BN]Brs/{AJ<7I5@;Қ8 += r`: 0Aa|7{}2#{ {z $“;siP LT;PA7 wGP ;@9l84u>hC:p7E~r_0 T0kqŸF?Л<);1{sO;7zq>dt&Ҋ6#CN 8$ kg;rX Ɛ'/In-~]Bܳ!I]0'/+&Z㎭ۖweyL/CT:POJ&[>~e֜AgϟAAjVIukׯaǖ= ྽wo 6KhO*Cį,oH:óڼi>N9KP%0.b9 L$+~}׿?magFjahy'xj*7g@~>!4Va4JXIJ ݢǝœb`cGJhyB``5愇:T(TUXN[mIFiE]~qonŴ7><dhX}}G-\MI/YY׏p _~ca1 ?ǡ͑OܷEo]驯?~O hۄ|FRNΝU_o;}oq| ȵ5~A n\h.5 0HiD-d "Æ-`3 }쐇=D!E4D%.чb3D)NUD {B{L>"!q4ƀa2t#h VaG=}HAppTA###@B@a%hFMJ7st^s8HQ4)Q!S 0nj\`w%vٰ7̘*Le.%+K-`i@"vKmf1LqN$9)Eh"66My ?!bj8zmpÜ69zxCCn$th9!PE8Б\|#%:5xt`CfP[%= Vz-!FC/<ćxȳbDOѕ`&xħ AvȌCcQV4@/aSX`ՇXju+T:Arp^$ c "> Nv(eeṀQFiXP;XnS+6*c}9%#dAR¼&0nw:Ӌ.com^\s#h+M* 9AA؁sXG0y|7?Z^}hFY,Y ÉH֨},`n7Iyzw/>@XvhS2};V  d@6K̸>+90owVP!؄M\e5^PSALef`Y.+`b' p^ ؁dE$!psQ ( Vq-O@c؆:blaCA/ց:VEaUO vu Gݔ+,Pc#e~q_B\@85=yxe`d*0 6~p$q0,PF.8^ |"22 mn!V\#0ƈ|e$@ph ?U %Vbkvy(W#5;7۽w\WAD>{0<|,j@ĔoReJ1!^v *&[|hI/=l?R\SCOPI1-wوGqCcez8k[v>Q9x G r14w}7+Β؞2eRjHw13lCx<-[bXϋhwe"#YՇNw^oL |@ 9# !Gc< ^e)up AJE1F׎(J=TlƣP`l&r!& V lc 4:Vs2PҬp<Ԡ@>.F$,RQ` }HE`R-"+c.rj2 & U/!r/g6F%7 K+((dAҡa $#輶!i+lJ-Ze" /Ňց2w.55,fa4/S!a*S:Ӈ% X+Ls|5399,8[i8A7bJ;9`2aciг> <rl#a7?@a#TN@:#a@CA aA=c6kS0>6=4DO ?݉PP PE]V6&A@s7B &3x`a`!CT &AGyAyD') \EoB-3`Iea: (DtLɴLEDWj|x@dE\@FoFoj|cMi@ T `" TQaB_&T*U 4QaJ@Aj:Kgh73CUa5VME5aBNNocW} ^A)uIyf73 TXY@ ,"`,!p Id@Md@4GՠJ-FXc@3Ԡ" N?A 4~[ UCc Lqeՙ@`֔h54@ 7z6O#F-aE}u7@3S@*@aeSUc;@JuUNcCHdtj3PZ@ b?gAХƒj6kKaGb7XE4X#FcWpjHUTTFV@PS'aG ?wR umU>cfQtnϖzVYhDWd &aPkxc~FGkA7tEwtyk4`XwJO]aN`\9h47"\@ ^_WB6ekv Ja| l]!ww7NPi NP6<J@^K5^5i/LI}7~ItRucqub6&6fF{FTs^sfAg  `@v@SvpTlg5adnWyOA &W@: svXq8~GNn^7dPAwty`fuNЀMzN)*!*& *!a@grEvBZJ}VFbvXrEaIyuxAE'!{uRyM[E94c[7HMQje'T|3V7bR'֕[ioYtؕZ7TH_xkw`>thVXA3{E\yEX?o >Qp_UnϾvr`[XtgԘu5G߹AfYA&GA@FeVA}5w&!8Hrz%@=u@Ea4K;BUlJm:z KBOz5sb͡E}IaF!+dƥ` c~a0[.!3B#818"A",@&4ÌaðB{*@!{r-AUT}t?eȪ9%| Mz6FV`ECٺ=(>&.bG#:[:4oLCu}e44X[*ށ 9óMcAzQ>p=Z:h ;+[?Bzl,!D< ƣ;}%Ui[k5%QɆdnפC=A.d[%a%>D`>%)6 P }[%!^\`!v4!.oDD L4wZ6aoĽ;"b"ltnљMX@!1 JMChN@HAeBZ<`&"<+*Ô DdN<+:Рiw/lM}| 4RqX$*dυbԢExa""B`][) 15>P?­B +}%?2@JH|yމuC%I2 ڽ衃C`%ߧæ%9Lcءc a V ͑D)bc"($Gc덚!_Re{ɓsmHۃs @k: wf"؀K. ;icH?@D 9*@@)& Z"\;>\ +>O~*1@1AhV<kE9Õ];fEC;c;d@=td!=c9d*FQq!J Gؾp| a nj{ 9 8A@ph{=!ؑpu|XY{c@q "#9aN~2Xaّ'(3nlA`5}(e6(㍁#YGj xlV,}E C{(8B4 )% $@K\+_ "#82Zr*Q^3P( WD >$ae0 >WVZx †{hF7';f XlLp#jJ3z|*B8h}LbKj ~uEGy{s;2q^dtq|5gLHÇyDt#GRR"(P=8QA 7ͩ^͎#Œ;p= KpFxꏋ1D sz{;?Y\9p;5E8[Fy6cG z"8LVm4jU𸛮8xR>,[rU!L)F#zmw lxpvE^v|q|DH%*H1~i/q ;BT`9Tɼ#J0= xd#<sjdsEmnp~2wpVVovnhxW:" xr_$PP{qܵW ~C !8s D@:JP WE EsW4LT0gLf (/M aq C3p;! 0\Dv}@u[9Q8 % }@ 7@fxxEnbP#fR5v7'~ҀǀrWjPUvr0c0p; p4 4p\[0pqU@_t9u8 D@ 83Fg۠ U9N[c"HyЍS@H9:_#:;0oh'71V6h'V`hM1 A0@nMA6P aAnap'p z2YNc}i #yȓb!?Ў=!!hg+ A (o 6"y 7 xjoHG+Ynp0>ӓ8P b'9? ڐv:oi'X+z &PpKpYP p  ~BoҠ 6p r )Ø()*ALPZ?p+M w!&h p H@ ~=9 8H`#󎚈9Cՙj+*Q ` `v P& > 1p jGj 8.hG:j)t2gVjr @9xvrٗ6p XCjOE}꧉ npf3)sʏCX+[J ` P Y x8 po ȏ` W%d4ʫfff&oFyY &RxJA/ n6!~B 5qZOګj^#cnzӁ660 X 0': yk0(pDk'[2>c-G1+3[z7KO0ҦY߀1ِ J HKQ[6U+B0 `{C `CC m$  EжoDMhcK!Hxf )`ED$t02Q+Tk{?X;={P00p@I PI4I"yMj 00fI1ӀKu`sOlh*v AB{˹[>XK lKA?q*F)f ! [EU\`4aN !ax%$%htP`E0 T PPT"YC  9Sǚ@f뾼 KӃv% y(>^PtKFSQmZ {Z0 {PaNۿ_ ZkxPSeq0~F 5 ) 0 $pyQQ\\|(k| hTQ,Tų\=W 7`aŘšVMP \0(S(  0K V|} <0P]gPe@Q$ 6p ` y|4Ѷ|DP!h)D E3Ŵlѻ`? P,P FriF-iagl$M] \!) d+/rU F-P) PxQ]J E}kM: _^ ¡R!Yt+2{rr|wLJ r P\o* @MKQ=HP4q J]} Bhֲֵ}:n-^sSy UD |MJvMLP e)pU^ȋ\@uǫ `qT5 _4 ``%!\J , PB%WBnn# a kn)㓝M>{˶ JTjwܬ oqH !l[Ev&PHAgdC;%~lq.sNunwy:~ &`! ] H) оiኡ.,{ߦS .l^+Ӷk>r^N&>~4n^..n|c>nNv~zNA ž?O1Ϡ8# EZ8E8 g@H@9 3v8 79?qd[Weԉ!w}`+C4T Q*fqNsM=Y  4plK1+a qDfJ0SDG3uHOKo~_.p6Ho0m4T 0$$StUuMٴM.Gfz@m+@ܠ Ivh_p0@Pﭴ 90I/V85DSDzhqF{%TN0vpt`<P /O$E 75P P `sB9}1'BXE5nѣ>|s`!1P &!s & )#a3"N{;{NK_'u@Ŏ%[YcۖqΥ+~_s(N\8ؙ^?I%O\en5o֌-"3bBAq)^_~yƟB1M̥"E7 ZN[.ٕ>c0I%"EgkBj#+#NS^ g ?ap@ k-0.~ k`f*cB0 C"kq9!C!$.7y /tŹ*TpFk\3; nNKMg%\@G7.0)}YR @*@0 L."i¢A.('#vHڮ|J!/{Ƒl^!!`ݢ;`TCG RL3=GbD, ? xaq[1fJ D0'{(+BP+Bf6SYip'g駟if[pqyF6UĄ(D( t)zpb+> O\MRXJ8ԁ$x?!F2Pk̈=0Q;Q DBB\6|4~ DD)2*q .SHq~xb<Tq *Sp،C dee"aĚ@$† o Y~$aHx (eslSֳ12D#b=p0bF%I{̭oЖ!JqRx ?bRyfGLHY6d$zhcdGbth x zUdG>ԡst_ YG7#iQUփ-%\ NA1(E_UM.Z8(yQtHC_O %_QёƅA5e0Q]X#/ikSU5kh{[ܦE욢h@ Rxrum]@ T $"e@S~ F?8Znin{_W-'6cT+B,hsրczc+VacDҢ UtxL?N "0-1xm~}c yk8^*n߈_g* N, cۋ-mMcDVRiu=ETs^4-=rg@ȭeh5H9 `.H"H,^p ee@xl (Edg=9гua嘣; v:lHaِsnh)ъ:ķnî|hm~v^3APyaL/ֆF2#Dq4y \}ڶ=s &/AJP4'p/;9 zmh`< 7h4B4r۴/q`p3kvG 1@Il3BfO{~l8 q@qLcp7葎uԁ ?@> j[?sw@6~mٍq` =xy8lۄ~q yg!O`h>z:;os?jk˶| 'Hmk!^6R8Ж<o m!B{۶<Ak:Bms16A1N k3?>L뻱yϻ<-$= < #hÃ2#}: T@`jˇ:t >r}0gzH:0>j0~(Ɂ(BAEtU|N6N |0ѳȼ >v8-bP w@*` z 0xr(iE}pCbkwXԶGܻwox|Ds:D<ů|df0l{=CL? [ Et(D4DD mYȝ@%M`%{; f6ib@y;ʤĆ$/=!WCA Imp8q(i`W> dEe(6 >-ĄZ6"̤Q竊`W=ZXb|HJ ȅX& !8@5;hq[J@B36ܖ@$i DH8䃲KjqX6BA-OO,O; QEQe9@#hLI<ėIFi D@DK txThDd.BhBl0Nh;ke@C#P6u8A kI@|=v@%:D8QP @PAjѤYj¬{#,^E db$8Yōvă 7dJpJ7=9un|k4^ g=<@lsǫ3HFXWs5DE@D̶gIFi~B૶Zx~Ut}&ބ7)G =כUQKIQ>|m8׬@i$@,dv ^@ٔmҧmgY#Y&K}Lx_`N6}C{`86zHmakNti8P!gKr.iqhiii7:vଛ7i i.j>|^jj~jj#fj6jj骾vk.k:866k~k7ffS~_RioC6cxmӹmv84vp>5L=Ke("t4fccRX%Dh&k;n63cu"L@* 4^] Ę+%65+/$:p'AѮM*RyCmGv9l]066<vƓ~}!mz&bN>~N̆Ǡw$Ln0+8<#ftC#ۃ8Wܸqx(BZ7[o+prpq;**ѦQ* wHz/D-dG~P`}Gǔ=O݇;Ǔ.3ѣm:uHDWRŠ0Ύ΢Q6h/kFnsM'\LXs[i"!p#c8LuwreQj3I8:` ,a}J<3rqSp(m4wl6 1:7[cBXeν<85V6 n#Xt?_p wp$Σu( (vPi+ hr՞k^ۖ~A ~]p_ RЀȅ38xH3#xt$ցL^u PFv8`@_&g&;RR-:΢'ȅ@~* /;4&"kVB\Ԋ-_"M6 8HtSj]uRvȅO LĉLvQXeUVPO! l0L?p4'l\bmUQXG"KՙSRYKD<}XPNmpCID8%L&OɗNس7% Y ;$xJD@PR?Ѳ6ڐ3P>yI1b W7>N GhNH-JvH¯zϟBEF?YΈ1&zV֨fhy"YqJ 3OB%[,c((CO 48ב-" ;ZaQl88Ïs"HG/2J4C!hCkj|ꓟ2 88@ IÕ7! Txe(ajUJ U)i5izӯ5I)Wg964QAjh6ɨ_=Q&#eAX nG6B2 NHG7ѲJӫa,e'3VȮNhH>* 4e 6>`Ix n!)$Hr7 !)AP֣lԔle\VARl((TΚrk H'LB8#b:CmrM &I7Nz.O#pS?A6J3vf$;Y9pkPuv1_|z eƠ ԙw@/cG;I|<0 e4=z}."~Ls -1U(:P]#ϸ9E)KaJS5RIUbի`%=jUXG: w@s;^7w;7ѽjo#|ZT"XED*x$4T>a/fZrUzEֺW4YI*:*O^q0y?E(֋9gaOI.r ^9әC=MNyӫStUZߺLn;4\;wu]b/;γ=ynwF]z+2{Zƪ#>_<C><+oc><;σ>'<顛У>_=[>OK?x>={񵷽q#?_>g?|͟>o'Go mԃІ:ץS6Cf ȠJ/]砀;04E`WaA3|>C >$TA` U3 &9C<=,C >xԂ>B`1<>>6 PC' Dڠ P@0x7`P?4E0- EdԐ !&  & Bp)2ާ?, $9  ` I*b+b?P1L4H/'b :6 ^2#n5\A(Ca16uL='JS 3hG)$?p"3b;;^ Ͼf4=dd&6>Z`c(:zQDJ*"%lxuD6%8_A A" hW'`P^ h:P@aQ (P>8&?0hU?ԪD@ y߳#ށ C8%GAp'r '0';2$fvjgp DÿDA=!X&<$d&z҄$x?lfS?H  pR9} !D F3b6|>('5e^6P-tv^w4huB0~./|bE/@ԡcXCVkݠ=hCr^VW=|epB~CZJj*kwhA)) }8Y3Rr@r+&F=k3.+-aFфPdM"l5.kv6YK40C!\+ӑH ?b~ZR._!œPȈ/kڪ1kʪ,hT4RG4ԴDwYHz4S1UDU9\AWT`qdP4TPԌoooƒt@ r"!3TC>Bܕ7Ph50AS;̙El ō؎s0x 3@@s"c$ @r##ȤDc36S4~'[~4lPcPS; 5\Q3Eě&` $EU Nt t-d\ϵ\G릮ֵOE p&[30)o\_#E>AW8=rHOJ]8NH1hu[_CZĵ\][^5_5"׳6샗uOKB E? 7hC7/xh'P@9%@7 pHq=|C=qNJ`'ĭ*J DFtG>`۶o16l/g?,h*/[]uZY0@6_/J0p8<  p@%K0hiy7t:Ds7HEEt5w}2Q\mYDnV4tt%# ?08l* 4@ 䞹DљAHykfH+3?>#> ?R>XA6H_k3*l *T >HgԐçi=.N19NvWko>ixEpwB8}#9@=}#I4yeJ(%B8#65 h 6%f2 B(3Q(532%pcӋF+4GaZ?/DjEPݖn}TH Bf;(I8{\;2#<\hϒt5K! 0!gֲ݌QuMk=dMʁM>U^]~`mgK\AA Xo:ZGy18פʊЏ xHΓLkwN(6L.(ڱPC8ۤnzћl ȡ'~[xpbv!ṥ}9Ca6)sAͳrjL0@\=ZIc=ݎ^j襟)qKf8RI*buBLFZGqαɦFHڻF4B,$G!`bk)8Q)~D >ڈRld2'6b7|uA 3`R

2$]YK[.yK_0EK`T2LgjRĔ淪g^6hN22f7YNsV:D)hP S "g?qÒF=YP S$><7S8 w`|iij DT"}@#g~ cG {c 1C? 680(>Y%Pթqd>p"d Xub:@P00֎OiꇦR?`D?AP0i <.L AqLcpXG:zIwL}:yFhQ@C-p[W2T; @91G3";}H"R^T2Li>:>eJu^VŘNe%9XG @ISA+J0TgжT U~ag P6%SpV@8NR,7臊PD࡙G1N0XtAShyP 2 chAj-V؂8ka$P[8 u$4(Pn5/\x &*C;P0 )]J* Xn?1%7e~ fܕOqÎSB=ND-;N$C]tJ:9p4j~.CT57Ys TLTI=BKm"4/^aJ蔧p-oSi@X@GW0 @5SD*O$/y=0@Uu?6 zx\A\c x[>^N~]4mp 3pfa )8LT $18I0't xU  >^.쑏D ]`}R>NovoM`eiW31n0 5Ms@#!Nw9a`O͵Ke8(pݣ] j"m+1ѻfXi5%oŽ^;`Ԙ9{q P` !JʵFlF b ߊO/*ڀl !oJ '~A3bVp: ҠJ^/:L>o) %0"r*\+( A le6>p yIbᢌ`b@>JjlAA`DnO A`j  a !ںPƉa.I8&QŘĤIbn4*! aDJjkR BB1ռR "&͒A(i@: ށ)lhaL SX1m@ aܑ)V,@ὀn o' L< *6L|A*x*)>*6)r&A/'+)m'bఢg,bNV&-) kΰ./I.",I(g֒-/S1/ 1 I2'2E3*3;3K133/73K4)4EsH4[5(5UX5A`j7}"6eiSAA!'*'$'!7h7ysi$!z@Y ʁ*?؁V !tBHAkH0:CF FTEl| $D=X @a S;c; B&8~#8` pBb0ҁF%&0t$^: Tt៚0 WFn!JT!^G%8,G@al%GG∰y8ԉaw.}vCxTNA$@Jgc@j`$6A #`CyP4M/sM_2$?|H!1 _vcS=߆I$d\aGmςAUR  A? L !HcLBJݠ$! %SР$.4LOGYB+.0.`a<;#&.%SF3&2 VBK }P"/z!@c ē,a1:(\G² bv$AY|aNQB^6pV_ _2|r+`0a7^2Ct5 AC+c^؅\$\x{.e@`7Ջe$J 2,D% \Ob0`3Ki;UP,`KjB` v`)2,jCaohF5,\Pm̖^%~FC=v>HH!^0o\G?s>$ZC%fL;. zdNur'H.ӀNzb z)t`7p@/ertd@|sSpXsB("ҪE=MlAA\F G@J'l!AAygq a~7^?W SFRC,@LK AL3d.i|++W}E`/"A&aRaɄP! TL!`!]jC@Js; @goXw ;G= ֦o`?`&(B ޳!,bfx$#&T,D TQ-`Y!4ċ)+7@ &UA. *TNOaSm &a:ts#BaT6nS%j!3cĄ$Ё9Lj(9 $t|-ݸ)Pz(}&A x ]532c'2HZB\*ՠ0 }!OT9}`O` 4ף?F6B./ԗ.N L!}s:X!)@ &At:s:+V7ڮs/@\aaMګӚ)UP]v`Z}+7+tAy6~z)}.0#@lAZV;9U*BwtGwv6:kBor1۹{IM[ۺ[)ۻG){zۼ3){۽{[؛!!qAߛ[f Ч p "p 14" **B\9U@CC1#\ 1+!|Kz-aP a\~,_ ^С4. ˆ.PK| Y!_ޠ ᵞ`#k˷߿ ̖gÈ+^ly?KL˘ e̹9㍜ӨS[x'װc}۸s]uI Kmȓ+_ΜoãK8ͳkνf˶Sӫ_Ͼ˟OϿ>gxy%a 6F(Vvh $)h$h(b{!c/z(#M $8| 50"9TyK4H`= J SAp*3Hqa;((T>KP*>{GP,sBoe(p9 S JT=SI 2 PcL0KI4yj<(>CϨwL gH@1?F'] ,,ӇL2$'#t oh 5 s os6*A;)8;|{"eFx/xT[-9]rA9nw k4JO,8  OC̾ySAs;H?LܒƠ-y˒Ql cS#038*W= ˎ+ D7/&`=3 B&b^CgÙ'y5|ts: QV[$w(F?q80! 7~DcØxh ɅQ؇?d/E!7c7ڴ&dcp` 0G4"AP=*y$qs܁^e <=<@PD " k>q*DZ,P?zGg|qGrENR#*HÅ'I4l $шCbAA &NpLѱ>H+U P?́ vZx%b7Do3%x G nF:a5^XDLnp*߲ |<(V(=Q,o24 ґKh)Fd̜D/aZ6--K o:V7h P WF aQUݣ%ЯF,t1YI^rKEwJլhg4-JmBDR/cZ)a´?L}@ӴԴfzuWHb`I *5}2z,ĩ@8@}MpDR<5OHqUkaGA0z%i{X9ȺBIN$Oa .81D<7$nRY;מ4.z#b@ E . oob%X,`Jv@p@QoyPP 7L3 VqC_OH8.xHg /Mc԰ %bq1բtZ}vLb?qL°a^2rkG=&Yd3+ n1 Q YQ_F|m)–B0+L`# ׸B-b9^ϳiO %j%R8{?rn#vȃOBCEdCm$) 5Jzc!0]aƘ'ۤW>h6e{ࡍROSCn~OǿMr;.S8)z578P]<0af `.lcTAQG3Kt5A N, Ө.6 D;!5N MO># Jl3 ]&HzH>FfL[vt0$P€'~4*7y6қ^Dӻ~>}RڇƵɽwoWϾo[ p>O௾n*A3QwB?#`1z"g2q0cq~|k *KHY`2`7T 4Ha+ppApC)-QR+# uVpV+ 8`58 C@i 0 C TZHb |10_O hȆdgP #Ѐ4 D@e  D_$pgP0ppvpr'6` tXD|xgqAHPx@e[j 4PFA$,#`b" (e7}Al{pȍ=`؋ J(9!4 0$#M$@ gcO O(M04kx8hT@ ހOpH  78 0(upY9ls _@n fhɘ˸!` 0  .58'1B~Xp<{ހ Wc= 0$%hРbv!4n0>6`6D LtpbIEĖـ Jpi  XDHV` PFD@S ¸[y)+T `- A @Av}9H # PC` P 1+)!ؔiq~P #@7_! Nh ciO8ԀOh 6 zx= 0Ph HRN)*vH4RhC` @ 'g)V)p{HHx%ME=j ` sE@.Ei u2Ԕ(28A'<, > 9@_.?'80x?). Q"< {( pl*9h6ȏRHPc65+6TDZZhu9GUe,mY#cY )?) `ZN>6Tmi` KyZJ pZj P *ti` j  IZ gphbPȕx[2!ڟ(p E\ 9 ` 1HNPJA&4 RѳҤO0: *4 B4Kc:X 7!yp n7D pi! ii(y+#u 5!~p ݠ6qxP zb60d@ (- - ER ` 7CF;`9ipъM 4Pc+;vOD H}@+VS W0 08  ` 9|j<`8  @p -,*mLJ0xjH#@n_!÷#Op#h& `q](7ptjɖ:tY$P jpψ |7`n{ 31}0,Ĵ }E 4Pv 04Z Z P$rk 0 <ª`> 4b}0 @yǷs p T57DmFf}Ӈ6!eW/!c]Œxת!Y׬Wz؂=E,Cу؊jmdZ}ْ=ٔ]ٕMٜٚٙ٠ڡM-ڦ]ڦڪ݇ڮڰ۲څaB&&۾m;ܷە ܆"ܾhFc܅Bܽ;Ío-m<ݽݼ=ҭQ]۶rܕlRݹ]݈ - ^(; ^"ŝ ~ŝ%ވ+!^#1@~;^m]AP-n=SVY.6|MB|f;^n,n .dncսH$NT^K^az|.>^;llݐm~rcNݵ᧞8Ns>cqPn.뮎n^-_!Gא  ɠאϞ ` p ` Nyɞ͎͞ nў ːѾ.N~>7^ x^מ˰>ru,봮0//+5O74>Z< !/ F_P/̞툗S]OQKco e Nhװort?Qe|?>u_fa0 Ռf.O nv~堿:?]6!b 7|l Sɾu?` `O~ c >n~_n̞PO~ N G_q1c4,0ɮR,[th1kTRNT@e͞EVZmݾW\uيś/-)%ƒpJYTǒ 915, yÈ3 xpĄ/Ns^pv%A/L4텦}Vޯph-)'[گ@y䊕iVVUy酮?߾||Uu_~0@$@D0Aԫl8閂"R .m~ÿW&|qU<6gAWO@A_ceErj; Dl>Zb] G4pZJ@AYB#%aByU, :Az<,aEY+^e|K\"n<"Q *-%Ѫ 8փ |]2Y `. K;! 2ԾNN=6tB*$œ37,ꀅ\v(+;\0 e[ ŒNHZ*@Y=kZN dK5#r?PTЭփ RkjW{@)La-<("NfҞսnRBjywe܅Ʒ%X;ox~[GxWkpEx>qUF"5w<y=>r&y}r/@/gwOsW[&yg}g9>яN}Dzxt(KwuF0mS=zO{ 9X@"@qo@ǁ tA>γJ폷롮 A*_5b!]A4B8(NXp)Lq >7^{ǽG%ϊ-+b G Ap@]U$nALKpg @)XbYOɟ *h0U~>cCS8=K `-J(t8$As:S`kxT85@zA4P˾A,"ܦCSkAKI +0WpIX 8q[++4B04뱁;CQ8749C[C-=kC BA$DCTUBZGF,HODLԷK(MDINQlP(RDE&ZUdVtWXTE$2r\[&]Yeal`FbDFA1`Jfe&glFhFiDFj (kFl%mFnD%o$Fpd&qEr GsEtԤuEv̤xEyĤ'B"}  \"t!!t$dHFRȆQHHFyȄȰȰeȆlL"dHGGC YYotInɚɜɝIIII$sIɠIɦTJɡDʧJTʨJʟɬ4ʪJ ˡ$ʲJtJJ˩,*˵ ʭd˺JJJLsʼIL\I(zGY!,|X-$>5!-&)->>>3)-,'''(((%'(6669996??/&/AM[gx,S6q'*L%$a%6m9V"E"Ny3IQ)MrYhAMW_D0K('hvty-o1d'%p3%P0BB^@U.WPH4xMoJ)SH EEELLMZZZVXVNQQHNoSktoLJvmUyyziklgZi&&;;/%(MXKcfum%N"S6g-s{HlNuowW`*9(Abd/-!964Pooc[N[iqvW~ ..??>$%BLQO$ed/DSS!na!x,pMzosNTV[4WNaYjiRR(.s2oToo͔7ϒ6*ߞ˔GјO֢YբOإg׬tu٧[/y҂尶͠ȥɬΉѪյ˷仄⛙Ɠ̯ʌʖ̌Ԏԗӗ٥Ա'O> *\ȰC JHŋ3jȱǏ CIɓ(S\9R^:t'/M4s&O?{J3ѣ:EzT)S@.JT;>Uҫ]>%tPfi++Ҷ9[4[e)]YK0aD%<L8㵝z?B^;w§Y-ֹR_g:ٚF7hݯKN6x}s9-olkv]_{;Ytyus D1Þz}7w]4Nէ\`1gX|ki8ՃWpޅMbz(V.XՋ.߃¡hp˅GhuYm8o8V%yېEu$YwWf0NrX$Z^b9fhNi)gjfftgKiuF[s)ڡ|eO_VFgRJfkrZZ!(jƓF$VkZzk밪ʪ +n:xj #{wvnb.;. Y]+0wJC#fZ-VLQ䠝.Rhf!Wphvdsb)s:I9x$sLer~nysFϓ~8*_>OmoHo3K\P?gh?l/~?݋?ᾕ_웿_}?ȯ_?~^7@C`8?f<'?>{hfq 0aL79OT7&}4D<>Ç?a؏a{7&:3A!ZQ A`H-ĢCэ^ ,{@!?1g,8C=6yLAב w# ]IvN!f#,rp>E!HJE/|#(:P\'9.a""hK<҆8T/KW42b4_-JTF"Dd %Uҝ+g=sUSXN펅 +X|>4>}'XqCΊ訽ysE(N3rg^l,Q>uld;CYN=f%P6ց8lgBgUT0x`/YOVah\#YwVkUkW%齤1=sh#q;2FMb瘇r1j\u#`B pciZuZVS}0h?ЁŃ;(Qw2x`ށ$dCv0D81!PQ)z0eWBv-~_`My jأGcMRٜ1kLc+nȈ ӨNOaB0 BFqhݓD̃-x(/Z%ծbx_EGV;9*ru@2шF8~4vUЄ&HA MBMXhz^r5 bHm(/s>oA "R6 q~̂؇>b![ 83Z3 JUqmLw6q&Md*)@ !"5Ca1bя#б+>gtlD's&Frk;@)rsT;Ѓ?hGKÞqQlX(Ρܮ`@/o _^\]~c&x,ޘz;;/nK]J}DGO q!0՞ .SRa[P$O x>~TЂ=wEE }苞Ȇ)f1!A |L=v(`:* +0lz_Uiv ذ +XIhLp QB u$i`~p^Ev, (HqÔ KTS`r1ew`j=G>vfx5ME eH>@xTk]g7Yj>Aq8F'T+nQ op~ 0 P @fJ =sOHRGdGL*E` EB@ R@h5V}G[$`; 'HiUCAja(Sw`dFS~rxDb&lJ=Bp 3icQg@sTwCR黎Td` $ FC@`D@Dd=DECIw` %K&d@KK&ckD GEJ=FU`vDZGhwI~dY\G`=ȦerӖQ>Dq0C aCP evH\(؀ ِp xtE~ X Y#莦i0V갂8vvtVgtwUF>6 EݣDR(T~i'=g=iQuiq)C0Љ Dp ߆=Wtv9k'g_3wJw_nryPD@`Z ?e`?    M ǒꉆKahl` C#?~fF7gQ ќGw9N.@W= @`ڷP~C /hJg ( x 0S ݸfht hIiWG 谚IvI`VAj> _WzIԃsyZʡFyEd_ZCs =B zZz5IKIEfNId9SF` DpDs ۓ=ΐZ wEDGTGũ3a:x$ DZfQuWNGJfw` =PGg : NSZYjhXҥ۰Yu8e G I9kS:٠ԭEc#KWƚ=D0%S> CRvkp*} Pq= ZK`ZC> :DР3 CG:z鹒DG2dHc ud UYQb역Z C l͖3Cp G7C pRڸи瀯ٸ5 ^ځ eiY `G ZI=7hdS,%qf FtӖ4iR"C@GC >8}Շz׉yr `QPz* z=? E`JYc0Q+Kɢmdc^Z3 LcLIaIGܐ-wekG < K```5 [; )R 0ژPuWWZwۀ^@epSh_ x9 Lo9qr{C a?׀; _XAd)y_#XYEz  w  * \@ ` IL H~'IWy` ۠p{nl+vuptDVi:@ = = |ƦpRzSʼ/|txE\tU ={, i] , eħjv=wz= -ɱыrA`|t*wʗث=,~? De~dPtM}t\TEg?rfR1֋@ a4| &`Ck͠0 &|h==  2>kH([ C` 0P0 γ TTF6 Gl`]> @0s-\̍|ݸμ\5]ؐÊ } f} ^ ؗ}b[_*5cSULYEeHjf`)>\=̞C kT͵;=hanՒ$\o\oG՝Jkf4o!MW}lw ' TE7lO>×xDg=\m#`nǁwmܭx{[׀۠ Ճ` ~ߋ]"^%ዝwG&f=hdkؔu@SbYVNioc=&~" N'fKxwe`{XV>>Mf[V~RS[/>cDF!~5X Ub a 6aE&NCnA^<%̑.`s~5M⼹<͊ -n!~"9^ϫz_v^١hLMõa^ްg+0Tyˆf>BަWvf~R~z.śXG⣝~ՄᚬDV,zQBޗO~ ؋nKo^ _T#I33}=bfNd#zwL|.Dɶʤ>0~P7ZîKaJonJ7&:WT`Ht'@YV/AUTypK C)OP;#v{x2ڢMUeMU_՚5ߔh\ݛ[[L-&kc}?s;ۤ;;v~=YWҧ„zvboUa؍u80ZA2) Jt BBzЪ)d- -,n&CDkAEkRdq)DNDEmqe0n1GqrHcK2t11 zH)D& J|E(s|otLH'L57,M1\3LqL56r6<O4DKGMI'=Tk'LN"|2FϪДjT)UR9+kV ųB63D Q_!0W uŒqTS}J$dYTguXivm[lf3EUCvP|j@ /x@fOX; 0}A nDCδ@Qs ]'Cѱp|ܾrUnD'DL*k՗ 96щOb8E)rWb@+[cF2nq=,cE5*klcy(G:稣%ѹB|c FAҐDd"YH-ґ$+HG\яdINvғe(E9JRҔ)UJVҕe,e9KZҖe.EJ]җE,\ b D&2v4әτf49MjVӚf6Mnvӛg89NrӜ o, =Bֹ*p;]^5.re+ZoxZ]wםmzgy#}!N׾p5o~wָ?zEpiNi(C`HV|Z;"HAMF%bg F VvTtpYq]:!Ѐ%8r;^^_5q)g_^1+k g)e$1`.I /g@fNv z. &`rWзڲ$AgNb09aиӘF;Ƣ׸\ԋgS܏@BS0eFA0t5e)gϤV,igVVF41c'#v5eCPƋ'lUzl|TTWb' =G7=[D4@`mZpboj3,&@.i/!ӛn&5xŪ%K C"AŰ\.C?>B?Ax*C^ *׿|f?=(y^Ez@>g5 Y7Mw؇ߥ܋~`bym!BE;`~#F1kon !tk_PWt;AЁ[/f*aR =ڳ *w( SR.x~@S|؃k26=c0?X^['m~p&w`#n2?j .?vؼs&E뿰#6~֛  -gs,*gۆy@pҳcU4C(u c40S@Sr+<Ӄ|&%\hRB{=cB<~cc%fR?,O)-/ D0l 3&K?K5eP*>'[;y(7ȇC` BAn)ĦOP7/Db1#63\vbkf,g„q)Q4Rl{/T|x@.ED+@+<~`rp9[irEC{ippvAv=܀ 0cܦHi*@:`F$7ӋFs&dvL GyAHC}h#sP|۾pCܭ7˄$g7H]I odfRItɴ4'S3 @{ ûV+Jxm[ ؂D9mkJD-pHa%|lHHo|Ti<6[Ȉ4xI{xKlA$L5/S`?X1(Ӏ4BD KLTBlϔNrz3P5}jæN 'o ȅud?@"LD#IjLJ,kiPq2o8t612d '=Jgr[@=^<7h ;/43P (Em/2;Pl}bݧqZ8j/۵cO3FTN4mDR#P[m,5ִ7T'0m0}74uS0MS1S6-41 PvZS9@=>:8MS>==Q>S= S4;mTEr:did7$'d[fR?R&2xN X.p*6U'D-80M7'3-3U?mGHU`Eb]'D[aSA}Ca Vf=iU9U_SIe'6ڼ5k&MS5j:CUU};%5oTkkAFHUi]%Voe|S}]fzVcDVEvb7Dn)=V`& siZ/xx`K2y&Az؂Wmdue7Ճ՚օW`}CF_Y%UZmSWX-׏gR/KRYkTMXWm؃Tװ=SeՆV%XgmZUehUeYR,Q44Ǫ5* .zqrz܅'(Z\_(>Ԩm(2_\\̥\ѽ\)ƚ5s]%-%Zt(Cw]{ ^୧]=^yނ]eUҍ5],'ȥԍ|^O3.ϒ]ne_Mm=_P_u_M_ }N`e` N a߂%y2>]^U^}a>lnUaea݄:ba%EF,L%f&v'()*feZM-V;+/01~buP.Fe#5f6vc2n3N9ֱ7;<Ω+: @A5?F"EfF,֩DdrJ;aIdOe1]>~N6֪^0Pf6)e-t-КeRe\e`fYf^fY8bVeZu[&]嬝iQ[fYfhv_-nffgge\m6hP {ut>fhwVxV{z^fpgZFu6%0o`W`}jTnV-*|ظ8苮h}hhh>iiNivi.v6izi ihiNj葎闦ifijjhjk&i>jj6inkknꜮ鱖kf꓎3}̰ 7V%=䖺vlv~inj꛾엾viliFmжlՆfmj׆m׎َm϶mצiUl7\V(vTininǦ&fmlѮnɦmnm^mNoom>nxX  88n^Fp]^&oon݆^oOm pmpp /qNqn͎ )k(]UNpKV f= ~쟖o~oOrVm&~r*oޮr%/.m2%go_(kskȆq/67Qasc/hJ^) Oq>q_v,gt5i-lp^t)rOOwMGtiRVU(_s+VvH~@_Aw}2tBr(3餞qJ/gOvЮl񚾇cuj?q.glfn/oǞ)[( Wl|ߝw|-b_b-*1i_ꔾJ߸isOu-grFixj?ixf'ptxNyӖ̾o5xn~@_Pوvw'qsE8ch*xK`24@34(^q(s`\|w 'x(㛢?nhwrbvprTW+Ɵp>|wnuS/wIrs:xY xy_)COx'{Wpu|@o]s3 B8~ {h'm߸qn/?O_w~'Wg7kF@2a7l&R_~֊ѣ?~,i$J <`_m{ѫ |_J9?OUEP= b/ߋcEә,ڴjײmm ҭkWD}Rۗk.l0Ċ3n1Ȓ'Sl2̚7;^y떯bV~C9[LmyI?)kdC*dչ4U~t 5̾ -othsn=ӯo~ׯ2 #wNcCC9aaN69,,O9g;4NX< " "07yWzݷ#=#A Q~֏?)?csK?D[+J*P:7O9tYVS"l5fy] G奇# y(*(Y 3`j!O?Oʨ-uU8pS7Adm8SM&'d瞽Z\z_6X*,Yd_G/P{4\12&BO 9)]KFXE"u'V2 7`cO-b[22Ĵ8\X^~hs𡆶[. H=Q"&͖Ҡմu>{s ?Y3.| sx 09 >>V$y$ms ˺N%/!bȌ'L:~H4rE]w/q1Vbi+ZB.gJӢ'==GLij 6*bXn9M xT80p 猒:pwG=(>hZbpM!z)8I[%0  Ja+FYl`U>7ӭu~7-yӻ7};]ʹ<B8OI65`~ 8 wt@)h 9%rsKp e; x,nmo.ri>9Ѓ.H du#w-!@'VA L@ Yzv,4Blj}ewq-N 5&yrzvz#NjQX"v,4N@$ _~p 3MK\;H> ?ʔƘ}P嚵LdJ )@h[I 5ILByхˉ\޹_XM߼ C66Ѓ6`C=9t9.!ܿCCJH8yG՞X*+ B5@\IXA@*x ]4ZB" ]!\  X>NX7'(A28!"D9-4Q >/20bMb eA9:$+ ,*C,"> ..4\~ /$G` )Z+qإJq[ȩĜV%E-[ ۍXc"!/C1$2A& &>1LBuqDc2@C49 L>ФMd8C6(C6pCFNc$5IeV ?ǒqhZD@ :@-[ԥEL,ܚ%ߝڏQD=;T0bW3@0\X3 @8"cF2jd1"ObiStbOn ACfBfBZ&Ynf4Ղ>܃"B%Ԣ>eiA6gs._Flk@̙gͼ#ag[PAF 0:T?C>LBeF2Uhi[4 2Fz%oC=C 0'>,LBD'(,4P8-&4beαkxvOr,qV-(C 즐.aijk gY脉FYArFqhǑ16+ u&Z, *i=&f⁢hO. b.R4$#B)s^A;$A'\81F$j@/r88$|"NcmVH[ !ֈ!ʠ<|5=?tBf +d%^LIbLƃ~(. 2A=U(A2Ҡf3 8rk*k&$&ʩ*E# & :X͚)+| Kj1؛"V4|6lk>п֬-,lS-{fo4 @(,Ҋ2gl#',o:?s^?Њ4$̥+\JΙ6UWQ"c8A$@\=lr:$ؕ>7tqn9K?(6{,+:|] \xh-ͮ#AA=,W\kb$& .4=V#=%صR[xoP)!*&h`l訊4oPȢ'"kon:яdԤ,*9D7.@-c+7b 2r S=́)Z0do },4ˌ/;'K{q۳BkΑ` :px)Ml+r6d%:lCFh[<uߤLɺQ|x#~[oy_$./2#7rI"]v= oIo~ 28kbJ+y#2*,(guD%Y-].rq2"1-e $Ք3?34/ׄ>p#ˌ1'-WM;8c.g o/;l% G>3?J`)Ϙt4AGC7C?4C/4B'A#tD7tB_ES4Go4CK@DgD+Bg4D4JD?@A%KL]H4tAA4F#D4Pᖗ)Qu9јG:,^KUUSM|f5^F53ͨ1~ٙ܁(:C'a6Q-3T7B'M}FוeZ:ޒu#|~"bg\ɠ׬<:R ?` U0Uw~F |(a.{Cx' wfsz?` 'U?> 8?8L'PBzk@ 9i{6@;@s W ~8dI'QTeK/aǯPAt2~wve# v20kG觐!>(TԣxXLo3^O^ݹW1k"OÇ'VqcǏ!GsUyspQGSFf0FiƧQٕH莏X(g\W Q{$BKl5AP.l`r*/7+(fF%!ftWL4ϘH pz'hCaSΔ5MQ B'IJ QPGHL IF򪟿* O4┫]Wւ^k2](2< yR,f ! \TJ𓪸<#XA ~|T^@ P/P+P >. c)b5ZVFar 8q װF7+dJ I(z󣭉h<`pq9,jҥ%OMֆH\[R|3@8Up&8Ѻnr%ͬ4MN 0DL wp81 6;jTVg+4/ƭ %y  !AF =Q ܙ O9 vش>8w ,v8aC~c@Z*wqo-.[㻴.q_RrLJ7`Ox:XqLq}ס K7Nrb~B(+}NկrQf_](E/qkWGV̀>4C% cұ툓W 1 W0J欛j|EYv UkX߂!+..> /rM`I2ʤA]J'w/{Pp !s5Kȇctd#Hw&> aC]9xF=j/);hf<POH/ĎfAgo2*leohopA0me&UPR&(C3tt`#4#:#j0t`Rpn)1rPghq60DnhEp BNKЬb6 b! [ 0Va [x )WD` uF3~\~p`N!h@ 3DȰpOj@^a uFq1B pIL)U숵V0C& _!rVR a T *  0`Za bp(! ^%qpD Q'MbI3 V!d3Έt je|/naXp2p CT`@1 l1~^ d)q#a@ ,@'`R@{7`xcX# 42 # Tp 3DrVRB2 .a*h.J*RlR& C;#o B@2"`"R2#} 2(a R)1@ r eV!!!._a. b@(afR2Ԡq ϽJJE p,/-Q s gp7e!;@Q36^ '06sc!Ԑ!|* $ z1o cΐI@ .!3tj@ftEUa L!j @,: >3@ʮK]Ua9A@Br/,i03Ri*XxB5hM7=G +KB D tLL60 5Y)ʆ%*NO xt2w˂i 0b4X `m`T@6jY fd8tJ7* v*h Q$A@ML!YdmB:ruy1M*h*N$uyMu7 X i<ٸ$xu `a  -8[,#Ģ ?a lf#?aU:yHCALP6mˀ?L:AyʘxJ\Fb? $" *QmÙ!?d9ky,Ԣ8$4X`Ä:].knVnyZ*pz4hBY55x$DxAiB^D!$y&[X@8`#{c$R#>[c-C7@ivGu!cm/{կ*ĢrTdڎ[ ! h JDāQ-¸[P F!+8J$7taiEn⪍C0Ev8cVKU-uf,V ppb|11෌hmðF6scdfbts!©DBt3bɿ$"J,tOh`YnYʁC`'fOyxbl$dNſgzR nuyhm7;{y}<9#*WJĢ%A` c` `ZW7zЯmJk etT 0Z'#]Ibm{so{wى٥9CDғ=e|u=]ioV ]$ݥ=iڑ3]{=ۅ=ىg=jՔab &-/;==?S 7^E~9WQ䥨U)i>[UA1>i>^^^O>mYW~ ^9W~BD$ bm6h r^쿻gWޑy4澶>?ÇnҽU^WTuٞ;9C $yeAdZU;y >_Yi{Ime +e=_4=KߞW<=%^n0h1E LSa7#qVB|R%I?S,Ƞ *D N::ͪok1k]ׯrݼ{}gѬ?=c}aqc?ÿ?R6s:x=p Ph8w+߼/ZmH` O22Yw~2HZX=1 A-Ǐ  FA:%2G( ?NOaH#?eBFNN2F1FQO']4VYbrT@MS`"]^d҅On5NJi};/[J8ԃWē sLi Ps=Í2 6ʪcba F=`;**<Wp 9:>XN9kc.Jf{1Zo%pr@"Ŗe씪S%\P8)k eq'3d!O􈆖| jLOE>#u8ֽ.4of*LNP\cM7C JQO&JI `WÉ591s?F?b͋OXYטW"oӞ~#9e?E:@ ]MECO C579} 1 rx46:7儹?5dyMȘ|"XJY5?^hGp`aaӇ4J`-NҞ5̀dN012oS;-QO'nr#8N89 F . G>7s|:G>ӏu L>8Mh /afn4e4F=3l 4$P+Yyo@'9-f/- ݖp #`O2AfK#2ZI&Vbt3=!X~<ȉc67~2'9S#,|~(2͘fZ.#UP5*U#>{3(ȝHPN0, Va([0HPab&o~xB(3 'DwY&AGYdp%, ^r d_ް13]S8`1}Ӂ59*KzjSh6`t| KI^J!1?s|s8bk]82ϷGlꑑHYF2\t؟gtYe `0Ҩ h  Sq()g=̨&U K9 ԢF<"Pˁt]nC< (/щ @T/d@L>&t`#+r툢.(rrtW(Ȇ6" c+YME)XƲ÷؁~ ӧ]HvdQ $B{t  =wq :?ҁh<HE8qqD 5k0T&*T@qUhpeHs)fHZEY#jtK74͑r%J4`(6Co& D2^ > ~G ^j w@I5&k4+2`@: K5S4y3>i> mD[Ęއ;aD D=a BF?@u9x,PQ˩] |5{zpb;(SZBB*Ϧ%4D!7i!܍[:i1!RqoE-nWD/zej:e4KFXr =.>XOmKi}C0$V*0YC(Є 73` S7pilϝpCâήo+~"bԦ}kC b? C~iUE^8~a4g~Xh] {LcpzFM+#xLj?lI<u_70\ _TK1hc -vCp/5{p }2אf(Hhȁ!(#H XD^ 95a},%r$7b7SWE&D?`+CpKsbaLtg?w|KXcHehgikȆ#N" ,b`P}?mzS"` g?ٶa q g]~dFu!mȉ艟gpJpxCEh]l1 )$(ȋdx2A4f k8hKe|߁h׈٨XQK[!fwgጭUj׀i8[8XfۀڸQ1>P (U i)Ә(DU@{0FB%u?O΀(W"\%;%H`gf)E' V0v'i$y3s  F??BF`Q Zc%I)B?BY w<q8It/0Ȑ{Y#O6( p 8R1v|@@P$@s`fQDi6 $ )7`  aYpްpR&p"9)qp@gk- XEWCp'sQa9|n e9 94PvPKsҐriPQ>| eb2p0)9Le $@ P(4ǡ p ceIs&1d)ZH)С2}&:*|)ZE50H:)Dڞ+DԀe&Уp2ȣL p@N Fsp<]ʧLQbiTua ZMDWbKjF؞5 I0 EO ڣ ބD_,t D=PjQ*0-Xɫ 2ʘO  p pfZÔDrBdwPcT }JH'(!jf+|㓬s\ZYQOa@b @Hʭΰ0C r2 Q\jD9 p@ <}v0;ϊFR7*aZEx=M@,JHȬ psʮЁ:pNP0 J}:ְG*!bJ)ٰ) NV* &x!Y|6HJRZE)ٷZ!0PNc{}˹1GjXWj"(L c<vPT%jKC0FO7`LѨ'+p Hp47 2  Mݚ.*[PL9@; 5I:= fR&f+uСDKL$bWZh=J&{|Pr3l EgkqȽ=<o ) kaTZ#|01 \$K@Nc^ `p'n2  -VZ=G瀜I #\s |cYR-a0`4 p Ё UoDH\\ `m}Ft*( . 9qJ@/˿ ,L `ɬ Ϳ ]U `\(EV5R)p ҦWz {L0i$2)=[=?RO6C L9Y ꚤj H[0FFҷ̕f%hi_ppKB˵ HvQ1Vy>rq|82#08ȬsҲFGm.M}%8Ud 2=ppC:ݯ=l!xb-sMiKfӅmf~#uM؅m8cz -ٞ!`@=؇ٙٚ؍fqY֓M BW͛ګ!x4wXڥU۹X>1QJQ o؆:ā}ڝ-,W`9}zYܓo}̧m(o4:,]籶uQ.-]o5zj7=!-OvWx 5̶\!kmQ Mqˌq֨vP a"P 9@`q %@8pQE.V1s hKJ3 9Th.OsUV %I;hPo&d'W? `kN $\p%E$0ÓȣpQR`Bڽ'}YO1 >Hqu`PDPjOEI^}3u0Wn>)DpMa<)'_R **3+c+r٣ $,BN'` e5y jBt5 ̳0&I.;H[hcr^d/O^ +b++SSte,rYSjZF} ȌnTs"Yb.  x@Gf')Z B2PU^z3tO7cXr:n ې9Fs! 7#W*vZ@mpPP]IҰCvp T`Pg^1 o'Tp@ N> \` P |w"YC9J]hQgzQć0BÀ?V5x5 "[r 7 'j.c#T%8h  *ˠ:,0 pH#jdC%NXC|D0Cp`וҀ`@v W=|v[q!e\4W*RH4Y]ZȻ#I9?MK`[%Y T8! 2VhB̪à~?<2j5y5kϟ5dŬ拟?y Tf5kZXgu;p7ߪλ ڥ`=~VEẵow 6o75( b:/U Epˊo"r"Z?ɾ JDb N*IJe AЇxILjKRTqE[,ȝؠH~RIֻ`ɩXc%ȑ{숂`I`z| ǫH2 6ȟ"iإ )%%pTC'Zwhd'0B$;892y!Ox:4kf ~I-ugc~z5z礔`<#2ƃL2I= }" ڟ=b ᧠h* mGP5DY"83 |;hDӇ]D~@2 F]¥uxmT.P []2vN ,CIxG w( 9Dz(/nOSэl`CYPJ6]% q@qfT!Q jlA`! d>@=XR<]Ѝk\Ca|83إ xPw@h\v¤٥AWvʈ3P pCE0! T/pkBP&.` $ 6衏CX%h;NzH#.9ى >w a@4 2 HPFXvюla+}|"P!@7ԃS!20 o`a R!@ӔéažRShnAЄB^=TaH$Rq zDT?QD ,].za-M  @&J!FPU$4\ F7÷";)ϒ +(,eLII9W$Vg{+銄zb2DrJ7xN\Jx$A-H&eJ%&C0 \m<áZ+bCG`Z(>@a&/3t9qV5dI{AkU3~G|bBNS,;V-9["6tdc5G!X$;MPC{hCeua(|~-4IḋmaY~4mFgmI{0(lK|ˢ~dX3JKpwA ei0(P{hYg@t3 ,|'| 91 ](/ ׬MzIL1# [K_Zȓt{L S6=y=Ahz) Mg0 3l5NR kZgX bQۻx@8xNb908uIv(Pc~Pb 4xP 'CeR"Nx!)0~&0e P0ajaeAS:BxhqPt v >H(]Em~` PN[i(HK cDTPQW}UXUYUZU[U\U]]U` VaժlrEt33eR0 ՙe "_ _haʜm$fbjJ|((HTZTQ%Պt }88YL@|##Ry:؇XXXXUXXX YYXQÓ 2ueЌ gVxSFU H+O`!b i@\uh g>mWxW|ԃEIzW,K~J ZE4Pm[}[[ێS 3~ȃx; 4yWQp`TUFjȧ(Lx0KFA[}E Җ;m|9Rیy8 (# e[]]ݐ5diJ|@?E9AiP)`}h$L'-Z@PPML@wxyyPea]Э^U+PL8K:ߖ?@=4JP]` M`ґ 0灩ƴELH8#M {Fal[OD/wXD/vHMτ@.b#CckJk b/ NJuy`$F 5luZ6ćt+KdnDDNEk@0~dHd`܌5dLdMGS5(E.dR.eSؔuGdVneW~FSe]bK~e`faNX1[(#t|efnffifW&t (sdgfoے$EX_fs>geU2G؍́fz犥ٲdtgbb~J*6%2Ԑ؀yFh{n璼S\Ehh@TdXdpDH >izch~ihȌTXĚTy؆!i݅Fi~ۈ̉i^j?u2BOjS-8}{[ (z^ɤnj~kAX YWiՒ3J(dJ^붎k~l.buMQl؀Ղl{XE YɇKНPHlg[>lbl̫{ȆlwK۹KymlNndM9PEyVp[PEiЁ}LpNY uR|"Y ъy BLuڭ, Z܇|h|* u8.1N *SLX>EXl3~XX.! ȁZg`(z(Kqe0-KXaut8md` ̘C‰r;e)BaN@}H0[)e02PlPlXwG)tJ|+ЇI6 WszmІtdW+KsDG.Yɉ`S{X}POE` Wa u*>GV fH)4`J1csp^q"@  ⮈I(цH4*b.o7(7U'CZ&.S2=ștnZkR!鷕hX.` h(xPȁWP#RZd\s} ="ha 8fp"CGJ kh /*Zp2Htbyg|j+:PnClfؽXЖχvx'wXieںRu vwɅЅ I*LPq)"[1s Wqq]'V`OjQ1YUX~}ar~0w 4{q?om$I/p- "w88exS{0~00(@,{'3#` †B(q"Ŋ/\`LR99!ygKPa)s&͚6'^sx&T-ogfTuh͇v@*GܹqA)[ܬ~,x0†Lsby4Ӑdi8eF|$)$Očɇ(Z:h ȃf:"&1Nx"Irt':cϮ}kv2^ /dKsێq+~߳6ܽE-:ՕF?|b*RTc4&H- q3(FE@!".1 a0.c0Qm \shMC7Ҥbϙ{gN&&P? c/Š<5l!U5"+Ï"43!]}9h\sϊX(j6ӈ9SBKV ,$/?d7[-dbA5<9!GK@HtAl}g=bO&k-VTg-iAf#џ<-Oz*%O=Hh9P+ :PȰcI~"W]:,8ď7}՚;犫<鴫Xx3>dopc@IĒn8NAuɤN6$\pC}o7%xL9wKDǏr9"Ηcخev"]駣>rPLlTUPTE?C-Xy Cg/J\5*>@Sk}>UO e5ʀ=o("gjykBl -}! KhBlx ;譃2! 3H'!{y~A/$VJ\8\#dR"h+b1Z"/1bG31j\#>e4O;1gY_?2$! iC"r #&%31$';O2I=L,b@"%[J0& l]&Ei[2e +7) ^7E1m8<^tx#=Ugc{'fQ(p6J^2'\-CF۔R VQp$ *63LQx 36K_8O)~ +ˠP%T^D^0!h2ẍ́LU i^z!CC⵫nc]~#qyb5 NF7{tbK{C6R?Β(`@x+O3 J ym NGjg{ iǕ`P@ g9ڧ }sNPCЇ|aI ͗؜O $ $g=ҟ?V\y. D BvKSbG30T(:Vf׿yx~]/ dAu^QQ%V LC'* \&A^^E͋߱$ɥ-4 t]e4qŃB6yY!WvEdmDa򇢍`C{<bj4c6` >Й?MW !_=]PGYbEZLFeP!K԰T;(=WeBTKTGy=@K6$6 H`'W\a/3>àI^~qF^?$7?6dC7X%9 eW9h3"`@\}$K @8`4a2?t%9_ȄTq}KB.4%Ŏ@E"fbVk),><0_Rr2'}H& tRgu`:m6w'heTYgyycm2 '|(Ptz~'Y8Q0&}rN}J2h:agHđ 9[bhbJ~>臂p49 ](kq @3A dh''P\biGCvH!g0CAL*hVC4uuBaPxi`\SvӉ*^;j9vVU'ةfVݧ"jf`&:Y4`V-,=<%h<Ă4^g}LLCxU;%nΩ("kJ%` mE6YhF?f?XJO pk?lCzkՓr@9dž$L*IqҨfE(A%E >4-Ev897$,v Ƅ¯PR0- IV,Hp(8(`ֲdi>6(T>hlA"+Uhj3A(p;C"Ԁ,*ن2FlAenDX GBp@CԄF버D˂2;K HZt MG2=>p^h탎=6,Ƭ>HN*4>Š(\IP>*.َŏ"ԃB H|CH-,CCdnÀ-C$I@2LõAHA<qVď D=dE`*lDHh1]/ *CG)B+@bVN:2`C4l~C+ ]0ү4HB+<x*("D'`C- #DAD𒦉'.$ FE<XB h" :Z;5LLŒ/r0 -!13d/@/x).i')?L@t3_>@Ü"C;'qi[FD)9>ЙhpC nF> 3tP?Dp0l $;4ՃoA! !T";ȴ 3l0P+\?rZ%Ȩ?$W)B;nsi(c?Գl3&04I u=8<\,Ch.X43A=0$:%`%4A%UAIt,C' ?A`~U"4CK EJ01ԛ^jj8"ܭ/ʆLZ)/2(hXi 7?[k4@`Bh ƛ3{G"k3$0nF'\9Im(J'>6.= t$2Hxh ˂ㄔ=؍!=A"[og93p)$*%@thn@8g53 *xxҒ=#iGH$v>`/";8;(@8i3AM?(8>s@T@_7d摭yi8gyJif)[?\`.dI7hI44@—O?`f !XK$2`7\͞gxϲ8ւ韺5ori][yK~MX v԰nD~u5K7GxFxB e™Cۃ/8{v\6_1 A0B4X  h4HAf*Ik͋jenpҗD?6_yj1&MΫ}VސCLT,d+gF~苾LCEw1~\~/k?'> 5~fM -I s3aB w55A9_0?{.{&Fs .Eh?4v<YB_Ŭ5O^)Vx#PtAƊ=(eJ+Yt)<}1 x`N;yhPC5ziRK6ujTdO?}vuei<ـ#I@XdXsUIӪ@zs7iq{'vrdɓ#S;0?}n5\՟v7 ųg;xV"نm{]ݻy@9wГrs] 33aXsZ l;6֏xO~WNIcWx9kO>ï| أ+0@,K=2eEG Rq6؁R!vQrh`؁(iz;88@@g'vL0u7[SMᣌ{9ǎ+ƞNG{zgiHo*)$.5xQԹ~B*{ҁTR8&)s~(^}M+ kQ3:X%5xSbAdj["KpVPY%֠J|q)AjO "SP9ܗ߰87QqÀ 9h JV/"+ heO^D~0IO.VRq}DSLQIe݅):G=LM@泟un^SJ !46>l_C*~6_2ٺ6h'٬&Pc@M!@l!q4 1  9jq`;9$s9OX&Id.&_>NXX'(ukGx[nsB5Q&Æo'QA%4BiJ(-{/H+cR m۠U,B J[8E RTH {%HRA 0xZf90/>4;,SRIT%uxB' 0h%cR J LbDJAn :Jѐ @ [{C=Ab%e<@*f?8c =1ăb 9B}d;8GK:&X4_?܂my[*bVv@$5@ @1VpQdI;Qf=9E*m!(QIgFZβ; ;LfC JX&%GfB3l4`ͳa@mZXj.,4X- j;m@}S%dTJ3wO=cz>M9{;_ʗ ICDadU8/ 0pv5({9Yt؏w<9ޘ0ejO>f:">BOL,vސ+3JgG#3)[h#9 EbchԺAC ŠI OH!q19sD,SDh(fCd5`d2/(rAѶ5cuFm !Qqtf#W^u_Yֹua^viWuu Wӝ^wzw _xózW>^ {~x_9ybEzf+?ȟS=_*y׿?œh;< {_|gD|?7yz_/D yW@isԟߨ߱lXHQuu`?ρo_OP!mMlfΓi߬C Pnl;@^=.fl;@<@,)P @ xa 5*hHXE|!E>> IdBJ@ eL XP!!ǀNޠdl ! 7Q!̠*n4#떡TX2n-*F*ʆ< YP: 7shH8JpܡF0pX֡vu!0 aQava4QD1ƋăX!@ tAo6!| AQXQaƁ a \QOmD"YnQ%yCLn+wU@a|AZ0jA=fj^@9aa2$AIϤA:=4Q5*!*1dr"@ 1-N8+E8n% S&/8f&K Z!.9 h-3 42!S  6`aRp" \S.ep"GXh$cpH0_b2JC`X !P2 N==@#N)a*9!h ֡ 85A"9!88Ŭ = DQ .*<27E=`n09 \ eB-T@RR H.+ёopnpd3&F9F24mo CLSb3&`2.d#dcAt }va~r4 a46R't!a"s--¡gʲ%!:R8.!mlԆmjq76a&Dt;h~A'!(bDD"8@0b&( Cl' w%6KTqgvr$!38i">D $bfx=N"-8& ax/buKw"u'"jv| V8`9 $t>G z9 !tw-MN6( zs"-2$"X"kI& u=01/>CJJvی8W% ~!l-&~A" 7@I'~!!VwaD8 `r@BjA*a"X>0M_zN؍&جn.޷a($B<7t- j ! A"&~w{~Tsb0:aa#97Pl'_ LwqiAg#Ds&x#sUD!wa8 ̬zWyhƣtW 3Y-!6麢w" |\"#;Bo}XDxQ:nsŁW<@Azt[cx7Q68UYwڲ !<4rbFo!A {;ox-tY'AVץ\fD&] ax!ڑ!7-a(ԁ1* 1^Abp(D {;)p8R*+bALqX|q>%NwsT@h"Z'&zAaeGZ# LP!_׬C"9[8pA/IC 8f;C*lB8<6d z "Tf?K'4fy;@|;؃ZK8'D'<<()$A tF[` ~B@)([e)wBe )[`rAƃ Trt_b+RX7ڀܡz% !-u8[X`"eXi$b:a{7y$V#k#Hڭ w`O@K>@MzkaBEO.)!Paz'(!"0=QFE"6W'؁A) S`O` d= 9|aіr'6A€l')zBubޝ =Aꀿ{ @^&Nk2:2t.ANUb<֎ߗI:&Aj\xuasˁda@w:^vpc dVLfi[D#hLt tqC'c6fgѣ^?#cO/,).!UaHck>!@ez̵ ̒ʜk' !WZ^VE nfkr"]6?`A{ba=8*'b a ^ FD]T 58Vglujƞ~/@z} 96 dԃ͛8sɳϛ'Ѡ kGW?w*۵o' gkW?LOQׯYIE :3ե%ufd_V>g  @pZ/ :Y3!eM;X)ͥ/j}&SFKM(6N|$](@rؑv(JHC@qUBb"&YHCkKO=gI@yPiWtHLCD|qIw"h\H{31; СR&75F5D(c-ԈL?ӎ dq)PM *AL?uN qSp B8>LRn*3Yca) R'Y!Ayƙexb*g%HDp $Qɥ{Yů*f+c`9Y>w8Q?LJEh_[>_i hc?wHT>ˬ嗼;+1faۏ4 JJٲ(OA> C6⨣?})M&9 N_GdҘTWpL3E%ќ!QGZAK$0Q/> 3eٔcA 8SI}F +e /tY_{\Zɩ;U|m5X-8ɥg`?!ʃy?vwA0s  _PnroD9 Z'T?gC}&' >X5Q<5X5 qxxH^[JS>>np@0<%c|`C@pXwh[@Ha};`&CֲHT 82AY R쇂ڀ 1ߛܹ0D~y^2g'1jH1oy˝RzG> KXl5Qq42z<@*hQh5D)fQVlfYsBQ<g4y8|7 NoMK K[(+Kr~x>0A_Kl0G0AG鍴@_+k ?\ δ")0r Aa0>})L;z0K0J>ERX`IMxV#򯀝R`ۓ9kmze =e-%G) A%Fc8}8Lp`f6 r̉:V -n,:l6L.=F:ѓl9ԆdhGŒ;65,nܡ. 8x;f glԙ/^F~<;_يM*<.,GH}h ,BB` EZꈎ+`l$VvE&5NLY<S%6<{8&*{L8N42Rȣ|LR;j%Q\8հgMk3Oָ5xq[i@-("9xfnjIЎv7 %ζn{懣]7+f(ߧ?MZ\mWη~_CYvIzە'N[| nM> yՎ]mOWG^ d̢&wvЇN[\f7wsP:P^V ַ{`NhOp~,gQwNO˽$vckprOj@ӐftI_Z=?wֻgk`7%nwP?|%>B&}7znZ=O[7<۩+n[x%6I75på"'Gc:IlTi )Y 0`0BK));@;P&X0<0=`#a$|W]u/طi :x3  7K8<(v `Xu0q#y ݧsh؁ $ X"J7 ?$Y p " @ |" Ё3o@ZjP fop3{1ݑ؉p(1(u`1fPxbw@Rp3bx1fp3 BN\Wp3 ] ִuHv]8i.R?m?3 4)" %i`~@ q 4ahKi%(m@GzPpŐe  p sp@S1.ױ  "y@W0ɐuIx`БY!puPP% 80?[ !r@^,u>:`()vpY"$yS#Ȏb#H p4uY ` ?‡ AxXGs30Tˀ\ǑuI)zYIAy TILytR)vUuuHQ7CGPc ^T:)0 ap 0p Ж@P FxWU39 9t&V B4jP 0x01&)Bp A PimLjTfP- ?ְ/p - q P@*EPU:( LIKy3S YZRavjPbz8[ "٥@c I-ZQZ TaJaي@Siw Jm~?mhrp hY@ &z~)P @H:Z@ X &5 mU}mBYէu1$ʼnOuԁ[:[`zY*j3:y[:2`"Бzuxnp3H= ϗW`p{@3 *& " z@?P" / > X6lAkXAM h[הУ۔᰺ uz3pbHɜЙ뺛u [uJ`ɰuٵG99N轀yyV#RӱU|9%WzA dduu7c8pp p`P_]1\ZWѵ \GUP0S"^ P x:{\h:P6 ɋs|  p KM SO ClӇcbWǚz+u Y'Ǹ O1ƅpɀǸf5 \JXaqpĘ\\p nЋ5h? ( { Fl[V/UYŴwnSIqCp:l5{7vvxSXv,d73Dxv܊^ }u Wˌu'I'3yKg ˾7,@8Z\s ˬ< '?[#n?yǀT"' Ѝm} ɾw# &5}&}(v[x[!gЍ%8:uh{@~2=ԅst;J}ҕ$븎 nLD-fuH\ p\9 p ؐhljwAmftr=t-qvl6nkzo]ׄ]؆}*bu8׎Vْ=ٔ]ٖ}ٜ٘ٚٞ٠ڢX55=؈ڪCtmƃf~V]$7ۼG&cO [۶= ΍k={=zjA[Sױ@f@eWݮc2 [FkeÑё'n=n0mVm$-'Ϭfa>a!7bV z"o\.ñ Y$a ̘*e= &!d (J`s]O.1rԑfA0 2a05<. .߄4]\[M85&` gp0py g~  mQ) $yB*r0L46ws^V gZ #1 @ ߣ#M +0sbl>f#7gq ~!k7W O0p92 A5g=ꫛ밮C0Kdsr>^l A~= z+&~b1(vә"F x",C*NPq;& cd *@ kf2 -w06D9:T_."csR.`aO1V"pap8`*/ؾo+=IMۏNԭ\O  X`"H`$qCsqA31LJQCGрy!y3;eQ6Aq0mQLqp8(0 -p7! &GoL?pur'խ1!@,!+M!`qcQPtN' IG]˰@U)C:QsBDP*@*5X)aѯ_ =+ۑ0hD/(8HB ^@3}Ζ\3 o{:!wI=|\TRM>UTQɫ'O>Z}/A5@VZmݾW\uś֮^{͢BpBI ĄDRbȠ%jb6:|ꐢhA #Q.(ΠC`/H ƱD@Jܒz\ƣJ I~ ! N0@j'(%g+QGA0, 7SO?7CJceA&r)}g%lI,U['!n|%)ꎰ{!!}D`?~j Ye6 vA0(g`~l?#5}r]m|ym\Y1{DhGwY)Bڶ6 a;  ~WfoHAlPSP&h/Q74 )rBjJ2郿 юtmRb{ɦe^b Ucc܃>A笻F1awWoZ!6%q'q5GݖU'>*7|3}gU .B%ɤOV6A97Q9#OTGg矇 yR*k,{PT=|mƹ"y 'x"~~ygTx4@+`Pʀ`%%K9Aۓ=v{Y#AЄ'Da UhB+ֻϴw zІ7t(SЇ?b8ěgV!/ؔ9w@W$ZAR_c8^zZ b&:ъz8@*bюE2яd QYgĠ^XG<p ZjЖGђbGAvғ 2lPXXY%*r1yr$~!P!XGr P-KV- a[[v"s4nWTZ6ەf?j48|eQ9X!=|(/6dz--(:h /+M=0 nj6a$mǟ%Gu _Yh`>1Sb5#u3L.MT:h0C d8 !m[{S!,~c:{p䛱(Y%:A3,cP%B}<4+?px(E;H:Ng4Ά+zpP:`zC.7AdfDiaِ:B, },X/qo<;J͛M wYB*Pq/A 5>'w\Zb5kof<3X\'$c5F "j}c1~0Âa.}C="d8枻os4B{|! %>D ~hhq{0E~م!P"~Q h_ P)0#K `Xӑw@hiH<:ϻõw(5 w"(eChs8xL(=(; pA쉆4e;>D_k(>9(k93\__ 2D=au=cAa(0`h=P^ePI(3oÃne(?[4:tJz0H{Q04; Rj@8˪3@VH sxAO>hWLw7 >[h4}`z0S ښM`*n4ZFDCA\H]0d8;}x;8Çe@0 2脚P6>pAspqIE;# Z+ DJld(JH[ GڀTH } 1,V%CPA4?Ȁ!H(TZx=U?e({Px"XBÃ1(] 5Џ_Ȁ(X_11 ]P Pƻ3z(HcDw?DH#KRjxHOs*IX4hz 3(qp}i@K[ʹsʋ9ф(N2!>ˬD7(Tk̴>)>`=z5Aesy틌6F\i INY̿{;LR$;C+8X6 iИd8;hӜLNz'k(J(Lx}\C4(*kh;0ćm:8O h@TOPJlDŽhi(z Ą|T4G<%m " NbT  eC>*es-0CC43l07N r(|@564e+/$[5@5ؾCHz !d΃$ASl넻<!uIyr"QR&5UE/(|m̉1} );C(X)W_ ROx؊xVO寫/1$5®SRrnoR jQr3JaUpevuRȮVHW$5{'M{~Ekhu!jW|Uؼ89*~؈؉( ;]؍l7nّؐ%R!rؔ'UϑuYJֈj֗,ڻ rs3$Ulm؝&pRڥeZONyL @ٶS8JP0sE *U$mڴU ҧU \V؂UT8r [z% T-uDž\WP$-ڿ3 ̂UH"؁Iz p H|!G IJ DEUyZʽy4hUW XDȂWS5W0TE4PTXWPM5hS8D^ AI95F`8y 0sr) 5G^F +P\Hbx+` HKS^ T(-V\!l|8k&bXBI 8W{} :.kk' "۶޴V_T0}T4VHWS˂ f]!H VU8D]V\*({=E~PY>`ILۅ琂1)*,P%Q ZȄ"Vn۬buHU%W@fJj( _n!`顒kZ =Ё(hlig]pS&  7#4P8vr:< Pi(2 .7Yt8Fޝ+ӓYPjm( ?-]4^uqި~0ɸ"ՋIԁe %\| sڭ+3o 6oo0,0h' G&r8)p;ؘhW!02P (4; (Oɰ$_t"yNЀJp:dR[hx!"Ry'}` Yh/O-78$Mj?胠Td2@(yk{k>@B>TtZ3 g 49ȝɈuDbdLh)x`h>h^widYqO0KTv_>H8`~|L0YA@ {_B_ߠw{G]qjiE>@(eeAd)Xt!?vxFvQNh#[#+/؆|7o%Q8 ~40l])yw09RNe&y7!8(ii`هwpv 0r:9P8?WKg}':V(c PK}a}捚{Ui7UM"lj+pCdXd#QPSؐ偈i~p8|O:~˧B-da~8R.3HcF>~}%Ev '`GDS{b|ul)ԨR^O֬qϫW^6(k,ڴjײm-ܸrҭkլVbW5m7:xCDŌ'Sl2̚-+ DLPC=5K|rVT mxH:Գ 2E$xFa ́t t~0T | "#q(|S7%F?3n`Nap7}ԯ ϼ"ވ?a(e|CXi YxQN<-BuR֪STB,+~|0üD!F ;{] ' +U>feq4@dQ!*'4i*|RIPBH C<YK%D޴4 ) ep)?A i> hܶ+y0Q>u/q7iΧ>+h-2Z)c(k_In˗b}-jg1P 4 ?mv6lL0A:pR Bx{sqlvPXk[n@6npڡ^w}H hy/fZdGH1iutyێ> D {ۤs_CtS 9; B j_t|2:p6+E>fö">E*Sͼ[CO|> g(.sdC:9+-`~?!i 8\C`0> JUZ[pEJDDU?C6;OB s uH G\Eq =?Y|[>[ C3 ` Y<AEa !!ćL@Yl@8!<9!p/1@>9/0C 6?<4>ba#x4K )"D8؃W_?6,D4(DM"; N{܃=;2\"&^$&du#$,Y d?YMK¥;H))$_\#d# 4ea>&7榦Idoʱ$"D3Mz`]$(0= tDkf\&$D$D &5N\'{{6Wvٔ#[l'Zlfc?()C?s$i=/C>Qr\ D' XYL_P o'vY}#qz}Eu(> K?#OtpK:F(p&cD>l}.)Ju+՜Hr)BB"h' ʗOLB- Pݩ$;/,EEF@kDВ>LBd.F$T ~'LN;xS'.*/8N`@D'?yCc<.HF/w[Gvk2!o?o0OzKOcDA;@9BC&Fx> \kx 8kHn).ߦ#bKHO-pDmolфÝB0 F8x)pS\MRC(T8Ȁ8a䰭F7tC60q_.ηyCED6b*r!*rgғ,,BXA>*d> F34kM2t6xÝ*k&4(.@%3j>OG|DHFDxB/(Ec2;n^'>`dXr6jT:yY^7Kbjp3?s(=q3XF=O )`B/t9k%(n(C_4FcVGD_anN/(g4I4f뵠]DajaYT*LWcM4TqZIOC_q:4ffQ[h&uZM\\>'OWU<|>Q5ZtM4bY(TG5 )$[cVB/Z@L ^u(:a^ob6uNObz[gf\Vgr5ZXA+@, @+LvY*)+@**l*+hg+n_'eȮ^`f/7s?CUlYdA+) t@+Y*B L BY"< <\B B <@PBPŠw`(Vp(wsH tQYXB* XDVcDf,}sG8*%~88) sXB"B @ H++lx$zxXAs7\d%|y6 1l}:M6 ͧC7du8KJ}Ԍ:\ûJ˸ 68Iv2{vk@,vRAw* B}3d/D:F+}g~u˧x͚2x4B_QD!1 zEH) \=FsU@$_%;8ܼz=,C kg݄ \ DkKh3zNzd%t@vfu;,cBpAÕPH8Ԑ>:$ ?8C9!%-RaڨLyB8̉|=LX>̃:P8Fo:P:,/-|,NBțę;h=ʓJ;z7B~vs yzu~|!N  ̰P B}N'*}M!KaWC l͇$l/'ؼC!HAOM2܎Wsoc4J>(/d?HtKS}tl΂=ü\?SE]-|J 0}3V2(㍊㻎d  PBTQ/X2:;@$$ < ^·M'..IE1dI'QTr2E13-nH ,NPK,&UiSOU^7uӧk?[5;lYgѦUm[oƕ;W-UVY+k&%F>0Q M199T#&$ːKgJ*)zWB|"1 ]$ ))0ͳi#Vj6fDnti͝N%r q2ߤ#׿Svj"IJPl׺ @ ˤ{ |0 %b$3d8㤡6PrGI1 LRLw<&{(}C*82IbJ& ̑8.N_OL6x#Q#1o;s)l&?A -C}*KzB ; 0L4KO,H(ʬgΔ%#A`P9Ǐ(d"8;OS#wV(P ÃJp"N](LSV68=|q;Z{:vw*G@{MT}7>X yzQ 񀢛kY)؏'&'guIG'JǓTQbfzd^D\MiI}xşsYq_ 4#a!!zNޥTuYU%!P*o@8ۅό@ct=' ~GTVѼw+AM\+ 4ulȊr |sԘ9a\FwfTׯ)Ć理%CfiYZ3k̡! tׇău00xodY!>b=mL#]ORЖ?I8r铣Hl#` < #H$-5FqmX$Sp5CJL 揆)<@xL HCKX)\U@%.f!8mAWE,n1OCK 0IB.'ŻQ^PJUt+aKYΒ-qKX:&ALaHH@qt3ӲAŴ5IQ΋H 4NWЙNut;OyΓ=O}?:Oy)NRQNE1Q4bQ|AЅ97R-uKamV IqZI/r(OTE>: =N9uyҢNUU_:DzE|WH!R؆ ᩎmc^Z{|@8th+=up5a:SyMciŧ^5:\0]|G3Ex2S}H?&;`xgG;dYv Ӳ,?aJ8.6 +#n_+ Н-:[x"t5Yη2BƛBdSXq)yG=©rm͇x@NGVؖx oxLv6 E`< -q:Qq( @mo䕾uh#U0ا(Ȧ3Kg'g(W h451 ^as,]XW:=Nљ4JC"5]p&CzX3Vhīڎ+17CNQ.+~4ȇ%.jB8b\]^t 霴|WN|IE >Nw ls-2x&@B;P@ 0-ibPyAKv&0dhFnW!jgޏOhqj{4J0tsynx.Nb4,bn1M4iR:62("xKj#eW#m`@903!|k|Pxcl[ ~ytcMHOUNP 8>sC>Gqnuz/XQw~gOA4gz%8 ")StډaE:ņt?w"i"M"x4+@ ZaMFn} dDZFL ݮ D͂nh"02p.++D& +I a!Vza',` X-oL3X B p ~m,b 1axMǒXH$  1.@hah*Af$+ !ᶊ a:QD~& za [L U T,x!Ԭ V!XmVfAV !;!k!oqQ\\Q(ܐ,+ J F@14h-%D- haarR!!!!A"R,""#32!?!2#!"M M!R$2"%G#a&iR&g&rpr!7#&ur(("c!yr'kr%)2*r*"(!YR$+ /zg! ;flask-debugtoolbar-0.15.1/docs/_static/screenshot-logger-panel.png0000664000175000017500000006362714613236757025060 0ustar kalyanikalyaniPNG  IHDRsRGB pHYs  @IDATx]@TK]S@  [nٝnn@Q %Qva?eYBPP͈{'Ϝn3gfh|;F# jqu:F#?vqs1F#wݿF#C `0u`0 FB\/fYYƓW'`Xx9q߁@~>^X(.s%p#`02YY\n /7IK UT0ǸzA`023勊$a>=]17WNCPA+ &*oq5F#-Tu-b@A(.ARF!!#Wn4%d3x23` YX. `@U`0 YrJn%%E%%e F <&3_"HKY8=`{pƵ`0*ʖC^^VUUئA<8%삂R:3K^F%߃@7䅾܀+z=#Nه\os`T ^^nbAsh1lk\ F# 5UT%")' Gx/9mv0D|.|nJܠv#^yslD/4QʳEGlHj oNa%m,ae{ɣ=iu9 nl(BV a, +F#A 7WVbw%!J̋or [zUPVy<&/3elp"PHlqq\n+#}EH]rQ‘z@VVν\U@(()AV<9du%hR/G2AaՊʊ2`_@]BCCBGs$Aey}a0eLXTT~@]g X3|n}7 zD8',>~1a\_T[m^1Sc?%D m[sDfs jM(L] 3mJuqo8nLȡP]NBD2B>|K) v1R33.*yTvb\䗌bN1k7nhLDmlq ~#}p5?U/K J;`[-r999NLUU+ip .%"ρ8?nШ%_Jg?|T_GCgS;'OpCa$ZeDZY[KeyyQ(%2`"PESbϟ?XlcyNn,i1. rR"4m.ܶhxR*8˦xz2h;۱I&;qsi>ȱmD}_-]г3# X=e!d{>b~=89b:[< jO, Us@D*1ª0vfdd0D'AIIIub)..bDE&=ke=]kiKCbMu_$70dPXno% ;FHˆ.gb9|/Noh:pck^ڝF̀y#g68դcXt8TsԚڜ5CiHrw՚Ri_aP P.f}%7D?J͠Hc!DҜgy~Dd`;uRw4ܐgi|E][" Zgu~*E*y3xlLN :1Cml$%7xәԤB5ȿ|O0d-%EvCaM5wrrHr'Ё@DP(=)ߣ ]ttBF9ٶvĠ dg!. &KpfǏ,9< vtWv#Ѵ灁Hij$غz?vHdDӭ rIF, xzkw0׆۞g=rm2xBL#T: @~?ГBgLf5c!vZj?zۡ>]ZVGܿxcRvL$׉CD>^@[gQ<}I[30 ɛ '9E^HgR [Xo5ɕ1S8VsSt/F" ad`qР6V@~ScnhjjFDeƘ{ #tYv9bwȗ$ZGr2$<*#o_|unB|x%Q5V{aN{Ԡ9M2,#_ۚD0j1JT-*W"3Bo>=jC˜*rkGM-nҡ Yk%6"Ў]_{oٷťrDa6=PyPb䒕;v1TҦ@ 䁷$-mM7|9]n¼c݈huR[M|-y[6V+uv~ \EBW i+F"zJF&[OOO$x/)Q0 T)i, mֺdRRSY`~# 2^^M9HFNa-l _!07*"bSvPbWHLDu.Km"ӵ7sIeɲ>}[i$hV-˙Jd'Eμ{e~q)Փ$Aە3+qͺ.r&'~G/yDG),\l"KyqHH]i,bĽ|Yl %m˩Iu<߀c/F࿈YIiuR_ N/YT:*'^˗4˳;F9ƍ\MeQ Fs+?l2T-QzU?DIP50!`gV/*en:^ +}K"]OFGA$_ mNԙqm]Ɯ.8p@q%OmJR Ѥys/Q߶ ̀y=t`*@+U!%JЋ[=W`YBj@%Gt|ŝtӖQuQ~@}D@JJG<5W`[.>MX,kD$(Ed+Q}gJ:=fTO0nenKWfw_$ZЦ =%)}}c<ois=> fRnetLȾk2*D}rZG!td)fMqB q9=iuIg×K aہ]`Zܡz@XKVE͑~c}]G_G Zg ^<`_3 _ FDkA.e`LaKg-՗YK3CzQJZBͲM EE@]KKK*$2`A4Ņds=^t,{wNFQV:z6 k`i){aك0>Dt"R:#TSjZlX;5浩b߅q"LD$@_vJ͇387~zMP߿>QIɍ<0ppGb(*PȚ(SUz]̟9+&ˇ=zO^粨7w0OV+:쮭t4ՓXuByE)<5)8gHKt9-apVsJJJSA!R$QCHITtdĥ컽ZC؁@ d}ׄn @}psBtgA+s*$+? Zކ 7Ohz(sj٠"RRs<=ՏkmtƚUՙ@'~3{4k 'ەӗA 6eTBaYESIEy"jW[#++23ލCրUHa6f?eK^%,q n=tT-rܯSN8 #P/+f2KL[]]iIndS3 aHq`Sd鄇SJ{"wG=y5F+jTSwnxJ- 4=¶ xH{=Pˏn_S/!(Qf0S[z",GEBGdnXfP׹ {,| o'aC6vppN^kql**U<ܜ,*SksqQe^o~AXi%sI)/F~#PJs}xa+YS5+5 xY I؏%~^x_=tn˒ Ya]$ Xi#جtԴnmV`>հ'ݏbąG{Vјy(T:zF,~.Ogb6hB6Eّ ~C2Mvq{u *^[A*ydu hW^}'>43xi-kڝZ96kJu?$M[hbF#T$%U67W\T īQg4؜Ztî(YQ=g98<}(,iڮ-8ϦW0~&P+3b8pg(VN5{7*lO΂zÏ/g^nF)5k\}6挎C t誅=}*); ;ʡ=>[ѳHɵ_pR$ |JpF>"- ޲ e魡QVʠT0΀(O+Ԗ ȀQW: J$Re{ߗǫ ŀ^NO hSޛ)'gDQCEUjTAӣu4z E{ґcy Ѳs_ޑ(P F Qz&gԫiRaSI3{2ⴹ?Jb': {1`Y&>8xLErCu0]=F'WR=feܤȨYg2i [1VpaYLf.{2edQ/M1SB$ @ &˷48մ k +E:?-L6 %HQE BnҗDPOKN.˫h$8`drS^YAοyq_H_1|FJ R8N_ss D]]/Y(!}jq-me@m0hZZn+܇k8 L،םZ+`N"L$70(r"U] i8$ ++Al3yghKsQj=XxW: T۞ο;2g1yLHn⻿CcPotVGeeleȎ 촺ե)!Np)S)C {hh|ZNN)r3r)6sMZ`Ϗ*%w "GވHn0uFHY|1\+>|hȵ[$+?b0UG ;K.3w)Ș yV{#?-0rrbۧ:Z-^\[`-ra;_7̙d|`gfW(OP(ynqVNJ# _rr y!]jNLe#:جUΎ\X?&x ϯ +,˅FwݽUsF#Bza!@mվl u$hþoqH1AF!ͅ\. FEE@\F>q$;;٭ ]{js,+8#/!ZZ7_B:x:p^F#`j,kb\F#`j,kOL #`0޵1#`055'`0ZG ZW`0E S`0@#wC+`0@"@YF#`0]] `0@m 流*`0ZD Z`0@m wmib0F»Ť1oC`K57xs~"%""-E:x w`0?wANZ"Vtn'uQyJ2s.wM#a0?>P՘lQ-n7&"#zUϞ.[8.U`]xbjF UbAE ozGqgC}~|۵Ƌ:m ~q{Xθ~TakϽ&i5g&XCѵۿe1 nN Umo_ _\/bbb`0_o,|ッ6%5:޲KӔC]ziv茖;_ $ڵ#lui iŗSmw!՟?Q. ܓ{7m:gS.o\a#7:̻[նpm -~f|Z޸ +tB豀.T olccS8/F##{ 1.= ?F=h_ލЙLh!s{-w:ae9Д\Qi֦#3FD12^E=J{W;O aA2;,N`0u g-pH06a&_ o7Ţòz35cr }>ͮt'0ͭOvN_Akޔʘ|߬.]l{ܸaoش{݃#9/M <=L{3~^lީ ȟlrڼ8r~Axsrhaq\'hW֋_7=9[aW)Bk魇q#ʴswb'jk1BL~@cPAԉ Г&(i˦͚l3jALN! |\!!(m~cW0[ 2nF#EIՌm˿ƯqNYDґs.LO)Q:+) >rTI"H (GZa-ncVVVRy "QŻ|w^ zp\oQ y+e*Jt~`h0:.qd%B?v'G& 4g}[KTɏI%(c_-#5?f$%㕏L>?43B|ha. !ezw[18\|5U24gP:Q/_<yǥ^gǙC%pݜ`/eA fM>>qN0/}_R_ Ab}`%>[0pC4&GM󙡧K*}I7~d/U)UX/Yd?[6sN.c%8z%﵋烳Xwɷѯ{H>˻lie;/~A Q1l)1_`c?uP41dT"#I{94-($#F~"P›FB{miv`X&jr`$ O ևhs'doUܴߓ\I7HiҾQJ>jA-Z*f(Zف|,tE@%>hDl<|uN|ʞ޶t^{-nG.rvPDUE»gsu%#YLd͏#g&Cq1G鉰GZ=::z}VrK7FoR^#U@^jʨDYQtϝb&$;@_R2d2cEi+F"Pvʔ^)&20MNPS]H#g\y}ubvٺq-A"թS磂t5-yD͋KED ,Mǿ-#Rh )RQ&ڂ硢!m~3ͻ |̩"(lްMA|=xC>f*j }-;6vkýΘQLh>j Υms-[r5W~<<ίYFq|gkrG] SSVK$^6x~:y@=bLG҆.g/xͮzf{O: }B ֽ7׃HH%>j]oF\!/<~K\ۑJ:oE5B*#R0+-1#Ta45G|zzpɿx>sXh묬b:請fZV!+kDf`6v%ʮe+xi) ~#R=++65HN(IL rr"L  .*wyR~&7mX- 17tZ Lw8VKӔ'])+:n»zxܿMxڼ.y^:.ztidzvV<ƒ\F PJU[k m{옷ѩ5G(s0>Yiښyd^ vRWmg{(nv n&q&6N .Jрxֵ"w!0@M!P9 %-%ŃdBt27Rr@  94MM̭:Ot] k7k.?Hy4CS 0;CaJI)Y< GO[MǤċ@ QLXUwrҒbbⲙb U3;ȝ&CDnTL)L [3UHn[P p?糟ǝΟco)Fe~|qԩ#R.<'tN|/kBo';WT]wK̐w}~S˸qc_ܿuIMCWIs2<(qpBdeMͬ t;ȄrTu _"- Uc+"RwweCG]9(\Sٯ+)([D<LEX4 _k4In T7*^k楾Cj8<_#=EOxU<]۾c=% [7笋Y7?Q`9g/l⛣̣Ŀ"W4洹RX+WXZ7y8 \ðtZsӬIҎ+W.\tS7ψ4qS) &؈8MqU\Ӛea.(DRgR.˶44ij $&㱫6Y g\ɱ Liذ`oKmP!D2aF+?k`ð[ Gvt^x<JK槮|!Y7V|SK0FLysW#Th5IG1"Eh{<c}!kLi0g*v 9ud3`rSGeV9sDWKŐڏ=3zTp! y•R V習zˊCQ ؟oD7 zсSN+3T$vOn25-XiYH!w.$:tySD J?\?]}Ae-xň2<<݇>klb2?F/۟JoDxr ިt蹟~%Nm~WiN4߽}=-EkCT9#ivle⟝(K7QaOF.*m&iNMERRSRkj۲isUQw^M =<8edSyc$7*Έ >?߲~DK:zvr/D=V^730242%^E哕n85(:H$B03:t50Uz* !`4i=`і48/!9c{ܢFe#m3|=^Ee;rݰb& C\EW:)* >|w=T5d줤FYqIq2>n#Kʶa?Y*;-M݅W6א݁^°I̞eAQVdt:7m-D>Q< \* ō;ܸ^ !FNM[iZL%qת+n}2RFcFGDDPJPHCҢʾ"RD\8gE ޤe/N\z*(<<(m'#oqIacn+Ua57=omP޷=r{5P_SLT`yS>7 J/DHQPX%?T_ht!O(dK2 *Ab^.jPN(V.Xmtj"GK~`1cJ(nwUTu=9A귾:7.f< FGzМhz<;Ѭ@#ܽz; r#eعo݋1/?(U͖? W!{LcF vkIِ2-0nMF_ߔn -N~"`{WT`zMqPkAhttK 9w[mҽ.0p]׮M/f[L(wi׃C<7הY kG=P_ΓCaaFD'nUlT@lnHb5J?ۏC#P:h yfԷ۞;4^-gy<b~zvx9׍[vf?fx.mƵ[yky7NFh%PԒoŬ7awݹ戓 u[ٙ :ULz_#Bq1maT6"Pa.lx5k_XfY i,D" ZBa?]c2SM<}|4 N(ξP&RM"bLwc61A% }Ǭ#XO-1zf7Mi|ul=o ]E^>FZ" GtTTP\VG?Zq-!K(Oaנ [) (N!A=@k}ewj=`e7>vf #S.Kҵ%hHCVZ=M2#7"9י଍Xљa, 2E@@q& ϐҭJMF6/ v_ζtu͟S '>Rj%zͲw}ː\)N_T\bo7ǣFaî'gd #gSӖ]پxihBMf]-Էw i ʽmy4o(jg gWx|ZٕMs/`C ɵ op+ ߡԻH!#z^u§>H]@gA54cw]J5 Ă3o춻SQ@ViuSzk[yA-#cCGg~Mu ϗnsF(O)0G o6{[r_If",@r%Op7H*gbn'>XGd%|w~E! {eƝ{_;6B t~Z]vɚqSBFÁ@օ^E "? `$"{Py2%fHi!j'0IDAT?;*,Yr_u˓M\|:BOCPPQ!ņ{F9b'>C<4zڛݦzBpV#s^< ;cV Zb?y b/b_M #]q>(ՕYPDS7!P)n4:CSYN׈T_;sȧOAOMeZCoNOiIiNc;lѲW)V(%Nk "7͊PX/iw}{thmC(`i&|Ou4a Uqi, lX&tx ’o( %|I٬ro _Q2*h =Œ]D/aAF&^.&2[ Od}'"cwL'F]B'tSi)ܦIE @oĭ#Lt: {3| %{BjK.7ru/W(ЄoI`ŖMV2vjtӘWgvY2wbG:|-2)[Zr$Mssݻ5\BUX#'vbY׳9f~KHc2]s-ZՆ\Qף+xtk(N•jtўf;5ՁV/LΟ8^<_T<<'ID沊 .nV6o ݯ=ĭ_X( hSYlל8<+/x;\vaDd&6\ BlNvjZax*|:F4oRZ;L7zW~V^ xx]O 4Ag',k>3a< Im-lh3@?mGej.J7qaS f`]$~XT|%8좜",CNXŹE*J '#MVeH x l.+)>S$-"/)*gI9-338`Zj/@1Kʄ fիLMe1u +^ER02Yt ʫ2يkH^HON 5'5PѕԔg,.Fn{Sʸ͞Y6WɑSX V/SVߓ&GSH <43+A<3-P^[[^Qa[Vp脶[p׷8DRȤbN#C!aaJy׈##RP v[QUQa38 :np|n6!/+egUdX^n^WUX\d{6FEVW^ bN.SSoMQ:aHut%}riKmX.[Qd+"dX[tm=CJZEݧ t{;-b}c;v zyܴn]XsԋVlDjj8]<6cz*-֛R)U5*i"1J c.=ȻҒj:]ϰFZ-Õ*UyJE,>V3#mQ)C6 eTx,ˑ9QqD($_|XxW$#`dv+ eZ>46hR(-\^N(P,1`0A@MiW*|ZA7×VQ`0h2 ߒTυwZ\L,VӮj3--J3 E[VU u VV\6Kudc*K,h'bq F#2 UmYd3$'Kž>:[(i'&fVȫLNXf/O5x@S*m@qwie ,u-U5u uU*zYQQӀj9G N$&*!#6CL]<"dfs #N KW݁di|mTFeY%1F. P77r_cnބYh(sKHJN~~NBtt+y?umF3|($IV94: gDgW%gnr2P3Oi@dJ߁^& e!š7{;,6P..m qj`82k{hd{y6%"sD@-#nS" ;F##}-pjPt[HȤmC2%# ʙF^>|]_zu!yEM8,[>-?X Iog`dhdJ:#6S24U9 k*_G_d3ږoϑ`ʊwá8!UN} RnFzr#ҡ=|s2.nuST>|nJQn]0\#O"P79#ة8ҧf~FȆ4ϳK&!NaTp&SNQN,`Hn*ۭ-&MW3Y:y_A RÀ4\hn;]2rxIIdӆ@o#DraF ץ~hc[{Hчt!R'|4WrNJ**꺞栳SRS$Sg7Wwo[[<ļ>uOhKmKu}ԝ##{_\HZ1&`E<) {Lc!(z/nF#{»R=.z!兌úmy-'ky [BFzew0YNoGHZ&Dn]NŒQGW|Urda8s~,~0;r$~SSфy^ ӓYIЗwaqy#l'f%ge~eP4!<iT%tf],>Ȍϔ6bClPndE^>ZYt}ǬhP{V];Gr+ۇ SxXV=?c-mߐDzr95mQBecn-Y"7Ë(D)&- vW[v#/؉o^vlJs,3I|A3# lE=Ba޲uW^OF7<_킊Vx| \b|*|b1ȱ8g1_CZ.hag]#,5uuu lvpP#rC ?5 YP܎ys{5Dfn\{bvzԯp/uh]0L9\ g|{vmG$ʍDĨra=GJp㟝CphYu +F#:@x'a%}@) Kfɚ: tM dN,iv]4EqIiA~OJKUrzStcJ:u"ؔZ"r }Є.2)&+esIrY?i_xZȕW_Y=}|s?WKz~KSߝo@ tD|_+8o`غqzGtܮLk#_쏏iY g" PH%cfK?{uzf2"MKcwƘ[Y$[~]h8FdYku,avȜ杽`ypaC&, jəD_Egn{0X{o(ة|yLE%z?O*~_9>T$BDl͑3 5t3`* g\ۜB&ユ2 õSڜf$2Tp-.n92kÕ1S5qɊvh.[ ]=j;k &=H^H,·Ր{nT:L7zW~Vн xx]O 4~{فc;lFhoNVF:#AY1 y CRKfZRgiYyy]IK_~V!oUNv\l&ȐXG83;++ES_MD^x8H^If`& ]R.;q,ߏ/u䰼 PɑF NsIs3\/(xIE;5M8oIHf;UE "U6]-_(Qo!o>%?%wu5[nܿsW|ÕRQm7憐E:mkۯ.yOdJ[N/J ;~Wv=EBDС~3_-2Ui;:ԌpL +:vHEJ /T矞I/Z[U^~!ɿܱxU?NLPGCAA?=ɺ#ozۤQ @HൟϦ֗qq+7[${aY?6T]ڞ!†?ψ=oehc0>&釼Υ^A rۮYk¤Ƃ$T͵G-h;::vh@E@?5>DHtw?_}-o䪘9'l2"DkU*OMW;z;FВ{M3_n|exQ`I*fIeE@oH:c⿲C`"N.gwhF˭0J5]T^zYܭ.HGE~[WSURfwk- @0M6i| ?-( Wǰ LS yL[cpjk躦ުtm̉;7?ݼdÓURw3!xƣ9CN"kB8h^@P]PM_l*I3幑tA!WԮr/L׽USG_\U4oj3n [a+ LckN2Cc\S,Z0,{R5C6f|4w9T m,}UssY9s|o[+qnk[=9 $o}8ыtmJt4oъ̒Էl/yg\0.k.Ztw6t*❔ ܍Ս1XRv-Թ4}UOtJFXދ;H`|3SHk#JW[D%fz @t7pBNNRWBcZ}Gm+t O-m7o~6,L 7 yEҿ=Vk_ټoN?`}U6 Y\jJഹ `\`HKKۺuڵkL N?stgVxHaSadbdຍeKE׹EX.='##*cjgˆdog"w_C4AggmrssH$چ&W<UߘEoR3%uxRejl-O>tZG+T Fۅ:@QgǏw:Fn>~m=;K]3RO/vbڝ*SN k*s'"x[=⨄ 7ٝ;wl=.1oDo sYTL  KNN 0nX{ % +t]^^Nn+Q58qǬ!'x kq7;eKۖ!}0Ν;G/wɜ_€ 9T( ׯ/)) nMC8ۅsV&pڵ7i̦y>~ӝ!M|w=!f dSM$u6u!XC-((4mƯTnT 6v1_@L)fw+wAc(N C@m^ mMOX:@'n_a1[__h& P*;i{@UM_8BxI 7N[4%^%%|d-!gG8|n(,Xn IPzȕ㦎jڔZ!U[T7ns x[A- __IoRMCǿ?+Kn}臧gDzjm7u:]me `k!6wdպΈtY{T.XYh?^b㊕>-!޶m WjJ1L ө7/T?ZߨK4F /={jJ6rIVl=ŷgn43 ]s*aɜ f6%UԺV$[4/V#u֭Sg~qD/mj =6XИ BFVwCDw$>aQâ=[?56sy'Dl!qevJH VU: @AYۙ@ mE g@v棃A, x[@A @`l  x<A-H*gż A-܌wh/H2N @.)풇 W@v壋AK 8tKbaR+k'zs6`< 6P @p6og;" @ TCMَ@!m g@v#@l xB5 @`< 6P @`P 42uaƯrpN~0<@}&Qj!V,] ,CS:vdŠ&u[JUxod/ܐ׮1Xy;BwO7n:+tD1nx'eΤ[w#6@:zCcG`U @1h}*gO[i1NEއqε {3fDrea[4{ O>Μr.Ŵ0a_ٝs%%ޘti߸C*U wwBe!LݥBR Yt/kSg׿7V韊Z'VwzѴ͍{s)s[~B؈G?͈~={uZpa#(g d x[A- &04eP! s^Y% ߴfe͒EϢCM3ns7@Ix.pu\Lϝs|Ԥ jyIuhvv6Q5^,6rC7.UvΑ)MUwu(wwO%@S[V-pK<[{+]g /9_xo?#₹w1=-TW ktj+˗vf{X?PYw:IENDB`flask-debugtoolbar-0.15.1/docs/_static/screenshot-request-vars-panel.png0000664000175000017500000017345314613236757026241 0ustar kalyanikalyaniPNG  IHDRܥClSVH`"UWyR ڰ̢6ߑYǞ9{ue( /h>D#pk/ @^KqJm攍5c,-bI0Cb1U4UU,\d)Ae(U@ZTc[#iP_zS/?eKLA*¸C_=Ts+*[\)VvkhUpTNj(@1ͥf[R/B%P3Ef[$j ~ ocn%%€m-$Ac! S!91Y}.c]{bR9lcOEǃ}[ᘼYF;vtx.RɳBnGE}Bt .-QQbnܥ15o >y@ڴ탷#}+|$,tf8;DCG*d>'|jM&KM+Y}f=V$|vuj<&nE6#iHȿxLOF]GidT/3;R( +o%,1E I?ֽ2?6-LfӍ5NèFدW*J1c{x;oQ/J׮B> _Dh)Ӊ)IqӈHTy1$"ۺU~=ON  3 8DUBmR>|@ 7 VR%hq߿LJJ"L&̏#so UH$ԅi*@2s)VPa5kmb2=M{rU˥j<ҩ9^Eǟ&&{qh9)L}|# L$E$f'UMmY@JHdT!z"Loٵ?g 1k'P{w+[ah/l Un_͓ z9 υzjDYzQ [3ԸEgE g "d*<͌v 1HioteywDZn|k } %WJkmj/ocy6ƻ=Ezr:-;m{zj싗߿Ƞl[d֡ ʭ]F E[ǯ S`q[b>d,VƆLkpv%j,@Ӆ _i/YxK^ƃlɚ$In\ p\$XW%]dʲ&іv[h?ʀJMt:k|7cvI+ @$+r'L-(D4 l6]j]\P]qzEvMNfL:tpCg[B~:*ȬDPM`_t'b%v'=^Kљ.o/iOp#[gq-]q (.-hVPVܺ0j7ߟ>}'$V1XlAkS*{"z^VzA{UwjÉ!u6xID̝+,v> bO'"ѭ?ޓ_غL|7t$sމϒD7'Ů^^!{,{ Ϡ7n^GU6Mq A$B!;C<'&:Kmm+5e܊)BV*MU@G%&P~>OCm###&57Gȭ₸lYI5N,7H W4`sQ݉̐MK;hݼN5%xap \WQ>;QGSx"@[?8>ξfS wr%_:mwT6>w;^al/Tz,BtapIbwMX*=eD/Hqvf퍻Ώ$Ad*|)>W\I ϡI]^^aҌ\qJbơpC%@ UYwN@u0N-/grq#ɁǵM='eyAk]ksF EOZ-[Jv ׍Ԭ4)N|nViUD]<(lsmdn!bb֋Ne'Uޘ/?Gsw,k,\t^Q}E0%Og;D=[Դ?XR߆C{"',58NkSk|Jx{%hlb_@nʮj+TA o%m>~6IJ1Km:fW}*._WY 3ًB.i?-]㳳J+Ҕ4l0^cxɘ[TW>B>bMM 4T¤/cR7ljHTg!&]USwў7}%x-aE4UU-C2Ɉ2 ~`d7,;6)@›rd_Me02bs2W)hm=J!s" [[ԛ?Nۯ ?.,jOl6;_`btttE`$U*6,sPQ5@F8m3{>s,ĂJ TlˋcE+(^]I]i"XiY52.-b@e40&wii5+ PgpR9F-l:2 :'x:w HyyQ1Nm<ӮIDzlm (Xx_IJ[b9/*b1K [Uʫq,  :-95D P `L">%%\YYٵ*J .1wY  Ps镝56Rh@X*B@!ǹR " ~`k -@X*B@!ǹR " ~$R  CW,wC?@@`T ."4 ~ ` M@X"BQW"w+wgVS/wN-(^M`   2*9ӄܟة!ċqZu*B,וR5F,wA@%pmOX-ѽ%m%z/:{]ušTM]S$A@ ӷJ(AHIUn^$@<{CŸg"7L@MNx{߆p }<駏=*5t=RvN\/9q&<Ο~JUui"2 BW%ڂ2rW@4 G`EMZ&TyW;9BHs-_d4Or/޿GWޔ q.++x/mB3islftZ.Q`  9ص<s:MRBJOw8mm=7ɘ|Z첐^3Y Rh٫ NO[R3skf׮:.{;po`Cy{yd(ʓɭy8m6Ke䇨@<@P>^;&s/xc؁(+I{%,gSnL{͜9Fهq*zRI۞͘1g~cی^"UuXXK3fy:~M @|,iB @477Y<| s=jQΛĈ+wҨHMn0`|*%H2g8$DZm $7jAj\6%\I ,E(`bdIrD-`0j~n,wý=@s rHr/@ H`F@ Ӓ́t>rj+  hpl:zy ܒ9Ŗ}W @D>'uwfz9>˟tbe ~LU^9.$p]?/sI&/Dh/G5Q݉¨ il``m`C-+sr2B3v Mc} 9.#FXxWSP#'P$MN R3hZ]KF޺:BHعsW{ciS >eU r+T$0- .b6r$l.3ԳkeqE=M/@jڍmlKQY 9<RTF<Χ mZ(ٻ4iZ@Ekκ]ξ 0 i7st2ˉ' 3L(:BkLwo|fRgɨ>nb`ͤb}g;gztZ|+T[8=7,*X/OrU!Iz06Jb)uA;u!{-]ϳVc_k!Gݽ_"aAU/x͔Wd=?lC/xykQI2S+OoM8nF.rК7㕎&%إ >|QZgE.`Ihy}Ji_Os#0F]eQ} $_%=ʔIN f'-\ӎI9a{|h/16FHĠOEVs{4IKҠ67o|R.7R^*Iƙ,1ʭiN}ߦ6XzHl358&q?#ܨ-6Qd߂Jc-K2jKK˙m\ՍCp@ P P%0܎`|-Ɲ,e/'Li.v]ě~Yi3J{PvDq~QLu$+!-Q.ncaaGKT{$|NG\yj؟'.Lq?I7\H% k*(er9x̕'GϾ*jDՓ?wEIKc3vC>6X[jŽm׎ž+@7_c_D-9r55́7_֥9~՛&?%..&${U |iOBZz*ƫ 4cپM%ఽ,m];9XJѫ DSĪڹlrY<wsj~}ls]fj}s\y}uO*;7mڸinjk޶(gQ1]Q%*u6nW[>SYЌd PO |Fz=4)71B4j1Wظ܂|-;wܨsgSb*ٳ޽x,݃{ 1WVbY߆ o("|p-r)b\'Bjg/ )wW6xYVS%oá&/.A7lyʕ%=&&}s{˱ ITj^5all\L@zH+-7~MTk=7B.^-ջy,H-cm??_շ,^}p#"ȹ唈ЫOw)QD斲^E5xHo҄v=2,&JURF6\Ż Nfz"Bf(_Xkbv^=STNAu glaz dQfYj{A$XrviC>D vL)O-}2Yj"o x)T|6H*fW!*iZew*ڸE^ z.ҞȺK_S/NMgq=(/#.{t_=h8Jb:LBJҞF*-T`>sM_;C^^ sSzPvA)5v&N] n% {CGHx5нx٥A~Uir +D~WV S.o-JWqQ[FX''MBʩ[]~@])ܹOw^%Néω3[Opu+W1Y)f}&p4e})=hW %YܵkqC;i?P7eT#j'vIvdUT;kj6'-S0H5ex 䤸k/gm]սxbg5݌'rNەtJ q.s"DfR#Nfw O{G7̔PinIUvOarjˬXԈ zFM. v>KR`<5oN3e\rtb޿xA\5'\$=L=uU}o֬ԑm[o|Z-NԵWw UFa.F'/-kݺc㫯3Dy;R܅$ߊct4R*f'%|U'$.KS4iB7yUU~vQygP vx N΢oYMݚMdL-Q Sޚj8mon/+=xP'Gxh+*)pVA>+Hd>?cQC_[9ťhJ{ƒ}i)| PƜ@Tlݺ9Y _LU! ]EM=a# ڳZ"5D%’Ӻ[1.'L JCI`*%~0Ϙ#GH e2QZ*Wל~Z9*1ZFVbKRnK|HHJŇ񹚞usK95'{Q~ykKq/FR^&-ծy h\]]k|{x_>ҬAB4l!|؂>e!pti %9S⮜i\'҇=Ԇ2lKM]Z]Է)/n;g~zߴǒ?=o(!i,o#D#l)Q#믧H'])SžWV5M*9WSzMW13IR1 JRQœR D *A2Ơb,X]IIĦ,C 2Zi*+y7f154Z1W =[[.fjzPBx;wV.E)PP,5iAC`Բ('IRDJD)l%% C#Nml$`SiEp QLyēC<@4x|I wwPΊ9{jM=uiq9hgh*.>~忇]G0^z n+0l7 q3^6c I]HaMwo{C R^&5{M8HI|#Pc)@l8/L,]'=S5)FBN"{e jj(lщM?W:p`>qn}W~Q'Bt3M}=]]郿4d!$Ōy " zF93( WsWF-A[>fM 3uHz\7X P@Z eh7ܰ]?.5h@rrW@J@( Kx2TIS\ūTWd]#A@υb>_-v ҁ@ uL=MfdTg]}   ![BTJExlDtP)g TUAB%e!%UUeՓb5@ _AW\Ͷ*TEl|^VOk2|~!OX-1dPXRc FGx=t0殇T@ (*ҙLue@Vu5es3%> cc ?DqI[v\>&(,T:FsU ߚ bI緉Kx %IPPO,#D (P 9mee<PRc==n z㊓M:eS">iԩ~/&sp8W7{3=wʡ-SbI&+J ۊ!L|=pc')NH;C>;OxؙmNN7yGjB7Ϝz0 G)KvD#al<||hm#6f;>fӻ 㼜Wz:b^>F"'jKO]eK%Γ3NNcWč4fަ˷//F)N*_@U@Ju2="8 @= @ʪ 5ٓXj='*-{Xߖ5PmN^fe؀A5"~Z3j:~o8͞..9.uZtЌvK,xs\6 "*rDOwxs u5$pf$Un\nޝs{!o~=EXu(X m;E5?5a>P^k{Wy'sachYGhGGgϞa*R,uBZ.'G>J{I8\ YK`W +=tķ#oݍf-&|O7ȱ@uX;Cͭ:l}# -֘r9v! o^'sRǷ b_lH Cb_OL\e~BjF1RqtJl#Nb4!֤*B)VrTωWRQӸI??It8:r(thxD;ҸnDLN⹄ٞ}^P<6D|< ?D^xP!~xFA(d?O*GE#7uOfؿv(̓jωEm4͘ pg%Uj]pi=)}n6_O.f/B4SznեdZߟgD07n[|8> Y"@>[u"'?w97m:$rs1}2!#HcØX*wçC-E-oTcy{Ӥ\4 KO s֎payIKNLL\@U\`V֖k*Hc><0qd'1Ǘp=," ԨMDHu^ɑ/~pH4J7"|X4K6,۪\N9H%J#=ߑz4}o|WޅU…Y7>ȭ}1vJ"7vc&{_`]<2Ïo2VWsdǑRQ#xh~s1ŰW5# y55>bdi?rbYfrZfSL),0e" szh`N̽j#'D33!\F0K'+!~=11.wk,zZMo~/bEҬd~c["baqOK~6䏌+˚ ddI'nQN.hv&΂W 毺񓃏bG:޻CKMM]>O%W9zT/qc}Rsb/!hN;[9GvX-;{Ǚ2uq⤋72h-<D_9QWL:r,uBī- yUZ(Wn-&^AbJKl&,h5cB(ڴbkpA{' =[H7ȩ#:_@AXOna7oj`0n"ϖ} ׭7S:|aLLkJ?IЭE#c& 2&yrӂat1A@8Uih{N"/MT;JVOt# i*_3 =_[֧E֡IZ~nm|wd򉑏[Tx o_Y`QZǰ(ċ;N{`L@IDAT6doݺDŽhB=Hu~ۥ9.$Wj`f'~3\InԜz$rw@7aԖ8)d/iL['E2Ặ|̆\F&^hy>įAС7T+WAǃk}܉xKv%<%%Hwids;| ϣx? "\'>`V1(fĒSsp~{>ӈsO^wgD8SnSS;~6#c&G>VyvfVVR41Э|J䱳HSSWEa_AyNvGbL)UTq3S>qL-sѐx"4-հoF=G h»̣;n#,Dfeg~/!I~62)_YbSƠ͑]&IpAcC{= &UP<:3Z0fh]؃/9niTߴ8.=YxJ|9ʳGIw9:M/] w ҞoTcT4 LjkPUUtChFZ&?CK};Iy #-L/1t L@L%'VKwJu?}(!Wm<414pFa@e[!DŽJ.x[*$_3)'-ڸ69H}}K<:ʹ;-[ ŭl]X-=့f C*׏1 ϊf{ʹKx1 ރ6n|bm=B^, i=yIYG7nLtǃCn]k\xk ~RpG*깲v@0(M=zOmMcTj9ܸQ6$'Pi=߾TR2Gt24Qx- 0!_j @%:)Y0TKv=A1`;u j9]-fc0.2t.ʨ0J`ϛT>(\i`+ 2  Z >Y|[2~›&>[ G~/N± bf#_3̸e?< LX/ p >uD P5DB=u1EAwZy hWsWNH@F@di!n`5Ʌ5@TXJaL@  zC2 >/7M۶iTo(BɺrrcNL3U-{r$D敒bMΚIw+S0bXsUM9 q 1w>|ΰǻ<[3q{]WOϼ(}0qe 8c˄"_|ן>$?}/ >+k:|S?4wԛSin[N@@@T6YP4P) 0='CVK_^1"}]Tdu7n~ҨQZ ⱐ$Q`"~cΪrbL-˫>( ^ |1w#S 3Fޱ4Z5䓅G: ;-dϽr/_6`MǛ(MsnJX$Ԩ{XWqek}u|Μ#Q{=o,ZuH*$]\@Ip_&O.NvfzzR-*N{]6'VPܳlXQVZF]} )@ p˚yps*'+J!#>`ɘ԰= E#u^ ۙC(Urpw /[%NO}g22&uuT̞QoQuo_˚~mkn6:Sh>v݉%?ضh.WW*k~bwɡ' %LC#y9\.7?eqM8/F:6ib8hAʮ}v_߽K\ۭWNqqM5M㖠;NiA]YޔಱOdž;wۮu֥e9[<͛C,C|vd{]@!?_G6;Oq717zv[qaQ',PM_tҵ[KdJ n~^{8{+9 …Z TaAFl]R_N}m BS?yЫl&gO>J)3׮yٖ;0}ç-!˚sβuvO(f.:2JY'_lڂ22bXub]&>ۼ-]Q")H>jsQ 1EWg>_-|ּ[f̾k7kFT 5]f @mD2KP4Qn^ոN*GQn_f2GQzs4l!=8MP/z/.o[2P1-0^4W+'.'urtWi3/x+0m".95rk1GNfcWΎk6BA& u1-Pח9λ.Eo11 )$|>}][&y'|5xWy unj3"T&vyV쟉6v\rqX4Rŀ5=F.Z_@f! 2MlLm*69828؈~-zϋ>QPlEd꒴:{F; \^]f]7 jXeZ(g?n4#$] ,2nFG} l-P-@6|C]Z}.S7.taBxP*v %夥gSoNM1kB ؙ!ƗZ$š,ۍ܊TJ)&3=x]Wqӳ&NF %ti4ekg/yq>%ڽJY. @BZ/?=hVnRHsB4DjLHYҬӢ&>踰Dj8hwhmdRWŵ^}2LlLQ«HV-Ee ^p"a֮)+ fɌag/-o.zcߔwx)h?u'ǭ:A8>ü b{* ԬH^MW:T]dHc4 INǮr\<䅺i"VuPQvsE[N=Yl)ѲP+X \aKxΖo35͑>_j?>MHk>j+,nHir4y־Td)[\U]]◷L26pY9$<nQ"UC . Bj~hR]Ye%E(QK.bj/A*!2kjj[4si_Yu8|[[hZaKp8<`+a ٳQ'K+BT"q9&Dx@ 6 KEF6ՙ܂HG8$>> -W-}r. V-}Њ ?.L;mPi͏V > |3-j?vxCdWyfu6%ݻt,qn#҄Mi}o7>q@{q*Fl+j7e=(eDʆQ;LBJҞm=o |Dg^ʨJ߂Ws]v q}p(}s _.gTspND|$0wׯKXi艫Gm8;aQoVdU53FȆu8Ӯ @2ä3߸,Mi;nnC~\o."}? ϣ1UVn}&X!+u+W{VvzZ{D 845 `Dk5G(Qf}&p4OyB7n{RaXW1RJUgDggl jf䤧u(W ~ &憆 I 3vǽmdmQ,H%ُ=w礞]5,wp04tuۥOuLYOLD$;3#$6%o' u'Ul47&,w9ΠðQb[H9aS^-d7jn߻!Fش-6 8ߴe[wdl8"v?O緟L3thyPd۵SI}eݾKvޕ 53JL ܽ3GڏNo'RGR{\66cd=>b(RvGCg᭏F` 5G)>ل[~|FnB յv}j|Z  oܵ$ )zHQ$=)a̚O^cm!MitUo -(KE]Cˠ@jioF`kh &b6Zt9SI..迠bYc+=&H|AE9|HE 1GyX$?̝:h`:ֻ}㬷SJ 2ު]Ɖehikn" S;+>X,[X) ڌ_) \?|) [MPxtqO{z}\2rB43;=~פ-)o,rq2_A|v+KG$SK-zr"\ xij*y+U5w8 уJryeOjY&V73w1a1&!kc~bc {¦Cܭh/C"7 kѴu{*X}=zn^b=t( a\2)."AlK,_$nPL.ofL܆߿SZz ->8[_O+7HP6c%Boiy\{rK0 *C/DJL  IG1[gYun0)9 Lլi#|#*-]I7KFDJ qs$L3U83pTks3esȰyljcG?{g9AJRDD1;~v`_ &`a#H  (HHpvDo>~ngg޼{xo'v6if~ Eg6"iW;j]tg_vZ gyKKdQTRֲbGU6/zY&*3Yy.1-L:{<E5e;Ez e:vn{;m^_C %O˲bƐ<ψ vч߻#O9EN>L$xWÝV5uv\1-tʊST4,|ج} O""YOkldbgbDNE2AYFV:YJD%! 1<^YKd((cK64*"crSLȿH̸e'Qu;& ]-?дb(zFTXڙN}Zb}bAW\{u99XZfvaNqga#ff*?]+`\sHgD%eukgԵEzLg릌 D'mBK"+su2 'k Kn]pu-Xo97J91%Oφ)57u&?J}D^S 3Jw Cį:ډ%^ (om$614tDZ_ܩY Q|:G_@`<2iH=kkqyNҕ}Ay1ɋD)t#'w/'ӳ'#>Uܒr**j*Rb-ĈغM3fEeY/G*y{Bo4Jͯ Οƅz*"(G UX1X*~Z`=,pfI MB ',Xo} J|;/[[t[)|y943 34N0+.vHWz01 ٳ],Neb%iQWRD+񆚩g:@CC]/~BRgdބC-#.| G&h[%c8]|W9ٚxWQL)39 *Nf\\$fb܆Ja>9|[XŷN)tȢܷq태 g>{CN kqY}\@&}Fظ@q} @NFW u@ ~;ܿ+@ԁD:Q D@ @"w`(@N"o  u ;7 C o'J\%DZ#G~Uc' &qF '@4v7 '!&3Amj_ h4/;!11)yUUٚfNL/G222 Mt%P]V653\\(h6W#~¢o[Z f=vY+"+;mqkbeܪsvuܾ5l>B̸dr z3(YD' T0S2#(0k˓M (8VZYc{k-YB> yN0GqS^xᝠTQ;6V8_u"iN~mꥅتCje&xƻd ~zFwW5LCcQ8!i_ e0-ȗgqZes7k썣Uzy)>a~d唐9n[Z():潣J%>=dI=!l(y~Un _ۖ%9)X4 hPBMY奜2ε I@@4̘y6alz:NZֽ4QŒ4 :x!)>NjmuWSDd+Ҷm=M9 )#YEmdI ?n˗%sy "ޭI4 ~8rL~7˭_;$ hjWTՃ}og+>"u9˗vp%?0Q:S1wiÅQSBH/ 9A*{i&g_ ت /Lvq'<8m6$5ɛ Ґ٢ݽ{} 4hQGZrs Й38' 6Şs:T '9kyǔsD6]d I/ Nz^"*wt2j*QXDT#̓&/m Oc*]|ړȂd ^;48-de p-'c 8{{<`PQ!a\Odlrي  b8NU5=|.8!\j>2B2(mbjhŨ3c{늢4PAۢRtrEN<͐U#Uw97֖u~Oo2pty+[y ߏ8@:kчdvR0&!IrƚQ\jVrw2e#F5}nFk P-TsqG@_lu(V|1.ڕ[W|̸]6ِBJq˽[7^t z T֝zq;+=TkΫӄ?}]]O .^_mz:QYM$.^̷GvW.v:xY\<{qES,&ҫyd|$1^yzH@R,ч>jwQ/G7զ/)k(g}a;%B˫F,`3p5v4XC|83'0zb+-EVӝ㗬6f Z'>تPu/ij[Yuܲ-l>7#s~RDDbD[ԙ8RS?*2%UU @g^{wj[ƞ۝8P+i#57l`^[ߺݥ ߴ*7$vv *}$'6{ ķ)8g:[QظMjHjNnXTs=@wVҷtÒ> ̜=! xըK'*N_y_'  2rU"S/.-!QYc-wf2Y2F"Yb&QIIf^b[YJq>%\5[ozi%k]٢(iShnи>#G2d{L I6MȺc< [j=Eu׷iQ 3k [U5SN V-&aLV> ڶrvOzfsp7\K GZ_B[a+Gv2hMC/ԩ]OVT b6VdUi-&bڿؖaejKjކXOm=l=yG8rU]v`H9Yi:#fD4|(w/Mè'*s'jQ~7*LzҢ>gwcYN+u {WẰiJ6u{18:ӈc'vE>#Z|[,М|6,l*xԎE#W _l,h9 '9ۇRcQ;Gt3s?=E<'Ç 8yꌷՙCclPIVPP"prR}6 ;JFΙtmx[i{]կz|wUJ] [LbRP9%`qg:R 2~m휈ufpPJW}w-*Q'|&q$a2{Ô&O5F]eЩB7I=0FR&.&- aNor $J~~@hd4mN-B?ʿ|=|ˊɷҵ * {oB;,^U,TS7POWvr£Ybj:*ڭ(|mGGȹvf~>jMT)+=f#93CvS rmb(ʸ 53+f~VzJ!/9PnL:SՅ qgZ x'Q5QG/ WMuh,wڣ 8. iTNкˬ-2[c^ԸUD썟Fնxg6m >}M; `,ut|7oD!ˍ۱x:ӖN,VtY3#|y2h/mȭ^'Wjnoy d~]JYU=ݷ0Ĺe wa|:!F٤ v?8l9eҾlӥF֥6⬖ CߑמWҩ6b!>^SF%5'vIn8WϺsbI5Ki2|sߒM/z8Nj}?}im&rn~Ӕ{Ui} s^7TEQۦt*kC-ע"/@)ӧ],%V}Pc+M5dT jc8I/eZ,S2z$mw[:f_̬i(⫓C$@sscK.W,.Ϲ\Ip; AjD_TVM,rdwV5\87ߗ@@(JMJSRtO%-K[*!v>3&V?3ϏTϡl5F4D?AEW1ޯ_0c Rcf[a˿Չ:| luq&Lq2gqԿ5,H~oaf\[uq{F%3vH#~+[gKfJjbg.$Ɨ/_~W<#*S_\\yoRe٪z&Fjtg*'K3Ӳ8t*z:Ut&̌ qT.@ifJ|gh,/3=/l/YQZPZzo&'r]e~˿ @"`ooPO=;l-wͦ>>=4mpmSZkqw!e^{T-9DSa#~Ser}Z5ځ$dOo+:+vX+ϼqz67SɠQWsv |@%Vqͳ_]~)i4h^RJf6d*_{1ЩWo6—ټƻoZ)ѼV_n!ڐdu΅O`#d qyJ ֓џz>ע`WXCV9bx,QtǶl%&ɫfi^JmfrG/_E6_vqb+r`4l^dRUq_캙IC*r(2^ Vg 9>[0ӐxŅ@HA#l][ 4avBҎrA~lo±a1R>KxF| e"re>_\zaY"r''FĤGSvx]}-~7Tl^y/v>tU^e9h p @vu뮖@JTqXmx|Jn=7s[D &:]WԴaRká^m;̽wzH77jngŘ`+>wVGe~A \y^Vj3_ֲCwcQ(cFxB@@?@*!蕖ȟbRhşH-#WWcW4u΃w%HF>훉"˼7~j C{;hx_ey/.b#zE?:M=ƻMx/W΢-l= ; 2ţs+uL?Ϙo0~p y +\VWӿQ|BY7XI1b/Nm;>V%ywomѭfax ]gjt,s-f}87^fLWXNҼ$I׎^&pPM~]M`!fa"2@/!/2@!"2@/!/2@!"2@/!/2@!"2@/!/2@!"2@/!/2@! CH ۿ@#۷o` %```P PȍuY[[C#T @OLd׃̄ɂ}X\x\+o*4'*eʈI2pYT)O%l  h(?% :"<DXWv:J/ihSQ'Sn5j搰e]ƈK21NoetvȝOtWEX:;{wB!).ΑѝΣw\xTP>tKi7L4qTLڝ&yy'<@ =/_|OFƿK^m&_C%@IN,5fS`"V9ԛUn+/JQݛD~{kV⭻8v])//(&N^}~aQRBA8,~ >@=M{3*^m@q~J&pw #X*W@Hxk  [lٺukll,jq7pe 7ȍZx(s)T [8r&r*'>^}i$""7_oe?8(ul;n}kYLhlB-.^#ba +|CEdp5@ʪUϟ?O]8и6>>7oEp)]. ' Y6ۨ^WaJw{6W6K5ﭵǵ>!z "{nʍLSKqx2},vgurZ:I[Aw5|]2Iz{RPN@\\|„ fff7o... eY}‭jIRVqAӋk?! ȪTν**|?C&l㯚`/OXzW w='[zoG6~jRK^,rɦ9}p}7 ik$ELuhW|fxHBʃWhP%*lw|ˊw D]W>87xb:OPTux@'x%mk.D O^|,aq{ۂG^=$;tDG?C6}zTy߮-p1&#,moXkV*@lv;Bi kV!s.\|59>tsFo@o"w^---:jPYolU1!Oj٤W?2'v>!C''+uMH|SeRS#[q]Td*>D*ZVOx\W]٨AքX$?_U33ߘ~b7^@ hkk[XXde dӺ7R-`Ti7w5\Hƽՙ{2:U_wwL d;?[,~:?jC (CNcq3Tj9oQKb֎Z 99j/'6b83/V=f:ZO|` <`165s.Fc^ }uQoj }5 "A,#rQ錙5DKߵv 5 ٨~@n_ L ##?*A'W][y>˨&e2UwoJbRz)hntYUo9-#bKVk/Ɲ+I}J,֓`ux6Xwm1a>SO& 91T;]hޚ!ricZbn+IZT*ujmg|MW7, UǑϢ-+w6$2@FA 22rxr8g~jp[yYhhHpU$D˻Tnybg%#o6XP@Y;/' :}I2[_kdTkg5NJUٷ?Ͻ; 5=uQtJŃ_9T[Aˮ o 8/ӭG/ \@/!==rȩSJrjI97r7 o>$R%&ýgn5f;lE"#&WU.@V)6ųڜ$#.%r8'gϢ;(ˡW7_-fOv.m-[k){o8d~ss:[ʛL!Peàt|)Qo=}$?O\ia١Mf Ff^W6Jo{ x|x7{gՎ]m*rs?]1{nW{!Husݾ{[Cuktxm<g[L H$ uolΦ򔍔DW\y:%B]tf 0aEwECeVߞk+)uXhSxs'ˎjN}r<ޤ5jʝXrXhn |xNTҸ1yK/Du@Onڴ!n#WU/,55NS3\q+ ]~wӅqϦo#c+]( EbR>,dmUhڣݟ;r9甦f#NjѲkZ$vheH^_MBͺt#Sbl$af׊/P{[çvOܐ2RHFq96gm[:-Hͱ]Sb@vK>Wx0ljKeLl; )i q%ףqv]!Tϻ60N.%%HF0tEImx 6i&D-z k-]]M'? { 'S#áQpa?糘H~Zxysp=v>va^^úH~Ml l()A4پ_N4)Q׸wȕe"ǂ#3p6s;]S4Ĩa&%b8:1vI^ Re_}~fkfjjڨ @mo졶zꘘmի6 t-w2TkE lթʊ ɰ݂7/K 7H,!䬝WZ&Op`dۣ}Cȵl{84(CeI!1D~:1]Pb NfwhYYg?V [/Ku!&WZYB'} ~ܿwM|#r2)=TjnV~{ǘ"jrGbsx|3C/ȋ{DܪC5VikdKYHyWk7q ](Dl j3 tT&f7Zs3 [wA r&8wsv /%Vƞy~tBV>L"}SRDag:Xς_(+ų@9!+gO)V(z6ilB*\`!륚٪V /dY*Soر;x:ү& ~ƕ 9%7&`wd>_?/`(*>=;}勤h4H^؊BKTF>XE?[}~VfxGJ#HڬҐ{*l[ @% 1̉FޟXE5wd  3e~13¹iiB]g~/t.+kzz("U>%eelk[ru%‹ ERSᩲ8uy=.(< . )Wm/'kk>RJߟY9h.sOh Wa[* &ZJ|7%".JmrmZ跰l``w"ACQOZx`x ϏimBٚhٲeIO vA[ꚯ(yw%<:㽠CȊ>Zh? xIY^5܆ 櫙:g\RNqA91jPxf/_EY8{zj\V]/@"嘗&El6 ^2hG\b {jl4L6>b#WܟVwz;3=-o1s~[5kM q WcdE“Bɮv1 $^ox%]YwƜDs'[74rض <\W-! Ea"wh2]Ev9Tj}G-V-7{j#}U4 ܴ4piN&>>b;Y?qF(s8 jf_|לy_٧x .Ojl9V3SN|j֊E%Ҍ"'Sx 5-&M)ŝ| @ziҜ2𺳼 Z*əͧoؒӳȸ|Ҋ”^ o.ߎz spl)2PI٢m{B_=?Okϣ"IcT=L?-0 h$ r7/@ P+k @4n ܵB@  -OHHh$ރ@ 6u#^ 7<@ }$@4w >g@ ܍O@|D3 @ k<'@ OfsO-\u0TD$+hMn9ke7s5ad&DLCU--ط @6@0]f]Y9TEvZ-kut$Qeڞ;>zu BF#(@4 ]Lg/3-:ѭ.:sa c=Hڠ>@FCв!2(xn)67c7t)]V/gS d_E芤hyX6@#s7DPh tS9ax\1Blfl?e<^>vde9.d[n<{y~yvjSFĚ%:Jۧlp?/_FؼWl 4`pi@] 5D*{k b@׶qC(𽵬BVs O@=]kT]F} ,/TQ:kײb--Eb֜%*&oҴHE{k)  ڭzk6- "> Z@aUU2Ɖ=Vus۷sߕ![&d/-YbݷyvF+/QҚMj+LYg!L&]  jUquw'y1uE,-*@aͲz]%Zq {Mv䋔6F4 @لA?@Wzȶ@l9iej"_3 ]^T/YԲr%5|ljn RPܐ r7$M u]=E@7/v٫"waUmʭԐƽ𴄫ܢg)4oH?DM ~>c kZ!~j +nxIki_+ Naָ 9x^G7sp 6ݺ2zT>m @4" ywsiGfccF*vx9ؾ}i|pl]W ïۆs]AQiZm ~gg}qFDrЗ _O $EgD.æ $3nŽJe!S h 3sZ\;*纩2j:7 >xW Y_&?)ǛC_'@o(x_*~C$SBcJ2tYS {|?yI]Dd[W*}tuuSg綗d'ipup /3%5=˨4ŏ+ T4/mjf~8QTm$U[:-#(**(7P!;J+*.'%rg@T%z/ErQQb[AoQ9$RqZ,GA=u%;:d)q'>-BqC=Gˋ[;J̺kޮ z_#,P)Lo~|T* [e`ؙT@Ky־ϴuݢ)3x*tMEUνV:cfʣe)mK{=a.њ<5}{(pk`6/]v%ڪװՉ_T67˜egE"ИtĀZh '@7>;Mz#hhю;n/v̤  ?Cd=˙\eԤI9o]7Bǖ0齇䱖vAY9^^`;xio$k3OY9>p08~5ӞW"sSkky"]eaɹK~zw cgcrJ>0"@zwnÇwor r?@="s'sis9ChMUzrONVx!s|YP2yZ[k#OˍLj9pb-;F_kLEtc]W #EwW$]#@] zyzzM荏T!Fs\r̻ݘd_&|>5iy`O\JI˿rOܱG˗]nkQsܣ]rQ=0c8Go0A8x©eݦ,=1WZ{|aKlVF~QXMX)O҃#{Yee<~JH(jEEQf6ѻP-M}Zު'ѝV'+ӄ $++!.kd\x^^F|MZq9likM#|(|٫r$.H"gORˑkann]V J?|=9x\N27n{l Uqa}m-Y))Tz3q Nϰ[x҅[D8deZۥ$XVTpЌ3[ Vzϵ{';đ ߀n=Nm 挔Ào!y9Dg5bt]m\gc&)dt!8hř\o 3{E :]M>iM#Mv˯V4㭽 Pu_udq_ʽeʘ8]4O[zJs/Ḓ]8ڔDYsvT^їt`zvzZ=~SWkB;%Ӕ1μ="xƷ e.Gɷ*=zlJ(y;E.?n;b+?規7jvxGqșm5 %>a@ǟ݄#/RW RH2Fx!FpWΜYdU0 (+ ⢧k-?=1[klxLNqG}] t;Zy,Y : v72'7s^g}2SK(鑽qS,G/f D}W\ۺ8x<;b,VC82zܫ;ܾB:qR>BɈ-#qp|;U/ ?:E&6>"b]0ifH/5b95T&Yy2ƕFis닻{@ۮVMB6GTTa /^Ce 5_7LZQγ' $RYNߪYO\nffq{qq6Nݎ}|eC0N~N @jK۴DoҢ̤KmN5?qv3XM7!I: ]MKr |CbNm-Cʡ{'Σ7YCY8bn+mq*#i6EڭKW¢F#S},s'Og U:ۦD-TpkĚYX5>~R=pJ M$#67l)_$-uk'Հ| 47Қ<@ԓ@#7rKv&i361$%oiU'{uNnR ìyoLKvjр}"1)UN}';݃3ԌepB۴-~JtU."O{NfͲ:h;WvsYb6}#_b ڙU82F;C7sژ垞ֳZzVSmы7K;h9~Gb9.̉d)d k4x22wqy$jЊϝ<ݽ~s?=Oغ0K@ (**ZAΑ_綑h^rK .;HY`m9)(%w&/'u^m&J)y]Rm_zv܌<7*}rjA?0,:Њ6M9l;qU7qkʨq&_e 55;ݹ W\LI7Kr8 f]ܱK2>V 'χY)2NHKCMm)N!dj8V͘X~+O.^nѻ;B%$ E ??[PaW.SE^;๲ SƒG F|:u|t~{ڕ1GyD$@}{Tu}kܔ.&22ۥK/<22` ,n~C=o*?=OgoDj4_v+`$I9%5HH<[zUNL&!.$VcA9=Cs" AK# z`3筤&s^^!C~!L˃|#)EڌpOT>8)IoG @sFomZ=mupU+Hsٛݢ*^_S÷EQUxRpz7M8a'W\'\Sm@΀9QmQH2Rv[߼y|K̇+yCw~*2ڶ'7M-݄vMj;s6b"EN%2T_=E[9b.}]K{M_y hXx* )*O!Wgm|ŋb^<}Ss<ܧj[JC_VK^T;l6:x K8Ĕ6*c3qv(ZюۃBJj>s[Et_wpGIpptnBGNF(;;iHf@G({0BT[Qqz]65!yY]Xr"W]V$7d ՜0?$ _|Ҽ̴Y&IEwz,LOLhVD?`4+bEUbU]:»|5*LɨGH^(2r MR꺼ϫu4/=;/6nQӛV#ܤp96$og7 y 7.Pn wwzzH>m @ @@!GA[ D_M @ @@!GA[ D_M @ #C'Pɲ?찵L`DD [+7XXk5yf+,\GKE^|_I`$ !#wEQ^^IRm/Ark.+ WPߪ_y Ee_=$&)Iɤ^((,.1DL n$& -]T"Y͏(b~Ōk⏃Lɧ&(嚴}, ;0K]@Ky[+WMnW53Qψ8gZ[،HZʣwƖƖN1cܔ)stȿ{{@;8@Z Vd~[/{1U`uڋky%Zʃ7ԧ]PA~n)Z+bei7Lp>q[t-5J3noקW!-S.?)_JEr$n(ɮI=ς?|}vD_]4nSa1;{>Y[{ad\*@V# @<*ï7fq^z\YYuv(8'![׾->`"b9,Iw t_}dû[l+ {m6ıۉ>FwU'_~|SV|ܙˆLރwIw" 黶jA7սM6 -'ɽ}`^/J/kn:BӗRw'r\̊N6VfMPM5s}ɉ:>>}4ġm7:Y;C=픍!nIMGkG9 E%{1Zp55ߘ(~FNW_\ВdPF AHe`W;ÏEA4* L=x~ĭ*b;qҶ{ci .!3mT\-BY ~m`_39TkW!{2HδNxdNׄ5Vv>VKhHBΑ9Q=ze=`6B\ USx.ݵz:xz3iw^E/ >͡{lOn'5voY^.zFnb~%6[UYzjf!]b*Ḿ f%O_NWE;7>*o@An(QK&:,ӯNNğt.;&Cʧo!~!Ccm-nN #Aŵ;*pHǍls.dfPhQfg7SFFGR.i O'0M|Q2̂ďe孺48}{8^8ZbmMn8͹釰FRI:c =UU-' (QgjkY8 d6vշSBE=y`zotߚ#K]"uܨISqscްˋ5AMkBT ŹC]ϯjE- >dSEj制"<.l+2P5VVdlvh?zx:h (2m{<+T΃z#jRx?U B k H~[n}nK sx[yx0S":79yU8fRұ0{95.Оr8RWIsO/]ƚb.'XN0 2$ PJ!lvr26kIm07.%i`?v|獂Q\ܚZm偗/$ -c2..{b0Jؗ[~_Y'Psq7qle 2S~˰ ({PsnĀ4ˏ>mtHоYy<Z+=l˱ OZ0tڡw|O^L)D=mpH?⹑Nݛ{uF׆f00.x9QOiY'fw ~;΍y\vʻ118I_X諩dUk,b ;֛Y.;9t:|%% -b KsU=M5vN" C\1@"o|5K1OK~u5gLxxQm~yY\2/Mrӎ_dt2"^m{ _29dɥUwu82m]xObP\7$a3QXvsZk/"Rc:*8O }mX\vDl.O< D)ok;V3PgD}g84v?;̊^7k/?G<,}b?k SfB[ rx[eJɱUa[O;SrFWdYxՕ&D\EZYm3 RŃ7=Afx4_8֚2wc?fO2|vRUo8=utsޜZ@RꡋNs 8@5TwVFԯG04_;<' >;X kr|۵(-x]'/[w%HHrt:)df>-VjÐ@VSZ̗烮'ͦ\k)#ۤ.}uk5b@~BvA@ HdEM߻۔YA߁M]A,„kMYa7  1[Į]-ݯ 04 @w'wB> s Ӏ8@ߝx A@-L@ ~w+@ L<0   ݯ 04 @w'wB> @- l.:,j q]2h0@Zml-Usd^Rj (\}Ǟn7[MG#5m澈K)h $g=|"߱c_iXƦ86nQ](T&.h v2⩠̘ [Ӷ)*_߾xդ**MFWuŀZ9=OXmڹy8(|+*u=sjqq V`ļCA{ĥgv~zIr[׷ҵFYQq.TCW[fAA9Wvs.BKʋ9,]#=Ϋ:]kDn^r ARKk Ԁ W <] c)Xrw?Ɏq,Uj7KT]f9^.=FGQ=5oqu&Gכܶz- ǒ- t#vn̮p=ʄ&A @C$@c骖ZHRV[_CKZeי3YynW$83A&γN*sQ!x˾V2vK3-YR̜';__Tgd=NfHxIΙ9$$JbNyMIMbz~*m ue SVI"a2]UWRRUhxv(`~#: |7BIioL.bGpP3*"{_aefKHYђ !s72(h$9_S/\&me纛4D a_ s/|s\66wjk#;e7'+%wNr oM9?P7os1$>̃OV hS}"!wO]ZIa.BͶc.+ @FO=7;7 58mPI/IM҆Ǐv-իmjUC}|9ĝDچ %o)!OtGgVQia@k !sߟ;6>専P ':| 4ŵQc;jDMWbXk7'|[/!*m2aZ8  ^fb6IDAT-:jRXi)dN,J7s7|E@sT1Y}/K j}yG0zӲ"HSQhy{:xݱOmEKeVSBMGOA%ѲUT$9lT?8y;׷;ק+&v-<+Bʊ.C@C@?ղtjč,2/|18-0<"mvCLA>?Bqx dk, O9PyYjޣ;NXi!b032FSDT$|os#H_bI[W*;.KjnkhA#viJ|?GOEM)dI*› 5sOf ~Ll{M8tQ2iN] @L=w<BӪfy."/n[ ֔V1~Њ9g{4;Dj{z9)ØVq^Xs܃,!.^:d9o0W ύܾYS|)׷5+nPEYY(Q߆7(\C;,P<ɟ! lux>8*=٫Ob|X͔agISv|<::᭮ijݬ4qH-\ܶxE ;{kQ>xu2e^W,exXjhܫ;i2L(K ۏ_zlVV^uy*$7ڥ{wZ!/eu9)hDmjA'޶ )"kogNyZ$ .$vGO<{~7GGO JˤTMo#8pU%u1O $ r@F\U29_S#_+%p٭%u:npA c;ʷgv*ZǟǷ%92tl.esk' =qBj.vJQl9sA"*t>Vb9[?1l}E>B{oC /R寧K|LŊ YtmƣZXQFj뗢 >Ee~xog}uZΘ\ՉrI:eV07w[30dѡWWxȘl|u[O\̾ٮ%!-??G:XO`Cu ]EGHQOck] ’v ;K)NӪkYři_>8XmŹx- 46EѱA = 2 q4j@ n  rAc@@4( @' hPs7@&O|򮐍$쇮91ߍ3d&63'Ỏ}~] "c:CiV+s:R,WmKs3㦪x#VoOPs)?;/.p } lYDE8{Qꢲ%Գ Fż4*@FEvwQAbO2$xYW2_6w|>a{9F#VvX^9L넧yA焞CRȮ{n;mB JxnD$x{~4k ^.~ȝ< 1V׃?sq@c*B๫2 61-K@M?\-B='~ '+~$O5y#5g~q5_|{+\ƨV)7zn;$"<ult=j57}d"=:Q7.ôm?c.C .agY} cxsQvץg ^GSа=!}0yўbu'8cb̳USPPnm7ψ^Ľ".w27zʲ-ؘ͍Ӑz+"iPQ+;/zH'\cC ISM4@h%:Њgpr+lA  оpcio[:۩2-xuYi[bIbI]{pzм`?D>E͘z>{\NĐ]8';4$y>I(xNݹ `UVݬ4yy%l$a~+D[y6v +CK^ղDŽWb9@w\DRR蝫G3K]r#S %yNCȖpuj$$K!sg]"vC;;wp֥of=tyKfv[ۺz]<7BE\5fޜts"3q˒'/oaijA!rHIzCnxd7M7ݽ?{W\_)0_;ȱvry$lsC4;RnTJfAh>c'r-Wmyʐ#h[ M1njE=kk KڵӍ{}%DiiyK4?ٴ7>q\=Op\"3>IC:掬^6XM|QF0NHXu8p\'G>cԈ׉Zɬm)fw?G,s5ßg# u|ISqsc !F jZ;QiQ""=€S YRtFN#Ix{6Jd)w $GĤOMmOsK.}XۀGm"-\NhNן_M@ػWs+ h<@ <ľ%x S^UTՂΙMyv+XNG86Cj^>wyJi9uBդ G&|*LNAAG YC)}+yk;6з]7*/}~SG<7{s> h b;g0Jh3cA q]`>:N|{W&u\;&cnA ?p.X/ExΉRC?}(`T+l@K[D1 Vnİڰhbt#^o~vsD+M88 %@ckNʺAÆSecËm.+cnddߙ,r^ރ*?߼!&'%Y~~ ,+/E~|kガ׭Wa3QXvsZk/"Rc{"$7incW!G(O :w!d>n;^W\UУ w 3-}b?k ESfB[ rxK.s0TJ"7_K@hH=wNxxo'}b[oϑs[GWHpɀq#_+t6nDM811!N}/,MPCHxx.2ƃ'[Է]i[=͝X~u"BN tBɭi9y+,&4|ֱC5MLyeJSL%fхKR,#1 0)XܬOo7["K-灰f+ʊc|O, -'T8V5 O/BkcK:d6}SPZQFc0Evmd2KO^|D6Gs  O, '†ԣdi =/}|*{sºoFF+Oi7+ @Ai;߄Lux?8xy]W@F&2l)kMln_V-oj_ ~/0[{]Кz!t@Qݨ.'t =܍C@Qݨ.'t =܍C@Qݨ.'t =܍C@Qݨ.'t =܍C@Qݨ.'t =8_b MfֽGwl& s_^$uE G˄(/MxHˡE߅ /nЧ['"df4̑$[L ʹl$ nĤr8K[⸸tMql,ݶ,R^g%6jd4E\JⶴW}䅆J&ZB_bn><-X@df|C4\kJ{V5]V(n%yCv14=]qMp<;?OVYqq9BtGO$%銊nb{a6Sf^mr3Qo؟kOF2&@J}OAHZFFsj_b"۬oYlJ9HJmzKt<,s.0Ŕ U/Q6\[g>x& -=+ҧ7T1f-r$(c {w*0y#! $$rbtUK__-$)!%BUj^`tyAnVr4jz"@ &j kD0ՖB]&Hx y'X[>ar Œ do F0IOtUL$gblj9yR_&`o+@|o>"}Gþ.beI>~SkE!>[Fҭ*[@o!BJ.. .21%+5jNrGZP]9 "#m{/oP{k$)p gϛL6r2Mgi=s崾 -YRRYOξDNi}/#S)n9vF[}{/ʦIHE4=(@ZpttfjI,XGܦѯ^[p в 3)un7eKq[Y5+K䍰+kr.~scs]-/=.2H~O܌W)H^^^Iy m=5jمt:WR3PS2y`T5@/z5luxs|JUi ؇ Za9}Mݽ[Nv&zkd"~mC;g뎃s';Cm=>ՊOWUY`r_,vhOW2G4'hhkaw\)J]TU&ǻ4 gI  xrfՎ嵐y#]}Q$r6tYYm5<"g %M],/&BCŒR zJ\,ʹ;0)IJҰR"}-IJQyMj]h @#"Pݿ>pޑ=y.SŨًgOJ%wH/b^ !JQ+zCdT)Z:xzRtg,M˸1OuK#&, M9+5wOybNm'm[^2wJ/ygjXxd]+]ᰙyloG3tY_kOMP)g|6Bi+o; }o`=LMlǓHAA.glb&`T]Djj*3r߾HJ+VjS?CH@4B|yU啴LXڗԘg%ty5c+ vYũqO Xl8;ѳ/HA]߼66!=WSK ,a?/v]t0&e\odc $jxsA_z}_4F__jWd҅tVeVsR ʔ55~TQQEAVWmul$.'~NxwQs]Mi%wNrXN>Gb61. /ensƱ+nZȞb7v%I5H( ^-MAHr֮9CBWf|j@h04q/" |ɗ6tA)|8 X&$@&م_YTF+{7:q`&E\UYS٩y~oF9.JJ.f!^ ^x̂jIU}&߉G_ %u;譇>Um~抭HƉ62 u §[+mvf5HE&ⶱ|؎ +bw :mt`" +m,n% @&c]ƻ̔!sLێm{kIi[S21qB%z2oPg;s= 9}؆ Ƹm9v^|1$5dGhc>2KHossXP\?5ׅ/H˪|]s<"h٪S_H S˦S7nmr-Xztˋw5pvvVqvmB+b:_ē&zf>3kk![@LGGbQV6{yzuh)#=i-*d}L$db!=!S܏{7. k/NڼMmN.?6܃w,>+cs7@vf2Ç 톫^1ԭUnݎ?ĿU]pqz<&%%d#TTRn5r+7U{WnZ$@!1UnʷloH ٶz"M8Ih Iɪin;R\FR CAalHLz_(pۣfoa@jo omws}{/^yCN|ߖΈkE]Wз;\_޾|z&^&7$T( Goxy|[{DnӅ\6MB&bCWuʇo}BeZ<(!~yrS:#a@MN{y(0`x=xhGeH~뎽l_qRЌ+( 5ԣN +%TTtKuz^}`*..O`~b_kVYADǒE|볯%'^c"Ɯ?J(E-{j~2>,›2C 6]8K  @c ]65$_OV75Vv#U;+(EGտAV2>nU-R7ihVKEdqnf޼a"̴6 B(hjMx @$Q^kk%` ' $@ S) DZWՈn>i/qgO *@7$ppt,{*S,p+Ϲ{n, ~K.d,b<~ٶvXiOouy1kfc8o4Ӻd٧~CB?\=-ZJoG}jlZ߉ xͫ'Zwx_n ܧJl`?v N&/'4q {:OG_mzmT8ׅPnIE11ק!6VD\KhvnIC I|uf굠D뜆.I=5V 8*+h :]8Ҝ2J:Uw#Gg22N^S!jki7&IkX-:} q';ZiHV6}}-uۙ:_x"MJlpc (vOD $,*d1p(q+t2Ue,1+|Ll?~/&)KyG1ʋ_S-دzl)<{M~wm'<3ViZ]CgXJ @c!;/kֵWN=9e}eiggginjbi#$Q̨=m,fv3M \Yvv+x ૎*,=5׿䤛3,y2yomF< Ұ~?- m =焎ܴܗ.ZbĈVOrw67p?'景X\;Ko{]T9zƊZfPZQfg7SFGrnF 0 pGjI λdi IY7R@e&$$BzV.ڬ8﯏~ %_<-Kh;,AY9r<*u[R7ύʙ4[=c2Q-#_дv@)9v<)IvBۢfr^<$D"vxpaW@ʑikοSKQI(A2m{#7@ƨ3Z64؅q 4Fj{9sBAm z8D\P>3xAЎS :2l/]^8U49Ajx>07 i @ ds3ҦC 碲ԫףqWt/eKqS-I2۔9E[VkC(L@|P,Wx;swLu@kEDcuL@'""%/ȴͦZG: ~b0[{=<ᦫV]J$FW5]'L 4n>e)G {9<2C*rU6 N@ t:-<{p:a<ܧ+q>عkw_tźvڨCW 582 _W,.L 'yh5}F,$Ⴙ |RZ3\H*fd3ԤZ(k*PU|5"LMTNY addc˲R8VEnvAWeJz;< q6zdEw|{n5CjC^rY y|A>~=gFȼ8d;SrP+8c15tEtym0 T%9Xz V!ԑ@{: &zGY=|k!律3'"{;}j{K+ߚ/{qfXZe %,>yFwKeHXHgs)k)GZ kh4@FHF,~ur-~I!>@ͥ_]e+ {,iv jIC?//Ánmq%Xs9Y3Uu&`0? $5t5n7o>X># ѪzNՈSh;]i{}%75 #:2 @ sNrt,ݫ|yIaZ==2~7LK^]U;"y/)A3 "L<0  ~6_vo Pl @+K3?_Ib W @ϛuT?Ts -=@\ť)Bz*@|Vn4RQQarBj#n`P\Hu@w@*h(rZZZZ lvB:VBWs puj@ U9 vtu˺mJ 㠥U[T$窳sUYV uCJΛ{uÆt3d-*̲ zrR6LO=sngz2@A+644RH,{I\<pP}O5)'?vx"{+IȼcO'慪B\6@Urނ!n( ׉ y "DGWy 2(O7r,SꦃhY ۸FQn^X::\LFR_DHdjWh%XBQȨ_Urtn:_@#{Y!qz~-taHW'SlvmU @##HMCCM>B3p>';~6'ͭQrwX+G++aIEe8efimY 4B:.|ܿ YFg0ŃNj*!jM7@VU8EGGz2eZ\K1"t[sb/+zV(D m ]oo@/nL)381QE}{Y D!4 _8sgΉI)!Uus+r5|NԵT;ūwsr^ƾ5훙k<-> ffgLM}O[}榥ƿyadciPj?/C)phTE*+m%&`gF=KPG\ҳlkk0Ub@*"Xr<-[@ tuu)}X~~>) FJrs\ M\D*⿶T C"ܘgFCyyȼU7sGd3~xgaebHVpܩ?C.A: %>^Tm\"]t"ý}w@NLl+~޵c}wA _2ד[=>0hL"ZpAdJdž^7ͦ1'TF[W6ß&M&Stiֈ0AN WvGۅwv;|2#,W@Np8r0j?}fqbqq)|GHΛTp|:/Yj|/!/BiQ+IwZ|d˘VtDP2q냃sMtϒeNQowΰmǏ;:aȾΣǬtu@@/[7Dscuxx^AyWyύnviqꯃO;yK%k8V~`G/-$bmϗ$|Sc J+fR&gJ_a2A$UTh n\sS5b睑!ܲYRpqDz*), ?3ݦsȍ oeP" n?_Gf1f̘-2b񤀆[`2#ɓ,Db%m^o3*Xܖߓ=_:؍LIt=R/<;!ΩеË ΟZ܁jITDhCEynlBb*WCszIX1ƃ=}y}y%RhAisR$::Qwᢨͣ\=(J@&E4i҄:X 7qUUU)(Q|ӥoIwY4bUrHUe+/^bM ğe#qr3#MQP ԆoI΀V-jFn;5ׂLNϬᮯizQ6X{m]FjZM h3,Y®w2ߐ7/$f7gG'"Y5RScYZhii#ʵ/zZPtN#^JTp[~OD. jP(NEE ̤Jf28N/W^.Q zfj[T67V g T0Цf*\7lmض$-o[#$3:O+\Dk@. sy mNL<[6SSd %0GUmW񋷇N+wX/;ӕc:$ P2+?/Ys .gL Ye>TiiO;,_cwPѣ7taKf,wvU![״ ^R.H 2KjH=Ha D\7m޺iv䜮={u pʠ PTT rynJoZi% U_)r+}I|XA]F\ئ}fBDs-UҶ+)BS9sj]xvkעkZ$ Rٳbo] JkfPΨIQVQzYӏarF*m1D]?劐q2&S[ e[#;ύJJ& Fp*Ô4^K\L6i?'tG>heiF`vx`S g"b*lf\D" o6No^ӰH32թOt-։wW7J뿈dǑ_\%3=0 =S&(.M&'OҼ"{#6R&T2@|:]` {>VXpQujxw[Aq4Kj.H/r\"*{UeMÝȱ@v>>_KrWWnUM\])o$4ܛ⟎\V. h7#kgIk vv+ K$n7pؿؙ~.6ٔ֬T PS٥K [__ӂ'q'.<++ ҂*eSrF&8@٫"$ZyI^YFƯHUAӶRykټgЁ/{f=]] m{z8ό4*Ud/Z8xԳ ;ZF=êK jyA։;&&&5kx1NTSqqٲ e j@;of7c iI|$}'܆}zA;^3qEWH8mvR!T2֢_:v^2OwY({.=KGȴ_vi[R&_">Ȉ 툠F Py @gmWly>Um+>k;UjɁkHh=:Ըc2IQ7GɥXHZE3<}kO=ȫ]?6u'h[Ӗ4׵]\4b>V[9oÔZze)ԬW?l_H=ls,o.,b0ŗj"FUTf&;`\/ŝZRC&D#/qS#jKg/ %3-Gd~3ŵ[.5l5Y9TXxD_蛷n{uR711akj;* D%Xw8KoW\ Zkb ;lrwumh_c༥8o7@FF s@@FFw#a`.@p@| ֜}wA"~g/ld{qqON,B=PF P?Xvx9i ď4z:B,FJC&λ: @jXudwy-EI}ETڵs/+j8 ڀCvB B^'J-?>vIvǽxqvvoS—pڍ^w>!2AfX2!['S/ԅݹw nu߯*|ԶTpWҥBDy༕g@M(lGjwcOlXLze1']МZچ&mzv2`!lyǏAtY'U5\kP˰AsK\dԶe?$&f&6@$Ҳ16n8C:7lɝ'v8p0@3t Ysڀ݀o MKGcO]b-]3kFc^N3B׍5qK3oԡsw>F0p@l|@s.ߧO+oK٬?` )}gֽndۃkMoYs_zQe༫  &|X4CYRćp?C<299mE(fgkKdB^/h){$JrӥϮ]{BJ``p0@A9xF]:󬫇 Ư3_[KK4 #~.?wjӢmotDŽrѧwZ!!=+^DbIrDĹ83mwi 7z,8# H*_$@8z8fagw%XV mdbc/"jkcwTMW $7藧b< wwgG&6~:#*i`B|A`ju_QIJ':}>^Z:;jZ[<່VVR*'λr> hLh*w=hFcstff辽x91$şGlX|8'ճsm {/Q#BJ,'iѺMtGDYC=4yvvGLjykߔ5CGipޟ#@FE`[k6=>B*H'bOrYtיVv0%]ʷad8Ghx5zG͛Q=cG=ϝwΜ:zٻ;c]|yUԕgZ7bx%ˑ @.@PG_;,ۀeؘL(;;m+.`S?,1cL/;Vsgs*''7q2}zv6xL1NvZ\[Z>}t1d]\-;[as%  jO iL > vСzqĈ+wQ4ܔ3%o\j%H2lXR*&u4Gc&*{c/5~.+F)~R3!uvqYbEfpx^9q x$`9@8F4Μ7 7X @$~@ odj\>CD7QKZ hj]xz~&MUԐ[^m*哕£͍ZB,mmLNOkB1Ԣ \  ԸFPl,B1YErܘٖdPnf -JѮ4@fB@w:"(|Uh²_\iUWnQH@#P9ogOy[57w"_ ]s[wg;My!~a_gXM};:aM܌\<_M D~aF+'EԐx՜2(gL##[G;=5Iy*4qrs6V/'(wQ m*4]YswfX/Պ<ӠSfXD@ ЀȻS% 6oMhqNm`FMӾ$bJe/o;b<\T?˒/ci2w3s̠Ŕ>sic^.VcEt]xXwnΊ?2Glμ8yoJ08ǚ.YTOR!ZzVS̋ 7`3G[Pqweo7o_v6'mFSپi?U;[ fd;yغ>* D@Tu.uY"_RÈ[w^~nxRVbV\uYݪG8-jE"潔魚K O%,t#1nl9ޯoʣ.~.DMJ=9Z%hE OP2Qt#a"ˀ{^/K<_s_:,:W,˕~UD6p>dB-!5'׳b,~+pfim@$PFs^'7ҭ﹖Cd)AvoMe1LR <'nn&HE8إ+u~1<1~I ֵ\%r< W칱d[.2l*)'$a_`٦-^@M%,;xwcb"Q:KMye¬ۇZt(> hOW_DvmvH-J6SEFB.LyKIZR7$\TfYx(C6@4OH^aRD¦1)8 ㎯u69/cq F?AZ=gay6Mrl'ZDkcpm\ːtDMu`5s7e?c%ͮΠ!dڷ9yUGK$R]>=NRI|}͒9kJW[\ $c"6H1{F#w YƲ.a 4numhdW No!mqRύWb>o9M<$n^4j^ԻC^ǜ%ϝ?N1Iт3հm#JM &N)f(b̜)a_#|r\Ubd2(| Ponn={CNmnݏ#lԧ~zfliҔ:;Yϐ%;*B<[DKIg2Z:ڔ6tիv>$ȓAh܀2K6Gj2ܳzixR\& qDJ`ƏC}y-tYc[L(mj@\s;:+[s韃e1ݺbn훑36mI pT\zeRIZ兙f2#dtTQV&iR$ Iכnj/'#C',77ܷPB>Z˕@V!S"ml^8=5bjS.uqfۥϩQ @ o'p#C7[!TB2XtqU/+n# h _v`ߎ1*xNpg/^s" 鼬䕨D 2TUP("j!*ti\$J|)DB DlZW.FAZvvv5fK~|bꘘ73-=!*8ޤq\־gx/?W& {CxEMsS+R9xҔjV1@Ǥy3S/~/1jV=KR/YQ\ PkB C`eV:̷xYݯ ;I32:_ttZԩF̒܏)1WNd|71j}v,Pyz1.4xrċ~ O*ãXvY<{Aq?c{Rh~6UĒ_^.4^f%BA>@u$.5 - -X@+zhC2e^.∡iiG/_PTxT^~9\ fEmp @MP(YVEWQ/w$ +D|k3e1Z";G;GW3dOv .EPҬ,h?PU:e#P!@OchhﱌM)D 2C6\iT9xHWn<M@ m;fGMlЦ{/۰5"c2V4GtWn-t1ce=1 WmxhAEs7$ʣu~ 7ߍ*|Q]_F ={VP Rh@|ЏKRQᤦ3/!wv<]r,iW$@N.NM;czu).+b߽{.#& ѭ KkWmww?'9r_lL Lr&'NCjyW@r K+P6vV(;6!xN5'L<4PѫFJѥٜ78Fzԯz86ԙ.3K`!@ @y@q B [Ք<8" z@>|dLk Ajۂ_jE @"P*XGcJ2LG)Qp5E @񸼼TU!gs%"ʤ3DBb.u qP]]$[$RQ [Hx} :*lw5`@(O@X\"3ĉuh*>24AA숹H;~B&,*RTޔ:w@*@v p'˱t8u/cP:Zi~93rTRcAAc@ k/aPc/G4Wį^p ~5@ P " J`Vfi JsKHJ7in9a[\ ꒀn]VUօ T,P#BMRPc1OSB,d]nUMCbil G%jO$ʈ<)9]xT:λ6N RJ `OVϡDTpxc B5b /,YY%q$_rC֬ VBmcA)@yEGWtTil#i2/A4Z^^:^aYL2W5͛1 f͛7Wm`UZH/xNWT U,n\ 2@ j@Y;%P)k#/^a%:͈L]MuEq^u5,i2@ Р Tyv'v^"%H^>'yߒ476u 9n~yi'3j(٩unH`}tqݐK㬾scoHu 9LQy9UՍDz}ޔ)H&I aM;zyLz(8?rZˉ~TƳni'3Iz_\1gwzudÈce|~ypgcL֒$jm ͲUF }tlJxU,8gʿ#t'?G=nS̢sձmDR k>>>_SK-uvy{&vGܪ G8(u">{H+A7q,BGOzEԴ!gF83U) ϽxHĻ=#m_x(}p%DZs:t ƏԟDLzԈ= UA\,j@e|7@_>[;=C`CNtg6]h[ t֔Jn 쾑U>;cx[-5?&' g6M=Ԍ-dqgIYM@J- EaKJʌe]k5pnNڼSf3fGgYNv9o+"{p_(@TAXMOrg%s)H͒[z 5=5a2hΛfs22? 2ȔE[8g_?n.%Fj_mgY~S#q]:LbQ;XUD"ȏq6 gLlj;UҖN;uh8qm98..?g/v`gOG{+2Um̴b]{>;c>O~o.)Ut*]Ե͍KU+|vNik뫕ia ZR- @l^Uf~rj^QOqϛ#k3IΤ07)/,4 vKO;i->ճ0a!TuJKQ4be햦Ws -LyiaznR=7V l~9f-  Q]y{KU|ek֮S" PMk鐝.]ſHe;{ gw ؋;"E4u; '@ @"0n{ݧi-]e`7 8uzc@IDATu1011ɹy,g>ӷp8׏]/, 螓eyRa?^2rߧgrō\KAJx_@ +;o̿:1{7 6Ax7w츲ly# Ll~; ONmd.(FU}:u0pԣ#j‡},{@["own*&~B&vfL^aNLB2[)"i)J_D"Sd2Ug<>-==HSCMKOMR x3n-eWbέ҂J@4"c/p7؍WcZ6@X7b&\;5pEW*,IicbJjdGyCapM2l=Sm{ӹٯZغ C=!qބ.2hy 񊴑Hn?}^u[ػwM_w-ʯ0p4pwKM:=矡&d&L+&MIS+Т=0oDDIuap?^a@MẺT@ mDon8vMԝq.1t]%IOnK'|,,M ]A0j7dD[[?dQSnm-֭};%|b a۱=숸 >B8D :-Zcco',Voky(*bۦZ|۶ݭP~ړke">V4T$M~X︅qV!l |>\إg / \QCWV U @ hjccŁ[n$Qif8t37KMSK tիv>ˍzsիwDShmH[a]5͝;OX8V!YhԄ2czʘh9G߹Eƚij~n / VTovUӢ;ꯛP @. 'PpT23݃'K ?LWvS$M88NN_U-h~э5GāB^c&;\Mhzm4b=Cz^Gܬ؈x@ Ѵ)+>ݷEOBZAK1.c`[ z>oo ^&x)vq]aGmؤ ?7R]55F9eɇ9Rc`HǦ a/t tl;v%uilבz3ꝯP^մD)d|еcJx'CU]Ukbeogn! bo |m,"vYFTӰBc{)/7eZufre*; @Mȼ$gh֭<;wqҥM*1X]WM܇L9/֫ K{؆HLU|cgNؼ,IS|WfuAV]vp9η;^?(i%:*H8P1/?|;mKڣ7/yV&LQzyDmZ@00G޶3"ފDbM-e}](az 8UD5 ?y!@(hhѻLƳhO$ާ ۏe5TIz.v~C&2(w?bg2400$O-QVe@ojf`+ bRYϼu3q,;ʙHZv>z){{ҷ  uzۓWMlʇ,a&IIBzXPݦcw9X%#Cuꅟ hnig'*xOX$o: k6v k1 67BZku ( tɓʪAU'9Nl^uvΖ)<*1+OFtZ卅\  RBV(MzJV1%R&cb,e<2+?1VV,.J1!/dujK=wMU6/ 'ɻq4\T?cn6r*$&ttj~ :U=-ϘeG߸꓎aS]Ͳc3-Z9U1V~ZVSp/:)y@4WCvg}|QHxBY *Euk]=7xɭAo0*zry{/^jRhBe'sFx{{"iڮ\|vgwSήrU*UXҙ!^vc)ƿ'ʔ  ;.,z5'J 4bR dJ.SLIpټ}>Nj XGTBSGl*X@4ˤхw^"gh>{ժ rPZvr^dl(@&=ovľUi47u(}gLKyɮ=NIaRںԈCS]h4NJ΃#;h OmdaT\$ى9NFT]N6D+᳉>u{{ZJϤ4b SjZJJZf}+;?酬"89-&90{~#|{I0!'#lꆐ-FL_G @['%Λs߸ݖG]o~Y/|ށ407{M,(?,By6o=wO-/aZɏdz7Y5R林eaѲ<|9fСxIVoi=^~Ԯz&c٧Go2Z}b5,JvDj:uu-SYłe;<џrYW85ƒW0F:(~Fd7@$P\V梎.WUEsއirz=csP|@߯:A↮+}~jTŃ}R߼) pt rP5@y, !l+}` 4\/}TD7hEp9\y6ALM\u9#G7*z / ܎Fޝ9\QN x2)KҧϷ>>9JW<`w=wPƨ[˘e?R51bWo>@{ޜx{nq0DwF/4uK^O$=w= Ef}/oY@)-wBB?5]dSMޤZR‡V¡Is22=L`_O޾IL$DhKѩtxq۷Kˡ 64O㐋U;#W]G 9J|d=;IEߨ ?"5VSrxB hlY#w][gngX09~wF{ד;r`򢿓9^u\\~g  ']Kf0KioDno=eSM1;ug*}SޓiQ".]G&txZޓԖK~?~nT7Ƚ>5\=$ŠcЖx)_8Oey?rn=ۅ}cPOdA Pr#.~rGߙ>C_9)VлW]vc-nZU )@FLg9lAjj m:>dTmh>k:SS's4\GZ 92?3壺ՍE9ZZGMM F˼ҭ>&S#ꪯ(;')6 D e l]~vat:8T>ScIm?}Qhosc: -}r JO>3dUs4A ǧ EDvi)>;cQm&ige+af)@$ā7F@W¹os6q?tf{/3xWu_}VivHyrF[τ{&'(A@4B*mø]T2Faպ֝V@#P7 @wCihjoN#=o8@C=c<@C'M@#$=Fxd  ? !pލ@ mmh=@4BU^^kbBϒlھUYP!-.5*;ّKᲲ$Gbz58|]Z *Y@cǝP [;$T+$}gɒT{ ߾7ر}N UemB_](i'9YKAa̱RAA֭u*M,Mګ^K$N??!c^'kWUsrHE[dHMB,jr{* uߴm}j裵3ź] /9GQ1;ٹ: J89/.,,6 Bhh4<31|L [@yf8ޮ/Kik)E&`Dذs@F||MZ漘<#07qpJK{<(i >O'#p u@he ř@}L] IM2d<\ꋊE9֣&0s#<^~%txE7oƂ9:8,8K?_pUÏ0weAגּ\~FÍY`Fk3LC"c"õ`)J X0rCee9~>t_j\q Zt'2mt?{pp+r ;"2>0oCQ6WSr)DUj2^xbӇ`}ߡ(RL`2_}}cGQP_GJn:/ƃl`7n&b^]6X⫤*K\ك0hȫ]@TPdee!#5++BO wHUSGSU'bWox V!~"d:7;hu1HTJO)59RV^#*XY#ԹO(\9o}c֜i.x(sξK7(c\3't4;"00pcwc*?Qʌ29(X4LB׳iMs&qE2k^c!I<w(ޖtTnHZ]JɁsMґCT#/Yw|^ZoVXBG*M}V ںFH[AOo6Xz>(wNh~c*/)BfMf؋V=ؘ8JNUߨ:DPβ:jw4SGu!fddUs, a4Fȼ#4xsJvO7ZIX˩;#cl4]_rȸP gp,h2KSL?j{dBW\L$20ܧ 2!!:W$_ebk}ӄ?y2>Njꗕ *?n{AۼD^Xų+K5/y{bq`B#d57_WOJL(4E{ZxlHDh_?JɑW;&a"u}u'+~{4e@Wׇc3.k^yߝ ^CN]O-]9Bq *hw KK-x] G7'bk}SYL\S3Fak1V T hwLi꾙OrbaІh)Nj}~d煨F P3 z0Ј,d= xf5 cSBjGmU:h+: (޺O*p؟3˪֩tb}Fcd^J"$Fdp\9'4֐{q^/ng+V&ZeW٪CM4 KYn!V ^H݂ ek<c0^%a<{8MYWRZYZj2(rAA%Z8NAB}ʩjk~DDoW<ƍ:1 O_YӧϚ<}ϳ~x0>RHǡ%"PUA8vFޱ̬(._@n#4~.۰b5jQMP,!XYV9Xl}䶰0w{Z0FD{4P,K. 69]^S.&4hXuYuѶHxY#vINNO!!fC(rj'p;0NY,>DodP[ևl('  CN{QQ;$B#)h~oӵ"8R X<8j3{bB(Z ?.z4Z M\oBVঊ6Ni lwaSNIB%7zo¦xNfzP%Q] m#sܶkyv=j JuwҰBw,Т~,FUh:M N7Encw4o҄oB^ͱl2#rzbzGge%$.~3hqk&3׶2jۢ/eɪ$ڀijOVD$`а M'޶ד]^eoXܧʐf!92-e$V(vlMVM&QzӕpRgkj׷v-e0ʣ Z[mޛ}:D%Y-#iaWuih$#Kǚcf!3@ jLn=:hPMU!0B[%4U.ᐖ""%&qzFD3Br#tp'l6P#K#oWhRfC֫kD[q4SA궥5QJb!rbrjKUNO{m?JVT&0VϢV 4EîV4MHNz=rD?RUa9ᕕy7S~qŖ[L˼oEms_k|?seYinؗ76n;S3F9ݒ.۹z[.Sz ϙzq0i%w+cz 7}ƅu{#|wSo+M̔ jK{7<2{%SʃxKLvL1BGlZ4E,=22dŞiB*Rg6] d>xB+ ar8̼GN"v̑dIk[pX`lbG=ʯ%M7tNSO@=-Dퟶf ^wgϽ 9|>@ۏCӳBO0BDĤ(YhZyGd c@խ ^Y #[a(,3H4a^&f)ĤL-IKOb9Ɍ}G$9 1Uc˧b^ uIF_0%m$'AUo0s\'8X.|-*%B a@,K8RB16=zFȉi_ugJ]`pp j 7*ФMzZzAu؛$)2´FO`n?EOc$76R'+h0+:+rr3s9m;x Y*Uq`.]RΕUwqe:͕nk0n>2W>A̤r$uɕ߰9=mz[vnZZnV wHb;d*!R<9̴ۢ.Q%9}?22b-E1ltu{do-m<6tΧI{ M+wyvym${TX^Eؿ3e=& ǛMfMEO5UWױu/ѫӔQ|^}k!h8At/-XEEj\DJyl(ud,c&@I!ӑk: Ԃ%;C>悡j$!:ٵ}{CW Ԍ;r=^8aɦwnI\:J"d;;İfRb{&uj7ndpHZ%aN5l|gYFnK` vzzzRҿy?6N"jhS*}OxxX=g,h&.ZBdα(gY)E|64+޹nlF>LCFt޶3#}NTzuREEHvӑ'xa܆[:$˗ Z"kПY::` \_BzDO4QV~b- U$D`).(nVN8^PbRF0`M=@U 5-fkiԯA2$֔inQL>7:XBFYwTŎYkՠuTFL]Qݼ*| _he': ݢdZ:lPk",|VlCEQi<8ш5 q+BCa^6:_%8dH/{Qx'Vkz6Xx9w:O]eG}]/)^_ZyGD_Rtu_H#zcG4lZ7 ]~b0@$7`=M@6i_֤&HFg ^<8GƵ!iN܋@KM-'_ LS><뼍y> zo kg"9Kv:k)4Ε=aՕ+S*yRd%ӾvR=hWU$UG V=٪*raxDMY=rW;neͺ$70X_F#PΝ;d -7l~-iI[.լkГcs\g<̞N/,~pi*F>y-'w|ao UF?,h)9EenL1N~5`lԖ Qp2g7'8|q{݇6^Ez%/ķfͼ%[PQ?# ׯ9r$W,p8MZnIi6`GLoh%>_avf㧸$2Txt‡懒|aT%EJj+6չ5$b&:ӊN]x3>NmFnp/ǁv7_]9:lo=Z/4\tq#70\8?cǎr󖖖ϛ I|O~H/5زx|ُFvl҈cv@93srPeǼ|WD#[3^g@DULm^^\QP<eKTI5V;_U#t"b"h|jsVSIjʕ1sW m}ldvwɉcL2?v옟B ywK hpټ]Գ&|o e'!e2BW*bƵu6.nc<]ǃxQGţWfWg`:|_xsOneqyH4Մ]Nŭi6\Rt_w8sO 9fݛ2rU4X8GLl瞊#yuJ4]fƚ M$4ᅡDx_RΓwD %N%;zW/2 XuWT^STEIWT4/K)P`8(yv#H0}K'Sqghe5V3 UpAwCjo+M}ȜܬYJ@ C //oΝd-&^=MZZXo@s7Q5&0 7:ٟ 'l(!CS 3mK֍4FjZ$%Qt?\= CsW g>81`IG&?{cӟ0 :&)#}?~ eFl ' k?ވLYb^%7זSSCoᴼ7 ggG\ḦJ#pul"C*I"ђ1݅,K3<~?jv:! z``.m4ASF*NI:nE`.GZo޼񉍍Z۳,(҂DǢ|#ca bSJhn sM8^;};SWёUłMR,\<̆Z8aڨ;mw_k8Թ' G@BRL{-hfcڈ w6 igmH72(F!B6'3td 0'-˽جsR+B+.8؅\YU)W=rFb^ *|ieee0N. ` 2آ7 ~<ӯ=Z e vg.QJJJ:o M2Ѕڭ97;:|x߄˒D] b=оjP?tH*кCu+fd3jF4-' #xȬKP "  % )cG, L"*Q /nt}@SA(YO Qh SY,f",B濍$UHBF0i7s}?CiS1$uKR:8D>8:8|;]}ٽȣ$$X 9Kn@]N{al܍;(SɊAF#ZȨ`; NdIV`Kj(;9YhW𛃣_jDe~JWUЎ§k)5|a:8?PU3P!VިڞuQ!3](/a)*$mO{|k5FDFFvZd!"n>w26x,ֱq?YM2 t¨;o .n~+"zNP>X=Jzx'ede-ňY!vͱL'Ɯ@KfCb~\1k \y0?Q]|<&ac gsYi7w_aXLB J쫾1' ;)333rP|zv43! d!ˡZ2?3/ځU& We#e߻Cf1@FnCtPo}Ggfbpd07qEjr./s$=JG;ǕjA~sGn\6VL4"B|r?XYks-<}fo"TbRg$52%1sf If_K?Vu IDATd}ӳ~ܙ\oA ef>E|+阫#cqG⽉)-(dZG.JQjG4!dZjNɰV6Y Wg^|S-5 mpHic?l\BXPWWh+Zˁ%°CPkzrZ55,JEO?ZZdjq/'-(on&΄W %5Z[#yy1YyybyԍS8]YKKÚ@y55bl\@*b+4R!RAA f_&bBTȀ*EUGH,tRc63/1ƍ n2W6L\NNhN|Q8V-\C¢Z~ĭēp!Pc[?MtaIlYCI,)j4utNTV\B)9MIJR:4ARMH!K),)%QZ/aj ]n6bv eAm{_T\N5kBy#} S0OAð iXi*q "7lCZ@ͰV8e驥H(Y1B /NBªYى M@ƻ U,/+" NSg䋊cZ>sxmm&®FuJ'{G;2))C~vj~RRbG'BOs;Ύ%e0HPrqQ;Jf9G q?1%%$%;?lP]*7<\_ua]AE7s61?4)TcJʫK|ydlaL[ElU]z@D%b9F! 9{`*4OŎ;tO2rA!.z3 n-zvm/0_ƛL`02jf!kFԔѰ5 RqRE=5c "XQhEi\ke6j q8W_ F~ttd!)z*)$c(Rwn>5{؊C`8F8F##VXHUh\6'#e~LYeD^}?Bws*#%U]ɮKK1_$露|L=uð:T k+y:8@_F#b8x7΁`Hicٲ;uD`GK D^!w_tUeuk{-Zl3Z% ۉ`oFnIׅ`s ce3@!Ckݮ41L !<4a0@E^FIKiZ4GJf$k bG[ N1*IP*ND:+a@J%͂[j$4ZEăD(NZ~A%P5t$.27$0hk8.U&Cc|:ƸtF#: gmZ-^N, F#`0M#`0 l[b0Fo0F#ƻ=0,.F#`m#`0 l[b0Fo0F#ƻ=0,.F#`m#`0 l[b0F&a0Bs|+7V#hY`ݲGg%`0lqC`0@+CVF#F#2ne `0lq`0@+CVF#F#2ne `0lq`0@+CVF#F#2ne `0|nF࿀#ը3a,B,wj))8XU^VI2==4MǑ%ˇe`0a>v׽V OnK;֜ዎ,GC& bg잷{ ~{-|Fqy5CWTe%Dz.p.Ny""G,W_D:mVq:qAFoF3 F#в~fƼ|UJ1I[[nvvW&qs[~"x]DFX?N lG>9B*$(2|)`)2F!`[+=mTVFcy}}|˸SNrޓJ N^Vn3CJ 8 `pF#!| r"a7U7jM*Bՙw{mMI&oϳ1|mD" 2?x Y0_D||9rEE! DPo"C۳@sk7%FF}xcW< {ׂCۓ_YpvppN"Kr[~IENDB`flask-debugtoolbar-0.15.1/docs/_static/screenshot-headers-panel.png0000664000175000017500000016014714613236757025207 0ustar kalyanikalyaniPNG  IHDR,ܴsRGB pHYs  @IDATx\TY ((X`7vݺڝںꮮ-6``cb% 04C zOgqι7nhB+& `@M]j:O@η70L`p\L0O;q 0L~2yd'70LλCL0v? 0Lu & T >&p8DF]]@ TUU#KvU 0:H ?QXH/,dp 3|MM&*dCL `]jLajYY|~_n.RUհX=&@0Lg$PP,*Rj|z:37W^= /N&%oV~0j'U~-1@E.ILFw`J1Lddhh(UO!uu7s8@ T^-3t @5λ c&P[dej(ZZL--z)ZPPbX DUEVHLJ@λz8c-&P`UyV꺺6U !hifȹ,M5u>V@7'9 %z+g {|u`US'鍽<6P>%S0tᱶK0e*5GC0s0N{RV2YtݿbȘ񝣼mC7\}wVc?XNR.<==-77O6FkO=?Z/H/Vmώ>?< !M!4S#Zo US‡@7?#uhILΛ}mY{je)ӗ RBz^RN; .X)R`֒n5ᷬPK\Mv`5B +K&^=Ux<9=ΛG[ҭM%hd  AJ8 ; Zo~uxi꣎C'1Aكe~m:=gt,#=w]"?Iz3r>ã-d%8& TX,5XttT,(H \K.l"px~G9 A4!n坛/5AxJAHWB4XC wV[C"Pt% qvPyY#Afz9@P.%Mn\¿dѐܘ|.`40WggE KZ fC; }zɧ,lVC#?~IcY6u4ɟ>FDg7spK}8 ~rrƖ5sb .H_cʮ?Z54B'q\eGGzĊ7/MS3cF) =NzAd֢Q?қp&뙛8vjZ w~;K9z/*ض }qX@Ҽq+s* 6s^=v 9GwFW[+WxpoE J5'Svݮn reG k=8uzDM?G/nƉ{t´2zVJɕ@]&f]o0dddXAIMM rI.Iov*iƅEw]-M+ Y;p8.KB#5v܅zS5xjFæ{,_TnwV玜ݦɤ '&ݿu:@ę2u K6k^JPzyHӳʖ,bĐRiWܐT7"wI=ȎliW$ Y'﹡XiyR:s?geܸqmR“[٫/xu:Rt,`i)Emi)DZH@#\A-Z ~SҮޠVɡAY\e?C!G_kKIwِpedJ_9}i-G8NN6x}F<r.ijB >|7;vQNڼwl*}h(C|W-C[6pvu^:&po9\w]#LPXd`^ d``[A KPSS344J" ÑA\UUU:'()VqݶIh<,K4 "D3I. ZTqrGX~ui.};xXM/UJ@z+.+^{Ը?aʖQЇ Eש]#vq]?RLSzؐ du _M_,N:Oe 6;qr幡mw"faRj5Ԍ7rw mJ׍ʭG~?Y4.vlT޽ҩ>v8**^655MNN7`0 ܲ$B :ob5ah7 k0FPiiBR(# P|N5 n¯BOFe4-࿏02G s?FDr) ȝvr-^-zxwK TxA&ಃdX[lhh!' I"-V8s+=~6 i59r4["xv^C3ddoCe0<'Mv^5OBzқ,'ܐV윹hYN-,5T~{Ey`v<7&eV ~%uLN/ }~ؿPlEo;Pӧ4`I=~vpφ€C\FfQ:o(qNB)nSLTH3ATaE "L)nINt{SXܫ^MʷI_ҾwfLr+%㼃:I!!u)֌CPoi"[m稐OV |I 82*Bȡѐ+G^9 Ҿ_߶l ek8&P ݘ  T6 ߰Zi! *˯% u%Wܚjw^w7{v~5p=jKn-\xvqB {v\6>$JJD  7QgN7`{/տ?KqŜLe~zz?w5lx?wEUd_)VT . | yF%\prCs 8*(+z$s:k@B ^_w\qO$65^Q~YM!ʈCvslD4ic-fk|6~e c 'HպGk6nOϾ^- 8Joɲ5h+f<˼A,2sꕩrZSiB᫪HOL)Lm3S+KxZX` O/"X6O Sbhj;62oHg\z"N(yYp6).L\c? |FjBkOk e`yynnBʘL%# K9QJ.Ϊgۏ `@fFvRUPxWXqnʓ}zrCG.?X9o%}źی `@yBZNxgKjs&-𘰄!0]]v=wy e0V'bKаPUE ǃ\oSJJJ%DL.'(\ ~if335Zf aAa%edq(wjv , `8`a\ (Yxut*V)yשӅ0*%*Bza!xGښ\MM^e[GK6 0dþ*ovU 0:F+|‹z#u 6T 6/0L*VUצ{VE@3=?bq0L0:L;:|& `?'[ `&P `]O60L$yq1L0æc& 9;n5& `@&w>ytL0=&Fl9n5& `߃ɄMOidPi"g4//O>Iw9Yb& MB&P9xؼrpmL0L T;r~&l6;666'' VVV?B; 0Lxrp*!w`B0LPB-WPPJZЄBĎ! {Am oWյjX& `b|>_~+Mfk?ҡf{6%K-lSmq%w0LI;~ԘH,ֳ Ŀ @<<1Wі]wzǷm]Dģc D~Jg^8wUkHY ɍ.9ot;Jգ3ܨ*2@g%H `]~V$& `ɛ!`Yn9w1gwusuG[c:'#54{䢶P^K!ӤM߾ a&~eލu3$fp &yn%OUк!Tu#y)ӷ'ZB-K+cc{)W~׹Wp'.sRA.f:u]k5Zl\Ŧ/bbbjq[i& TkkSV>M;ژ9!3|}*@}?i,1oͅm#]tL$m޻cG(ʎCւSAZ l /3r& \v<ѳq9K ;3r8]A^¯>J\ɶu⯊ɭ[|\0ׯkahӷMk#7NB<ャB? ?~.ec^μ@%q->J8r"6K*h8Լ'YX#} A%xcT~W!e|S*7 w=ݻO'Ty\0Lz{9uW,xv:[\'sC[KK4=/+нn4ֱqcEI"H$YK"(qع6+94r'\6wљp)?1%1Lj+z>wuqXU!~ӝ 08ʣ6QFqg5hGёLSk{urosm A`_d7h2# qbK_2b^?/0XgXHλ @80:Dʋ.^ƞZ4Ve;J<֏MnP'eo'4SghI\#T\BDtlZ asFVG(33IFb>H{gjWC[ ygc&P9`0&agb= Ry|x=ܼzME"8eB3k%lܣ/)37 pVNz=|>uAmaM{y]|yQͷS[TA{\=fJ Tyg>8Hͮcw}UBM~aD%OhѿwK5Z@ Y@W.CiNME?V{EHYnZ{wXQI&`,g-7'#Ա6mZA~G7& `@T7s|kgw;󫣖a[OOX/܈+BM;7u!&YWϜ z1zBbVUJ >7&iOG{_V(.@+^)2's U7AHG.(=­"5S*I4& `?5J S"6}fa qWu8ly۩ Iޮ8U O܁GI;^>А܈O |S!ȅXʀtu0 \jcOb~ P0Lvqޢq55j>?vi$8ÓN6Z{rZt;8aC/bjqI# lCb;:3?$Xe~?H\v ! rL\ z!k޿nT"n=<>/T?у]}"& `UB;G?5ǣl:j Ey25B +-il_J"mm}bجBmf_#c#PvX~dua5ҵkpNjÖ^gŞ[MuZF%e$K(1L*H2TEqsjNR! `&(60g ,0L TwGfۆ `& T yWKL~:| IvK"}srS@l\zj͑rS}_KVP3k|aUM뫢oUQ&g{}93Ym hE1Lx7?.]|i:}ʪ2^vRVڅ-'J߷Olm -ꤪ^|`kj7'q ?:r들B&-ll uP}=[ ;O L0ZG6ȉvdQK'88zlF;+*<6Rh4=tPrˠTmcGK8Ȃm c^FdyvF lzMjfzv {{tymQJGZ]ljwPev>a٪CfQw*˔ `& I׺GzO-H gyA$Qݯ^Y?6^%-.yd}*@=7۽0^cx<ըJI}9einT!D^d@C SĖ?>24CI(QyyG& T#7\% W 4oi*O--s@ uxew'BF^:;Zpۍ% ZՎ?PSBE}UnzgBCb?|*Cil! FT QTV gۀ `@v Ȣ\vNqRf7jvRRjiʦ_}ݧ{60i8[ZM /=%UZCk !u- Sӱ02\0"P9"/1$C`n9:CKJu2ssp8eֱ( J{׮݈a{|faޔ`\M_:eQ:T:ո eLT,*O 5 t/̍UKeg'$IH %**>YRrm `&] %ݺ:e\vz%w/b2n&QօLO#W<*\m&U6U9G";YD鑒4(W$҇0L 0jy|˖/[b[6Ҍyy#a&M&z-_`⵽?@\TEZCZ}8u4LKo:œyC7ߞ}چ<WyxwYGDd5# kvCCdhbnajA|̲^{NK 3 ^=ѥ!c;[SKЅoo{`k˧ڀR>"#c-=f3Nu-k*a^K3#-=$]Q> `@] @^V\tX[Ɍ'seP$5"|RTe|9; B{>W쌴Ej荚@p6lcq4 xre}.ݻ/e\vK:rҸoŃm;Z3[?}}I uy y9R廧 E& `@v-4?ril =4n_wJ>s޴Ӧyzt0Umh˶݊R3G=zԮHjDM$ЕuކL3DʍsM$울 ܎ `&P>'zz@.[WX_U(>6]nFCC! l|yOV#h q9Nh!2:l}wAPO&8ve#Z1= si 'Yn~bdʿjc)& `" ٍY+&M ![D@oyk5jى~{Y MOD]oֳ P7+jF ϶ݷ,*}S(Eē 8lY;exni-S*c& `!P{itZ儔{~vXřc؜w9 =Gws'5st'G NmG`D,q+%d| 'CToUw}dQSTy)+B wob(Xrf)ǘ& `N@籉EE`elnA!+dPFyEE͡$P:]FAeɞ9L2rӈ٦[/UDНd"ZC ܵʺ-ei=ۈJx7' }Q2`/n4+)*: )i7jjd-p! qr{ZTr{)7a620L8E9EBMu*bE:Z /JWeqJ֓!/"TUu4UxE|v*+Ӓ24MDQfh[VcU'~;O<l#r& `&c<]f B>7a }pldsTuTAn^_Rll*)Ipzx[r5kYWl6-?60Lȷ3$sĮE<*Uĩ4W+E;-vb0L0R/+IV#_cJKV۳gۇ `&P&!ME]v6fr] U""X\򺲔IqYVpL0"[Ƴ7U#j|]:]WUPZtSB6ttUuu-ԃK" Scu`Λ& dJ œzz;' `@NNNm7.,?W| U8g =k|Jxa>`MUS/ɇ 'W|Bdeӿ^rT\0LfFcqlIGtTh9EWWSvQλ^=p `& |GzJX+rHUUE 4}7ؒp\0LY4CGMv[jUK0LvՆ+0LvUK0L0JJ,11oNbS s3#zEυfͫύ\[|e'c6quF!l\ixQ#5:xSXeڻaL!V"4]wz qQï#{M}1 ~g/uQWgO(O}bY/e'^΁0܊IRu芽b.UpjƉ@UvMZ!%/ E$FG1 .nEGGOid"5732c#,r5ԦE> [=j}C6ѯ}̂' 3c ) B.^dcfW2R|cZfbV;[`(mB+mq4lL@JYzKrfx^ DWB^ %K>g1 lK唦`V~a!w7yG9.7pg ǜkKU(;)GO\[֯8 ءQGmX Jd\@a^a])X' Ty0YXZZ5Wb4mbfiiccgfM, Q !fcccLek[ڻ/X/B'"2)iJ?:,Ə;Z>%OC ,+D FuAKd634nX_̦UP|A&H+5&Ғb'sRR,Έ|49(eg٫ZTV ;,F촤sY?)M|gE'_K|u\3oWSj'yǮ C;h6W̛vqќǞzӍlIp.-v24PGkC)#@ W8!#6_W g1h4W.ςw)l֐,r\|ן׿[u|"4Q꓃S[=g܉%F\W1n ~'~IY%G/nHAާ;+S&0|EN_)ho??rBhE1zz{^ O3K~e?1& 8! Imh~."]{}bIt~J$3XV*v ŝGDmsM'+\~=CIWr81hF 7OބyٳLiCAO}DvMS|:?eE02 pP`Lo4jSѱo.cs6y_NWjϮ JåΏ΅1"K3 {͸>g!ӻz2h(H#}ݍ,$3٦〻:tw^DF]ϝ?I~lӀ=.?g4C*3)ǥ6|Ӟ)N^9X I \ck~c_Mb-r1XMh_[*Η(|tNJl-p['a7\!N 8ŒO0.C^u֭6ZaPPIםЙzìČ8 wUN6O3]e!%r%@ƲxCb7x+=ܼ-Ý,z遳: (Rm0|S0O%Ξ8it{<866pej@1WA3NWߟzW.oON䇶?e^Ȁ6SQϓ)dvR7LU&` @>ʃ'Ajh˼qO?%ܜ7;0Gͧ]Ncm{8kYkј-?wqw;EyQ|ߕxw;I%'p>!/rHr•}wSbϯ>2Y||e{6\~Š&>" e*sN 9rn&ysxbKUzy{A>IQ w*ZzjJe'1z{ߡO>gw6P+b7fȶwwan}+[d)`5F@Qq+N#]PDE[ȓOսNšI(kQ ,v#aMOg'C-5 D=Ţ_A(<*g]+t 랢ꘓ2FS[[۠FMh[D1}tRNY$8$@IDATlwrxA fDJ\"tj[mc==N)(VrІaV^3G;)3ڸc&L32 Q2uH:@blRȖ! ]Wl?]  I k/ |qܬVA|D@&%jԽjQiwC-YB,t4fiKjy_L(1 G4WA=] PAn/A윷ԷssE[Ģlf?!hÕMb٩FxnI(I@r0Ce]΋UEfnz\q+/Z߾r5TGg%Tv}ҁM+vi=7#{;V&$Z__F%ǻ5%]'5@D N8_*d*ē-b)*$NԅHCa'}eF} :ڻ4iL@xIxVI(E\zҳ2E$@GBdj!AB<1ד̓e JWA)$VRHidȞ7I(l4<""":6ʲ&cp4E+1!'!Eie@# b$HI-7@9/ 6Q.Q~ gArXg`ߛ@ew%! \ʗ~~ɎG^W9NZIh Y=3{W 'N }t3z(*Eddd("[@|/> ႾD6;;.aHz^Yl6;+䒢cSGwh=ch[ǏYIE\=;o;+*qN (/- a]U[r4ÞF sdaoOv i)\Fm#\ /@ tíCrBxpJhb' u!p1 IiI}-f.oD#cXЇwCK6EL|&ZxėυiW5P Ku6ԗr4AxݍkQ 55\JE|Is 455 zmc$ >ft;,}ށ(gd ^'<iijo~Gt]nrɊ|c/7do&:[ xJffX( ]+>Q)LQg7]ɲGeY!,̚.B1;^[۸ˌGΗyV !pcM;4smSK6)"E-dl> 4#\W>* lN܈HBIK,GF_1[5jm{MMupOƺ𡦃}Ǧ fyS4?DG܀8BT(TD,bQឃ4uW?<3E(-D8Skk[kBܼ]idaƆr&'6@bt x2ok#=<8#3rl7ef!!&&ueL6zm D:<%\rǍ3sﰖʣJf'ᱳ Zx,.WU8BfhCx<֧LsK[([WGT3~VҐ@rx?5*]L֡ډmœI^#W!2T0@Vlj8Cp+ʼ\gXeת4g Ir<'$-@pw+1Q1DGEEEzzzӧOe@""u8Ȕ6_rq4(d˰'BFj|A' T$rO?!xb?N0ZSMf^7V-ؠ98L=tǸoԝ<2yG i>Nt^˺N:{ȧ[^ ^ 'cKÄ+u[t=u{:ɶTLU.V; .AS+KԮ$t='(ҏA*F-#CF!4ZK!г;2 2xd6ZB՗ތjV =snS|}qեUrλ.5h٥lLYSU;2FˡE epZMݶGQH㔟DӶê152%\*$7dS֎W>bopjiz0Ujk0 oعkC$pP=+[(cD;j`&P{D<-$yĊ i4'?!!Jܘ̖Ǐ?&%< ^!' q& `H@~wb{ZuQ7K!Fl)jv5A0LvP#Ig3膐Uc ֘X1& `!^vXr*-ۄ&x>>~&-YwX+ 0L."Mr8b_.=?°9;;9)PSTvwJ+>+mfZ6%'"cS=fԼ\:Rʺsv~CdWRwoY&ozLmCKg.2Eڍwx-[%. `@]$훴?dx"v>b%2H:=Rcη_Es,#%jL,5C ml8 >5TF`#ʘ=JM'q Hf)m<2ɨ7#3ϊZ~a~ʓ%muق]&WZۚQf*)>/Rbu5.RN>hO JI̾t\\6}xט2mr$Ðe}$y8 0O۝7ٶ\I !sȨg;A볏t>442:jGd]qrr7}UwhDHT Hq!KJqm5<{1hH4ܷ:5 3ɗB_ Mi1GSH&hKCT%be'{ʏsfz("5 i)7H$}z¼]EKdjl|"aBQC69о&^(.ɕ msR3IUBtmwF $H|4_tc=;/ԽqxL*nG1LC*uW@'L--,4aٚZXX[MCCdhphmLéESً#tC. 4[bC!|51 X f <@г6"hP\Oψ 7AuSB&(DWyHT%dxaig$F}y4LzHj:zm6z`EI/LAOZAЌ .mr]uPzznLF8F8ɓL>{`]Xu7T`/߳`e+~ ps3 {Wo-bb~]]vrrl q&&g9hWЎKlc~||H]R18 `@#PI}֕j m^QѸ ^J %up?ڰN|LQz%; B6p4o`Kazٻw޽|%5MA'{qE5%6AV"W&g{]i~(l$+CvF5>@W³iJU:H G[ܻMm6\%Ouƥf[pʹ#>|ൊHе'~8P/#nޗ|ps]EK!5C稢lėۥo/ne?0!º>߶eŐ?mS[{_~(&M{΍?K7S!im׆#B}{2]98 `@m$ Uhρ1kԣ2^5zWџ,ínx;IhǛz E rYԏPa|/OVBM{Iעn^{x{κl/E2!^L,Ml20R@C.ii OD2tq֌]~b{J?ژb׾>`CGwK(oiZ{`m<u`|B.Moͅs@dEG@ȏ(vll'zr^:qˏRo>yC·sE;Nshrt9@;+U_׬8~"Mt9'BtL8w:}OKR[nYf܆i sBO>@<.-RNmDC!_¼, {(va.E}[7;˭qqK/',& `UO@Ua\65KM \''fϖ-Kg +s:9fsCizuVhᇮSj]$д)z$Af=p uy{ j{CZܹy/ڌh'ZG;%:+}H]'k"{AE ""ݳwv*~gSvΊذcW,* !@|ow ;mfμ˾73ަ[ܶkN#rިu Eʊ3@ZD;SѸtjbOsc_H$MD "ۏZF["RB[i,xy_]0'cCЖBm:wxcE°PВEĸh;UV5[#mT,t] dZKӣ;7;'>:]&:. L棽hD': .Lxtv k:aV~vJ TPll+r9C1-At:D"ߋȈ=/YQsadyi?U ta0,?,\#L#?伡-x^yo Wu) ùf3 _8NihJ *l4b2 28Y6dGhԋF# ١ᝀâuB)9yLO|/h~u%\cAo&jBj Zvo?%F0I9"i0˭Bۂ=;i=e)@0E qETg{fa#FVsZ߻֤Yc&ޯjÓWZʎn3uFD6q˵Bb֬[mjo "Х,T#H혛kOgGR$‹n]N">N2$羝"6FG!ux=|AhPC v߉2Bras^=ΔȄЀ7&R)XyxCKpxF<8uDwuG/K(BnжuЩS!S8kMG_J0JfoLF FʇwiElfI1 `r u5"뿃~mέ5Y6rX3Q4Q` $t f 4Gy2stM%xQ{4ZH[sYc=7!:RA}Nv&%˴7XH 31WB;yZaMD@KS޽|^b:NN gqXܰyE3F>`inofc42ld?ZF^uچJqonhRe7V߬L]۠}U26RX31F#(NH84:7Ⓞ2})S (&qrYSn9B]O^1I8dC.:dU H~u1l҄Jҭ($Xh%$ j&*Yu9)u&vCSofOg9pK#a0i:RÓ#Oasnikq#ZM'J1k>i4LmQsn}] I:tNq/kmZQ^;puЯml[ 6'.uQ*RVG{#WIerʔl PYVlء;W]ޏvqKfC+B(I"JS<:Cw3D!=4o~@s<&Z[sԺWѹD6Ngܠlͬ\EVo?cF[ `l_A/n{ % HWQdbW;v5 9ȢQäe4uT7-MuZn϶oVZ#%QW}ԍ޵&R(')b0HMFqG~K'a5[n -yS9 - ܥѼziסDMӟixq,gJCtA˴U]D]Uj3B-\،weKhf;o99nV`0D] jyAi)ᳬy܊סE9EzBΎf78n{M4]|H)쥏qG9o[0E azAOF*꒥ovўt8ѩX[4+[k^T䫘[u2Hdb-L,=  5[.Ԡ PW*}{VaڴA(V\V c;o>8`0?$!SlYWx%4C &VP4Rᤔa pbM% c% ۺ-$ 6 dN&*Bw}),b I6!^u1LɣQif6͚UJ b_{"f%(A"Dãmgon‚w]G! Pk6q,;DU 5'bEZNd+]zڪvg(7 j_F#7"moC֮vƭud6punT(U0幉lDXNNTHM ge%|ejW7J2nϜUP$>S4ב=4+T \GPFÇB05]B6?2]ZTđ+J,tNY 9LϰUཱིU#56o% -Tfߒ$^ #`(ciurWBrMaҝ×J#VA,Li~Np55fV/R֛`^Q]tpƆ)hQf6|Sx:iUBxCùnX;,32V)jk); G [PpU]j鲒WkITbȎmmjS]x}Ӥ z"dg ָ~7x};837lڴbuZxx@J};m^tVU!w%:tA()5{m]ɇ e̢*Y%m]M4ٌ)%=/',heUhUe^-#"fbb"ּj@y}Q= Q^^޳gO -IS#R5щܸ4p|*mkA,c\2tՍ`*"I䇫6r21"npeQ #qZ[:ø֓O(o9e<*ZƿLUʜrd\FV ({ylms&MHTDц&'=9 :+B}. ‚-#Γvip Ztm`Y5=333=-6{"KI)HK l>2^x* L8>:( ;;h|Ȝ^ETֻ,L "`CEĂe}8˫+B!s F#oG_ۘ$MQcUJ'&): X~>& c(qOׯƀo*"),)&&)-W -ܽ8@OxFIb҈eL-1fXY򴘘42pPOzTa|MTf!&#gRRS"}{Ko2SSκ5))53&kdf3ːEEA%wM|48>.nI&D}bhT>cr2Wq853g,w$?Nb~Qf}OΆgbV u-At"th]CS=_1kJ96S_I'QC"M"+ˮ%zj{m@Dk!`0^$czTɿOU1a%Z-tJRkί%Pze*pk)*G !+8,21pg ѹc3b`M)Uz &Wz""+vMaxqm3Ą+zv 60_^և~/a0G|_=n~d߸F9QƽOtWCϒVSS Rlw.㴂 zve+BCԨ31k~t=WCr ;b!^$Z6+o^|MHHdQ %)ʷ!m9=0B\~$y܃7NPSJb]3`iUhTpVDCmCBޤ׶l[Z$bhTCUY?sgsaDC,e=9^ɽ5Ϟ?">,xb?aeo23S#}'0F!5S{o"f!/^z~vhW|%Yiڥv΁8R**&Z#72Ua5n(ƍWC21XWXbgO >V=[oA)QwZIҧt{9"PŽ?^dž%+AxMY V5:s!w3O8EddkRImh|[m5v܉;텶?b0@8)(< If:ډ.GWZ]!B.z LF#haϻG7H6,%޽xtSg:޸в7гQXA л^Z*8 p7AKr|luki[4uk3*:}CqnFq&)E{"9YRt;SٛCՂ2PLjo(ϧ-ߵ (}ZldD^+xn 6RGo2 YwZ]7)ww̵di.6qſF# ZjN8B"$+ޢ2d?wy_fy޿ vڥ7m!hg ]zm</  ;wuKawέvQw>ˡl tDCO^31r0<΋!FTnc^NnP(m:Ia.UK5qzґCp& $1$Ca&M{Hs8nۺ_7 Ѿ2ʻO|`0F=f)@EN?)@姇 '*ns8dѵedž=<yݞ{ ̏|󞌬и8#GFfqX!TVp(^DNAlZ e+ q(IvS!$]d 6d`[Qp"'hTsAGXwQ5Lr?B6Pa\DUȸ,ѱ* l`1`Td2˛}BrC,Y^SD*}]~_ lGyb8`0@ =歸2^_( mZ\bCmOz\cxx'tQZd;<]gy+Lo<IØ.v0H Zؙl**Td2JԕS7ChCTMLz*Bى,ĭjXБ2A. .$i2{c:n'9$|An]=>3:@w24&!o,y6[1\mO(n)YK޼B0|ۺmC+wvhKUc?k7ָCb0#z=U7,+@rW ,,*kZVV.VX5^~ ;)=1U+*CjZ8tef%k)5>Q\\dU>5kdU5* bG'++Ww㛭9]c0? y,wf3:Zͬ Ύ`0 / _\켿X,F#4BΈs+z;6W l4F#`+yWrF#4켛.`0@Ǽ+++X9F# D;ᚈCšyF#94F#C;oq`F#`~`o6 #`09ofIwb'>>=#k9R`ևl-#egDz_خc_vI+Q쥨F#!λ"樼7 )q~|oSa?rvb NwfWvt#:vhf vF)KK3]Yo)ϽHղ"f| VxCf9"So\O$!]B%!wUDTҶ:ۛF:ؓ#.ijq,W]\.$7HֶP4| as&|fٷ$ևhj:Qcw$re|HG$?Dln -:Dl}?##BY!W ;jO$*C&offƽ$ڱW_hyok*** 3c4rY8dPiE=W: %6VDcrU2U`ӵ.l-#ZAaw[:Iͼ6Bs[XQryv+[ - hR*!JHZhSoFg -zngy•xov7ipԑLw 7 B$%C=[ti/fZf:&&:*p410WGz211"wPTQP1\~s <+]mQ~rCDq1^M( W$dm .t 5T4)"vKl`Km%5фLm߬t|tCQZt:t'ΞcوC!=3Fq3ӮN%ܽA; {_7Ȗ OGm <:V^13q{lWV6f̜od>6 a3'Pbl7,Y"a(((Ϯ<7$4m?v=u:~j]o|5,i5"솯U6Q՘)EU^Ӑ&W6ݸz_Y=K6- aWq׫Ls(<5juM߻lt\~xo) |{>aoD:jîin>wOdwvxqiT #Ht0>qDX?""O6ߛ0viiiIl) G*/6[!B|{ :|_==~ mLt]7ȪJ^8L^Ȃ0IqsΞ>{Kd1] eЕQVJhY83!"PZcUZ}!".SZ &=ڠen˻mV ѢvR5u?H@a4d'CUCL^"rؒ跾pEd ( 4`%\~֭CwWahm;8"xr4z\lE;|ePտ9sRu=!tI ܐ`p.趱Qُa8csr:yRGB@?[Q5tycaր[-yDJO zޚKh.L}qڬOtjZNj /+$c@Þ$BAZY5@̈h"Q":)hTKJAnU͸li:\=3|mk\кVe`/sq j}WEv=!ѕfZ3vM+1 ))3go~ǎ4FoRi`{?c!c'Z[1ru,P nכr0j7=켈8ηX@*-VWlgeE | a Rғ֚h+{!Ë Pߑ>}54%9.KTvr%L%{J;$e"**NM}7a-it/G(7&!$=Vg$Loz4Hn3;|kW/-MQSЖzBaDppp266n7E"sB ;t-'/'b9.+%#U "VbqOy_qQU,9U˂IZ$)miCE&[d~K[Է%~-u- %ܛnDGq&syBV~\D\D'څ{ k棽hD':Nw] $QfaBdt|4IPL.DIvv~vJ TP&GDzh]=q ZmcS-#Dinv&n8Nf0 [ y8&nN w} ,ytя5ùf3 _8?`7t?ںeoh}L!_L[]f,2͘ mP}ѱvÖuW۪䝇tAd71t*]&>mI_0NzKH:y7]^;z)e7&6FG!X6^_]G<8uDw]?|XB9@IDATr'̶o[Ft߂ܷS$eJcY`S'旨VÜOJXnpǂK,,b7q}VO-DF;vg}M,j$][*zu7GezXI{G7 !>Au_hFG牼 TYkdmea;n;Ұ}&J{n{v[akIkn_}%:Ҋnn֮Zz3KyV۶\,**UѤJcJjp9_ʶ#]@G?/QRF * M<& )1NkgK]EM'2Qd48(UtYU!c?e \bccWR@y{r#J7nͅ=C)j7y_o#|uL o=C̫ϏXP?Ms?x\>5F*#fs?L17[3̩ڨ c}pj䛞ߐRkWɄt(* *4^w{N˼\I =…'Yn䎻ʐվ/0>sQYyYʺZp*ʈkM=noĞX>d ޳rz =R#Q %v.+5n L'\ uktJi_*]AjJ.|.#Px`Kyn*V0V/ |O neeK!˗ʓg KAVͼ 8EZɶzg( B~Xܕ/-{QSMo^0Ayw}wP#֚!#fUEmX_L}NO tUpSΛ=o:U2ԐW L.fC#ߕ^KW?K+~/2ih54>l.m⊎G?S"@J&Q 'nq|R)=~驝 +Жh{>S:^(qqό7oo^VVFmÆ7$40[zn tSQA"rhF}p3ŭ]UN8G~Q=y]zLZ&=;u;}v {m׽n+$D êO#Kvp\M}M%@xjT~aFe\xU7xkﳿNjEp FA0FpyG+x@L$U)" bJZzl]#&Ya7 K3}ikH{|[w3&\[w;}ڲJ%u9 h=Ƶ%U?bQQGb' Oyq#yvF |CڕF# "y5Ԩ5!MO 6x!Pse3{ZҔЀw0|kmYY61p;)O?CrTlةT@ff$y: Y専dγ3Ds~s켿#X5F#oEK91c=7vo},C۰*F#GR vKǁk&y70#|9.,’wmqVJn쬴T@!WgQ_TTj~SRVk~rR&UIj 1eH{[#%g+X'5 F# nպ):@ q/aOѾT;Rґ TzKpzay}b NW*xyg֮/rK̀$xKm }Οk :.մB#=-Gy ՙwJPyc(169i)Z_E%M$t)8Žfeͥ>w{7Whq*0vUn ]x^dH@b|4jH~L<#q>yr]3Iiih7IIg~ٚv52_q RIII3metؠ˻i"Mogp8Y!|S8Ȕ];ˁ]S^?k#m LMxAռO78W<⸋ΜDCGaw$&%=ȋD:'28ߍm-oGnQ0nb'=7Q4ypa*{]YABQݟ&vP|`t15HT7?hƋH,SP>Nc2PfL#)Z輕AF:,rk}-hPװ:h m85"7RRUP5xq~l{RQ] wOl8:vo-F7g"vEQ+!Vڣ+As >39. Gҵ{uv60m,3Zh@_4޽k<*ٰZ >pw7pa~Iy]a 1פ~7S(xo %IZ2Hwo Kџ1f瓍#λ 4ƥ+hj ^1sKˎvsȃbt1KS^v)k.N\u|ICf;iF{" f;j NIL""ҍDQ[n>2C9m?OcnOT=d{aʶ},/'xy;]]ܪD'yuGݘ~hמ==Id>CŢalDNI`MlXُQ7Itjm ӛxZ$o0؛H)l mF#e/$sgJoˬW< 3vmMG7p4I~wCorӔ`gBj̠eoS"+y 4!M  צng|‹cF˄{~,c3g57pa&~Qi^i\(&E⬼*LK}Wah>=2תW]yV[9};kV[co(F{#1=`h}Cf;j4DN|MX:>p lV Z/ Θiqs}T[w!`|8k!iӌC/+bAw:v6dw|kE=v-Lio_8WE27 wyCMLŹ،bXFJ3Wks>#?JVt-EUHQ> ,O˓\NM$+(>͆^9U0t5-]UE.dL&ʬ׀S?3MܘD" k"y)F)`λ)&<F{#?~Ç`0ovs#`0-B; c0F#k`0@λEF#>mƶh#`0 {-`0@;:։`0 w E1F#={ub0F4{Z t}̒YHJNMUGEp쯥-;JVQKv-EهR -b')6 |2Z bdUIj4fK޾zBG.ro$G%vIDxMgfaښZ]Hn3m+MSTLa+bˏ}à >5P_;1S~ghql7=y-82g>[^]c.--cON+`=QΥS峒53\?R]ϬcǎfHb(?b"U"f|ÌPwAt$Lyyct3#a"a؜ ^!Ɲ-.$1+>tx# VQ.E4?`cͲ4ӞwGSr٩9 WsL^?zQm-_Aj=0=+# bHH\{ƄT/tv>L+5,V#Wyڌ=}>=}琧Xx[_]ˎ]tln{-&!XJ*!)ٶ>h(s0_wޤ5"Guщ J)H {iOPlwʚ]inJ[g&rnѫ(5vn=# %Qu{!2. I&X$h\N9TZQpc_6HӜͦ ʩx0yA(#֩IO--tTi4M×ȡK9!Ol-.!azJffԽp^L|:飡v$O~}PH"yrcЍ>a?{䮿 F86rm iڄs6lo؜gWTW>v<#JZ:CW6)\bОM7;GRǵW ?!'B$%C c`b`oj ykh@T_kABX?K(n`BVZI˨hph%H]IOEE$^Vz@A(_g?^46wM %bhbCzj ܛd tL5gJb'پ]/u*o_E)beX?AB++u?h 1k.B)m̘9ӗuk̍$ —\n+/}̘'j{DXdx0<(Ζ c8n(C^;LX9Âny"bk^.њy/d6'ЊQv hmq\옻+%#V wfO\2ע2O#u[h61SJMNNOO MxE'*{k䭗 Wbg\{̊`'ǽNA^S(+nm"2KSJ"ff*ilz \uB!FES>#X7\Jªiǹ̳!:qiնռ{i)=7赮>i 3v1KCQpp&hmzX+ot[|m4vNky&MH^Ņ_2a̱w !9DJQqMjPŊqqo^\JhVʃg>FܫC{ !Yx)O@1o ~i# >%^ϔN]yde1V"wGF˨bA2ѱq:Mt ybL|Z輑a] _j]?V~[6 {c㚼O,=}..GDo^Z !+ya[6Ŕl7. 2coy:r9Ѯ" 4 :N&K SWf)koCGq!o<ޮ{>șqeDK']ǜѢlDoٹId6~>GK㏣/=ݺu 489ͽaC92vAw.3mlwO}wzo~0-\B=]svN ޞYrzz9Z$R@'{ïWZ2DT 9 kuwvUdCd.6l[?~~uCYU6l=;cvot l|bEId⭖VF3>|p7;qx=ꈢ3JZˆۓ# ԥ&ŖVִ!;ω#6Я-x>=Pa&W&9d'}6O&#/ome``mL'>:iOGFB 6㭭ބDZA1JG4!tSWWhI @tddkGv'n:2.?qghC聈@3܂P~LtKD.[l@qQթѝz1Rg9jh]S $'0Zr~qk ﱍ5LZO_߳x11!Vp $*#d}zi;e9_#/]nN޹D7 Ȣvylނ]&j:^I`\sO(ۈ8'C ׅ|axA{zV^c}0JkQ?1L&CvD5Q`Fxo.B,)lՁΠw AR4:-8.툨 zks핱冂R,4t^w׿1+hV=Kr!=܊5g]o_y"`n ³ėeeFD6V}@6J&0WsX(`Bw92J(ckXEkKyo;c?1z9p < Z u_Ϫaҕli-KN3$e&}zdin.R7wqQW6o ֆjJM@Eu]wq]{3JY˖SrU!ff=^\*@Z""8GgJE!f!j;75:yl=7אiY۝aWw LC%ZV=K ϨU ٯ%^H0l4Ieo}hC1o) ^INib|]ZVgB|-iֳn.3=2i"p6(aP=u5(X7iАj׋GMO;/ֿ0>R]b"Ua@䑽t(Qp"o0:kz7_{uO%izmrcߜ@_H$-EYQso@y AN.z!C#" E)T2Ot̰7RQߣ^g3<$p;"EN9\ s/h38HG~m*^IxrjvU_4hA.rݭ$XL$QCT_8 vS&5|b=2xGDjQ*m s-šFB#gh{|e[>bGbJnЁ[.]~:V=[7zs#|aީ]]zY'"SM՝;M.=:ťs8v-x,,ZGtU]\]F`!Y:T;YYsWG#{x{ a4TnU"hR[9b洢s-{wՃ&,] pju5JDÊzīۯ+vmNHv[LE}$%jn!4qY2D/ދ, wg.0"Aܸ9ވЉqae3&/SǮJg]"LS&(*eǽ쎌: @KQ]`uvpH^bհz,IIJ3D]@h3lvFi2(ԜNۣƭ|ޫ,?5?ՊWДlǃ\씝Mx;Sq_L[]XYnѝ~7}H|7<=df4͘W}Xj=br$tt:{t[xۥ`!=-"~6vZ"03C&~-^^w` Fuu|ϙnT8#^h;䱲~:I^uMli;ڽȜ?x{U$@bMʨyftl qae)v++Bv DZXap f5`[X3\w,X%3c"{Jn ۜlG\s>zii% D^As#'cћ[OzF̑W%tgUb YݚY8'I\'tk0dGh EH@>L'oɣi(B3^?je^xeTThm=MȮH[`\F(D-@zWt4s50?Pht&ˆE'EZIӴCр;!;S1U\x򲃕//b >2^w1tO|wVSφn]>H$H]$yA$/PFP\;RugrFF]EЉ|.׾-I˟qOJCqUx{M-䎙FlǫaH/\.7ju4rRޔ^Tb}}kn|rV1B0oڐSd??Dg^Z:ݜoTT,&{GhP -{+Yh0h>wC.Ea سWeH-)U8JZ>7˘f)^)%%%;==Ȩ8gzOoĝ' 8R\RAnҊ*0y'K,d{E9 ax FT`VV z{8'V[Ch Sii ~VTT0hEXXT&`lj}4dZ$.GK Ii8OFAZY=r>O#ƫ2| :VAě3vć*.w^!R: -VO1LzQIU*+ȩ` qEz kᜒG^9w|ך999 I| !BhfŊoojyzJup ~cjډ铳|:R?<ٶ%)z%P[%ZǪ'W%f PE~PjZ:ܿ=&!S&B=Mc$K]dP Ss]7cvu}ˍ! 8KvasgO-:;dzzszԣ{7EL2cBKWհ)uPlLXO&?E&*v[aBr0CT E(ԦM%eAml c")(#P*JC 22 #3M8l_9ͅS yJG<1 )\/i81jXmao cknPfըI#O ]濼7x8,AZk#)K;ȴ-<}F^~|g.[)[8~ɤih#n˔q/A V]Ӈo##Md}DN]μ"pUX6t&F]j'і5#E䤱?`0/QD]|Y.<: ~k5dcbމac g=X׿tu~mϪ{!a]LЎ]{~P+S???+ xI7O1픛~iߞ!/trk^\4wC\ZzG8{N&JTp9VRf[bO9g+8E4uQW"ӌ=kjNm0㏎&~w/\7v`ކR.Qc^0H{`)4V5-Ob[ ۳j|ϑ:{3MTklHTvry$n?qNOx[M}[Lhv Xع'2 w/ރ|j~ F#F*#mڢ-| L \Lt%JͧA$YMS}]ȉ&oL;Zٚ $#hkޟn;W_NU=;@J'1ّlǰaasM"wVIIU{>UY"Bx_HzXT,HeM"Z\\"7oa䰂aޱͿAuB+˄FϔANh\E ̛+a1Ϩ׹y=< 1Hh=@$F#hC3á( rX$F#"w^ѽߴXyGԚd%?}ElAR߬71r=ֲxy$<-e6k[%&ryrҋ>Ij&l8Y%5?w\ (Tl8ͰQ]z'&A,QBjo4~^_ą4AɆGF}2ě/9r:sF7^Kؙs6OϹVVgk.6KPbm^=IVŷQn[iQ#K?/~gдJڑ~҃!3nLU9&˧gx+i jZ CmY$LڗUIzZc_HVZYM0Sn)+RۮdI6M`#I= J| YJ9/1#zt;#R>˪гnu,G#Т`ݢ_AORyMNeGМSo3Q =bBiXZPyݗ1Wa3tfhʼn cza3qtmFCsFSCS)` ERz1p!aCE{pmmo*bzwHu]bbԇ+M3JLL34_"lÙߴK}y qjh!yO,sy~1f 30ze9qV F"Tm__J3.xm{( gcL#'3LH+E6[Sך۹"2FCa8IrUNqދdFgV#rJ`!)Nd%+ӂ ^r=ʆn]bX-(,G<TƧe 6ֽ6u'/!0{[Lv/*2" Mbk Б{(; 1鐪$H[)\ U)O{ϻ5ΝE"TmtRPVT fDm\.'7̪`b}5ꇬW6 m&{`)==vhh[C=FʻnksNr|KW:|a"|ܰ+GxWp5 )DRcL?_:g0i,%(2^,}ғwNhgfC69KY-٢/]&bTp|$I'$]]IhoW]rxJ73|DYVBJc"+YP*Ԡq0x}kcTgݻܵ`Cu[خ& urY-n**)6'#‘P$^z!x]v/4-1k,bFX{Ʉ %Tpzڽ[nݻu'5\r9SÊ(֦{8RNotؼSZ^8 ΌLFY'b89CHLǿ RSo g@7b/n_nĄh `!-82p<U~{2r.'oxӠ{ta>m^ .,WMsQj=!jEQ52ܯ1#鈳H)VJ:N#PHbM #+0nf[ݜmrhyb Ϯ3-9AB:f-kʝI/p{epg`/_V 4\MiBMx27R̋6/q P]#܋m^ HxF:aޕ}g\XQ~'I Z?/V::3XUBF#јZt,{)CV2zJ $7ثr0S3{Z#s-|TSPt4n&TgA=m;{̕xaсMjrw!kKd4gWMF)X*IhKyAL㺔ɺJj^ Dn{ &x4Ebrܮ!7yrco9>UZAԑr{W.vPRB] Ysc8 "A6SD/.g7 S.=й$0 ݀>Hjv? 8~cnZ'L q#>PU,!v~8޾!du&]Xf6BXAT٬~)|w0C( O"Hb3`V#+u~ܗWHq&UU#B)O"x393p.1EL❇$gx:BF+RywU+-t}bԨV!j!ee*,X7Auk|_jVCvLb^B^/ X- .f]I,JdkqnqlzS\b)$j=z>]ȠЄ]Y |.I1³g]bcl>k@Ue.D=xs v}yí@t$jSl5@YA${{*,'SEp?Dˮj2g[|O L߁9'`nP-/gjvL;>\bRlۊR9`xV9oG2KOlS*|3lYHRF'$DM%,A/+SHPߥ(i[Q]ILIS'$UZYAzIQVbl9Œ**0e͖b^@***2h6]|b5%fk^B{ms; UFDYI%A™_d5BjIT8܈6}͛$-{S5TD QlpDJSAQOM.`8qL2)yd^-Av}Ch2*~($1olh{KDwC`! |dΒ|ޡG58F{:U?`T\gLBѰ& }y۽LpC~;iv0m҈ F8G" !h]`ܽwUUBm:P K"G޿cō`0_始ۆ`0$Xy7 #`~e.nF# kcF"1*<1u=uI[M [ +Í.|~EJ:ڬ#Ubm9ȳb ^T0gϦʊKK*xʏ9!ͅ0W#G_ /R0/zra)ܵߨkm5A. YSexӲo7=7?nkjyIx45]B.]-턽nJe"YeCSSRr=nV#~j)w;* Om"Yie5-< =B8B)HgÅF!ú5T&p ރcrAc\` :cCh~& M (ȍym"'k39.8IQfLId\ kc0vfНW~̊h j>g6'hV:mdza[Ok3B LY&&N# MF#?*~ǘ{CUjo f3!tWoꜴHI4.O`0?ꭧNq?-ti41Ksn==ՓoR+st- G60K=T o7pkàa/(FUݓwr=z/JM *y-1ieveKfyBJc"+m, 0!!GS- Ja񈽁ւseFuֽ;]=Cu[(Qd=EÊ܃ I9G]_ZE;[R1FDs0aZ7..gP xAnYj{y{xuqTfW幹'xojGOw  T%υ6#w޾C]vaF"`܎NTJQcPuc>xs't,oװ@] 4M)}ukM_=EHMRB] $qJYALeMxDEX<:eLfΞ;t~NZ Ostzn|;tn"<[ v|x#&LlvmqϹ(F(}S~0Wo~+\[!|+Oݞ!=.ֱeMiw]КѣOH+A꜆rB0Yu~-nnȭGNKC)!Oo fmtݮqYۜ;s=O2d5<;s)p~L{Sl|B(i!ee*,X7AX pC+L!T&{o;P w%6ݑ- .f]I,JdkqnqlzS\B,cf*}8u}B JEz)%iĬFޫzu%+ՖdX0ha)bHr A,;w7v͛ Sz't|c6Oq3V&yVaE+" 1$OOO72|&8gBA/..lX,! ֹˠrre?S']zz*ˠO<ddW}SI'-!IUKbI ӊ $BJKKA5n6HIIFMMjYVQQaoo/WDZ/ 3>gA: Neee,)Ծ}TQJeJ9VZ$|>ν7цE͓=?8t7GArC?J1?Aiaao![۟3UBQE^CDk憜TxS}z렭-DsU4@.^MEkn#Z@s5 *<( hhk` X`9!Ĭ HAs>= pYD< $t3wfue!`1۶!jUMrxuu/+[+ A*;G+׀`B0QZܓ䴶H´[TVvY6J>+r6XPd&ŭ̓E1}>8Z0@ #~3rڅ&mY99dZlEkaޏU٪R󉛭zD`0@N_ҰXTRz,t:#te 0Ij~VlRQm0'~68b.F"P|q1Ìc<U/bۓi[SȍifIr }%[q#1? O/d7 I3,F#jܛt+z۩gw![m;5 N=,Ğ?{_e6WnA*c;ʙmv;6S˹V V/ ؗ>/$%> 47#JSf!ZR &{V`ǸG g'l84ӨT֡Xw7+\Qږ[alׅ/q_ 6΢v꘾_|ʊ #<~N' DGlˉKJJg=ĒNDX*u?6,~{Lr%6SjYWk7{ohhhQ Gγ`^8541;F#jO?ɍ%&ЁnwB"_Rk0gr_lUSm0zZ.Qn9l1gF#"@}'mӔ60A?~YZaXy%F# 88w,/gS%)Z|ҮcQyA[E-:ا1 {ĤڷW7LRKJ$eUP{[e/F#Xv< /ŝ¡A?~^ \tRk)HXD '=)۞A|P! Rs#(f˂=)SʬK ~aӄ=7r#EnNn3i|*'.8!tk2&_cYoB%zHWUSjۙl0p#_mXW>D+t"Y\QSGGSUS_Sup$Adi\8RWSl JyfCyLâڜk%>;$5u49`0+Ord؎--;zNCO>I|%iqN(u/ ^$;N!v<:!qŻCq^G: ߀Eda9<}De~݄ Ӡ2|`0C7!!&qL9vX;tRKȢ֬w[l<>v#dvoo+ׂ//V?aubɺMLs1uTSOT@;7w`0+o"6NcI y@B&d&aZ'A=on!vlqc ܦݬy{vmmqAN6Uj^YFF`{hmLN9b;A z8 #`0-+Pll6{K{*rӒAdث9&WVTotQ}FEh!!Ґe'wC #,sh) liFA7`u]މc`0Anu׉D'nkQMo-2R\L26|1&ڼ+[|05U'Tm#:]k'B5=O^_B:*P߽>F 膯.8]¨ȫQujZN2wa |9wcx/][XPWχCF+h׎q+b)_[A=ݟi%-cHi*r+[:'#p3S)/OASHQ[9&F# ɑOMUE Fw!-߅<# |Ub ᔖ+ZVQLp"F ׂ~*J*R"X,VT:0k)F!ʛHϣ&Le f5xXyYyt/k*#U9L)Ly55j"tʅyy9:+)'Rx_7ysl몫?HΰГd6bY~騢ٯq!ğ@M.֫w{J\[nk$nY_:aՄE0a'hb춰c;bRZ78.]oL X&Ҡ>gtS __/OKyτDGE=Zd^ xFEE=XC_`:@:?"* s7aͪ楼*oc7BlPxی ?s¯[~_BoX}Ex{ &JWVqs% P 8w48|K :/0ٕU5#:"[@^eS*XJoբkt,#\ &d 1H yey8V>8ͻjE]v†=m+̒|M/]t3\X؅[[Oh",uoeDIB91!ވb/(:ۚ8E/Xu8Z1#T@=TB 5TEP W*V<ǩ09+YA41Mt/{JUVV 1O-&fqĝ9sIWGC5mVC]Tj\ |O/`n=NϐF;=7B= Cg'u|F!B=ozCᘆ=l9eN [NΣT"pA0`8ww~QRd?` #P-1ؗ/_X,b]TTT~}{b)))RHB+oyvHVGC|,_Vagle{&EJG&4wQYny7liˊՏ%1۷ptex۶'n_~FM;ZQT?$%f[hKdIrә{H-d৏BptC~-Q8B[bCWugYknDKI(0;ImLFb>"]RM=/bYsݪ=3\UÚVI I6ܐu䰋umLD}3ɈKcjTJ5ywI ecW'47 /*%X&Ra« FIkn 8hEUĬ-*ONa|P4y;ꚁiV7! r,o `sS@y4x#&S`UN{(S'aMRDv@ΐ#sAsC%0'pMVq'N<538%-e?/^d".Χn.S|Z]`gkVkZp>^1zc'/?b ^$7/+5kU9)[VUIZoUx} !ciePeVxw/9MI=nqTzJ>š:pQTIEe?\NZj3q['YhƋ,~_ܱg#˞-ےME׮,J"m nW^=C9 5"ҿA#]x_,*yκ滵?"ZK&B9Iғ ߕL~s/ye2m!1!g5XPvC2=Caޔ>R[?ä3a3555.ߔ q999--J1| `˜$A-!S9U1k-[}̀&B%,Ƽ|62Hv2 Lhd$-Ly#WCW -&Gα0~lj[qg('-R 6[ }4ԊZxbeoWRݿ$7綤9j Ek.+xѮ2ySMt TIbùmǔ~t>{z[rZäه{陬/c鷷rܒ䜱U7Qp.% 02RCAFIA56f[=r!PYͺl$GG GwvrXܯ0QKpxv<o7SkԷ]o9%I\S/d~YgoAN) t|}2@p, %±7wOݽFKz :bEq PIVo >Y`.*-{HI(JT v]nJw3;Ul=tbGE%='dn3)+o{2~G "PSU`.H5%^{&>:k:~Lri/>1,;hl)r➓S瞚ly(A3YX٢[MƮq^v(CJ>5DIӢEF嗿 *eVRzNE*֮ ,[ָ*kra@yL΅Ӈ`bܳ􈼡iSy뻮٨=76vtX@2?ERz4:ߎ̔1/uKсkZbEgd.jZԔt6x%ṁp㐁:@ϏB~ &=w`+RȪ&Νj+<u%G JJTHN;yWv*חJN/BeS$Fha3Ăvk/c K>cB^!;v+jl3$NӉ2H0q $[((Y:>8}G$7BX.Cf.N ̀y ޿WK\S|"}QZJ k繩L6 ߰Zi)&RUHg$+==~g.\2%Ͼ/셝޳̭ozPJV `imq ~re|ov8|ȐNO" j`xl(gVe* T^9MdrgU2&λ , 6 qL|0ں=;;[|&BtmmKO*Dd#Rϒ& ذfl|cJ]fRHM98nQ #ؒlAC3^fD޽Dl{-_5Qެwv%;JT5wP3Іb`D Cm;Tn{[F\T'v,`D[8Eagg(5PڙG66R4*Y(ti\r'w/I͍zyh7 f(KD7+ (v"tn2 ԠgNro<`7$CA]5- E1|Rkش IPuE?zwa5X~td_&|7! +˧OR }0 X`j ,fPN9T!:]ǎLĵlα P0[Ņz)\51jklziE.¼CBw2-e?bBt%}d @ J+r|zc8?\1͑~,YԵal'@pKU(B_ߧW-}JQ-;xŞYZ4jc(nTyn ut #)_=75bJ4!.0$"ߒ\XU_!hhm s  Ȯ`HTZE~^s'a;IG"!71xꙛKJc1_ѲaH1?!/ףWо9 䴟s0r,@.1q8w#Pb XR[CCiIn0oPᙙI dISiSwq}O$ 8n`Vߙ ڵDD2^Bam raht6ޜf Y]Fod(TT#J*{?dpI-B DV_^R7o~ @ ]L(thϹ . %jrl2r_>|uZܦ'ă*֓OE]uTڷ&r}/ JV0Ƃ+CJ.A _dz8rĒ#5]3ZzXFF@ EE y~> b+azzzYj P\s,<jfRsv2Fr9AW ػ5 0ޫayiM#2ϻ ]{NgQkAVl^152tEeל{=+N{HduԨUx{M:]fe?rKTq/P1#-{A*~ۖw[ENaiQK]^-z2r|GAc|ed/ yye'5Jucc |kV7'-n,G QBki:N!)PB#)en󟗑źliӳ">Pv鴒KoJjr1pHZQ&G؃|}irqQ\0(h{gB3;b4f5عki5"RE'x[KX^Ϝ,amU`kؕIH&!.Ts J;^̰`?:ЮdncĆ|FBej1lt4B9^=QÇB&S>w!RQAB3BFVG/EF7H&kބG-*KfH|(B +.2o$fX@:u+(>2#Iڻ 12._| L#+L Ro+㟦Sm"ҋ.Vz:5*?PrқNXC9D%u!Q~΋A N!/L]' ,%=~Y97<inQeS:eHRj1҈e{miGzW\x}8#΁e2O:PD[aN?^5.5* $}>&2Kf7vz:Uj 0Qz%y:[H_K+;]R௨ȨXy00p ?J,!|U_ZXBc(5@]8: ˸,O)iZ0(7ao@&=y熯|J_BH@SKIV I뛕$/&X6_,i]Ude)T > +AmX5^SH]{}Xy##?UyW56LV/_%3Nhn-מ3 !i gץ`9<axy_b55kZN!u }y#xZ' g0j.(.;Lhi+AUs[dCllq FF`]#~3h=7'rѩq2Fq 9^VjE9-|L:y-=s?gx攔044*v`~ yy0 ^Zn}np~m21s|>NcH)dλuoNWVzo+ 2?X^TD/*b7f2KLŁSW%u)-ڰg4 K'F#PgL"Vxq1aɕ8Sg`‚V)-j`I0!ZVW}h>G77#`0u^a1F/G+`0VuϰF##_~c0@C+gXbF#/p1F!w3,1F#4rp1F#Pkh`] K`0;m_F#Pʻu#`vۯ~F#s`] `"::#a"=,5R(X5 -2b0څ@f~@;oOoה g8wS~M`H}Y3,=MپtB(#`UwK\ȴlOC(ZQg4m:gǢcOKH1#& ]_@.:%'Ow=b'؁|E9p!X~'⌎v3MA;; ѹe+}ݗy̹ #U8W>,NG受r!Z2n!z V_S`0:M&Ynm@ykUDE22|N$^y.ςs$S97yE(x. )/@DUWf!>gt[yRHGM95uF/ ׮E3B!49>:Xy#L` O,DKGA2\4U/zߨm+d {&ui3; Ŷ>oM&9}yS0GzPo{$vԅ57@Ț4%9ga_Lm Sއ Dt`'/6'}6vpHTݤM'oLĭߘ& TI.NF1R@Mr8@f8nzWN:1!77 O ۴a[o_?Jjn`|IľUE/{5*e٧:mE bd > WIȽ|0;viCVy荭Yy Sua^?vdD9!h(QTz)*p)J @Fr Œ8J * I_GƉ;o{jrζyoСTwۦAnڶ+[W"ql[u$=g=Hw:OL6֙Hꬫ H~u~1'6 n[W;&΢Do4pkNݝV8B9R4'.GG->oɖ9:zG~{Y]o7aōH%[8Jn}ߝ ]]]PW)'z9RБ<F#c[:GSӇuk,nNS|Jp>V|ohWg0B={m̽񈹞޴٤i\v^.JiaOȿ4øS&*feSgÚ_ Q xhA=k4v矘>JG8$Rh#Wq;My, v8?pZ:گdE0AOцС/vizW![#Hv%iql,?@j(uS qG5VAeDO,GsI`'t!|h Ϫ^>EDLEN, 4{EeKn r";TO`>}Pמ8qC |%L/\F W=C]w4w5zhA%uAs|j!La&" CjD]yMjn Q,>?픫1,1A,!7=gfšpv)v]ђ Xs&_yg7oWW {%4ӻ76cr4S8jgzt;X6%\ jEHrq2a2RiN9O^'xX7)66vQGWSf/H ZGa\za=X@HӪ5J%R|PT!crH)Z̝`]fZËB%a_Q#+~5uU.#^;]]ן~JVSM!d, J&3kOPDA6SOkaRk݇vBW='##D`wjAo7r2Ay#M fʛB`~9߯(PRbr]IQY*(͊ypܱst. ;H&Ëˊ|C,8Uj]iҳ}kdBWuiK* ]ƍ( 5W. UDNr IjA3QGUA%a#mS헜n H,D+%&_"rrSRsUM6mv)\XĹDh$.GNJL3ы-` Ɨ# {F De^*<66Q#!2ȷ컁(}Yhk)`0ڀ+oA+>|̬~{ 3YRx܁"mB>l 8Ϯ &KYl:(+o%i/h7*2 lz,pj|X$I9˗ֱ$auϔZ:lXb}:b?___"!|IS;>ЇSWjc9$qw~={r GAs&zFE_OqE W8o~BܼE>$]Z]|+(P_e*QKh||696;T4x^b6mݴ~ ZO'72{:jf2qmW%lRc7;h2#W.ֵ9~/}hV_raϐ KIUwhu~XVYEw WV ~LnaݜH۾EӁ ÂvCh GsID `j߯QnCA!e((A_b*XbĂ,-s- 9qVetڝ| C&/ գ1&6p p3`Y3f}՞Hbk6W2iBYy̑{MYjäMb7o"qPSh($Z9㻙F*{[dm%x}4 \q*b!ɜHE_Dvnb~+zqsmVm$'N;հBpO_vjEo&%CB&^D+,pZO"|yC) y]w@/G: .x93Q} Jd75b1OE*P-WoU^TB"}SB4TlVZ) ^S@4 l عCU@POi0T#e$OPt*F9`\%U*z:剥SDLˤsnFJJ^Q C|u5WvF!,!JvFJ~ W^͙V 0߿_W*C7JW0 ł0qb8o*;Z\K{3X׏J+pC+`Cs?{BaU'>? `6 <%:ϞÚb0cy†a0@m@[޵~ u5Z0F#X`0Oߢi1Q2<>biLIFzY0LPa3<%Q)읻ԖEI=J%EPZF/N}cp)׿&FF#Pd _'R_#A:Z}Pbhy&} ֝[6RM|Ծ%o֙:~Cj.ZXh"mREj vA^% #`~2`~PIst5h^%m[nzY1 qa&>~)F#;ԚX$+K´-lF|'ҎWՋ;C ;X&#! :ռٕk%="8r^/#G%lв#K44iRgn(lZ*~3-JNYlTPAT$oxtz9v#$`E+"~;Nv],F!@Y?M?^Z%<zLA?sfAnJkU޽,]Mc}SeJ:R%q Nc >A 5E/5h-[)EżRC$?~ơHl|FWR6@# S*vfkxXyגb`0Bg-WFNZ :66w5%-keANzB^MuT=; SVj(۵2S*8T&ldz-Xy j F#~~1dedJ \Mgt2)LENפ es؝ϐy)Oˠ'/:VRZ#4zr2|SX ˒Q֭G%MuR'^Rdx:Rܜ YE ne# -3̙ Jss2` ZXpᒵ'> ħoNS48̠S 4M6@O8 *Z:e{KpyˡӜz{y># iK-^!&q)5Ąߡc!{G[[~ZuPzc32l(oqjգfY ~njLYFPj@N8dIG+ zy5Q>ڏy} Ĩifg²5q9Nkq}= 4WIQE,cT/ uuKh̸iE3ISV4}?'vvzR z 9jD|)4Z>9!clemH?:ֱɺGS*qgg%~NLQ dW訬~1$mfԵ%Qf|)[*H缻:rȷkFҪ^QI)ᠣ4|=|m`5 ﮂT+ElEcՔ+,\u[[kL@QHfz4wU;%0e\,AuoOp굴o<'3p~a'?5"NY7[=DmT B3+V5'z݆^nh CyBw'SRrL')5 y}\cT\A]+G rUij9<FTA^a&-1 ESyQEd҉oaz "NHZs\d JyS߹yl2pfh*XvaD#*M_ޟ?fi#~ٴCąA Jy]tE?`+E9⾙*KY} w T tl ϶=W㍺u^t=h-9{)Rs(/)=Q8Ku:~o^p3o\ߍhn{#nݘ""sDv{g3T[mou5ppw 4lH^ E_adLX4hCR"PebQ,Cp;w2JN'`3Mep9fpyuhz t+uą.0|;:w^>{,?T1 O t x(y(XDz 1<{aE3'<#;C睯BuioFDoVn[Hú4Fq6ҀLݎj`λ6{za@'l7ݸ6Xvwc{{7]l:$G P=lu~Q\oX wUԦEv\4,z9jPvݦKpȊ?yd @aaSvϗф;h"l#~={7h>scV`9O?Bp)Ҥ-VEm 5\rϷP1BD]_oƝ1 '3WR DhGhܒ ?~h[w_R*;*uubO~$)Tw]X=RtlCL~x% k;`K.;*JVnvYt{FgfdK,TZno.Qy;VXPPP69_7wjݪ{7KHabhz>!fвÐvԸJ^[qoMafew׳OҢkk*ՙ)z:fF{c}=єhOC8hw^o԰d+-z998eECDUe\.^潱Z}]) eŤcY#<1&4'aAY`%!itK&2s$ɢMóKWJm#wF-ެSwkୃ 4{cO޳:4v])OVyI 8dc<g<hnK{06YaѰ55O+:Lb.eZ1VCin5q?y/R#5P(7"$YG^to3~Ѯ$$cٺD9Vn{-l zB1g le٣\}*ȼ{1ظ"83Xܲ'Y*%o-^~(ăKqHq!o yd_jO_܍)TtFԔ/Sv^:rςK$bXVӓu\ߠ؏sPfy}7 s~ŋ*TzqiTsqewfnl\M&7ڃ*9~V.:php@f&l ;'GT6댊sЊ=cӔFZ4ۂ.‹S]p 述y)QyGpN|e+h;ZvY_0Z9ÒmPf H]U*0:-Dˇ$b"ztj/.B_&TlۡK1}Wq]ʓnkǠYJpA [|3RW$7+RV(a~3wqeON.Oin $ Y4dt1# "GH y ɞ.{mc?}J념u԰͂՟#n\w҄.*As Ga]gZ'!I:@SXh`!-VWk7_cW.tkEQ/hPrQ8IuEe{7g]z9@+-]L&pϕߧ {9Q!PbnZhQm X ]Р+I!%.ѩ}92~YEBWM% * "G[<.BsLUFB`2H:ddR h n:*y v2KIhu&JAd\p #xAږ@RԘ ;#2ebW\x^>%QVCBC) wB9+(wîzPQݳЖO)W"(]64\H*āz7Ca Y5mc2wBMiKx9 x,W2wC!wƇij$W%gXŖ 5OXa\3{, d;p)sl3H~cM&{1GֳwԲJk&lfl!>&gXIsC 7,zo-OwKOQ"}JKާ>$k7U_"?p=ycGd#X( fZ8Q)qۣuht$ϸ){mXn0xD(A/n% TWK+Q)o~ (+ S$Ej4Aa +5mcM^L٩q)o9psf#n!ZVIbK8V׺wlC+xIJ yl6';x.e>닶3.=T C!,]uY*&按4m#e<=ů*˹`b3ENPk7΍ {GDdIN|;?ذIhx~,vwS8685hXSM cvT}יeE(.uѡՙ)h\ܬBO]jwwO# (XrbM=L6ƶTR <ҝZ0vqdk*i1l3(3U;?A@1Rt(Y=v1Ҽ:^!e/0=q&45_dADX{q憇6u-]qֵ̈́sw>E~q@L ٠oЧZv_^NOw3抮EfJ*5ipj8$ӡ]L͆s-H A\deZ(0Ht*|Qnm>IP5ۓ 44 h1'Yېhly 4 (Dn2U* ncL54P)jǧ? .8 Eyܬ".OVVɐ |v)^w>*Qe2eQ(^7M5JIHgal Isᵓ"^MX9* 舞lVNvvlЦ׬A;7Yx߽X@OjZl `c;V~bo՘+8=2>1uDчGfm~Kt}W˙kϭu/y~EŬLOV]UG)~9pYreeg:j bd)(WRfcgfjr+T\L8+;Ԩ\ih|uDZ.xY5:-(ϯk۳x?Z;K]ܦgZis:+ȭ^n5EcƏtTuRśΗN"ש'ge}w9֌G謐jFzdhw+F} >@WHBTWRզp+  ^y 6uxxC@01ᖑ= $M.LF,iH^OWO9Y.!XbhPuuT> N*Lhjr+SEYPa>Ļ@B;@5បª/, 1HKtɉX9. u媚i9ZWOE"5*~#%<RM:)*H HLAY<*&GpМ9֨ @@u p{4XS]Yi(+7k:V4,A+z#YuQaHc_j0i];p;ɮy\\͞%-.@@qH#1Գ433ø}w5 ?vĩnˎ {.+N>тn5AIg6kc'SD!AOW'#{93oկ]ғl~Y?RCYg^;#]Ry,4XIAu\~tFoz7gm$at3cOnX5z$5…YwrQ,u\oД䏙 6Km y {f,:_'/a0~T]|`ł=1u^q6~jQv?.H˝B Q.ps{ng9#|W\Ҙ/Yw7RMk4=gDC~wӁKΕ   4wlZ?8|ΉN0dk޽~GAv Q;_?OXyTF,qp17E7=.ڜ.#>tɌ<'0ġ x^Ww ~+|{S=Hȹ+t8c>T^rsk~HzJ;hJFVvof9v{r+!.3ZX];U^4^םݯ:}[wo]9b7sɠ?dv9,%@G d/>8BwW%7s'qr0eBZ5sO<5\jqA;gеȁ}%|rFۗNݣŜ|;vSoF"?{v}u6_"('ܱouE=\\ޏO//{єH}E_ \/WnQ %wjw/j.f8o>tOZ:NK @ Miia8ЃUQnbk4Nʄ2OVfog6u)%! DGW/nnsV_N_xZX[['G jTkby\R<ʠF6UWyn?թ_OCRVS<   @2Q[O \[K2^ߧ *ŪNoHo2^Ks :k M 58h!P%٩_iRX56%k)ĺPצ5UM^$'Jzk<'M<YGNL7Bכ'wJzN1Mijty"/>_.;٘9X ;,YBفʼ񑳮ۨtȄ6c Y/V[OOdDΟ\R^v)<>50 ULh_|vA11?zfK\2OPWӚx@@h|ti}>F_}{dzy˳oV}Yt\rQK]>l!^s}~am=8}%=|hR9U-Iu'W^g,2ww{VXU%SlXo?5vOnzzn|7kCY5*2h}ƤѺt._>!^Z'LW~!fUS5Q`rssUw^^QB ;rȂ5gWhˠծWk4Yq~LMs4uJ>dDԨQ>GDz`X|mcu+ 135n~~ EآdP ZPPآdP ZPPآdݻSu|0 Yjv)% Mt Dt*uŴ`L@  OL{vD/ijEF' ͛?ıxEٽO:=??@8%t\O&QRzM-wǙ\k;*dH3.O>!a6_!0a?!EשrAC͟o!4UHw]%wtl.SXOO, mlDy#(7nMYAkGn-0yjS'UC Ef tjw\& pOOdin6wƝ~[DT;2hH*sZ3?n#u]fcjR\#F>=2N~=U,`S(/]1`1酒~CIacӪ4wk&>p7d;e =GT^_B:@_J`>g)Ӑ̈k#x/2 IL'-$a4{&sw żIt#K8d_LcG{:;KGa{76X:I$m j!lAitj\se$KB c߁T*3IKIlM$n]E~i9Oa2.քdWGџĚZBjäW' ;>cl >3NH%71scg''Ǒ>z[FuؚykSsX-\<깡\^A.ϯ %ԁVZ%5ꪗtrUicLWFuȊ#!pśycuJjPn(@N@&UPjj[{VF^LSV4WEη3MLV@=/5%:4b1|atP(d\B_j0ṩnT諜j$^nO>YwR|=Bxҙ6$Tؑ]BM 8k;xP4) '׮$+]A[;YF}͗y-.L4am&L'n&VȋSd5 BЧr.9*SW: #Hka\Q>&gvb2w'iygArخfG?4(3'κFVNΊIuxLnяڒvck%ߐ":[hv^,rˣ'Nc|*ٟF8E҄aw SeI̝}zcT%Dx'"6ӭw7.3lS;S|#J"Sb! 9*rufo^Ö7ɸqd`$#˓/k\ZH27/\͘4Ve#%$svLnnD}  nSsv03ԩ,IqjZF,Si?w,BRJ_ԪY[A *4MZh4 -vdB򓣔6ZpWRs'*+RaϹbөyy]= u2&p, g8v33,Mx>}hTАE4_;J^։DjCkA $ЊI۶.*3>ʶ'Qmaܻ+7z4)uD5 @@@M cwyv-qy##o3G  Ȼ`:$i֤@@@@ *@@@5 @[& xk2$nM( @@4@Ȩ@@ZĻ5i,[NC  n [`ؓ UNy7  1&&܉ pZ k0JQ{λv- h;o;{By?!@dMxk8'$~B  &4q  OH@@4Mi@@ ";h[Q 0W T=Zrhû뎤qiX\_>8aKAEIK66߫ T(ln[To͛"p8gRqL*w;9dO)[q#22=ڏujAJ{mhOkɊ`3ExbP/ޭP^n$i& @:O9!aN*5g{H]ef]޾-y|>lxO+fzYuYCLVV,}'N ĝt,k0vy뙚` !Z >Zٷ?.4ǮR?ݏ>"d<7bka~zPͪysAVƩG5[{rQYQ_/_w^7zfDW(/͹}'+Ӓ7#s-.5rϺŋ'X4К[ϴ7<_rk{^5i?듟F|SEiZY0@bV.4͔7;iͬΛ)w}E79S_znóӂ'F"SӦM^s[g'1d!G)6siS[hj|   ,, ׆qܰXt4?xv܈{Ьdf+WMc\;ߑnNQSYSWkWGʡs0uӃ;G2pykuu@K.\Ŧ~i/2Z}̹;:.˪9Bzq|UG%WW)Sƽg|j GŇrU'uu;0IO uWՎo'X  P敛R@ :?f(n;ҘmGOs..+i8gW[l&i/8Ė=Fj{/anT⮥RuV:SfUAT^$+a)vy7TLGөp&Ä_.ݯ\\q*.}|,se7NC$ZxkY\CȨWnQz3@ WZ][HK3?UU 2ץCmYI)uP }떥-[w&2^Hΰ_;~Md+\N3s CW:iviėNdm8[{QG_z>gn uԑK8?3˙r][ƃh15k|1115mj6v^kԓ5}C9}+Kn׽w7:V?KmOUICqe7wO3ZI&UL&w 6ԆcĽR7M6Sny֝o? _斷fy8©'6kTkߥx'48cK=WQDӽ ˊKio~7Bkđ^&Ef񅮋Sfۛ!%n cGWoZDʭUpsfN#6+͵`&@%zRTܜP(h2 %RiQfq FØ,w"O]K5l׾~53aySQh#YSʩK9}nI f7(u Ho&ĻF4h@JJ˶H$o h@[]虣LX{ҒYvgiGg  .k׮7n\ :97y;|ˤEr}Ch.F B ,,/m::?1'ڲ?[xĻt" С$&&) ^y-xwn~`!76:MwMA84XBBjc} UB`#@ p>~E_x_;GxE7oޱc}]#jj5Vwƍw06@E#rʪU r:+7K\$v|h!@%s۷ӯZS#BS5Cma"zA:;1wTTTH R?Kx:;/_[  Aׯ_RzbR! ⭵]A?VX7'Z)JG!@U qRB ӈONцzyk}  ,K.=ze~ zQ : &`M d/n ִ^&zU!+IK,2p1 S+;+'eUpyt,DyIpi}gA@}`޵5=ͫaASNݣM7<(жy a8CT*2"#A1Rm=$c*CnwkD9  \| ֳ:3C6K+խQED^~ejkeGnTS';w94(Z|[[<@łv0r&2V_Qk{+SMuSЁ (B-0Њ 2'&A!K2km&@@@(d**Pf + +^b+$t.S_/eld瓮W!Q0\JIٝqs#nW7IDATU4XHI/m};vDW#]EDljÄF䋺yazR } 9FBlq+1&]&#]@r)N ꤋA@3,J=qΩ3bn =üӧ1n\(fFbers= #M9qU;dg1]$ŭZ 0j4J $$6 444ҳz$>(a\OVMpFC`e7oV5OOAPB<3v!0@@#nA@@x9   ws  Ļu@#xhg C`4G!ă@;#ngs@@@99B(( ~ h @ ;k6=vh-v  ޝn%ڮ  Ļ<    Zu0@@xw֞GA@[ktVh7xkmpJY{Zo:  Y @;kϣ  ZK⭵]A@:+wgy@PmyomZMUb(pwK!=SP볬&BMx7  0g|z9:*[ G8IENDB`flask-debugtoolbar-0.15.1/docs/_static/screenshot-config-panel.png0000664000175000017500000020137014613236757025033 0ustar kalyanikalyaniPNG  IHDR|RsRGB pHYs  @IDATx\S/$!! *uVE{n:ꪵju*h{ Qd(C6{IHB@D@}4w}#w&>D@#psrl1F\v(:@OOC@1ݘ >I`?@Lwc{Pv $ 0>ZC 4T'6,FR͢ >0= @!PR,+c1BZLPWW/TK X!_ "|]1Dl"DKlA(7&ӾP{ (-e Mʐ`_TcbR8Ax}e>2<@A+3Ӡ[QL'!OZr@#-,X iiiXmDiZ^niT@ k E ?OG60700S+nii)[喨c%t-)ǘ@Ԇ !!SXzE<>b`WQz` Y ` YjeW4۔TTj0.YY^i.Ü98svk?hɉu>!S*x8S#~DjȐ{S #_D1K 1=[Ez2i{Vws!4@W9y/MID"r9Vf7YJC N&VYZupQ xg%]fGm"{sss >dE}Fz9+f/M*5lYז $zz#A>qn96..͍ ?yμzk59gmw_|\w&E`y|HL@t.3BeJBf2~,]}:θ6 "6e=vm؅8%޺joJe/MWފ«*rq`YYdeeub# E\xΚoV{{(ʪi&-KaM+a#KlКN\[IXCMZ}uf \}nA_ۮI7ȷU_TUZ"ƛr]qfERBrgq>߁8F4N{ˡm%ZwHт~3|};hme>C+"q8L[[ߒ pT^ !GTBG~~878o<"5%jYTǐbZ5Q_an&?\³wV\bf=oek)63wWuK2 XC:U)}jֱ8Ec#*@-ҹhDe$x|Q,4bE14i)lvI)^Q|WOH Dy X1vZm9^Fm<΍mb[+@!L5עGE촕7SysMD(H ঔSDL18.Dwe=hb7c<,詻Epom`z }+ а3/q|s23h|piN*63«jO|՞kgzgz;;p88 >-::B.|YI Wx}Z 5MxNNޤGɕCrFo'7ʫl Z8Jφ@B?v5 rHj:Ua\m|I}miKJUi?A2yxpx5 R]O6ÆJ+6xQ /MJyq1+7mll,--sT5 2֋iՔ+God 4wV7v7%;pD֠yaTdKGo(rs]'R4^vȂ/F>P Ɵ,;O6Otz17?ڑ]wX'$@{kiL-*R~$jQEmjmNT򂾺D\pvGm)7naqy\ݭr76j'$T1D){SHd9N5R_PQBhB8^^^%%=X 'Q>R j$J PCWt>˿f'zV+7-t(,ݾӥ{V.cG8LC[}#2gMzW$'Y2բf//wf \| 8>>[1m WOEշrSI$sVqYSA*HX(iSeI?P>+%>wEFnv6Ʋ%43RSҚyuV v-@4P%%̬,Y`o|ʧ5 EEjmn,cijΣ˦D![sV6vKOvsvJ'_WI\m,뗗"nԱ--͡!9htp TbƇ*plb361.@˭P ^jxW~'`=/VNZ QNJiӱEnp[ 9FGĄ' g`Rx9C@ Ǥxތ&gdh&4Vjۼ Y^XD)M[_+HoW  $ 嫴߫][ߋ|n %>S<Ӣkâ+[ F^8/O}3LLj\o_]Է)ٹE)`? @@wSP 0? CeuM@__ozJ#Z^8 H %1 @u + r@FۼF @G&x!g > </%%Ww;88XOP˺"ƻȂ^ &PVV#(yyyEEEZ>@ۼ !@RSSƗ8)_bȸ wy*)FE[ A@!@UWcL ./?ĩ; Iɥ/:{!$r\X3@wǶfj5Z ʀbjq1\bNׇH뱠O3|!xvb_"f?yj5KjZ =}DJMoTE9Fio\:'A"1Nx>}ꗙui;n?Æo?<>wpQO};KBUf쫙~ɞ:>CX }ќW0o,we*EaozQec8C}͂&?)̟dP.8$>[.Ӽ5ʋ92fR7u2W$s׳;#zo'W ƚ}}}M@dddyRs~DyҭS?'5 =iv-F$E{ Cn w]|f׮/1fOKE(fx=>iEZo$Cאv=婈h{/>ѕ 'MNMݾuzF } xo Fৰ}{i'v \<݄"Tbh` ^]jϟ7gFy)R%!}p4v>i@Ah}!_p3f'-v>᫅GbzSMr1 hB.v_egDlb"_Ëi b Q;V8i] YPv>mM:/9zXli_8wQ]A%d4Jޏʜ4xm=߰iyNpysJ0s7tu!יs؈PWH^E_x\05J|5Vީ 6AE䰹y{og ]:r7ٔ8Q) F! b ^]\eO37(٠.Jz9; ( ?e~݊^sT$ކ6Z}9ͳOy1'M݅Tˊw[nusf=$^^?ix\+j-a1j)Rxe˗?!Ӊ&~Qc+yu֕Lw,s2>GwɯL /+m^ݰ5)Z4/uYM,2Dk..G[%pgK/(LZ CznTWs6%h+C<ۼb Ȍ?FViE*<>,p5I;.kL)/@Z ]jg56_wFrgD9;i?I!q寃g̘4ǭW B_K#r ZCo< '{Ř.:}ЈpT_vyL=z]یů\W(ۄaI2>奟ӂ6w΍~p:\}ʎ%FG5/}vu.<<fj@v~g;zɭ/w;J pwT=}Mg)Ysn&!~`rc.uuj⫠Z &}ƁńLn%o $P;-oE ,{*YKX% KCqVk=~%1w=ܔy~ ,g ~zM" 桔 Z\Ǿ!gyRQ2:/*H;)SuMajqM=y#‹p#|g-3cKF~A9};5RmTݩ#iݻs|Nfx~?-t\UMe41wrӌ?GfQ@Z%P;s&qk.B:~)&MlwQff2>}>*\{b__!jJv1g|Ջ \Ћ>zf=.)@K+*̤JvӧO/-3EJvsνug/<̘lOӖ_eі_!Ľ}|vuĻ\1+\?Vk!E067v-J8@Z:<]^Ñga NE('⣈M_}}b@ۚ];.L!6~6ow'i{$SL\ĵA]gLnyqF?7uuԀ 2qmf7?_ u*yyeHܸCMqִE]ca:j+ -;,22cswZ]y%>A0@~ |`yM +R<4:"k 'MBGa#Ω|  MGhy7MP+ E#j@" 6tnCd兏9R ?ԁ>'ԧg24j٬:NJa䎮ft$xKQTC(e9]"ړ}bkV7+@:&㖤>}VJ"@fO[4s񥂁2u gooS62HowyjbKK~T@m\vh sRc/T|Mtq׾u;ؔ"Bqzuv`Y8 ; 0)Hz-+_! ݸ;FJkw~n'/ewNлjB:XoOA5`6m:X_|IFzt!"Dn" xWb@c[ 9WF64+Rwacb0Z ~@ Pj1Uѵ$<~d!p26Ɋ40hAG..^1ؗBw#E:ᦼk]—l]i[jk q@<:vB%Xs$\*N9 !Rூ[UR )W]>KWVqԇk$4pIjZ&)1h@+S;/ęgN+s֮KpΩχmF34FtQ~eTؗxie~v0e2ͬ퐙'Xg i=x%5t1]~Ԅ$aS>k_.'P ƛꄾsDȃ{O-q wjK~+ž;H X(ᦶ^^^ΎۢtjH<4Q%9y~UI&]Yͫm['Kp`ɳ]ҩg{|~XVe*aS>~~E cڋR60X{^-zp1m6p\.܎Сry00plnn47rK=eR/ڮE3Sdji}Bc,& }^۹݃ܰN :#+ϱ>&tD3e_]v^=a]\yqp욵p4! gk;\ZD^A⿾rٓ1z}[{j'b^3趬sE,~D?V@$@apS_ŽȢ.T+-EP몺 eI)8ʕ>x_!˙;S;IN߀< _6YDW vz}'cj*P~FHxu﫾 jz/ndatёHG^aqRNO̟|uy觡"<5c̲jP9/B~ Ք i&fJ uj ELg!r޵Bn |vQ< ɲ5cG)ќ 5/@.:8<<|wdo|>zph?$rqNu!0IZi,@5uC{l-p>-Ǵ ]hK7\LжETWF,6JnyYŗ`1 H(ѱpBZ9/J!4ݬoJ0ڮvE YuE\^썞k?C$]rz{81C@*sKڃUU'/.k*u]Fx\s*&.'n4 ͘+Ѭ.{oǽ*X(Tni+-\oG eɅ<=@^(bٸa#7Do~r8*-JT,KypSŵYy)K*, ti37 O"hɎd`k~}&6744 aՠ0' 15W"ŚXc' -μw8%lkj08B]EM+[a6cEmݺ%sF/XYe?Q6]hN?S2j~4~Sn>; kA]q?M$?-XzV>N}b l==i7oa@xluulȋPYRHb%F\DQKP>t#ϊeDGxRpU>)o .F]jijaJޝMJ|Nrܴ/zU K7MLKHH%\|9 /NIǿ7H ԨӊU1чώ_XIT2U\J3l(%8tm_Yؠةey+$fj j۶?NB%  wuBAvr۾:&c/i,@{vsu"z{KvO}aV'}f:s :.8p.}3oB%O7 !xV۟,>p{}ۡkVtƪ*͋C#/=TYtA 7ȵ[n +T@a#3"wֿGoadd[b8 #_P(貘zL]$)o.啉t..|m !{ݥR@ĕhuztT#7LW bb]C ksʺ #X3 32=%w[濪+ԕ"[NeWuRQ5& pEa1T-(.CwVb>%McwӸcR0T6s"&XܱU*. ,_2fkbX!C_\GK%i"}gw;qttx5]'+]Rvv^/ל6Orx K @4x42SѣL.I踏%5 ]ayut!p@ I8TT%.FZEdž<ƔL/wSg@o   ދŢ#_7fyľWL:q84W&󏫞WPU`4ns@022j5Sb#}HbP*IqKAXjȆl}3b0-"9 Ocbm \Ƽtr]]K0޵ jDF lJdkp8D_l >gMXt kt]X&루XO(Tɬ 5`ԉU "@&Ҫ`kӸ| O"g >_$@4L8'jTؚo==sXؐ#@&H9,QPT(Dt6p]Qx7AQ@'@ch3Mj%m? 0ލAy@'@46Mb̛MbꙘWcv&~8>GX4e|s~:TԊ_\>wUh0(~K?/=7ol\ D R}/#_J[:k6] 5q0 >kyN)p0"CQ ~?8tQk*ebJ_k">z566< .]!jЪȷЪ¯/B5qvvwvp01ܜG(@;UgDGS$9%೿5V!͉9wfF TV+ι1̥=tٍbqچ_)yрs1/-l!sk\*FOo_$~CIu}Ψgo6>dIhoҫ;wܐޚnއ7h=BTXQ펷\=+ret*QZÚd iKj24336L4aoqyar4,s-m[ڛ"3fעE {Ff:yff{߀v):;"QAim*1ٸȌ؜tI)lL*vhg ?#SSSӳy;s6\]h.RDŋŤ] wu~3MUs.[ ^cHpiIt2d޽#kɌ.E~ ]Tm! Ah*ic_\gC,uU9CE9@C!!!UF6Ph 6;ˣ.I;v7S =oC瞛z2OY3KxvN˽CL,%YЙ{(AyѣGw>ͫTxm~;]}W.57DJbG7sZgk0PHXIXt%޷ ׍e+;g\u 5AkZ}dOif^[iy|Z;Z:AX蜫.nwћ7)Oo(Fe"~=[|8 WyG) RxoMQܿ{ SzU°2G$ oN6?آxsc*kӮ/=;ZAw=*h(+h{lŖRZg7ǯwE{BZ7߹`R8>}x ,dmMKE n gux3^HcwznT?z"JbV8ÎR%!&ߥw󪠫 9Imù_.&z+u{3:buE,$,xZRRi7wC㳍[Ƿ$e+|:V${UWZ/xhjx˷K92'u3D+PrF}X`۰h)ZFq`BSj ϖQ; @MY51G*!f'"hOպPwK@Uj) ?lmF4GS!qhkQGgWqv23B#|.lYqeyUV/Mi! KÍwNGWOp\-iDFKWgK*7*$2λ?RIcd%HOˬ 5DRMNIg4DfA ..1HE! [mG 0ihn߾R߽xYTWWܴ{tY:UIr?ɩkt$*uNߍ< o;n=8u޾MleM##_]Ue={n% G{ضz`fy9 hkanq۝=o@3,7T \_CۆQ+VgVhkhaQ])j&ƏH%G1A7~PF@'s>by>>nZ^f0Gu0ŏm!'*Ct_s̤o "*4;Q(~@IDATL773S\\ܱcGeNEZa/3TޞF@! Z' r`S(-/u=:6CƐE%`֢EՅ30ָjy"!/%b2;ՖМ7+ m4_ݮ4!Wwk߃6Oi;+T_ϽhS{WGvlܭǃ'!!_A FYo%v(tC'`9z|@$@#y KSf)704375 !~aHߴ=qx&sI֊>I7[KϞSCC0t:+uAutB@as/ݫWIAʅ^mz͈|mEVvޞ]{tm5bk>sSGjJe&?0r@|| v& Xu()uKb>li=EIQymM8q|t܁6%7Em`{~vJ *pQx3p 8hӤz9 /$!"8tKYPZZYM  ix<};oݧܳa5:-܀: @T0! sbxә;}6FBv)F=`k%h@44>Y_~`3U(uM)UCJǗ~/kud(+nd|iyKJjuc@4 xZm&<)Z&-6i6V@% дS9ͮ[!w32ː5Gi h>li275~&I{xT _a#A@0kIOS$ǟ=%EH>.4` =#WCC7Bs][OES=܀cN8bUیciΧy3?,8{adѐ{FA.X95khDC.vvNNK<Ϟ7w99 +K [SdOYد1/~{[IF h8>x#bOot:G'O)_nᶑ0V,ր y,?fe~?m_\-@Ous)2ǵڏ;}]UN}ϟ㾫buLV7.Q^/juNv啑%=w3n&J+:/ow+r6QYuвsğ4}Sk#)MN<VZ<ܚ#)7޴VI,z/H1M-]Ԓ ;,Y'r2eT'F&:H(10[sKit0*s:?mznnw^xiDMӮYuw<:Ys8.#zlj8f;0Q~zBC)۳cf(IŗZgnAF"kS6"C(^)f ӠVq|3oȒiiy%$-7U S %+TiEQ/zD0t ;+cKpzN ҪҀWBb?~LgFȨ 7%!yjgxg#m 9.Ib., {>y[dbkO Qzs)du@#;: % s_O_/7Dn^؞.GML?p[SX(뗦򭨜JJزbHS]YRVxXɓX3E5 yۦ*M|Kpr#V771/J|31/{WST.v(?)6HK3?'+jr3~m/m8VH\}JQjz'ypXw0y ݝX8m<ƏFm&*DsF.ND⌛aZ:8;;ժrF{8WTS*IUTtޅ P;s 5 F JO/ }-נ9]i*1/O$H ].R ]bv,gC={] P@@:(HQ@j(`IH @Pso3;,fΈP M<fiI1o޼I"T'۬8ަqHRo1Q*ƽ7^&[T[pQRLLRڧiYgnѵWOצ 2"ULbFl%~qD]JoVF IO|xkj>) 3}bq31'/;NŖЏ]MK֤ %<l7a+ ~9Ev+9ʜF2"g>DCK·e&%f%bN B9Y[b-SYë吕.xP~ }`~q$b.^/g(\=c^ߡh4x7oJ:-fx_\ORwVc(A2C@DZM'̈ڊ[+k[34ԢՑU[TvCƹq^}qmdYK4jbX+'|N7 f_eRB䶀_;/y:~77pU0B1Fނ70 #:XrS]v¼| %`l!9%[H͸~QР` N!"$lx:zIdF$ep~Y9SX𜇑A\  7!PQl u# Q$"}?IKyyyF:8`0@#0N%B9Au&5Ŀ z-[g<.Konh"l?F=tq ?ͅ<$5y P׵.8۹mI~Ci _Dkw{!ԀK!DbXWAq9Q@πwd`$e\󽍠$a(n%7qX X1@SA;7.<>.VW lF4{:.9QQqLمٙ9JAWGp (P{V#8| 9ZW")Y2y’,1ZJY߉P|bZ{4Zs.Of%C.8҈x ̉몳8;΢zqy>2.My}O^ӈbR)<_,j)Qnj+o&%̎PDMaتH!>w3T0 R iO>^~TA%A:$UL(`ys Db33bx|~%RhmւFNSd09C &܄6.Nm^|\\=x!>D%j{3J~d)8y-I&/UĐg@y4üV7X 9,={m!A 0nqRБVZTkLUFi"vXc333?!Vzj\ȅ A:|n8ߘ^G'° QKĐ1FA/Qz9!y~ dE V_pa -=&*m7g9]rzW3r ei`!`0M&`X F#S}Sc S6ލ%&`[bgqF#`&x7vRa0F@,xg`0Fi"-R0F|9ц )4eȻ) #`0"[(8 #`0Mlr`0F# lE0F#Дhƛ!%CT $ +%>CS)))"?%%+')cj X9qΟd!vڭCRrTXF#4x¦~d87#)X^"?JV>eE^HiUGw1yS1pvK{UJ<6@K@<۩ݿVǂW,MZ~Ex𯜪)HTH}gD@H${:TXRRZF9 c883;>ԯ; -8"8>NJAPh%P)+ t'?yq~Ǩ*yGy\B}x&z8<).d92\xbp\, E!`^r ש%%!cM吔T],tH{#0G[RUIKMI}oN:6PC BCIUSdŭgw4@([FISW nYp.?#/(EwJ89E;h+c/Ν?YOIѥjj[T[jjQy)(ҖD!qGoAg=ZϻliԶp[?OL# fG3#mDDhD| ϟȊ>6zFr_.Iͯ1U KO <9gW!c5X%IuXgoQ^0*ήGbd;`8wx8XrsH.1獏<4u4BqaBNmN'2N:I[8WPANJ^3q[F{Ö%|_W@Fk3Jޑy9s~{bGqɵu,gY7DoX E!P~**HchB(+,N`0ϷJ߂Sz^B<@WPe3,0kxڢ] v/'=kzykz^SVEUJ uy-o{!W5~fԿlI"r:]=krE? ц"*ʨBa=z3?" [ϸ[l"Ghyus8 a-+Όŝ"6Z!t[o֎WyO!ښkrc1-b}"!Oٶ=7o5/Ռ+t&((0;fxnUmC=Ok=KOӺG^[t=ZEqz# Ӿ-"98#tGVQYI%[ ('UUEX[[[HU,8 *$!~k`(\H?E$5")USokxvCRFŧĿ%B<3ܢgK4^IJ߾Z/dyEAWG3i1Prp]qBwڹ9un%*38(N2lA>b!ky&VR~{Rn/ Zz2J}]Qmvْ4w9C?U9knkN8P҆ yZiU31q@~4ruuw"#w࿝ GyO>N$#;vty6)m \0ct,sT|aqpev-+9$+.1JFW11ѤR|]Db33򅺁H^D p쾗a~v>Av ~)vb}N BxʛGG:N4xeO-kMdZvvv4:{L#K# _EU $WDsm>kgz})kWb}N =zHM[fǷW,z5˗/4NWWhJGOQOy#Ǯ 0S*ʢ*YWϻ5 4R>޳T^ 7VoSpqU}K %;|nTQr .]tM feA<'¦s/ ij%e[L|_ "xݰWmw*وot4x~].)IN@n眜2y-MS1^U[%y7FjoᐂJIJ<kt8rv{61D1ssQă9)O/O̩o3&hHhu34^{7~լ,Nvٲט,KԵ~4\TuZtNPRFKuSsQi#w>tT-l> 7;i' !ĝ[}9ls֧\%潧3Um({ W6ݓVt&]G[uW? ?kmZatgdٔ%SNǝ\%%QZ5Kijm:|ލ )ܢp:, sU^{Fsغ!q]/T{}/n;<$,qeͪїtꇮ O+ ]>wO$jڒˤ9:;nӀ=>|v'|h#&B@krBEml }]{oI~{>cH\Xw-:L]m.˾v%,/C0qΙ`kB06DoL//t:qW{3qĥ4E:w!;--&S ؜TW|0=DƖG^rB+ovUiͭ<}c̚~T鋉%`0" )J-^hEY6m~>F~ Nɚt^&L+ ۹.G yuUf*+J/4*ţv+M$gˉa]*~ub}sP>R*P@B`ZdԼΐevSl&X"F#0SbWtox?pYw\}6E1H/wࠩ!f=LV0i%e01>8Y+u'' 3= A:1^_Ly̍k1G Kj6lRk`Y0@c Ps["G֔h8qG"sgi7/mӃ~ۚ&֗)tp`ے=zk,-so(uEO.X܍ighol*CoAj|ٮ`k水UidF] +fc Ӯ}H ZIaxD5o1޲3ML%,F#(-16,(`+TpZdd+2/ ףS5B5 mv0ѝ, =r?|C+=$I.<}Dȫ*\*K+y`bͳGk8L4!%z{wyN CynncIs*H$U52^hyyy-%%֩W\#!k1WTT())}hAAAC Ž"]tHqq`$Nv26J-(`U3[y:<N R%n.Nv=b .eCFi#pMCz4Ge󰨨aqdq.-3̶]]d"k]W!FJd:hrϼ*+Þ[.x хy)aal˗Qy<" rw8qq$(D\4̬XͨKoK^M}@ ++,u5YyD6H"}~N˰|V;m!H ]'BhC[>OSDKZ 8rikK<\ay=@~(>'= [7bԲ>7n5tD]2F'"{79c$þj | }5?43#bj{Jui綤%MT6UA$/aZFNމҋʊtFwTW96t$"+#?Qfƹ={ڒxaQ}OVf˽LZqܝe@l!9%I͸~QР` sr6{o`=dqKRJ[wGr lzf~)pA# G=K/⍻j~fԼ7 R&1$8^|lDލ(jPRf(e> P||H\z%1NW50Ӫ&N}ۚkDoZ*sb%-I\.@E%n U^_pzۓ(UQ~f&?Eݳ3s2]EAH>ED38DsIjѕzenl9FicFvk*|~jctKd8Ofo>0V򢶋EvY>|3#*\[Ǭ~ҷ So8`@Cn3Y[nfG8Z ,zd/OW06M^W{ 4~-ӉI\mGٸ뜝AM{_t *ɌT 0CLNމff&dJLqmVzd8`Pi˲}bp¼?f۩ 1߈[~:z=X}-!*Je%Y2 op5GV+&N/>a5DJM.ug׮kqvۋ%hV3m5xENSd 1~BW.LQ:0HG;3!0XnCx>| 5h =*\ڌa^ %zܸ5t5`͝I|Yp#(,I.0C Lfff~*C ԄlA:|n{Rn8B}WBՑobL8ߑz*b?MI/2dklf~~^^Qd@4oNNŕ20r)Cz I)+wSˆ` `p@11F#`x`Cb0FA_F#!7 `0_lbb0F|SZmGb0F##4`0FBF`0B4`0FBF`0B[(9YYݴu*ُb]0s>djjjxƅ, RaqX +'921OF\if̘'U,:T{G5N[!,J\!::Wɮj4ffHlivQ ?e5: ֙mcBc0? Ya帡Tߐ̳cyob8!K(q[P=V^nO8D=rlNU)ZXj')Bx`(^BoJbU4d`:?2dM!Kͬ" 0/s Xj rrBub}>F'Pm-M--LU"|sR(v"0c}8=L̋Zvǝ1,û=09΍/x.G:;\p3::;rc] >ʽ^Xw(\'*,F"`~& 3iw9*5}ݝ }WS{"P+d|ʈ~G]QHD2Ίi켧O%%Qej0NC NHb%fT!),Y&q,*?>Dpd@IDATv\|Y^]WbБPgZG P./J0jݝ%猤icGy"6+ېr%K$Jv]N,h0ĵC%%yϺ#Ub+")QG~12VhkK֟ p+`z3#.v:dtx/wIYk gXO]@y+=p W1'Cy v%?ʍpҕ 6³҃$(RsI?(1xzE@Y_ LRO}f4=saH "Tو5D(Ҹ~i\FFU~z 1dd%@* UHBVQǔt A;lYҗVsTush8d@MDot}+gt-G(4"(ۈЈx1Y\q9Be F]:h81UɈ:"+H҉0".C_~7pjCI*Y߳:/u8RdMQBA/#@وзBR 9,9d/&T7N, a~.S~[1o-0ʸۙK*/pC+ `WMcn=.>1{[,JJ {Qz`,) @KlVsW xmrh;(۬J:xW&7Z;} .{30(2I 8VkYXWcQ``U zڜzܭdd63u]:)YN&HE֐:uwE( k{Jݪ}\. vxRC]u  e\mu~I}& CWM7h:u9ׇ73.TWK /XY:l Rhe,bfUh\9 ]XdW|ښ4E~ atJ'O8yw 5 L<"F4bC e4S]bu#sU/-Y M N!cLA>' V5m[wmk%A鎎ߕ~=e% &0_NsoD(i*67:%١;S)<,Eւ7]9XA$ٰ%11giؠq)T`^Z$.sѬwMh߮Cgjn%ҿO9.0z*Bns~q|VF1KEIIu,yre޼::w09mﭨO9M0=ЂOu/ 7&[ӧ0>BJ;y砍v^^8}N^H O\_oo̸JVJY/$^/&c_{3~3$C!G8-]6O$e^kt5/~&|EnGSIEVP88_>fQwPOrUTd?gA{\wuADu+~]rvADW^K 05DRԼDO"s X$qos(mv;?{E0џWv.\}UL/ U>>\ׯoT `n@rzB}Q$zK$3n#FBv? Z QNN_>T_Q| d.+!QR5vt젪RWG^z* 3yU-p[;Z/q6WbĖU5=5 :H2%jrԖG0w|LYnyDu*&h!{tO"Z-})2>A'Q2褜v|\>"U^$y)*ˡ& ?b(Md# WGZl'.@6uS', Wu&W\9_/rPG(U;-|U_£Luk֬++}ydgGǶ@?v=$%K,caB,֫coGQ,$c2ĔUΓUvh(,wN^*"Ǜ[O tC[﫪=ϜS'mx>3u{+h|CV|>\.ڵ!ƑOWׯ҄*L˪g3MhxvC>ЈDgysr rb.{%)}nhnL(Pv$ zvZB;h&&ǻ5K"H #b4gu",u'§Ã!,)sW /ĸqY䘉HLN̍ymz9Փ j ' e_43ǬnjXU@èa)|fw_ޱ"e -!2b﮳%z_@9pev-+9$+.1Jh ]DR:R|]Db33 H^߄)Vt0C\Zť:<=8`<⯹'^gTL L P랾]d~l 1~҂|ytiʞ.[×SYf'y!ΞnNkA-z s}($ܺm&JdƒP #O Se:N6⮸%~{ydW0u?f['r2?ݺz޺lfgby8v='4oȏ:m:]yU[U~iyyʨGHII133G,ffee!y=]5r6|ؓ*fJǹՖoK?+kw*?pc3 r*n'tߋoD7՞V=۞{ }399j57Nc3󟌼 J22C`?A6ͦK o(*3R*j$1y]lښccQPd~>V6=-zK*z8C  {k-9ڧTk P+Z΃gɺc;$K*S~ M]pt[l6Dɔz5LwƮ/FM_ƦkqnfŎULZ6 ninrxLW{#q_R&F7y,YPazrNǼlkN'llROon~iӧJe]z/^yӪ(RpĽ*+}qn+Mh7h>1&90w 7<]:iewJWXeM23lk ><喧Kbv\9r3IJBcǟ.tExin FKWzƷ%-{׀<0Ai96p9ѶK/5&^Bl~ _!썃4!vmM ]㔥ٳn_r-]&bIWFfរϖ1齴}bߗ!YF+xwªf*.tdJ! KO5ۊ]Fe@<0~,b0ZV'z{wtzO=uTQsNgPUaC_~$E?Gz$7_xf^q(=$8 920@{ Yc+ITE_wKТ)~_4Q@lllS&X!c(I!VAH$W8cı̱XWVE7Qb]{)(FnZKTyܣaBY3y.%8-XFfYi$?{ۼOMfhA"\9z.3I J=R`b5rxrM` p|/iœځ1#MS `0?感>`j# 8_;WtvKTF#sm"Wo1h`0o@`ɷMhjcyo#,!F#`[|`06MF#By'g|B**Z3ӒKύh^IRRAA]]Mp̌2Zu\#`0@G̓adK&bddfԪN'%̌eoKSXKOs2D%"+<0O͋]3=6WKލA.V2Bx5.$mdd.zg*yݳ'utOG ~OjO6B+`F!pp+ XogBJ0p2濲,/۝yj~{CjA Y>TjCǡĖ˩y%R Bv(+U7ɡ͘ݖ\~cȍ^ɵ)/? = q`^Z!5wnxXe3O&EC,9tں}y0IF#hFj e5EIG삏ԬӉLTr}N J6=S{]]1܎7F`}})+Wjp)w^UJlK Kǫ>#0ϠuA袤g+(+s f(++k("uEu5?&/4"Zzzzƭ]Z3$'e-ӊXI8xN8[BqOmeÎrLXw)ä0A0Z-Tev?G"V!b?LCE>lzc^6{:M'PUWqzͅ{ @xLf{jBGBrz_켳qN_hV;V]'HnZ],yT@*ۥ8r -Ç z-ݍP棳EQBV~~.]_`1j[Q' >vALv5~ma}kRՇ++ѽ]56 ŠڃsUhūtkFwtߛ.JI8pk#t3m^&E-dEҼ9ʿj/wI_2t]gϔ[r sd{q2&,~aʠ~-'`o/+gw 0ޢjT&\Aharf%-?$Epy担c|S8}.!8T5hvQAID̉ ևhRF^^Fiq2Q nXpF7@wyԕ䨺4{')`/GP9ґ%ȴJ6qwa|"Q*2&"tQ^ŲZۭLGrV 7fo!t*K-[!ܛ0ʑt42ⴟ& DXaine\$a(p8`2 2YFf|e9+'u,t;333gӻw9yD-efC,3_K@I!}6 3'vy@r}yx)OIɎ`0\M ۽G OLr-gN_nOU虎m7ݶ_"ui95#;WX(셗 >eG6W^F)hV{v̈MCcJTv =5Ғ,@&Hob :\*2;#^:F0X _`C>G͟,d)8y-qG,<۟'ck{!g>=$Hfm=n\:J*6`͝I #4Mhr$KIIWa33]AKK#.+*ɴHcȭLKvtu=;^v:ɳT;o'{|H-^%|2b2ƈ]8 zY%RS9yExҷŕ25ZːF#6!(MQ[tlr 5IbKKK.X(F#!`0 #oP͚'-dawyg1yF#UmfjjZ%| p:\W)oyF`U1wF@UUuڵ'NrO"lԵчZV[)O"I p۷B4l;ĘF#:SNm۶֭[a^L5eZt[e9z&;N.q=w-TYq?ЗwǧܴW`7AYJ y3ώp8 Sն05nzh%KZZX[[ٕ~ΆW웧=B>s"nl_GӌcvSYd3޼y϶?@n#g|ʸ *yGy\RRR9㽛<<3n󿱟KJ3,7[ Y'I(ŵ$Qdi(,)I~=f$ T/s^.(WK 5X f{c?{@})=YsڸV;HU?Ξ+ԓ qS1UgY?\~ÏEŇu_$A@|)\#tpvv޿p7#@]O e \WG ZVQNITT:?t2oY]]u5mZYEUHӬMStTU fЫ$du5t ޻A)"JQ"ŊTTDz^N gA"HGA:R$$nOaGv͛7o;웶32m;iUh[xNLїc<@}7W+JmRX5VEnSC|24=[ Jʥ4nkԴ`n 5z {lgh+kLKYsלvrgVwiQo0 %`ys!exm5M“%&eY}}R? ZMK(LHH]1)b}!CMK+2M*ye`8f6t̓^#gW"1k~m 7*w|?۰&7#3o޼@rf &hd4:aww?!L).#, } &ANIH:@}JxAIp|7-ANPLykネ& G"<6Hk:BҲ54t4io5Pj dV K$$O}\:Rn[723=[O\L` %@-:3o)3g:OJn"l¦ߡ\2@46?1hА9FMFzBz^]MkRx4DG}} #5mNm#tgΜ  w7WH;6q>e:!P@V^o/I].TʌfMB]t'^&kzޤIM(piN{_}[L:u2xyte/pl ّM>J BvJ |+.BWXC ;h3Uj}^",h~VzB]mU4Z_VYn ~L-Eh:2A,&:u%3*+^մԴ\WD'FvĉիW3Lqλd2&Nhk5."tyTN4{+_lMG E%f~YȢ5ݖeN?KZȳ" ҕвcszo{鏸uTPԪiLcdP>USJՌKNq~FJd{|]1Z #K4P;zG$ u%&0uIJr/!xGIi`y%NiM1"K,|23zfY /Cݙǖ AcebHx<(IuMȺԦj܅ƭvu@&ID",:Il.NVOF09X4րntZ7A|Qȫ Iz͡R)ԿRH d~y: w83^,dW0nͮYx}lt2ǝ61-1D ##'Ej!9 G !i:ס&s?<[ZXx-Lr'&&7])M%o9-iˉhLm.^j]wQG a4B=z`Ƴ<]P WV1rت\ɧ|3+p<7-0Q:D=6'13f6Z uQU m[k71?%5EN?1窶鼮⑔{+/ :[y]7 ʋ=D0/9= (A>Ip~D?wi#Eθ $pjs~P&\~敋FFv\;4l\3%'?b/]_uC?r /eF<7pt֬ ȪuOcȉ8hUqD\fnJF<>Tal9U߁ 7R22$Z1_lg`=e C}bCuLGVXXMZI8/Q0 VT(hZ( emavzK|Oe4'%j@-ϔ־M 0_% !Dm8wC #L}'(*@ *_~P(zS0TVV*++SհLXrKKK7mE} Jٔ*9V՜qO'#ei$:,:hHҘ_[nH兜hhC6]].h/j?"h31@G{9owww@|[ ?oE'7|m6sḞuvX??ȃf`07 {?@b9Og0m4o)!W1}_5k`0F1` F#`~ 2l.++`0Vy`0??y#6McHf| y`RHfss[yˊY#-098VjUoM5yԬ<$!"/ȅY:ޏad%uu4?cDȘgdd.๥k^'*6G@@Vl HDrCv@fබ+w] 7e1vqt@w||ĠHgON@-Q-Gz)G;[1y)xao bjs Z,1ށo)AN`9zn߽{xOf;kq.PdKhX7Yڨ6}p7\3{ӂqj?߫{GS:_+ yͰ"e}7`zW-SDU}xn()<1x)/x/?SoxS"5Yi0π@7VPWP3IrXqѩJ?:w)[.}3F&t5TTt5J+%"IPe<3Գg{z.B̲~s ;-ZuiEFEECr'qIY5iFkv72Qր_}jH4nzhI;P?xm3O)R#Jc4pbSy'C[W7eM%KISy@mTEPغp%vg˘PvxFFM84dKj4WlN]JlVbo IP<ǗQy$][kb4ύ׈&&F#c#7U@ERV9waoadXVqBnfzTI봅!}VwOGR~P+H|ݻo߾x z 踚n׼B\I JϳfLQe9sBot=4ϘEs2/J[I#0qxNXSw؀./ %HE7,Ϟ*cOrP'{5y5 W=տ̫naYi_l`WϜO]o-~ʋ\Ab\إ1-:{_,c|]TÓٕ}be$/0Ϩڀa0y^4Ǭ [MOzdʼn~yI% Iie9wg6z>zaxɞ'Oٛ@ "yC©qj^޿z̪4)AJEI8zƯD^'fyy !g k*p}C.-ݺu3U, "ׁ;iZvϊ(]а?}\?"QXdenn36a jNќ3tl/#3С Oxх۸.2yqk:LvېGR}y ;ͥA|^.4LmaiF# ݜ7/6ʼkj=sUqpyX^<溘:t?ep ,U7 v{bcHrv0ْ_#1C\.XM`E0m zg$A^xyq㏏ 4flӢ|a:fXmZY7GY$ W D%J4*2 ?ZK J3AkWdhڎ󷼕 " hHEEhDڝ\)PkX"ca`TdHa-8`|/|w#\fp, ]sjV4ٶOb2|H@HO|'?."77uu C,Asݳgol SETQSrmntkm t`#[w3.zN/ s\ A   ̫naX Cc-tO^@IDATsG#AhKy$"Sձ*'| J]?PUF\+U%)vb(%J̺`&[%te`P9i!G pF[}kZv+d7݅  (rf:{q['-쌪b''IYFD+}S 8AȊO*lؾ";hC'k}w=9 evJ"0ųY`H#W ڢ 2`\=wޏGXlG[R$\2df$$icVd^;EV|j|2+&#$!izfEQy+{B|znO.~ꍆYDa+KRfJu\ n0<\f{x߽%4xߖ3`05o3--F ::Bq%2\aV'#k; _+cZw!{ZhK9~*=o*4A2k$) =o[ʖQ!ELW hVN|Ӳx捡2VVVNjׇ4c!L(fiic@swc2F!w{?Q5`0v-Q`0@kA;q91F wy F#Z+k[˓`Z6Uv#Oֱ),TwfK#M=kS'S-,;>(_ D)λldX #` V8ABt))vb P@tnkdds$.jkaū6l&3zG0@Swr©0FC&6:le̯]ø2*`EC=Zf[Ƀ`Z ĹrUH,tu5g&8)IWvc]0m6^e&[m1Z[V$|=֓*?6`v1sۆI۪BϟU&Ĵ<ޝc PW:؏{ߕ NX]-FkהDz\H;!LCX;c0˿ 74WeqdMys&&ŹxqyZ;Dgl;=FЪ t'l'^5͇z~U }l[;5ʼb)%-1~3SVV GQ5,Ar۹DEYEUD.ǃɥv;Vq1փf2"gs?gG2YHt&{D+GSanmm93 l8w@"m st.B\>g x?Maꂧ]]mGMyz)p©}h3H{8@ڬmIUHLǪXݞy˿5l)+Pm]|ESF>[BAG[fiV\p VAjLrL[)ߖۤYpTt_d攳UM)[_Ƕ`~AkP]e$g)VQn\N^;YK9r\N 13h ,  {Rne5o[z,xmD}~FUSӆ[eceT:i|=mQOHBR_>d U;K|f˹Sϯ+[X[w4:Z!VG Ժs3Y䄩id%MIc'SeuP>[9WyCI䢻|5KqiPnr^ V|eGBy6L:(;W ΋',Z dP|+VY?LR+U")qGC+̙>ZOF /=']΄Ay%^=~[ ( ‰qDmoCL:v UJ!.zY͆*ɪT0XsQƁ Ŭrd{3D>G?7uA!Ëzw2z" $flEAR# LXt2T&H(Pz("lh Vl3SZ[9K[9F=ajnU8m A:Ÿ0op2OQ`on )-[s6bݣP噝sL%/<|(z!/'0ˣ6[lvunݭi>,(P_y+4-3uk<]Ц۔:L}-~_mHT`֝kQ&5_+pN@B|Ll{-F=:vMj?5|ͩ@&У%ޮZ/Kw䫨']^A+{pztUֻ@mZyɋ-2h5͵;f;:zޑݷ-䦴P( #LJE@7GG~˫vr8%9&@c#{]bv->Vi$?<4?)f`'^;MyƒōοFPtzBoīF{ @ w\ͽBo_dŇoI*o}[DŽ+c?6zV*c|r2A.l/{5d蚅zGVoȞQ4$iy^eu#Ѡ }^6Z,d2CIq҈#/Reoμ᳗xbִLyjӻ8RE#W">w/D"~cdbrusb Z{tCRKIQRp͖Dk*yBRA^PyG=XT{!Vg?Z\ǖᖽef"Ԑ=ՔGK(+᠌?BL''ی5@@jڦ(<43Ōxq5)Oײ<,anץ?z-E(PRѴ^rhfs.^0 m<|?MC] *{#vj|PB׶;]:y^"%V@w!f( [Im # Owú==i̯$|?vAlJ'M<ʱpR8ijdtzˆTqqr+ڧ++whѼ@ HL*g~y:ґ T>+0')M̩@H㚠 j[P&_XDn7ZhoH4 WHJAП,"-\ re,$S_W$KK) +P=^^ f`~Z$Ni~'X^ևyI=ϞC~jk Ou\IqW :qS[C MjIFMsb`į̂ٲtPHw޺q#7WSOW5m'GOh65ҟ:ǎ%@G>O01)6ԜL3ԝ((IH.S1tQjJ!9RȷL.2὏LōRHFQ~־;WO:dmDIۑ)u TJNLR'/9 :LvxWXlᅠ6<sɵc;fASE)1 kk|飖a~ՀڲC >>PQ0L$ P  0F1[λ1ycF#"Zaλ`0M`0v޸`0F'C;as1F#7F#hw޲?Y)F#hAw z(F#:λu;FXߺi> dF~H  Pq΋E^_5Tfl~oh>yC $2_*U \X@ \},کpBU6<2>0FM[jnfe#+^"+c alW8|[+=B-GKNBYiZ Ь7B{օoCȭ 'lg헟o18lSTq3Ϻ ACb9zcxy95jn ozv-xE/1 YzK ؃ íκ oɮ`++Fw$MSeBAڈ.梒rrdIoV9HLQ*WZ# .Ve۽/_2JTE |[SnhMee!@K?cKF3{qyA}>m }iZYY9H1_cm{25ʋl e>Ni|;Ӭ,-cA"vVV^֬"6Uӧ뭁baUZ Od3$@w}3k`j: Fi$90xjػ!$@<8Ia>& q-4BGu+8W=+$2u##J2gWX;`wtIii@XS_ v}*!uE=R+OwNfDF}ಊhH˴>p~\WէvOO*FDr" `eCW2I Au`} 8׭Ay2T1/řM#|C''v8NN쵝ǬxE7\ݳM'F%"#vދC'Bt6Ȉ {OPcʠ=z4/@eXM@c}gU(9"(hJu,lS3\rlc_͘k>G_eu uZ{RKr,}pwg ?4M=2.V\S%f>v61ˊH5%Ϸ.3ơ7_zr$e$sh+UViu_6ߜ#&Fg:蚓ǎe"q%fxޢ9H.VHh㹛^].]K?+S7xeȘ^n=}uڔс`zBd:u 4“ɑsN7!nVPJ H++kAY.F粬۶z(F^Fх ;#2VT:޳ClK |jt^\ I"?b Φ*MݰͰ!#N/P**r/\H@CjE|.Ձksg%2AlsONx gixf?ƭ2@p-їkq\ɢv^kjiEu5[]Y@⨚Ff845$8.KGܥ# -p<ū*ˊ%dtNqB0YŬT5f!iVBwBY\hscjrB^a}o91qPAFT0cdGƜ?&$Fa.98:76nrGijv$ŁAJ%ld>uɋР~U:ï%68-kE %BWX΋ď?Wu1a]/o@3?גXD` ȵ6v:@Ac!\@lFAOEIBՌW@K@@$]bZzѢQuo_|lGը_mZ\1x3RGe"۽(֭tQX?A:fjTp(`*}H7p@7dB}FC7Lqw֑ܰ1(5zzIArjnI`@Ds/ZU3CfMIGH] =ى0*\xgm 8RM|jz?۽vQ 9kZyɶGG9 =jƕlu "hkWQhR1BWwd= vT,HK J0aZfcyb:*0-mJb|cv潙dil7EŮ\cAW?QBsR)h$@r)khy4-r%&@dl NcE|"SShf9*hpbǿaeY&{.eύT:˹ѐ3l}&M.{Pٷe*ɨۢC[psYBss_˝?B'7Qv)˅I%&JHdt5C3hJ=Y4~FTjmt^N;0=N<3V`q:qL4kM/`:#.|4w-6r:eX1a@=| <޳q}pӓ<%D5O."iA'[kbIrnwf B ޹5_B ʈA(޳Z$@b,#ɦ$=7ꍆ|3?cMA,a~*e5F T7do<,V3#f{-TB?^.%^Ko2^ǛTa7a`P@xJ^VFՆq=5eڡ[B!\;$:Qo{x߽&S!`~Thd[ZZ 1|5-(%PfØ/م4ad1%d`~Cwg~.KA~a Qԩ1[,ͷ a|)e# }_I _6ApTKC͛7זVVV*++C >%^X1Ac`0?&yϥX%Jʉ`0v-Q`0@kA;q91F wy F#ZλU}~qG vZ{"f}&냟;ʻHNn~<\ӥ}~}\IںאtN\p3uicHe#s<|b28\Biuޫ v*p@wYό2T,q0)1s ?Z0ʆPqHWC=jZGt\~ɗ2/Hֿ40b._]`€:+a#Bckׅ9Fq4ysv';KQăHUhЕ+ei(M]^4DpurVNRK?@vRIgbxXA6ݦ\)][/r>})58r#/S^@1S} q{{p}-b|X CJhQ B1a0&!\ JI V՝9LUex/t9atI'n6\@(T萴Su|<ոƜ d#0~@K. NՕC[=]nP IhD?,=: f9϶ߊnGE/>~m 7*w?,w 45qie&K"}Cb6S^KP0d? E;I&GoaƠڐ2/!`0oGzaAWo]=HDְTGEĠCC 07dJC[6lxkԠ+gC,Y2+)v@=E9^=[P(J";^9~lUm ix4DG}} #}A#˳rMG_|;:hsνZMV!qИĕ({}29 Jj!9X17 \ Yņ? )|p 2tg2=Fyt)sZ_VYnr]Fqq&L,Q!}M,"d0"ӎwS>>XkPrm[$l SAYPޖ++*rګiiiLC]kj@0ޜyӘbrZ0#׉FFgs G}ܗ7mp]5-W9略wH$ /4SS00PԴMQxh&xq53GOVRts. c>CV[{oB:V Te>=ByKiȞ0sz<"F*dg>AUB/H-Kc}sY*0 #4:oȖŦyuV%âpC[ϼb"F  pF_^!#uLoZ qM;ڹ9{:|{e~y:MT㚠 mA>%?qI&×V^5w=F@ˍ|8g\NГ'Z{2XIڧSBUfuai7FXL$wsu".-7eLFNDXRp#|#u0 (Lq&BWn'3ч#li))iY.;-Hxd" xv6ׂxUs[B7(*9~r\>U|Gr u;oyhX x-z=#S2 Z-M{Xk( `9|'4RRR30p?_[̫HDbѱf>1ܬw^L)o)ܖ_[5TPDk0f= !id@_/^>*Oc"n JX#p >0;r^l9_NՋGA ?..^^^ٚ,VO{!ALf!ДasYYfc0@ѧLzMFQiPoCuvӤQkx  :;x˸aݠaqFD0-V5ӄ>|_->F)v%UvıԄ+̔īx.|:ެ#ȶXft)Ɏˈ.)I.2~ҤIFq9D@թf@g⠀A Ih@"Z5eλŁ `Z\}|(|=cU~]X$ n.ޑ0~KsUO~Wj3 %}PY#XÈNURH $ݑXړt)^UQ7qjŌ2f8D> s)s)* KjVUUQ:P 6Qd6KǼ E=}F)Z "ΧmW r\{T+vm^ye۴YG$@Yr-D4/!/rx:H#d異jvU~at_qW҈]=& hw l%+˔b+KEmTb }нQN:Iz T*J^]ƸCMOL~vjR=x,2et-PWFՖ37+ [In#S1I bp0op2 RGqwQ"Sʅ(~3^-W B"-$ؼ뵗8>۾@ƹ5LOZl:ѬyPV} )OIgQ FHި:jyy^MD)Cx08ap^^< .h2f {.JBΓ2TN/Y RO¸?_6\X!qzcq @^s^L h( Ή+XZ{m{H矿KÏ/]:#fϱWBx+^U\:s;Pb՞c>^ͿYwHs 3,5ri%j< d4 ڈ)e-i{hq8/xk<o*X cYSq9.jD]|5ޡ2^M2}"~brj LvuQ>⭥h9pXGQeۍNHk҅#GnEt 6qT'C o,$|F n5Ʀa~uSK =n e]&o0Moc|x^cBe;!1C^Ky)"tjdTgGoB&@(%%ez:U)[8]`WO@"zqtɥlϷRILY@^rAadUn o!}C~smM %AE7S':/(B&2ZO|4/ piM%"m nF#B($_+: ;iSkuw_#R9e 2PIN"z%uKV*6\wQ"1)D1rA $!>^{R.__KZwTJV!TlnnF $yiFKnpQq%\ls4Y#gFe(jx"4} 8qNz0-JB?kUQΞ8+H_0Pd/^Л7'?. CH~24L~Yj^״_ᆳ|o.QA5ce{n)^7\÷$iB R}%&@Uĝ'Z$5ysڕ7kV_WC^E =Ȯa!^3Ԗd;B FNBWG#K:xyox yJB~24 odA_ i5lHHNQ..BU/0% B"DSWQ!IOp7o {μWdQ$"QyQ 54t):j.iy6jHS l%vy!uR g7YZLzk:[YMՆY]@!͉15 ;9 J%f,c6mCOݰ̵-# 񁷑W`gȶ'Vdr", [/FuZ%ܫ{RJ fe!V/O/&4X9y.F@<'i;t:#Bī@Yw#9JFJ[.yH|}-!Z7zKʚ;uwѫ,O Z五Ҵͳזm`b؉ =P\VIde5-Ta:'_(Aй+ů`09{alSˀ@>;o͖@•XC4^e!USܭ`yQTCA8Ui%ѭgW"꯬h@wɶ+5@V6dӒ̾|]5b!Y}Dc~7-po40}G#Tc| {`ksl=8^|p%r8punԄ򂚻gŶe.Iۊ?M,хF!E5<=Lɧ':r"< f#S%^$STd߸< UHfDӉgQ P.= = j .hZ9}VG_$47?#+$οX`􅃏aNFI]@mIDAT˿̬͗@{6 l;,\_ vUm3Vl~9ӫcHU=xUJ 7|n) *Y^gMt,7l$ jp<@7wvuAiԈ3KvCaZgLmҼ3́!.n/r핓}n.U`* 7P gq@ eӟg`F2?|bš}&ߞb .%R5wv":akpsi )equ6YV:} oAZ) ˓;'ye~nG?BY8>Ð4\SPhkZ{-6v/Kfۼty<ls| ~Fx:mӾL14}1t6ZZn 䃍efG2GI`'6z$.pP5NHGpQ7`_ for Flask applications. .. image:: https://github.com/pallets-eco/flask-debugtoolbar/actions/workflows/tests.yml/badge.svg :target: https://github.com/pallets-eco/flask-debugtoolbar/actions Installation ------------ Installing is simple with pip:: $ pip install flask-debugtoolbar Usage ----- Setting up the debug toolbar is simple:: from flask import Flask from flask_debugtoolbar import DebugToolbarExtension app = Flask(__name__) # the toolbar is only enabled in debug mode: app.debug = True # set a 'SECRET_KEY' to enable the Flask session cookies app.config['SECRET_KEY'] = '' toolbar = DebugToolbarExtension(app) The toolbar will automatically be injected into Jinja templates when debug mode is on. In production, setting ``app.debug = False`` will disable the toolbar. See the `documentation`_ for more information. .. _documentation: https://flask-debugtoolbar.readthedocs.io/ flask-debugtoolbar-0.15.1/setup.cfg0000664000175000017500000000211214613236757017044 0ustar kalyanikalyani[metadata] name = Flask-DebugToolbar version = 0.15.1 author = Michael van Tellingen author_email = michaelvantellingen@gmail.com maintainer = Matt Good maintainer_email = matt@matt-good.net description = A toolbar overlay for debugging Flask applications. long_description = file: README.rst long_description_content_type = text/x-rst keywords = flask, debug, toolbar url = https://github.com/pallets-eco/flask-debugtoolbar project_urls = Changelog = https://github.com/pallets-eco/flask-debugtoolbar/releases Documentation = https://flask-debugtoolbar.readthedocs.io/ classifiers = Development Status :: 4 - Beta Environment :: Web Environment Framework :: Flask Intended Audience :: Developers License :: OSI Approved :: BSD License Operating System :: OS Independent Programming Language :: Python Topic :: Internet :: WWW/HTTP :: Dynamic Content Topic :: Software Development :: Libraries :: Python Modules [options] package_dir = = src packages = find: include_package_data = True python_requires = >=3.7 [options.packages.find] where = src flask-debugtoolbar-0.15.1/LICENSE0000664000175000017500000000300014613236757016225 0ustar kalyanikalyaniCopyright (c) Rob Hudson and individual contributors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Django nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. flask-debugtoolbar-0.15.1/setup.py0000664000175000017500000000065614613236757016750 0ustar kalyanikalyanifrom setuptools import setup # Metadata goes in setup.cfg. These are here for GitHub's dependency graph. setup( name="Flask-DebugToolbar", install_requires=[ 'Flask>=2.2.0', 'Blinker', 'itsdangerous', 'werkzeug', 'MarkupSafe', 'packaging', ], extras_require={ "docs": [ 'Sphinx>=1.2.2', 'Pallets-Sphinx-Themes', ], } ) flask-debugtoolbar-0.15.1/MANIFEST.in0000664000175000017500000000017414613236757016767 0ustar kalyanikalyaniinclude LICENSE recursive-include src/flask_debugtoolbar/templates *.html recursive-include src/flask_debugtoolbar/static *