From 57684cdc5c21b9508c9829410792c21bb74d598a Mon Sep 17 00:00:00 2001 From: ViktorBarzin Date: Sun, 9 Jul 2017 00:26:06 +0300 Subject: [PATCH] Adding new stuff --- vim-plugins/.filetype.vim.un~ | Bin 0 -> 6111 bytes vim-plugins/.netrwhist | 9 + vim-plugins/Rename.vim | 64 + vim-plugins/autoload/pathogen.vim | 353 + vim-plugins/bundle/.asd.markdown.un~ | Bin 0 -> 4169 bytes vim-plugins/bundle/.asd.md.un~ | Bin 0 -> 1806 bytes .../.vundle/script-names.vim-scripts.org.json | 1 + vim-plugins/bundle/AutoComplPop/README | 101 + .../bundle/AutoComplPop/autoload/acp.vim | 431 + vim-plugins/bundle/AutoComplPop/doc/acp.jax | 298 + vim-plugins/bundle/AutoComplPop/doc/acp.txt | 512 ++ .../bundle/AutoComplPop/plugin/acp.vim | 170 + .../bundle/ctrlp.vim/autoload/ctrlp.vim | 2289 ++++++ .../ctrlp.vim/autoload/ctrlp/bookmarkdir.vim | 140 + .../ctrlp.vim/autoload/ctrlp/buffertag.vim | 264 + .../ctrlp.vim/autoload/ctrlp/changes.vim | 98 + .../bundle/ctrlp.vim/autoload/ctrlp/dir.vim | 95 + .../bundle/ctrlp.vim/autoload/ctrlp/line.vim | 72 + .../bundle/ctrlp.vim/autoload/ctrlp/mixed.vim | 88 + .../ctrlp.vim/autoload/ctrlp/mrufiles.vim | 154 + .../ctrlp.vim/autoload/ctrlp/quickfix.vim | 59 + .../ctrlp.vim/autoload/ctrlp/rtscript.vim | 59 + .../bundle/ctrlp.vim/autoload/ctrlp/tag.vim | 138 + .../bundle/ctrlp.vim/autoload/ctrlp/undo.vim | 154 + .../bundle/ctrlp.vim/autoload/ctrlp/utils.vim | 110 + vim-plugins/bundle/ctrlp.vim/doc/ctrlp.txt | 1451 ++++ vim-plugins/bundle/ctrlp.vim/doc/tags | 100 + vim-plugins/bundle/ctrlp.vim/plugin/ctrlp.vim | 68 + vim-plugins/bundle/ctrlp.vim/readme.md | 91 + vim-plugins/bundle/emmet-vim/Makefile | 11 + vim-plugins/bundle/emmet-vim/README.mkd | 149 + vim-plugins/bundle/emmet-vim/TODO | 0 vim-plugins/bundle/emmet-vim/TUTORIAL | 212 + .../bundle/emmet-vim/autoload/emmet.vim | 2033 +++++ .../bundle/emmet-vim/autoload/emmet/lang.vim | 30 + .../emmet-vim/autoload/emmet/lang/css.vim | 350 + .../emmet-vim/autoload/emmet/lang/elm.vim | 214 + .../emmet-vim/autoload/emmet/lang/haml.vim | 334 + .../emmet-vim/autoload/emmet/lang/html.vim | 954 +++ .../emmet-vim/autoload/emmet/lang/jade.vim | 331 + .../emmet-vim/autoload/emmet/lang/less.vim | 47 + .../emmet-vim/autoload/emmet/lang/sass.vim | 160 + .../emmet-vim/autoload/emmet/lang/scss.vim | 125 + .../emmet-vim/autoload/emmet/lang/slim.vim | 281 + .../emmet-vim/autoload/emmet/lorem/en.vim | 65 + .../emmet-vim/autoload/emmet/lorem/ja.vim | 27 + .../bundle/emmet-vim/autoload/emmet/util.vim | 349 + vim-plugins/bundle/emmet-vim/doc/emmet.txt | 1773 ++++ .../bundle/emmet-vim/doc/screenshot.gif | Bin 0 -> 33279 bytes vim-plugins/bundle/emmet-vim/emmet.vim.vimup | 277 + vim-plugins/bundle/emmet-vim/plugin/emmet.vim | 177 + vim-plugins/bundle/emmet-vim/unittest.vim | 1023 +++ vim-plugins/bundle/jedi-vim/.jedi_vim.py.un~ | Bin 0 -> 976 bytes vim-plugins/bundle/jedi-vim/.travis.yml | 18 + vim-plugins/bundle/jedi-vim/AUTHORS.txt | 55 + vim-plugins/bundle/jedi-vim/CONTRIBUTING.md | 12 + vim-plugins/bundle/jedi-vim/LICENSE.txt | 21 + vim-plugins/bundle/jedi-vim/Makefile | 16 + vim-plugins/bundle/jedi-vim/README.rst | 246 + .../__pycache__/jedi_vim.cpython-35.pyc | Bin 0 -> 21300 bytes .../jedi-vim/after/ftplugin/python/jedi.vim | 23 + .../bundle/jedi-vim/after/syntax/python.vim | 32 + .../bundle/jedi-vim/autoload/.jedi.vim.un~ | Bin 0 -> 1044 bytes .../bundle/jedi-vim/autoload/health/jedi.vim | 4 + vim-plugins/bundle/jedi-vim/autoload/jedi.vim | 609 ++ vim-plugins/bundle/jedi-vim/conftest.py | 60 + vim-plugins/bundle/jedi-vim/doc/jedi-vim.txt | 544 ++ vim-plugins/bundle/jedi-vim/doc/tags | 38 + .../bundle/jedi-vim/ftplugin/python/jedi.vim | 50 + vim-plugins/bundle/jedi-vim/initialize.py | 26 + vim-plugins/bundle/jedi-vim/jedi/.coveragerc | 19 + vim-plugins/bundle/jedi-vim/jedi/.travis.yml | 28 + vim-plugins/bundle/jedi-vim/jedi/AUTHORS.txt | 45 + .../bundle/jedi-vim/jedi/CHANGELOG.rst | 67 + .../bundle/jedi-vim/jedi/CONTRIBUTING.md | 28 + vim-plugins/bundle/jedi-vim/jedi/LICENSE.txt | 82 + vim-plugins/bundle/jedi-vim/jedi/MANIFEST.in | 14 + vim-plugins/bundle/jedi-vim/jedi/README.rst | 210 + vim-plugins/bundle/jedi-vim/jedi/conftest.py | 72 + .../bundle/jedi-vim/jedi/docs/Makefile | 153 + .../docs/_screenshots/screenshot_complete.png | Bin 0 -> 17109 bytes .../docs/_screenshots/screenshot_function.png | Bin 0 -> 40035 bytes .../docs/_screenshots/screenshot_pydoc.png | Bin 0 -> 22041 bytes .../jedi-vim/jedi/docs/_static/logo-src.txt | 3 + .../jedi-vim/jedi/docs/_static/logo.png | Bin 0 -> 28795 bytes .../jedi/docs/_templates/ghbuttons.html | 4 + .../jedi/docs/_templates/sidebarlogo.html | 3 + .../jedi-vim/jedi/docs/_themes/flask/LICENSE | 37 + .../jedi/docs/_themes/flask/layout.html | 28 + .../jedi/docs/_themes/flask/relations.html | 19 + .../docs/_themes/flask/static/flasky.css_t | 394 + .../docs/_themes/flask/static/small_flask.css | 70 + .../jedi/docs/_themes/flask/theme.conf | 9 + .../jedi/docs/_themes/flask_theme_support.py | 125 + vim-plugins/bundle/jedi-vim/jedi/docs/conf.py | 291 + .../jedi-vim/jedi/docs/docs/development.rst | 248 + .../jedi-vim/jedi/docs/docs/features.rst | 263 + .../jedi-vim/jedi/docs/docs/installation.rst | 83 + .../jedi/docs/docs/plugin-api-classes.rst | 10 + .../jedi-vim/jedi/docs/docs/plugin-api.rst | 100 + .../jedi-vim/jedi/docs/docs/settings.rst | 6 + .../jedi/docs/docs/static_analsysis.rst | 106 + .../jedi-vim/jedi/docs/docs/testing.rst | 40 + .../bundle/jedi-vim/jedi/docs/docs/usage.rst | 119 + .../bundle/jedi-vim/jedi/docs/global.rst | 3 + .../bundle/jedi-vim/jedi/docs/index.rst | 40 + .../bundle/jedi-vim/jedi/jedi/__init__.py | 43 + .../bundle/jedi-vim/jedi/jedi/__main__.py | 48 + .../jedi/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 1888 bytes .../__pycache__/_compatibility.cpython-35.pyc | Bin 0 -> 7346 bytes .../jedi/__pycache__/cache.cpython-35.pyc | Bin 0 -> 4072 bytes .../jedi/__pycache__/common.cpython-35.pyc | Bin 0 -> 6529 bytes .../jedi/__pycache__/debug.cpython-35.pyc | Bin 0 -> 3770 bytes .../jedi/__pycache__/settings.cpython-35.pyc | Bin 0 -> 3044 bytes .../jedi/__pycache__/utils.cpython-35.pyc | Bin 0 -> 4812 bytes .../jedi-vim/jedi/jedi/_compatibility.py | 263 + .../bundle/jedi-vim/jedi/jedi/api/__init__.py | 463 ++ .../api/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 18112 bytes .../api/__pycache__/classes.cpython-35.pyc | Bin 0 -> 26274 bytes .../api/__pycache__/completion.cpython-35.pyc | Bin 0 -> 8019 bytes .../api/__pycache__/helpers.cpython-35.pyc | Bin 0 -> 9338 bytes .../__pycache__/interpreter.cpython-35.pyc | Bin 0 -> 2890 bytes .../api/__pycache__/keywords.cpython-35.pyc | Bin 0 -> 4305 bytes .../api/__pycache__/usages.cpython-35.pyc | Bin 0 -> 2000 bytes .../bundle/jedi-vim/jedi/jedi/api/classes.py | 764 ++ .../jedi-vim/jedi/jedi/api/completion.py | 256 + .../bundle/jedi-vim/jedi/jedi/api/helpers.py | 315 + .../jedi-vim/jedi/jedi/api/interpreter.py | 67 + .../bundle/jedi-vim/jedi/jedi/api/keywords.py | 132 + .../jedi-vim/jedi/jedi/api/replstartup.py | 27 + .../bundle/jedi-vim/jedi/jedi/api/usages.py | 49 + .../bundle/jedi-vim/jedi/jedi/cache.py | 127 + .../bundle/jedi-vim/jedi/jedi/common.py | 169 + .../bundle/jedi-vim/jedi/jedi/debug.py | 133 + .../jedi/jedi/evaluate/.sys_path.py.un~ | Bin 0 -> 9435 bytes .../jedi-vim/jedi/jedi/evaluate/__init__.py | 534 ++ .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 17518 bytes .../__pycache__/analysis.cpython-35.pyc | Bin 0 -> 7625 bytes .../evaluate/__pycache__/cache.cpython-35.pyc | Bin 0 -> 2276 bytes .../__pycache__/docstrings.cpython-35.pyc | Bin 0 -> 7293 bytes .../__pycache__/dynamic.cpython-35.pyc | Bin 0 -> 4479 bytes .../__pycache__/finder.cpython-35.pyc | Bin 0 -> 18216 bytes .../__pycache__/flow_analysis.cpython-35.pyc | Bin 0 -> 2604 bytes .../__pycache__/helpers.cpython-35.pyc | Bin 0 -> 6171 bytes .../__pycache__/imports.cpython-35.pyc | Bin 0 -> 15579 bytes .../__pycache__/iterable.cpython-35.pyc | Bin 0 -> 30526 bytes .../evaluate/__pycache__/param.cpython-35.pyc | Bin 0 -> 13602 bytes .../__pycache__/pep0484.cpython-35.pyc | Bin 0 -> 6976 bytes .../__pycache__/precedence.cpython-35.pyc | Bin 0 -> 5050 bytes .../__pycache__/recursion.cpython-35.pyc | Bin 0 -> 5506 bytes .../__pycache__/representation.cpython-35.pyc | Bin 0 -> 35140 bytes .../evaluate/__pycache__/site.cpython-35.pyc | Bin 0 -> 3181 bytes .../__pycache__/stdlib.cpython-35.pyc | Bin 0 -> 9261 bytes .../__pycache__/sys_path.cpython-35.pyc | Bin 0 -> 8619 bytes .../jedi-vim/jedi/jedi/evaluate/analysis.py | 216 + .../jedi-vim/jedi/jedi/evaluate/cache.py | 58 + .../jedi/jedi/evaluate/compiled/__init__.py | 544 ++ .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 17132 bytes .../compiled/__pycache__/fake.cpython-35.pyc | Bin 0 -> 4895 bytes .../compiled/__pycache__/mixed.cpython-35.pyc | Bin 0 -> 5122 bytes .../jedi/jedi/evaluate/compiled/fake.py | 203 + .../evaluate/compiled/fake/_functools.pym | 9 + .../jedi/evaluate/compiled/fake/_sqlite3.pym | 26 + .../jedi/jedi/evaluate/compiled/fake/_sre.pym | 99 + .../jedi/evaluate/compiled/fake/_weakref.pym | 8 + .../jedi/evaluate/compiled/fake/builtins.pym | 262 + .../jedi/evaluate/compiled/fake/datetime.pym | 4 + .../jedi/jedi/evaluate/compiled/fake/io.pym | 6 + .../jedi/evaluate/compiled/fake/posix.pym | 5 + .../jedi/jedi/evaluate/compiled/mixed.py | 158 + .../jedi-vim/jedi/jedi/evaluate/docstrings.py | 204 + .../jedi-vim/jedi/jedi/evaluate/dynamic.py | 149 + .../jedi-vim/jedi/jedi/evaluate/finder.py | 632 ++ .../jedi/jedi/evaluate/flow_analysis.py | 91 + .../jedi-vim/jedi/jedi/evaluate/helpers.py | 200 + .../jedi-vim/jedi/jedi/evaluate/imports.py | 517 ++ .../jedi-vim/jedi/jedi/evaluate/iterable.py | 863 ++ .../jedi/jedi/evaluate/jedi_typing.py | 100 + .../jedi-vim/jedi/jedi/evaluate/param.py | 438 + .../jedi-vim/jedi/jedi/evaluate/pep0484.py | 195 + .../jedi-vim/jedi/jedi/evaluate/precedence.py | 178 + .../jedi-vim/jedi/jedi/evaluate/recursion.py | 157 + .../jedi/jedi/evaluate/representation.py | 974 +++ .../jedi-vim/jedi/jedi/evaluate/site.py | 110 + .../jedi-vim/jedi/jedi/evaluate/stdlib.py | 280 + .../jedi-vim/jedi/jedi/evaluate/sys_path.py | 284 + .../jedi-vim/jedi/jedi/parser/__init__.py | 409 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 11730 bytes .../parser/__pycache__/fast.cpython-35.pyc | Bin 0 -> 17787 bytes .../parser/__pycache__/token.cpython-35.pyc | Bin 0 -> 1299 bytes .../__pycache__/tokenize.cpython-35.pyc | Bin 0 -> 8000 bytes .../parser/__pycache__/tree.cpython-35.pyc | Bin 0 -> 56261 bytes .../parser/__pycache__/utils.cpython-35.pyc | Bin 0 -> 5389 bytes .../bundle/jedi-vim/jedi/jedi/parser/fast.py | 621 ++ .../jedi-vim/jedi/jedi/parser/grammar2.7.txt | 152 + .../jedi-vim/jedi/jedi/parser/grammar3.4.txt | 135 + .../jedi-vim/jedi/jedi/parser/grammar3.5.txt | 154 + .../jedi/jedi/parser/pgen2/__init__.py | 8 + .../pgen2/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 151 bytes .../pgen2/__pycache__/grammar.cpython-35.pyc | Bin 0 -> 4930 bytes .../pgen2/__pycache__/parse.cpython-35.pyc | Bin 0 -> 6211 bytes .../pgen2/__pycache__/pgen.cpython-35.pyc | Bin 0 -> 10903 bytes .../jedi/jedi/parser/pgen2/grammar.py | 125 + .../jedi-vim/jedi/jedi/parser/pgen2/parse.py | 213 + .../jedi-vim/jedi/jedi/parser/pgen2/pgen.py | 394 + .../bundle/jedi-vim/jedi/jedi/parser/token.py | 90 + .../jedi-vim/jedi/jedi/parser/tokenize.py | 329 + .../bundle/jedi-vim/jedi/jedi/parser/tree.py | 1658 ++++ .../bundle/jedi-vim/jedi/jedi/parser/utils.py | 198 + .../bundle/jedi-vim/jedi/jedi/refactoring.py | 202 + .../bundle/jedi-vim/jedi/jedi/settings.py | 233 + .../bundle/jedi-vim/jedi/jedi/utils.py | 131 + vim-plugins/bundle/jedi-vim/jedi/pytest.ini | 10 + .../jedi-vim/jedi/scripts/memory_check.py | 58 + .../bundle/jedi-vim/jedi/scripts/profile.py | 49 + .../bundle/jedi-vim/jedi/scripts/wx_check.py | 61 + vim-plugins/bundle/jedi-vim/jedi/setup.py | 50 + vim-plugins/bundle/jedi-vim/jedi/sith.py | 220 + .../bundle/jedi-vim/jedi/test/__init__.py | 0 .../jedi/test/blabla_test_documentation.py | 30 + .../jedi-vim/jedi/test/completion/__init__.py | 3 + .../jedi-vim/jedi/test/completion/arrays.py | 430 + .../jedi-vim/jedi/test/completion/basic.py | 293 + .../jedi-vim/jedi/test/completion/classes.py | 470 ++ .../jedi/test/completion/completion.py | 26 + .../jedi-vim/jedi/test/completion/complex.py | 14 + .../jedi/test/completion/comprehensions.py | 200 + .../jedi-vim/jedi/test/completion/context.py | 32 + .../jedi/test/completion/decorators.py | 306 + .../jedi/test/completion/definition.py | 68 + .../jedi/test/completion/descriptors.py | 219 + .../jedi/test/completion/docstring.py | 235 + .../jedi/test/completion/dynamic_arrays.py | 306 + .../jedi/test/completion/dynamic_params.py | 134 + .../jedi/test/completion/flow_analysis.py | 257 + .../jedi/test/completion/functions.py | 475 ++ .../jedi/test/completion/generators.py | 199 + .../jedi-vim/jedi/test/completion/goto.py | 231 + .../test/completion/import_tree/__init__.py | 7 + .../completion/import_tree/flow_import.py | 4 + .../completion/import_tree/invisible_pkg.py | 7 + .../jedi/test/completion/import_tree/mod1.py | 4 + .../jedi/test/completion/import_tree/mod2.py | 1 + .../completion/import_tree/pkg/__init__.py | 3 + .../test/completion/import_tree/pkg/mod1.py | 1 + .../test/completion/import_tree/random.py | 4 + .../completion/import_tree/recurse_class1.py | 5 + .../completion/import_tree/recurse_class2.py | 4 + .../test/completion/import_tree/rename1.py | 3 + .../test/completion/import_tree/rename2.py | 6 + .../jedi-vim/jedi/test/completion/imports.py | 285 + .../jedi-vim/jedi/test/completion/invalid.py | 214 + .../jedi/test/completion/isinstance.py | 100 + .../jedi-vim/jedi/test/completion/keywords.py | 59 + .../jedi-vim/jedi/test/completion/lambdas.py | 106 + .../jedi/test/completion/named_param.py | 48 + .../jedi/test/completion/on_import.py | 108 + .../jedi-vim/jedi/test/completion/ordering.py | 195 + .../jedi-vim/jedi/test/completion/parser.py | 43 + .../jedi-vim/jedi/test/completion/pep0484.py | 160 + .../jedi/test/completion/pep0484_comments.py | 109 + .../jedi/test/completion/pep0484_typing.py | 263 + .../jedi/test/completion/precedence.py | 138 + .../jedi/test/completion/recursion.py | 51 + .../jedi-vim/jedi/test/completion/stdlib.py | 224 + .../jedi-vim/jedi/test/completion/sys_path.py | 25 + .../jedi/test/completion/thirdparty/PyQt4_.py | 19 + .../test/completion/thirdparty/django_.py | 11 + .../jedi/test/completion/thirdparty/jedi_.py | 52 + .../test/completion/thirdparty/psycopg2_.py | 11 + .../jedi/test/completion/thirdparty/pylab_.py | 36 + .../jedi-vim/jedi/test/completion/types.py | 127 + .../jedi-vim/jedi/test/completion/usages.py | 275 + .../bundle/jedi-vim/jedi/test/conftest.py | 130 + .../bundle/jedi-vim/jedi/test/helpers.py | 40 + .../bundle/jedi-vim/jedi/test/refactor.py | 99 + .../jedi-vim/jedi/test/refactor/extract.py | 47 + .../jedi-vim/jedi/test/refactor/inline.py | 18 + .../jedi-vim/jedi/test/refactor/rename.py | 17 + vim-plugins/bundle/jedi-vim/jedi/test/run.py | 444 + .../jedi-vim/jedi/test/speed/precedence.py | 37 + .../jedi/test/static_analysis/arguments.py | 73 + .../test/static_analysis/attribute_error.py | 119 + .../static_analysis/attribute_warnings.py | 46 + .../jedi/test/static_analysis/branches.py | 46 + .../jedi/test/static_analysis/builtins.py | 11 + .../jedi/test/static_analysis/class_simple.py | 13 + .../test/static_analysis/comprehensions.py | 41 + .../jedi/test/static_analysis/descriptors.py | 13 + .../jedi/test/static_analysis/generators.py | 7 + .../static_analysis/import_tree/__init__.py | 5 + .../test/static_analysis/import_tree/a.py | 1 + .../test/static_analysis/import_tree/b.py | 0 .../jedi/test/static_analysis/imports.py | 25 + .../jedi/test/static_analysis/iterable.py | 21 + .../jedi/test/static_analysis/keywords.py | 7 + .../jedi/test/static_analysis/operations.py | 16 + .../jedi/test/static_analysis/python2.py | 11 + .../test/static_analysis/star_arguments.py | 119 + .../jedi/test/static_analysis/try_except.py | 89 + .../jedi-vim/jedi/test/test_api/__init__.py | 0 .../jedi-vim/jedi/test/test_api/test_api.py | 179 + .../test_api_classes_follow_definition.py | 62 + .../test/test_api/test_call_signatures.py | 389 + .../jedi/test/test_api/test_classes.py | 354 + .../test/test_api/test_completion_context.py | 9 + .../jedi/test/test_api/test_defined_names.py | 92 + .../jedi/test/test_api/test_full_name.py | 91 + .../jedi/test/test_api/test_interpreter.py | 160 + .../jedi/test/test_api/test_unicode.py | 66 + .../jedi/test/test_api/test_usages.py | 6 + .../bundle/jedi-vim/jedi/test/test_cache.py | 109 + .../bundle/jedi-vim/jedi/test/test_debug.py | 9 + .../jedi/test/test_evaluate/__init__.py | 0 .../absolute_import/local_module.py | 14 + .../test_evaluate/absolute_import/unittest.py | 14 + .../test_evaluate/buildout_project/bin/app | 12 + .../buildout_project/bin/binary_file | 1 + .../buildout_project/bin/empty_file | 0 .../buildout_project/buildout.cfg | 0 .../src/proj_name/module_name.py | 0 .../flask-site-packages/flask/__init__.py | 1 + .../flask-site-packages/flask/ext/__init__.py | 1 + .../flask-site-packages/flask_baz/__init__.py | 1 + .../flask-site-packages/flask_foo.py | 2 + .../flask-site-packages/flaskext/__init__.py | 0 .../flask-site-packages/flaskext/bar.py | 2 + .../flaskext/moo/__init__.py | 1 + .../__init__.cpython-34m.so | Bin 0 -> 16493 bytes .../init_extension_module/module.c | 15 + .../init_extension_module/setup.py | 10 + .../namespace_package/ns1/pkg/__init__.py | 9 + .../namespace_package/ns1/pkg/ns1_file.py | 1 + .../ns1/pkg/ns1_folder/__init__.py | 1 + .../namespace_package/ns2/pkg/ns2_file.py | 1 + .../ns2/pkg/ns2_folder/__init__.py | 1 + .../ns2/pkg/ns2_folder/nested/__init__.py | 1 + .../nested_namespaces/__init__.py | 0 .../nested_namespaces/namespace/__init__.py | 4 + .../namespace/pkg/__init__.py | 1 + .../test_evaluate/not_in_sys_path/__init__.py | 0 .../not_in_sys_path/not_in_sys_path.py | 1 + .../not_in_sys_path_package/__init__.py | 1 + .../not_in_sys_path_package/module.py | 1 + .../not_in_sys_path/pkg/__init__.py | 0 .../not_in_sys_path/pkg/module.py | 7 + .../dir-from-foo-pth/__init__.py | 2 + .../python2.7/site-packages/egg_link.egg-link | 1 + .../lib/python2.7/site-packages/foo.pth | 1 + .../python2.7/site-packages/import_smth.pth | 1 + .../python2.7/site-packages/relative.egg-link | 1 + .../lib/python2.7/site-packages/smth.py | 6 + .../dir-from-foo-pth/__init__.py | 2 + .../python3.4/site-packages/egg_link.egg-link | 1 + .../lib/python3.4/site-packages/foo.pth | 1 + .../python3.4/site-packages/import_smth.pth | 1 + .../python3.4/site-packages/relative.egg-link | 1 + .../lib/python3.4/site-packages/smth.py | 6 + .../test_evaluate/test_absolute_import.py | 40 + .../test/test_evaluate/test_annotations.py | 60 + .../test_evaluate/test_buildout_detection.py | 89 + .../jedi/test/test_evaluate/test_compiled.py | 86 + .../jedi/test/test_evaluate/test_docstring.py | 152 + .../jedi/test/test_evaluate/test_extension.py | 57 + .../jedi/test/test_evaluate/test_helpers.py | 16 + .../jedi/test/test_evaluate/test_imports.py | 129 + .../test_evaluate/test_namespace_package.py | 65 + .../test/test_evaluate/test_precedence.py | 20 + .../jedi/test/test_evaluate/test_pyc.py | 64 + .../test/test_evaluate/test_representation.py | 36 + .../jedi/test/test_evaluate/test_sys_path.py | 59 + .../test_evaluate/zipped_imports/not_pkg.zip | Bin 0 -> 204 bytes .../test/test_evaluate/zipped_imports/pkg.zip | Bin 0 -> 504 bytes .../jedi-vim/jedi/test/test_integration.py | 60 + .../jedi/test/test_integration_analysis.py | 12 + .../jedi/test/test_integration_import.py | 83 + .../jedi/test/test_integration_keyword.py | 29 + .../jedi/test/test_integration_stdlib.py | 45 + .../jedi-vim/jedi/test/test_jedi_system.py | 61 + .../jedi-vim/jedi/test/test_new_parser.py | 13 + .../jedi/test/test_parser/__init__.py | 0 .../jedi/test/test_parser/test_fast_parser.py | 496 ++ .../jedi/test/test_parser/test_get_code.py | 107 + .../test/test_parser/test_param_splitting.py | 34 + .../jedi/test/test_parser/test_parser.py | 238 + .../jedi/test/test_parser/test_parser_tree.py | 69 + .../jedi/test/test_parser/test_pgen2.py | 279 + .../jedi/test/test_parser/test_tokenize.py | 152 + .../test/test_parser/test_user_context.py | 6 + .../jedi-vim/jedi/test/test_regression.py | 206 + .../bundle/jedi-vim/jedi/test/test_speed.py | 53 + .../bundle/jedi-vim/jedi/test/test_utils.py | 111 + .../bundle/jedi-vim/jedi/test/test_windows.py | 8 + vim-plugins/bundle/jedi-vim/jedi/tox.ini | 47 + vim-plugins/bundle/jedi-vim/jedi_vim.py | 723 ++ vim-plugins/bundle/jedi-vim/plugin/jedi.vim | 38 + vim-plugins/bundle/jedi-vim/pytest.ini | 3 + .../bundle/jedi-vim/test/completions.vim | 63 + .../jedi-vim/test/completions_disabled.vim | 21 + .../bundle/jedi-vim/test/documentation.vim | 31 + vim-plugins/bundle/jedi-vim/test/goto.vim | 217 + vim-plugins/bundle/jedi-vim/test/pyimport.vim | 32 + .../bundle/jedi-vim/test/signatures.vim | 130 + vim-plugins/bundle/jedi-vim/test/utils.vim | 11 + .../bundle/jedi-vim/test_integration.py | 2 + .../bundle/nerdtree-git-plugin/README.md | 75 + .../nerdtree_plugin/git_status.vim | 359 + vim-plugins/bundle/nerdtree/CHANGELOG | 178 + vim-plugins/bundle/nerdtree/LICENCE | 13 + vim-plugins/bundle/nerdtree/README.markdown | 136 + .../bundle/nerdtree/autoload/nerdtree.vim | 172 + .../nerdtree/autoload/nerdtree/ui_glue.vim | 644 ++ vim-plugins/bundle/nerdtree/doc/NERD_tree.txt | 1271 +++ vim-plugins/bundle/nerdtree/doc/tags | 93 + .../bundle/nerdtree/lib/nerdtree/bookmark.vim | 343 + .../bundle/nerdtree/lib/nerdtree/creator.vim | 379 + .../bundle/nerdtree/lib/nerdtree/event.vim | 13 + .../bundle/nerdtree/lib/nerdtree/flag_set.vim | 56 + .../bundle/nerdtree/lib/nerdtree/key_map.vim | 159 + .../nerdtree/lib/nerdtree/menu_controller.vim | 180 + .../nerdtree/lib/nerdtree/menu_item.vim | 114 + .../bundle/nerdtree/lib/nerdtree/nerdtree.vim | 197 + .../bundle/nerdtree/lib/nerdtree/notifier.vim | 35 + .../bundle/nerdtree/lib/nerdtree/opener.vim | 343 + .../bundle/nerdtree/lib/nerdtree/path.vim | 798 ++ .../nerdtree/lib/nerdtree/tree_dir_node.vim | 600 ++ .../nerdtree/lib/nerdtree/tree_file_node.vim | 368 + .../bundle/nerdtree/lib/nerdtree/ui.vim | 538 ++ .../nerdtree_plugin/exec_menuitem.vim | 40 + .../nerdtree/nerdtree_plugin/fs_menu.vim | 287 + .../bundle/nerdtree/plugin/NERD_tree.vim | 222 + .../bundle/nerdtree/syntax/nerdtree.vim | 82 + .../bundle/python-mode/.bumpversion.cfg | 11 + vim-plugins/bundle/python-mode/.ruby-gemset | 1 + vim-plugins/bundle/python-mode/.ruby-version | 1 + vim-plugins/bundle/python-mode/.travis.yml | 6 + vim-plugins/bundle/python-mode/AUTHORS | 64 + vim-plugins/bundle/python-mode/COPYING | 165 + vim-plugins/bundle/python-mode/Changelog.rst | 356 + vim-plugins/bundle/python-mode/Gemfile | 3 + vim-plugins/bundle/python-mode/Makefile | 90 + vim-plugins/bundle/python-mode/README.rst | 367 + vim-plugins/bundle/python-mode/Rakefile | 11 + .../python-mode/after/ftplugin/pyrex.vim | 1 + .../python-mode/after/ftplugin/python.vim | 58 + .../bundle/python-mode/after/indent/pyrex.vim | 1 + .../python-mode/after/indent/python.vim | 13 + .../bundle/python-mode/autoload/pymode.vim | 133 + .../autoload/pymode/breakpoint.vim | 51 + .../python-mode/autoload/pymode/doc.vim | 37 + .../python-mode/autoload/pymode/folding.vim | 274 + .../python-mode/autoload/pymode/indent.vim | 186 + .../python-mode/autoload/pymode/lint.vim | 101 + .../python-mode/autoload/pymode/motion.vim | 97 + .../python-mode/autoload/pymode/rope.vim | 185 + .../python-mode/autoload/pymode/run.vim | 99 + .../autoload/pymode/tools/loclist.vim | 81 + .../autoload/pymode/tools/signs.vim | 57 + .../autoload/pymode/troubleshooting.vim | 89 + .../autoload/pymode/virtualenv.vim | 17 + vim-plugins/bundle/python-mode/debug.vim | 13 + vim-plugins/bundle/python-mode/doc/pymode.txt | 796 ++ .../bundle/python-mode/ftplugin/pyrex.vim | 1 + .../python-mode/ftplugin/python/pymode.vim | 212 + vim-plugins/bundle/python-mode/logo.png | Bin 0 -> 16429 bytes .../bundle/python-mode/plugin/pymode.vim | 316 + vim-plugins/bundle/python-mode/pylama.ini | 8 + .../bundle/python-mode/pymode/__init__.py | 37 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 1511 bytes .../pymode/__pycache__/_compat.cpython-35.pyc | Bin 0 -> 3317 bytes .../__pycache__/autopep8.cpython-35.pyc | Bin 0 -> 87883 bytes .../__pycache__/environment.cpython-35.pyc | Bin 0 -> 8228 bytes .../pymode/__pycache__/lint.cpython-35.pyc | Bin 0 -> 2556 bytes .../pymode/__pycache__/rope.cpython-35.pyc | Bin 0 -> 27021 bytes .../pymode/__pycache__/run.cpython-35.pyc | Bin 0 -> 2573 bytes .../pymode/__pycache__/utils.cpython-35.pyc | Bin 0 -> 1044 bytes .../__pycache__/virtualenv.cpython-35.pyc | Bin 0 -> 2167 bytes .../bundle/python-mode/pymode/_compat.py | 98 + .../bundle/python-mode/pymode/async.py | 6 + .../bundle/python-mode/pymode/autopep8.py | 3654 +++++++++ .../bundle/python-mode/pymode/environment.py | 249 + .../libs/__pycache__/mccabe.cpython-35.pyc | Bin 0 -> 11220 bytes .../libs/__pycache__/pep257.cpython-35.pyc | Bin 0 -> 43295 bytes .../libs/__pycache__/pep8.cpython-35.pyc | Bin 0 -> 65251 bytes .../libs/__pycache__/six.cpython-35.pyc | Bin 0 -> 26044 bytes .../pymode/libs/_markerlib/__init__.py | 16 + .../pymode/libs/_markerlib/markers.py | 119 + .../pymode/libs/astroid/__init__.py | 131 + .../pymode/libs/astroid/__pkginfo__.py | 42 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 4519 bytes .../__pycache__/__pkginfo__.cpython-35.pyc | Bin 0 -> 1055 bytes .../__pycache__/as_string.cpython-35.pyc | Bin 0 -> 24164 bytes .../__pycache__/astpeephole.cpython-35.pyc | Bin 0 -> 2009 bytes .../astroid/__pycache__/bases.cpython-35.pyc | Bin 0 -> 20702 bytes .../__pycache__/builder.cpython-35.pyc | Bin 0 -> 7311 bytes .../__pycache__/exceptions.cpython-35.pyc | Bin 0 -> 2106 bytes .../__pycache__/inference.cpython-35.pyc | Bin 0 -> 10138 bytes .../__pycache__/manager.cpython-35.pyc | Bin 0 -> 12786 bytes .../astroid/__pycache__/mixins.cpython-35.pyc | Bin 0 -> 3898 bytes .../__pycache__/modutils.cpython-35.pyc | Bin 0 -> 18019 bytes .../__pycache__/node_classes.cpython-35.pyc | Bin 0 -> 30941 bytes .../astroid/__pycache__/nodes.cpython-35.pyc | Bin 0 -> 2460 bytes .../__pycache__/protocols.cpython-35.pyc | Bin 0 -> 10455 bytes .../__pycache__/raw_building.cpython-35.pyc | Bin 0 -> 10720 bytes .../__pycache__/rebuilder.cpython-35.pyc | Bin 0 -> 38644 bytes .../__pycache__/scoped_nodes.cpython-35.pyc | Bin 0 -> 42858 bytes .../pymode/libs/astroid/as_string.py | 499 ++ .../pymode/libs/astroid/astpeephole.py | 86 + .../python-mode/pymode/libs/astroid/bases.py | 652 ++ .../builtin_inference.cpython-35.pyc | Bin 0 -> 7980 bytes .../brain/__pycache__/py2gi.cpython-35.pyc | Bin 0 -> 3180 bytes .../__pycache__/py2mechanize.cpython-35.pyc | Bin 0 -> 717 bytes .../__pycache__/py2pytest.cpython-35.pyc | Bin 0 -> 1048 bytes .../brain/__pycache__/py2qt4.cpython-35.pyc | Bin 0 -> 684 bytes .../__pycache__/py2stdlib.cpython-35.pyc | Bin 0 -> 9993 bytes .../brain/__pycache__/pynose.cpython-35.pyc | Bin 0 -> 2119 bytes .../__pycache__/pysix_moves.cpython-35.pyc | Bin 0 -> 8981 bytes .../libs/astroid/brain/builtin_inference.py | 245 + .../pymode/libs/astroid/brain/py2gi.py | 155 + .../pymode/libs/astroid/brain/py2mechanize.py | 18 + .../pymode/libs/astroid/brain/py2pytest.py | 31 + .../pymode/libs/astroid/brain/py2qt4.py | 22 + .../pymode/libs/astroid/brain/py2stdlib.py | 334 + .../pymode/libs/astroid/brain/pynose.py | 79 + .../pymode/libs/astroid/brain/pysix_moves.py | 261 + .../pymode/libs/astroid/builder.py | 240 + .../pymode/libs/astroid/exceptions.py | 51 + .../pymode/libs/astroid/inference.py | 405 + .../pymode/libs/astroid/inspector.py | 273 + .../pymode/libs/astroid/manager.py | 391 + .../python-mode/pymode/libs/astroid/mixins.py | 124 + .../pymode/libs/astroid/modutils.py | 670 ++ .../pymode/libs/astroid/node_classes.py | 966 +++ .../python-mode/pymode/libs/astroid/nodes.py | 74 + .../pymode/libs/astroid/protocols.py | 415 + .../pymode/libs/astroid/raw_building.py | 366 + .../pymode/libs/astroid/rebuilder.py | 926 +++ .../pymode/libs/astroid/scoped_nodes.py | 1484 ++++ .../pymode/libs/astroid/test_utils.py | 218 + .../python-mode/pymode/libs/astroid/utils.py | 239 + .../python-mode/pymode/libs/easy_install.py | 5 + .../pymode/libs/logilab/__init__.py | 1 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 151 bytes .../pymode/libs/logilab/common/__init__.py | 184 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 4798 bytes .../__pycache__/changelog.cpython-35.pyc | Bin 0 -> 8071 bytes .../common/__pycache__/compat.cpython-35.pyc | Bin 0 -> 1684 bytes .../__pycache__/configuration.cpython-35.pyc | Bin 0 -> 36812 bytes .../__pycache__/decorators.cpython-35.pyc | Bin 0 -> 10338 bytes .../__pycache__/deprecation.cpython-35.pyc | Bin 0 -> 7857 bytes .../__pycache__/interface.cpython-35.pyc | Bin 0 -> 1898 bytes .../__pycache__/optik_ext.cpython-35.pyc | Bin 0 -> 13137 bytes .../__pycache__/textutils.cpython-35.pyc | Bin 0 -> 15293 bytes .../common/__pycache__/tree.cpython-35.pyc | Bin 0 -> 11257 bytes .../common/__pycache__/visitor.cpython-35.pyc | Bin 0 -> 3498 bytes .../pymode/libs/logilab/common/cache.py | 114 + .../pymode/libs/logilab/common/changelog.py | 238 + .../pymode/libs/logilab/common/clcommands.py | 334 + .../pymode/libs/logilab/common/compat.py | 78 + .../libs/logilab/common/configuration.py | 1105 +++ .../pymode/libs/logilab/common/daemon.py | 101 + .../pymode/libs/logilab/common/date.py | 335 + .../pymode/libs/logilab/common/debugger.py | 214 + .../pymode/libs/logilab/common/decorators.py | 281 + .../pymode/libs/logilab/common/deprecation.py | 189 + .../pymode/libs/logilab/common/fileutils.py | 404 + .../pymode/libs/logilab/common/graph.py | 282 + .../pymode/libs/logilab/common/interface.py | 71 + .../pymode/libs/logilab/common/logging_ext.py | 195 + .../pymode/libs/logilab/common/modutils.py | 713 ++ .../pymode/libs/logilab/common/optik_ext.py | 392 + .../pymode/libs/logilab/common/optparser.py | 92 + .../pymode/libs/logilab/common/proc.py | 277 + .../pymode/libs/logilab/common/pytest.py | 1202 +++ .../pymode/libs/logilab/common/registry.py | 1125 +++ .../pymode/libs/logilab/common/shellutils.py | 462 ++ .../pymode/libs/logilab/common/sphinx_ext.py | 87 + .../pymode/libs/logilab/common/sphinxutils.py | 122 + .../pymode/libs/logilab/common/table.py | 929 +++ .../pymode/libs/logilab/common/tasksqueue.py | 101 + .../pymode/libs/logilab/common/testlib.py | 1338 +++ .../pymode/libs/logilab/common/textutils.py | 537 ++ .../pymode/libs/logilab/common/tree.py | 369 + .../pymode/libs/logilab/common/umessage.py | 194 + .../libs/logilab/common/ureports/__init__.py | 172 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 5767 bytes .../__pycache__/html_writer.cpython-35.pyc | Bin 0 -> 4708 bytes .../ureports/__pycache__/nodes.cpython-35.pyc | Bin 0 -> 6749 bytes .../__pycache__/text_writer.cpython-35.pyc | Bin 0 -> 5188 bytes .../logilab/common/ureports/docbook_writer.py | 140 + .../logilab/common/ureports/html_writer.py | 133 + .../libs/logilab/common/ureports/nodes.py | 203 + .../logilab/common/ureports/text_writer.py | 145 + .../pymode/libs/logilab/common/urllib2ext.py | 89 + .../pymode/libs/logilab/common/vcgutils.py | 216 + .../pymode/libs/logilab/common/visitor.py | 109 + .../pymode/libs/logilab/common/xmlutils.py | 61 + .../libs/logilab_common-1.0.2-py2.7-nspkg.pth | 1 + .../DESCRIPTION.rst | 153 + .../logilab_common-1.0.2.dist-info/METADATA | 169 + .../logilab_common-1.0.2.dist-info/RECORD | 87 + .../libs/logilab_common-1.0.2.dist-info/WHEEL | 5 + .../metadata.json | 1 + .../namespace_packages.txt | 1 + .../top_level.txt | 1 + .../bundle/python-mode/pymode/libs/mccabe.py | 311 + .../bundle/python-mode/pymode/libs/pep257.py | 1187 +++ .../bundle/python-mode/pymode/libs/pep8.py | 2127 +++++ .../pymode/libs/pkg_resources/__init__.py | 3113 +++++++ .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 103794 bytes .../libs/pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 165 bytes .../_vendor/packaging/__about__.py | 31 + .../_vendor/packaging/__init__.py | 24 + .../__pycache__/__about__.cpython-35.pyc | Bin 0 -> 695 bytes .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 575 bytes .../__pycache__/_compat.cpython-35.pyc | Bin 0 -> 1051 bytes .../__pycache__/_structures.cpython-35.pyc | Bin 0 -> 2971 bytes .../__pycache__/specifiers.cpython-35.pyc | Bin 0 -> 20979 bytes .../__pycache__/version.cpython-35.pyc | Bin 0 -> 11451 bytes .../_vendor/packaging/_compat.py | 40 + .../_vendor/packaging/_structures.py | 78 + .../_vendor/packaging/specifiers.py | 784 ++ .../_vendor/packaging/version.py | 403 + .../pymode/libs/pyflakes/__init__.py | 1 + .../pymode/libs/pyflakes/__main__.py | 5 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 175 bytes .../__pycache__/checker.cpython-35.pyc | Bin 0 -> 29989 bytes .../__pycache__/messages.cpython-35.pyc | Bin 0 -> 6266 bytes .../python-mode/pymode/libs/pyflakes/api.py | 175 + .../pymode/libs/pyflakes/checker.py | 925 +++ .../pymode/libs/pyflakes/messages.py | 134 + .../pymode/libs/pyflakes/reporter.py | 81 + .../pymode/libs/pylama/__init__.py | 11 + .../pymode/libs/pylama/__main__.py | 6 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 417 bytes .../pylama/__pycache__/async.cpython-35.pyc | Bin 0 -> 1911 bytes .../pylama/__pycache__/config.cpython-35.pyc | Bin 0 -> 7011 bytes .../pylama/__pycache__/core.cpython-35.pyc | Bin 0 -> 6194 bytes .../pylama/__pycache__/errors.cpython-35.pyc | Bin 0 -> 2822 bytes .../pylama/__pycache__/main.cpython-35.pyc | Bin 0 -> 2866 bytes .../python-mode/pymode/libs/pylama/async.py | 76 + .../python-mode/pymode/libs/pylama/config.py | 241 + .../python-mode/pymode/libs/pylama/core.py | 200 + .../python-mode/pymode/libs/pylama/errors.py | 97 + .../python-mode/pymode/libs/pylama/hook.py | 111 + .../pymode/libs/pylama/libs/__init__.py | 1 + .../libs/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 184 bytes .../libs/__pycache__/inirama.cpython-35.pyc | Bin 0 -> 11591 bytes .../pymode/libs/pylama/libs/importlib.py | 38 + .../pymode/libs/pylama/libs/inirama.py | 405 + .../pymode/libs/pylama/lint/__init__.py | 19 + .../lint/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 812 bytes .../__pycache__/extensions.cpython-35.pyc | Bin 0 -> 823 bytes .../__pycache__/pylama_mccabe.cpython-35.pyc | Bin 0 -> 1296 bytes .../__pycache__/pylama_pep257.cpython-35.pyc | Bin 0 -> 936 bytes .../__pycache__/pylama_pep8.cpython-35.pyc | Bin 0 -> 2347 bytes .../pylama_pyflakes.cpython-35.pyc | Bin 0 -> 2596 bytes .../pymode/libs/pylama/lint/extensions.py | 39 + .../pymode/libs/pylama/lint/pylama_mccabe.py | 29 + .../pymode/libs/pylama/lint/pylama_pep257.py | 21 + .../pymode/libs/pylama/lint/pylama_pep8.py | 66 + .../libs/pylama/lint/pylama_pyflakes.py | 49 + .../pylama/lint/pylama_pylint/__init__.py | 12 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 380 bytes .../__pycache__/main.cpython-35.pyc | Bin 0 -> 4139 bytes .../libs/pylama/lint/pylama_pylint/main.py | 111 + .../libs/pylama/lint/pylama_pylint/pylint.rc | 23 + .../python-mode/pymode/libs/pylama/main.py | 101 + .../python-mode/pymode/libs/pylama/pytest.py | 87 + .../pymode/libs/pylint/__init__.py | 46 + .../pymode/libs/pylint/__main__.py | 3 + .../pymode/libs/pylint/__pkginfo__.py | 70 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 1344 bytes .../__pycache__/__pkginfo__.cpython-35.pyc | Bin 0 -> 2418 bytes .../pylint/__pycache__/config.cpython-35.pyc | Bin 0 -> 4689 bytes .../__pycache__/interfaces.cpython-35.pyc | Bin 0 -> 3248 bytes .../pylint/__pycache__/lint.cpython-35.pyc | Bin 0 -> 44357 bytes .../pylint/__pycache__/utils.cpython-35.pyc | Bin 0 -> 29911 bytes .../pymode/libs/pylint/checkers/__init__.py | 124 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 3649 bytes .../pymode/libs/pylint/checkers/base.py | 1236 +++ .../pymode/libs/pylint/checkers/classes.py | 982 +++ .../libs/pylint/checkers/design_analysis.py | 331 + .../pymode/libs/pylint/checkers/exceptions.py | 332 + .../pymode/libs/pylint/checkers/format.py | 968 +++ .../pymode/libs/pylint/checkers/imports.py | 413 + .../pymode/libs/pylint/checkers/logging.py | 256 + .../pymode/libs/pylint/checkers/misc.py | 104 + .../pymode/libs/pylint/checkers/newstyle.py | 172 + .../pymode/libs/pylint/checkers/python3.py | 581 ++ .../libs/pylint/checkers/raw_metrics.py | 129 + .../pymode/libs/pylint/checkers/similar.py | 372 + .../pymode/libs/pylint/checkers/spelling.py | 250 + .../pymode/libs/pylint/checkers/stdlib.py | 216 + .../pymode/libs/pylint/checkers/strings.py | 615 ++ .../pymode/libs/pylint/checkers/typecheck.py | 627 ++ .../pymode/libs/pylint/checkers/utils.py | 564 ++ .../pymode/libs/pylint/checkers/variables.py | 1069 +++ .../python-mode/pymode/libs/pylint/config.py | 157 + .../python-mode/pymode/libs/pylint/epylint.py | 177 + .../python-mode/pymode/libs/pylint/gui.py | 531 ++ .../pymode/libs/pylint/interfaces.py | 84 + .../python-mode/pymode/libs/pylint/lint.py | 1397 ++++ .../pymode/libs/pylint/pyreverse/__init__.py | 5 + .../libs/pylint/pyreverse/diadefslib.py | 233 + .../pymode/libs/pylint/pyreverse/diagrams.py | 247 + .../pymode/libs/pylint/pyreverse/main.py | 124 + .../pymode/libs/pylint/pyreverse/utils.py | 132 + .../pymode/libs/pylint/pyreverse/writer.py | 199 + .../pymode/libs/pylint/reporters/__init__.py | 133 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 4600 bytes .../libs/pylint/reporters/guireporter.py | 27 + .../pymode/libs/pylint/reporters/html.py | 101 + .../pymode/libs/pylint/reporters/json.py | 58 + .../pymode/libs/pylint/reporters/text.py | 146 + .../pymode/libs/pylint/testutils.py | 412 + .../python-mode/pymode/libs/pylint/utils.py | 924 +++ .../python-mode/pymode/libs/rope/__init__.py | 18 + .../rope/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 845 bytes .../pymode/libs/rope/base/__init__.py | 8 + .../base/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 329 bytes .../base/__pycache__/arguments.cpython-35.pyc | Bin 0 -> 4315 bytes .../rope/base/__pycache__/ast.cpython-35.pyc | Bin 0 -> 2173 bytes .../base/__pycache__/astutils.cpython-35.pyc | Bin 0 -> 2662 bytes .../base/__pycache__/builtins.cpython-35.pyc | Bin 0 -> 28367 bytes .../base/__pycache__/change.cpython-35.pyc | Bin 0 -> 17235 bytes .../__pycache__/codeanalyze.cpython-35.pyc | Bin 0 -> 12228 bytes .../__pycache__/default_config.cpython-35.pyc | Bin 0 -> 1196 bytes .../base/__pycache__/evaluate.cpython-35.pyc | Bin 0 -> 12759 bytes .../__pycache__/exceptions.cpython-35.pyc | Bin 0 -> 2951 bytes .../__pycache__/fscommands.cpython-35.pyc | Bin 0 -> 10557 bytes .../base/__pycache__/history.cpython-35.pyc | Bin 0 -> 9026 bytes .../base/__pycache__/libutils.cpython-35.pyc | Bin 0 -> 4063 bytes .../base/__pycache__/prefs.cpython-35.pyc | Bin 0 -> 1759 bytes .../base/__pycache__/project.cpython-35.pyc | Bin 0 -> 18523 bytes .../base/__pycache__/pycore.cpython-35.pyc | Bin 0 -> 14375 bytes .../base/__pycache__/pynames.cpython-35.pyc | Bin 0 -> 8267 bytes .../__pycache__/pynamesdef.cpython-35.pyc | Bin 0 -> 2753 bytes .../base/__pycache__/pyobjects.cpython-35.pyc | Bin 0 -> 12763 bytes .../__pycache__/pyobjectsdef.cpython-35.pyc | Bin 0 -> 22167 bytes .../base/__pycache__/pyscopes.cpython-35.pyc | Bin 0 -> 13069 bytes .../resourceobserver.cpython-35.pyc | Bin 0 -> 10912 bytes .../base/__pycache__/resources.cpython-35.pyc | Bin 0 -> 10042 bytes .../base/__pycache__/simplify.cpython-35.pyc | Bin 0 -> 1910 bytes .../base/__pycache__/stdmods.cpython-35.pyc | Bin 0 -> 1967 bytes .../__pycache__/taskhandle.cpython-35.pyc | Bin 0 -> 5344 bytes .../base/__pycache__/worder.cpython-35.pyc | Bin 0 -> 20120 bytes .../pymode/libs/rope/base/arguments.py | 111 + .../python-mode/pymode/libs/rope/base/ast.py | 76 + .../pymode/libs/rope/base/astutils.py | 64 + .../pymode/libs/rope/base/builtins.py | 809 ++ .../pymode/libs/rope/base/change.py | 450 + .../pymode/libs/rope/base/codeanalyze.py | 362 + .../pymode/libs/rope/base/default_config.py | 103 + .../pymode/libs/rope/base/evaluate.py | 332 + .../pymode/libs/rope/base/exceptions.py | 61 + .../pymode/libs/rope/base/fscommands.py | 288 + .../pymode/libs/rope/base/history.py | 235 + .../pymode/libs/rope/base/libutils.py | 122 + .../pymode/libs/rope/base/oi/__init__.py | 38 + .../oi/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 1850 bytes .../base/oi/__pycache__/doa.cpython-35.pyc | Bin 0 -> 6110 bytes .../oi/__pycache__/docstrings.cpython-35.pyc | Bin 0 -> 7111 bytes .../oi/__pycache__/memorydb.cpython-35.pyc | Bin 0 -> 5624 bytes .../oi/__pycache__/objectdb.cpython-35.pyc | Bin 0 -> 7653 bytes .../oi/__pycache__/objectinfo.cpython-35.pyc | Bin 0 -> 9944 bytes .../base/oi/__pycache__/soa.cpython-35.pyc | Bin 0 -> 5558 bytes .../base/oi/__pycache__/soi.cpython-35.pyc | Bin 0 -> 6718 bytes .../oi/__pycache__/transform.cpython-35.pyc | Bin 0 -> 12942 bytes .../pymode/libs/rope/base/oi/doa.py | 166 + .../pymode/libs/rope/base/oi/docstrings.py | 226 + .../pymode/libs/rope/base/oi/memorydb.py | 127 + .../pymode/libs/rope/base/oi/objectdb.py | 179 + .../pymode/libs/rope/base/oi/objectinfo.py | 232 + .../pymode/libs/rope/base/oi/runmod.py | 222 + .../pymode/libs/rope/base/oi/soa.py | 139 + .../pymode/libs/rope/base/oi/soi.py | 243 + .../pymode/libs/rope/base/oi/transform.py | 285 + .../pymode/libs/rope/base/prefs.py | 41 + .../pymode/libs/rope/base/project.py | 491 ++ .../pymode/libs/rope/base/pycore.py | 346 + .../pymode/libs/rope/base/pynames.py | 201 + .../pymode/libs/rope/base/pynamesdef.py | 55 + .../pymode/libs/rope/base/pyobjects.py | 311 + .../pymode/libs/rope/base/pyobjectsdef.py | 560 ++ .../pymode/libs/rope/base/pyscopes.py | 314 + .../pymode/libs/rope/base/resourceobserver.py | 272 + .../pymode/libs/rope/base/resources.py | 243 + .../pymode/libs/rope/base/simplify.py | 55 + .../pymode/libs/rope/base/stdmods.py | 61 + .../pymode/libs/rope/base/taskhandle.py | 131 + .../pymode/libs/rope/base/utils/__init__.py | 83 + .../utils/__pycache__/__init__.cpython-35.pyc | Bin 0 -> 3393 bytes .../__pycache__/datastructures.cpython-35.pyc | Bin 0 -> 2757 bytes .../utils/__pycache__/pycompat.cpython-35.pyc | Bin 0 -> 1355 bytes .../libs/rope/base/utils/datastructures.py | 67 + .../pymode/libs/rope/base/utils/pycompat.py | 45 + .../pymode/libs/rope/base/worder.py | 525 ++ .../pymode/libs/rope/contrib/__init__.py | 7 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 332 bytes .../__pycache__/autoimport.cpython-35.pyc | Bin 0 -> 7953 bytes .../__pycache__/codeassist.cpython-35.pyc | Bin 0 -> 25051 bytes .../contrib/__pycache__/findit.cpython-35.pyc | Bin 0 -> 4532 bytes .../__pycache__/fixsyntax.cpython-35.pyc | Bin 0 -> 6815 bytes .../__pycache__/generate.cpython-35.pyc | Bin 0 -> 15065 bytes .../pymode/libs/rope/contrib/autoimport.py | 222 + .../pymode/libs/rope/contrib/changestack.py | 52 + .../pymode/libs/rope/contrib/codeassist.py | 695 ++ .../pymode/libs/rope/contrib/finderrors.py | 91 + .../pymode/libs/rope/contrib/findit.py | 114 + .../pymode/libs/rope/contrib/fixmodnames.py | 69 + .../pymode/libs/rope/contrib/fixsyntax.py | 181 + .../pymode/libs/rope/contrib/generate.py | 362 + .../pymode/libs/rope/refactor/__init__.py | 55 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 2275 bytes .../change_signature.cpython-35.pyc | Bin 0 -> 14102 bytes .../__pycache__/extract.cpython-35.pyc | Bin 0 -> 30272 bytes .../__pycache__/functionutils.cpython-35.pyc | Bin 0 -> 7974 bytes .../__pycache__/inline.cpython-35.pyc | Bin 0 -> 22431 bytes .../refactor/__pycache__/move.cpython-35.pyc | Bin 0 -> 26725 bytes .../__pycache__/occurrences.cpython-35.pyc | Bin 0 -> 15205 bytes .../__pycache__/patchedast.cpython-35.pyc | Bin 0 -> 29065 bytes .../__pycache__/rename.cpython-35.pyc | Bin 0 -> 8611 bytes .../__pycache__/restructure.cpython-35.pyc | Bin 0 -> 11199 bytes .../__pycache__/similarfinder.cpython-35.pyc | Bin 0 -> 14364 bytes .../__pycache__/sourceutils.cpython-35.pyc | Bin 0 -> 2968 bytes .../__pycache__/suites.cpython-35.pyc | Bin 0 -> 5767 bytes .../__pycache__/topackage.cpython-35.pyc | Bin 0 -> 1589 bytes .../__pycache__/usefunction.cpython-35.pyc | Bin 0 -> 7218 bytes .../__pycache__/wildcards.cpython-35.pyc | Bin 0 -> 6967 bytes .../libs/rope/refactor/change_signature.py | 352 + .../libs/rope/refactor/encapsulate_field.py | 209 + .../pymode/libs/rope/refactor/extract.py | 810 ++ .../libs/rope/refactor/functionutils.py | 222 + .../rope/refactor/importutils/__init__.py | 316 + .../__pycache__/__init__.cpython-35.pyc | Bin 0 -> 10893 bytes .../__pycache__/actions.cpython-35.pyc | Bin 0 -> 13209 bytes .../__pycache__/importinfo.cpython-35.pyc | Bin 0 -> 8195 bytes .../__pycache__/module_imports.cpython-35.pyc | Bin 0 -> 18615 bytes .../libs/rope/refactor/importutils/actions.py | 361 + .../rope/refactor/importutils/importinfo.py | 201 + .../refactor/importutils/module_imports.py | 487 ++ .../pymode/libs/rope/refactor/inline.py | 625 ++ .../libs/rope/refactor/introduce_factory.py | 135 + .../libs/rope/refactor/introduce_parameter.py | 96 + .../pymode/libs/rope/refactor/localtofield.py | 49 + .../libs/rope/refactor/method_object.py | 90 + .../pymode/libs/rope/refactor/move.py | 784 ++ .../pymode/libs/rope/refactor/multiproject.py | 78 + .../pymode/libs/rope/refactor/occurrences.py | 402 + .../pymode/libs/rope/refactor/patchedast.py | 829 ++ .../pymode/libs/rope/refactor/rename.py | 220 + .../pymode/libs/rope/refactor/restructure.py | 307 + .../libs/rope/refactor/similarfinder.py | 370 + .../pymode/libs/rope/refactor/sourceutils.py | 91 + .../pymode/libs/rope/refactor/suites.py | 158 + .../pymode/libs/rope/refactor/topackage.py | 32 + .../pymode/libs/rope/refactor/usefunction.py | 174 + .../pymode/libs/rope/refactor/wildcards.py | 178 + .../bundle/python-mode/pymode/libs/six.py | 838 ++ vim-plugins/bundle/python-mode/pymode/lint.py | 83 + vim-plugins/bundle/python-mode/pymode/rope.py | 935 +++ vim-plugins/bundle/python-mode/pymode/run.py | 80 + .../bundle/python-mode/pymode/utils.py | 39 + .../bundle/python-mode/pymode/virtualenv.py | 75 + .../bundle/python-mode/python-mode.yaml | 268 + .../bundle/python-mode/syntax/pyrex.vim | 71 + .../bundle/python-mode/syntax/python.vim | 404 + vim-plugins/bundle/python-mode/t/docs.vim | 24 + vim-plugins/bundle/python-mode/t/ftplugin.vim | 18 + vim-plugins/bundle/python-mode/t/indent.vim | 23 + vim-plugins/bundle/python-mode/t/lint.vim | 30 + vim-plugins/bundle/python-mode/t/plugin.vim | 58 + vim-plugins/bundle/python-mode/t/rope.vim | 34 + vim-plugins/bundle/python-mode/t/syntax.vim | 34 + vim-plugins/bundle/python-mode/t/test.py | 8 + vim-plugins/bundle/python-mode/t/trouble.vim | 15 + .../bundle/python-mode/t/virtualenv.vim | 28 + vim-plugins/bundle/supertab/Makefile | 17 + vim-plugins/bundle/supertab/README.rst | 172 + vim-plugins/bundle/supertab/doc/supertab.txt | 473 ++ vim-plugins/bundle/supertab/ftplugin/html.vim | 61 + vim-plugins/bundle/supertab/ftplugin/xml.vim | 45 + .../bundle/supertab/plugin/supertab.vim | 1144 +++ vim-plugins/bundle/syntastic/CONTRIBUTING.md | 105 + vim-plugins/bundle/syntastic/LICENCE | 13 + vim-plugins/bundle/syntastic/README.markdown | 545 ++ .../bundle/syntastic/_assets/screenshot_1.png | Bin 0 -> 92425 bytes .../bundle/syntastic/autoload/syntastic/c.vim | 341 + .../syntastic/autoload/syntastic/log.vim | 222 + .../autoload/syntastic/postprocess.vim | 73 + .../autoload/syntastic/preprocess.vim | 614 ++ .../syntastic/autoload/syntastic/util.vim | 622 ++ .../syntastic/doc/syntastic-checkers.txt | 7278 +++++++++++++++++ .../bundle/syntastic/doc/syntastic.txt | 1207 +++ vim-plugins/bundle/syntastic/doc/tags | 598 ++ .../bundle/syntastic/plugin/syntastic.vim | 792 ++ .../plugin/syntastic/autoloclist.vim | 55 + .../syntastic/plugin/syntastic/balloons.vim | 59 + .../syntastic/plugin/syntastic/checker.vim | 282 + .../syntastic/plugin/syntastic/cursor.vim | 138 + .../plugin/syntastic/highlighting.vim | 104 + .../syntastic/plugin/syntastic/loclist.vim | 445 + .../syntastic/plugin/syntastic/modemap.vim | 118 + .../syntastic/plugin/syntastic/notifiers.vim | 86 + .../syntastic/plugin/syntastic/registry.vim | 439 + .../syntastic/plugin/syntastic/signs.vim | 138 + .../syntax_checkers/actionscript/mxmlc.vim | 67 + .../syntastic/syntax_checkers/ada/gcc.vim | 47 + .../syntax_checkers/ansible/ansible_lint.vim | 54 + .../syntax_checkers/apiblueprint/drafter.vim | 66 + .../applescript/osacompile.vim | 49 + .../syntax_checkers/asciidoc/asciidoc.vim | 47 + .../syntax_checkers/asciidoc/proselint.vim | 23 + .../syntastic/syntax_checkers/asl/iasl.vim | 59 + .../syntastic/syntax_checkers/asm/gcc.vim | 61 + .../syntax_checkers/bemhtml/bemhtmllint.vim | 35 + .../syntastic/syntax_checkers/bro/bro.vim | 58 + .../syntastic/syntax_checkers/c/avrgcc.vim | 59 + .../syntax_checkers/c/checkpatch.vim | 60 + .../syntax_checkers/c/clang_check.vim | 64 + .../syntax_checkers/c/clang_tidy.vim | 64 + .../syntastic/syntax_checkers/c/cppcheck.vim | 62 + .../syntastic/syntax_checkers/c/gcc.vim | 59 + .../syntastic/syntax_checkers/c/make.vim | 61 + .../syntastic/syntax_checkers/c/oclint.vim | 65 + .../syntastic/syntax_checkers/c/pc_lint.vim | 66 + .../syntastic/syntax_checkers/c/sparse.vim | 48 + .../syntastic/syntax_checkers/c/splint.vim | 55 + .../syntastic/syntax_checkers/cabal/cabal.vim | 55 + .../syntax_checkers/chef/foodcritic.vim | 39 + .../syntastic/syntax_checkers/co/coco.vim | 47 + .../syntastic/syntax_checkers/cobol/cobc.vim | 47 + .../syntax_checkers/coffee/coffee.vim | 58 + .../syntax_checkers/coffee/coffeelint.vim | 44 + .../syntastic/syntax_checkers/coq/coqtop.vim | 40 + .../syntastic/syntax_checkers/cpp/avrgcc.vim | 24 + .../syntax_checkers/cpp/clang_check.vim | 22 + .../syntax_checkers/cpp/clang_tidy.vim | 22 + .../syntax_checkers/cpp/cppcheck.vim | 22 + .../syntastic/syntax_checkers/cpp/cpplint.vim | 52 + .../syntastic/syntax_checkers/cpp/gcc.vim | 56 + .../syntastic/syntax_checkers/cpp/oclint.vim | 22 + .../syntastic/syntax_checkers/cpp/pc_lint.vim | 23 + .../syntastic/syntax_checkers/cpp/verapp.vim | 48 + .../syntastic/syntax_checkers/cs/mcs.vim | 39 + .../syntastic/syntax_checkers/css/csslint.vim | 47 + .../syntax_checkers/css/mixedindentlint.vim | 22 + .../syntastic/syntax_checkers/css/phpcs.vim | 23 + .../syntax_checkers/css/prettycss.vim | 61 + .../syntastic/syntax_checkers/css/recess.vim | 24 + .../syntax_checkers/css/stylelint.vim | 47 + .../syntax_checkers/cucumber/cucumber.vim | 42 + .../syntastic/syntax_checkers/cuda/nvcc.vim | 81 + .../syntastic/syntax_checkers/d/dmd.vim | 132 + .../syntax_checkers/dart/dartanalyzer.vim | 76 + .../syntastic/syntax_checkers/docbk/igor.vim | 55 + .../syntax_checkers/docbk/xmllint.vim | 23 + .../dockerfile/dockerfile_lint.vim | 53 + .../syntax_checkers/dustjs/swiffer.vim | 38 + .../syntax_checkers/elixir/elixir.vim | 56 + .../erlang/erlang_check_file.erl | 95 + .../syntax_checkers/erlang/escript.vim | 61 + .../syntax_checkers/erlang/syntaxerl.vim | 42 + .../syntastic/syntax_checkers/eruby/ruby.vim | 82 + .../syntax_checkers/fortran/gfortran.vim | 99 + .../syntastic/syntax_checkers/glsl/cgc.vim | 81 + .../syntastic/syntax_checkers/go/go.vim | 103 + .../syntastic/syntax_checkers/go/gofmt.vim | 45 + .../syntastic/syntax_checkers/go/golint.vim | 42 + .../syntax_checkers/go/gometalinter.vim | 53 + .../syntastic/syntax_checkers/go/gotype.vim | 48 + .../syntastic/syntax_checkers/go/govet.vim | 48 + .../syntastic/syntax_checkers/haml/haml.vim | 46 + .../syntax_checkers/haml/haml_lint.vim | 37 + .../syntax_checkers/handlebars/handlebars.vim | 43 + .../syntax_checkers/haskell/hdevtools.vim | 56 + .../syntax_checkers/haskell/hlint.vim | 41 + .../syntax_checkers/haskell/scan.vim | 43 + .../syntastic/syntax_checkers/haxe/haxe.vim | 63 + .../syntax_checkers/help/proselint.vim | 23 + .../syntastic/syntax_checkers/hss/hss.vim | 38 + .../syntastic/syntax_checkers/html/eslint.vim | 23 + .../syntax_checkers/html/gjslint.vim | 23 + .../syntax_checkers/html/htmlhint.vim | 46 + .../syntastic/syntax_checkers/html/jshint.vim | 50 + .../syntax_checkers/html/proselint.vim | 23 + .../syntax_checkers/html/textlint.vim | 23 + .../syntastic/syntax_checkers/html/tidy.vim | 212 + .../syntax_checkers/html/validator.vim | 69 + .../syntastic/syntax_checkers/html/w3.vim | 62 + .../syntax_checkers/jade/jade_lint.vim | 24 + .../syntax_checkers/java/checkstyle.vim | 85 + .../syntastic/syntax_checkers/java/javac.vim | 427 + .../javascript/closurecompiler.vim | 76 + .../syntax_checkers/javascript/eslint.vim | 78 + .../syntax_checkers/javascript/flow.vim | 67 + .../syntax_checkers/javascript/gjslint.vim | 46 + .../syntax_checkers/javascript/jscs.vim | 53 + .../syntax_checkers/javascript/jshint.vim | 60 + .../syntax_checkers/javascript/jsl.vim | 48 + .../syntax_checkers/javascript/jslint.vim | 51 + .../syntax_checkers/javascript/jsxhint.vim | 56 + .../javascript/mixedindentlint.vim | 40 + .../syntax_checkers/javascript/standard.vim | 55 + .../syntax_checkers/javascript/tern_lint.vim | 53 + .../syntax_checkers/json/jsonlint.vim | 43 + .../syntax_checkers/json/jsonval.vim | 41 + .../syntax_checkers/less/less-lint.coffee | 41 + .../syntax_checkers/less/less-lint.js | 57 + .../syntastic/syntax_checkers/less/lessc.vim | 59 + .../syntastic/syntax_checkers/less/recess.vim | 44 + .../syntastic/syntax_checkers/lex/flex.vim | 50 + .../syntastic/syntax_checkers/limbo/limbo.vim | 46 + .../syntastic/syntax_checkers/lisp/clisp.vim | 57 + .../syntastic/syntax_checkers/llvm/llvm.vim | 39 + .../syntastic/syntax_checkers/lua/luac.vim | 65 + .../syntax_checkers/lua/luacheck.vim | 67 + .../syntax_checkers/markdown/mdl.vim | 45 + .../syntax_checkers/markdown/proselint.vim | 23 + .../syntax_checkers/markdown/textlint.vim | 23 + .../syntax_checkers/matlab/mlint.vim | 41 + .../syntastic/syntax_checkers/mercury/mmc.vim | 49 + .../syntastic/syntax_checkers/nasm/nasm.vim | 41 + .../syntastic/syntax_checkers/nix/nix.vim | 45 + .../syntastic/syntax_checkers/nroff/igor.vim | 23 + .../syntax_checkers/nroff/mandoc.vim | 41 + .../syntax_checkers/nroff/proselint.vim | 23 + .../syntastic/syntax_checkers/objc/gcc.vim | 59 + .../syntastic/syntax_checkers/objc/oclint.vim | 22 + .../syntastic/syntax_checkers/objcpp/gcc.vim | 59 + .../syntax_checkers/objcpp/oclint.vim | 22 + .../syntax_checkers/ocaml/camlp4o.vim | 130 + .../syntastic/syntax_checkers/perl/perl.vim | 94 + .../syntax_checkers/perl/perlcritic.vim | 52 + .../syntax_checkers/perl/podchecker.vim | 23 + .../syntastic/syntax_checkers/php/php.vim | 52 + .../syntastic/syntax_checkers/php/phpcs.vim | 41 + .../syntastic/syntax_checkers/php/phplint.vim | 91 + .../syntastic/syntax_checkers/php/phpmd.vim | 77 + .../syntastic/syntax_checkers/po/msgfmt.vim | 50 + .../syntax_checkers/pod/podchecker.vim | 51 + .../syntax_checkers/pod/proselint.vim | 23 + .../syntax_checkers/pug/pug_lint.vim | 40 + .../syntax_checkers/puppet/puppet.vim | 47 + .../syntax_checkers/puppet/puppetlint.vim | 52 + .../syntastic/syntax_checkers/python/codec.py | 31 + .../syntax_checkers/python/compile.py | 13 + .../syntax_checkers/python/flake8.vim | 72 + .../syntax_checkers/python/frosted.vim | 63 + .../syntastic/syntax_checkers/python/mypy.vim | 36 + .../syntax_checkers/python/pep257.vim | 23 + .../syntastic/syntax_checkers/python/pep8.vim | 23 + .../syntax_checkers/python/prospector.vim | 73 + .../syntax_checkers/python/py3kwarn.vim | 36 + .../syntax_checkers/python/pycodestyle.vim | 48 + .../syntax_checkers/python/pydocstyle.vim | 66 + .../syntax_checkers/python/pyflakes.vim | 74 + .../syntax_checkers/python/pylama.vim | 79 + .../syntax_checkers/python/pylint.vim | 98 + .../syntax_checkers/python/python.vim | 57 + .../syntastic/syntax_checkers/qml/qmllint.vim | 39 + .../syntastic/syntax_checkers/r/lint.vim | 82 + .../syntastic/syntax_checkers/r/lintr.vim | 81 + .../syntastic/syntax_checkers/r/svtools.vim | 74 + .../syntax_checkers/racket/code-ayatollah.vim | 62 + .../syntax_checkers/racket/racket.vim | 51 + .../syntastic/syntax_checkers/rmd/lintr.vim | 23 + .../syntastic/syntax_checkers/rnc/rnv.vim | 38 + .../syntax_checkers/rst/proselint.vim | 23 + .../syntax_checkers/rst/rst2pseudoxml.vim | 65 + .../syntax_checkers/rst/rstcheck.vim | 50 + .../syntastic/syntax_checkers/rst/sphinx.vim | 80 + .../syntastic/syntax_checkers/ruby/flog.vim | 72 + .../syntastic/syntax_checkers/ruby/jruby.vim | 50 + .../syntax_checkers/ruby/macruby.vim | 49 + .../syntastic/syntax_checkers/ruby/mri.vim | 82 + .../syntastic/syntax_checkers/ruby/reek.vim | 56 + .../syntax_checkers/ruby/rubocop.vim | 57 + .../syntax_checkers/ruby/rubylint.vim | 45 + .../syntastic/syntax_checkers/sass/sass.vim | 84 + .../syntax_checkers/sass/sass_lint.vim | 51 + .../syntastic/syntax_checkers/sass/sassc.vim | 38 + .../syntastic/syntax_checkers/scala/fsc.vim | 49 + .../syntax_checkers/scala/scalac.vim | 43 + .../syntax_checkers/scala/scalastyle.vim | 77 + .../syntax_checkers/scss/mixedindentlint.vim | 22 + .../syntastic/syntax_checkers/scss/sass.vim | 23 + .../syntax_checkers/scss/sass_lint.vim | 23 + .../syntastic/syntax_checkers/scss/sassc.vim | 23 + .../syntax_checkers/scss/scss_lint.vim | 64 + .../syntax_checkers/scss/stylelint.vim | 23 + .../syntastic/syntax_checkers/sh/bashate.vim | 48 + .../syntax_checkers/sh/checkbashisms.vim | 42 + .../syntastic/syntax_checkers/sh/sh.vim | 93 + .../syntax_checkers/sh/shellcheck.vim | 66 + .../syntax_checkers/slim/slim_lint.vim | 39 + .../syntastic/syntax_checkers/slim/slimrb.vim | 55 + .../syntastic/syntax_checkers/sml/smlnj.vim | 47 + .../syntax_checkers/solidity/solc.vim | 38 + .../syntax_checkers/spec/rpmlint.vim | 43 + .../syntastic/syntax_checkers/sql/sqlint.vim | 50 + .../syntax_checkers/stylus/stylint.vim | 55 + .../syntax_checkers/tcl/nagelfar.vim | 44 + .../syntastic/syntax_checkers/tex/chktex.vim | 52 + .../syntastic/syntax_checkers/tex/lacheck.vim | 40 + .../syntax_checkers/tex/proselint.vim | 23 + .../syntax_checkers/texinfo/makeinfo.vim | 47 + .../syntax_checkers/texinfo/proselint.vim | 23 + .../syntax_checkers/text/atdtool.vim | 61 + .../syntastic/syntax_checkers/text/igor.vim | 23 + .../syntax_checkers/text/language_check.vim | 37 + .../syntax_checkers/text/proselint.vim | 45 + .../syntax_checkers/text/textlint.vim | 42 + .../syntastic/syntax_checkers/trig/rapper.vim | 23 + .../syntax_checkers/turtle/rapper.vim | 46 + .../syntastic/syntax_checkers/turtle/ttl.vim | 43 + .../syntax_checkers/twig/twiglint.vim | 41 + .../syntax_checkers/typescript/eslint.vim | 23 + .../syntax_checkers/typescript/tslint.vim | 51 + .../syntastic/syntax_checkers/vala/valac.vim | 86 + .../syntax_checkers/verilog/iverilog.vim | 38 + .../syntax_checkers/verilog/verilator.vim | 42 + .../syntastic/syntax_checkers/vhdl/ghdl.vim | 38 + .../syntastic/syntax_checkers/vhdl/vcom.vim | 55 + .../syntastic/syntax_checkers/vim/vimlint.vim | 107 + .../syntastic/syntax_checkers/vim/vint.vim | 55 + .../syntax_checkers/xhtml/jshint.vim | 23 + .../syntax_checkers/xhtml/proselint.vim | 23 + .../syntastic/syntax_checkers/xhtml/tidy.vim | 92 + .../syntastic/syntax_checkers/xml/plutil.vim | 42 + .../syntastic/syntax_checkers/xml/xmllint.vim | 54 + .../syntax_checkers/xquery/basex.vim | 51 + .../syntax_checkers/xslt/xmllint.vim | 23 + .../syntastic/syntax_checkers/yacc/bison.vim | 55 + .../syntastic/syntax_checkers/yaml/jsyaml.vim | 48 + .../syntax_checkers/yaml/yamllint.vim | 52 + .../syntastic/syntax_checkers/yaml/yamlxs.vim | 72 + .../syntastic/syntax_checkers/yang/pyang.vim | 46 + .../syntax_checkers/z80/z80syntaxchecker.vim | 39 + .../syntastic/syntax_checkers/zpt/zptlint.vim | 42 + .../syntastic/syntax_checkers/zsh/zsh.vim | 38 + vim-plugins/bundle/vim-airline/.travis.yml | 8 + vim-plugins/bundle/vim-airline/CHANGELOG.md | 120 + .../bundle/vim-airline/CONTRIBUTING.md | 32 + vim-plugins/bundle/vim-airline/Gemfile | 2 + .../bundle/vim-airline/ISSUE_TEMPLATE.md | 21 + vim-plugins/bundle/vim-airline/LICENSE | 21 + vim-plugins/bundle/vim-airline/README.md | 245 + vim-plugins/bundle/vim-airline/Rakefile | 14 + .../bundle/vim-airline/autoload/airline.vim | 195 + .../vim-airline/autoload/airline/builder.vim | 205 + .../vim-airline/autoload/airline/debug.vim | 52 + .../autoload/airline/extensions.vim | 318 + .../autoload/airline/extensions/ale.vim | 36 + .../autoload/airline/extensions/branch.vim | 403 + .../airline/extensions/bufferline.vim | 25 + .../autoload/airline/extensions/capslock.vim | 17 + .../autoload/airline/extensions/commandt.vim | 18 + .../autoload/airline/extensions/csv.vim | 33 + .../autoload/airline/extensions/ctrlp.vim | 82 + .../autoload/airline/extensions/ctrlspace.vim | 19 + .../autoload/airline/extensions/default.vim | 101 + .../autoload/airline/extensions/eclim.vim | 62 + .../autoload/airline/extensions/example.vim | 56 + .../autoload/airline/extensions/hunks.vim | 96 + .../autoload/airline/extensions/neomake.vim | 25 + .../autoload/airline/extensions/netrw.vim | 34 + .../autoload/airline/extensions/nrrwrgn.vim | 57 + .../autoload/airline/extensions/obsession.vim | 22 + .../autoload/airline/extensions/po.vim | 91 + .../airline/extensions/promptline.vim | 35 + .../autoload/airline/extensions/quickfix.vim | 53 + .../autoload/airline/extensions/syntastic.vim | 21 + .../autoload/airline/extensions/tabline.vim | 193 + .../airline/extensions/tabline/autoshow.vim | 55 + .../airline/extensions/tabline/buffers.vim | 251 + .../airline/extensions/tabline/buflist.vim | 44 + .../airline/extensions/tabline/ctrlspace.vim | 150 + .../extensions/tabline/formatters/default.vim | 41 + .../tabline/formatters/unique_tail.vim | 34 + .../formatters/unique_tail_improved.vim | 91 + .../airline/extensions/tabline/tabs.vim | 112 + .../autoload/airline/extensions/tagbar.vim | 47 + .../autoload/airline/extensions/tmuxline.vim | 28 + .../autoload/airline/extensions/undotree.vim | 29 + .../autoload/airline/extensions/unicode.vim | 24 + .../autoload/airline/extensions/unite.vim | 25 + .../airline/extensions/virtualenv.vim | 31 + .../airline/extensions/whitespace.vim | 157 + .../airline/extensions/windowswap.vim | 29 + .../autoload/airline/extensions/wordcount.vim | 39 + .../wordcount/formatters/default.vim | 60 + .../autoload/airline/extensions/ycm.vim | 38 + .../autoload/airline/highlighter.vim | 187 + .../vim-airline/autoload/airline/init.vim | 154 + .../vim-airline/autoload/airline/msdos.vim | 59 + .../vim-airline/autoload/airline/parts.vim | 99 + .../vim-airline/autoload/airline/section.vim | 85 + .../vim-airline/autoload/airline/themes.vim | 73 + .../autoload/airline/themes/dark.vim | 104 + .../vim-airline/autoload/airline/util.vim | 107 + .../bundle/vim-airline/doc/airline.txt | 1088 +++ vim-plugins/bundle/vim-airline/doc/tags | 54 + .../bundle/vim-airline/plugin/airline.vim | 143 + vim-plugins/bundle/vim-airline/t/airline.vim | 87 + vim-plugins/bundle/vim-airline/t/builder.vim | 106 + vim-plugins/bundle/vim-airline/t/commands.vim | 35 + .../vim-airline/t/extensions_default.vim | 31 + .../bundle/vim-airline/t/highlighter.vim | 21 + vim-plugins/bundle/vim-airline/t/init.vim | 78 + vim-plugins/bundle/vim-airline/t/parts.vim | 39 + vim-plugins/bundle/vim-airline/t/section.vim | 81 + vim-plugins/bundle/vim-airline/t/themes.vim | 68 + vim-plugins/bundle/vim-airline/t/util.vim | 54 + .../vim-commentary/CONTRIBUTING.markdown | 1 + .../bundle/vim-commentary/README.markdown | 51 + .../bundle/vim-commentary/doc/commentary.txt | 32 + vim-plugins/bundle/vim-commentary/doc/tags | 8 + .../vim-commentary/plugin/commentary.vim | 103 + .../vim-htmldjango_omnicomplete/CHANGELOG | 27 + .../vim-htmldjango_omnicomplete/README.md | 130 + .../autoload/htmldjangocomplete.vim | 504 ++ .../examples/block_eample.png | Bin 0 -> 17756 bytes .../examples/extends_example.png | Bin 0 -> 34896 bytes .../examples/url_example.png | Bin 0 -> 38857 bytes .../vim-indent-object/doc/indent-object.txt | 126 + .../plugin/indent-object.vim | 234 + vim-plugins/bundle/vim-lion/README.md | 99 + vim-plugins/bundle/vim-lion/doc/lion.txt | 69 + vim-plugins/bundle/vim-lion/plugin/lion.vim | 211 + vim-plugins/bundle/vim-markdown/.travis.yml | 31 + .../bundle/vim-markdown/CONTRIBUTING.md | 58 + vim-plugins/bundle/vim-markdown/Makefile | 82 + vim-plugins/bundle/vim-markdown/README.md | 358 + .../vim-markdown/after/ftplugin/markdown.vim | 160 + .../bundle/vim-markdown/doc/vim-markdown.txt | 452 + .../bundle/vim-markdown/ftdetect/markdown.vim | 3 + .../bundle/vim-markdown/ftplugin/markdown.vim | 749 ++ .../bundle/vim-markdown/indent/markdown.vim | 75 + .../vim-markdown/registry/markdown.yaml | 9 + .../bundle/vim-markdown/syntax/markdown.vim | 175 + .../bundle/vim-markdown/test/README.md | 5 + .../vim-markdown/test/folding-toc.vader | 178 + .../bundle/vim-markdown/test/folding.vader | 53 + .../bundle/vim-markdown/test/ge_test.md | 1 + .../test/indent-new-list-item.vader | 15 + .../bundle/vim-markdown/test/indent.md | 26 + .../bundle/vim-markdown/test/indent.vader | 73 + .../bundle/vim-markdown/test/map.vader | 153 + .../vim-markdown/test/python-folding.vader | 85 + .../bundle/vim-markdown/test/run-tests.sh | 16 + .../vim-markdown/test/syntax-singleline.vader | 158 + .../bundle/vim-markdown/test/syntax.md | 89 + .../bundle/vim-markdown/test/syntax.vader | 1250 +++ .../vim-markdown/test/table-format.vader | 44 + .../vim-markdown/test/toc-autofit.vader | 53 + .../bundle/vim-markdown/test/toc.vader | 185 + vim-plugins/bundle/vim-markdown/test/vimrc | 27 + ...Powerline_default_default_compatible.cache | 4 + vim-plugins/bundle/vim-powerline/README.rst | 114 + .../bundle/vim-powerline/autoload/Pl.vim | 184 + .../vim-powerline/autoload/Pl/Colorscheme.vim | 145 + .../bundle/vim-powerline/autoload/Pl/Hi.vim | 140 + .../vim-powerline/autoload/Pl/Match.vim | 43 + .../bundle/vim-powerline/autoload/Pl/Mod.vim | 40 + .../vim-powerline/autoload/Pl/Parser.vim | 371 + .../vim-powerline/autoload/Pl/Segment.vim | 188 + .../vim-powerline/autoload/Pl/Theme.vim | 100 + .../Powerline/Colorschemes/default.vim | 166 + .../Powerline/Colorschemes/solarized.vim | 154 + .../Powerline/Colorschemes/solarized16.vim | 195 + .../Powerline/Colorschemes/solarized256.vim | 195 + .../autoload/Powerline/Functions.vim | 141 + .../autoload/Powerline/Functions/ft_man.vim | 12 + .../autoload/Powerline/Functions/fugitive.vim | 7 + .../autoload/Powerline/Functions/hgrev.vim | 17 + .../Powerline/Functions/syntastic.vim | 16 + .../autoload/Powerline/Matches.vim | 13 + .../autoload/Powerline/Segments.vim | 30 + .../autoload/Powerline/Segments/ctrlp.vim | 20 + .../autoload/Powerline/Segments/ft_man.vim | 3 + .../autoload/Powerline/Segments/fugitive.vim | 5 + .../autoload/Powerline/Segments/hgrev.vim | 4 + .../autoload/Powerline/Segments/rvm.vim | 6 + .../autoload/Powerline/Segments/syntastic.vim | 5 + .../autoload/Powerline/Segments/tagbar.vim | 6 + .../Powerline/Segments/virtualenv.vim | 5 + .../autoload/Powerline/Themes/default.vim | 116 + .../autoload/Powerline/Themes/solarized16.vim | 114 + .../Powerline/Themes/solarized256.vim | 119 + .../bundle/vim-powerline/doc/Powerline.txt | 439 + vim-plugins/bundle/vim-powerline/doc/tags | 35 + .../fontpatcher/PowerlineSymbols.sfd | 319 + .../vim-powerline/fontpatcher/README.rst | 164 + .../vim-powerline/fontpatcher/fontpatcher | 240 + .../bundle/vim-powerline/plugin/Powerline.vim | 78 + .../bundle/vim-surround/README.markdown | 97 + .../bundle/vim-surround/doc/surround.txt | 207 + vim-plugins/bundle/vim-surround/doc/tags | 18 + .../bundle/vim-surround/plugin/surround.vim | 598 ++ vim-plugins/bundle/vim-virtualenv/README.mkd | 49 + .../__pycache__/pyvenv.cpython-35.pyc | Bin 0 -> 1833 bytes .../bundle/vim-virtualenv/autoload/pyvenv.py | 57 + .../vim-virtualenv/autoload/virtualenv.vim | 110 + .../bundle/vim-virtualenv/doc/virtualenv.txt | 58 + .../vim-virtualenv/plugin/virtualenv.vim | 53 + vim-plugins/bundle/xptemplate/README.md | 722 ++ .../bundle/xptemplate/autoload/XPT.vim | 173 + .../bundle/xptemplate/autoload/XPpum.vim | 42 + .../bundle/xptemplate/autoload/xpt/buf.vim | 21 + .../xptemplate/autoload/xpt/cwd/snpt.vim | 31 + .../bundle/xptemplate/autoload/xpt/debug.vim | 159 + .../bundle/xptemplate/autoload/xpt/diff.vim | 75 + .../bundle/xptemplate/autoload/xpt/eval.vim | 145 + .../bundle/xptemplate/autoload/xpt/flt.vim | 88 + .../xptemplate/autoload/xpt/ftscope.vim | 49 + .../bundle/xptemplate/autoload/xpt/group.vim | 20 + .../bundle/xptemplate/autoload/xpt/indent.vim | 85 + .../bundle/xptemplate/autoload/xpt/mark.vim | 118 + .../bundle/xptemplate/autoload/xpt/msvr.vim | 156 + .../bundle/xptemplate/autoload/xpt/ng.vim | 18 + .../bundle/xptemplate/autoload/xpt/once.vim | 46 + .../autoload/xpt/option/cwd_snippet.vim | 13 + .../autoload/xpt/option/lib_filter.vim | 22 + .../bundle/xptemplate/autoload/xpt/parser.vim | 582 ++ .../bundle/xptemplate/autoload/xpt/ph.vim | 122 + .../xptemplate/autoload/xpt/phfilter.vim | 223 + .../xptemplate/autoload/xpt/priority.vim | 22 + .../bundle/xptemplate/autoload/xpt/rctx.vim | 118 + .../bundle/xptemplate/autoload/xpt/render.vim | 140 + .../xptemplate/autoload/xpt/settingswitch.vim | 47 + .../bundle/xptemplate/autoload/xpt/snip.vim | 236 + .../xptemplate/autoload/xpt/snipfile.vim | 26 + .../xptemplate/autoload/xpt/snipfunc.vim | 465 ++ .../autoload/xpt/snipfuncs/actionhelper.vim | 29 + .../autoload/xpt/snipfuncs/evalhelper.vim | 69 + .../xptemplate/autoload/xpt/snipfunction.vim | 10 + .../xptemplate/autoload/xpt/snipline.vim | 16 + .../bundle/xptemplate/autoload/xpt/st.vim | 113 + .../bundle/xptemplate/autoload/xpt/util.vim | 244 + vim-plugins/bundle/xptemplate/changelog.md | 152 + vim-plugins/bundle/xptemplate/doc/tags | 173 + .../bundle/xptemplate/doc/xpt-function.txt | 35 + vim-plugins/bundle/xptemplate/doc/xpt.api.txt | 153 + .../bundle/xptemplate/doc/xpt.snippet.syn.txt | 923 +++ .../xptemplate/doc/xpt.snippet.tutor.txt | 97 + .../bundle/xptemplate/doc/xpt/credit.txt | 17 + .../bundle/xptemplate/doc/xpt/indent.md | 25 + .../bundle/xptemplate/doc/xpt/option.txt | 354 + .../xptemplate/doc/xpt/snippet-function.txt | 107 + .../bundle/xptemplate/doc/xptemplate.txt | 629 ++ .../xptemplate/err-edit-x-dot-c-quot-wait | 19 + .../xptemplate/ftdetect/xptemplate.detect.vim | 1 + .../xptemplate/ftdetect/xptlog.detect.vim | 5 + vim-plugins/bundle/xptemplate/ftplugin/README | 7 + .../ftplugin/_comment/c.like.xpt.vim | 11 + .../ftplugin/_comment/cpp.like.xpt.vim | 13 + .../ftplugin/_comment/doubleSign.xpt.vim | 65 + .../ftplugin/_comment/doubleSingle.xpt.vim | 19 + .../ftplugin/_comment/pattern.xpt.vim | 42 + .../ftplugin/_comment/singleDouble.xpt.vim | 19 + .../ftplugin/_comment/singleSign.xpt.vim | 30 + .../xptemplate/ftplugin/_comment/xml.xpt.vim | 11 + .../ftplugin/_common/cmn.counter.xpt.vim | 40 + .../_common/common.bracketcmpl.xpt.vim | 187 + .../ftplugin/_common/common.path.xpt.vim | 37 + .../ftplugin/_common/common.xpt.vim | 665 ++ .../ftplugin/_common/inlineComplete.xpt.vim | 53 + .../ftplugin/_condition/c.like.xpt.vim | 73 + .../ftplugin/_condition/ecma.xpt.vim | 28 + .../ftplugin/_condition/lisp.like.xpt.vim | 38 + .../xptemplate/ftplugin/_func/c.like.xpt.vim | 51 + .../xptemplate/ftplugin/_func/ecma.xpt.vim | 0 .../ftplugin/_loops/c.for.like.xpt.vim | 39 + .../ftplugin/_loops/c.while.like.xpt.vim | 37 + .../xptemplate/ftplugin/_loops/for.xpt.vim | 68 + .../ftplugin/_loops/foreach.xpt.vim | 0 .../ftplugin/_loops/java.for.like.xpt.vim | 23 + .../ftplugin/_preprocessor/c.like.xpt.vim | 48 + .../ftplugin/_printf/c.like.xpt.vim | 105 + .../ftplugin/_structures/c.like.xpt.vim | 22 + .../actionscript/actionscript.xpt.vim | 31 + .../xptemplate/ftplugin/ada/ada.xpt.vim | 134 + .../xptemplate/ftplugin/c/autoimplem.xpt.vim | 78 + .../bundle/xptemplate/ftplugin/c/c.xpt.vim | 110 + .../bundle/xptemplate/ftplugin/c/c99.xpt.vim | 12 + .../xptemplate/ftplugin/cabal/cabal.xpt.vim | 58 + .../bundle/xptemplate/ftplugin/cg/cg.xpt.vim | 105 + .../xptemplate/ftplugin/cmake/cmake.xpt.vim | 38 + .../ftplugin/cpp/autoimplem.xpt.vim | 256 + .../xptemplate/ftplugin/cpp/cpp.xpt.vim | 177 + .../bundle/xptemplate/ftplugin/cs/cs.xpt.vim | 113 + .../xptemplate/ftplugin/css/css.xpt.vim | 521 ++ .../xptemplate/ftplugin/dot/dot.xpt.vim | 116 + .../xptemplate/ftplugin/erlang/erlang.xpt.vim | 135 + .../ftplugin/eruby/eruby.ftdetect.vim | 71 + .../xptemplate/ftplugin/eruby/eruby.xpt.vim | 21 + .../xptemplate/ftplugin/factor/factor.xpt.vim | 93 + .../ftplugin/gitconfig/gitconfig.xpt.vim | 24 + .../ftplugin/gnuplot/gnuplot.xpt.vim | 34 + .../bundle/xptemplate/ftplugin/go/go.xpt.vim | 179 + .../ftplugin/haskell/haskell.xpt.vim | 164 + .../xptemplate/ftplugin/help/help.xpt.vim | 31 + .../xptemplate/ftplugin/html/eruby.xpt.vim | 24 + .../ftplugin/html/html.ftdetect.vim | 63 + .../xptemplate/ftplugin/html/html.xpt.vim | 412 + .../xptemplate/ftplugin/html/php.xpt.vim | 31 + .../htmldjango/htmldjango.ftdetect.vim | 77 + .../ftplugin/htmldjango/htmldjango.xpt.vim | 80 + .../xptemplate/ftplugin/java/java.xpt.vim | 113 + .../ftplugin/javascript/javascript.xpt.vim | 163 + .../ftplugin/javascript/jquery.xpt.vim | 558 ++ .../xptemplate/ftplugin/json/json.xpt.vim | 23 + .../xptemplate/ftplugin/lex/lex.xpt.vim | 45 + .../xptemplate/ftplugin/lua/lua.xpt.vim | 143 + .../xptemplate/ftplugin/make/make.xpt.vim | 76 + .../ftplugin/markdown/markdown.xpt.vim | 95 + .../ftplugin/objc/autoimplem.xpt.vim | 12 + .../xptemplate/ftplugin/objc/objc.xpt.vim | 66 + .../ocaml.revised/ocaml.revised.xpt.vim | 172 + .../xptemplate/ftplugin/ocaml/ocaml.xpt.vim | 181 + .../xptemplate/ftplugin/perl/perl.xpt.vim | 151 + .../xptemplate/ftplugin/php/php.ftdetect.vim | 75 + .../xptemplate/ftplugin/php/php.xpt.vim | 81 + .../xptemplate/ftplugin/ps1/ps1.xpt.vim | 104 + .../xptemplate/ftplugin/python/python.xpt.vim | 332 + .../bundle/xptemplate/ftplugin/r/r.xpt.vim | 36 + .../xptemplate/ftplugin/rst/rst.xpt.vim | 70 + .../xptemplate/ftplugin/ruby/ruby.xpt.vim | 821 ++ .../xptemplate/ftplugin/scheme/scheme.xpt.vim | 71 + .../bundle/xptemplate/ftplugin/sh/sh.xpt.vim | 179 + .../xptemplate/ftplugin/sql/sql.xpt.vim | 80 + .../xptemplate/ftplugin/svg/svg.xpt.vim | 65 + .../xptemplate/ftplugin/tcl/tcl.xpt.vim | 93 + .../xptemplate/ftplugin/tex/tex.xpt.vim | 137 + .../ftplugin/unknown/unknown.xpt.vim | 8 + .../ftplugin/vim/autoload.vim.xpt.vim | 30 + .../xptemplate/ftplugin/vim/vim.xpt.vim | 182 + .../xptemplate/ftplugin/xhtml/xhtml.xpt.vim | 6 + .../xptemplate/ftplugin/xml/xml.xpt.vim | 155 + .../xptemplate/ftplugin/xpt/xpt.xpt.vim | 223 + .../xptemplate/ftplugin/xptest/xptest.xpt.vim | 64 + .../xptemplate/ftplugin/xslt/xslt.xpt.vim | 110 + .../xptemplate/ftplugin/yacc/yacc.xpt.vim | 55 + .../xptemplate/ftplugin/zsh/zsh.xpt.vim | 8 + .../bundle/xptemplate/personal/Readme.txt | 25 + .../ftplugin/_common/personal_example.xpt.vim | 15 + .../bundle/xptemplate/plugin/debug.vim | 133 + .../bundle/xptemplate/plugin/xpmark.vim | 695 ++ .../bundle/xptemplate/plugin/xpopup.vim | 637 ++ .../bundle/xptemplate/plugin/xpreplace.vim | 197 + .../plugin/xpt.plugin.highlight.vim | 136 + .../xptemplate/plugin/xptemplate.conf.vim | 234 + .../xptemplate/plugin/xptemplate.parser.vim | 22 + .../bundle/xptemplate/plugin/xptemplate.vim | 2286 ++++++ .../readme-img/400x/browse-and-basic.gif | Bin 0 -> 41314 bytes .../xptemplate/readme-img/400x/c-ifee.gif | Bin 0 -> 30667 bytes .../readme-img/400x/c-loop-and-wrapper.gif | Bin 0 -> 72773 bytes .../xptemplate/readme-img/400x/c-macro.gif | Bin 0 -> 35740 bytes .../xptemplate/readme-img/400x/c-outline.gif | Bin 0 -> 31512 bytes .../readme-img/400x/py-class-def.gif | Bin 0 -> 43849 bytes .../readme-img/400x/py-for-inline-cmpl.gif | Bin 0 -> 43303 bytes .../readme-img/400x/py-optional-ph.gif | Bin 0 -> 26529 bytes .../readme-img/400x/py-quick-add.gif | Bin 0 -> 25891 bytes .../xptemplate/readme-img/400x/py-try.gif | Bin 0 -> 23815 bytes .../readme-img/600x/browse-and-basic.gif | Bin 0 -> 92698 bytes .../xptemplate/readme-img/600x/c-ifee.gif | Bin 0 -> 62653 bytes .../readme-img/600x/c-loop-and-wrapper.gif | Bin 0 -> 160161 bytes .../xptemplate/readme-img/600x/c-macro.gif | Bin 0 -> 83856 bytes .../xptemplate/readme-img/600x/c-outline.gif | Bin 0 -> 83414 bytes .../readme-img/600x/py-class-def.gif | Bin 0 -> 88862 bytes .../readme-img/600x/py-for-inline-cmpl.gif | Bin 0 -> 84005 bytes .../readme-img/600x/py-optional-ph.gif | Bin 0 -> 72018 bytes .../readme-img/600x/py-quick-add.gif | Bin 0 -> 70669 bytes .../xptemplate/readme-img/600x/py-try.gif | Bin 0 -> 57909 bytes .../readme-img/c-pum-starts-with-f.png | Bin 0 -> 19409 bytes .../xptemplate/readme-img/samples/b-box.gif | Bin 0 -> 71186 bytes .../readme-img/samples/b-catrom.gif | Bin 0 -> 84369 bytes .../readme-img/samples/b-lanczos2.gif | Bin 0 -> 84959 bytes .../readme-img/samples/b-lanczos3.gif | Bin 0 -> 92698 bytes .../readme-img/samples/b-mitchell.gif | Bin 0 -> 83761 bytes .../xptemplate/readme-img/samples/b-mix.gif | Bin 0 -> 75852 bytes .../readme-img/samples/b-sample.gif | Bin 0 -> 71186 bytes .../bundle/xptemplate/readme-img/samples/x.md | 14 + .../bundle/xptemplate/resource/xptLogo.gif | Bin 0 -> 6780 bytes .../bundle/xptemplate/resource/xptLogo.png | Bin 0 -> 18311 bytes .../bundle/xptemplate/resource/xptLogo.svg | 252 + vim-plugins/bundle/xptemplate/syntax/xpt.vim | 231 + .../bundle/xptemplate/syntax/xptlog.vim | 9 + vim-plugins/bundle/xptemplate/xpt-err | 14 + vim-plugins/colors/mayansmoke.vim | 343 + vim-plugins/colors/wombat256mod.vim | 96 + vim-plugins/filetype.vim | 7 + vim-plugins/ftplugin/.python_editing.vim.un~ | Bin 0 -> 5082 bytes vim-plugins/ftplugin/instant-markdown.vim | 188 + vim-plugins/ftplugin/python_editing.vim | 91 + vim-plugins/templates/.skeleton.py.un~ | Bin 0 -> 3253 bytes vim-plugins/templates/.skeleton.sh.un~ | Bin 0 -> 982 bytes vim-plugins/templates/skeleton.py | 6 + vim-plugins/templates/skeleton.sh | 3 + ...on%odin-proj%dev%webapp%Odin%README.md.swp | Bin 0 -> 12288 bytes vim-plugins/tmp/undo/%etc%apt%sources.list | Bin 0 -> 4231 bytes vim-plugins/tmp/undo/%etc%default%locale | Bin 0 -> 1420 bytes vim-plugins/tmp/undo/%etc%fstab | Bin 0 -> 1544 bytes vim-plugins/tmp/undo/%etc%hosts | Bin 0 -> 5873 bytes vim-plugins/tmp/undo/%etc%init%docker.conf | Bin 0 -> 1447 bytes vim-plugins/tmp/undo/%etc%inputrc | Bin 0 -> 2301 bytes vim-plugins/tmp/undo/%etc%ssh%ssh_config | Bin 0 -> 1452 bytes .../tmp/undo/%home%viktor%.bash_aliases | Bin 0 -> 4868 bytes .../tmp/undo/%home%viktor%.bash_completion | Bin 0 -> 964 bytes vim-plugins/tmp/undo/%home%viktor%.bashrc | Bin 0 -> 1251 bytes ...e%viktor%.config%plasma-locale-settings.sh | Bin 0 -> 1903 bytes vim-plugins/tmp/undo/%home%viktor%.inputrc | Bin 0 -> 541 bytes .../undo/%home%viktor%.oh-my-zsh%oh-my-zsh.sh | Bin 0 -> 4726 bytes ...me%viktor%.oh-my-zsh%themes%bira.zsh-theme | Bin 0 -> 3691 bytes vim-plugins/tmp/undo/%home%viktor%.profile | Bin 0 -> 1430 bytes vim-plugins/tmp/undo/%home%viktor%.ssh%config | Bin 0 -> 1838 bytes .../tmp/undo/%home%viktor%.tmux%.tmux.conf | Bin 0 -> 952 bytes vim-plugins/tmp/undo/%home%viktor%.tmux.conf | Bin 0 -> 5855 bytes .../tmp/undo/%home%viktor%.tmux.conf.local | Bin 0 -> 26031 bytes vim-plugins/tmp/undo/%home%viktor%.vimrc | Bin 0 -> 14914 bytes ...me%viktor%.virtualenvs%django%bin%activate | Bin 0 -> 1517 bytes .../undo/%home%viktor%.virtualenvs%reqs.txt | Bin 0 -> 545 bytes .../undo/%home%viktor%.virtualenvs%venv.sh | Bin 0 -> 3149 bytes vim-plugins/tmp/undo/%home%viktor%.zshrc | Bin 0 -> 14750 bytes .../tmp/undo/%home%viktor%CLIENTNAME.ovpn | Bin 0 -> 586 bytes ...%TechFest%techfest%config%settings%base.py | Bin 0 -> 577 bytes .../%home%viktor%auto%update_vim_and_zsh.sh | Bin 0 -> 7758 bytes .../tmp/undo/%home%viktor%bobi-rd-links | Bin 0 -> 8011 bytes .../%home%viktor%code%dot_files%setup-vim.sh | Bin 0 -> 581 bytes ...r%code%python%Odin%config%settings%base.py | Bin 0 -> 2213 bytes .../%home%viktor%code%python%Odin%env.example | Bin 0 -> 2560 bytes ...r%code%python%Odin%odin%dashboard%views.py | Bin 0 -> 1083 bytes ...go_1-9%myproject%myproject%myapp%models.py | Bin 0 -> 1119 bytes ...ango_1-9%myproject%myproject%myapp%urls.py | Bin 0 -> 1565 bytes ...ngo_1-9%myproject%myproject%myapp%views.py | Bin 0 -> 4648 bytes ...django_1-9%myproject%myproject%settings.py | Bin 0 -> 559 bytes ...or%code%python%odin-proj%deploy%Dockerfile | Bin 0 -> 3622 bytes ...python%odin-proj%deploy%docker-compose.yml | Bin 0 -> 36556 bytes ...ython%odin-proj%deploy%postgres%Dockerfile | Bin 0 -> 523 bytes ...%python%odin-proj%deploy%webapp%Dockerfile | Bin 0 -> 37033 bytes ...deploy%webapp%Odin%config%settings%base.py | Bin 0 -> 24275 bytes ...din-proj%deploy%webapp%Odin%config%urls.py | Bin 0 -> 5071 bytes ...deploy%webapp%Odin%odin%dashboard%views.py | Bin 0 -> 641 bytes ...thon%odin-proj%deploy%webapp%entrypoint.sh | Bin 0 -> 6813 bytes ...de%python%odin-proj%dev%docker-compose.yml | Bin 0 -> 1940 bytes ...ode%python%odin-proj%dev%webapp%Dockerfile | Bin 0 -> 7800 bytes ...ython%odin-proj%dev%webapp%Odin%Dockerfile | Bin 0 -> 1030 bytes ...python%odin-proj%dev%webapp%Odin%README.md | Bin 0 -> 18485 bytes ...oj%dev%webapp%Odin%config%settings%base.py | Bin 0 -> 4985 bytes ...n%odin-proj%dev%webapp%Odin%config%urls.py | Bin 0 -> 6617 bytes ...%webapp%Odin%deploy%dev%docker-compose.yml | Bin 0 -> 565 bytes ...j%dev%webapp%Odin%deploy%dev%entrypoint.sh | Bin 0 -> 2321 bytes ...in-proj%dev%webapp%Odin%docker-compose.yml | Bin 0 -> 4233 bytes ...n%odin%templates%authentication%login.html | Bin 0 -> 1021 bytes ...%python%odin-proj%dev%webapp%entrypoint.sh | Bin 0 -> 8802 bytes ...r%code%python%projects%fbchat%timeCost.txt | Bin 0 -> 33218 bytes ...on%projects%techfest%TechFest%techfest%asd | Bin 0 -> 952 bytes ...jects%techfest%TechFest%techfest%manage.py | Bin 0 -> 946 bytes ...%home%viktor%code%python%refactorer%readme | Bin 0 -> 567 bytes ...ker%dockercoins%docker-compose.logging.yml | Bin 0 -> 1699 bytes ...me%viktor%docker%dockerfile-tut%Dockerfile | Bin 0 -> 11213 bytes ...r%docker%dockerfile-tut%docker-compose.yml | Bin 0 -> 3201 bytes ...r%docker%dockerfile-tut%esx-vpn%Dockerfile | Bin 0 -> 24419 bytes ...%docker%dockerfile-tut%postgres%Dockerfile | Bin 0 -> 2353 bytes ...dockerfile-tut%postgres%docker-compose.yml | Bin 0 -> 10371 bytes ...tor%docker%dockerfile-tut%redis%Dockerfile | Bin 0 -> 523 bytes ...rfile-tut%techfest%config%settings%base.py | Bin 0 -> 579 bytes vim-plugins/tmp/undo/%home%viktor%q | Bin 0 -> 560 bytes vim-plugins/tmp/undo/%home%viktor%test.css | Bin 0 -> 2282 bytes vim-plugins/tmp/undo/%home%viktor%todo.txt | Bin 0 -> 1414 bytes vim-plugins/tmp/undo/%home%viktor%venv.sh | Bin 0 -> 551 bytes .../undo/%home%viktor%venvs%install-reqs.sh | Bin 0 -> 5569 bytes vim-plugins/tmp/undo/%home%viktor%viktor | Bin 0 -> 1233 bytes .../tmp/undo/%mnt%home%viktor%auto-commit.sh | Bin 0 -> 691 bytes .../tmp/undo/%tmp%crontab.LH6Lsq%crontab | Bin 0 -> 603 bytes .../tmp/undo/%tmp%crontab.Wlpq8x%crontab | Bin 0 -> 2011 bytes .../tmp/undo/%tmp%crontab.ZwLCPA%crontab | Bin 0 -> 1974 bytes vim-plugins/tmp/undo/%tmp%zsh5bn4yf | Bin 0 -> 1019 bytes vim-plugins/tmp/undo/%usr%bin%pip3 | Bin 0 -> 3233 bytes 1582 files changed, 205558 insertions(+) create mode 100644 vim-plugins/.filetype.vim.un~ create mode 100644 vim-plugins/.netrwhist create mode 100644 vim-plugins/Rename.vim create mode 100644 vim-plugins/autoload/pathogen.vim create mode 100644 vim-plugins/bundle/.asd.markdown.un~ create mode 100644 vim-plugins/bundle/.asd.md.un~ create mode 100644 vim-plugins/bundle/.vundle/script-names.vim-scripts.org.json create mode 100644 vim-plugins/bundle/AutoComplPop/README create mode 100644 vim-plugins/bundle/AutoComplPop/autoload/acp.vim create mode 100644 vim-plugins/bundle/AutoComplPop/doc/acp.jax create mode 100644 vim-plugins/bundle/AutoComplPop/doc/acp.txt create mode 100644 vim-plugins/bundle/AutoComplPop/plugin/acp.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/bookmarkdir.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/buffertag.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/changes.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/dir.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/line.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mixed.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mrufiles.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/quickfix.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/rtscript.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/tag.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/undo.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/utils.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/doc/ctrlp.txt create mode 100644 vim-plugins/bundle/ctrlp.vim/doc/tags create mode 100644 vim-plugins/bundle/ctrlp.vim/plugin/ctrlp.vim create mode 100644 vim-plugins/bundle/ctrlp.vim/readme.md create mode 100644 vim-plugins/bundle/emmet-vim/Makefile create mode 100644 vim-plugins/bundle/emmet-vim/README.mkd create mode 100644 vim-plugins/bundle/emmet-vim/TODO create mode 100644 vim-plugins/bundle/emmet-vim/TUTORIAL create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/css.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/elm.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/haml.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/html.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/jade.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/less.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/sass.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/scss.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lang/slim.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/en.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/ja.vim create mode 100644 vim-plugins/bundle/emmet-vim/autoload/emmet/util.vim create mode 100644 vim-plugins/bundle/emmet-vim/doc/emmet.txt create mode 100644 vim-plugins/bundle/emmet-vim/doc/screenshot.gif create mode 100644 vim-plugins/bundle/emmet-vim/emmet.vim.vimup create mode 100644 vim-plugins/bundle/emmet-vim/plugin/emmet.vim create mode 100644 vim-plugins/bundle/emmet-vim/unittest.vim create mode 100644 vim-plugins/bundle/jedi-vim/.jedi_vim.py.un~ create mode 100644 vim-plugins/bundle/jedi-vim/.travis.yml create mode 100644 vim-plugins/bundle/jedi-vim/AUTHORS.txt create mode 100644 vim-plugins/bundle/jedi-vim/CONTRIBUTING.md create mode 100644 vim-plugins/bundle/jedi-vim/LICENSE.txt create mode 100644 vim-plugins/bundle/jedi-vim/Makefile create mode 100644 vim-plugins/bundle/jedi-vim/README.rst create mode 100644 vim-plugins/bundle/jedi-vim/__pycache__/jedi_vim.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/after/ftplugin/python/jedi.vim create mode 100644 vim-plugins/bundle/jedi-vim/after/syntax/python.vim create mode 100644 vim-plugins/bundle/jedi-vim/autoload/.jedi.vim.un~ create mode 100644 vim-plugins/bundle/jedi-vim/autoload/health/jedi.vim create mode 100644 vim-plugins/bundle/jedi-vim/autoload/jedi.vim create mode 100644 vim-plugins/bundle/jedi-vim/conftest.py create mode 100644 vim-plugins/bundle/jedi-vim/doc/jedi-vim.txt create mode 100644 vim-plugins/bundle/jedi-vim/doc/tags create mode 100644 vim-plugins/bundle/jedi-vim/ftplugin/python/jedi.vim create mode 100644 vim-plugins/bundle/jedi-vim/initialize.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/.coveragerc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/.travis.yml create mode 100644 vim-plugins/bundle/jedi-vim/jedi/AUTHORS.txt create mode 100644 vim-plugins/bundle/jedi-vim/jedi/CHANGELOG.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/CONTRIBUTING.md create mode 100644 vim-plugins/bundle/jedi-vim/jedi/LICENSE.txt create mode 100644 vim-plugins/bundle/jedi-vim/jedi/MANIFEST.in create mode 100644 vim-plugins/bundle/jedi-vim/jedi/README.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/conftest.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/Makefile create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_screenshots/screenshot_complete.png create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_screenshots/screenshot_function.png create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_screenshots/screenshot_pydoc.png create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_static/logo-src.txt create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_static/logo.png create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_templates/ghbuttons.html create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_templates/sidebarlogo.html create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask/LICENSE create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask/layout.html create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask/relations.html create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask/static/flasky.css_t create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask/static/small_flask.css create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask/theme.conf create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/_themes/flask_theme_support.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/conf.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/development.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/features.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/installation.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/plugin-api-classes.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/plugin-api.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/settings.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/static_analsysis.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/testing.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/docs/usage.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/global.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/docs/index.rst create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__main__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/_compatibility.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/cache.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/common.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/debug.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/settings.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/__pycache__/utils.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/_compatibility.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/classes.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/completion.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/helpers.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/interpreter.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/keywords.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/__pycache__/usages.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/classes.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/completion.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/helpers.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/interpreter.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/keywords.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/replstartup.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/api/usages.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/cache.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/common.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/debug.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/.sys_path.py.un~ create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/analysis.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/cache.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/docstrings.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/dynamic.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/finder.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/flow_analysis.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/helpers.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/imports.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/iterable.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/param.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/pep0484.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/precedence.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/recursion.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/representation.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/site.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/stdlib.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/__pycache__/sys_path.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/analysis.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/cache.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/__pycache__/fake.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/__pycache__/mixed.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/_functools.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/_sqlite3.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/_sre.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/_weakref.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/builtins.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/datetime.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/io.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/fake/posix.pym create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/compiled/mixed.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/docstrings.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/dynamic.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/finder.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/flow_analysis.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/helpers.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/imports.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/iterable.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/jedi_typing.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/param.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/pep0484.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/precedence.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/recursion.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/representation.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/site.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/stdlib.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/evaluate/sys_path.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__pycache__/fast.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__pycache__/token.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__pycache__/tokenize.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__pycache__/tree.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/__pycache__/utils.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/fast.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/grammar2.7.txt create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/grammar3.4.txt create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/grammar3.5.txt create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/__pycache__/grammar.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/__pycache__/parse.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/__pycache__/pgen.cpython-35.pyc create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/grammar.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/parse.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/pgen2/pgen.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/token.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/tokenize.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/tree.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/parser/utils.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/refactoring.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/settings.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/jedi/utils.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/pytest.ini create mode 100755 vim-plugins/bundle/jedi-vim/jedi/scripts/memory_check.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/scripts/profile.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/scripts/wx_check.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/setup.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/sith.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/blabla_test_documentation.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/arrays.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/basic.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/classes.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/completion.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/complex.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/comprehensions.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/context.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/decorators.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/definition.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/descriptors.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/docstring.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/dynamic_arrays.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/dynamic_params.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/flow_analysis.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/functions.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/generators.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/goto.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/flow_import.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/invisible_pkg.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/mod1.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/mod2.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/pkg/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/pkg/mod1.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/random.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/recurse_class1.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/recurse_class2.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/rename1.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/import_tree/rename2.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/imports.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/invalid.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/isinstance.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/keywords.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/lambdas.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/named_param.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/on_import.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/ordering.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/parser.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/pep0484.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/pep0484_comments.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/pep0484_typing.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/precedence.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/recursion.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/stdlib.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/sys_path.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/thirdparty/PyQt4_.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/thirdparty/django_.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/thirdparty/jedi_.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/thirdparty/psycopg2_.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/thirdparty/pylab_.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/types.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/completion/usages.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/conftest.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/helpers.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/test/refactor.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/refactor/extract.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/refactor/inline.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/refactor/rename.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/test/run.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/speed/precedence.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/arguments.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/attribute_error.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/attribute_warnings.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/branches.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/builtins.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/class_simple.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/comprehensions.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/descriptors.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/generators.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/import_tree/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/import_tree/a.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/import_tree/b.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/imports.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/iterable.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/keywords.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/operations.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/python2.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/star_arguments.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/static_analysis/try_except.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_api.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_api_classes_follow_definition.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_call_signatures.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_classes.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_completion_context.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_defined_names.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_full_name.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_interpreter.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_unicode.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_api/test_usages.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_cache.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_debug.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/absolute_import/local_module.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/absolute_import/unittest.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/buildout_project/bin/app create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/buildout_project/bin/binary_file create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/buildout_project/bin/empty_file create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/buildout_project/buildout.cfg create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/buildout_project/src/proj_name/module_name.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flask/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flask/ext/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flask_baz/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flask_foo.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flaskext/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flaskext/bar.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/flask-site-packages/flaskext/moo/__init__.py create mode 100755 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/init_extension_module/__init__.cpython-34m.so create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/init_extension_module/module.c create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/init_extension_module/setup.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/namespace_package/ns1/pkg/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/namespace_package/ns1/pkg/ns1_file.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/namespace_package/ns1/pkg/ns1_folder/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/namespace_package/ns2/pkg/ns2_file.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/namespace_package/ns2/pkg/ns2_folder/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/namespace_package/ns2/pkg/ns2_folder/nested/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/nested_namespaces/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/nested_namespaces/namespace/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/nested_namespaces/namespace/pkg/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/not_in_sys_path/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/not_in_sys_path/not_in_sys_path.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/not_in_sys_path/not_in_sys_path_package/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/not_in_sys_path/not_in_sys_path_package/module.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/not_in_sys_path/pkg/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/not_in_sys_path/pkg/module.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/dir-from-foo-pth/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/egg_link.egg-link create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/foo.pth create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/import_smth.pth create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/relative.egg-link create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv27/lib/python2.7/site-packages/smth.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/dir-from-foo-pth/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/egg_link.egg-link create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/foo.pth create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/import_smth.pth create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/relative.egg-link create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/sample_venvs/venv34/lib/python3.4/site-packages/smth.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_absolute_import.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_annotations.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_buildout_detection.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_compiled.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_docstring.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_extension.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_helpers.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_imports.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_namespace_package.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_precedence.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_pyc.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_representation.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/test_sys_path.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/zipped_imports/not_pkg.zip create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_evaluate/zipped_imports/pkg.zip create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_integration.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_integration_analysis.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_integration_import.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_integration_keyword.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_integration_stdlib.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_jedi_system.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_new_parser.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/__init__.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_fast_parser.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_get_code.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_param_splitting.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_parser.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_parser_tree.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_pgen2.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_tokenize.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_parser/test_user_context.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_regression.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_speed.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_utils.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/test/test_windows.py create mode 100644 vim-plugins/bundle/jedi-vim/jedi/tox.ini create mode 100644 vim-plugins/bundle/jedi-vim/jedi_vim.py create mode 100644 vim-plugins/bundle/jedi-vim/plugin/jedi.vim create mode 100644 vim-plugins/bundle/jedi-vim/pytest.ini create mode 100644 vim-plugins/bundle/jedi-vim/test/completions.vim create mode 100644 vim-plugins/bundle/jedi-vim/test/completions_disabled.vim create mode 100644 vim-plugins/bundle/jedi-vim/test/documentation.vim create mode 100644 vim-plugins/bundle/jedi-vim/test/goto.vim create mode 100644 vim-plugins/bundle/jedi-vim/test/pyimport.vim create mode 100644 vim-plugins/bundle/jedi-vim/test/signatures.vim create mode 100644 vim-plugins/bundle/jedi-vim/test/utils.vim create mode 100644 vim-plugins/bundle/jedi-vim/test_integration.py create mode 100644 vim-plugins/bundle/nerdtree-git-plugin/README.md create mode 100644 vim-plugins/bundle/nerdtree-git-plugin/nerdtree_plugin/git_status.vim create mode 100644 vim-plugins/bundle/nerdtree/CHANGELOG create mode 100644 vim-plugins/bundle/nerdtree/LICENCE create mode 100644 vim-plugins/bundle/nerdtree/README.markdown create mode 100644 vim-plugins/bundle/nerdtree/autoload/nerdtree.vim create mode 100644 vim-plugins/bundle/nerdtree/autoload/nerdtree/ui_glue.vim create mode 100644 vim-plugins/bundle/nerdtree/doc/NERD_tree.txt create mode 100644 vim-plugins/bundle/nerdtree/doc/tags create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/bookmark.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/creator.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/event.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/flag_set.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/key_map.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/menu_controller.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/menu_item.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/nerdtree.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/notifier.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/opener.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/path.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/tree_dir_node.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/tree_file_node.vim create mode 100644 vim-plugins/bundle/nerdtree/lib/nerdtree/ui.vim create mode 100644 vim-plugins/bundle/nerdtree/nerdtree_plugin/exec_menuitem.vim create mode 100644 vim-plugins/bundle/nerdtree/nerdtree_plugin/fs_menu.vim create mode 100644 vim-plugins/bundle/nerdtree/plugin/NERD_tree.vim create mode 100644 vim-plugins/bundle/nerdtree/syntax/nerdtree.vim create mode 100644 vim-plugins/bundle/python-mode/.bumpversion.cfg create mode 100644 vim-plugins/bundle/python-mode/.ruby-gemset create mode 100644 vim-plugins/bundle/python-mode/.ruby-version create mode 100644 vim-plugins/bundle/python-mode/.travis.yml create mode 100644 vim-plugins/bundle/python-mode/AUTHORS create mode 100644 vim-plugins/bundle/python-mode/COPYING create mode 100644 vim-plugins/bundle/python-mode/Changelog.rst create mode 100644 vim-plugins/bundle/python-mode/Gemfile create mode 100644 vim-plugins/bundle/python-mode/Makefile create mode 100644 vim-plugins/bundle/python-mode/README.rst create mode 100644 vim-plugins/bundle/python-mode/Rakefile create mode 100644 vim-plugins/bundle/python-mode/after/ftplugin/pyrex.vim create mode 100644 vim-plugins/bundle/python-mode/after/ftplugin/python.vim create mode 100644 vim-plugins/bundle/python-mode/after/indent/pyrex.vim create mode 100644 vim-plugins/bundle/python-mode/after/indent/python.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/breakpoint.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/doc.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/folding.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/indent.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/lint.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/motion.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/rope.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/run.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/tools/loclist.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/tools/signs.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/troubleshooting.vim create mode 100644 vim-plugins/bundle/python-mode/autoload/pymode/virtualenv.vim create mode 100644 vim-plugins/bundle/python-mode/debug.vim create mode 100644 vim-plugins/bundle/python-mode/doc/pymode.txt create mode 100644 vim-plugins/bundle/python-mode/ftplugin/pyrex.vim create mode 100644 vim-plugins/bundle/python-mode/ftplugin/python/pymode.vim create mode 100644 vim-plugins/bundle/python-mode/logo.png create mode 100644 vim-plugins/bundle/python-mode/plugin/pymode.vim create mode 100644 vim-plugins/bundle/python-mode/pylama.ini create mode 100644 vim-plugins/bundle/python-mode/pymode/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/_compat.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/autopep8.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/environment.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/lint.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/rope.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/run.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/utils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/__pycache__/virtualenv.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/_compat.py create mode 100644 vim-plugins/bundle/python-mode/pymode/async.py create mode 100644 vim-plugins/bundle/python-mode/pymode/autopep8.py create mode 100644 vim-plugins/bundle/python-mode/pymode/environment.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/__pycache__/mccabe.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/__pycache__/pep257.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/__pycache__/pep8.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/__pycache__/six.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/_markerlib/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/_markerlib/markers.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pkginfo__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/__pkginfo__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/as_string.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/astpeephole.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/bases.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/builder.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/exceptions.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/inference.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/manager.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/mixins.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/modutils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/node_classes.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/nodes.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/protocols.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/raw_building.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/rebuilder.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/__pycache__/scoped_nodes.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/as_string.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/astpeephole.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/bases.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/builtin_inference.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/py2gi.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/py2mechanize.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/py2pytest.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/py2qt4.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/py2stdlib.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/pynose.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/__pycache__/pysix_moves.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/builtin_inference.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/py2gi.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/py2mechanize.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/py2pytest.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/py2qt4.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/py2stdlib.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/pynose.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/brain/pysix_moves.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/builder.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/exceptions.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/inference.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/inspector.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/manager.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/mixins.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/modutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/node_classes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/nodes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/protocols.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/raw_building.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/rebuilder.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/scoped_nodes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/test_utils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/astroid/utils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/easy_install.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/changelog.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/compat.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/configuration.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/decorators.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/deprecation.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/interface.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/optik_ext.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/textutils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/tree.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/__pycache__/visitor.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/cache.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/changelog.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/clcommands.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/compat.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/configuration.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/daemon.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/date.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/debugger.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/decorators.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/deprecation.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/fileutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/graph.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/interface.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/logging_ext.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/modutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/optik_ext.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/optparser.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/proc.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/pytest.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/registry.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/shellutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/sphinx_ext.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/sphinxutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/table.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/tasksqueue.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/testlib.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/textutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/tree.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/umessage.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/__pycache__/html_writer.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/__pycache__/nodes.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/__pycache__/text_writer.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/docbook_writer.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/html_writer.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/nodes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/ureports/text_writer.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/urllib2ext.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/vcgutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/visitor.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab/common/xmlutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2-py2.7-nspkg.pth create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/DESCRIPTION.rst create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/METADATA create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/RECORD create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/WHEEL create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/metadata.json create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/namespace_packages.txt create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/logilab_common-1.0.2.dist-info/top_level.txt create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/mccabe.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pep257.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pep8.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__about__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__pycache__/_compat.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/__pycache__/version.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/_compat.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/_structures.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pkg_resources/_vendor/packaging/version.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/__main__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/__pycache__/checker.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/__pycache__/messages.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/api.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/checker.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/messages.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pyflakes/reporter.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__main__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__pycache__/async.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__pycache__/config.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__pycache__/core.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__pycache__/errors.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/__pycache__/main.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/async.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/config.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/core.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/errors.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/hook.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/libs/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/libs/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/libs/__pycache__/inirama.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/libs/importlib.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/libs/inirama.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__pycache__/extensions.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__pycache__/pylama_mccabe.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__pycache__/pylama_pep257.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__pycache__/pylama_pep8.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/__pycache__/pylama_pyflakes.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/extensions.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_mccabe.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pep257.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pep8.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pyflakes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pylint/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pylint/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pylint/__pycache__/main.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pylint/main.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/lint/pylama_pylint/pylint.rc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/main.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylama/pytest.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__main__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pkginfo__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pycache__/__pkginfo__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pycache__/config.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pycache__/interfaces.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pycache__/lint.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/__pycache__/utils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/base.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/classes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/design_analysis.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/exceptions.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/format.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/imports.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/logging.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/misc.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/newstyle.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/python3.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/raw_metrics.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/similar.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/spelling.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/stdlib.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/strings.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/typecheck.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/utils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/checkers/variables.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/config.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/epylint.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/gui.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/interfaces.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/lint.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/pyreverse/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/pyreverse/diadefslib.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/pyreverse/diagrams.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/pyreverse/main.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/pyreverse/utils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/pyreverse/writer.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/reporters/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/reporters/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/reporters/guireporter.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/reporters/html.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/reporters/json.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/reporters/text.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/testutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/pylint/utils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/arguments.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/ast.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/astutils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/builtins.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/change.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/codeanalyze.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/default_config.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/evaluate.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/exceptions.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/fscommands.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/history.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/libutils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/prefs.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/project.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/pycore.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/pynames.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/pynamesdef.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/pyobjects.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/pyobjectsdef.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/pyscopes.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/resourceobserver.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/resources.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/simplify.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/stdmods.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/taskhandle.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/__pycache__/worder.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/arguments.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/ast.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/astutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/builtins.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/change.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/codeanalyze.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/default_config.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/evaluate.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/exceptions.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/fscommands.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/history.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/libutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/doa.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/docstrings.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/memorydb.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/objectdb.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/objectinfo.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/soa.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/soi.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/__pycache__/transform.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/doa.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/docstrings.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/memorydb.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/objectdb.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/objectinfo.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/runmod.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/soa.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/soi.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/oi/transform.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/prefs.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/project.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/pycore.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/pynames.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/pynamesdef.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/pyobjects.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/pyobjectsdef.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/pyscopes.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/resourceobserver.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/resources.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/simplify.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/stdmods.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/taskhandle.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/utils/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/utils/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/utils/__pycache__/datastructures.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/utils/__pycache__/pycompat.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/utils/datastructures.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/utils/pycompat.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/base/worder.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__pycache__/autoimport.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__pycache__/codeassist.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__pycache__/findit.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__pycache__/fixsyntax.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/__pycache__/generate.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/autoimport.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/changestack.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/codeassist.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/finderrors.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/findit.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/fixmodnames.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/fixsyntax.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/contrib/generate.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/change_signature.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/extract.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/functionutils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/inline.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/move.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/occurrences.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/patchedast.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/rename.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/restructure.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/similarfinder.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/sourceutils.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/suites.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/topackage.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/usefunction.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/__pycache__/wildcards.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/change_signature.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/encapsulate_field.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/extract.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/functionutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/__init__.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/__pycache__/__init__.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/__pycache__/actions.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/__pycache__/importinfo.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/__pycache__/module_imports.cpython-35.pyc create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/actions.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/importinfo.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/importutils/module_imports.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/inline.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/introduce_factory.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/introduce_parameter.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/localtofield.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/method_object.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/move.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/multiproject.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/occurrences.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/patchedast.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/rename.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/restructure.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/similarfinder.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/sourceutils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/suites.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/topackage.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/usefunction.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/rope/refactor/wildcards.py create mode 100644 vim-plugins/bundle/python-mode/pymode/libs/six.py create mode 100644 vim-plugins/bundle/python-mode/pymode/lint.py create mode 100644 vim-plugins/bundle/python-mode/pymode/rope.py create mode 100644 vim-plugins/bundle/python-mode/pymode/run.py create mode 100644 vim-plugins/bundle/python-mode/pymode/utils.py create mode 100644 vim-plugins/bundle/python-mode/pymode/virtualenv.py create mode 100644 vim-plugins/bundle/python-mode/python-mode.yaml create mode 100644 vim-plugins/bundle/python-mode/syntax/pyrex.vim create mode 100644 vim-plugins/bundle/python-mode/syntax/python.vim create mode 100644 vim-plugins/bundle/python-mode/t/docs.vim create mode 100644 vim-plugins/bundle/python-mode/t/ftplugin.vim create mode 100644 vim-plugins/bundle/python-mode/t/indent.vim create mode 100644 vim-plugins/bundle/python-mode/t/lint.vim create mode 100644 vim-plugins/bundle/python-mode/t/plugin.vim create mode 100644 vim-plugins/bundle/python-mode/t/rope.vim create mode 100644 vim-plugins/bundle/python-mode/t/syntax.vim create mode 100644 vim-plugins/bundle/python-mode/t/test.py create mode 100644 vim-plugins/bundle/python-mode/t/trouble.vim create mode 100644 vim-plugins/bundle/python-mode/t/virtualenv.vim create mode 100644 vim-plugins/bundle/supertab/Makefile create mode 100644 vim-plugins/bundle/supertab/README.rst create mode 100644 vim-plugins/bundle/supertab/doc/supertab.txt create mode 100644 vim-plugins/bundle/supertab/ftplugin/html.vim create mode 100644 vim-plugins/bundle/supertab/ftplugin/xml.vim create mode 100644 vim-plugins/bundle/supertab/plugin/supertab.vim create mode 100644 vim-plugins/bundle/syntastic/CONTRIBUTING.md create mode 100644 vim-plugins/bundle/syntastic/LICENCE create mode 100644 vim-plugins/bundle/syntastic/README.markdown create mode 100644 vim-plugins/bundle/syntastic/_assets/screenshot_1.png create mode 100644 vim-plugins/bundle/syntastic/autoload/syntastic/c.vim create mode 100644 vim-plugins/bundle/syntastic/autoload/syntastic/log.vim create mode 100644 vim-plugins/bundle/syntastic/autoload/syntastic/postprocess.vim create mode 100644 vim-plugins/bundle/syntastic/autoload/syntastic/preprocess.vim create mode 100644 vim-plugins/bundle/syntastic/autoload/syntastic/util.vim create mode 100644 vim-plugins/bundle/syntastic/doc/syntastic-checkers.txt create mode 100644 vim-plugins/bundle/syntastic/doc/syntastic.txt create mode 100644 vim-plugins/bundle/syntastic/doc/tags create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/autoloclist.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/balloons.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/checker.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/cursor.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/highlighting.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/loclist.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/modemap.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/notifiers.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/registry.vim create mode 100644 vim-plugins/bundle/syntastic/plugin/syntastic/signs.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/actionscript/mxmlc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ada/gcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ansible/ansible_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/apiblueprint/drafter.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/applescript/osacompile.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/asciidoc/asciidoc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/asciidoc/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/asl/iasl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/asm/gcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/bemhtml/bemhtmllint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/bro/bro.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/avrgcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/checkpatch.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/clang_check.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/clang_tidy.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/cppcheck.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/gcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/make.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/oclint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/pc_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/sparse.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/c/splint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cabal/cabal.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/chef/foodcritic.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/co/coco.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cobol/cobc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/coffee/coffee.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/coffee/coffeelint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/coq/coqtop.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/avrgcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/clang_check.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/clang_tidy.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/cppcheck.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/cpplint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/gcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/oclint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/pc_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cpp/verapp.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cs/mcs.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/css/csslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/css/mixedindentlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/css/phpcs.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/css/prettycss.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/css/recess.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/css/stylelint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cucumber/cucumber.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/cuda/nvcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/d/dmd.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/dart/dartanalyzer.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/docbk/igor.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/docbk/xmllint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/dockerfile/dockerfile_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/dustjs/swiffer.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/elixir/elixir.vim create mode 100755 vim-plugins/bundle/syntastic/syntax_checkers/erlang/erlang_check_file.erl create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/erlang/escript.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/erlang/syntaxerl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/eruby/ruby.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/fortran/gfortran.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/glsl/cgc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/go/go.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/go/gofmt.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/go/golint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/go/gometalinter.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/go/gotype.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/go/govet.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/haml/haml.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/haml/haml_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/handlebars/handlebars.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/haskell/hdevtools.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/haskell/hlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/haskell/scan.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/haxe/haxe.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/help/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/hss/hss.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/eslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/gjslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/htmlhint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/jshint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/textlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/tidy.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/validator.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/html/w3.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/jade/jade_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/java/checkstyle.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/java/javac.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/closurecompiler.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/eslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/flow.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/gjslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/jscs.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/jshint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/jsl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/jslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/jsxhint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/mixedindentlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/standard.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/javascript/tern_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/json/jsonlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/json/jsonval.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/less/less-lint.coffee create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/less/less-lint.js create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/less/lessc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/less/recess.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/lex/flex.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/limbo/limbo.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/lisp/clisp.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/llvm/llvm.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/lua/luac.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/lua/luacheck.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/markdown/mdl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/markdown/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/markdown/textlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/matlab/mlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/mercury/mmc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/nasm/nasm.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/nix/nix.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/nroff/igor.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/nroff/mandoc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/nroff/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/objc/gcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/objc/oclint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/objcpp/gcc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/objcpp/oclint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ocaml/camlp4o.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/perl/perl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/perl/perlcritic.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/perl/podchecker.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/php/php.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/php/phpcs.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/php/phplint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/php/phpmd.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/po/msgfmt.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/pod/podchecker.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/pod/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/pug/pug_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/puppet/puppet.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/puppet/puppetlint.vim create mode 100755 vim-plugins/bundle/syntastic/syntax_checkers/python/codec.py create mode 100755 vim-plugins/bundle/syntastic/syntax_checkers/python/compile.py create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/flake8.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/frosted.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/mypy.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pep257.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pep8.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/prospector.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/py3kwarn.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pycodestyle.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pydocstyle.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pyflakes.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pylama.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/pylint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/python/python.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/qml/qmllint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/r/lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/r/lintr.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/r/svtools.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/racket/code-ayatollah.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/racket/racket.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/rmd/lintr.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/rnc/rnv.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/rst/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/rst/rst2pseudoxml.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/rst/rstcheck.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/rst/sphinx.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/flog.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/jruby.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/macruby.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/mri.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/reek.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/rubocop.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/ruby/rubylint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sass/sass.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sass/sass_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sass/sassc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scala/fsc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scala/scalac.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scala/scalastyle.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scss/mixedindentlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scss/sass.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scss/sass_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scss/sassc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scss/scss_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/scss/stylelint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sh/bashate.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sh/checkbashisms.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sh/sh.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sh/shellcheck.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/slim/slim_lint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/slim/slimrb.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sml/smlnj.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/solidity/solc.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/spec/rpmlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/sql/sqlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/stylus/stylint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/tcl/nagelfar.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/tex/chktex.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/tex/lacheck.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/tex/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/texinfo/makeinfo.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/texinfo/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/text/atdtool.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/text/igor.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/text/language_check.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/text/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/text/textlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/trig/rapper.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/turtle/rapper.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/turtle/ttl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/twig/twiglint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/typescript/eslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/typescript/tslint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/vala/valac.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/verilog/iverilog.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/verilog/verilator.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/vhdl/ghdl.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/vhdl/vcom.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/vim/vimlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/vim/vint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xhtml/jshint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xhtml/proselint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xhtml/tidy.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xml/plutil.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xml/xmllint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xquery/basex.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/xslt/xmllint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/yacc/bison.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/yaml/jsyaml.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/yaml/yamllint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/yaml/yamlxs.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/yang/pyang.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/z80/z80syntaxchecker.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/zpt/zptlint.vim create mode 100644 vim-plugins/bundle/syntastic/syntax_checkers/zsh/zsh.vim create mode 100644 vim-plugins/bundle/vim-airline/.travis.yml create mode 100644 vim-plugins/bundle/vim-airline/CHANGELOG.md create mode 100644 vim-plugins/bundle/vim-airline/CONTRIBUTING.md create mode 100644 vim-plugins/bundle/vim-airline/Gemfile create mode 100644 vim-plugins/bundle/vim-airline/ISSUE_TEMPLATE.md create mode 100644 vim-plugins/bundle/vim-airline/LICENSE create mode 100644 vim-plugins/bundle/vim-airline/README.md create mode 100644 vim-plugins/bundle/vim-airline/Rakefile create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/builder.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/debug.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/ale.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/branch.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/bufferline.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/capslock.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/commandt.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/csv.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/ctrlp.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/ctrlspace.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/default.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/eclim.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/example.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/hunks.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/neomake.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/netrw.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/nrrwrgn.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/obsession.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/po.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/promptline.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/quickfix.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/syntastic.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/autoshow.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/buffers.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/buflist.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/ctrlspace.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/formatters/default.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/formatters/unique_tail.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/formatters/unique_tail_improved.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tabline/tabs.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tagbar.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/tmuxline.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/undotree.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/unicode.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/unite.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/virtualenv.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/whitespace.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/windowswap.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/wordcount.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/wordcount/formatters/default.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/extensions/ycm.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/highlighter.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/init.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/msdos.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/parts.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/section.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/themes.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/themes/dark.vim create mode 100644 vim-plugins/bundle/vim-airline/autoload/airline/util.vim create mode 100644 vim-plugins/bundle/vim-airline/doc/airline.txt create mode 100644 vim-plugins/bundle/vim-airline/doc/tags create mode 100644 vim-plugins/bundle/vim-airline/plugin/airline.vim create mode 100644 vim-plugins/bundle/vim-airline/t/airline.vim create mode 100644 vim-plugins/bundle/vim-airline/t/builder.vim create mode 100644 vim-plugins/bundle/vim-airline/t/commands.vim create mode 100644 vim-plugins/bundle/vim-airline/t/extensions_default.vim create mode 100644 vim-plugins/bundle/vim-airline/t/highlighter.vim create mode 100644 vim-plugins/bundle/vim-airline/t/init.vim create mode 100644 vim-plugins/bundle/vim-airline/t/parts.vim create mode 100644 vim-plugins/bundle/vim-airline/t/section.vim create mode 100644 vim-plugins/bundle/vim-airline/t/themes.vim create mode 100644 vim-plugins/bundle/vim-airline/t/util.vim create mode 100644 vim-plugins/bundle/vim-commentary/CONTRIBUTING.markdown create mode 100644 vim-plugins/bundle/vim-commentary/README.markdown create mode 100644 vim-plugins/bundle/vim-commentary/doc/commentary.txt create mode 100644 vim-plugins/bundle/vim-commentary/doc/tags create mode 100644 vim-plugins/bundle/vim-commentary/plugin/commentary.vim create mode 100644 vim-plugins/bundle/vim-htmldjango_omnicomplete/CHANGELOG create mode 100644 vim-plugins/bundle/vim-htmldjango_omnicomplete/README.md create mode 100644 vim-plugins/bundle/vim-htmldjango_omnicomplete/autoload/htmldjangocomplete.vim create mode 100644 vim-plugins/bundle/vim-htmldjango_omnicomplete/examples/block_eample.png create mode 100644 vim-plugins/bundle/vim-htmldjango_omnicomplete/examples/extends_example.png create mode 100644 vim-plugins/bundle/vim-htmldjango_omnicomplete/examples/url_example.png create mode 100644 vim-plugins/bundle/vim-indent-object/doc/indent-object.txt create mode 100644 vim-plugins/bundle/vim-indent-object/plugin/indent-object.vim create mode 100644 vim-plugins/bundle/vim-lion/README.md create mode 100644 vim-plugins/bundle/vim-lion/doc/lion.txt create mode 100644 vim-plugins/bundle/vim-lion/plugin/lion.vim create mode 100644 vim-plugins/bundle/vim-markdown/.travis.yml create mode 100644 vim-plugins/bundle/vim-markdown/CONTRIBUTING.md create mode 100644 vim-plugins/bundle/vim-markdown/Makefile create mode 100644 vim-plugins/bundle/vim-markdown/README.md create mode 100644 vim-plugins/bundle/vim-markdown/after/ftplugin/markdown.vim create mode 100644 vim-plugins/bundle/vim-markdown/doc/vim-markdown.txt create mode 100644 vim-plugins/bundle/vim-markdown/ftdetect/markdown.vim create mode 100644 vim-plugins/bundle/vim-markdown/ftplugin/markdown.vim create mode 100755 vim-plugins/bundle/vim-markdown/indent/markdown.vim create mode 100644 vim-plugins/bundle/vim-markdown/registry/markdown.yaml create mode 100644 vim-plugins/bundle/vim-markdown/syntax/markdown.vim create mode 100644 vim-plugins/bundle/vim-markdown/test/README.md create mode 100644 vim-plugins/bundle/vim-markdown/test/folding-toc.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/folding.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/ge_test.md create mode 100644 vim-plugins/bundle/vim-markdown/test/indent-new-list-item.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/indent.md create mode 100644 vim-plugins/bundle/vim-markdown/test/indent.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/map.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/python-folding.vader create mode 100755 vim-plugins/bundle/vim-markdown/test/run-tests.sh create mode 100644 vim-plugins/bundle/vim-markdown/test/syntax-singleline.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/syntax.md create mode 100644 vim-plugins/bundle/vim-markdown/test/syntax.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/table-format.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/toc-autofit.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/toc.vader create mode 100644 vim-plugins/bundle/vim-markdown/test/vimrc create mode 100644 vim-plugins/bundle/vim-powerline/Powerline_default_default_compatible.cache create mode 100644 vim-plugins/bundle/vim-powerline/README.rst create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Colorscheme.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Hi.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Match.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Mod.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Parser.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Segment.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Pl/Theme.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Colorschemes/default.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Colorschemes/solarized.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Colorschemes/solarized16.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Colorschemes/solarized256.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Functions.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Functions/ft_man.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Functions/fugitive.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Functions/hgrev.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Functions/syntastic.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Matches.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments.vim create mode 100755 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/ctrlp.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/ft_man.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/fugitive.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/hgrev.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/rvm.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/syntastic.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/tagbar.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Segments/virtualenv.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Themes/default.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Themes/solarized16.vim create mode 100644 vim-plugins/bundle/vim-powerline/autoload/Powerline/Themes/solarized256.vim create mode 100644 vim-plugins/bundle/vim-powerline/doc/Powerline.txt create mode 100644 vim-plugins/bundle/vim-powerline/doc/tags create mode 100644 vim-plugins/bundle/vim-powerline/fontpatcher/PowerlineSymbols.sfd create mode 100644 vim-plugins/bundle/vim-powerline/fontpatcher/README.rst create mode 100755 vim-plugins/bundle/vim-powerline/fontpatcher/fontpatcher create mode 100644 vim-plugins/bundle/vim-powerline/plugin/Powerline.vim create mode 100644 vim-plugins/bundle/vim-surround/README.markdown create mode 100644 vim-plugins/bundle/vim-surround/doc/surround.txt create mode 100644 vim-plugins/bundle/vim-surround/doc/tags create mode 100644 vim-plugins/bundle/vim-surround/plugin/surround.vim create mode 100644 vim-plugins/bundle/vim-virtualenv/README.mkd create mode 100644 vim-plugins/bundle/vim-virtualenv/autoload/__pycache__/pyvenv.cpython-35.pyc create mode 100644 vim-plugins/bundle/vim-virtualenv/autoload/pyvenv.py create mode 100644 vim-plugins/bundle/vim-virtualenv/autoload/virtualenv.vim create mode 100644 vim-plugins/bundle/vim-virtualenv/doc/virtualenv.txt create mode 100644 vim-plugins/bundle/vim-virtualenv/plugin/virtualenv.vim create mode 100644 vim-plugins/bundle/xptemplate/README.md create mode 100644 vim-plugins/bundle/xptemplate/autoload/XPT.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/XPpum.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/buf.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/cwd/snpt.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/debug.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/diff.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/eval.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/flt.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/ftscope.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/group.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/indent.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/mark.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/msvr.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/ng.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/once.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/option/cwd_snippet.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/option/lib_filter.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/parser.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/ph.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/phfilter.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/priority.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/rctx.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/render.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/settingswitch.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snip.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snipfile.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snipfunc.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snipfuncs/actionhelper.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snipfuncs/evalhelper.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snipfunction.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/snipline.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/st.vim create mode 100644 vim-plugins/bundle/xptemplate/autoload/xpt/util.vim create mode 100644 vim-plugins/bundle/xptemplate/changelog.md create mode 100644 vim-plugins/bundle/xptemplate/doc/tags create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt-function.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt.api.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt.snippet.syn.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt.snippet.tutor.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt/credit.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt/indent.md create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt/option.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xpt/snippet-function.txt create mode 100644 vim-plugins/bundle/xptemplate/doc/xptemplate.txt create mode 100644 vim-plugins/bundle/xptemplate/err-edit-x-dot-c-quot-wait create mode 100644 vim-plugins/bundle/xptemplate/ftdetect/xptemplate.detect.vim create mode 100644 vim-plugins/bundle/xptemplate/ftdetect/xptlog.detect.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/README create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/c.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/cpp.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/doubleSign.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/doubleSingle.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/pattern.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/singleDouble.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/singleSign.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_comment/xml.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_common/cmn.counter.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_common/common.bracketcmpl.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_common/common.path.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_common/common.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_common/inlineComplete.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_condition/c.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_condition/ecma.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_condition/lisp.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_func/c.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_func/ecma.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_loops/c.for.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_loops/c.while.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_loops/for.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_loops/foreach.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_loops/java.for.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_preprocessor/c.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_printf/c.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/_structures/c.like.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/actionscript/actionscript.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/ada/ada.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/c/autoimplem.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/c/c.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/c/c99.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/cabal/cabal.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/cg/cg.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/cmake/cmake.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/cpp/autoimplem.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/cpp/cpp.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/cs/cs.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/css/css.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/dot/dot.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/erlang/erlang.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/eruby/eruby.ftdetect.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/eruby/eruby.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/factor/factor.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/gitconfig/gitconfig.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/gnuplot/gnuplot.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/go/go.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/haskell/haskell.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/help/help.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/html/eruby.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/html/html.ftdetect.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/html/html.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/html/php.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.ftdetect.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/java/java.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/javascript/javascript.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/javascript/jquery.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/json/json.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/lex/lex.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/lua/lua.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/make/make.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/markdown/markdown.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/objc/autoimplem.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/objc/objc.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/ocaml.revised/ocaml.revised.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/ocaml/ocaml.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/perl/perl.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/php/php.ftdetect.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/php/php.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/ps1/ps1.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/python/python.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/r/r.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/rst/rst.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/ruby/ruby.xpt.vim create mode 100755 vim-plugins/bundle/xptemplate/ftplugin/scheme/scheme.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/sh/sh.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/sql/sql.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/svg/svg.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/tcl/tcl.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/tex/tex.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/unknown/unknown.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/vim/autoload.vim.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/vim/vim.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/xhtml/xhtml.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/xml/xml.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/xpt/xpt.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/xptest/xptest.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/xslt/xslt.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/yacc/yacc.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/ftplugin/zsh/zsh.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/personal/Readme.txt create mode 100644 vim-plugins/bundle/xptemplate/personal/ftplugin/_common/personal_example.xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/debug.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xpmark.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xpopup.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xpreplace.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xpt.plugin.highlight.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xptemplate.conf.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xptemplate.parser.vim create mode 100644 vim-plugins/bundle/xptemplate/plugin/xptemplate.vim create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/browse-and-basic.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/c-ifee.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/c-loop-and-wrapper.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/c-macro.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/c-outline.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/py-class-def.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/py-for-inline-cmpl.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/py-optional-ph.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/py-quick-add.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/400x/py-try.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/browse-and-basic.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/c-ifee.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/c-loop-and-wrapper.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/c-macro.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/c-outline.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/py-class-def.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/py-for-inline-cmpl.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/py-optional-ph.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/py-quick-add.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/600x/py-try.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/c-pum-starts-with-f.png create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-box.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-catrom.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-lanczos2.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-lanczos3.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-mitchell.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-mix.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/b-sample.gif create mode 100644 vim-plugins/bundle/xptemplate/readme-img/samples/x.md create mode 100644 vim-plugins/bundle/xptemplate/resource/xptLogo.gif create mode 100644 vim-plugins/bundle/xptemplate/resource/xptLogo.png create mode 100644 vim-plugins/bundle/xptemplate/resource/xptLogo.svg create mode 100644 vim-plugins/bundle/xptemplate/syntax/xpt.vim create mode 100644 vim-plugins/bundle/xptemplate/syntax/xptlog.vim create mode 100644 vim-plugins/bundle/xptemplate/xpt-err create mode 100644 vim-plugins/colors/mayansmoke.vim create mode 100644 vim-plugins/colors/wombat256mod.vim create mode 100644 vim-plugins/filetype.vim create mode 100644 vim-plugins/ftplugin/.python_editing.vim.un~ create mode 100644 vim-plugins/ftplugin/instant-markdown.vim create mode 100644 vim-plugins/ftplugin/python_editing.vim create mode 100644 vim-plugins/templates/.skeleton.py.un~ create mode 100644 vim-plugins/templates/.skeleton.sh.un~ create mode 100644 vim-plugins/templates/skeleton.py create mode 100644 vim-plugins/templates/skeleton.sh create mode 100644 vim-plugins/tmp/%home%viktor%code%python%odin-proj%dev%webapp%Odin%README.md.swp create mode 100644 vim-plugins/tmp/undo/%etc%apt%sources.list create mode 100644 vim-plugins/tmp/undo/%etc%default%locale create mode 100644 vim-plugins/tmp/undo/%etc%fstab create mode 100644 vim-plugins/tmp/undo/%etc%hosts create mode 100644 vim-plugins/tmp/undo/%etc%init%docker.conf create mode 100644 vim-plugins/tmp/undo/%etc%inputrc create mode 100644 vim-plugins/tmp/undo/%etc%ssh%ssh_config create mode 100644 vim-plugins/tmp/undo/%home%viktor%.bash_aliases create mode 100644 vim-plugins/tmp/undo/%home%viktor%.bash_completion create mode 100644 vim-plugins/tmp/undo/%home%viktor%.bashrc create mode 100644 vim-plugins/tmp/undo/%home%viktor%.config%plasma-locale-settings.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%.inputrc create mode 100644 vim-plugins/tmp/undo/%home%viktor%.oh-my-zsh%oh-my-zsh.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%.oh-my-zsh%themes%bira.zsh-theme create mode 100644 vim-plugins/tmp/undo/%home%viktor%.profile create mode 100755 vim-plugins/tmp/undo/%home%viktor%.ssh%config create mode 100644 vim-plugins/tmp/undo/%home%viktor%.tmux%.tmux.conf create mode 100644 vim-plugins/tmp/undo/%home%viktor%.tmux.conf create mode 100644 vim-plugins/tmp/undo/%home%viktor%.tmux.conf.local create mode 100644 vim-plugins/tmp/undo/%home%viktor%.vimrc create mode 100644 vim-plugins/tmp/undo/%home%viktor%.virtualenvs%django%bin%activate create mode 100644 vim-plugins/tmp/undo/%home%viktor%.virtualenvs%reqs.txt create mode 100755 vim-plugins/tmp/undo/%home%viktor%.virtualenvs%venv.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%.zshrc create mode 100644 vim-plugins/tmp/undo/%home%viktor%CLIENTNAME.ovpn create mode 100644 vim-plugins/tmp/undo/%home%viktor%Software_Development%python%techfest%TechFest%techfest%config%settings%base.py create mode 100755 vim-plugins/tmp/undo/%home%viktor%auto%update_vim_and_zsh.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%bobi-rd-links create mode 100755 vim-plugins/tmp/undo/%home%viktor%code%dot_files%setup-vim.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%Odin%config%settings%base.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%Odin%env.example create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%Odin%odin%dashboard%views.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%models.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%urls.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%views.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%settings.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%docker-compose.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%postgres%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Odin%config%settings%base.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Odin%config%urls.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Odin%odin%dashboard%views.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%entrypoint.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%docker-compose.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%README.md create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%config%settings%base.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%config%urls.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%deploy%dev%docker-compose.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%deploy%dev%entrypoint.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%docker-compose.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%odin%templates%authentication%login.html create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%entrypoint.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%projects%fbchat%timeCost.txt create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%projects%techfest%TechFest%techfest%asd create mode 100755 vim-plugins/tmp/undo/%home%viktor%code%python%projects%techfest%TechFest%techfest%manage.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%code%python%refactorer%readme create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockercoins%docker-compose.logging.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%docker-compose.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%esx-vpn%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%postgres%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%postgres%docker-compose.yml create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%redis%Dockerfile create mode 100644 vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%techfest%config%settings%base.py create mode 100644 vim-plugins/tmp/undo/%home%viktor%q create mode 100644 vim-plugins/tmp/undo/%home%viktor%test.css create mode 100644 vim-plugins/tmp/undo/%home%viktor%todo.txt create mode 100755 vim-plugins/tmp/undo/%home%viktor%venv.sh create mode 100755 vim-plugins/tmp/undo/%home%viktor%venvs%install-reqs.sh create mode 100644 vim-plugins/tmp/undo/%home%viktor%viktor create mode 100755 vim-plugins/tmp/undo/%mnt%home%viktor%auto-commit.sh create mode 100644 vim-plugins/tmp/undo/%tmp%crontab.LH6Lsq%crontab create mode 100644 vim-plugins/tmp/undo/%tmp%crontab.Wlpq8x%crontab create mode 100644 vim-plugins/tmp/undo/%tmp%crontab.ZwLCPA%crontab create mode 100644 vim-plugins/tmp/undo/%tmp%zsh5bn4yf create mode 100755 vim-plugins/tmp/undo/%usr%bin%pip3 diff --git a/vim-plugins/.filetype.vim.un~ b/vim-plugins/.filetype.vim.un~ new file mode 100644 index 0000000000000000000000000000000000000000..eabd95d59e18c977d8f0b059dceae7cd6eb2be06 GIT binary patch literal 6111 zcmeI0&ui2`6vwBVty{b6MQ9Nfj42*mO5011Md&XOw1`k)@gQN7c2~05KvJZrhkEvJ zP!Ect2R(YwgBQ}H~9lY_UJH$#&SX;^jS4A34QEEo{eo7uRb!4De?E*fT8RFYx`VTJz{Xs zm8q5FQ^0gejs=73drHkrKtB<7H;mUM1}A#p;?Pro*#QQpYlQ>{P}3R)Kt$Tspew*3 z3Rwz)tBwOVZy%WJ2Ya_&+gZe5$9=Hf_FM@Muym*Z33zibxqyc#WGMu%HV)pL25*R+ zVxdZOwKF0m^7*w}2O zq-s85&Rf0{C$P$2kgaNdfI4Z!Z$M6PU-sMWKz#cEE<33ls5r#A}5ocsN`hU?g8xDdw%IH|$ZNEvZ+pVYr=CX_U z189177@8rK=RMjaM~8vC7PJCcpTSrC2|+_+`Ty9Z~fp zg@u5K8nB6*0vw`{r4YE^46ZVa2#I=k)WVF^>|c)`E?5Z*@|DL{f6n4T=f3UlcV+6T ziVrtYrm-1A>aJ7E*B1bT(g*^Wd!f>7>q|9`u4+H5l2msD^+zq`>|CyrG;O$b&(c2o g-+oVsgpLT=5ob;O=bzHRr5QVPY= +" +" Distributed under the terms of the Vim license. See ":help license". +" +" Usage: +" +" :Rename[!] {newname} + +command! -nargs=* -complete=file -bang Rename call Rename(, '') + +function! Rename(name, bang) + let l:name = a:name + let l:oldfile = expand('%:p') + + if bufexists(fnamemodify(l:name, ':p')) + if (a:bang ==# '!') + silent exe bufnr(fnamemodify(l:name, ':p')) . 'bwipe!' + else + echohl ErrorMsg + echomsg 'A buffer with that name already exists (use ! to override).' + echohl None + return 0 + endif + endif + + let l:status = 1 + + let v:errmsg = '' + silent! exe 'saveas' . a:bang . ' ' . l:name + + if v:errmsg =~# '^$\|^E329' + let l:lastbufnr = bufnr('$') + + if expand('%:p') !=# l:oldfile && filewritable(expand('%:p')) + if fnamemodify(bufname(l:lastbufnr), ':p') ==# l:oldfile + silent exe l:lastbufnr . 'bwipe!' + else + echohl ErrorMsg + echomsg 'Could not wipe out the old buffer for some reason.' + echohl None + let l:status = 0 + endif + + if delete(l:oldfile) != 0 + echohl ErrorMsg + echomsg 'Could not delete the old file: ' . l:oldfile + echohl None + let l:status = 0 + endif + else + echohl ErrorMsg + echomsg 'Rename failed for some reason.' + echohl None + let l:status = 0 + endif + else + echoerr v:errmsg + let l:status = 0 + endif + + return l:status +endfunction diff --git a/vim-plugins/autoload/pathogen.vim b/vim-plugins/autoload/pathogen.vim new file mode 100644 index 0000000..59a75c1 --- /dev/null +++ b/vim-plugins/autoload/pathogen.vim @@ -0,0 +1,353 @@ +" pathogen.vim - path option manipulation +" Maintainer: Tim Pope +" Version: 2.4 + +" Install in ~/.vim/autoload (or ~\vimfiles\autoload). +" +" For management of individually installed plugins in ~/.vim/bundle (or +" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your +" .vimrc is the only other setup necessary. +" +" The API is documented inline below. + +if exists("g:loaded_pathogen") || &cp + finish +endif +let g:loaded_pathogen = 1 + +" Point of entry for basic default usage. Give a relative path to invoke +" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke +" pathogen#surround(). Curly braces are expanded with pathogen#expand(): +" "bundle/{}" finds all subdirectories inside "bundle" inside all directories +" in the runtime path. +function! pathogen#infect(...) abort + for path in a:0 ? filter(reverse(copy(a:000)), 'type(v:val) == type("")') : ['bundle/{}'] + if path =~# '^\%({\=[$~\\/]\|{\=\w:[\\/]\).*[{}*]' + call pathogen#surround(path) + elseif path =~# '^\%([$~\\/]\|\w:[\\/]\)' + call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')') + call pathogen#surround(path . '/{}') + elseif path =~# '[{}*]' + call pathogen#interpose(path) + else + call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')') + call pathogen#interpose(path . '/{}') + endif + endfor + call pathogen#cycle_filetype() + if pathogen#is_disabled($MYVIMRC) + return 'finish' + endif + return '' +endfunction + +" Split a path into a list. +function! pathogen#split(path) abort + if type(a:path) == type([]) | return a:path | endif + if empty(a:path) | return [] | endif + let split = split(a:path,'\\\@]','\\&','') + endif +endfunction + +" Like findfile(), but hardcoded to use the runtimepath. +function! pathogen#runtime_findfile(file,count) abort + let rtp = pathogen#join(1,pathogen#split(&rtp)) + let file = findfile(a:file,rtp,a:count) + if file ==# '' + return '' + else + return fnamemodify(file,':p') + endif +endfunction + +" Section: Deprecated + +function! s:warn(msg) abort + echohl WarningMsg + echomsg a:msg + echohl NONE +endfunction + +" Prepend all subdirectories of path to the rtp, and append all 'after' +" directories in those subdirectories. Deprecated. +function! pathogen#runtime_prepend_subdirectories(path) abort + call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#infect('.string(a:path.'/{}').')') + return pathogen#surround(a:path . pathogen#slash() . '{}') +endfunction + +function! pathogen#incubate(...) abort + let name = a:0 ? a:1 : 'bundle/{}' + call s:warn('Change pathogen#incubate('.(a:0 ? string(a:1) : '').') to pathogen#infect('.string(name).')') + return pathogen#interpose(name) +endfunction + +" Deprecated alias for pathogen#interpose(). +function! pathogen#runtime_append_all_bundles(...) abort + if a:0 + call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#infect('.string(a:1.'/{}').')') + else + call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#infect()') + endif + return pathogen#interpose(a:0 ? a:1 . '/{}' : 'bundle/{}') +endfunction + +if exists(':Vedit') + finish +endif + +let s:vopen_warning = 0 + +function! s:find(count,cmd,file,lcd) + let rtp = pathogen#join(1,pathogen#split(&runtimepath)) + let file = pathogen#runtime_findfile(a:file,a:count) + if file ==# '' + return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'" + endif + if !s:vopen_warning + let s:vopen_warning = 1 + let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE' + else + let warning = '' + endif + if a:lcd + let path = file[0:-strlen(a:file)-2] + execute 'lcd `=path`' + return a:cmd.' '.pathogen#fnameescape(a:file) . warning + else + return a:cmd.' '.pathogen#fnameescape(file) . warning + endif +endfunction + +function! s:Findcomplete(A,L,P) + let sep = pathogen#slash() + let cheats = { + \'a': 'autoload', + \'d': 'doc', + \'f': 'ftplugin', + \'i': 'indent', + \'p': 'plugin', + \'s': 'syntax'} + if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0]) + let request = cheats[a:A[0]].a:A[1:-1] + else + let request = a:A + endif + let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*' + let found = {} + for path in pathogen#split(&runtimepath) + let path = expand(path, ':p') + let matches = split(glob(path.sep.pattern),"\n") + call map(matches,'isdirectory(v:val) ? v:val.sep : v:val') + call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]') + for match in matches + let found[match] = 1 + endfor + endfor + return sort(keys(found)) +endfunction + +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(,'edit',,0) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(,'edit',,0) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(,'edit',,1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(,'split',,1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(,'vsplit',,1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(,'tabedit',,1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(,'pedit',,1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(,'read',,1) + +" vim:set et sw=2 foldmethod=expr foldexpr=getline(v\:lnum)=~'^\"\ Section\:'?'>1'\:getline(v\:lnum)=~#'^fu'?'a1'\:getline(v\:lnum)=~#'^endf'?'s1'\:'=': diff --git a/vim-plugins/bundle/.asd.markdown.un~ b/vim-plugins/bundle/.asd.markdown.un~ new file mode 100644 index 0000000000000000000000000000000000000000..d6041fccd438b00177fc87d00b2e797d5cc8f27e GIT binary patch literal 4169 zcmeH~y-EW?5XU#UToP>*Y+@q^2L|j@2PLU3B*ADQhY@q4iEzO_Xwvxxg4l|Moev>? zfIfgAA{K&;wmLJrv$sbYQ4S5ccy0zFt1QtP3G*C}3JMmSR9y#Tw_p@%vhU`Q3E9)XL1g5C%b>1Uyc1RO>oP6Kc&1THPX zapK{cAvjZIa14rfhsZH~DGL*D9G18|fEy4vOM>GsC$1NQGgSu1pm=9G+fYcraaiK= z4eR=xz-1&j`p~JxLU5+a;3A-41j5bnHWP3hiMTvGITi_=Ey3x~!-63=Q)O@wP|zFU z=AleLNiq(D5UT;WWdfI#;4t)TAvjZIa14rjBU~DRLXvSDmLGZ@Nf^(Me4MJz^8vVk zz~v-3*3pOH%xS`Y{AU0swq3^yno!AtleO_;v4|o#&~sAvplZo>qo?b-^GlV5YPAZ@ zlR?+p^PFwpX>SCrZl?^I9kjf5N4;n9ikOGNYo%YqBYkDyAb)NqYmDl&+L3u>_UXz9 tc@=c%v7PK+LRe$3^n>{f3=GUb z3<5Bk5y)l%i$G`)8_bVnK68TwB+JYYe*vn12}*+~kQ4}m!G9ot8wnE}Dm2^|gW18r z=vV`e4n~Hr5@-$ud%(0298DlLEN(%{Kv4z~1IH;inudgTK~6^lL&Dv_XgUFoCMHNU zAv+q(21g#UC<8R&KoJGYh#;SXA`v9U3gV1L94HiM34jrI2^?_@kcdMr>R?fXoUcG` i0Yw*FY&42!89gAgfl+iFS|fpT5pooPbChZ0^Hl&0Ts*7* literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/.vundle/script-names.vim-scripts.org.json b/vim-plugins/bundle/.vundle/script-names.vim-scripts.org.json new file mode 100644 index 0000000..c5a91ce --- /dev/null +++ b/vim-plugins/bundle/.vundle/script-names.vim-scripts.org.json @@ -0,0 +1 @@ +["test.vim","test.zip","test_syntax.vim","ToggleCommentify.vim","DoxyGen-Syntax","keepcase.vim","ifdef-highlighting","vimbuddy.vim","buffoptions.vim","fortune.vim","drawing.vim","ctags.vim","closetag.vim","htmlcmd.vim","ccase.vim","compiler.tar.gz","ls.vim","calendar.vim","dl.vim","jcommenter.vim","info.vim","hunspchk.zip","EnhCommentify.vim","LoadHeaderFile.vim","mailbrowser.vim","vimmailr.zip","format.vim","vimxmms.tar.gz","sourceSafe.zip","python.vim","a.vim","vimrc.tcl","oravim.txt","javabean.vim","jbean.vim","vimvccmd.zip","dbhelper.tgz","matchit.zip","DrawIt","rcs-menu.vim","bufexplorer.zip","sccs-menu.vim","completeWord.py","Mail_Sig.set","Mail_mutt_alias.set","Mail_Re.set","Triggers.vim","Mail_cc.set","lh-brackets","cscope_macros.vim","calendar.vim","colorize.vim","ConvertBase.vim","TagsMenu.zip","perl.vim","oberon.vim","cvsmenu.vim","dtags","delphi.vim","Embperl_Syntax.zip","whatdomain.vim","emacs.vim","po.vim","CD.vim","_vim_wok_visualcpp01.zip","nqc.vim","vfp.vim","project.tar.gz","pt.vim.gz","dctl.vim.gz","foo.vim","word_complete.vim","aux2tags.vim","javaimp.vim","uri-ref","incfiles.vim","functags.vim","wordlist.vim","files2menu.pm","translate.vim","AppendComment.vim","let-modeline.vim","gdbvim.tar.gz","Mkcolorscheme.vim","brief.vim","plkeyb.vim","vimtips.zip","savevers.vim","vcscommand.vim","nsis.vim","borland.vim","tex.vim","express.vim","winmanager","methods.vim","sqlplus.vim","spec.vim","mail.tgz","TagsBase.zip","nlist.vim","DirDiff.vim","regview.vim","BlockHL","desert.vim","colorscheme_template.vim","SelectBuf","bufNwinUtils.vim","lightWeightArray.vim","golden.vim","torte.vim","borland.vim","idutils","MultiPrompt.vim","blue.vim","csharp.vim","cs.vim","Shell.vim","vim.vim","Decho","asu1dark.vim","Astronaut","sum.vim","quickhigh.tgz","selbuff.vim","ctx-1.15.vim","runscript.vim","random_vim_tip.tar.gz","PushPop.vim","usr2latex.pl","spellcheck.vim","PopupBuffer.vim","TableTab.vim","djgpp.vim","vim-spell.tar.gz","ada.vim","ada.vim","which.vim","VirMark.vim","oracle.vim","sql.vim","words_tools.vim","chcmdmod.vim","increment.vim","CmdlineCompl.vim","SearchCompl.vim","perl_io.vim","darkslategray.vim","undoins.vim","cisco-syntax.tar.gz","ShowMarks","EasyHtml.vim","ctags.vim","ant_menu.vim","increment.vim","autoload_cscope.vim","foldutil.vim","minibufexpl.vim","gtkvim.tgz","FavMenu.vim","auctex.vim","ruby-macros.vim","html-macros.vim","vimsh.tar.gz","libList.vim","perforce.vim","idevim.tgz","email.vim","mcant.vim","multvals.vim","TeTrIs.vim","boxdraw","tf.vim","CreateMenuPath.vim","Lineup--A-simple-text-aligner","Justify","A-better-tcl-indent","ViMail","remcmd.vim","prt_mgr.zip","SuperTab","treeexplorer","vtreeexplorer","bk-menu.vim","glib.vim","win-manager-Improved","ruby-menu.vim","renumber.vim","navajo.vim","wcd.vim","RExplorer","fortune.vim","MRU","Engspchk","vcal.vim","genutils","template-file-loader","charset.vim","ComplMenu.vim","bcbuf.vim","quickfonts.vim","DSP-Make","vimconfig","morse.vim","LaTeX-Help","MRU-Menu","ctx","Perldoc.vim","fine_blue.vim","sokoban.vim","linuxmag.vim","c.vim","lh-vim-lib","tagmenu.vim","xmms-play-and-enqueue","cmvc.vim","tex.vim","bccalc.vim","mkview.vim","VIlisp.vim","mu-template","xl_tiv.vim","night.vim","einstimer.vim","closeb","Brown","Expand-Template","search-in-runtime","Brace-Complete-for-CCpp","Smart-Tabs","spell.vim","print_bw.zip","std_c.zip","Naught-n-crosses","SourceSafe-Integration","Michaels-Standard-Settings","Hex-Output","Visual-Mapping-Maker","perforce","xul.vim","cream-capitalization","mu-marks","imaps.vim","JavaRun","Buffer-Menus","cream-ascii","vimRubyX","update_vim","bnf.vim","lid.vim","UserMenu.vim","midnight.vim","tmpl.vim","ihtml.vim","pascii","XSLT-syntax","htmlmap","lastchange.vim","manxome-foes-colorscheme","vimdoc","doc.vim","csc.vim","aspnet.vim","brief.vim","java.vim","Nsis-color","byteme.vim","scite-colors","Cool-colors","navajo-night","multi.vim","taglist.vim","User-Defined-Type-Highlighter","camo.vim","adrian.vim","PrintWithLNum","sybase.vim","Projmgr","netdict","ExecPerl","candy.vim","txt2pdf.vim","unilatex.vim","potts.vim","sessmgr","outlineMode.vim","aqua","serverlist.vim","ruby-matchit","autodate.vim","xian.vim","utl.vim","Align","bluegreen","showbrace","latextags","vimfortune","TabIndent","Vimacs","xmledit","AnsiEsc.vim","ftpluginruby.vim","pyimp.vim","sql_iabbr.vim","gnome-doc.vim","xemacs-colorscheme","fog-colorscheme","CSV-delimited-field-jumper","cream-sort","grep.vim","ipsec_conf.vim","EDIFACT-position-in-a-segment","tomatosoup.vim","xchat-log-syntax","broadcast.vim","vera.vim","f.vim","highlightline.vim","hungarian_to_english","Buffer-Search","srecord.vim","reformat.vim","multivim","JavaImp.vim","PHPcollection","JHTML-syntax-file","Nightshimmer","cfengine-syntax-file","code2html","prt_hdr","cream-progressbar","QuickAscii","bw.vim","lh-cpp","vtags","vtags_def","ASP-maps","tforge.vim","pf.vim","sand","fstab-syntax","MqlMenu.vim","lcscheck.vim","php.vim","textlink.vim","White-Dust","ruby.vim","Highlight-UnMatched-Brackets","localColorSchemes.vim","multipleRanges.vim","getVar.vim","variableSort.vim","vimrc_nopik","dbext.vim","openroad.vim","java_apidoc.vim","ABAP.vim","rcsdiff.vim","snippet.vim","opsplorer","cream-showinvisibles","bash-support.vim","ldraw.vim","DirDo.vim","oceandeep","atomcoder-vim","Expmod","timstamp.vim","Red-Black","ftpluginruby.vim","indentruby.vim","Denim","mof.vim","vim-game-of-life","ia64.vim","d.vim","PreviewTag.vim","ShowLine.vim","ShowBlockName.vim","SyntaxAttr.vim","DarkOcean.vim","ibmedit.vim","python_match.vim","rnc.vim","LbdbQuery.vim","scratch-utility","plp.vim","LaTeX-functions","ocean.vim","spectre.vim","bugfixes-to-vim-indent-for-verilog","gri.vim","scilab.vim","ShowFunc.vim","maxima.vim","ironman.vim","sean.vim","regRedir.vim","colormenu.vim","eruby.vim","getmail.vim","colour_flip.pl","blackdust.vim","CVSAnnotate.vim","beanshell.vim","svn.vim","muf.vim","tex.vim","cvopsefsa.vim","ActionScript","plsql.vim","Zenburn","Kent-Vim-Extensions","plsql.vim","Registryedit-win32","syslog-syntax-file","MySQL-script-runner","elinks.vim","eukleides.vim","jcl.vim","midnight2.vim","smlisp.vim","lustre","lustre-syntax","VimFootnotes","biogoo.vim","Get-Win32-Short-Name","Get-UNC-Path-Win32","pythonhelper","javaGetSet.vim","copycppdectoimp.vim","cppgetset.vim","titlecase.vim","stata.vim","localvimrc","lilac.vim","spacehi.vim","deldiff.vim","Syntax-for-the-BETA-programming-language","JavaDecompiler.vim","exim.vim","java_checkstyle.vim","gmt.vim","xhtml.vim","EasyAccents","draw.vim","HTML.zip","sql.vim","php_abb","xgen.vim","noweb.vim","PCP-header","vim-templates","rrd.vim","TTCoach","nw.vim","rainbow.zip","VB-Line-Number","vimspell","perl_h2xs","emodeline","VEC","fnaqevan","HTML-Photo-Board","cream-vimabbrev","mup.vim","BlockComment.vim","SearchComplete","LaTeX-Suite-aka-Vim-LaTeX","Transparent","python.vim","aj.vim","MultipleSearch","toothpik.vim","cscomment.vim","cuecat.vim","tagexplorer.vim","ddldbl.vim","markjump.vim","SAPDB_Pascal.vim","Posting","cream-keytest","ManPageView","java_getset.vim","debug.vim","SQLUtilities","Cpp-code-template-generator","ri-browser","sql.vim","poser.vim","waimea.vim","sql.vim","SpellChecker","foldlist","OO-code-completion","transvim.vim","Macromedia-Director-Lingo-Syntax","oz.vim","python_box.vim","greputil.vim","mercury.vim","ZoomWin","mailsig","Varrays","casejump.vim","Printer-Dialog","Indent-Finder","mrswin.vim","python_fold","sr.vim","TVO--The-Vim-Outliner","csv-color","CVS-conflict-highlight","PHPDoc-Script-PDocS","mru.vim","tar.vim","VimITunes.vim","Visual-Studio-.NET-compiler-file","cscope-menu","pdbvim","cppcomplete","mh","blockquote.vim","Mixed-sourceassembly-syntax-objdump","elvis-c-highlighting","colorer-color-scheme","ntservices","PHP-dictionary","tiger.vim","tiger.vim","tab-syntax","cream-email-munge","FavEx","apdl.vim","velocity.vim","russian-menu-translation","nuweb.vim","flyaccent.vim","ebnf.vim","IDLATL-Helper","as.vim","Mines","coffee.vim","adp.vim","mruex","HiCurLine","perl-support.vim","BOG","spreadsheet.vim","BufClose.vim","MPD-syntax-highlighting","help.vim","rd.vim","rcsvers.vim","ASPRecolor.vim","HTML--insert","ctrlax.vim","desc.vim","ntprocesses","caramel.vim","GTK","autolisp-help","wintersday.vim","darkdot","TEXT--fill-char","gnu-c","psp.vim","dawn","allfold","fgl.vim","autonumbering-in-vim","cg.vim","matlab.vim","comment.vim","pyljpost.vim","todolist.vim","northsky","fgl.c","JavaBrowser","seashell","BlackSea","PapayaWhip","ChocolateLiquor","guifontpp.vim","TaQua","HelpClose","colorpalette.vim","python-tools","execmap","cmake.vim","cmake.vim","vimwc.sh","vimbadword.sh","oceanblack.vim","php.vim-html-enhanced","cream-numberlines","asmMIPS","valgrind.vim","toc.vim","Qt.vim","ctags.vim","dante.vim","cpp.vim","gisdk","CRefVim","ruler.vim","Asciitable.vim","Adaryn.vim","BreakPts","brookstream","Russian-menu-for-gvimwin32","Conflict2Diff","tagsubmenu","m4pic.vim","nightwish.vim","Color-Sampler-Pack","ShowPairs","MarkShift","SeeTab","putty","resolv.conf-syntax","cf.vim","make-element","Reindent","otf.vim","sparc.vim","getdp","COMMENT.vim","WC.vim","gmsh.vim","SYN2HTML","tcsoft.vim","GetLatestVimScripts","WML-Wireless-Markup-Language-syntax","Color-Scheme-Test","greyblue.vim","colorize","DOS-Commands","fte.vim","chordpro.vim","vectorscript.vim","uniq.vim","stol.vim","ldap_schema.vim","ldif.vim","proc.vim","esperanto","epperl.vim","headers.vim","sip.vim","gpg.vim","gnupg","xml_cbks","VimDebug","scratch.vim","FeralToggleCommentify.vim","hexman.vim","Dotnet-Dictionaries","random.vim","matrix.vim","VisIncr","autumn.vim","listmaps.vim","Maxlen.vim","MakeDoxygenComment","VS-like-Class-Completion","GenerateMatlabFunctionComment","pgn.vim","genindent.vim","fluxbox.vim","ferallastchange.vim","blockhl2.vim","cschemerotate.vim","ftplugin-for-Calendar","Comment-Tools","incbufswitch.vim","feralalign.vim","VimTweak","calibre.vim","cleanphp","actionscript.vim","POD-Folder","VimSpeak","ample.vim","quancept.vim","po.vim","timecolor.vim","timecolor.vim","Visual-Cpp","NEdit","OIL.vim","cg.vim","parrot.vim","xmmsctrl.vim","isi2bib","sketch.vim","gdl.vim","msp.vim","brainfuck-syntax","sfl.vim","browser-like-scrolling-for-readonly-file","nuvola.vim","SideBar.vim","MSIL-Assembly","cygwin.vim","mupad.vim","trash.vim","wiki.vim","tagMenu","local_vimrc.vim","Hanoi-Tower","sudo.vim","co.vim","xmidas.vim","folddigest.vim","quicksession.vim","sql.vim","pam.vim","kickstart.vim","mdl.vim","gor.vim","yaml.vim","sbutils","movewin.vim","SwapHeader","svn.vim","dhcpd.vim","curcmdmode","cmdalias.vim","Intellisense-for-Vim","HelpExtractor","pic.vim","aiseered.vim","winhelp","opengl.vim","ttcn-syntax","ttcn-indent","VDLGBX.DLL","python_encoding.vim","showpairs-mutated","dusk","LogCVSCommit","peaksea","lpc.vim","hlcontext.vim","dont-click","gvim-with-tabs","VHDL-indent","ttcn-dict","mis.vim","table.vim","Source-Control","ocamlhelp.vim","umber-green","vgrep","lebrief.vim","vimcdoc","whereis.vim","highlight_cursor.vim","ntp.vim","php_console.vim","sessions.vim","pyfold","oasis.vim","gdm.vim","fluka.vim","vartabs.vim","delek.vim","qt2vimsyntax","tokens.vim","set_utf8.vim","python.vim","Relaxed-Green","simpleandfriendly.vim","ttcn-ftplugin","promela.vim","xterm16.vim","bmichaelsen","preview.vim","Walk.vim","FindMakefile","MixCase.vim","javaDoc.vim","gramadoir.vim","XQuery-syntax","expand.vim","zrf.vim","truegrid.vim","dks-il2-tex.vim","vimcommander","Smart-Diffsplit","robinhood.vim","darkblue2.vim","billw.vim","mail.vim","white.vim","HHCS_D","enumratingptn","HHCS","ephtml","rgbasm.vim","Mouse-Toggle","BlockWork","avrasm.vim","yum.vim","asmM68k.vim","find_in_files","mp.vim","Intellisense","VimNotes","gq","TT2-syntax","xmaslights.vim","smartmake","httpclog","RTF-1.6-Spec-in-Vim-Help-Format","systemc_syntax.tar.gz","selected-resizer","PureBasic-Syntax-file","macro.vim","python.vim","text.py","yo-speller","increment.vim","nasl.vim","ptl.vim","pyab","mars.vim","howto-ftplugin","SrchRplcHiGrp.vim","latex-mik.vim","Pydiction","Posting","Gothic","File-local-variables","less.vim","FX-HLSL","NSIS-2.0--Syntax","table_format.vim","LocateOpen","Destructive-Paste","inform.vim","VikiDeplate","cscope-quickfix","BlackBeauty","visual_studio.vim","unmswin.vim","Israelli-hebrew-shifted","phoneticvisual-hebrew-keyboard-mapphone","Redundant-phoneticvisual-Hebrew-keyboar","changesqlcase.vim","changeColorScheme.vim","allout.vim","Syntax-context-abbreviations","srec.vim","emacsmode","bufman.vim","automation.vim","GVColors","Posting","RegExpRef","passwd","buttercream.vim","fluxkeys.vim","ods.vim","AutoAlign","FormatBlock","FormatComment.vim","docbkhelper","armasm","EvalSelection.vim","edo_sea","pylint.vim","winpos.vim","gtags.vim","Viewing-Procmail-Log","Toggle","perl_synwrite.vim","ViewOutput","CharTab","nesC","Tower-of-Hanoi","sharp-Plugin-Added","ratfor.vim","fvl.vim","yiheb-il.vim","sql.vim","Editable-User-Interface-EUI-eui_vim","html_umlaute","nvi.vim","unicodeswitch.vim","pydoc.vim","nedit2","adam.vim","po.vim","sieve.vim","AsNeeded","Nibble","fdcc.vim","CSS-2.1-Specification","sqlldr.vim","tex_autoclose.vim","bufmenu2","svncommand.vim","timestamp.vim","html_portuquese","AutoFold.vim","russian-phonetic_utf-8.vim","colorsel.vim","XpMenu","timelog.vim","virata.vim","VimIRC.vim","TogFullscreen.vim","database-client","ftpsync","svg.vim","Karma-Decompiler","autosession.vim","newheader.vim","sccs.vim","screen.vim","edifact.vim","pqmagic.vim","ProjectBrowse","n3.vim","groovy.vim","StyleChecker--perl","2tex.vim","Scons-compiler-plugin","qf.vim","af.vim","aspnet.vim","psql.vim","multiselect","xml2latex","ToggleComment","php-doc","YAPosting","blugrine","latex_pt","replace","DumpStr.vim","RemoteSaveAll.vim","FTP-Completion","nexus.vim","uptime.vim","asmx86","php.vim-for-php5","autoit.vim","pic18fxxx","IncrediBuild.vim","folds.vim","chela_light","rest.vim","indentpython.vim","Siebel-VB-Script-SVB","Tibet","Maxscript","svn-diff.vim","idf.vim","ssa.vim","GtkFileChooser","Simple-templates","onsgmls.vim","mappinggroup.vim","metacosm.vim","ASPJScript","DoxygenToolkit.vim","VHT","pdftotext","rpl","rpl","rpl","aspvbs.vim","FiletypeRegisters","nant-compiler-script","tbf-vimfiles","Window-Sizes","menu_pt_br.vimfix","TransferChinese.vim","gtk-vim-syntax","2htmlj","glsl.vim","SearchInBuffers.vim","Docbook-XSL-compiler-file","Phrases","Olive","Lynx-Offline-Documentation-Browser","srec.vim","srec.vim","lingo.vim","buflist","lingodirector.vim","PLI-Tools","clipbrd","check-mutt-attachments.vim","corewars.vim","redcode.vim","potwiki.vim","updt.vim","revolutions.vim","feralstub.vim","Phoenity-discontinued","aftersyntax.vim","IndentHL","xmlwf.vim","Visual-Mark","errsign","log.vim","msvc2003","scalefont","uc.vim","commenter","OOP.vim","cream-iso639.vim","cream-iso3166-1","HTMLxC.vim","vimgrep.vim","array.vim","vimtabs.vim","CodeReviewer.vim","cube.vim","uc.vim","uc.vim","sf.vim","monday","ST20-compiler-plugin","R.vim","octave.vim","delete.py","groff-keymap","The-Mail-Suite-tms","browser.vim","InteractHL.vim","curBuf.vim","vsutil.vim","DavesVimPack","Menu-Autohide","pygtk_color","Vive.vim","actionscript.vim","greputils","HC12-syntax-highlighting","asp.vim","click.vim","cecutil","mingw.vim","abap.vim","vimsh","dsPIC30f","BufOnly.vim","ConfirmQuit.vim","fasm-compiler","python_calltips","netrw.vim","cscope_win","lindo.vim","VUT","replvim.sh","xmms.vim","HiColors","MS-Word-from-VIM","multiwin.vim","multiAPIsyntax","earth.vim","Black-Angus","tpp.vim","cfengine.vim","sas.vim","InsertTry.vim","VimRegEx.vim","blitzbasic.vim","Archive","cream-statusline-prototype","TabLaTeX","buffer-perlpython.pl","txt2tags-menu","hamster.vim","hamster.vim","clearsilver","hamster.vim","VB.NET-Syntax","VB.NET-Indent","ACScope","ptu","java_src_link.vim","AutumnLeaf","WhatsMissing.vim","bulgarian.vim","edifile.vim","rcs.vim","pydoc.vim","TWiki-Syntax","pmd.vim","BodySnatcher","MapleSyrup","ooosetup.vim","reverse.vim","mod_tcsoft.vim","PHP-correct-Indenting","anttestreport","lingo.vim","lpl.vim","UpdateModDate.vim","vimUnit","lxTrace","vim2ansi","synmark.vim","vim_faq.vim","jhlight.vim","javascript.vim","css.vim","scratch.vim","Japanese-Keymapping","vcbc.vim","scilab.tar.gz","scilab.tar.gz","tree","FileTree","Cisco-ACL-syntax-highlighting-rules","header.vim","inkpot","jhdark","C-fold","ccimpl.vim","bufkill.vim","perl-test-manage.vim","GetFDCText.vim","cygwin_utils.vim","globalreplace.vim","remote-PHP-debugger","xbl.vim","JavaKit","ledger.vim","ledger.vim","txt2tags","unhtml","pagemaker6","tSkeleton","foldcol.vim","jexplorer","html_danish","EditJava","tolerable.vim","Wiked","substitute.vim","sharp-Indent","GoboLinux-ColorScheme","Abc-Menu","DetectIndent","templates.vim","tComment","Rhythmbox-Control-Plugin","sharp-Syntax","oceanlight","OAL-Syntax","PVCS-access","context_complete.vim","fileaccess","avr.vim","tesei.vim","MultipleSearch2.vim","uniface.vim","turbo.vim","rotate.vim","cream-replacemulti","cleanswap","matrix.vim","hcc.vim","wc.vim","AutoUpload","expander.vim","vfp8.vim","vis","omlet.vim","ocaml.annot.pl","nodiff.vim","increment_new.vim","namazu.vim","c.vim","bsh.vim","WhereFrom","oo","Java-Syntax-and-Folding","ProvideX-Syntax","DNA-Tools","vimCU","cvsvimdiff","latexmenu","XML-Indent","AddIfndefGuard","Vim-JDE","cvsdiff.vim","Super-Shell-Indent","cool.vim","Perldoc-from-VIM","The-NERD-Commenter","darkblack.vim","OpenGLSL","monkeyd-configuration-syntax","OCaml-instructions-signature---parser","plist.vim","my-_vimrc-for-Windows-2000XP7-users","DotOutlineTree","Vim-klip-for-Serence-Klipfolio-Windows","explorer-reader.vim","recent.vim","crontab.freebsd.vim","Rainbow-Parenthesis","mom.vim","DoTagStuff","gentypes.py","YankRing.vim","mathml.vim","xhtml.vim","MS-SQL-Server-Syntax","Mark","autoit.vim","Guardian","octave.vim","Markdown-syntax","desert256.vim","Embedded-Vim-Preprocessor","cvsmenu.vim-updated","Omap.vim","swig","cccs.vim","vc_diff","Teradata-syntax","timekeeper","trt.vim","greens","VIMEN","pike.vim","aspvbs.vim","wood.vim","custom","sienna","tmda_filter.vim","cstol.vim","tex_umlaute","Quick-access-file-Menu","IComplete","Emacs-outline-mode","teol.vim","acsb","drcstubs","drc_indent","rubikscube.vim","php_check_syntax.vim","Mathematica-Syntax-File","Mathematica-Indent-File","SpotlightOpen","autoscroll","vsearch.vim","quantum.vim","ToggleOptions.vim","crontab.vim","tagselect","TinyBufferExplorer","TortoiseSVN.vim","nasl.vim","sadic.tgz","tabs.vim","otherfile.vim","otherfile.vim","LogiPat","luarefvim","keywords.vim","Pida","nightshade.vim","form.vim","rsl.vim","Color-Scheme-Explorer","Project-Browser-or-File-explorer-for-vim","Shortcut-functions-for-KeepCase-script-","maximize.dll","recycle.dll-and-recycle.vim","php_funcinfo.vim","T7ko","cguess","php_template","another-dark-scheme","java_fold","DataStage-Universe-Basic","vimplate","vimplate","bwftmenu.vim","asmM6502.vim","udvm.vim","bwHomeEndAdv.vim","bwUtility.vim","snippetsEmu","perlprove.vim","Dynamic-Keyword-Highlighting","CSVTK","ps2vsm","advantage","The-Stars-Color-Scheme","bufferlist.vim","Impact","Windows-PowerShell-Syntax-Plugin","xslt","verilogams.vim","XHTML-1.0-strict-help-file","sudoku","tidy","Pleasant-colorscheme","VST","A-soft-mellow-color-scheme","Professional-colorscheme-for-Vim","pluginfonts.vim","TabBar","Autoproject","last_change","last_change","AutoTag","switchtags.vim","dmd","VIM-Email-Client","cxxcomplete","The-Vim-Gardener","Colortest","Mud","Mud","Modelines-Bundle","syntaxada.vim","Night-Vision-Colorscheme","PDV--phpDocumentor-for-Vim","eraseSubword","larlet.vim","Cthulhian","SmartCase","HP-41-syntax-file","HP-41-file-type-plugin","Last-Modified","cloudy","xslhelper.vim","adobe.vim","Peppers","syntaxconkyrc.vim","bookmarks.vim","Zopedav","CVSconflict","TextMarker","ldap.vim","asmh8300","TailMinusF","QFixToggle","fpc.vim","Chars2HTML","cfengine-log-file-highlighting","syntaxuil.vim","cHeaderFinder","syntaxudev.vim","charon","SessionMgr","UniCycle","interfaces","gdbvim","build.vim","jay-syntax","d.vim","GreedyBackspace.vim","BuildWin","py_jump.vim","motus.vim","fish.vim","Processing-Syntax","range-search.vim","xml.vim","tagSetting.vim","javap.vim","desertedocean.vim","Zen-Color-Scheme","DarkZen-Color-Scheme","gnupg-symmetric.vim","desertedocean.vim","understated","impactG","DesertedOceanBurnt","Local-configuration","OMNeTpp-NED-syntax-file","Workspace-Manager","bwTemplate","vim_colors","brsccs.vim","bibFindIndex","Auto-debug-your-vim","shorewall.vim","carvedwood","avs.vim","jadl.vim","openvpn","softblue","bufmap.vim","corn","dtdmenu","iptables","CarvedWoodCool","darkerdesert","selection_eval.vim","cfname","checksyntax","textutil.vim","haml.zip","Dev-Cpp-Scheme","HiMtchBrkt","Compiler-Plugin-for-msbuild-csc","XML-Folding","compilerpython.vim","winmanager","xsl-fo","XML-Completion","telstar.vim","colors","AllBuffersToOneWindow.vim","MoveLine","Altair-OptiStruct-Syntax","Low-Contrast-Color-Schemes","vera.vim","VHDL-indent-93-syntax","svn_commit","cecscope","baycomb","VCard-syntax","copypath.vim","CycleColor","Grape-Color","moin.vim","glark.vim","syntaxm4.vim","dtd2vim","docbook44","moria","Ant","netrw.vim","far","bayQua","promela","lbnf.vim","watermark","Sift","vim7-install.sh","yellow","maude.vim","Modeliner","Surveyor","muttrc.vim","CmdlineCompl.vim","cvops-aut.vim","kid.vim","marklar.vim","spectro.vim","StickyCursor","fasm.vim","django.vim","ScrollColors","PluginKiller","jr.vim","JavaScript-syntax","pyte","Sudoku-Solver","Efficient-python-folding","derefined","initng","Align.vim","all-colors-pack","rfc2html","delins.vim","slr.vim","Vimball","Search-unFold","jbase.vim","jbase.vim","LargeFile","TabLineSet.vim","XHTML-1.0-Strict-vim7-xml-data-file","autohi","manuscript.vim","screenpaste.vim","VimVS6","SwitchExt","VhdlNav","smcl.vim","changelog","ClassTree","icalendar.vim","OmniCppComplete","maven2.vim","WinWalker.vim","cmaxx","magic.vim","vbnet.vim","javaimports.vim","habiLight","comments.vim","FlexWiki-syntax-highlighting","timing.vim","backburnerEdit_Visual_Block.vim","txt.vim","amarok.vim","vimproject","TagsParser","remind","pluginbackup.vim","colorsmartin_krischik.vim","Highlighter.vim","mousefunc-option-patch","GetChar-event-patch","pythoncomplete","Tabline-wrapping-patch","foxpro.vim","abolish.vim","perl_search_lib","compilergnat.vim","ftpluginada.vim","bluez","jVim","Simple-Color-Scheme","ScreenShot","autoproto.vim","autoloadadacomplete.vim","CD_Plus","xul.vim","Toggle-Window-Size","icansee.vim","KDE-GVIM-vimopen","Neverness-colour-scheme","Rainbow-Parenthsis-Bundle","patchreview.vim","forth.vim","ftdetectada.vim","gtd","rails.vim","abnf","montz.vim","redstring.vim","php.vim","SQLComplete.vim","systemverilog.vim","settlemyer.vim","findstr.vim","crt.vim","css.vim","tcl.vim","cr-bs-del-space-tab.vim","FlagIt","lookupfile","vim-addon-background-cmd","tobase","Erlang-plugin-package","actionscript.vim","verilog_systemverilog.vim","myghty.vim","ShowFunc","skk.vim","unimpaired.vim","octave.vim","crestore.vim","comment.vim","showhide.vim","warsow.vim","blacklight","color_toon","yanktmp.vim","highlight.vim","pop11.vim","Smooth-Scroll","developer","tcl.vim","colornames","gsl.vim","HelpWords","color_peruse","Chrome-syntax-script","Ada-Bundle","IncRoman.vim","Access-SQL-Syntax-file","vj","phps","Satori-Color-Scheme","SWIG-syntax","tdl.vim","afterimage.vim","cshelper","vimtips_with_comments","scvim","phpx","TIMEIT","phpfolding.vim","pastie.vim","x12-syntax","liquid.vim","doriath.vim","findfuncname.vim","XChat-IRC-Log","gnuchangelog","sh.vim","svncommand-tng","matlab_run.vim","candycode.vim","JDL-syntax-file","myfold.vim","SourceCodeObedience","MultiTabs","cpp.vim","AfterColors.vim","zzsplash","SuperTab-continued.","switch_headers.vim","tikiwiki.vim","str2numchar.vim","addexecmod.vim","ASL","scrollfix","asmx86_64","freya","highlight_current_line.vim","proe.vim","git.zip","cobol.zip","quilt","doxygenerator","The-NERD-tree","dw_colors","mint","redocommand","rubycomplete.vim","asm8051.vim","buftabs","tavi.vim","Alternate-workspace","campfire","blink","doorhinge.vim","darktango.vim","blueprint.vim","pdf.vim","Drupal-5.0-function-dictionary","toggle_words.vim","twilight","Tab-Name","tidy-compiler-script","Vexorian-color-scheme","ekvoli","IndexedSearch","Darcs","DNA-sequence-highlighter","plaintex.vim","Tango-colour-scheme","jdox","MakeInBuilddir","mail_indenter","IndentConsistencyCop","IndentConsistencyCopAutoCmds","tailtab.vim","desertEx","SnippetsMgr","StateExp","VPars","surround.vim","C_Epita","vimGTD","vimksh","Remove-Trailing-Spaces","edc-support","vdb.vim","vdb-duplicated","redcode.vim","Marks-Browser","php_getset.vim","FencView.vim","scons.vim","SWIFT-ATE-Syntax","Business-Objects-Syntax","Test.Base-syntax","darker-robin","Tail-Bundle","tcl_snit.vim","tcl_sqlite.vim","tcl.vim","tabula.vim","WLS-Mode","gvimext.dll--support-tabs-under-VIM-7","renamer.vim","cf.vim","vimpager","pyljvim","capslock.vim","ruby_imaps","Templeet","sal-syntax","exUtility","tAssert","perlcritic-compiler-script","rdark","aedit","vbugle","echofunc.vim","applescript.vim","gnuplot.vim","RunVim.applescript","Info.plist","filetype.vim","R-MacOSX","Utility","vst_with_syn","nightflight.vim","amifmt.vim","compilerflex.vim","javascript.vim","toggle_word.vim","GotoFileArg.vim","kib_darktango.vim","tGpg","kib_plastic","surrparen","TTrCodeAssistor","sparql.vim","BinarySearchMove","lbdbq","kate.vim","conlangs","lojban","surrogat","aspnetcs","lua-support","code_complete","tcl_itcl.vim","tcl_togl.vim","recent.vim","SnipSnap","lispcomplete.vim","etk-vim-syntax","woc","DAMOS-tools","Haml","Menu_SQL_Templates.vim","tcl_critcl.vim","Vimgrep-Replace","cvsdiff","Wombat","tcmdbar.vim","scala.vim","mlint.vim","polycl.vim","cscope-wrapper","apachestyle","javacomplete","hexsearch.vim","wikipedia.vim","Bexec","Audacious-Control","tagscan","erm.vim","fcsh-tools","vibrantink","autoloadTemplate.vim","SETL2","svnvimdiff","smarty.vim","polycfg.vim","IndentHL","c16gui","eclipse.vim","compview","brief2","SearchFold","MultiEnc.vim","calmar256-lightdark.vim","Vimplate-Enhanced","guicolorscheme.vim","Infobasic-Set-Syntax-FTDetect-FTPlugi","Random-Tip-Displayer","gotofile","greplace.vim","sqlvim.sh","Windows-PowerShell-Indent-File","Windows-PowerShell-File-Type-Plugin","buffers_search_and_replace","Yankcode","vimbuddy.vim","NAnt-completion","NAnt-syntax","incfilesearch.vim","NetSend.vim","Hints-for-C-Library-Functions","Hints-for-C-Library-Functions","smp","writebackup","writebackupVersionControl","html-improved-indentation","VimSpy","asciidoc.vim","des3.vim","st.vim","RDF-Namespace-complete","bufpos","BlitzBasic-syntax-and-indentation","tEchoPair","IndentAnything","Javascript-Indentation","nicotine.vim","screenplay","jman.vim","OceanBlack256","haproxy","gitdiff.vim","NesC-Syntax-Highlighting","arpalert","AutoClose","carrot.vim","SearchSyntaxError","clarity.vim","Twitter","Xdebugxs-dictionary-of-functions","textmate16.vim","Jinja","native.vim","mako.vim","eZVim","Directory-specific-settings","errormarker.vim","kpl.vim","tlib","tmru","tselectfiles","tselectbuffer","doctest-syntax","simplefold","genshi.vim","django.vim","fruity.vim","summerfruit.vim","projtags.vim","psql.vim","verilog_emacsauto.vim","securemodelines","voodu.vim","vimoutliner-colorscheme-fix","AutoComplPop","ck.vim","svndiff","Increment-and-Decrement-number","felix.vim","python_import.vim","scmCloseParens","nginx.vim","AnyPrinter","DiffGoFile","automated-rafb.net-uploader-plugin","LustyExplorer","vividchalk.vim","CimpTabulate.vim","vmake","Vim-Setup-system","gmcs.vim","ragtag.vim","synic.vim","vcsnursery","FindFile","ael.vim","freefem.vim","skill_comment.vim","REPL","ReloadScript","camelcasemotion","tmboxbrowser","snipper","creole.vim","QuickBuf","SuperPre","in.vim","perlhelp.vim","tbibtools","vdm.vim","mySqlGenQueryMenu.vim","Scheme-Mode","clibs.vim","cvsps-syntax","javalog.vim","ChocolatePapaya","vpp.vim","omniperl","context-complier-plugin","bbs.vim","syntaxalgol68.vim","Rename","DBGp-client","maxscript.vim","svndiff.vim","visSum.vim","html_french","git-commit","rectcut","OOP-javascript-indentation","Syntax-for-XUL","todo.vim","autofmt","drools.vim","fx.vim","stingray","JSON.vim","QuickFixFilterUtil","outline","Dictionary","VimExplorer","gvim-pdfsync","systemverilog.vim","Vimpress","yavdb","doxygen-support.vim","smart_cr","yasnippets","SmartX","CharSort","cimpl","Tabmerge","Simple256","vimscript-coding-aids","tie.vim","lodgeit.vim","Ruby-Snippets","gvim-extensions-for-TALpTAL","indenthaskell.vim","Highlight-and-Mark-Lines","deb.vim","trivial256","Parameter-Helpers","JET_toggle","pyconsole_vim.vim","lettuce.vim","rcscript","rcscript","Easy-alignment-to-column","Sass","vimremote.sh","halfmove","vimff","GtagsClient","FuzzyFinder","runtests.vim","mosalisp.vim","khaki.vim","two2tango","gitvimdiff","kwiki.vim","Shell-History","triangle.vim","NightVision","confluencewiki.vim","railscasts","bruce.vim","undo_tags","iast.vim","sas.vim","blinking_cursor","lookup.vim","python_ifold","gobgen","ColorSchemeMenuMaker","karma.vim","progressbar-widget","greplist.vim","buffer-status-menu.vim","AutoClose","sessionman.vim","dbext4rdb","openssl.vim","DrillCtg","ttoc","cheat.vim","no_quarter","tregisters","ttags","3DGlasses.vim","Gettext-PO-file-compiler","headerguard.vim","Tailf","erlang-indent-file","brew.vim","camlanot.vim","motion.vim","taskpaper.vim","MarkLines","4NT-Bundle","vimblog.vim","makeprgs","swap-parameters","trag","colorful256.vim","F6_Comment-old","F6_Comment","hookcursormoved","narrow_region","QuickComment","tcalc","AutoScrollMode","of.vim","VimPdb","myvim.vim","mips.vim","Flash-Live-Support-Agent-and-Chatroom","nosql.vim","BlockDiff","vimpp","LustyJuggler","enscript-highlight","idlang.vim","asmc54xx","TranslateIt","ttagecho","soso.vim","PropBank-Semantic-Role-Annotations","matchparenpp","winwkspaceexplorer","Warm-grey","haskell.vim","coq-syntax","xemacs-mouse-drag-copy","checksum.vim","executevimscript","newlisp","yate","ttagcomplete","bbcode","yet-another-svn-script","switch-files","rcg_gui","rcg_term","indenthtml.vim","setsyntax","phtml.vim","industrial","Coq-indent","autoresize.vim","mysqlquery","comments.vim","javascript.vim","gen_vimoptrc.vim","TI-Basic-Syntax","code-snippet","refactor","WuYe","Acpp","view_diff","verilog.vim","reloaded.vim","complval.vim","Puppet-Syntax-Highlighting","Smartput","Tab-Menu","narrow","fakeclip","xml_autons","textobj-user","textobj-datetime","EnvEdit.vim","kwbdi.vim","R.vim","oberon2","hiveminder.vim","scratch","csv-reader","BBCode","chords","robocom","autohotkey-ahk","pspad-colors-scheme","Torquescript-syntax-highlighting","Processing","Io-programming-language-syntax","GCov-plugin","gcov.vim","webpreview","speeddating.vim","HeaderCVS","bg.py","basic-colors","Twitter","SDL-library-syntax-for-C","accurev","Wikidoc-syntax-highlighting","symfony.vim","Noweb","XmlPretty","Socialtext-wiki-syntax-highlighting","byter","tintin.vim","tabpage_sort.vim","syntax-highlighting-for-tintinttpp","repeat.vim","Css-Pretty","PBwiki-syntax-highlighting","sgf.vim","xoria256.vim","undobranche_viewer.vim","showmarks","unibasic.vim","nice-vim","GOBject-Builder-gob2","prmths","VimTrac","quiltdiff","ncss.vim","css_color.vim","sessions.vim","snippets.vim","RecentFiles","marvim","greenvision","leo256","altfile","diffchanges.vim","timestamp","VFT--VIM-Form-Toolkit","DataStage-Server-and-Parallel","sharp-Syntax","GNU-R","renamec.vim","ukrainian-enhanced.vim","patran.vim","dakota.vim","Doxygen-via-Doxygen","jammy.vim","osx_like","PERLDOC2","head.vim","repmo.vim","Railscasts-Theme-GUIand256color","cwiki","rdhelp.txt","cqml.vim","Source-Explorer-srcexpl.vim","ColorSchemeEditor","reliable","vimlatex","smoothPageScroll.vim","file-line","git-file.vim","pig.vim","Latex-Text-Formatter","earendel","Luinnar","dtrace-syntax-file","MountainDew.vim","Syntax-for-Fasta","fpdf.vim","number-marks","Unicode-Macro-Table","antlr3.vim","beauty256","rastafari.vim","gauref.vim","northland.vim","SCMDiff","Boost-Build-v2-BBv2-syntax","vimgen","TwitVim","CoremoSearch","runzip","Relativize","Txtfmt-The-Vim-Highlighter","pyrex.vim","Shobogenzo","seoul","Obvious-Mode","VimTAP","Switch","darkspectrum","qfn","groovy.vim","debugger.py","Limp","bensday","Allegro-4.2-syntax-file","CmdlineComplete","tinymode.vim","STL-improved","sort-python-imports","vimwiki","browser.vim","autopreview","pacific.vim","beachcomber.vim","WriteRoom-for-Vim","h80","nc.vim","rtorrent-syntax-file","previewtag","WarzoneResourceFileSyntax","useful-optistruct-functions","StringComplete","darkrobot.vim","256-jungle","vcsbzr.vim","openser.vim","RemoveDups.VIM","less.bat","upf.vim","darkroom","FFeedVim","xml_taginsert","pac.vim","common_vimrc","journal.vim","publish.vim","railstab.vim","musicbox.vim","buffergrep","dark-ruby","bpel.vim","Git-Branch-Info","Named-Buffers","Contrasty","nagios-syntax","occur.vim","xtemplate","EZComment","vera.vim","silent.vim","colorful","apachelogs.vim","vim-rpcpaste","pygdb","AutoInclude","nightflight2.vim","gladecompletion.vim","flydiff","textobj-fold","textobj-jabraces","DevEiate-theme","jptemplate","cmdlinehelp","blackboard.vim","pink","brook.vim","huerotation.vim","cup.vim","vmv","Specky","fgl.vim","ctags.exe","loremipsum","smartchr","skeleton","linglang","Resolve","SwapIt","Glob-Edit","sipngrep","sipngrep-helper","codepad","fortran.vim","perl-mauke.vim","Gembase-dml-plugins","foldsearch","spring.vim","vimdb.vim","Textile-for-VIM","Text-Especially-LaTeX-Formatter","Clever-Tabs","portablemsys","GoogleSearchVIM","Indent-Highlight","softlight.vim","sofu.vim","QuickName","thegoodluck","auto_wc.vim","zoom.vim","zshr.vim","TextFormat","LaTeX-error-filter","batch.vim","catn.vim","nopaste.vim","Tumblr","log.vim","chlordane.vim","pathogen.vim","session.vim","backup.vim","metarw","metarw-git","ku","bundle","simple-pairs","molokai","postmail.vim","dictview.vim","ku-bundle","ku-metarw","Vimchant","bufmru.vim","trinity.vim","Chimp","indentgenie.vim","rootwater.vim","RltvNmbr.vim","stlrefvim","FastGrep","textobj-lastpat","Superior-Haskell-Interaction-Mode-SHIM","Nekthuth","tags-for-std-cpp-STL-streams-...","clue","louver.vim","diff_navigator","simplewhite.vim","vimxmms2","autoincludex.vim","ScopeVerilog","vcsc.py","darkbone.vim","CCTree","vimmp","Duplicated","sqloracle.vim","automatic-for-Verilog","ClosePairs","dokuwiki.vim","if_v8","vim-addon-sql","htmlspecialchars","mlint.vim","win9xblueback.vim","Verilog-constructs-plugin","RemoveIfdef","Note-Maker","winter.vim","buf2html.vim","sqlite_c","endwise.vim","cern_root.vim","conomode.vim","pdc.vim","CSApprox","MPC-syntax","Django-Projects","QuickTemplate","darkeclipse.vim","Fly-Between-Projects","Cutting-and-pasting-txt-file-in-middle","Fly-Between-Projects","hfile","cheat","sqlplsql","Russian-PLansliterated","advice","stackreg","Pit-Configuration","Robotbattle-Scripting-Language","Lissard-syntax","MatlabFilesEdition","Refactor-Color-Scheme","sql_iabbr-2","ku-args","Yow","lastchange","Miranda-syntax-highlighting","Tango2","textobj-diff","jQuery","Merb-and-Datamapper","Format-Helper","quickrun","gadgetxml.vim","PySmell","Wordnet.vim","Gist.vim","Transmit-FTP","arpeggio","nour.vim","code_complete-new-update","LineCommenter","autocorrect.vim","literal_tango.vim","commentToggle","corporation","W3AF-script-syntax-file","Side-C","Php-Doc","fuzzyjump.vim","shymenu","EasyGrep","Php-Doc","TagManager-BETA","pyflakes.vim","VimLocalHistory","Python-Documentation","Download-Vim-Scripts-as-Cron-Task","UpdateDNSSerial","narrow","Pago","PylonsCommand","sqlserver.vim","msdn_help.vim","nightsky","miko","eyapp","google","outputz","mtys-vimrc","unibox","enzyme.vim","AutoTmpl","AutoTmpl","Python-Syntax-Folding","kellys","session_dialog.vim","wombat256.vim","cdargs","submode","sandbox","translit","smartword","paintbox","Csound-compiler-plugin","python_open_module","Gentooish","ini-syntax-definition","cbackup.vim","Persistent-Abbreviations","ActionScript-3-Omnicomplete","grsecurity.vim","maroloccio","pygtk_syntax","Quagmire","Gorilla","textobj-indent","python_check_syntax.vim","proc.vim","fortran_codecomplete.vim","Rack.Builder-syntax","maroloccio2","eclm_wombat.vim","maroloccio3","ViBlip","pty.vim","Fruidle","Pimp","Changed","shellinsidevim.vim","blood","toggle_unit_tests","VimClojure","fly.vim","lightcolors","vanzan_color","tetragrammaton","VimIM","0scan","DBGp-Remote-Debugger-Interface","Spiderhawk","proton","RunView","guepardo.vim","charged-256.vim","ctxabbr","widower.vim","lilydjwg_green","norwaytoday","WOIM.vim","Dpaste.com-Plugin","reorder-tabs","searchfold.vim","wokmarks.vim","Jifty-syntax","Scratch","Thousand-separator","Perl-MooseX.Declare-Syntax","jpythonfold.vim","Thesaurus","IndentCommentPrefix","po.vim","slimv.vim","nxc.vim","muttaliasescomplete.vim","d.vim","cca.vim","Lucius","earthburn","ashen.vim","css-color-preview","snipMate","Mastermind-board-game","StarRange","SearchCols.vim","EditSimilar","Buffer-grep","repy.vim","xsltassistant.vim","php.vim","BusyBee","wps.vim","Vicle","jam.vim","irssilog.vim","CommentAnyWay","jellybeans.vim","myprojects","gitignore","Match-Bracket-for-Objective-C","gams.vim","numbertotext","NumberToEnglish","ansi_blows.vim","bufMenuToo","simple_comments.vim","runVimTests","utf8-math","Vim-Rspec","Blazer","LogMgr","vimdecdef","apidock.vim","ack.vim","Darkdevel","codeburn","std-includes","WinMove","summerfruit256.vim","lint.vim","Session-manager","spec.vim","Fdgrep","blogit.vim","popup_it","quickfixsigns","lilydjwg_dark","upAndDown","PDV-revised","glimpse","vylight","FSwitch","HTML-AutoCloseTag","Zmrok","LBufWin","tmarks","Skittles-Dark","gvimfullscreen_win32","lighttpd-syntax","reorder.vim","todolist.vim","Symfony","wargreycolorscheme","paster.vim","Haskell-Cuteness","svk","nextfile","vimuiex","TaskList.vim","send.vim","PA_translator","textobj-entire","xptemplate","Rubytest.vim","vimstall","sdticket","vimtemplate","graywh","SpamAssassin-syntax","ctk.vim","textobj-function","neocomplcache","up2picasaweb","ku-quickfix","TODO-List","ProtoDef","Cabal.vim","Vimya","exVim","Vim-R-plugin","explorer","compilerjsl.vim","dosbatch-indent","nimrod.vim","csindent.vim","SearchPosition","smartmatcheol.vim","google.vim","ScmFrontEnd-former-name--MinSCM","blogger","jlj.vim","tango-morning.vim","haskell.vim","PLI-Auto-Complete","python_coverage.vim","Erlang_detectVariable","bandit.vim","TagHighlight","Templates-for-Files-and-Function-Groups","darkburn","PBASIC-syntax","darkZ","fitnesse.vim","bblean.vim","cuteErrorMarker","Arduino-syntax-file","squirrel.vim","Simple-R-Omni-Completion","VOoM","Changing-color-script","g15vim","clips.vim","plumbing.vim","ywvim","mako.vim","HtmlHelper","Mark","setget","shell_it","fastlane","TuttiColori-Colorscheme","tango-desert.vim","Hoogle","smarttill","cocoa.vim","altercmd","supercat.vim","nature.vim","GoogleReader.vim","textobj-verticalbar","cursoroverdictionary","Colorzone","colorsupport.vim","FastLadder.vim","herald.vim","zOS-Enterprise-Compiler-PLI","cuteTodoList","iabassist","dual.vim","kalt.vim","kaltex.vim","fbc.vim","operator-user","ats-lang-vim","MediaWiki-folding-and-syntax-highlight","EnhancedJumps","elise.vim","elisex.vim","Dictionary-file-for-Luxology-Modo-Python","argtextobj.vim","PKGBUILD","editsrec","regreplop.vim","ReplaceWithRegister","mrpink","tiddlywiki","PA_ruby_ri","EnumToCase","commentop.vim","SudoEdit.vim","vimrc","Screen-vim---gnu-screentmux","sign-diff","nextCS","Tag-Signature-Balloons","UltiSnips","textobj-syntax","mutt-aliases","mutt-canned","Proj","arc.vim","AutoFenc.vim","cssvar","math","Rename2","translit_converter","Syntax-Highlighting-for-db2diag.log","jsbeautify","tkl.vim","jslint.vim","donbass.vim","sherlock.vim","Notes","Buffer-Reminder-Remake","PreviewDialog","Logcat-syntax-highlighter","Syntastic","bib_autocomp.vim","v2.vim","bclear","vimper","blue.vim","ruby.vim","greek_polytonic.vim","git-cheat","falcon.vim","nuweb-multi-language","d8g_01","d8g_02","d8g_03","d8g_04","vimdiff-vcs","falcon.vim","banned.vim","delimitMate.vim","evening_2","color-chooser.vim","forneus","Mustang2","Quich-Filter","Tortoise","qtmplsel.vim","falcon.vim","falcon.vim","dull","Better-Javascript-Indentation","Join.vim","emv","vimscript","pipe.vim","JumpInCode","Conque-Shell","Crazy-Home-Key","grex","whitebox.vim","logpad.vim","vilight.vim","tir_black","gui2term.py","moss","python-tag-import","Django-helper-utils","operator-replace","DumbBuf","template-init.vim","wwwsearch","cpan.vim","Melt-Vim","InsertList","rargs.vim","cmdline-increment.vim","popup_it","perdirvimrc--Autoload-vimrc-files-per-di","hybridevel","phpErrorMarker","Functionator","CheckAttach.vim","SoftTabStops","Pasto","tango.vim","Windows-PowerShell-indent-enhanced","NERD_tree-Project","JavaScript-syntax-add-E4X-support","php_localvarcheck.vim","chocolate.vim","assistant","md5.vim","Nmap-syntax-highlight","haxe_plugin","fontsize.vim","InsertChar","hlasm.vim","term.vim","MailApp","PyMol-syntax","hornet.vim","Execute-selection-in-Python-and-append","testname","Asneeded-2","smarty-syntax","DBGp-client","sqlplus.vim","unicode.vim","baan.vim","libperl.vim","filter","multisearch.vim","RTM.vim","Cobalt-Colour-scheme","roo.vim","csv.vim","mimicpak","xmms2ctrl","buf_it","template.vim","phpcodesniffer.vim","wikinotes","powershellCall","HiVim","QuickFixHighlight","noused","coldgreen.vim","vorg","FlipLR","simple-comment","ywchaos","haskellFold","pod-helper.vim","Script-Walker","color-codes-SQL-keywords-from-Oracle-11g","FindInNERDTree","Speedware","perlomni.vim","go.vim","go.vim","github-theme","vimmpc","exjumplist","textobj-fatpack","grey2","prettyprint.vim","JumpInCode-new-update","GNU-as-syntax","NSIS-syntax-highlighting","colqer","gemcolors","Go-Syntax","fortran_line_length","Ruby-Single-Test","OmniTags","FindMate","signature_block.vim","record-repeat.vim","php.vim","signal_dec_VHDL","HTML-menu-for-GVIM","spinner.vim","RDoc","XPstatusline","rc.vim","mib_translator","Markdown","growlnotify.vim","JavaAspect","gsession.vim","cgc.vim","manuscript","CodeOverview","bluechia.vim","slurper.vim","create_start_fold_marker.vim","doubleTap","filetype-completion.vim","vikitasks","PyPit","open-terminal-filemanager","Chrysoprase","circos.vim","TxtBrowser","gitolite.vim","ShowFunc.vim","AuthorInfo","Cfengine-3-ftplugin","Cfengine-version-3-syntax","vim-addon-manager","Vim-Condensed-Quick-Reference","hlint","Enhanced-Ex","Flex-Development-Support","restart.vim","selfdot","syntaxGemfile.vim","spidermonkey.vim","pep8","startup_profile","extended-help","tplugin","SpitVspit","Preamble","Mercury-compiler-support","FirstEffectiveLine.vim","vimomni","std.vim","tocterm","apt-complete.vim","SnippetComplete","Dictionary-List-Replacements","Vimrc-Version-Numbering","mark_tools","rfc-syntax","fontzoom.vim","histwin.vim","vim-addon-fcsh","vim-addon-actions","superSnipMate","bzr-commit","hexHighlight.vim","Multi-Replace","strawimodo","vim-addon-mw-utils","actionscript3id.vim","RubySinatra","ccvext.vim","visualstar.vim","AutomaticLaTeXPlugin","AGTD","bvemu.vim","GoogleSuggest-Complete","The-Max-Impact-Experiment","cflow-output-colorful","SaneCL","c-standard-functions-highlight","Wavefronts-obj","hypergit.vim","hex.vim","csp.vim","load_template","emoticon.vim","emoticon.vim","bisect","groovyindent","liftweb.vim","line-number-yank","neutron.vim","SyntaxMotion.vim","Doxia-APT","daemon_saver.vim","ikiwiki-nav","ucf.vim","ISBN-10-to-EAN-13-converter","sha1.vim","hmac.vim","cucumber.zip","mrkn256.vim","fugitive.vim","blowfish.vim","underwater","trogdor","Parameter-Text-Objects","php-doc-upgrade","ZenCoding.vim","jumphl.vim","qmake--syntax.vim","R-syntax-highlighting","BUGS-language","AddCppClass","loadtags","OpenCL-C-syntax-highlighting","pummode","stickykey","rcom","SaveSigns","ywtxt","Rackup","colorselector","TranslateEnToCn","utlx_interwiki.vim","BackgroundColor.vim","django-template-textobjects","html-advanced-text-objects","candyman.vim","tag_in_new_tab","indentpython","vxfold.vim","simplecommenter","CSSMinister","Twee-Integration-for-Vim","httplog","treemenu.vim","delete-surround-html","tumblr.vim","vspec","tcommand","ColorX","alex.vim","happy.vim","Cppcheck-compiler","vim-addon-completion","spin.vim","EasyOpts","Find-files","Bookmarking","tslime.vim","vimake","Command-T","PickAColor.vim","grsecurity","rename.vim","tex-turkce","motpat.vim","orange","Mahewincs","Vim-Title-Formatter","syntaxhaskell.vim","tesla","XTermEsc","vim-indent-object","noweb.vim","vimgdb","cmd.vim","RST-Tables","css3","clevercss.vim","compilerpython.vim","cmakeref","operator-camelize","scalacommenter.vim","vicom","acomment","smartmove.vim","vimform","changesPlugin","Maynard","Otter.vim","ciscoasa.vim","translit3","vimsizer","tex_mini.vim","lastpos.vim","Manuals","VxLib","256-grayvim","mdark.vim","aftersyntaxc.vim","mayansmoke","repeater.vim","ref.vim","recover.vim","Slidedown-Syntax","ShowMultiBase","reimin","self.vim","kiss.vim","Trac-Wikimarkup","NrrwRgn","ego.vim","Delphi-7-2010","CodeFactory","JavaScript-Indent","tagmaster","qiushibaike","dc.vim","tf2.vim","glyph.vim","OutlookVim","GetFile","vimtl","RTL","Sessions","autocomp.vim","TortoiseTyping","syntax-codecsconf","cvsdiff.vim","yaifa.vim","Silence","PNote","mflrename","nevfn","Tumble","vplinst","tony_light","pyref.vim","legiblelight","truebasic.vim","writebackupToAdjacentDir","GUI-Box","LaTeX-Box","mdx.vim","leglight2","RemoveFile.vim","formatvim","easytags.vim","SingleCompile","CFWheels-Dictionary","fu","skk.vim","tcbuild.vim","grails-vim","django_templates.vim","PySuite","shell.vim","vim-addon-sbt","PIV","xpcomplete","gams","Search-in-Addressbook","teraterm","CountJump","darkBlue","underwater-mod","open-browser.vim","rvm.vim","Vim-Script-Updater","beluga-syntax","tac-syntax","datascript.vim","phd","obsidian","ez_scroll","vim-snipplr","vim-haxe","hgrev","zetavim","quickrun.vim","wmgraphviz","reload.vim","Smooth-Center","session.vim","pytestator","sablecc.vim","CSS-one-line--multi-line-folding","vorax","slang_syntax","ikiwiki-syntax","opencl.vim","gitview","ekini-dark-colorscheme","pep8","pyflakes","tabops","endline","pythondo","obviously-insert","toggle_mouse","regbuf.vim","mojo.vim","luainspect.vim","pw","phpcomplete.vim","SyntaxComplete","vimgcwsyntax","JsLint-Helper","Haskell-Highlight-Enhanced","typeredeemer","BusierBee","Shapley-Values","help_movement","diff_movement","fortunes_movement","mail_movement","CSS3-Highlights","vimpluginloader","jsonvim","vimstuff","vimargumentchec","vimcompcrtr","vimoop","yamlvim","DokuVimKi","jade.vim","v4daemon","ovim","Starting-.vimrc","gedim","current-func-info.vim","undofile.vim","vim-addon-ocaml","Haskell-Conceal","trailing-whitespace","rdark-terminal","mantip","htip","python_showpydoc.vim","tangoshady","bundler","cHiTags","Quotes","Smart-Parentheses","operator-reverse","python_showpydoc","rslTools","presets","View-Ports","Replay.vim","qnamebuf","processing-snipmate","ProjectTag","Better-CSS-Syntax-for-Vim","indexer.tar.gz","285colors-with-az-menu","LanguageTool","VIM-Color-Picker","Flex-4","lodestone","Simple-Javascript-Indenter","porter-stem","stem-search","TeX-PDF","PyInteractive","HTML5-Syntax-File","VimgrepBuffer","ToggleLineNumberMode","showcolor.vim","html5.vim","blockinsert","LimitWindowSize","minibufexplorerpp","tdvim_FoldDigest","bufsurf","Open-associated-programs","aspnetide.vim","Timer-routine","Heliotrope","CaptureClipboard","Shades-of-Amber","Zephyr-Color-Scheme","Jasmine-snippets-for-snipMate","swap","RubyProxy","L9","makesd.vim","ora-workbench","sequence","phaver","Say-Time","pyunit","clang","Son-of-Obisidian","Selenitic","diff-fold.vim","Bird-Syntax","Vimtodo","cSyntaxAfter","Code.Blocks-Dark","omnetpp","command-list","open_file_from_clip_board","CommandWithMutableRange","RangeMacro","tchaba","kirikiri.vim","Liquid-Carbon","actionscript.vim","ProjectCTags","Python-2.x-Standard-Library-Reference","Python-3.x-Standard-Library-Reference","ProjectParse","Tabbi","run_python_tests","eregex.vim","OMNeTpp4.x-NED-Syntax-file","Quotes","looks","Lite-Tab-Page","Show-mandictperldocpydocphpdoc-use-K","newsprint.vim","pf_earth.vim","RevealExtends","openurl.vim","southernlights","numbered.vim","grass.vim","toggle_option","idp.vim","sjump.vim","vim_faq","Sorcerer","up.vim","TrimBlank","clang-complete","smartbd","Gundo","altera_sta.vim","altera.vim","vim-addon-async","vim-refact","vydark","gdb4vim","savemap.vim","operator-html-escape","Mizore","maxivim","vim-addon-json-encoding","tohtml_wincp","vim-addon-signs","unite-colorscheme","unite-font","vim-addon-xdebug","VimCoder.jar","FTPDEV","lilypink","js-mask","vim-fileutils","stakeholders","PyScratch","Blueshift","VimCalc","unite-locate","lua_omni","verilog_systemverilog_fix","mheg","void","VIP","Smart-Home-Key","tracwiki","newspaper.vim","rdist-syntax","zenesque.vim","auto","VimOrganizer","stackoverflow.vim","preview","inccomplete","screen_line_jumper","chance-of-storm","unite-gem","devbox-dark-256","lastchange.vim","qthelp","auto_mkdir","jbosslog","wesnothcfg.vim","UnconditionalPaste","unite-yarm","NERD_Tree-and-ack","tabpagecolorscheme","Figlet.vim","Peasy","Indent-Guides","janitor.vim","southwest-fog","Ceasy","txt.vim","Shebang","vimblogger_ft","List-File","softbluev2","eteSkeleton","hdl_plugin","blockle.vim","ColorSelect","notes.vim","FanVim","Vimblr","vcslogdiff","JumpNextLongLine","vimorator","emacsmodeline.vim","textobj-rubyblock","StatusLineHighlight","shadow.vim","csc.vim","JumpToLastOccurrence","perfect.vim","polytonic.utf-8.spl","opencl.vim","iim.vim","line-based_jump_memory.vim","hdl_plugin","localrc.vim","BOOKMARKS--Mark-and-Highlight-Full-Lines","chapa","unite.vim","neverland.vim--All-colorschemes-suck","fokus","phpunit","vim-creole","Search-Google","mophiaSmoke","mophiaDark","Google-translator","auto-kk","update_perl_line_directives","headerGatesAdd.vim","JellyX","HJKL","nclipper.vim","syntax_check_embedded_perl.vim","xterm-color-table.vim","zazen","bocau","supp.vim","w3cvalidator","toner.vim","QCL-syntax-hilighting","kkruby.vim","hdl_plugin","Mind_syntax","Comment-Squawk","neco-ghc","pytest.vim","Enhanced-Javascript-syntax","LispXp","Nazca","obsidian2.vim","vim-addon-sml","pep8","AsyncCommand","lazysnipmate","Biorhythm","IniParser","codepath.vim","twilight256.vim","PreciseJump","cscope_plus.vim","Cobaltish","neco-look","XFST-syntax-file","Royal-Colorschemes","pbcopy.vim","golded.vim","Getafe","ParseJSON","activity-log","File-Case-Enforcer","Microchip-Linker-Script-syntax-file","RST-Tables-works-with-non-english-langu","lexctwolc-Syntax-Highlighter","mxl.vim","fecompressor.vim","Flog","Headlights","Chess-files-.pgn-extension","vim-paint","vundle","funprototypes.vim","SVF-syntax","indentpython.vim","Compile","dragon","Tabular","Tagbar","vimake-vim-programmers-ide","align","windows-sif-syntax","csc.snippets","tidydiff","latte","thermometer","Clean","Neopro","Vim-Blog","bitly.vim","bad-apple","robokai","makebg","asp.net","Atom","vim-remote","IPC-syntax-highlight","PyREPL.vim","phrase.vim","virtualenv.vim","reporoot.vim","rebar","urilib","visualctrlg","textmanip.vim","compilerg95.vim","Risto-Color-Scheme","underlinetag","paper","compilergfortran.vim","compilerifort.vim","Scala-argument-formatter","FindEverything","vim_etx","emacs-like-macro-recorder","To-Upper-case-case-changer","vim-erlang-skeleteons","taglist-plus","PasteBin.vim","compilerpcc.vim","scrnpipe.vim","TeX-9","extradite.vim","VimRepress","text-object-left-and-right","Scala-Java-Edit","vim-stylus","vim-activator","VimOutliner","avr8bit.vim","iconv","accentuate.vim","Solarized","Gravity","SAS-Syntax","gem.vim","vim-scala","Rename","EasyMotion","boost.vim","ciscoacl.vim","Distinguished","mush.vim","cmdline-completion","UltraBlog","GetFilePlus","strange","vim-task","Tab-Manager","XPath-Search","plantuml-syntax","rvmprompt.vim","Save-Current-Font","fatrat.vim","Sesiones.vim","opener.vim","cascading.vim","Google-Translate","molly.vim","jianfan","Dagon","plexer","vim-online","gsearch","Message-Formatter","sudoku_game","emacscommandline","fso","openscad.vim","editqf","visual-increment","gtrans.vim","PairTools","Table-Helper","DayTimeColorer","Amethyst","hier","Javascript-OmniCompletion-with-YUI-and-j","m2sh.vim","colorizer","Tabs-only-for-indentation","modelica","terse","dogmatic.vim","ro-when-swapfound","quit-another-window","gitv","Enter-Indent","jshint.vim","pacmanlog.vim","lastmod.vim","ignore-me","vim-textobj-quoted","simplenote.vim","Comceal","checklist.vim","typofree.vim","Redhawk-Vim-Plugin","vim-soy","Find-XML-Tags","cake.vim","vim-coffee-script","browserprint","jovial.vim","pdub","ucompleteme","ethna-switch","Fanfou.vim","colorv.vim","Advancer-Abbreviation","Auto-Pairs","octave.vim","cmdline-insertdatetime","reorder-columns","calm","nicer-vim-regexps","listtag","Diablo3","vim_django","nautilus-py-vim","IDLE","operator-star","XQuery-indentomnicompleteftplugin","browsereload-mac.vim","splitjoin.vim","vimshell-ssh","ShowMarks7","warez-colorscheme","Quicksilver.vim","wikilink","Buffergator","Buffersaurus","ri-viewer","beautiful-pastebin","chef.vim","indsas","lua.vim","AutoSaveSetting","resizewin","cpp_gnuchlog.vim","tangolight","IDSearch","frawor","git_patch_tags.vim","snipmate-snippets","widl.vim","WinFastFind","ReplaceFile","gUnit-syntax","Handlebars","svnst.vim","The-Old-Ones","Atomic-Save","vim-orgmode","Vimper-IDE","vimgtd","gnupg.vim","Filesearch","VimLite","AutoCpp","simpleRGB","cakephp.vim","googleclosurevim","vim-task-org","brep","vrackets","xorium.vim","transpose-words","Powershell-FTDetect","LycosaExplorer","ldap_schema.vim","Lookup","Intelligent-Tags","lemon.vim","SnipMgr","repeat-motion","skyWeb","Toxic","sgmlendtag","rake.vim","orangeocean256","cdevframework","textgenshi.vim","aldmeris","univresal-blue-scheme","cab.vim","copy-as-rtf","baobaozhu","rfc5424","saturn.vim","tablistlite.vim","functionlist.vim","hints_opengl.vim","wikiatovimhelp","ctags_cache","werks.vim","RegImap","Calm-Breeze","Rst-edit-block-in-tab","Ambient-Color-Scheme","golden-ratio","annotatedmarks","quickhl.vim","FixCSS.vim","enablelvimrc.vim","commentary.vim","prefixer.vim","cssbaseline.vim","html_emogrifier.vim","Premailer.vim","tryit.vim","fthook.vim","sql.vim","zim-syntax","Transcription-Name-Helper","Rcode","obvious-resize","lemon256","swapcol.vim","vim-ipython","EasyPeasy","chinachess.vim","tabpage.vim","tabasco","light2011","numlist.vim","fuzzee.vim","SnippetySnip","melt-syntax","diffwindow_movement","noweboutline.vim","Threesome","quickfixstatus.vim","SimpylFold","indent-motion","mcabberlog.vim","easychair","right_align","galaxy.vim","vim-pandoc","putcmd.vim","vim-rpsl","olga_key","statusline.vim","bad-whitespace","ctrlp.vim","sexy-railscasts","TagmaTips","blue_sky","gccsingle.vim","kiwi.vim","mediawiki","Vimerl","MarkdownFootnotes","linediff.vim","watchdog.vim","syntaxdosini.vim","pylint-mode","NagelfarVim","TclShell","google_prettify.vim","Vimpy","vim-pad","baancomplete","racket.vim","scribble.vim","racket-auto-keywords.vim","Ambient-Theme","White","vim-dokuwiki","slide-show","Speech","vim-google-scribe","fcitx.vim","TagmaTasks","vimroom.vim","MapFinder","mappingmanager","ahkcomplete","Python-mode-klen","tagfinder.vim","rainbow_parentheses.vim","Lyrics","abbott.vim","wiki.vim","todotxt.vim","RST-Tables-CJK","utags","mango.vim","indentfolds","Twilight-for-python","Python-Syntax","vim-json-bundle","VIM-Metaprogramming","statline","SonicTemplate.vim","vim-mnml","Tagma-Buffer-Manager","desert-warm-256","html-source-explorer","codepaper","php-doc","Cpp11-Syntax-Support","node.js","Cleanroom","anwolib","fontforge_script.vim","prop.vim","vim-symbols-strings","vim-diff","openrel.vim","apg.vim","TFS","ipi","RSTO","project.vim","tex_AutoKeymap","log.vim","mirodark","vim-kickstart","MatchTag","Lisper.vim","Dart","vim-ocaml-conceal","csslint.vim","nu42dark-color-scheme","Colour-theme-neon-pk","simple_bookmarks.vim","modeleasy-vim-plugin","aurum","inline_edit.vim","better-snipmate-snippet","LastBuf.vim","SchemeXp","TVO--The-Vim-Outliner-with-asciidoc-supp","yankstack","vim-octopress","ChickenMetaXp","ChickenSetupXp","nscripter.vim","weibo.vim","vim-python-virtualenv","vim-django-support","nose.vim","nodeunit.vim","SpellCheck","lrc.vim","cue.vim","visualrepeat","git-time-lapse","boolpat.vim","Mark-Ring","Festoon","dokuwiki","unite-scriptenames","ide","tocdown","Word-Fuzzy-Completion","rmvim","Xoria256m","shelp","Lawrencium","grads.vim","epegzz.vim","Eddie.vim","behat.zip","phidgets.vim","gtags-multiwindow-browsing","lightdiff","vm.vim","SmartusLine","vimprj","turbux.vim","html-xml-tag-matcher","git-diff","ft_improved","nerdtree-ack","ambicmd.vim","fountain.vim","Powerline","EasyDigraph.vim","autosess","DfrankUtil","ruscmd","textobj-line","Independence","qtpy.vim","switch-buffer-quickly","simple-dark","gf-user","gf-diff","viewdoc","Limbo-syntax","rhinestones","buffet.vim","pwdstatus.vim","gtk-mode","indentjava.vim","coffee-check.vim-B","coffee-check.vim","compot","xsnippet","nsl.vim","vombato-colorscheme","ocamlMultiAnnot","mozpp.vim","mozjs.vim","e2.lua","gmlua.vim","vim-punto-switcher","toggle_comment","CapsulaPigmentorum.vim","CompleteHelper","CamelCaseComplete","vim-addon-haskell","tagport","cd-hook","pfldap.vim","WhiteWash","TagmaLast","Gummybears","taskmanagementvim","flymaker","ditaa","lout.vim","vim-flake8","phpcs.vim","badwolf","jbi.vim","Vim-Support","murphi.vim","argumentative.vim","editorconfig-vim","thinkpad.vim","Coverity-compiler-plugin","vim-wmfs","Trailer-Trash","ipyqtmacvim.vim","writebackupAutomator","CodeCommenter","sandbox_hg","pdv-standalone","Yii-API-manual-for-Vim","fountainwiki.vim","hop-language-syntax-highlight","Skittles-Berry","django.vim","pyunit.vim","EasyColour","tmpclip.vim","Improved-paragraph-motion","tortex","Add-to-Word-Search","fwk-notes","calendar.vim","mystatusinfo.vim","workflowish","tabman.vim","flashdevelop.vim","hammer.vim","Colorizer--Brabandt","less-syntax","DynamicSigns","ShowTrailingWhitespace","DeleteTrailingWhitespace","JumpToTrailingWhitespace","source.vim","mediawiki.vim","regexroute.vim","css3-syntax-plus","diff-toggle","showmarks2","Finder-for-vim","vim-human-dates","vim-addon-commenting","cudajinja.vim","vim-pomodoro","phpqa","TaskMotions","ConflictMotions","Sauce","gitvimrc.vim","instant-markdown.vim","vroom","portmon","spacebox.vim","paredit.vim","Ayumi","Clam","vim_movement","vbs_movement","dosbatch_movement","TextTransform","HyperList","python-imports.vim","youdao.dict","XDebug-DBGp-client-for-PHP","Vim-Gromacs","vimux","Vimpy--Stoner","readnovel","Vitality","close-duplicate-tabs","StripWhiteSpaces","vim-jsbeautify","clean_imports","WebAPI.vim","flipwords.vim","restore_view.vim","SpaceBetween","autolink","vim-addon-rdebug","DBGp-X-client","Splice","vim-htmldjango_omnicomplete","vim-addon-ruby-debug-ide","a-new-txt2tags-syntax","vim-cpp-auto-include","rstatusline","muxmate","vim4rally","SAS-Indent","modx","ucpp-vim-syntax","bestfriend.vim","vim-dasm","evervim","Fortune-vimtips","VDBI.vim","Ideone.vim","neocomplcache-snippets_complete","RbREPL.vim","AmbiCompletion","london.vim","jsruntime.vim","maven-plugin","vim-mou","Transpose","PHPUnit-QF","TimeTap","jsoncodecs.vim","jsflakes.vim","jsflakes","DBGPavim","nosyntaxwords","mathematic.vim","vtimer.vim","_jsbeautify","license-loader","cmdpathup","matchindent.vim","automatic-for-Verilog--guo","lingodirector.vim--Pawlik","Ubloh-Color-Scheme","html_FileCompletion","PyChimp","sonoma.vim","highlights-for-radiologist","Xdebug","burnttoast256","vmark.vim--Visual-Bookmarking","gprof.vim","jshint.vim--Stelmach","sourcebeautify.vim","HgCi","EscapeBchars","cscope.vim","php-cs-fixer","cst","OnSyntaxChange","python_fold_compact","EditPlus"] \ No newline at end of file diff --git a/vim-plugins/bundle/AutoComplPop/README b/vim-plugins/bundle/AutoComplPop/README new file mode 100644 index 0000000..8a72261 --- /dev/null +++ b/vim-plugins/bundle/AutoComplPop/README @@ -0,0 +1,101 @@ +This is a mirror of http://www.vim.org/scripts/script.php?script_id=1879 + +Repository: + https://bitbucket.org/ns9tks/vim-autocomplpop/ + +Issues: + http://bitbucket.org/ns9tks/vim-autocomplpop/issues/ + +Download latest(development) version + https://bitbucket.org/ns9tks/vim-autocomplpop/get/tip.zip + +============================================================================== +INTRODUCTION *acp-introduction* + +With this plugin, your vim comes to automatically opens popup menu for +completions when you enter characters or move the cursor in Insert mode. It +won't prevent you continuing entering characters. + + +============================================================================== +INSTALLATION *acp-installation* + +Put all files into your runtime directory. If you have the zip file, extract +it to your runtime directory. + +You should place the files as follows: +> + /plugin/acp.vim + /doc/acp.txt + ... +< +If you disgust to jumble up this plugin and other plugins in your runtime +directory, put the files into new directory and just add the directory path to +'runtimepath'. It's easy to uninstall the plugin. + +And then update your help tags files to enable fuzzyfinder help. See +|add-local-help| for details. + + +============================================================================== +USAGE *acp-usage* + +Once this plugin is installed, auto-popup is enabled at startup by default. + +Which completion method is used depends on the text before the cursor. The +default behavior is as follows: + + kind filetype text before the cursor ~ + Keyword * two keyword characters + Filename * a filename character + a path separator + + 0 or more filename character + Omni ruby ".", "::" or non-word character + ":" + (|+ruby| required.) + Omni python "." (|+python| required.) + Omni xml "<", "" characters + " ") + Omni html/xhtml "<", "" characters + " ") + Omni css (":", ";", "{", "^", "@", or "!") + + 0 or 1 space + +Also, you can make user-defined completion and snipMate's trigger completion +(|acp-snipMate|) auto-popup if the options are set. + +These behavior are customizable. + + *acp-snipMate* +snipMate's Trigger Completion ~ + +snipMate's trigger completion enables you to complete a snippet trigger +provided by snipMate plugin +(http://www.vim.org/scripts/script.php?script_id=2540) and expand it. + + +To enable auto-popup for this completion, add following function to +plugin/snipMate.vim: +> + fun! GetSnipsInCurrentScope() + let snips = {} + for scope in [bufnr('%')] + split(&ft, '\.') + ['_'] + call extend(snips, get(s:snippets, scope, {}), 'keep') + call extend(snips, get(s:multi_snips, scope, {}), 'keep') + endfor + return snips + endf +< +And set |g:acp_behaviorSnipmateLength| option to 1. + +There is the restriction on this auto-popup, that the word before cursor must +consist only of uppercase characters. + + *acp-perl-omni* +Perl Omni-Completion ~ + +AutoComplPop supports perl-completion.vim +(http://www.vim.org/scripts/script.php?script_id=2852). + +To enable auto-popup for this completion, set |g:acp_behaviorPerlOmniLength| +option to 0 or more. + + +============================================================================== + diff --git a/vim-plugins/bundle/AutoComplPop/autoload/acp.vim b/vim-plugins/bundle/AutoComplPop/autoload/acp.vim new file mode 100644 index 0000000..827bbcc --- /dev/null +++ b/vim-plugins/bundle/AutoComplPop/autoload/acp.vim @@ -0,0 +1,431 @@ +"============================================================================= +" Copyright (c) 2007-2009 Takeshi NISHIDA +" +"============================================================================= +" LOAD GUARD {{{1 + +if exists('g:loaded_autoload_acp') || v:version < 702 + finish +endif +let g:loaded_autoload_acp = 1 + +" }}}1 +"============================================================================= +" GLOBAL FUNCTIONS: {{{1 + +" +function acp#enable() + call acp#disable() + + augroup AcpGlobalAutoCommand + autocmd! + autocmd InsertEnter * unlet! s:posLast s:lastUncompletable + autocmd InsertLeave * call s:finishPopup(1) + augroup END + + if g:acp_mappingDriven + call s:mapForMappingDriven() + else + autocmd AcpGlobalAutoCommand CursorMovedI * call s:feedPopup() + endif + + nnoremap i i=feedPopup() + nnoremap a a=feedPopup() + nnoremap R R=feedPopup() +endfunction + +" +function acp#disable() + call s:unmapForMappingDriven() + augroup AcpGlobalAutoCommand + autocmd! + augroup END + nnoremap i | nunmap i + nnoremap a | nunmap a + nnoremap R | nunmap R +endfunction + +" +function acp#lock() + let s:lockCount += 1 +endfunction + +" +function acp#unlock() + let s:lockCount -= 1 + if s:lockCount < 0 + let s:lockCount = 0 + throw "AutoComplPop: not locked" + endif +endfunction + +" +function acp#meetsForSnipmate(context) + if g:acp_behaviorSnipmateLength < 0 + return 0 + endif + let matches = matchlist(a:context, '\(^\|\s\|\<\)\(\u\{' . + \ g:acp_behaviorSnipmateLength . ',}\)$') + return !empty(matches) && !empty(s:getMatchingSnipItems(matches[2])) +endfunction + +" +function acp#meetsForKeyword(context) + if g:acp_behaviorKeywordLength < 0 + return 0 + endif + let matches = matchlist(a:context, '\(\k\{' . g:acp_behaviorKeywordLength . ',}\)$') + if empty(matches) + return 0 + endif + for ignore in g:acp_behaviorKeywordIgnores + if stridx(ignore, matches[1]) == 0 + return 0 + endif + endfor + return 1 +endfunction + +" +function acp#meetsForFile(context) + if g:acp_behaviorFileLength < 0 + return 0 + endif + if has('win32') || has('win64') + let separator = '[/\\]' + else + let separator = '\/' + endif + if a:context !~ '\f' . separator . '\f\{' . g:acp_behaviorFileLength . ',}$' + return 0 + endif + return a:context !~ '[*/\\][/\\]\f*$\|[^[:print:]]\f*$' +endfunction + +" +function acp#meetsForRubyOmni(context) + if !has('ruby') + return 0 + endif + if g:acp_behaviorRubyOmniMethodLength >= 0 && + \ a:context =~ '[^. \t]\(\.\|::\)\k\{' . + \ g:acp_behaviorRubyOmniMethodLength . ',}$' + return 1 + endif + if g:acp_behaviorRubyOmniSymbolLength >= 0 && + \ a:context =~ '\(^\|[^:]\):\k\{' . + \ g:acp_behaviorRubyOmniSymbolLength . ',}$' + return 1 + endif + return 0 +endfunction + +" +function acp#meetsForPythonOmni(context) + return has('python') && g:acp_behaviorPythonOmniLength >= 0 && + \ a:context =~ '\k\.\k\{' . g:acp_behaviorPythonOmniLength . ',}$' +endfunction + +" +function acp#meetsForPerlOmni(context) + return g:acp_behaviorPerlOmniLength >= 0 && + \ a:context =~ '\w->\k\{' . g:acp_behaviorPerlOmniLength . ',}$' +endfunction + +" +function acp#meetsForXmlOmni(context) + return g:acp_behaviorXmlOmniLength >= 0 && + \ a:context =~ '\(<\|<\/\|<[^>]\+ \|<[^>]\+=\"\)\k\{' . + \ g:acp_behaviorXmlOmniLength . ',}$' +endfunction + +" +function acp#meetsForHtmlOmni(context) + return g:acp_behaviorHtmlOmniLength >= 0 && + \ a:context =~ '\(<\|<\/\|<[^>]\+ \|<[^>]\+=\"\)\k\{' . + \ g:acp_behaviorHtmlOmniLength . ',}$' +endfunction + +" +function acp#meetsForCssOmni(context) + if g:acp_behaviorCssOmniPropertyLength >= 0 && + \ a:context =~ '\(^\s\|[;{]\)\s*\k\{' . + \ g:acp_behaviorCssOmniPropertyLength . ',}$' + return 1 + endif + if g:acp_behaviorCssOmniValueLength >= 0 && + \ a:context =~ '[:@!]\s*\k\{' . + \ g:acp_behaviorCssOmniValueLength . ',}$' + return 1 + endif + return 0 +endfunction + +" +function acp#completeSnipmate(findstart, base) + if a:findstart + let s:posSnipmateCompletion = len(matchstr(s:getCurrentText(), '.*\U')) + return s:posSnipmateCompletion + endif + let lenBase = len(a:base) + let items = filter(GetSnipsInCurrentScope(), + \ 'strpart(v:key, 0, lenBase) ==? a:base') + return map(sort(items(items)), 's:makeSnipmateItem(v:val[0], v:val[1])') +endfunction + +" +function acp#onPopupCloseSnipmate() + let word = s:getCurrentText()[s:posSnipmateCompletion :] + for trigger in keys(GetSnipsInCurrentScope()) + if word ==# trigger + call feedkeys("\=TriggerSnippet()\", "n") + return 0 + endif + endfor + return 1 +endfunction + +" +function acp#onPopupPost() + " to clear = expression on command-line + echo '' + if pumvisible() + inoremap acp#onBs() + inoremap acp#onBs() + " a command to restore to original text and select the first match + return (s:behavsCurrent[s:iBehavs].command =~# "\" ? "\\" + \ : "\\") + endif + let s:iBehavs += 1 + if len(s:behavsCurrent) > s:iBehavs + call s:setCompletefunc() + return printf("\%s\=acp#onPopupPost()\", + \ s:behavsCurrent[s:iBehavs].command) + else + let s:lastUncompletable = { + \ 'word': s:getCurrentWord(), + \ 'commands': map(copy(s:behavsCurrent), 'v:val.command')[1:], + \ } + call s:finishPopup(0) + return "\" + endif +endfunction + +" +function acp#onBs() + " using "matchstr" and not "strpart" in order to handle multi-byte + " characters + if call(s:behavsCurrent[s:iBehavs].meets, + \ [matchstr(s:getCurrentText(), '.*\ze.')]) + return "\" + endif + return "\\" +endfunction + +" }}}1 +"============================================================================= +" LOCAL FUNCTIONS: {{{1 + +" +function s:mapForMappingDriven() + call s:unmapForMappingDriven() + let s:keysMappingDriven = [ + \ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + \ 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', + \ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + \ 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', + \ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + \ '-', '_', '~', '^', '.', ',', ':', '!', '#', '=', '%', '$', '@', '<', '>', '/', '\', + \ '', '', '', ] + for key in s:keysMappingDriven + execute printf('inoremap %s %s=feedPopup()', + \ key, key) + endfor +endfunction + +" +function s:unmapForMappingDriven() + if !exists('s:keysMappingDriven') + return + endif + for key in s:keysMappingDriven + execute 'iunmap ' . key + endfor + let s:keysMappingDriven = [] +endfunction + +" +function s:setTempOption(group, name, value) + call extend(s:tempOptionSet[a:group], { a:name : eval('&' . a:name) }, 'keep') + execute printf('let &%s = a:value', a:name) +endfunction + +" +function s:restoreTempOptions(group) + for [name, value] in items(s:tempOptionSet[a:group]) + execute printf('let &%s = value', name) + endfor + let s:tempOptionSet[a:group] = {} +endfunction + +" +function s:getCurrentWord() + return matchstr(s:getCurrentText(), '\k*$') +endfunction + +" +function s:getCurrentText() + return strpart(getline('.'), 0, col('.') - 1) +endfunction + +" +function s:getPostText() + return strpart(getline('.'), col('.') - 1) +endfunction + +" +function s:isModifiedSinceLastCall() + if exists('s:posLast') + let posPrev = s:posLast + let nLinesPrev = s:nLinesLast + let textPrev = s:textLast + endif + let s:posLast = getpos('.') + let s:nLinesLast = line('$') + let s:textLast = getline('.') + if !exists('posPrev') + return 1 + elseif posPrev[1] != s:posLast[1] || nLinesPrev != s:nLinesLast + return (posPrev[1] - s:posLast[1] == nLinesPrev - s:nLinesLast) + elseif textPrev ==# s:textLast + return 0 + elseif posPrev[2] > s:posLast[2] + return 1 + elseif has('gui_running') && has('multi_byte') + " NOTE: auto-popup causes a strange behavior when IME/XIM is working + return posPrev[2] + 1 == s:posLast[2] + endif + return posPrev[2] != s:posLast[2] +endfunction + +" +function s:makeCurrentBehaviorSet() + let modified = s:isModifiedSinceLastCall() + if exists('s:behavsCurrent[s:iBehavs].repeat') && s:behavsCurrent[s:iBehavs].repeat + let behavs = [ s:behavsCurrent[s:iBehavs] ] + elseif exists('s:behavsCurrent[s:iBehavs]') + return [] + elseif modified + let behavs = copy(exists('g:acp_behavior[&filetype]') + \ ? g:acp_behavior[&filetype] + \ : g:acp_behavior['*']) + else + return [] + endif + let text = s:getCurrentText() + call filter(behavs, 'call(v:val.meets, [text])') + let s:iBehavs = 0 + if exists('s:lastUncompletable') && + \ stridx(s:getCurrentWord(), s:lastUncompletable.word) == 0 && + \ map(copy(behavs), 'v:val.command') ==# s:lastUncompletable.commands + let behavs = [] + else + unlet! s:lastUncompletable + endif + return behavs +endfunction + +" +function s:feedPopup() + " NOTE: CursorMovedI is not triggered while the popup menu is visible. And + " it will be triggered when popup menu is disappeared. + if s:lockCount > 0 || pumvisible() || &paste + return '' + endif + if exists('s:behavsCurrent[s:iBehavs].onPopupClose') + if !call(s:behavsCurrent[s:iBehavs].onPopupClose, []) + call s:finishPopup(1) + return '' + endif + endif + let s:behavsCurrent = s:makeCurrentBehaviorSet() + if empty(s:behavsCurrent) + call s:finishPopup(1) + return '' + endif + " In case of dividing words by symbols (e.g. "for(int", "ab==cd") while a + " popup menu is visible, another popup is not available unless input + " or try popup once. So first completion is duplicated. + call insert(s:behavsCurrent, s:behavsCurrent[s:iBehavs]) + call s:setTempOption(s:GROUP0, 'spell', 0) + call s:setTempOption(s:GROUP0, 'completeopt', 'menuone' . (g:acp_completeoptPreview ? ',preview' : '')) + call s:setTempOption(s:GROUP0, 'complete', g:acp_completeOption) + call s:setTempOption(s:GROUP0, 'ignorecase', g:acp_ignorecaseOption) + " NOTE: With CursorMovedI driven, Set 'lazyredraw' to avoid flickering. + " With Mapping driven, set 'nolazyredraw' to make a popup menu visible. + call s:setTempOption(s:GROUP0, 'lazyredraw', !g:acp_mappingDriven) + " NOTE: 'textwidth' must be restored after . + call s:setTempOption(s:GROUP1, 'textwidth', 0) + call s:setCompletefunc() + call feedkeys(s:behavsCurrent[s:iBehavs].command . "\=acp#onPopupPost()\", 'n') + return '' " this function is called by = +endfunction + +" +function s:finishPopup(fGroup1) + inoremap | iunmap + inoremap | iunmap + let s:behavsCurrent = [] + call s:restoreTempOptions(s:GROUP0) + if a:fGroup1 + call s:restoreTempOptions(s:GROUP1) + endif +endfunction + +" +function s:setCompletefunc() + if exists('s:behavsCurrent[s:iBehavs].completefunc') + call s:setTempOption(0, 'completefunc', s:behavsCurrent[s:iBehavs].completefunc) + endif +endfunction + +" +function s:makeSnipmateItem(key, snip) + if type(a:snip) == type([]) + let descriptions = map(copy(a:snip), 'v:val[0]') + let snipFormatted = '[MULTI] ' . join(descriptions, ', ') + else + let snipFormatted = substitute(a:snip, '\(\n\|\s\)\+', ' ', 'g') + endif + return { + \ 'word': a:key, + \ 'menu': strpart(snipFormatted, 0, 80), + \ } +endfunction + +" +function s:getMatchingSnipItems(base) + let key = a:base . "\n" + if !exists('s:snipItems[key]') + let s:snipItems[key] = items(GetSnipsInCurrentScope()) + call filter(s:snipItems[key], 'strpart(v:val[0], 0, len(a:base)) ==? a:base') + call map(s:snipItems[key], 's:makeSnipmateItem(v:val[0], v:val[1])') + endif + return s:snipItems[key] +endfunction + +" }}}1 +"============================================================================= +" INITIALIZATION {{{1 + +let s:GROUP0 = 0 +let s:GROUP1 = 1 +let s:lockCount = 0 +let s:behavsCurrent = [] +let s:iBehavs = 0 +let s:tempOptionSet = [{}, {}] +let s:snipItems = {} + +" }}}1 +"============================================================================= +" vim: set fdm=marker: diff --git a/vim-plugins/bundle/AutoComplPop/doc/acp.jax b/vim-plugins/bundle/AutoComplPop/doc/acp.jax new file mode 100644 index 0000000..12e55ce --- /dev/null +++ b/vim-plugins/bundle/AutoComplPop/doc/acp.jax @@ -0,0 +1,298 @@ +*acp.txt* 補完メニューã®è‡ªå‹•ãƒãƒƒãƒ—アップ + + Copyright (c) 2007-2009 Takeshi NISHIDA + +AutoComplPop *autocomplpop* *acp* + +æ¦‚è¦ |acp-introduction| +インストール |acp-installation| +ä½¿ã„æ–¹ |acp-usage| +コマンド |acp-commands| +オプション |acp-options| +SPECIAL THANKS |acp-thanks| +CHANGELOG |acp-changelog| +ã‚ã°ã†ã¨ |acp-about| + + +============================================================================== +æ¦‚è¦ *acp-introduction* + +ã“ã®ãƒ—ラグインã¯ã€ã‚¤ãƒ³ã‚µãƒ¼ãƒˆãƒ¢ãƒ¼ãƒ‰ã§æ–‡å­—を入力ã—ãŸã‚Šã‚«ãƒ¼ã‚½ãƒ«ã‚’å‹•ã‹ã—ãŸã¨ãã«è£œ +完メニューを自動的ã«é–‹ãよã†ã«ã—ã¾ã™ã€‚ã—ã‹ã—ã€ç¶šã‘ã¦æ–‡å­—を入力ã™ã‚‹ã®ã‚’妨ã’ãŸã‚Š +ã¯ã—ã¾ã›ã‚“。 + + +============================================================================== +インストール *acp-installation* + +ZIPファイルをランタイムディレクトリã«å±•é–‹ã—ã¾ã™ã€‚ + +以下ã®ã‚ˆã†ã«ãƒ•ァイルãŒé…ç½®ã•れるã¯ãšã§ã™ã€‚ +> + /plugin/acp.vim + /doc/acp.txt + ... +< +ã‚‚ã—ランタイムディレクトリãŒä»–ã®ãƒ—ラグインã¨ã”ãŸæ··ãœã«ãªã‚‹ã®ãŒå«Œãªã‚‰ã€ãƒ•ァイル +ã‚’æ–°è¦ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«é…ç½®ã—ã€ãã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ãƒ‘スを 'runtimepath' ã«è¿½åŠ ã—㦠+ãã ã•ã„。アンインストールも楽ã«ãªã‚Šã¾ã™ã€‚ + +ãã®å¾Œ FuzzyFinder ã®ãƒ˜ãƒ«ãƒ—を有効ã«ã™ã‚‹ãŸã‚ã«ã‚¿ã‚°ãƒ•ァイルを更新ã—ã¦ãã ã•ã„。 +詳ã—ãã¯|add-local-help|ã‚’å‚ç…§ã—ã¦ãã ã•ã„。 + + +============================================================================== +ä½¿ã„æ–¹ *acp-usage* + +ã“ã®ãƒ—ラグインãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•れã¦ã„れã°ã€è‡ªå‹•ãƒãƒƒãƒ—アップ㯠vim ã®é–‹å§‹æ™‚ã‹ã‚‰ +有効ã«ãªã‚Šã¾ã™ã€‚ + +カーソル直å‰ã®ãƒ†ã‚­ã‚¹ãƒˆã«å¿œã˜ã¦ã€åˆ©ç”¨ã™ã‚‹è£œå®Œã®ç¨®é¡žã‚’切り替ãˆã¾ã™ã€‚デフォルト㮠+è£œå®Œå‹•ä½œã¯æ¬¡ã®é€šã‚Šã§ã™: + + 補完モード filetype カーソル直å‰ã®ãƒ†ã‚­ã‚¹ãƒˆ ~ + キーワード補完 * 2文字ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ–‡å­— + ファイルå補完 * ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å­— + パスセパレータ + + 0文字以上ã®ãƒ•ã‚¡ã‚¤ãƒ«åæ–‡å­— + オムニ補完 ruby ".", "::" or å˜èªžã‚’æ§‹æˆã™ã‚‹æ–‡å­—以外 + ":" + オムニ補完 python "." + オムニ補完 xml "<", ""ä»¥å¤–ã®æ–‡å­—列 + " ") + オムニ補完 html/xhtml "<", ""ä»¥å¤–ã®æ–‡å­—列 + " ") + オムニ補完 css (":", ";", "{", "^", "@", or "!") + + 0個ã¾ãŸã¯1個ã®ã‚¹ãƒšãƒ¼ã‚¹ + +ã•らã«ã€è¨­å®šã‚’行ã†ã“ã¨ã§ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼å®šç¾©è£œå®Œã¨ snipMate トリガー補完 +(|acp-snipMate|) を自動ãƒãƒƒãƒ—アップã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +ã“れらã®è£œå®Œå‹•作ã¯ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºå¯èƒ½ã§ã™ã€‚ + + *acp-snipMate* +snipMate トリガー補完 ~ + +snipMate トリガー補完ã§ã¯ã€snipMate プラグイン +(http://www.vim.org/scripts/script.php?script_id=2540) ãŒæä¾›ã™ã‚‹ã‚¹ãƒ‹ãƒšãƒƒãƒˆã® +トリガーを補完ã—ã¦ãれを展開ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + +ã“ã®è‡ªå‹•ãƒãƒƒãƒ—アップを有効ã«ã™ã‚‹ã«ã¯ã€æ¬¡ã®é–¢æ•°ã‚’ plugin/snipMate.vim ã«è¿½åŠ ã™ +ã‚‹å¿…è¦ãŒã‚りã¾ã™: +> + fun! GetSnipsInCurrentScope() + let snips = {} + for scope in [bufnr('%')] + split(&ft, '\.') + ['_'] + call extend(snips, get(s:snippets, scope, {}), 'keep') + call extend(snips, get(s:multi_snips, scope, {}), 'keep') + endfor + return snips + endf +< +ãã—ã¦|g:acp_behaviorSnipmateLength|オプションを 1 ã«ã—ã¦ãã ã•ã„。 + +ã“ã®è‡ªå‹•ãƒãƒƒãƒ—アップã«ã¯åˆ¶é™ãŒã‚りã€ã‚«ãƒ¼ã‚½ãƒ«ç›´å‰ã®å˜èªžã¯å¤§æ–‡å­—英字ã ã‘ã§æ§‹æˆã• +れã¦ã„ãªã‘れã°ãªã‚Šã¾ã›ã‚“。 + + *acp-perl-omni* +Perl オムニ補完 ~ + +AutoComplPop 㯠perl-completion.vim +(http://www.vim.org/scripts/script.php?script_id=2852) をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ + +ã“ã®è‡ªå‹•ãƒãƒƒãƒ—アップを有効ã«ã™ã‚‹ã«ã¯ã€|g:acp_behaviorPerlOmniLength|オプション +ã‚’ 0 以上ã«ã—ã¦ãã ã•ã„。 + + +============================================================================== +コマンド *acp-commands* + + *:AcpEnable* +:AcpEnable + 自動ãƒãƒƒãƒ—アップを有効ã«ã—ã¾ã™ã€‚ + + *:AcpDisable* +:AcpDisable + 自動ãƒãƒƒãƒ—アップを無効ã«ã—ã¾ã™ã€‚ + + *:AcpLock* +:AcpLock + 自動ãƒãƒƒãƒ—アップを一時的ã«åœæ­¢ã—ã¾ã™ã€‚ + + 別ã®ã‚¹ã‚¯ãƒªãƒ—トã¸ã®å¹²æ¸‰ã‚’回é¿ã™ã‚‹ç›®çš„ãªã‚‰ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¨|:AcpUnlock| + を利用ã™ã‚‹ã“ã¨ã‚’ã€|:AcpDisable|ã¨|:AcpEnable| を利用ã™ã‚‹ã‚ˆã‚Šã‚‚推奨ã—ã¾ + ã™ã€‚ + + *:AcpUnlock* +:AcpUnlock + |:AcpLock| ã§åœæ­¢ã•れãŸè‡ªå‹•ãƒãƒƒãƒ—アップをå†é–‹ã—ã¾ã™ã€‚ + + +============================================================================== +オプション *acp-options* + + *g:acp_enableAtStartup* > + let g:acp_enableAtStartup = 1 +< + 真ãªã‚‰ vim 開始時ã‹ã‚‰è‡ªå‹•ãƒãƒƒãƒ—ã‚¢ãƒƒãƒ—ãŒæœ‰åйã«ãªã‚Šã¾ã™ã€‚ + + *g:acp_mappingDriven* > + let g:acp_mappingDriven = 0 +< + 真ãªã‚‰|CursorMovedI|イベントã§ã¯ãªãキーマッピングã§è‡ªå‹•ãƒãƒƒãƒ—アップを + 行ã†ã‚ˆã†ã«ã—ã¾ã™ã€‚カーソルを移動ã™ã‚‹ãŸã³ã«è£œå®ŒãŒè¡Œã‚れるã“ã¨ã§é‡ã„ãªã© + ã®ä¸éƒ½åˆãŒã‚ã‚‹å ´åˆã«åˆ©ç”¨ã—ã¦ãã ã•ã„。ãŸã ã—ä»–ã®ãƒ—ラグインã¨ã®ç›¸æ€§å•題 + や日本語入力ã§ã®ä¸å…·åˆãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚(逆も然り。) + + *g:acp_ignorecaseOption* > + let g:acp_ignorecaseOption = 1 +< + 自動ãƒãƒƒãƒ—アップ時ã«ã€'ignorecase' ã«ä¸€æ™‚çš„ã«è¨­å®šã™ã‚‹å€¤ + + *g:acp_completeOption* > + let g:acp_completeOption = '.,w,b,k' +< + 自動ãƒãƒƒãƒ—アップ時ã«ã€'complete' ã«ä¸€æ™‚çš„ã«è¨­å®šã™ã‚‹å€¤ + + *g:acp_completeoptPreview* > + let g:acp_completeoptPreview = 0 +< + 真ãªã‚‰è‡ªå‹•ãƒãƒƒãƒ—アップ時ã«ã€ 'completeopt' 㸠"preview" を追加ã—ã¾ã™ã€‚ + + *g:acp_behaviorUserDefinedFunction* > + let g:acp_behaviorUserDefinedFunction = '' +< + ユーザー定義補完ã®|g:acp_behavior-completefunc|。空ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚ + れã¾ã›ã‚“。。 + + *g:acp_behaviorUserDefinedMeets* > + let g:acp_behaviorUserDefinedMeets = '' +< + ユーザー定義補完ã®|g:acp_behavior-meets|。空ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“ + 。 + + *g:acp_behaviorSnipmateLength* > + let g:acp_behaviorSnipmateLength = -1 +< + snipMate トリガー補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ + ã®ãƒ‘ターン。 + + *g:acp_behaviorKeywordCommand* > + let g:acp_behaviorKeywordCommand = "\" +< + キーワード補完ã®ã‚³ãƒžãƒ³ãƒ‰ã€‚ã“ã®ã‚ªãƒ—ションã«ã¯æ™®é€š "\" ã‹ "\" + を設定ã—ã¾ã™ã€‚ + + *g:acp_behaviorKeywordLength* > + let g:acp_behaviorKeywordLength = 2 +< + キーワード補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ + ード文字数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorKeywordIgnores* > + let g:acp_behaviorKeywordIgnores = [] +< + 文字列ã®ãƒªã‚¹ãƒˆã€‚カーソル直å‰ã®å˜èªžãŒã“れらã®å†…ã„ãšã‚Œã‹ã®å…ˆé ­éƒ¨åˆ†ã«ãƒžãƒƒ + ãƒã™ã‚‹å ´åˆã€ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + 例ãˆã°ã€ "get" ã§å§‹ã¾ã‚‹è£œå®Œã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰ãŒå¤šéŽãŽã¦ã€"g", "ge", "get" ã‚’å…¥ + 力ã—ãŸã¨ãã®è‡ªå‹•ãƒãƒƒãƒ—アップãŒãƒ¬ã‚¹ãƒãƒ³ã‚¹ã®ä½Žä¸‹ã‚’引ãèµ·ã“ã—ã¦ã„ã‚‹å ´åˆã€ + ã“ã®ã‚ªãƒ—ション㫠["get"] を設定ã™ã‚‹ã“ã¨ã§ãれを回é¿ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ + + *g:acp_behaviorFileLength* > + let g:acp_behaviorFileLength = 0 +< + ファイルå補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ + ード文字数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorRubyOmniMethodLength* > + let g:acp_behaviorRubyOmniMethodLength = 0 +< + メソッド補完ã®ãŸã‚ã®ã€Ruby オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ + ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ–‡å­—数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorRubyOmniSymbolLength* > + let g:acp_behaviorRubyOmniSymbolLength = 1 +< + シンボル補完ã®ãŸã‚ã®ã€Ruby オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ + ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ–‡å­—数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorPythonOmniLength* > + let g:acp_behaviorPythonOmniLength = 0 +< + Python オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ + ーワード文字数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorPerlOmniLength* > + let g:acp_behaviorPerlOmniLength = -1 +< + Perl オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ + ワード文字数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + See also: |acp-perl-omni| + + *g:acp_behaviorXmlOmniLength* > + let g:acp_behaviorXmlOmniLength = 0 +< + XML オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ + ード文字数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorHtmlOmniLength* > + let g:acp_behaviorHtmlOmniLength = 0 +< + HTML オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ + ワード文字数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorCssOmniPropertyLength* > + let g:acp_behaviorCssOmniPropertyLength = 1 +< + プロパティ補完ã®ãŸã‚ã®ã€CSS オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ + ãªã‚«ãƒ¼ã‚½ãƒ«ã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ–‡å­—数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behaviorCssOmniValueLength* > + let g:acp_behaviorCssOmniValueLength = 0 +< + 値補完ã®ãŸã‚ã®ã€CSS オムニ補完ã®è‡ªå‹•ãƒãƒƒãƒ—アップを行ã†ã®ã«å¿…è¦ãªã‚«ãƒ¼ã‚½ + ルã®ç›´å‰ã®ã‚­ãƒ¼ãƒ¯ãƒ¼ãƒ‰æ–‡å­—数。負数ãªã‚‰ã“ã®è£œå®Œã¯è¡Œã‚れã¾ã›ã‚“。 + + *g:acp_behavior* > + let g:acp_behavior = {} +< + + ã“れã¯å†…部仕様ãŒã‚ã‹ã£ã¦ã„る人å‘ã‘ã®ã‚ªãƒ—ションã§ã€ä»–ã®ã‚ªãƒ—ションã§ã®è¨­ + 定より優先ã•れã¾ã™ã€‚ + + |Dictionary|åž‹ã§ã€ã‚­ãƒ¼ã¯ãƒ•ァイルタイプã«å¯¾å¿œã—ã¾ã™ã€‚ '*' ã¯ãƒ‡ãƒ•ォルト + を表ã—ã¾ã™ã€‚値ã¯ãƒªã‚¹ãƒˆåž‹ã§ã™ã€‚補完候補ãŒå¾—られるã¾ã§ãƒªã‚¹ãƒˆã®å…ˆé ­ã‚¢ã‚¤ãƒ† + ムã‹ã‚‰é †ã«è©•価ã—ã¾ã™ã€‚å„è¦ç´ ã¯|Dictionary|ã§è©³ç´°ã¯æ¬¡ã®é€šã‚Šï¼š + + "command": *g:acp_behavior-command* + 補完メニューをãƒãƒƒãƒ—アップã™ã‚‹ãŸã‚ã®ã‚³ãƒžãƒ³ãƒ‰ã€‚ + + "completefunc": *g:acp_behavior-completefunc* + 'completefunc' ã«è¨­å®šã™ã‚‹é–¢æ•°ã€‚ "command" ㌠"" ã®ã¨ãã ã‘ + æ„味ãŒã‚りã¾ã™ã€‚ + + "meets": *g:acp_behavior-meets* + ã“ã®è£œå®Œã‚’行ã†ã‹ã©ã†ã‹ã‚’判断ã™ã‚‹é–¢æ•°ã®åå‰ã€‚ã“ã®é–¢æ•°ã¯ã‚«ãƒ¼ã‚½ãƒ«ç›´å‰ã® + テキストを引数ã«å–りã€è£œå®Œã‚’行ã†ãªã‚‰éž 0 ã®å€¤ã‚’è¿”ã—ã¾ã™ã€‚ + + "onPopupClose": *g:acp_behavior-onPopupClose* + ã“ã®è£œå®Œã®ãƒãƒƒãƒ—アップメニューãŒé–‰ã˜ã‚‰ã‚ŒãŸã¨ãã«å‘¼ã°ã‚Œã‚‹é–¢æ•°ã®åå‰ã€‚ + ã“ã®é–¢æ•°ãŒ 0 ã‚’è¿”ã—ãŸå ´åˆã€ç¶šã„ã¦è¡Œã‚れる予定ã®è£œå®Œã¯æŠ‘制ã•れã¾ã™ã€‚ + + "repeat": *g:acp_behavior-repeat* + 真ãªã‚‰æœ€å¾Œã®è£œå®ŒãŒè‡ªå‹•çš„ã«ç¹°ã‚Šè¿”ã•れã¾ã™ã€‚ + + +============================================================================== +ã‚ã°ã†ã¨ *acp-about* *acp-contact* *acp-author* + +作者: Takeshi NISHIDA +ライセンス: MIT Licence +URL: http://www.vim.org/scripts/script.php?script_id=1879 + http://bitbucket.org/ns9tks/vim-autocomplpop/ + +ãƒã‚°ã‚„è¦æœ›ãªã© ~ + +ã“ã¡ã‚‰ã¸ã©ã†ãž: http://bitbucket.org/ns9tks/vim-autocomplpop/issues/ + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: + diff --git a/vim-plugins/bundle/AutoComplPop/doc/acp.txt b/vim-plugins/bundle/AutoComplPop/doc/acp.txt new file mode 100644 index 0000000..324c88b --- /dev/null +++ b/vim-plugins/bundle/AutoComplPop/doc/acp.txt @@ -0,0 +1,512 @@ +*acp.txt* Automatically opens popup menu for completions. + + Copyright (c) 2007-2009 Takeshi NISHIDA + +AutoComplPop *autocomplpop* *acp* + +INTRODUCTION |acp-introduction| +INSTALLATION |acp-installation| +USAGE |acp-usage| +COMMANDS |acp-commands| +OPTIONS |acp-options| +SPECIAL THANKS |acp-thanks| +CHANGELOG |acp-changelog| +ABOUT |acp-about| + + +============================================================================== +INTRODUCTION *acp-introduction* + +With this plugin, your vim comes to automatically opens popup menu for +completions when you enter characters or move the cursor in Insert mode. It +won't prevent you continuing entering characters. + + +============================================================================== +INSTALLATION *acp-installation* + +Put all files into your runtime directory. If you have the zip file, extract +it to your runtime directory. + +You should place the files as follows: +> + /plugin/acp.vim + /doc/acp.txt + ... +< +If you disgust to jumble up this plugin and other plugins in your runtime +directory, put the files into new directory and just add the directory path to +'runtimepath'. It's easy to uninstall the plugin. + +And then update your help tags files to enable fuzzyfinder help. See +|add-local-help| for details. + + +============================================================================== +USAGE *acp-usage* + +Once this plugin is installed, auto-popup is enabled at startup by default. + +Which completion method is used depends on the text before the cursor. The +default behavior is as follows: + + kind filetype text before the cursor ~ + Keyword * two keyword characters + Filename * a filename character + a path separator + + 0 or more filename character + Omni ruby ".", "::" or non-word character + ":" + (|+ruby| required.) + Omni python "." (|+python| required.) + Omni xml "<", "" characters + " ") + Omni html/xhtml "<", "" characters + " ") + Omni css (":", ";", "{", "^", "@", or "!") + + 0 or 1 space + +Also, you can make user-defined completion and snipMate's trigger completion +(|acp-snipMate|) auto-popup if the options are set. + +These behavior are customizable. + + *acp-snipMate* +snipMate's Trigger Completion ~ + +snipMate's trigger completion enables you to complete a snippet trigger +provided by snipMate plugin +(http://www.vim.org/scripts/script.php?script_id=2540) and expand it. + + +To enable auto-popup for this completion, add following function to +plugin/snipMate.vim: +> + fun! GetSnipsInCurrentScope() + let snips = {} + for scope in [bufnr('%')] + split(&ft, '\.') + ['_'] + call extend(snips, get(s:snippets, scope, {}), 'keep') + call extend(snips, get(s:multi_snips, scope, {}), 'keep') + endfor + return snips + endf +< +And set |g:acp_behaviorSnipmateLength| option to 1. + +There is the restriction on this auto-popup, that the word before cursor must +consist only of uppercase characters. + + *acp-perl-omni* +Perl Omni-Completion ~ + +AutoComplPop supports perl-completion.vim +(http://www.vim.org/scripts/script.php?script_id=2852). + +To enable auto-popup for this completion, set |g:acp_behaviorPerlOmniLength| +option to 0 or more. + + +============================================================================== +COMMANDS *acp-commands* + + *:AcpEnable* +:AcpEnable + enables auto-popup. + + *:AcpDisable* +:AcpDisable + disables auto-popup. + + *:AcpLock* +:AcpLock + suspends auto-popup temporarily. + + For the purpose of avoiding interruption to another script, it is + recommended to insert this command and |:AcpUnlock| than |:AcpDisable| + and |:AcpEnable| . + + *:AcpUnlock* +:AcpUnlock + resumes auto-popup suspended by |:AcpLock| . + + +============================================================================== +OPTIONS *acp-options* + + *g:acp_enableAtStartup* > + let g:acp_enableAtStartup = 1 +< + If non-zero, auto-popup is enabled at startup. + + *g:acp_mappingDriven* > + let g:acp_mappingDriven = 0 +< + If non-zero, auto-popup is triggered by key mappings instead of + |CursorMovedI| event. This is useful to avoid auto-popup by moving + cursor in Insert mode. + + *g:acp_ignorecaseOption* > + let g:acp_ignorecaseOption = 1 +< + Value set to 'ignorecase' temporarily when auto-popup. + + *g:acp_completeOption* > + let g:acp_completeOption = '.,w,b,k' +< + Value set to 'complete' temporarily when auto-popup. + + *g:acp_completeoptPreview* > + let g:acp_completeoptPreview = 0 +< + If non-zero, "preview" is added to 'completeopt' when auto-popup. + + *g:acp_behaviorUserDefinedFunction* > + let g:acp_behaviorUserDefinedFunction = '' +< + |g:acp_behavior-completefunc| for user-defined completion. If empty, + this completion will be never attempted. + + *g:acp_behaviorUserDefinedMeets* > + let g:acp_behaviorUserDefinedMeets = '' +< + |g:acp_behavior-meets| for user-defined completion. If empty, this + completion will be never attempted. + + *g:acp_behaviorSnipmateLength* > + let g:acp_behaviorSnipmateLength = -1 +< + Pattern before the cursor, which are needed to attempt + snipMate-trigger completion. + + *g:acp_behaviorKeywordCommand* > + let g:acp_behaviorKeywordCommand = "\" +< + Command for keyword completion. This option is usually set "\" or + "\". + + *g:acp_behaviorKeywordLength* > + let g:acp_behaviorKeywordLength = 2 +< + Length of keyword characters before the cursor, which are needed to + attempt keyword completion. If negative value, this completion will be + never attempted. + + *g:acp_behaviorKeywordIgnores* > + let g:acp_behaviorKeywordIgnores = [] +< + List of string. If a word before the cursor matches to the front part + of one of them, keyword completion won't be attempted. + + E.g., when there are too many keywords beginning with "get" for the + completion and auto-popup by entering "g", "ge", or "get" causes + response degradation, set ["get"] to this option and avoid it. + + *g:acp_behaviorFileLength* > + let g:acp_behaviorFileLength = 0 +< + Length of filename characters before the cursor, which are needed to + attempt filename completion. If negative value, this completion will + be never attempted. + + *g:acp_behaviorRubyOmniMethodLength* > + let g:acp_behaviorRubyOmniMethodLength = 0 +< + Length of keyword characters before the cursor, which are needed to + attempt ruby omni-completion for methods. If negative value, this + completion will be never attempted. + + *g:acp_behaviorRubyOmniSymbolLength* > + let g:acp_behaviorRubyOmniSymbolLength = 1 +< + Length of keyword characters before the cursor, which are needed to + attempt ruby omni-completion for symbols. If negative value, this + completion will be never attempted. + + *g:acp_behaviorPythonOmniLength* > + let g:acp_behaviorPythonOmniLength = 0 +< + Length of keyword characters before the cursor, which are needed to + attempt python omni-completion. If negative value, this completion + will be never attempted. + + *g:acp_behaviorPerlOmniLength* > + let g:acp_behaviorPerlOmniLength = -1 +< + Length of keyword characters before the cursor, which are needed to + attempt perl omni-completion. If negative value, this completion will + be never attempted. + + See also: |acp-perl-omni| + + *g:acp_behaviorXmlOmniLength* > + let g:acp_behaviorXmlOmniLength = 0 +< + Length of keyword characters before the cursor, which are needed to + attempt XML omni-completion. If negative value, this completion will + be never attempted. + + *g:acp_behaviorHtmlOmniLength* > + let g:acp_behaviorHtmlOmniLength = 0 +< + Length of keyword characters before the cursor, which are needed to + attempt HTML omni-completion. If negative value, this completion will + be never attempted. + + *g:acp_behaviorCssOmniPropertyLength* > + let g:acp_behaviorCssOmniPropertyLength = 1 +< + Length of keyword characters before the cursor, which are needed to + attempt CSS omni-completion for properties. If negative value, this + completion will be never attempted. + + *g:acp_behaviorCssOmniValueLength* > + let g:acp_behaviorCssOmniValueLength = 0 +< + Length of keyword characters before the cursor, which are needed to + attempt CSS omni-completion for values. If negative value, this + completion will be never attempted. + + *g:acp_behavior* > + let g:acp_behavior = {} +< + This option is for advanced users. This setting overrides other + behavior options. This is a |Dictionary|. Each key corresponds to a + filetype. '*' is default. Each value is a list. These are attempted in + sequence until completion item is found. Each element is a + |Dictionary| which has following items: + + "command": *g:acp_behavior-command* + Command to be fed to open popup menu for completions. + + "completefunc": *g:acp_behavior-completefunc* + 'completefunc' will be set to this user-provided function during the + completion. Only makes sense when "command" is "". + + "meets": *g:acp_behavior-meets* + Name of the function which dicides whether or not to attempt this + completion. It will be attempted if this function returns non-zero. + This function takes a text before the cursor. + + "onPopupClose": *g:acp_behavior-onPopupClose* + Name of the function which is called when popup menu for this + completion is closed. Following completions will be suppressed if + this function returns zero. + + "repeat": *g:acp_behavior-repeat* + If non-zero, the last completion is automatically repeated. + + +============================================================================== +SPECIAL THANKS *acp-thanks* + +- Daniel Schierbeck +- Ingo Karkat + + +============================================================================== +CHANGELOG *acp-changelog* + +2.14.1 + - Changed the way of auto-popup for avoiding an issue about filename + completion. + - Fixed a bug that popup menu was opened twice when auto-popup was done. + +2.14 + - Added the support for perl-completion.vim. + +2.13 + - Changed to sort snipMate's triggers. + - Fixed a bug that a wasted character was inserted after snipMate's trigger + completion. + +2.12.1 + - Changed to avoid a strange behavior with Microsoft IME. + +2.12 + - Added g:acp_behaviorKeywordIgnores option. + - Added g:acp_behaviorUserDefinedMeets option and removed + g:acp_behaviorUserDefinedPattern. + - Changed to do auto-popup only when a buffer is modified. + - Changed the structure of g:acp_behavior option. + - Changed to reflect a change of behavior options (named g:acp_behavior*) + any time it is done. + - Fixed a bug that completions after omni completions or snipMate's trigger + completion were never attempted when no candidate for the former + completions was found. + +2.11.1 + - Fixed a bug that a snipMate's trigger could not be expanded when it was + completed. + +2.11 + - Implemented experimental feature which is snipMate's trigger completion. + +2.10 + - Improved the response by changing not to attempt any completion when + keyword characters are entered after a word which has been found that it + has no completion candidate at the last attempt of completions. + - Improved the response by changing to close popup menu when was + pressed and the text before the cursor would not match with the pattern of + current behavior. + +2.9 + - Changed default behavior to support XML omni completion. + - Changed default value of g:acp_behaviorKeywordCommand option. + The option with "\" cause a problem which inserts a match without + when 'dictionary' has been set and keyword completion is done. + - Changed to show error message when incompatible with a installed vim. + +2.8.1 + - Fixed a bug which inserted a selected match to the next line when + auto-wrapping (enabled with 'formatoptions') was performed. + +2.8 + - Added g:acp_behaviorUserDefinedFunction option and + g:acp_behaviorUserDefinedPattern option for users who want to make custom + completion auto-popup. + - Fixed a bug that setting 'spell' on a new buffer made typing go crazy. + +2.7 + - Changed naming conventions for filenames, functions, commands, and options + and thus renamed them. + - Added g:acp_behaviorKeywordCommand option. If you prefer the previous + behavior for keyword completion, set this option "\". + - Changed default value of g:acp_ignorecaseOption option. + + The following were done by Ingo Karkat: + + - ENH: Added support for setting a user-provided 'completefunc' during the + completion, configurable via g:acp_behavior. + - BUG: When the configured completion is or , the command to + restore the original text (in on_popup_post()) must be reverted, too. + - BUG: When using a custom completion function () that also uses + an s:...() function name, the s:GetSidPrefix() function dynamically + determines the wrong SID. Now calling s:DetermineSidPrefix() once during + sourcing and caching the value in s:SID. + - BUG: Should not use custom defined completion mappings. Now + consistently using unmapped completion commands everywhere. (Beforehand, + s:PopupFeeder.feed() used mappings via feedkeys(..., 'm'), but + s:PopupFeeder.on_popup_post() did not due to its invocation via + :map-expr.) + +2.6: + - Improved the behavior of omni completion for HTML/XHTML. + +2.5: + - Added some options to customize behavior easily: + g:AutoComplPop_BehaviorKeywordLength + g:AutoComplPop_BehaviorFileLength + g:AutoComplPop_BehaviorRubyOmniMethodLength + g:AutoComplPop_BehaviorRubyOmniSymbolLength + g:AutoComplPop_BehaviorPythonOmniLength + g:AutoComplPop_BehaviorHtmlOmniLength + g:AutoComplPop_BehaviorCssOmniPropertyLength + g:AutoComplPop_BehaviorCssOmniValueLength + +2.4: + - Added g:AutoComplPop_MappingDriven option. + +2.3.1: + - Changed to set 'lazyredraw' while a popup menu is visible to avoid + flickering. + - Changed a behavior for CSS. + - Added support for GetLatestVimScripts. + +2.3: + - Added a behavior for Python to support omni completion. + - Added a behavior for CSS to support omni completion. + +2.2: + - Changed not to work when 'paste' option is set. + - Fixed AutoComplPopEnable command and AutoComplPopDisable command to + map/unmap "i" and "R". + +2.1: + - Fixed the problem caused by "." command in Normal mode. + - Changed to map "i" and "R" to feed completion command after starting + Insert mode. + - Avoided the problem caused by Windows IME. + +2.0: + - Changed to use CursorMovedI event to feed a completion command instead of + key mapping. Now the auto-popup is triggered by moving the cursor. + - Changed to feed completion command after starting Insert mode. + - Removed g:AutoComplPop_MapList option. + +1.7: + - Added behaviors for HTML/XHTML. Now supports the omni completion for + HTML/XHTML. + - Changed not to show expressions for CTRL-R =. + - Changed not to set 'nolazyredraw' while a popup menu is visible. + +1.6.1: + - Changed not to trigger the filename completion by a text which has + multi-byte characters. + +1.6: + - Redesigned g:AutoComplPop_Behavior option. + - Changed default value of g:AutoComplPop_CompleteOption option. + - Changed default value of g:AutoComplPop_MapList option. + +1.5: + - Implemented continuous-completion for the filename completion. And added + new option to g:AutoComplPop_Behavior. + +1.4: + - Fixed the bug that the auto-popup was not suspended in fuzzyfinder. + - Fixed the bug that an error has occurred with Ruby-omni-completion unless + Ruby interface. + +1.3: + - Supported Ruby-omni-completion by default. + - Supported filename completion by default. + - Added g:AutoComplPop_Behavior option. + - Added g:AutoComplPop_CompleteoptPreview option. + - Removed g:AutoComplPop_MinLength option. + - Removed g:AutoComplPop_MaxLength option. + - Removed g:AutoComplPop_PopupCmd option. + +1.2: + - Fixed bugs related to 'completeopt'. + +1.1: + - Added g:AutoComplPop_IgnoreCaseOption option. + - Added g:AutoComplPop_NotEnableAtStartup option. + - Removed g:AutoComplPop_LoadAndEnable option. +1.0: + - g:AutoComplPop_LoadAndEnable option for a startup activation is added. + - AutoComplPopLock command and AutoComplPopUnlock command are added to + suspend and resume. + - 'completeopt' and 'complete' options are changed temporarily while + completing by this script. + +0.4: + - The first match are selected when the popup menu is Opened. You can insert + the first match with CTRL-Y. + +0.3: + - Fixed the problem that the original text is not restored if 'longest' is + not set in 'completeopt'. Now the plugin works whether or not 'longest' is + set in 'completeopt', and also 'menuone'. + +0.2: + - When completion matches are not found, insert CTRL-E to stop completion. + - Clear the echo area. + - Fixed the problem in case of dividing words by symbols, popup menu is + not opened. + +0.1: + - First release. + + +============================================================================== +ABOUT *acp-about* *acp-contact* *acp-author* + +Author: Takeshi NISHIDA +Licence: MIT Licence +URL: http://www.vim.org/scripts/script.php?script_id=1879 + http://bitbucket.org/ns9tks/vim-autocomplpop/ + +Bugs/Issues/Suggestions/Improvements ~ + +Please submit to http://bitbucket.org/ns9tks/vim-autocomplpop/issues/ . + +============================================================================== + vim:tw=78:ts=8:ft=help:norl: + diff --git a/vim-plugins/bundle/AutoComplPop/plugin/acp.vim b/vim-plugins/bundle/AutoComplPop/plugin/acp.vim new file mode 100644 index 0000000..0c01a31 --- /dev/null +++ b/vim-plugins/bundle/AutoComplPop/plugin/acp.vim @@ -0,0 +1,170 @@ +"============================================================================= +" Copyright (c) 2007-2009 Takeshi NISHIDA +" +" GetLatestVimScripts: 1879 1 :AutoInstall: AutoComplPop +"============================================================================= +" LOAD GUARD {{{1 + +if exists('g:loaded_acp') + finish +elseif v:version < 702 + echoerr 'AutoComplPop does not support this version of vim (' . v:version . ').' + finish +endif +let g:loaded_acp = 1 + +" }}}1 +"============================================================================= +" FUNCTION: {{{1 + +" +function s:defineOption(name, default) + if !exists(a:name) + let {a:name} = a:default + endif +endfunction + +" +function s:makeDefaultBehavior() + let behavs = { + \ '*' : [], + \ 'ruby' : [], + \ 'python' : [], + \ 'perl' : [], + \ 'xml' : [], + \ 'html' : [], + \ 'xhtml' : [], + \ 'css' : [], + \ } + "--------------------------------------------------------------------------- + if !empty(g:acp_behaviorUserDefinedFunction) && + \ !empty(g:acp_behaviorUserDefinedMeets) + for key in keys(behavs) + call add(behavs[key], { + \ 'command' : "\\", + \ 'completefunc' : g:acp_behaviorUserDefinedFunction, + \ 'meets' : g:acp_behaviorUserDefinedMeets, + \ 'repeat' : 0, + \ }) + endfor + endif + "--------------------------------------------------------------------------- + for key in keys(behavs) + call add(behavs[key], { + \ 'command' : "\\", + \ 'completefunc' : 'acp#completeSnipmate', + \ 'meets' : 'acp#meetsForSnipmate', + \ 'onPopupClose' : 'acp#onPopupCloseSnipmate', + \ 'repeat' : 0, + \ }) + endfor + "--------------------------------------------------------------------------- + for key in keys(behavs) + call add(behavs[key], { + \ 'command' : g:acp_behaviorKeywordCommand, + \ 'meets' : 'acp#meetsForKeyword', + \ 'repeat' : 0, + \ }) + endfor + "--------------------------------------------------------------------------- + for key in keys(behavs) + call add(behavs[key], { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForFile', + \ 'repeat' : 1, + \ }) + endfor + "--------------------------------------------------------------------------- + call add(behavs.ruby, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForRubyOmni', + \ 'repeat' : 0, + \ }) + "--------------------------------------------------------------------------- + call add(behavs.python, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForPythonOmni', + \ 'repeat' : 0, + \ }) + "--------------------------------------------------------------------------- + call add(behavs.perl, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForPerlOmni', + \ 'repeat' : 0, + \ }) + "--------------------------------------------------------------------------- + call add(behavs.xml, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForXmlOmni', + \ 'repeat' : 1, + \ }) + "--------------------------------------------------------------------------- + call add(behavs.html, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForHtmlOmni', + \ 'repeat' : 1, + \ }) + "--------------------------------------------------------------------------- + call add(behavs.xhtml, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForHtmlOmni', + \ 'repeat' : 1, + \ }) + "--------------------------------------------------------------------------- + call add(behavs.css, { + \ 'command' : "\\", + \ 'meets' : 'acp#meetsForCssOmni', + \ 'repeat' : 0, + \ }) + "--------------------------------------------------------------------------- + return behavs +endfunction + +" }}}1 +"============================================================================= +" INITIALIZATION {{{1 + +"----------------------------------------------------------------------------- +call s:defineOption('g:acp_enableAtStartup', 1) +call s:defineOption('g:acp_mappingDriven', 0) +call s:defineOption('g:acp_ignorecaseOption', 1) +call s:defineOption('g:acp_completeOption', '.,w,b,k') +call s:defineOption('g:acp_completeoptPreview', 0) +call s:defineOption('g:acp_behaviorUserDefinedFunction', '') +call s:defineOption('g:acp_behaviorUserDefinedMeets', '') +call s:defineOption('g:acp_behaviorSnipmateLength', -1) +call s:defineOption('g:acp_behaviorKeywordCommand', "\") +call s:defineOption('g:acp_behaviorKeywordLength', 2) +call s:defineOption('g:acp_behaviorKeywordIgnores', []) +call s:defineOption('g:acp_behaviorFileLength', 0) +call s:defineOption('g:acp_behaviorRubyOmniMethodLength', 0) +call s:defineOption('g:acp_behaviorRubyOmniSymbolLength', 1) +call s:defineOption('g:acp_behaviorPythonOmniLength', 0) +call s:defineOption('g:acp_behaviorPerlOmniLength', -1) +call s:defineOption('g:acp_behaviorXmlOmniLength', 0) +call s:defineOption('g:acp_behaviorHtmlOmniLength', 0) +call s:defineOption('g:acp_behaviorCssOmniPropertyLength', 1) +call s:defineOption('g:acp_behaviorCssOmniValueLength', 0) +call s:defineOption('g:acp_behavior', {}) +"----------------------------------------------------------------------------- +call extend(g:acp_behavior, s:makeDefaultBehavior(), 'keep') +"----------------------------------------------------------------------------- +command! -bar -narg=0 AcpEnable call acp#enable() +command! -bar -narg=0 AcpDisable call acp#disable() +command! -bar -narg=0 AcpLock call acp#lock() +command! -bar -narg=0 AcpUnlock call acp#unlock() +"----------------------------------------------------------------------------- +" legacy commands +command! -bar -narg=0 AutoComplPopEnable AcpEnable +command! -bar -narg=0 AutoComplPopDisable AcpDisable +command! -bar -narg=0 AutoComplPopLock AcpLock +command! -bar -narg=0 AutoComplPopUnlock AcpUnlock +"----------------------------------------------------------------------------- +if g:acp_enableAtStartup + AcpEnable +endif +"----------------------------------------------------------------------------- + +" }}}1 +"============================================================================= +" vim: set fdm=marker: diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp.vim new file mode 100644 index 0000000..19ac146 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp.vim @@ -0,0 +1,2289 @@ +" ============================================================================= +" File: autoload/ctrlp.vim +" Description: Fuzzy file, buffer, mru, tag, etc finder. +" Author: Kien Nguyen +" Version: 1.79 +" ============================================================================= + +" ** Static variables {{{1 +" s:ignore() {{{2 +fu! s:ignore() + let igdirs = [ + \ '\.git', + \ '\.hg', + \ '\.svn', + \ '_darcs', + \ '\.bzr', + \ '\.cdv', + \ '\~\.dep', + \ '\~\.dot', + \ '\~\.nib', + \ '\~\.plst', + \ '\.pc', + \ '_MTN', + \ 'blib', + \ 'CVS', + \ 'RCS', + \ 'SCCS', + \ '_sgbak', + \ 'autom4te\.cache', + \ 'cover_db', + \ '_build', + \ ] + let igfiles = [ + \ '\~$', + \ '#.+#$', + \ '[._].*\.swp$', + \ 'core\.\d+$', + \ '\.exe$', + \ '\.so$', + \ '\.bak$', + \ '\.png$', + \ '\.jpg$', + \ '\.gif$', + \ '\.zip$', + \ '\.rar$', + \ '\.tar\.gz$', + \ ] + retu { + \ 'dir': '\v[\/]('.join(igdirs, '|').')$', + \ 'file': '\v'.join(igfiles, '|'), + \ } +endf +" Script local vars {{{2 +let [s:pref, s:bpref, s:opts, s:new_opts, s:lc_opts] = + \ ['g:ctrlp_', 'b:ctrlp_', { + \ 'abbrev': ['s:abbrev', {}], + \ 'arg_map': ['s:argmap', 0], + \ 'buffer_func': ['s:buffunc', {}], + \ 'by_filename': ['s:byfname', 0], + \ 'custom_ignore': ['s:usrign', s:ignore()], + \ 'default_input': ['s:deftxt', 0], + \ 'dont_split': ['s:nosplit', 'netrw'], + \ 'dotfiles': ['s:showhidden', 0], + \ 'extensions': ['s:extensions', []], + \ 'follow_symlinks': ['s:folsym', 0], + \ 'highlight_match': ['s:mathi', [1, 'CtrlPMatch']], + \ 'jump_to_buffer': ['s:jmptobuf', 'Et'], + \ 'key_loop': ['s:keyloop', 0], + \ 'lazy_update': ['s:lazy', 0], + \ 'match_func': ['s:matcher', {}], + \ 'match_window': ['s:mw', ''], + \ 'match_window_bottom': ['s:mwbottom', 1], + \ 'match_window_reversed': ['s:mwreverse', 1], + \ 'max_depth': ['s:maxdepth', 40], + \ 'max_files': ['s:maxfiles', 10000], + \ 'max_height': ['s:mxheight', 10], + \ 'max_history': ['s:maxhst', exists('+hi') ? &hi : 20], + \ 'mruf_default_order': ['s:mrudef', 0], + \ 'open_func': ['s:openfunc', {}], + \ 'open_multi': ['s:opmul', '1v'], + \ 'open_new_file': ['s:newfop', 'v'], + \ 'prompt_mappings': ['s:urprtmaps', 0], + \ 'regexp_search': ['s:regexp', 0], + \ 'root_markers': ['s:rmarkers', []], + \ 'split_window': ['s:splitwin', 0], + \ 'status_func': ['s:status', {}], + \ 'tabpage_position': ['s:tabpage', 'ac'], + \ 'use_caching': ['s:caching', 1], + \ 'use_migemo': ['s:migemo', 0], + \ 'user_command': ['s:usrcmd', ''], + \ 'working_path_mode': ['s:pathmode', 'ra'], + \ }, { + \ 'open_multiple_files': 's:opmul', + \ 'regexp': 's:regexp', + \ 'reuse_window': 's:nosplit', + \ 'show_hidden': 's:showhidden', + \ 'switch_buffer': 's:jmptobuf', + \ }, { + \ 'root_markers': 's:rmarkers', + \ 'user_command': 's:usrcmd', + \ 'working_path_mode': 's:pathmode', + \ }] + +" Global options +let s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0, + \ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'ttimeout': 0, + \ 'gcr': 'a:blinkon0', 'ic': 1, 'lmap': '', 'mousef': 0, 'imd': 1 } + +" Keymaps +let [s:lcmap, s:prtmaps] = ['nn ', { + \ 'PrtBS()': ['', ''], + \ 'PrtDelete()': [''], + \ 'PrtDeleteWord()': [''], + \ 'PrtClear()': [''], + \ 'PrtSelectMove("j")': ['', ''], + \ 'PrtSelectMove("k")': ['', ''], + \ 'PrtSelectMove("t")': ['', ''], + \ 'PrtSelectMove("b")': ['', ''], + \ 'PrtSelectMove("u")': ['', ''], + \ 'PrtSelectMove("d")': ['', ''], + \ 'PrtHistory(-1)': [''], + \ 'PrtHistory(1)': [''], + \ 'AcceptSelection("e")': ['', '<2-LeftMouse>'], + \ 'AcceptSelection("h")': ['', '', ''], + \ 'AcceptSelection("t")': [''], + \ 'AcceptSelection("v")': ['', ''], + \ 'ToggleFocus()': [''], + \ 'ToggleRegex()': [''], + \ 'ToggleByFname()': [''], + \ 'ToggleType(1)': ['', ''], + \ 'ToggleType(-1)': ['', ''], + \ 'PrtExpandDir()': [''], + \ 'PrtInsert("c")': ['', ''], + \ 'PrtInsert()': [''], + \ 'PrtCurStart()': [''], + \ 'PrtCurEnd()': [''], + \ 'PrtCurLeft()': ['', '', ''], + \ 'PrtCurRight()': ['', ''], + \ 'PrtClearCache()': [''], + \ 'PrtDeleteEnt()': [''], + \ 'CreateNewFile()': [''], + \ 'MarkToOpen()': [''], + \ 'OpenMulti()': [''], + \ 'PrtExit()': ['', '', ''], + \ }] + +if !has('gui_running') + cal add(s:prtmaps['PrtBS()'], remove(s:prtmaps['PrtCurLeft()'], 0)) +en + +let s:compare_lim = 3000 + +let s:ficounts = {} + +let s:ccex = s:pref.'clear_cache_on_exit' + +" Regexp +let s:fpats = { + \ '^\(\\|\)\|\(\\|\)$': '\\|', + \ '^\\\(zs\|ze\|<\|>\)': '^\\\(zs\|ze\|<\|>\)', + \ '^\S\*$': '\*', + \ '^\S\\?$': '\\?', + \ } + +" Keypad +let s:kprange = { + \ 'Plus': '+', + \ 'Minus': '-', + \ 'Divide': '/', + \ 'Multiply': '*', + \ 'Point': '.', + \ } + +" Highlight groups +let s:hlgrps = { + \ 'NoEntries': 'Error', + \ 'Mode1': 'Character', + \ 'Mode2': 'LineNr', + \ 'Stats': 'Function', + \ 'Match': 'Identifier', + \ 'PrtBase': 'Comment', + \ 'PrtText': 'Normal', + \ 'PrtCursor': 'Constant', + \ } +" Get the options {{{2 +fu! s:opts(...) + unl! s:usrign s:usrcmd s:urprtmaps + for each in ['byfname', 'regexp', 'extensions'] | if exists('s:'.each) + let {each} = s:{each} + en | endfo + for [ke, va] in items(s:opts) + let {va[0]} = exists(s:pref.ke) ? {s:pref.ke} : va[1] + endfo + unl va + for [ke, va] in items(s:new_opts) + let {va} = {exists(s:pref.ke) ? s:pref.ke : va} + endfo + unl va + for [ke, va] in items(s:lc_opts) + if exists(s:bpref.ke) + unl {va} + let {va} = {s:bpref.ke} + en + endfo + " Match window options + cal s:match_window_opts() + " One-time values + if a:0 && a:1 != {} + unl va + for [ke, va] in items(a:1) + let opke = substitute(ke, '\(\w:\)\?ctrlp_', '', '') + if has_key(s:lc_opts, opke) + let sva = s:lc_opts[opke] + unl {sva} + let {sva} = va + en + endfo + en + for each in ['byfname', 'regexp'] | if exists(each) + let s:{each} = {each} + en | endfo + if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en + let s:maxdepth = min([s:maxdepth, 100]) + let s:glob = s:showhidden ? '.*\|*' : '*' + let s:igntype = empty(s:usrign) ? -1 : type(s:usrign) + let s:lash = ctrlp#utils#lash() + if s:keyloop + let [s:lazy, s:glbs['imd']] = [0, 0] + en + if s:lazy + cal extend(s:glbs, { 'ut': ( s:lazy > 1 ? s:lazy : 250 ) }) + en + " Extensions + if !( exists('extensions') && extensions == s:extensions ) + for each in s:extensions + exe 'ru autoload/ctrlp/'.each.'.vim' + endfo + en + " Keymaps + if type(s:urprtmaps) == 4 + cal extend(s:prtmaps, s:urprtmaps) + en +endf + +fu! s:match_window_opts() + let s:mw_pos = + \ s:mw =~ 'top\|bottom' ? matchstr(s:mw, 'top\|bottom') : + \ exists('g:ctrlp_match_window_bottom') ? ( s:mwbottom ? 'bottom' : 'top' ) + \ : 'bottom' + let s:mw_order = + \ s:mw =~ 'order:[^,]\+' ? matchstr(s:mw, 'order:\zs[^,]\+') : + \ exists('g:ctrlp_match_window_reversed') ? ( s:mwreverse ? 'btt' : 'ttb' ) + \ : 'btt' + let s:mw_max = + \ s:mw =~ 'max:[^,]\+' ? str2nr(matchstr(s:mw, 'max:\zs\d\+')) : + \ exists('g:ctrlp_max_height') ? s:mxheight + \ : 10 + let s:mw_min = + \ s:mw =~ 'min:[^,]\+' ? str2nr(matchstr(s:mw, 'min:\zs\d\+')) : 1 + let [s:mw_max, s:mw_min] = [max([s:mw_max, 1]), max([s:mw_min, 1])] + let s:mw_min = min([s:mw_min, s:mw_max]) + let s:mw_res = + \ s:mw =~ 'results:[^,]\+' ? str2nr(matchstr(s:mw, 'results:\zs\d\+')) + \ : min([s:mw_max, &lines]) + let s:mw_res = max([s:mw_res, 1]) +endf +"}}}1 +" * Open & Close {{{1 +fu! s:Open() + cal s:log(1) + cal s:getenv() + cal s:execextvar('enter') + sil! exe 'keepa' ( s:mw_pos == 'top' ? 'to' : 'bo' ) '1new ControlP' + cal s:buffunc(1) + let [s:bufnr, s:winw] = [bufnr('%'), winwidth(0)] + let [s:focus, s:prompt] = [1, ['', '', '']] + abc + if !exists('s:hstry') + let hst = filereadable(s:gethistloc()[1]) ? s:gethistdata() : [''] + let s:hstry = empty(hst) || !s:maxhst ? [''] : hst + en + for [ke, va] in items(s:glbs) | if exists('+'.ke) + sil! exe 'let s:glb_'.ke.' = &'.ke.' | let &'.ke.' = '.string(va) + en | endfo + if s:opmul != '0' && has('signs') + sign define ctrlpmark text=+> texthl=Search + en + cal s:setupblank() +endf + +fu! s:Close() + cal s:buffunc(0) + if winnr('$') == 1 + bw! + el + try | bun! + cat | clo! | endt + cal s:unmarksigns() + en + for key in keys(s:glbs) | if exists('+'.key) + sil! exe 'let &'.key.' = s:glb_'.key + en | endfo + if exists('s:glb_acd') | let &acd = s:glb_acd | en + let g:ctrlp_lines = [] + if s:winres[1] >= &lines && s:winres[2] == winnr('$') + exe s:winres[0].s:winres[0] + en + unl! s:focus s:hisidx s:hstgot s:marked s:statypes s:cline s:init s:savestr + \ s:mrbs s:did_exp + cal ctrlp#recordhist() + cal s:execextvar('exit') + cal s:log(0) + let v:errmsg = s:ermsg + ec +endf +" * Clear caches {{{1 +fu! ctrlp#clr(...) + let [s:matches, g:ctrlp_new{ a:0 ? a:1 : 'cache' }] = [1, 1] +endf + +fu! ctrlp#clra() + let cadir = ctrlp#utils#cachedir() + if isdirectory(cadir) + let cafiles = split(s:glbpath(s:fnesc(cadir, 'g', ','), '**', 1), "\n") + let eval = '!isdirectory(v:val) && v:val !~ ''\v[\/]cache[.a-z]+$|\.log$''' + sil! cal map(s:ifilter(cafiles, eval), 'delete(v:val)') + en + cal ctrlp#clr() +endf + +fu! s:Reset(args) + let opts = has_key(a:args, 'opts') ? [a:args['opts']] : [] + cal call('s:opts', opts) + cal s:autocmds() + cal ctrlp#utils#opts() + cal s:execextvar('opts') +endf +" * Files {{{1 +fu! ctrlp#files() + let cafile = ctrlp#utils#cachefile() + if g:ctrlp_newcache || !filereadable(cafile) || s:nocache(cafile) + let [lscmd, s:initcwd, g:ctrlp_allfiles] = [s:lsCmd(), s:dyncwd, []] + " Get the list of files + if empty(lscmd) + if !ctrlp#igncwd(s:dyncwd) + cal s:GlobPath(s:fnesc(s:dyncwd, 'g', ','), 0) + en + el + sil! cal ctrlp#progress('Indexing...') + try | cal s:UserCmd(lscmd) + cat | retu [] | endt + en + " Remove base directory + cal ctrlp#rmbasedir(g:ctrlp_allfiles) + if len(g:ctrlp_allfiles) <= s:compare_lim + cal sort(g:ctrlp_allfiles, 'ctrlp#complen') + en + cal s:writecache(cafile) + let catime = getftime(cafile) + el + let catime = getftime(cafile) + if !( exists('s:initcwd') && s:initcwd == s:dyncwd ) + \ || get(s:ficounts, s:dyncwd, [0, catime])[1] != catime + let s:initcwd = s:dyncwd + let g:ctrlp_allfiles = ctrlp#utils#readfile(cafile) + en + en + cal extend(s:ficounts, { s:dyncwd : [len(g:ctrlp_allfiles), catime] }) + retu g:ctrlp_allfiles +endf + +fu! s:GlobPath(dirs, depth) + let entries = split(globpath(a:dirs, s:glob), "\n") + let [dnf, depth] = [ctrlp#dirnfile(entries), a:depth + 1] + cal extend(g:ctrlp_allfiles, dnf[1]) + if !empty(dnf[0]) && !s:maxf(len(g:ctrlp_allfiles)) && depth <= s:maxdepth + sil! cal ctrlp#progress(len(g:ctrlp_allfiles), 1) + cal s:GlobPath(join(map(dnf[0], 's:fnesc(v:val, "g", ",")'), ','), depth) + en +endf + +fu! s:UserCmd(lscmd) + let [path, lscmd] = [s:dyncwd, a:lscmd] + let do_ign = + \ type(s:usrcmd) == 4 && has_key(s:usrcmd, 'ignore') && s:usrcmd['ignore'] + if do_ign && ctrlp#igncwd(s:cwd) | retu | en + if exists('+ssl') && &ssl + let [ssl, &ssl, path] = [&ssl, 0, tr(path, '/', '\')] + en + if has('win32') || has('win64') + let lscmd = substitute(lscmd, '\v(^|\&\&\s*)\zscd (/d)@!', 'cd /d ', '') + en + let path = exists('*shellescape') ? shellescape(path) : path + let g:ctrlp_allfiles = split(system(printf(lscmd, path)), "\n") + if exists('+ssl') && exists('ssl') + let &ssl = ssl + cal map(g:ctrlp_allfiles, 'tr(v:val, "\\", "/")') + en + if exists('s:vcscmd') && s:vcscmd + cal map(g:ctrlp_allfiles, 'tr(v:val, "/", "\\")') + en + if do_ign + if !empty(s:usrign) + let g:ctrlp_allfiles = ctrlp#dirnfile(g:ctrlp_allfiles)[1] + en + if &wig != '' + cal filter(g:ctrlp_allfiles, 'glob(v:val) != ""') + en + en +endf + +fu! s:lsCmd() + let cmd = s:usrcmd + if type(cmd) == 1 + retu cmd + elsei type(cmd) == 3 && len(cmd) >= 2 && cmd[:1] != ['', ''] + if s:findroot(s:dyncwd, cmd[0], 0, 1) == [] + retu len(cmd) == 3 ? cmd[2] : '' + en + let s:vcscmd = s:lash == '\' + retu cmd[1] + elsei type(cmd) == 4 && ( has_key(cmd, 'types') || has_key(cmd, 'fallback') ) + let fndroot = [] + if has_key(cmd, 'types') && cmd['types'] != {} + let [markrs, cmdtypes] = [[], values(cmd['types'])] + for pair in cmdtypes + cal add(markrs, pair[0]) + endfo + let fndroot = s:findroot(s:dyncwd, markrs, 0, 1) + en + if fndroot == [] + retu has_key(cmd, 'fallback') ? cmd['fallback'] : '' + en + for pair in cmdtypes + if pair[0] == fndroot[0] | brea | en + endfo + let s:vcscmd = s:lash == '\' + retu pair[1] + en +endf +" - Buffers {{{1 +fu! ctrlp#buffers(...) + let ids = sort(filter(range(1, bufnr('$')), 'empty(getbufvar(v:val, "&bt"))' + \ .' && getbufvar(v:val, "&bl")'), 's:compmreb') + if a:0 && a:1 == 'id' + retu ids + el + let bufs = [[], []] + for id in ids + let bname = bufname(id) + let ebname = bname == '' + let fname = fnamemodify(ebname ? '['.id.'*No Name]' : bname, ':.') + cal add(bufs[ebname], fname) + endfo + retu bufs[0] + bufs[1] + en +endf +" * MatchedItems() {{{1 +fu! s:MatchIt(items, pat, limit, exc) + let [lines, id] = [[], 0] + let pat = + \ s:byfname() ? map(split(a:pat, '^[^;]\+\\\@= 0 + cal add(lines, item) + en | cat | brea | endt + if a:limit > 0 && len(lines) >= a:limit | brea | en + endfo + let s:mdata = [s:dyncwd, s:itemtype, s:regexp, s:sublist(a:items, id, -1)] + retu lines +endf + +fu! s:MatchedItems(items, pat, limit) + let exc = exists('s:crfilerel') ? s:crfilerel : '' + let items = s:narrowable() ? s:matched + s:mdata[3] : a:items + if s:matcher != {} + let argms = + \ has_key(s:matcher, 'arg_type') && s:matcher['arg_type'] == 'dict' ? [{ + \ 'items': items, + \ 'str': a:pat, + \ 'limit': a:limit, + \ 'mmode': s:mmode(), + \ 'ispath': s:ispath, + \ 'crfile': exc, + \ 'regex': s:regexp, + \ }] : [items, a:pat, a:limit, s:mmode(), s:ispath, exc, s:regexp] + let lines = call(s:matcher['match'], argms, s:matcher) + el + let lines = s:MatchIt(items, a:pat, a:limit, exc) + en + let s:matches = len(lines) + unl! s:did_exp + retu lines +endf + +fu! s:SplitPattern(str) + let str = a:str + if s:migemo && s:regexp && len(str) > 0 && executable('cmigemo') + let str = s:migemo(str) + en + let s:savestr = str + if s:regexp + let pat = s:regexfilter(str) + el + let lst = split(str, '\zs') + if exists('+ssl') && !&ssl + cal map(lst, 'escape(v:val, ''\'')') + en + for each in ['^', '$', '.'] + cal map(lst, 'escape(v:val, each)') + endfo + en + if exists('lst') + let pat = '' + if !empty(lst) + if s:byfname() && index(lst, ';') > 0 + let fbar = index(lst, ';') + let lst_1 = s:sublist(lst, 0, fbar - 1) + let lst_2 = len(lst) - 1 > fbar ? s:sublist(lst, fbar + 1, -1) : [''] + let pat = s:buildpat(lst_1).';'.s:buildpat(lst_2) + el + let pat = s:buildpat(lst) + en + en + en + retu escape(pat, '~') +endf +" * BuildPrompt() {{{1 +fu! s:Render(lines, pat) + let [&ma, lines, s:res_count] = [1, a:lines, len(a:lines)] + let height = min([max([s:mw_min, s:res_count]), s:winmaxh]) + let pat = s:byfname() ? split(a:pat, '^[^;]\+\\\@' ).( s:byfname() ? 'd' : '>' ).'> ' + let str = escape(s:getinput(), '\') + let lazy = str == '' || exists('s:force') || !has('autocmd') ? 0 : s:lazy + if a:upd && !lazy && ( s:matches || s:regexp || exists('s:did_exp') + \ || str =~ '\(\\\(<\|>\)\|[*|]\)\|\(\\\:\([^:]\|\\:\)*$\)' ) + sil! cal s:Update(str) + en + sil! cal ctrlp#statusline() + " Toggling + let [hiactive, hicursor, base] = s:focus + \ ? ['CtrlPPrtText', 'CtrlPPrtCursor', base] + \ : ['CtrlPPrtBase', 'CtrlPPrtBase', tr(base, '>', '-')] + let hibase = 'CtrlPPrtBase' + " Build it + redr + let prt = copy(s:prompt) + cal map(prt, 'escape(v:val, ''"\'')') + exe 'echoh' hibase '| echon "'.base.'" + \ | echoh' hiactive '| echon "'.prt[0].'" + \ | echoh' hicursor '| echon "'.prt[1].'" + \ | echoh' hiactive '| echon "'.prt[2].'" | echoh None' + " Append the cursor at the end + if empty(prt[1]) && s:focus + exe 'echoh' hibase '| echon "_" | echoh None' + en +endf +" - SetDefTxt() {{{1 +fu! s:SetDefTxt() + if s:deftxt == '0' || ( s:deftxt == 1 && !s:ispath ) | retu | en + let txt = s:deftxt + if !type(txt) + let path = s:crfpath.s:lash(s:crfpath) + let txt = txt && !stridx(path, s:dyncwd) ? ctrlp#rmbasedir([path])[0] : '' + en + let s:prompt[0] = txt +endf +" ** Prt Actions {{{1 +" Editing {{{2 +fu! s:PrtClear() + if !s:focus | retu | en + unl! s:hstgot + let [s:prompt, s:matches] = [['', '', ''], 1] + cal s:BuildPrompt(1) +endf + +fu! s:PrtAdd(char) + unl! s:hstgot + let s:act_add = 1 + let s:prompt[0] .= a:char + cal s:BuildPrompt(1) + unl s:act_add +endf + +fu! s:PrtBS() + if !s:focus | retu | en + unl! s:hstgot + let [s:prompt[0], s:matches] = [substitute(s:prompt[0], '.$', '', ''), 1] + cal s:BuildPrompt(1) +endf + +fu! s:PrtDelete() + if !s:focus | retu | en + unl! s:hstgot + let [prt, s:matches] = [s:prompt, 1] + let prt[1] = matchstr(prt[2], '^.') + let prt[2] = substitute(prt[2], '^.', '', '') + cal s:BuildPrompt(1) +endf + +fu! s:PrtDeleteWord() + if !s:focus | retu | en + unl! s:hstgot + let [str, s:matches] = [s:prompt[0], 1] + let str = str =~ '\W\w\+$' ? matchstr(str, '^.\+\W\ze\w\+$') + \ : str =~ '\w\W\+$' ? matchstr(str, '^.\+\w\ze\W\+$') + \ : str =~ '\s\+$' ? matchstr(str, '^.*\S\ze\s\+$') + \ : str =~ '\v^(\S+|\s+)$' ? '' : str + let s:prompt[0] = str + cal s:BuildPrompt(1) +endf + +fu! s:PrtInsert(...) + if !s:focus | retu | en + let type = !a:0 ? '' : a:1 + if !a:0 + let type = s:insertstr() + if type == 'cancel' | retu | en + en + if type ==# 'r' + let regcont = s:getregs() + if regcont < 0 | retu | en + en + unl! s:hstgot + let s:act_add = 1 + let s:prompt[0] .= type ==# 'w' ? s:crword + \ : type ==# 'f' ? s:crgfile + \ : type ==# 's' ? s:regisfilter('/') + \ : type ==# 'v' ? s:crvisual + \ : type ==# 'c' ? s:regisfilter('+') + \ : type ==# 'r' ? regcont : '' + cal s:BuildPrompt(1) + unl s:act_add +endf + +fu! s:PrtExpandDir() + if !s:focus | retu | en + let str = s:getinput('c') + if str =~ '\v^\@(cd|lc[hd]?|chd)\s.+' && s:spi + let hasat = split(str, '\v^\@(cd|lc[hd]?|chd)\s*\zs') + let str = get(hasat, 1, '') + if str =~# '\v^[~$]\i{-}[\/]?|^#(\):(p|h|8|\~|\.|g?s+)' + let spc = str =~# '^%' ? s:crfile + \ : str =~# '^' ? s:crgfile + \ : str =~# '^' ? s:crword + \ : str =~# '^' ? s:crnbword : '' + let pat = '(:(p|h|8|\~|\.|g?s(.)[^\3]*\3[^\3]*\3))+' + let mdr = matchstr(str, '\v^[^:]+\zs'.pat) + let nmd = matchstr(str, '\v^[^:]+'.pat.'\zs.{-}$') + let str = fnamemodify(s:fnesc(spc, 'g'), mdr).nmd + en + en + if str == '' | retu | en + unl! s:hstgot + let s:act_add = 1 + let [base, seed] = s:headntail(str) + if str =~# '^[\/]' + let base = expand('/').base + en + let dirs = s:dircompl(base, seed) + if len(dirs) == 1 + let str = dirs[0] + elsei len(dirs) > 1 + let str .= s:findcommon(dirs, str) + en + let s:prompt[0] = exists('hasat') ? hasat[0].str : str + cal s:BuildPrompt(1) + unl s:act_add +endf +" Movement {{{2 +fu! s:PrtCurLeft() + if !s:focus | retu | en + let prt = s:prompt + if !empty(prt[0]) + let s:prompt = [substitute(prt[0], '.$', '', ''), matchstr(prt[0], '.$'), + \ prt[1] . prt[2]] + en + cal s:BuildPrompt(0) +endf + +fu! s:PrtCurRight() + if !s:focus | retu | en + let prt = s:prompt + let s:prompt = [prt[0] . prt[1], matchstr(prt[2], '^.'), + \ substitute(prt[2], '^.', '', '')] + cal s:BuildPrompt(0) +endf + +fu! s:PrtCurStart() + if !s:focus | retu | en + let str = join(s:prompt, '') + let s:prompt = ['', matchstr(str, '^.'), substitute(str, '^.', '', '')] + cal s:BuildPrompt(0) +endf + +fu! s:PrtCurEnd() + if !s:focus | retu | en + let s:prompt = [join(s:prompt, ''), '', ''] + cal s:BuildPrompt(0) +endf + +fu! s:PrtSelectMove(dir) + let wht = winheight(0) + let dirs = {'t': 'gg','b': 'G','j': 'j','k': 'k','u': wht.'k','d': wht.'j'} + exe 'keepj norm!' dirs[a:dir] + if s:nolim != 1 | let s:cline = line('.') | en + if line('$') > winheight(0) | cal s:BuildPrompt(0) | en +endf + +fu! s:PrtSelectJump(char) + let lines = copy(s:lines) + if s:byfname() + cal map(lines, 'split(v:val, ''[\/]\ze[^\/]\+$'')[-1]') + en + " Cycle through matches, use s:jmpchr to store last jump + let chr = escape(matchstr(a:char, '^.'), '.~') + let smartcs = &scs && chr =~ '\u' ? '\C' : '' + if match(lines, smartcs.'^'.chr) >= 0 + " If not exists or does but not for the same char + let pos = match(lines, smartcs.'^'.chr) + if !exists('s:jmpchr') || ( exists('s:jmpchr') && s:jmpchr[0] != chr ) + let [jmpln, s:jmpchr] = [pos, [chr, pos]] + elsei exists('s:jmpchr') && s:jmpchr[0] == chr + " Start of lines + if s:jmpchr[1] == -1 | let s:jmpchr[1] = pos | en + let npos = match(lines, smartcs.'^'.chr, s:jmpchr[1] + 1) + let [jmpln, s:jmpchr] = [npos == -1 ? pos : npos, [chr, npos]] + en + exe 'keepj norm!' ( jmpln + 1 ).'G' + if s:nolim != 1 | let s:cline = line('.') | en + if line('$') > winheight(0) | cal s:BuildPrompt(0) | en + en +endf +" Misc {{{2 +fu! s:PrtFocusMap(char) + cal call(( s:focus ? 's:PrtAdd' : 's:PrtSelectJump' ), [a:char]) +endf + +fu! s:PrtClearCache() + if s:itemtype == 0 + cal ctrlp#clr() + elsei s:itemtype > 2 + cal ctrlp#clr(s:statypes[s:itemtype][1]) + en + if s:itemtype == 2 + let g:ctrlp_lines = ctrlp#mrufiles#refresh() + el + cal ctrlp#setlines() + en + let s:force = 1 + cal s:BuildPrompt(1) + unl s:force +endf + +fu! s:PrtDeleteEnt() + if s:itemtype == 2 + cal s:PrtDeleteMRU() + elsei type(s:getextvar('wipe')) == 1 + cal s:delent(s:getextvar('wipe')) + en +endf + +fu! s:PrtDeleteMRU() + if s:itemtype == 2 + cal s:delent('ctrlp#mrufiles#remove') + en +endf + +fu! s:PrtExit() + if bufnr('%') == s:bufnr && bufname('%') == 'ControlP' + noa cal s:Close() + noa winc p + en +endf + +fu! s:PrtHistory(...) + if !s:focus || !s:maxhst | retu | en + let [str, hst, s:matches] = [join(s:prompt, ''), s:hstry, 1] + " Save to history if not saved before + let [hst[0], hslen] = [exists('s:hstgot') ? hst[0] : str, len(hst)] + let idx = exists('s:hisidx') ? s:hisidx + a:1 : a:1 + " Limit idx within 0 and hslen + let idx = idx < 0 ? 0 : idx >= hslen ? hslen > 1 ? hslen - 1 : 0 : idx + let s:prompt = [hst[idx], '', ''] + let [s:hisidx, s:hstgot, s:force] = [idx, 1, 1] + cal s:BuildPrompt(1) + unl s:force +endf +"}}}1 +" * Mappings {{{1 +fu! s:MapNorms() + if exists('s:nmapped') && s:nmapped == s:bufnr | retu | en + let pcmd = "nn \ \ \ :\cal \%s(\"%s\")\" + let cmd = substitute(pcmd, 'k%s', 'char-%d', '') + let pfunc = 'PrtFocusMap' + let ranges = [32, 33, 125, 126] + range(35, 91) + range(93, 123) + for each in [34, 92, 124] + exe printf(cmd, each, pfunc, escape(nr2char(each), '"|\')) + endfo + for each in ranges + exe printf(cmd, each, pfunc, nr2char(each)) + endfo + for each in range(0, 9) + exe printf(pcmd, each, pfunc, each) + endfo + for [ke, va] in items(s:kprange) + exe printf(pcmd, ke, pfunc, va) + endfo + let s:nmapped = s:bufnr +endf + +fu! s:MapSpecs() + if !( exists('s:smapped') && s:smapped == s:bufnr ) + " Correct arrow keys in terminal + if ( has('termresponse') && v:termresponse =~ "\" ) + \ || &term =~? '\vxterm|','\B ','\C ','\D '] + exe s:lcmap.' ['.each + endfo + en + en + for [ke, va] in items(s:prtmaps) | for kp in va + exe s:lcmap kp ':cal '.ke.'' + endfo | endfo + let s:smapped = s:bufnr +endf + +fu! s:KeyLoop() + wh exists('s:init') && s:keyloop + redr + let nr = getchar() + let chr = !type(nr) ? nr2char(nr) : nr + if nr >=# 0x20 + cal s:PrtFocusMap(chr) + el + let cmd = matchstr(maparg(chr), ':\zs.\+\ze$') + exe ( cmd != '' ? cmd : 'norm '.chr ) + en + endw +endf +" * Toggling {{{1 +fu! s:ToggleFocus() + let s:focus = !s:focus + cal s:BuildPrompt(0) +endf + +fu! s:ToggleRegex() + let s:regexp = !s:regexp + cal s:PrtSwitcher() +endf + +fu! s:ToggleByFname() + if s:ispath + let s:byfname = !s:byfname + let s:mfunc = s:mfunc() + cal s:PrtSwitcher() + en +endf + +fu! s:ToggleType(dir) + let max = len(g:ctrlp_ext_vars) + 2 + let next = s:walker(max, s:itemtype, a:dir) + cal ctrlp#syntax() + cal ctrlp#setlines(next) + cal s:PrtSwitcher() +endf + +fu! s:ToggleKeyLoop() + let s:keyloop = !s:keyloop + if exists('+imd') + let &imd = !s:keyloop + en + if s:keyloop + let [&ut, s:lazy] = [0, 0] + cal s:KeyLoop() + elsei has_key(s:glbs, 'ut') + let [&ut, s:lazy] = [s:glbs['ut'], 1] + en +endf + +fu! s:ToggleMRURelative() + cal ctrlp#mrufiles#tgrel() + cal s:PrtClearCache() +endf + +fu! s:PrtSwitcher() + let [s:force, s:matches] = [1, 1] + cal s:BuildPrompt(1) + unl s:force +endf +" - SetWD() {{{1 +fu! s:SetWD(args) + if has_key(a:args, 'args') && stridx(a:args['args'], '--dir') >= 0 + \ && exists('s:dyncwd') + cal ctrlp#setdir(s:dyncwd) | retu + en + if has_key(a:args, 'dir') && a:args['dir'] != '' + cal ctrlp#setdir(a:args['dir']) | retu + en + let pmode = has_key(a:args, 'mode') ? a:args['mode'] : s:pathmode + let [s:crfilerel, s:dyncwd] = [fnamemodify(s:crfile, ':.'), getcwd()] + if s:crfile =~ '^.\+://' | retu | en + if pmode =~ 'c' || ( pmode =~ 'a' && stridx(s:crfpath, s:cwd) < 0 ) + \ || ( !type(pmode) && pmode ) + if exists('+acd') | let [s:glb_acd, &acd] = [&acd, 0] | en + cal ctrlp#setdir(s:crfpath) + en + if pmode =~ 'r' || pmode == 2 + let markers = ['.git', '.hg', '.svn', '.bzr', '_darcs'] + let spath = pmode =~ 'd' ? s:dyncwd : pmode =~ 'w' ? s:cwd : s:crfpath + if type(s:rmarkers) == 3 && !empty(s:rmarkers) + if s:findroot(spath, s:rmarkers, 0, 0) != [] | retu | en + cal filter(markers, 'index(s:rmarkers, v:val) < 0') + en + cal s:findroot(spath, markers, 0, 0) + en +endf +" * AcceptSelection() {{{1 +fu! ctrlp#acceptfile(...) + let useb = 0 + if a:0 == 1 && type(a:1) == 4 + let [md, line] = [a:1['action'], a:1['line']] + let atl = has_key(a:1, 'tail') ? a:1['tail'] : '' + el + let [md, line] = [a:1, a:2] + let atl = a:0 > 2 ? a:3 : '' + en + if !type(line) + let [filpath, bufnr, useb] = [line, line, 1] + el + let filpath = fnamemodify(line, ':p') + if s:nonamecond(line, filpath) + let bufnr = str2nr(matchstr(line, '[\/]\?\[\zs\d\+\ze\*No Name\]$')) + let [filpath, useb] = [bufnr, 1] + el + let bufnr = bufnr('^'.filpath.'$') + en + en + cal s:PrtExit() + let tail = s:tail() + let j2l = atl != '' ? atl : matchstr(tail, '^ +\zs\d\+$') + if ( s:jmptobuf =~ md || ( s:jmptobuf && md =~ '[et]' ) ) && bufnr > 0 + \ && !( md == 'e' && bufnr == bufnr('%') ) + let [jmpb, bufwinnr] = [1, bufwinnr(bufnr)] + let buftab = ( s:jmptobuf =~# '[tTVH]' || s:jmptobuf > 1 ) + \ ? s:buftab(bufnr, md) : [0, 0] + en + " Switch to existing buffer or open new one + if exists('jmpb') && bufwinnr > 0 + \ && !( md == 't' && ( s:jmptobuf !~# toupper(md) || buftab[0] ) ) + exe bufwinnr.'winc w' + if j2l | cal ctrlp#j2l(j2l) | en + elsei exists('jmpb') && buftab[0] + \ && !( md =~ '[evh]' && s:jmptobuf !~# toupper(md) ) + exe 'tabn' buftab[0] + exe buftab[1].'winc w' + if j2l | cal ctrlp#j2l(j2l) | en + el + " Determine the command to use + let useb = bufnr > 0 && buflisted(bufnr) && ( empty(tail) || useb ) + let cmd = + \ md == 't' || s:splitwin == 1 ? ( useb ? 'tab sb' : 'tabe' ) : + \ md == 'h' || s:splitwin == 2 ? ( useb ? 'sb' : 'new' ) : + \ md == 'v' || s:splitwin == 3 ? ( useb ? 'vert sb' : 'vne' ) : + \ call('ctrlp#normcmd', useb ? ['b', 'bo vert sb'] : ['e']) + " Reset &switchbuf option + let [swb, &swb] = [&swb, ''] + " Open new window/buffer + let [fid, tail] = [( useb ? bufnr : filpath ), ( atl != '' ? ' +'.atl : tail )] + let args = [cmd, fid, tail, 1, [useb, j2l]] + cal call('s:openfile', args) + let &swb = swb + en +endf + +fu! s:SpecInputs(str) + if a:str =~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*)$' && s:spi + let cwd = s:dyncwd + cal ctrlp#setdir(a:str =~ '^\.\.\.*$' ? + \ '../'.repeat('../', strlen(a:str) - 2) : a:str) + if cwd != s:dyncwd | cal ctrlp#setlines() | en + cal s:PrtClear() + retu 1 + elsei a:str == s:lash && s:spi + cal s:SetWD({ 'mode': 'rd' }) + cal ctrlp#setlines() + cal s:PrtClear() + retu 1 + elsei a:str =~ '^@.\+' && s:spi + retu s:at(a:str) + elsei a:str == '?' + cal s:PrtExit() + let hlpwin = &columns > 159 ? '| vert res 80' : '' + sil! exe 'bo vert h ctrlp-mappings' hlpwin '| norm! 0' + retu 1 + en + retu 0 +endf + +fu! s:AcceptSelection(action) + let [md, icr] = [a:action[0], match(a:action, 'r') >= 0] + let subm = icr || ( !icr && md == 'e' ) + if !subm && s:OpenMulti(md) != -1 | retu | en + let str = s:getinput() + if subm | if s:SpecInputs(str) | retu | en | en + " Get the selected line + let line = ctrlp#getcline() + if !subm && !s:itemtype && line == '' && line('.') > s:offset + \ && str !~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*|/|\\|\?|\@.+)$' + cal s:CreateNewFile(md) | retu + en + if empty(line) | retu | en + " Do something with it + if s:openfunc != {} && has_key(s:openfunc, s:ctype) + let actfunc = s:openfunc[s:ctype] + let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'list' + el + if s:itemtype < 3 + let [actfunc, type] = ['ctrlp#acceptfile', 'dict'] + el + let [actfunc, exttype] = [s:getextvar('accept'), s:getextvar('act_farg')] + let type = exttype == 'dict' ? exttype : 'list' + en + en + let actargs = type == 'dict' ? [{ 'action': md, 'line': line, 'icr': icr }] + \ : [md, line] + cal call(actfunc, actargs) +endf +" - CreateNewFile() {{{1 +fu! s:CreateNewFile(...) + let [md, str] = ['', s:getinput('n')] + if empty(str) | retu | en + if s:argmap && !a:0 + " Get the extra argument + let md = s:argmaps(md, 1) + if md == 'cancel' | retu | en + en + let str = s:sanstail(str) + let [base, fname] = s:headntail(str) + if fname =~ '^[\/]$' | retu | en + if exists('s:marked') && len(s:marked) + " Use the first marked file's path + let path = fnamemodify(values(s:marked)[0], ':p:h') + let base = path.s:lash(path).base + let str = fnamemodify(base.s:lash.fname, ':.') + en + if base != '' | if isdirectory(ctrlp#utils#mkdir(base)) + let optyp = str | en | el | let optyp = fname + en + if !exists('optyp') | retu | en + let [filpath, tail] = [fnamemodify(optyp, ':p'), s:tail()] + if !stridx(filpath, s:dyncwd) | cal s:insertcache(str) | en + cal s:PrtExit() + let cmd = md == 'r' ? ctrlp#normcmd('e') : + \ s:newfop =~ '1\|t' || ( a:0 && a:1 == 't' ) || md == 't' ? 'tabe' : + \ s:newfop =~ '2\|h' || ( a:0 && a:1 == 'h' ) || md == 'h' ? 'new' : + \ s:newfop =~ '3\|v' || ( a:0 && a:1 == 'v' ) || md == 'v' ? 'vne' : + \ ctrlp#normcmd('e') + cal s:openfile(cmd, filpath, tail, 1) +endf +" * OpenMulti() {{{1 +fu! s:MarkToOpen() + if s:bufnr <= 0 || s:opmul == '0' + \ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 ) + retu + en + let line = ctrlp#getcline() + if empty(line) | retu | en + let filpath = s:ispath ? fnamemodify(line, ':p') : line + if exists('s:marked') && s:dictindex(s:marked, filpath) > 0 + " Unmark and remove the file from s:marked + let key = s:dictindex(s:marked, filpath) + cal remove(s:marked, key) + if empty(s:marked) | unl s:marked | en + if has('signs') + exe 'sign unplace' key 'buffer='.s:bufnr + en + el + " Add to s:marked and place a new sign + if exists('s:marked') + let vac = s:vacantdict(s:marked) + let key = empty(vac) ? len(s:marked) + 1 : vac[0] + let s:marked = extend(s:marked, { key : filpath }) + el + let [key, s:marked] = [1, { 1 : filpath }] + en + if has('signs') + exe 'sign place' key 'line='.line('.').' name=ctrlpmark buffer='.s:bufnr + en + en + sil! cal ctrlp#statusline() +endf + +fu! s:OpenMulti(...) + let has_marked = exists('s:marked') + if ( !has_marked && a:0 ) || s:opmul == '0' || !s:ispath + \ || ( s:itemtype > 2 && s:getextvar('opmul') != 1 ) + retu -1 + en + " Get the options + let [nr, md] = [matchstr(s:opmul, '\d\+'), matchstr(s:opmul, '[thvi]')] + let [ur, jf] = [s:opmul =~ 'r', s:opmul =~ 'j'] + let md = a:0 ? a:1 : ( md == '' ? 'v' : md ) + let nopt = exists('g:ctrlp_open_multiple_files') + if !has_marked + let line = ctrlp#getcline() + if line == '' | retu | en + let marked = { 1 : fnamemodify(line, ':p') } + let [nr, ur, jf, nopt] = ['1', 0, 0, 1] + en + if ( s:argmap || !has_marked ) && !a:0 + let md = s:argmaps(md, !has_marked ? 2 : 0) + if md == 'c' + cal s:unmarksigns() + unl! s:marked + cal s:BuildPrompt(0) + elsei !has_marked && md =~ '[axd]' + retu s:OpenNoMarks(md, line) + en + if md =~ '\v^c(ancel)?$' | retu | en + let nr = nr == '0' ? ( nopt ? '' : '1' ) : nr + let ur = !has_marked && md == 'r' ? 1 : ur + en + let mkd = values(has_marked ? s:marked : marked) + cal s:sanstail(join(s:prompt, '')) + cal s:PrtExit() + if nr == '0' || md == 'i' + retu map(mkd, "s:openfile('bad', v:val, '', 0)") + en + let tail = s:tail() + let [emptytail, bufnr] = [empty(tail), bufnr('^'.mkd[0].'$')] + let useb = bufnr > 0 && buflisted(bufnr) && emptytail + " Move to a replaceable window + let ncmd = ( useb ? ['b', 'bo vert sb'] : ['e', 'bo vne'] ) + \ + ( ur ? [] : ['ignruw'] ) + let fst = call('ctrlp#normcmd', ncmd) + " Check if the current window has a replaceable buffer + let repabl = !( md == 't' && !ur ) && empty(bufname('%')) && empty(&l:ft) + " Commands for the rest of the files + let [ic, cmds] = [1, { 'v': ['vert sb', 'vne'], 'h': ['sb', 'new'], + \ 't': ['tab sb', 'tabe'] }] + let [swb, &swb] = [&swb, ''] + if md == 't' && ctrlp#tabcount() < tabpagenr() + let s:tabct = ctrlp#tabcount() + en + " Open the files + for va in mkd + let bufnr = bufnr('^'.va.'$') + if bufnr < 0 && getftype(va) == '' | con | en + let useb = bufnr > 0 && buflisted(bufnr) && emptytail + let snd = md != '' && has_key(cmds, md) ? + \ ( useb ? cmds[md][0] : cmds[md][1] ) : ( useb ? 'vert sb' : 'vne' ) + let cmd = ic == 1 && ( !( !ur && fst =~ '^[eb]$' ) || repabl ) ? fst : snd + let conds = [( nr != '' && nr > 1 && nr < ic ) || ( nr == '' && ic > 1 ), + \ nr != '' && nr < ic] + if conds[nopt] + if !buflisted(bufnr) | cal s:openfile('bad', va, '', 0) | en + el + cal s:openfile(cmd, useb ? bufnr : va, tail, ic == 1) + if jf | if ic == 1 + let crpos = [tabpagenr(), winnr()] + el + let crpos[0] += tabpagenr() <= crpos[0] + let crpos[1] += winnr() <= crpos[1] + en | en + let ic += 1 + en + endfo + if jf && exists('crpos') && ic > 2 + exe ( md == 't' ? 'tabn '.crpos[0] : crpos[1].'winc w' ) + en + let &swb = swb + unl! s:tabct +endf + +fu! s:OpenNoMarks(md, line) + if a:md == 'a' + let [s:marked, key] = [{}, 1] + for line in s:lines + let s:marked = extend(s:marked, { key : fnamemodify(line, ':p') }) + let key += 1 + endfo + cal s:remarksigns() + cal s:BuildPrompt(0) + elsei a:md == 'x' + let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'dict' + let argms = type == 'dict' ? [{ 'action': a:md, 'line': a:line }] + \ : [a:md, a:line] + cal call(s:openfunc[s:ctype], argms, s:openfunc) + elsei a:md == 'd' + let dir = fnamemodify(a:line, ':h') + if isdirectory(dir) + cal ctrlp#setdir(dir) + cal ctrlp#switchtype(0) + cal ctrlp#recordhist() + cal s:PrtClear() + en + en +endf +" ** Helper functions {{{1 +" Sorting {{{2 +fu! ctrlp#complen(...) + " By length + let [len1, len2] = [strlen(a:1), strlen(a:2)] + retu len1 == len2 ? 0 : len1 > len2 ? 1 : -1 +endf + +fu! s:compmatlen(...) + " By match length + let mln1 = s:shortest(s:matchlens(a:1, s:compat)) + let mln2 = s:shortest(s:matchlens(a:2, s:compat)) + retu mln1 == mln2 ? 0 : mln1 > mln2 ? 1 : -1 +endf + +fu! s:comptime(...) + " By last modified time + let [time1, time2] = [getftime(a:1), getftime(a:2)] + retu time1 == time2 ? 0 : time1 < time2 ? 1 : -1 +endf + +fu! s:compmreb(...) + " By last entered time (bufnr) + let [id1, id2] = [index(s:mrbs, a:1), index(s:mrbs, a:2)] + retu id1 == id2 ? 0 : id1 > id2 ? 1 : -1 +endf + +fu! s:compmref(...) + " By last entered time (MRU) + let [id1, id2] = [index(g:ctrlp_lines, a:1), index(g:ctrlp_lines, a:2)] + retu id1 == id2 ? 0 : id1 > id2 ? 1 : -1 +endf + +fu! s:comparent(...) + " By same parent dir + if !stridx(s:crfpath, s:dyncwd) + let [as1, as2] = [s:dyncwd.s:lash().a:1, s:dyncwd.s:lash().a:2] + let [loc1, loc2] = [s:getparent(as1), s:getparent(as2)] + if loc1 == s:crfpath && loc2 != s:crfpath | retu -1 | en + if loc2 == s:crfpath && loc1 != s:crfpath | retu 1 | en + retu 0 + en + retu 0 +endf + +fu! s:compfnlen(...) + " By filename length + let len1 = strlen(split(a:1, s:lash)[-1]) + let len2 = strlen(split(a:2, s:lash)[-1]) + retu len1 == len2 ? 0 : len1 > len2 ? 1 : -1 +endf + +fu! s:matchlens(str, pat, ...) + if empty(a:pat) || index(['^', '$'], a:pat) >= 0 | retu {} | en + let st = a:0 ? a:1 : 0 + let lens = a:0 >= 2 ? a:2 : {} + let nr = a:0 >= 3 ? a:3 : 0 + if nr > 20 | retu {} | en + if match(a:str, a:pat, st) >= 0 + let [mst, mnd] = [matchstr(a:str, a:pat, st), matchend(a:str, a:pat, st)] + let lens = extend(lens, { nr : [strlen(mst), mst] }) + let lens = s:matchlens(a:str, a:pat, mnd, lens, nr + 1) + en + retu lens +endf + +fu! s:shortest(lens) + retu min(map(values(a:lens), 'v:val[0]')) +endf + +fu! s:mixedsort(...) + if s:itemtype == 1 + let pat = '[\/]\?\[\d\+\*No Name\]$' + if a:1 =~# pat && a:2 =~# pat | retu 0 + elsei a:1 =~# pat | retu 1 + elsei a:2 =~# pat | retu -1 | en + en + let [cln, cml] = [ctrlp#complen(a:1, a:2), s:compmatlen(a:1, a:2)] + if s:ispath + let ms = [] + if s:res_count < 21 + let ms += [s:compfnlen(a:1, a:2)] + if s:itemtype !~ '^[12]$' | let ms += [s:comptime(a:1, a:2)] | en + if !s:itemtype | let ms += [s:comparent(a:1, a:2)] | en + en + if s:itemtype =~ '^[12]$' + let ms += [s:compmref(a:1, a:2)] + let cln = cml ? cln : 0 + en + let ms += [cml, 0, 0, 0] + let mp = call('s:multipliers', ms[:3]) + retu cln + ms[0] * mp[0] + ms[1] * mp[1] + ms[2] * mp[2] + ms[3] * mp[3] + en + retu cln + cml * 2 +endf + +fu! s:multipliers(...) + let mp0 = !a:1 ? 0 : 2 + let mp1 = !a:2 ? 0 : 1 + ( !mp0 ? 1 : mp0 ) + let mp2 = !a:3 ? 0 : 1 + ( !( mp0 + mp1 ) ? 1 : ( mp0 + mp1 ) ) + let mp3 = !a:4 ? 0 : 1 + ( !( mp0 + mp1 + mp2 ) ? 1 : ( mp0 + mp1 + mp2 ) ) + retu [mp0, mp1, mp2, mp3] +endf + +fu! s:compval(...) + retu a:1 - a:2 +endf +" Statusline {{{2 +fu! ctrlp#statusline() + if !exists('s:statypes') + let s:statypes = [ + \ ['files', 'fil'], + \ ['buffers', 'buf'], + \ ['mru files', 'mru'], + \ ] + if !empty(g:ctrlp_ext_vars) + cal map(copy(g:ctrlp_ext_vars), + \ 'add(s:statypes, [ v:val["lname"], v:val["sname"] ])') + en + en + let tps = s:statypes + let max = len(tps) - 1 + let nxt = tps[s:walker(max, s:itemtype, 1)][1] + let prv = tps[s:walker(max, s:itemtype, -1)][1] + let s:ctype = tps[s:itemtype][0] + let focus = s:focus ? 'prt' : 'win' + let byfname = s:ispath ? s:byfname ? 'file' : 'path' : 'line' + let marked = s:opmul != '0' ? + \ exists('s:marked') ? ' <'.s:dismrk().'>' : ' <->' : '' + if s:status != {} + let argms = + \ has_key(s:status, 'arg_type') && s:status['arg_type'] == 'dict' ? [{ + \ 'focus': focus, + \ 'byfname': byfname, + \ 'regex': s:regexp, + \ 'prev': prv, + \ 'item': s:ctype, + \ 'next': nxt, + \ 'marked': marked, + \ }] : [focus, byfname, s:regexp, prv, s:ctype, nxt, marked] + let &l:stl = call(s:status['main'], argms, s:status) + el + let item = '%#CtrlPMode1# '.s:ctype.' %*' + let focus = '%#CtrlPMode2# '.focus.' %*' + let byfname = '%#CtrlPMode1# '.byfname.' %*' + let regex = s:regexp ? '%#CtrlPMode2# regex %*' : '' + let slider = ' <'.prv.'>={'.item.'}=<'.nxt.'>' + let dir = ' %=%<%#CtrlPMode2# %{getcwd()} %*' + let &l:stl = focus.byfname.regex.slider.marked.dir + en +endf + +fu! s:dismrk() + retu has('signs') ? len(s:marked) : + \ '%<'.join(values(map(copy(s:marked), 'split(v:val, "[\\/]")[-1]')), ', ') +endf + +fu! ctrlp#progress(enum, ...) + if has('macunix') || has('mac') | sl 1m | en + let txt = a:0 ? '(press ctrl-c to abort)' : '' + if s:status != {} + let argms = has_key(s:status, 'arg_type') && s:status['arg_type'] == 'dict' + \ ? [{ 'str': a:enum }] : [a:enum] + let &l:stl = call(s:status['prog'], argms, s:status) + el + let &l:stl = '%#CtrlPStats# '.a:enum.' %* '.txt.'%=%<%#CtrlPMode2# %{getcwd()} %*' + en + redraws +endf +" *** Paths {{{2 +" Line formatting {{{3 +fu! s:formatline(str) + let str = a:str + if s:itemtype == 1 + let filpath = fnamemodify(str, ':p') + let bufnr = s:nonamecond(str, filpath) + \ ? str2nr(matchstr(str, '[\/]\?\[\zs\d\+\ze\*No Name\]$')) + \ : bufnr('^'.filpath.'$') + let idc = ( bufnr == bufnr('#') ? '#' : '' ) + \ . ( getbufvar(bufnr, '&ma') ? '' : '-' ) + \ . ( getbufvar(bufnr, '&ro') ? '=' : '' ) + \ . ( getbufvar(bufnr, '&mod') ? '+' : '' ) + let str .= idc != '' ? ' '.idc : '' + en + let cond = s:ispath && ( s:winw - 4 ) < s:strwidth(str) + retu '> '.( cond ? s:pathshorten(str) : str ) +endf + +fu! s:pathshorten(str) + retu matchstr(a:str, '^.\{9}').'...' + \ .matchstr(a:str, '.\{'.( s:winw - 16 ).'}$') +endf + +fu! s:offset(lines, height) + let s:offset = s:mw_order == 'btt' ? ( a:height - s:res_count ) : 0 + retu s:offset > 0 ? ( repeat([''], s:offset) + a:lines ) : a:lines +endf +" Directory completion {{{3 +fu! s:dircompl(be, sd) + if a:sd == '' | retu [] | en + if a:be == '' + let [be, sd] = [s:dyncwd, a:sd] + el + let be = a:be.s:lash(a:be) + let sd = be.a:sd + en + let dirs = split(globpath(s:fnesc(be, 'g', ','), a:sd.'*/'), "\n") + if a:be == '' + let dirs = ctrlp#rmbasedir(dirs) + en + cal filter(dirs, '!match(v:val, escape(sd, ''~$.\''))' + \ . ' && v:val !~ ''\v(^|[\/])\.{1,2}[\/]$''') + retu dirs +endf + +fu! s:findcommon(items, seed) + let [items, id, cmn, ic] = [copy(a:items), strlen(a:seed), '', 0] + cal map(items, 'strpart(v:val, id)') + for char in split(items[0], '\zs') + for item in items[1:] + if item[ic] != char | let brk = 1 | brea | en + endfo + if exists('brk') | brea | en + let cmn .= char + let ic += 1 + endfo + retu cmn +endf +" Misc {{{3 +fu! s:headntail(str) + let parts = split(a:str, '[\/]\ze[^\/]\+[\/:]\?$') + retu len(parts) == 1 ? ['', parts[0]] : len(parts) == 2 ? parts : [] +endf + +fu! s:lash(...) + retu ( a:0 ? a:1 : s:dyncwd ) !~ '[\/]$' ? s:lash : '' +endf + +fu! s:ispathitem() + retu s:itemtype < 3 || ( s:itemtype > 2 && s:getextvar('type') == 'path' ) +endf + +fu! ctrlp#igncwd(cwd) + retu ctrlp#utils#glob(a:cwd, 0) == '' || + \ ( s:igntype >= 0 && s:usrign(a:cwd, getftype(a:cwd)) ) +endf + +fu! ctrlp#dirnfile(entries) + let [items, cwd] = [[[], []], s:dyncwd.s:lash()] + for each in a:entries + let etype = getftype(each) + if s:igntype >= 0 && s:usrign(each, etype) | con | en + if etype == 'dir' + if s:showhidden | if each !~ '[\/]\.\{1,2}$' + cal add(items[0], each) + en | el + cal add(items[0], each) + en + elsei etype == 'link' + if s:folsym + let isfile = !isdirectory(each) + if s:folsym == 2 || !s:samerootsyml(each, isfile, cwd) + cal add(items[isfile], each) + en + en + elsei etype == 'file' + cal add(items[1], each) + en + endfo + retu items +endf + +fu! s:usrign(item, type) + retu s:igntype == 1 ? a:item =~ s:usrign + \ : s:igntype == 4 && has_key(s:usrign, a:type) && s:usrign[a:type] != '' + \ ? a:item =~ s:usrign[a:type] : 0 +endf + +fu! s:samerootsyml(each, isfile, cwd) + let resolve = fnamemodify(resolve(a:each), ':p:h') + let resolve .= s:lash(resolve) + retu !( stridx(resolve, a:cwd) && ( stridx(a:cwd, resolve) || a:isfile ) ) +endf + +fu! ctrlp#rmbasedir(items) + let cwd = s:dyncwd.s:lash() + if a:items != [] && !stridx(a:items[0], cwd) + let idx = strlen(cwd) + retu map(a:items, 'strpart(v:val, idx)') + en + retu a:items +endf +" Working directory {{{3 +fu! s:getparent(item) + let parent = substitute(a:item, '[\/][^\/]\+[\/:]\?$', '', '') + if parent == '' || parent !~ '[\/]' + let parent .= s:lash + en + retu parent +endf + +fu! s:findroot(curr, mark, depth, type) + let [depth, fnd] = [a:depth + 1, 0] + if type(a:mark) == 1 + let fnd = s:glbpath(s:fnesc(a:curr, 'g', ','), a:mark, 1) != '' + elsei type(a:mark) == 3 + for markr in a:mark + if s:glbpath(s:fnesc(a:curr, 'g', ','), markr, 1) != '' + let fnd = 1 + brea + en + endfo + en + if fnd + if !a:type | cal ctrlp#setdir(a:curr) | en + retu [exists('markr') ? markr : a:mark, a:curr] + elsei depth > s:maxdepth + cal ctrlp#setdir(s:cwd) + el + let parent = s:getparent(a:curr) + if parent != a:curr + retu s:findroot(parent, a:mark, depth, a:type) + en + en + retu [] +endf + +fu! ctrlp#setdir(path, ...) + let cmd = a:0 ? a:1 : 'lc!' + sil! exe cmd s:fnesc(a:path, 'c') + let [s:crfilerel, s:dyncwd] = [fnamemodify(s:crfile, ':.'), getcwd()] +endf +" Fallbacks {{{3 +fu! s:glbpath(...) + retu call('ctrlp#utils#globpath', a:000) +endf + +fu! s:fnesc(...) + retu call('ctrlp#utils#fnesc', a:000) +endf + +fu! ctrlp#setlcdir() + if exists('*haslocaldir') + cal ctrlp#setdir(getcwd(), haslocaldir() ? 'lc!' : 'cd!') + en +endf +" Highlighting {{{2 +fu! ctrlp#syntax() + if ctrlp#nosy() | retu | en + for [ke, va] in items(s:hlgrps) | cal ctrlp#hicheck('CtrlP'.ke, va) | endfo + if synIDattr(synIDtrans(hlID('Normal')), 'bg') !~ '^-1$\|^$' + sil! exe 'hi CtrlPLinePre '.( has("gui_running") ? 'gui' : 'cterm' ).'fg=bg' + en + sy match CtrlPNoEntries '^ == NO ENTRIES ==$' + if hlexists('CtrlPLinePre') + sy match CtrlPLinePre '^>' + en +endf + +fu! s:highlight(pat, grp) + if s:matcher != {} | retu | en + cal clearmatches() + if !empty(a:pat) && s:ispath + let pat = s:regexp ? substitute(a:pat, '\\\@ \\zs', 'g') : a:pat + if s:byfname + let pat = substitute(pat, '\[\^\(.\{-}\)\]\\{-}', '[^\\/\1]\\{-}', 'g') + let pat = substitute(pat, '\$\@') + en +endf + +fu! s:dohighlight() + retu s:mathi[0] && exists('*clearmatches') && !ctrlp#nosy() +endf +" Prompt history {{{2 +fu! s:gethistloc() + let utilcadir = ctrlp#utils#cachedir() + let cache_dir = utilcadir.s:lash(utilcadir).'hist' + retu [cache_dir, cache_dir.s:lash(cache_dir).'cache.txt'] +endf + +fu! s:gethistdata() + retu ctrlp#utils#readfile(s:gethistloc()[1]) +endf + +fu! ctrlp#recordhist() + let str = join(s:prompt, '') + if empty(str) || !s:maxhst | retu | en + let hst = s:hstry + if len(hst) > 1 && hst[1] == str | retu | en + cal extend(hst, [str], 1) + if len(hst) > s:maxhst | cal remove(hst, s:maxhst, -1) | en + cal ctrlp#utils#writecache(hst, s:gethistloc()[0], s:gethistloc()[1]) +endf +" Signs {{{2 +fu! s:unmarksigns() + if !s:dosigns() | retu | en + for key in keys(s:marked) + exe 'sign unplace' key 'buffer='.s:bufnr + endfo +endf + +fu! s:remarksigns() + if !s:dosigns() | retu | en + for ic in range(1, len(s:lines)) + let line = s:ispath ? fnamemodify(s:lines[ic - 1], ':p') : s:lines[ic - 1] + let key = s:dictindex(s:marked, line) + if key > 0 + exe 'sign place' key 'line='.ic.' name=ctrlpmark buffer='.s:bufnr + en + endfo +endf + +fu! s:dosigns() + retu exists('s:marked') && s:bufnr > 0 && s:opmul != '0' && has('signs') +endf +" Lists & Dictionaries {{{2 +fu! s:ifilter(list, str) + let [rlist, estr] = [[], substitute(a:str, 'v:val', 'each', 'g')] + for each in a:list + try + if eval(estr) + cal add(rlist, each) + en + cat | con | endt + endfo + retu rlist +endf + +fu! s:dictindex(dict, expr) + for key in keys(a:dict) + if a:dict[key] == a:expr | retu key | en + endfo + retu -1 +endf + +fu! s:vacantdict(dict) + retu filter(range(1, max(keys(a:dict))), '!has_key(a:dict, v:val)') +endf + +fu! s:sublist(l, s, e) + retu v:version > 701 ? a:l[(a:s):(a:e)] : s:sublist7071(a:l, a:s, a:e) +endf + +fu! s:sublist7071(l, s, e) + let [newlist, id, ae] = [[], a:s, a:e == -1 ? len(a:l) - 1 : a:e] + wh id <= ae + cal add(newlist, get(a:l, id)) + let id += 1 + endw + retu newlist +endf +" Buffers {{{2 +fu! s:buftab(bufnr, md) + for tabnr in range(1, tabpagenr('$')) + if tabpagenr() == tabnr && a:md == 't' | con | en + let buflist = tabpagebuflist(tabnr) + if index(buflist, a:bufnr) >= 0 + for winnr in range(1, tabpagewinnr(tabnr, '$')) + if buflist[winnr - 1] == a:bufnr | retu [tabnr, winnr] | en + endfo + en + endfo + retu [0, 0] +endf + +fu! s:bufwins(bufnr) + let winns = 0 + for tabnr in range(1, tabpagenr('$')) + let winns += count(tabpagebuflist(tabnr), a:bufnr) + endfo + retu winns +endf + +fu! s:nonamecond(str, filpath) + retu a:str =~ '[\/]\?\[\d\+\*No Name\]$' && !filereadable(a:filpath) + \ && bufnr('^'.a:filpath.'$') < 1 +endf + +fu! ctrlp#normcmd(cmd, ...) + if a:0 < 2 && s:nosplit() | retu a:cmd | en + let norwins = filter(range(1, winnr('$')), + \ 'empty(getbufvar(winbufnr(v:val), "&bt"))') + for each in norwins + let bufnr = winbufnr(each) + if empty(bufname(bufnr)) && empty(getbufvar(bufnr, '&ft')) + let fstemp = each | brea + en + endfo + let norwin = empty(norwins) ? 0 : norwins[0] + if norwin + if index(norwins, winnr()) < 0 + exe ( exists('fstemp') ? fstemp : norwin ).'winc w' + en + retu a:cmd + en + retu a:0 ? a:1 : 'bo vne' +endf + +fu! ctrlp#modfilecond(w) + retu &mod && !&hid && &bh != 'hide' && s:bufwins(bufnr('%')) == 1 && !&cf && + \ ( ( !&awa && a:w ) || filewritable(fnamemodify(bufname('%'), ':p')) != 1 ) +endf + +fu! s:nosplit() + retu !empty(s:nosplit) && match([bufname('%'), &l:ft, &l:bt], s:nosplit) >= 0 +endf + +fu! s:setupblank() + setl noswf nonu nobl nowrap nolist nospell nocuc wfh + setl fdc=0 fdl=99 tw=0 bt=nofile bh=unload + if v:version > 702 + setl nornu noudf cc=0 + en +endf + +fu! s:leavepre() + if exists('s:bufnr') && s:bufnr == bufnr('%') | bw! | en + if !( exists(s:ccex) && !{s:ccex} ) + \ && !( has('clientserver') && len(split(serverlist(), "\n")) > 1 ) + cal ctrlp#clra() + en +endf + +fu! s:checkbuf() + if !exists('s:init') && exists('s:bufnr') && s:bufnr > 0 + exe s:bufnr.'bw!' + en +endf + +fu! s:iscmdwin() + let ermsg = v:errmsg + sil! noa winc p + sil! noa winc p + let [v:errmsg, ermsg] = [ermsg, v:errmsg] + retu ermsg =~ '^E11:' +endf +" Arguments {{{2 +fu! s:at(str) + if a:str =~ '\v^\@(cd|lc[hd]?|chd).*' + let str = substitute(a:str, '\v^\@(cd|lc[hd]?|chd)\s*', '', '') + if str == '' | retu 1 | en + let str = str =~ '^%:.\+' ? fnamemodify(s:crfile, str[1:]) : str + let path = fnamemodify(expand(str, 1), ':p') + if isdirectory(path) + if path != s:dyncwd + cal ctrlp#setdir(path) + cal ctrlp#setlines() + en + cal ctrlp#recordhist() + cal s:PrtClear() + en + retu 1 + en + retu 0 +endf + +fu! s:tail() + if exists('s:optail') && !empty('s:optail') + let tailpref = s:optail !~ '^\s*+' ? ' +' : ' ' + retu tailpref.s:optail + en + retu '' +endf + +fu! s:sanstail(str) + let str = s:spi ? + \ substitute(a:str, '^\(@.*$\|\\\\\ze@\|\.\.\zs[.\/]\+$\)', '', 'g') : a:str + let [str, pat] = [substitute(str, '\\\\', '\', 'g'), '\([^:]\|\\:\)*$'] + unl! s:optail + if str =~ '\\\@= 0 + retu char + elsei char =~# "\\v\|\|\|\|\|\" + cal s:BuildPrompt(0) + retu 'cancel' + elsei char =~# "\" && a:args != [] + retu a:args[0] + en + retu call(a:func, a:args) +endf + +fu! s:getregs() + let char = s:textdialog('Insert from register: ') + if char =~# "\\v\|\|\|\|\|\" + cal s:BuildPrompt(0) + retu -1 + elsei char =~# "\" + retu s:getregs() + en + retu s:regisfilter(char) +endf + +fu! s:regisfilter(reg) + retu substitute(getreg(a:reg), "[\t\n]", ' ', 'g') +endf +" Misc {{{2 +fu! s:modevar() + let s:matchtype = s:mtype() + let s:ispath = s:ispathitem() + let s:mfunc = s:mfunc() + let s:nolim = s:getextvar('nolim') + let s:dosort = s:getextvar('sort') + let s:spi = !s:itemtype || s:getextvar('specinput') > 0 +endf + +fu! s:nosort() + retu s:matcher != {} || s:nolim == 1 || ( s:itemtype == 2 && s:mrudef ) + \ || ( s:itemtype =~ '\v^(1|2)$' && s:prompt == ['', '', ''] ) || !s:dosort +endf + +fu! s:byfname() + retu s:ispath && s:byfname +endf + +fu! s:narrowable() + retu exists('s:act_add') && exists('s:matched') && s:matched != [] + \ && exists('s:mdata') && s:mdata[:2] == [s:dyncwd, s:itemtype, s:regexp] + \ && s:matcher == {} && !exists('s:did_exp') +endf + +fu! s:getinput(...) + let [prt, spi] = [s:prompt, ( a:0 ? a:1 : '' )] + if s:abbrev != {} + let gmd = has_key(s:abbrev, 'gmode') ? s:abbrev['gmode'] : '' + let str = ( gmd =~ 't' && !a:0 ) || spi == 'c' ? prt[0] : join(prt, '') + if gmd =~ 't' && gmd =~ 'k' && !a:0 && matchstr(str, '.$') =~ '\k' + retu join(prt, '') + en + let [pf, rz] = [( s:byfname() ? 'f' : 'p' ), ( s:regexp ? 'r' : 'z' )] + for dict in s:abbrev['abbrevs'] + let dmd = has_key(dict, 'mode') ? dict['mode'] : '' + let pat = escape(dict['pattern'], '~') + if ( dmd == '' || ( dmd =~ pf && dmd =~ rz && !a:0 ) + \ || dmd =~ '['.spi.']' ) && str =~ pat + let [str, s:did_exp] = [join(split(str, pat, 1), dict['expanded']), 1] + en + endfo + if gmd =~ 't' && !a:0 + let prt[0] = str + el + retu str + en + en + retu spi == 'c' ? prt[0] : join(prt, '') +endf + +fu! s:migemo(str) + let [str, rtp] = [a:str, s:fnesc(&rtp, 'g')] + let dict = s:glbpath(rtp, printf("dict/%s/migemo-dict", &enc), 1) + if !len(dict) + let dict = s:glbpath(rtp, "dict/migemo-dict", 1) + en + if len(dict) + let [tokens, str, cmd] = [split(str, '\s'), '', 'cmigemo -v -w %s -d %s'] + for token in tokens + let rtn = system(printf(cmd, shellescape(token), shellescape(dict))) + let str .= !v:shell_error && strlen(rtn) > 0 ? '.*'.rtn : token + endfo + en + retu str +endf + +fu! s:strwidth(str) + retu exists('*strdisplaywidth') ? strdisplaywidth(a:str) : strlen(a:str) +endf + +fu! ctrlp#j2l(nr) + exe 'norm!' a:nr.'G' + sil! norm! zvzz +endf + +fu! s:maxf(len) + retu s:maxfiles && a:len > s:maxfiles +endf + +fu! s:regexfilter(str) + let str = a:str + for key in keys(s:fpats) | if str =~ key + let str = substitute(str, s:fpats[key], '', 'g') + en | endfo + retu str +endf + +fu! s:walker(m, p, d) + retu a:d >= 0 ? a:p < a:m ? a:p + a:d : 0 : a:p > 0 ? a:p + a:d : a:m +endf + +fu! s:delent(rfunc) + if a:rfunc == '' | retu | en + let [s:force, tbrem] = [1, []] + if exists('s:marked') + let tbrem = values(s:marked) + cal s:unmarksigns() + unl s:marked + en + if tbrem == [] && ( has('dialog_gui') || has('dialog_con') ) && + \ confirm("Wipe all entries?", "&OK\n&Cancel") != 1 + unl s:force + cal s:BuildPrompt(0) + retu + en + let g:ctrlp_lines = call(a:rfunc, [tbrem]) + cal s:BuildPrompt(1) + unl s:force +endf +" Entering & Exiting {{{2 +fu! s:getenv() + let [s:cwd, s:winres] = [getcwd(), [winrestcmd(), &lines, winnr('$')]] + let [s:crword, s:crnbword] = [expand('', 1), expand('', 1)] + let [s:crgfile, s:crline] = [expand('', 1), getline('.')] + let [s:winmaxh, s:crcursor] = [min([s:mw_max, &lines]), getpos('.')] + let [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()] + let s:crfile = bufname('%') == '' + \ ? '['.s:crbufnr.'*No Name]' : expand('%:p', 1) + let s:crfpath = expand('%:p:h', 1) + let s:mrbs = ctrlp#mrufiles#bufs() +endf + +fu! s:lastvisual() + let cview = winsaveview() + let [ovreg, ovtype] = [getreg('v'), getregtype('v')] + let [oureg, outype] = [getreg('"'), getregtype('"')] + sil! norm! gv"vy + let selected = s:regisfilter('v') + cal setreg('v', ovreg, ovtype) + cal setreg('"', oureg, outype) + cal winrestview(cview) + retu selected +endf + +fu! s:log(m) + if exists('g:ctrlp_log') && g:ctrlp_log | if a:m + let cadir = ctrlp#utils#cachedir() + let apd = g:ctrlp_log > 1 ? '>' : '' + sil! exe 'redi! >'.apd cadir.s:lash(cadir).'ctrlp.log' + el + sil! redi END + en | en +endf + +fu! s:buffunc(e) + if a:e && has_key(s:buffunc, 'enter') + cal call(s:buffunc['enter'], [], s:buffunc) + elsei !a:e && has_key(s:buffunc, 'exit') + cal call(s:buffunc['exit'], [], s:buffunc) + en +endf + +fu! s:openfile(cmd, fid, tail, chkmod, ...) + let cmd = a:cmd + if a:chkmod && cmd =~ '^[eb]$' && ctrlp#modfilecond(!( cmd == 'b' && &aw )) + let cmd = cmd == 'b' ? 'sb' : 'sp' + en + let cmd = cmd =~ '^tab' ? ctrlp#tabcount().cmd : cmd + let j2l = a:0 && a:1[0] ? a:1[1] : 0 + exe cmd.( a:0 && a:1[0] ? '' : a:tail ) s:fnesc(a:fid, 'f') + if j2l + cal ctrlp#j2l(j2l) + en + if !empty(a:tail) + sil! norm! zvzz + en + if cmd != 'bad' + cal ctrlp#setlcdir() + en +endf + +fu! ctrlp#tabcount() + if exists('s:tabct') + let tabct = s:tabct + let s:tabct += 1 + elsei !type(s:tabpage) + let tabct = s:tabpage + elsei type(s:tabpage) == 1 + let tabpos = + \ s:tabpage =~ 'c' ? tabpagenr() : + \ s:tabpage =~ 'f' ? 1 : + \ s:tabpage =~ 'l' ? tabpagenr('$') : + \ tabpagenr() + let tabct = + \ s:tabpage =~ 'a' ? tabpos : + \ s:tabpage =~ 'b' ? tabpos - 1 : + \ tabpos + en + retu tabct < 0 ? 0 : tabct +endf + +fu! s:settype(type) + retu a:type < 0 ? exists('s:itemtype') ? s:itemtype : 0 : a:type +endf +" Matching {{{2 +fu! s:matchfname(item, pat) + let parts = split(a:item, '[\/]\ze[^\/]\+$') + let mfn = match(parts[-1], a:pat[0]) + retu len(a:pat) == 1 ? mfn : len(a:pat) == 2 ? + \ ( mfn >= 0 && ( len(parts) == 2 ? match(parts[0], a:pat[1]) : -1 ) >= 0 + \ ? 0 : -1 ) : -1 + en +endf + +fu! s:matchtabs(item, pat) + retu match(split(a:item, '\t\+')[0], a:pat) +endf + +fu! s:matchtabe(item, pat) + retu match(split(a:item, '\t\+[^\t]\+$')[0], a:pat) +endf + +fu! s:buildpat(lst) + let pat = a:lst[0] + for item in range(1, len(a:lst) - 1) + let pat .= '[^'.a:lst[item - 1].']\{-}'.a:lst[item] + endfo + retu pat +endf + +fu! s:mfunc() + let mfunc = 'match' + if s:byfname() + let mfunc = 's:matchfname' + elsei s:itemtype > 2 + let matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' } + if has_key(matchtypes, s:matchtype) + let mfunc = matchtypes[s:matchtype] + en + en + retu mfunc +endf + +fu! s:mmode() + let matchmodes = { + \ 'match': 'full-line', + \ 's:matchfname': 'filename-only', + \ 's:matchtabs': 'first-non-tab', + \ 's:matchtabe': 'until-last-tab', + \ } + retu matchmodes[s:mfunc] +endf +" Cache {{{2 +fu! s:writecache(cafile) + if ( g:ctrlp_newcache || !filereadable(a:cafile) ) && !s:nocache() + cal ctrlp#utils#writecache(g:ctrlp_allfiles) + let g:ctrlp_newcache = 0 + en +endf + +fu! s:nocache(...) + if !s:caching + retu 1 + elsei s:caching > 1 + if !( exists(s:ccex) && !{s:ccex} ) || has_key(s:ficounts, s:dyncwd) + retu get(s:ficounts, s:dyncwd, [0, 0])[0] < s:caching + elsei a:0 && filereadable(a:1) + retu len(ctrlp#utils#readfile(a:1)) < s:caching + en + retu 1 + en + retu 0 +endf + +fu! s:insertcache(str) + let [data, g:ctrlp_newcache, str] = [g:ctrlp_allfiles, 1, a:str] + if data == [] || strlen(str) <= strlen(data[0]) + let pos = 0 + elsei strlen(str) >= strlen(data[-1]) + let pos = len(data) - 1 + el + let pos = 0 + for each in data + if strlen(each) > strlen(str) | brea | en + let pos += 1 + endfo + en + cal insert(data, str, pos) + cal s:writecache(ctrlp#utils#cachefile()) +endf +" Extensions {{{2 +fu! s:mtype() + retu s:itemtype > 2 ? s:getextvar('type') : 'path' +endf + +fu! s:execextvar(key) + if !empty(g:ctrlp_ext_vars) + cal map(filter(copy(g:ctrlp_ext_vars), + \ 'has_key(v:val, a:key)'), 'eval(v:val[a:key])') + en +endf + +fu! s:getextvar(key) + if s:itemtype > 2 + let vars = g:ctrlp_ext_vars[s:itemtype - 3] + retu has_key(vars, a:key) ? vars[a:key] : -1 + en + retu -1 +endf + +fu! ctrlp#getcline() + let [linenr, offset] = [line('.'), ( s:offset > 0 ? s:offset : 0 )] + retu !empty(s:lines) && !( offset && linenr <= offset ) + \ ? s:lines[linenr - 1 - offset] : '' +endf + +fu! ctrlp#getmarkedlist() + retu exists('s:marked') ? values(s:marked) : [] +endf + +fu! ctrlp#exit() + cal s:PrtExit() +endf + +fu! ctrlp#prtclear() + cal s:PrtClear() +endf + +fu! ctrlp#switchtype(id) + cal s:ToggleType(a:id - s:itemtype) +endf + +fu! ctrlp#nosy() + retu !( has('syntax') && exists('g:syntax_on') ) +endf + +fu! ctrlp#hicheck(grp, defgrp) + if !hlexists(a:grp) + exe 'hi link' a:grp a:defgrp + en +endf + +fu! ctrlp#call(func, ...) + retu call(a:func, a:000) +endf + +fu! ctrlp#getvar(var) + retu {a:var} +endf +"}}}1 +" * Initialization {{{1 +fu! ctrlp#setlines(...) + if a:0 | let s:itemtype = a:1 | en + cal s:modevar() + let types = ['ctrlp#files()', 'ctrlp#buffers()', 'ctrlp#mrufiles#list()'] + if !empty(g:ctrlp_ext_vars) + cal map(copy(g:ctrlp_ext_vars), 'add(types, v:val["init"])') + en + let g:ctrlp_lines = eval(types[s:itemtype]) +endf + +fu! ctrlp#init(type, ...) + if exists('s:init') || s:iscmdwin() | retu | en + let [s:ermsg, v:errmsg] = [v:errmsg, ''] + let [s:matches, s:init] = [1, 1] + cal s:Reset(a:0 ? a:1 : {}) + noa cal s:Open() + cal s:SetWD(a:0 ? a:1 : {}) + cal s:MapNorms() + cal s:MapSpecs() + cal ctrlp#syntax() + cal ctrlp#setlines(s:settype(a:type)) + cal s:SetDefTxt() + cal s:BuildPrompt(1) + if s:keyloop | cal s:KeyLoop() | en +endf +" - Autocmds {{{1 +if has('autocmd') + aug CtrlPAug + au! + au BufEnter ControlP cal s:checkbuf() + au BufLeave ControlP noa cal s:Close() + au VimLeavePre * cal s:leavepre() + aug END +en + +fu! s:autocmds() + if !has('autocmd') | retu | en + if exists('#CtrlPLazy') + au! CtrlPLazy + en + if s:lazy + aug CtrlPLazy + au! + au CursorHold ControlP cal s:ForceUpdate() + aug END + en +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/bookmarkdir.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/bookmarkdir.vim new file mode 100644 index 0000000..89bda89 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/bookmarkdir.vim @@ -0,0 +1,140 @@ +" ============================================================================= +" File: autoload/ctrlp/bookmarkdir.vim +" Description: Bookmarked directories extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_bookmarkdir') && g:loaded_ctrlp_bookmarkdir + fini +en +let g:loaded_ctrlp_bookmarkdir = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#bookmarkdir#init()', + \ 'accept': 'ctrlp#bookmarkdir#accept', + \ 'lname': 'bookmarked dirs', + \ 'sname': 'bkd', + \ 'type': 'tabs', + \ 'opmul': 1, + \ 'nolim': 1, + \ 'wipe': 'ctrlp#bookmarkdir#remove', + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:getinput(str, ...) + echoh Identifier + cal inputsave() + let input = call('input', a:0 ? [a:str] + a:000 : [a:str]) + cal inputrestore() + echoh None + retu input +endf + +fu! s:cachefile() + if !exists('s:cadir') || !exists('s:cafile') + let s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'bkd' + let s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt' + en + retu s:cafile +endf + +fu! s:writecache(lines) + cal ctrlp#utils#writecache(a:lines, s:cadir, s:cafile) +endf + +fu! s:getbookmarks() + retu ctrlp#utils#readfile(s:cachefile()) +endf + +fu! s:savebookmark(name, cwd) + let cwds = exists('+ssl') ? [tr(a:cwd, '\', '/'), tr(a:cwd, '/', '\')] : [a:cwd] + let entries = filter(s:getbookmarks(), 'index(cwds, s:parts(v:val)[1]) < 0') + cal s:writecache(insert(entries, a:name.' '.a:cwd)) +endf + +fu! s:setentries() + let time = getftime(s:cachefile()) + if !( exists('s:bookmarks') && time == s:bookmarks[0] ) + let s:bookmarks = [time, s:getbookmarks()] + en +endf + +fu! s:parts(str) + let mlist = matchlist(a:str, '\v([^\t]+)\t(.*)$') + retu mlist != [] ? mlist[1:2] : ['', ''] +endf + +fu! s:process(entries, type) + retu map(a:entries, 's:modify(v:val, a:type)') +endf + +fu! s:modify(entry, type) + let [name, dir] = s:parts(a:entry) + let dir = fnamemodify(dir, a:type) + retu name.' '.( dir == '' ? '.' : dir ) +endf + +fu! s:msg(name, cwd) + redr + echoh Identifier | echon 'Bookmarked ' | echoh Constant + echon a:name.' ' | echoh Directory | echon a:cwd + echoh None +endf + +fu! s:syntax() + if !ctrlp#nosy() + cal ctrlp#hicheck('CtrlPBookmark', 'Identifier') + cal ctrlp#hicheck('CtrlPTabExtra', 'Comment') + sy match CtrlPBookmark '^> [^\t]\+' contains=CtrlPLinePre + sy match CtrlPTabExtra '\zs\t.*\ze$' + en +endf +" Public {{{1 +fu! ctrlp#bookmarkdir#init() + cal s:setentries() + cal s:syntax() + retu s:process(copy(s:bookmarks[1]), ':.') +endf + +fu! ctrlp#bookmarkdir#accept(mode, str) + let parts = s:parts(s:modify(a:str, ':p')) + cal call('s:savebookmark', parts) + if a:mode =~ 't\|v\|h' + cal ctrlp#exit() + en + cal ctrlp#setdir(parts[1], a:mode =~ 't\|h' ? 'chd!' : 'lc!') + if a:mode == 'e' + cal ctrlp#switchtype(0) + cal ctrlp#recordhist() + cal ctrlp#prtclear() + en +endf + +fu! ctrlp#bookmarkdir#add(dir, ...) + let str = 'Directory to bookmark: ' + let cwd = a:dir != '' ? a:dir : s:getinput(str, getcwd(), 'dir') + if cwd == '' | retu | en + let cwd = fnamemodify(cwd, ':p') + let name = a:0 && a:1 != '' ? a:1 : s:getinput('Bookmark as: ', cwd) + if name == '' | retu | en + let name = tr(name, ' ', ' ') + cal s:savebookmark(name, cwd) + cal s:msg(name, cwd) +endf + +fu! ctrlp#bookmarkdir#remove(entries) + cal s:process(a:entries, ':p') + cal s:writecache(a:entries == [] ? [] : + \ filter(s:getbookmarks(), 'index(a:entries, v:val) < 0')) + cal s:setentries() + retu s:process(copy(s:bookmarks[1]), ':.') +endf + +fu! ctrlp#bookmarkdir#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/buffertag.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/buffertag.vim new file mode 100644 index 0000000..a38cad5 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/buffertag.vim @@ -0,0 +1,264 @@ +" ============================================================================= +" File: autoload/ctrlp/buffertag.vim +" Description: Buffer Tag extension +" Maintainer: Kien Nguyen +" Credits: Much of the code was taken from tagbar.vim by Jan Larres, plus +" a few lines from taglist.vim by Yegappan Lakshmanan and from +" buffertag.vim by Takeshi Nishida. +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_buftag') && g:loaded_ctrlp_buftag + fini +en +let g:loaded_ctrlp_buftag = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#buffertag#init(s:crfile)', + \ 'accept': 'ctrlp#buffertag#accept', + \ 'lname': 'buffer tags', + \ 'sname': 'bft', + \ 'exit': 'ctrlp#buffertag#exit()', + \ 'type': 'tabs', + \ 'opts': 'ctrlp#buffertag#opts()', + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) + +let [s:pref, s:opts] = ['g:ctrlp_buftag_', { + \ 'systemenc': ['s:enc', &enc], + \ 'ctags_bin': ['s:bin', ''], + \ 'types': ['s:usr_types', {}], + \ }] + +let s:bins = [ + \ 'ctags-exuberant', + \ 'exuberant-ctags', + \ 'exctags', + \ '/usr/local/bin/ctags', + \ '/opt/local/bin/ctags', + \ 'ctags', + \ 'ctags.exe', + \ 'tags', + \ ] + +let s:types = { + \ 'asm' : '%sasm%sasm%sdlmt', + \ 'aspperl': '%sasp%sasp%sfsv', + \ 'aspvbs' : '%sasp%sasp%sfsv', + \ 'awk' : '%sawk%sawk%sf', + \ 'beta' : '%sbeta%sbeta%sfsv', + \ 'c' : '%sc%sc%sdgsutvf', + \ 'cpp' : '%sc++%sc++%snvdtcgsuf', + \ 'cs' : '%sc#%sc#%sdtncEgsipm', + \ 'cobol' : '%scobol%scobol%sdfgpPs', + \ 'eiffel' : '%seiffel%seiffel%scf', + \ 'erlang' : '%serlang%serlang%sdrmf', + \ 'expect' : '%stcl%stcl%scfp', + \ 'fortran': '%sfortran%sfortran%spbceiklmntvfs', + \ 'html' : '%shtml%shtml%saf', + \ 'java' : '%sjava%sjava%spcifm', + \ 'javascript': '%sjavascript%sjavascript%sf', + \ 'lisp' : '%slisp%slisp%sf', + \ 'lua' : '%slua%slua%sf', + \ 'make' : '%smake%smake%sm', + \ 'ocaml' : '%socaml%socaml%scmMvtfCre', + \ 'pascal' : '%spascal%spascal%sfp', + \ 'perl' : '%sperl%sperl%sclps', + \ 'php' : '%sphp%sphp%scdvf', + \ 'python' : '%spython%spython%scmf', + \ 'rexx' : '%srexx%srexx%ss', + \ 'ruby' : '%sruby%sruby%scfFm', + \ 'scheme' : '%sscheme%sscheme%ssf', + \ 'sh' : '%ssh%ssh%sf', + \ 'csh' : '%ssh%ssh%sf', + \ 'zsh' : '%ssh%ssh%sf', + \ 'slang' : '%sslang%sslang%snf', + \ 'sml' : '%ssml%ssml%secsrtvf', + \ 'sql' : '%ssql%ssql%scFPrstTvfp', + \ 'tcl' : '%stcl%stcl%scfmp', + \ 'vera' : '%svera%svera%scdefgmpPtTvx', + \ 'verilog': '%sverilog%sverilog%smcPertwpvf', + \ 'vim' : '%svim%svim%savf', + \ 'yacc' : '%syacc%syacc%sl', + \ } + +cal map(s:types, 'printf(v:val, "--language-force=", " --", "-types=")') + +if executable('jsctags') + cal extend(s:types, { 'javascript': { 'args': '-f -', 'bin': 'jsctags' } }) +en + +fu! ctrlp#buffertag#opts() + for [ke, va] in items(s:opts) + let {va[0]} = exists(s:pref.ke) ? {s:pref.ke} : va[1] + endfo + " Ctags bin + if empty(s:bin) + for bin in s:bins | if executable(bin) + let s:bin = bin + brea + en | endfo + el + let s:bin = expand(s:bin, 1) + en + " Types + cal extend(s:types, s:usr_types) +endf +" Utilities {{{1 +fu! s:validfile(fname, ftype) + if ( !empty(a:fname) || !empty(a:ftype) ) && filereadable(a:fname) + \ && index(keys(s:types), a:ftype) >= 0 | retu 1 | en + retu 0 +endf + +fu! s:exectags(cmd) + if exists('+ssl') + let [ssl, &ssl] = [&ssl, 0] + en + if &sh =~ 'cmd\.exe' + let [sxq, &sxq, shcf, &shcf] = [&sxq, '"', &shcf, '/s /c'] + en + let output = system(a:cmd) + if &sh =~ 'cmd\.exe' + let [&sxq, &shcf] = [sxq, shcf] + en + if exists('+ssl') + let &ssl = ssl + en + retu output +endf + +fu! s:exectagsonfile(fname, ftype) + let [ags, ft] = ['-f - --sort=no --excmd=pattern --fields=nKs ', a:ftype] + if type(s:types[ft]) == 1 + let ags .= s:types[ft] + let bin = s:bin + elsei type(s:types[ft]) == 4 + let ags = s:types[ft]['args'] + let bin = expand(s:types[ft]['bin'], 1) + en + if empty(bin) | retu '' | en + let cmd = s:esctagscmd(bin, ags, a:fname) + if empty(cmd) | retu '' | en + let output = s:exectags(cmd) + if v:shell_error || output =~ 'Warning: cannot open' | retu '' | en + retu output +endf + +fu! s:esctagscmd(bin, args, ...) + if exists('+ssl') + let [ssl, &ssl] = [&ssl, 0] + en + let fname = a:0 ? shellescape(a:1) : '' + let cmd = shellescape(a:bin).' '.a:args.' '.fname + if &sh =~ 'cmd\.exe' + let cmd = substitute(cmd, '[&()@^<>|]', '^\0', 'g') + en + if exists('+ssl') + let &ssl = ssl + en + if has('iconv') + let last = s:enc != &enc ? s:enc : !empty( $LANG ) ? $LANG : &enc + let cmd = iconv(cmd, &enc, last) + en + retu cmd +endf + +fu! s:process(fname, ftype) + if !s:validfile(a:fname, a:ftype) | retu [] | endif + let ftime = getftime(a:fname) + if has_key(g:ctrlp_buftags, a:fname) + \ && g:ctrlp_buftags[a:fname]['time'] >= ftime + let lines = g:ctrlp_buftags[a:fname]['lines'] + el + let data = s:exectagsonfile(a:fname, a:ftype) + let [raw, lines] = [split(data, '\n\+'), []] + for line in raw + if line !~# '^!_TAG_' && len(split(line, ';"')) == 2 + let parsed_line = s:parseline(line) + if parsed_line != '' + cal add(lines, parsed_line) + en + en + endfo + let cache = { a:fname : { 'time': ftime, 'lines': lines } } + cal extend(g:ctrlp_buftags, cache) + en + retu lines +endf + +fu! s:parseline(line) + let vals = matchlist(a:line, + \ '\v^([^\t]+)\t(.+)\t[?/]\^?(.{-1,})\$?[?/]\;\"\t(.+)\tline(no)?\:(\d+)') + if vals == [] | retu '' | en + let [bufnr, bufname] = [bufnr('^'.vals[2].'$'), fnamemodify(vals[2], ':p:t')] + retu vals[1].' '.vals[4].'|'.bufnr.':'.bufname.'|'.vals[6].'| '.vals[3] +endf + +fu! s:syntax() + if !ctrlp#nosy() + cal ctrlp#hicheck('CtrlPTagKind', 'Title') + cal ctrlp#hicheck('CtrlPBufName', 'Directory') + cal ctrlp#hicheck('CtrlPTabExtra', 'Comment') + sy match CtrlPTagKind '\zs[^\t|]\+\ze|\d\+:[^|]\+|\d\+|' + sy match CtrlPBufName '|\d\+:\zs[^|]\+\ze|\d\+|' + sy match CtrlPTabExtra '\zs\t.*\ze$' contains=CtrlPBufName,CtrlPTagKind + en +endf + +fu! s:chknearby(pat) + if match(getline('.'), a:pat) < 0 + let [int, forw, maxl] = [1, 1, line('$')] + wh !search(a:pat, 'W'.( forw ? '' : 'b' )) + if !forw + if int > maxl | brea | en + let int += int + en + let forw = !forw + endw + en +endf +" Public {{{1 +fu! ctrlp#buffertag#init(fname) + let bufs = exists('s:btmode') && s:btmode + \ ? filter(ctrlp#buffers(), 'filereadable(v:val)') + \ : [exists('s:bufname') ? s:bufname : a:fname] + let lines = [] + for each in bufs + let bname = fnamemodify(each, ':p') + let tftype = get(split(getbufvar('^'.bname.'$', '&ft'), '\.'), 0, '') + cal extend(lines, s:process(bname, tftype)) + endfo + cal s:syntax() + retu lines +endf + +fu! ctrlp#buffertag#accept(mode, str) + let vals = matchlist(a:str, + \ '\v^[^\t]+\t+[^\t|]+\|(\d+)\:[^\t|]+\|(\d+)\|\s(.+)$') + let bufnr = str2nr(get(vals, 1)) + if bufnr + cal ctrlp#acceptfile(a:mode, bufnr) + exe 'norm!' str2nr(get(vals, 2, line('.'))).'G' + cal s:chknearby('\V\C'.get(vals, 3, '')) + sil! norm! zvzz + en +endf + +fu! ctrlp#buffertag#cmd(mode, ...) + let s:btmode = a:mode + if a:0 && !empty(a:1) + let s:btmode = 0 + let bname = a:1 =~# '^%$\|^#\d*$' ? expand(a:1) : a:1 + let s:bufname = fnamemodify(bname, ':p') + en + retu s:id +endf + +fu! ctrlp#buffertag#exit() + unl! s:btmode s:bufname +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/changes.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/changes.vim new file mode 100644 index 0000000..313d8c2 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/changes.vim @@ -0,0 +1,98 @@ +" ============================================================================= +" File: autoload/ctrlp/changes.vim +" Description: Change list extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_changes') && g:loaded_ctrlp_changes + fini +en +let g:loaded_ctrlp_changes = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#changes#init(s:bufnr, s:crbufnr)', + \ 'accept': 'ctrlp#changes#accept', + \ 'lname': 'changes', + \ 'sname': 'chs', + \ 'exit': 'ctrlp#changes#exit()', + \ 'type': 'tabe', + \ 'sort': 0, + \ 'nolim': 1, + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:changelist(bufnr) + sil! exe 'noa hid b' a:bufnr + redi => result + sil! changes + redi END + retu map(split(result, "\n")[1:], 'tr(v:val, " ", " ")') +endf + +fu! s:process(clines, ...) + let [clines, evas] = [[], []] + for each in a:clines + let parts = matchlist(each, '\v^.\s*\d+\s+(\d+)\s+(\d+)\s(.*)$') + if !empty(parts) + if parts[3] == '' | let parts[3] = ' ' | en + cal add(clines, parts[3].' |'.a:1.':'.a:2.'|'.parts[1].':'.parts[2].'|') + en + endfo + retu reverse(filter(clines, 'count(clines, v:val) == 1')) +endf + +fu! s:syntax() + if !ctrlp#nosy() + cal ctrlp#hicheck('CtrlPBufName', 'Directory') + cal ctrlp#hicheck('CtrlPTabExtra', 'Comment') + sy match CtrlPBufName '\t|\d\+:\zs[^|]\+\ze|\d\+:\d\+|$' + sy match CtrlPTabExtra '\zs\t.*\ze$' contains=CtrlPBufName + en +endf +" Public {{{1 +fu! ctrlp#changes#init(original_bufnr, bufnr) + let bufnr = exists('s:bufnr') ? s:bufnr : a:bufnr + let bufs = exists('s:clmode') && s:clmode ? ctrlp#buffers('id') : [bufnr] + cal filter(bufs, 'v:val > 0') + let [swb, &swb] = [&swb, ''] + let lines = [] + for each in bufs + let bname = bufname(each) + let fnamet = fnamemodify(bname == '' ? '[No Name]' : bname, ':t') + cal extend(lines, s:process(s:changelist(each), each, fnamet)) + endfo + sil! exe 'noa hid b' a:original_bufnr + let &swb = swb + cal ctrlp#syntax() + cal s:syntax() + retu lines +endf + +fu! ctrlp#changes#accept(mode, str) + let info = matchlist(a:str, '\t|\(\d\+\):[^|]\+|\(\d\+\):\(\d\+\)|$') + let bufnr = str2nr(get(info, 1)) + if bufnr + cal ctrlp#acceptfile(a:mode, bufnr) + cal cursor(get(info, 2), get(info, 3)) + sil! norm! zvzz + en +endf + +fu! ctrlp#changes#cmd(mode, ...) + let s:clmode = a:mode + if a:0 && !empty(a:1) + let s:clmode = 0 + let bname = a:1 =~# '^%$\|^#\d*$' ? expand(a:1) : a:1 + let s:bufnr = bufnr('^'.fnamemodify(bname, ':p').'$') + en + retu s:id +endf + +fu! ctrlp#changes#exit() + unl! s:clmode s:bufnr +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/dir.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/dir.vim new file mode 100644 index 0000000..4e6d4ad --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/dir.vim @@ -0,0 +1,95 @@ +" ============================================================================= +" File: autoload/ctrlp/dir.vim +" Description: Directory extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_dir') && g:loaded_ctrlp_dir + fini +en +let [g:loaded_ctrlp_dir, g:ctrlp_newdir] = [1, 0] + +let s:ars = ['s:maxdepth', 's:maxfiles', 's:compare_lim', 's:glob', 's:caching'] + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#dir#init('.join(s:ars, ', ').')', + \ 'accept': 'ctrlp#dir#accept', + \ 'lname': 'dirs', + \ 'sname': 'dir', + \ 'type': 'path', + \ 'specinput': 1, + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) + +let s:dircounts = {} +" Utilities {{{1 +fu! s:globdirs(dirs, depth) + let entries = split(globpath(a:dirs, s:glob), "\n") + let [dirs, depth] = [ctrlp#dirnfile(entries)[0], a:depth + 1] + cal extend(g:ctrlp_alldirs, dirs) + let nr = len(g:ctrlp_alldirs) + if !empty(dirs) && !s:max(nr, s:maxfiles) && depth <= s:maxdepth + sil! cal ctrlp#progress(nr) + cal map(dirs, 'ctrlp#utils#fnesc(v:val, "g", ",")') + cal s:globdirs(join(dirs, ','), depth) + en +endf + +fu! s:max(len, max) + retu a:max && a:len > a:max +endf + +fu! s:nocache() + retu !s:caching || ( s:caching > 1 && get(s:dircounts, s:cwd) < s:caching ) +endf +" Public {{{1 +fu! ctrlp#dir#init(...) + let s:cwd = getcwd() + for each in range(len(s:ars)) + let {s:ars[each]} = a:{each + 1} + endfo + let cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'dir' + let cafile = cadir.ctrlp#utils#lash().ctrlp#utils#cachefile('dir') + if g:ctrlp_newdir || s:nocache() || !filereadable(cafile) + let [s:initcwd, g:ctrlp_alldirs] = [s:cwd, []] + if !ctrlp#igncwd(s:cwd) + cal s:globdirs(ctrlp#utils#fnesc(s:cwd, 'g', ','), 0) + en + cal ctrlp#rmbasedir(g:ctrlp_alldirs) + if len(g:ctrlp_alldirs) <= s:compare_lim + cal sort(g:ctrlp_alldirs, 'ctrlp#complen') + en + cal ctrlp#utils#writecache(g:ctrlp_alldirs, cadir, cafile) + let g:ctrlp_newdir = 0 + el + if !( exists('s:initcwd') && s:initcwd == s:cwd ) + let s:initcwd = s:cwd + let g:ctrlp_alldirs = ctrlp#utils#readfile(cafile) + en + en + cal extend(s:dircounts, { s:cwd : len(g:ctrlp_alldirs) }) + retu g:ctrlp_alldirs +endf + +fu! ctrlp#dir#accept(mode, str) + let path = a:mode == 'h' ? getcwd() : s:cwd.ctrlp#call('s:lash', s:cwd).a:str + if a:mode =~ 't\|v\|h' + cal ctrlp#exit() + en + cal ctrlp#setdir(path, a:mode =~ 't\|h' ? 'chd!' : 'lc!') + if a:mode == 'e' + sil! cal ctrlp#statusline() + cal ctrlp#setlines(s:id) + cal ctrlp#recordhist() + cal ctrlp#prtclear() + en +endf + +fu! ctrlp#dir#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/line.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/line.vim new file mode 100644 index 0000000..5bec47e --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/line.vim @@ -0,0 +1,72 @@ +" ============================================================================= +" File: autoload/ctrlp/line.vim +" Description: Line extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_line') && g:loaded_ctrlp_line + fini +en +let g:loaded_ctrlp_line = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#line#init(s:crbufnr)', + \ 'accept': 'ctrlp#line#accept', + \ 'lname': 'lines', + \ 'sname': 'lns', + \ 'type': 'tabe', + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:syntax() + if !ctrlp#nosy() + cal ctrlp#hicheck('CtrlPBufName', 'Directory') + cal ctrlp#hicheck('CtrlPTabExtra', 'Comment') + sy match CtrlPBufName '\t|\zs[^|]\+\ze|\d\+:\d\+|$' + sy match CtrlPTabExtra '\zs\t.*\ze$' contains=CtrlPBufName + en +endf +" Public {{{1 +fu! ctrlp#line#init(bufnr) + let [lines, bufnr] = [[], exists('s:bufnr') ? s:bufnr : a:bufnr] + let bufs = exists('s:lnmode') && s:lnmode ? ctrlp#buffers('id') : [bufnr] + for bufnr in bufs + let [lfb, bufn] = [getbufline(bufnr, 1, '$'), bufname(bufnr)] + if lfb == [] && bufn != '' + let lfb = ctrlp#utils#readfile(fnamemodify(bufn, ':p')) + en + cal map(lfb, 'tr(v:val, '' '', '' '')') + let [linenr, len_lfb] = [1, len(lfb)] + let buft = bufn == '' ? '[No Name]' : fnamemodify(bufn, ':t') + wh linenr <= len_lfb + let lfb[linenr - 1] .= ' |'.buft.'|'.bufnr.':'.linenr.'|' + let linenr += 1 + endw + cal extend(lines, filter(lfb, 'v:val !~ ''^\s*\t|[^|]\+|\d\+:\d\+|$''')) + endfo + cal s:syntax() + retu lines +endf + +fu! ctrlp#line#accept(mode, str) + let info = matchlist(a:str, '\t|[^|]\+|\(\d\+\):\(\d\+\)|$') + let bufnr = str2nr(get(info, 1)) + if bufnr + cal ctrlp#acceptfile(a:mode, bufnr, get(info, 2)) + en +endf + +fu! ctrlp#line#cmd(mode, ...) + let s:lnmode = a:mode + if a:0 && !empty(a:1) + let s:lnmode = 0 + let bname = a:1 =~# '^%$\|^#\d*$' ? expand(a:1) : a:1 + let s:bufnr = bufnr('^'.fnamemodify(bname, ':p').'$') + en + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mixed.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mixed.vim new file mode 100644 index 0000000..74d904d --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mixed.vim @@ -0,0 +1,88 @@ +" ============================================================================= +" File: autoload/ctrlp/mixed.vim +" Description: Mixing Files + MRU + Buffers +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_mixed') && g:loaded_ctrlp_mixed + fini +en +let [g:loaded_ctrlp_mixed, g:ctrlp_newmix] = [1, 0] + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#mixed#init(s:compare_lim)', + \ 'accept': 'ctrlp#acceptfile', + \ 'lname': 'fil + mru + buf', + \ 'sname': 'mix', + \ 'type': 'path', + \ 'opmul': 1, + \ 'specinput': 1, + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:newcache(cwd) + if g:ctrlp_newmix || !has_key(g:ctrlp_allmixes, 'data') | retu 1 | en + retu g:ctrlp_allmixes['cwd'] != a:cwd + \ || g:ctrlp_allmixes['filtime'] < getftime(ctrlp#utils#cachefile()) + \ || g:ctrlp_allmixes['mrutime'] < getftime(ctrlp#mrufiles#cachefile()) + \ || g:ctrlp_allmixes['bufs'] < len(ctrlp#mrufiles#bufs()) +endf + +fu! s:getnewmix(cwd, clim) + if g:ctrlp_newmix + cal ctrlp#mrufiles#refresh('raw') + let g:ctrlp_newcache = 1 + en + let g:ctrlp_lines = copy(ctrlp#files()) + cal ctrlp#progress('Mixing...') + let mrufs = copy(ctrlp#mrufiles#list('raw')) + if exists('+ssl') && &ssl + cal map(mrufs, 'tr(v:val, "\\", "/")') + en + let allbufs = map(ctrlp#buffers(), 'fnamemodify(v:val, ":p")') + let [bufs, ubufs] = [[], []] + for each in allbufs + cal add(filereadable(each) ? bufs : ubufs, each) + endfo + let mrufs = bufs + filter(mrufs, 'index(bufs, v:val) < 0') + if len(mrufs) > len(g:ctrlp_lines) + cal filter(mrufs, 'stridx(v:val, a:cwd)') + el + let cwd_mrufs = filter(copy(mrufs), '!stridx(v:val, a:cwd)') + let cwd_mrufs = ctrlp#rmbasedir(cwd_mrufs) + for each in cwd_mrufs + let id = index(g:ctrlp_lines, each) + if id >= 0 | cal remove(g:ctrlp_lines, id) | en + endfo + en + let mrufs += ubufs + cal map(mrufs, 'fnamemodify(v:val, ":.")') + let g:ctrlp_lines = len(mrufs) > len(g:ctrlp_lines) + \ ? g:ctrlp_lines + mrufs : mrufs + g:ctrlp_lines + if len(g:ctrlp_lines) <= a:clim + cal sort(g:ctrlp_lines, 'ctrlp#complen') + en + let g:ctrlp_allmixes = { 'filtime': getftime(ctrlp#utils#cachefile()), + \ 'mrutime': getftime(ctrlp#mrufiles#cachefile()), 'cwd': a:cwd, + \ 'bufs': len(ctrlp#mrufiles#bufs()), 'data': g:ctrlp_lines } +endf +" Public {{{1 +fu! ctrlp#mixed#init(clim) + let cwd = getcwd() + if s:newcache(cwd) + cal s:getnewmix(cwd, a:clim) + el + let g:ctrlp_lines = g:ctrlp_allmixes['data'] + en + let g:ctrlp_newmix = 0 + retu g:ctrlp_lines +endf + +fu! ctrlp#mixed#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mrufiles.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mrufiles.vim new file mode 100644 index 0000000..a182111 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/mrufiles.vim @@ -0,0 +1,154 @@ +" ============================================================================= +" File: autoload/ctrlp/mrufiles.vim +" Description: Most Recently Used Files extension +" Author: Kien Nguyen +" ============================================================================= + +" Static variables {{{1 +let [s:mrbs, s:mrufs] = [[], []] + +fu! ctrlp#mrufiles#opts() + let [pref, opts] = ['g:ctrlp_mruf_', { + \ 'max': ['s:max', 250], + \ 'include': ['s:in', ''], + \ 'exclude': ['s:ex', ''], + \ 'case_sensitive': ['s:cseno', 1], + \ 'relative': ['s:re', 0], + \ 'save_on_update': ['s:soup', 1], + \ }] + for [ke, va] in items(opts) + let [{va[0]}, {pref.ke}] = [pref.ke, exists(pref.ke) ? {pref.ke} : va[1]] + endfo +endf +cal ctrlp#mrufiles#opts() +" Utilities {{{1 +fu! s:excl(fn) + retu !empty({s:ex}) && a:fn =~# {s:ex} +endf + +fu! s:mergelists() + let diskmrufs = ctrlp#utils#readfile(ctrlp#mrufiles#cachefile()) + cal filter(diskmrufs, 'index(s:mrufs, v:val) < 0') + let mrufs = s:mrufs + diskmrufs + retu s:chop(mrufs) +endf + +fu! s:chop(mrufs) + if len(a:mrufs) > {s:max} | cal remove(a:mrufs, {s:max}, -1) | en + retu a:mrufs +endf + +fu! s:reformat(mrufs, ...) + let cwd = getcwd() + let cwd .= cwd !~ '[\/]$' ? ctrlp#utils#lash() : '' + if {s:re} + let cwd = exists('+ssl') ? tr(cwd, '/', '\') : cwd + cal filter(a:mrufs, '!stridx(v:val, cwd)') + en + if a:0 && a:1 == 'raw' | retu a:mrufs | en + let idx = strlen(cwd) + if exists('+ssl') && &ssl + let cwd = tr(cwd, '\', '/') + cal map(a:mrufs, 'tr(v:val, "\\", "/")') + en + retu map(a:mrufs, '!stridx(v:val, cwd) ? strpart(v:val, idx) : v:val') +endf + +fu! s:record(bufnr) + if s:locked | retu | en + let bufnr = a:bufnr + 0 + let bufname = bufname(bufnr) + if bufnr > 0 && !empty(bufname) + cal filter(s:mrbs, 'v:val != bufnr') + cal insert(s:mrbs, bufnr) + cal s:addtomrufs(bufname) + en +endf + +fu! s:addtomrufs(fname) + let fn = fnamemodify(a:fname, ':p') + let fn = exists('+ssl') ? tr(fn, '/', '\') : fn + if ( !empty({s:in}) && fn !~# {s:in} ) || ( !empty({s:ex}) && fn =~# {s:ex} ) + \ || !empty(getbufvar('^'.fn.'$', '&bt')) || !filereadable(fn) | retu + en + let idx = index(s:mrufs, fn, 0, !{s:cseno}) + if idx + cal filter(s:mrufs, 'v:val !='.( {s:cseno} ? '#' : '?' ).' fn') + cal insert(s:mrufs, fn) + if {s:soup} && idx < 0 + cal s:savetofile(s:mergelists()) + en + en +endf + +fu! s:savetofile(mrufs) + cal ctrlp#utils#writecache(a:mrufs, s:cadir, s:cafile) +endf +" Public {{{1 +fu! ctrlp#mrufiles#refresh(...) + let mrufs = s:mergelists() + cal filter(mrufs, '!empty(ctrlp#utils#glob(v:val, 1)) && !s:excl(v:val)') + if exists('+ssl') + cal map(mrufs, 'tr(v:val, "/", "\\")') + cal map(s:mrufs, 'tr(v:val, "/", "\\")') + let cond = 'count(mrufs, v:val, !{s:cseno}) == 1' + cal filter(mrufs, cond) + cal filter(s:mrufs, cond) + en + cal s:savetofile(mrufs) + retu a:0 && a:1 == 'raw' ? [] : s:reformat(mrufs) +endf + +fu! ctrlp#mrufiles#remove(files) + let mrufs = [] + if a:files != [] + let mrufs = s:mergelists() + let cond = 'index(a:files, v:val, 0, !{s:cseno}) < 0' + cal filter(mrufs, cond) + cal filter(s:mrufs, cond) + en + cal s:savetofile(mrufs) + retu s:reformat(mrufs) +endf + +fu! ctrlp#mrufiles#add(fn) + if !empty(a:fn) + cal s:addtomrufs(a:fn) + en +endf + +fu! ctrlp#mrufiles#list(...) + retu a:0 ? a:1 == 'raw' ? s:reformat(s:mergelists(), a:1) : 0 + \ : s:reformat(s:mergelists()) +endf + +fu! ctrlp#mrufiles#bufs() + retu s:mrbs +endf + +fu! ctrlp#mrufiles#tgrel() + let {s:re} = !{s:re} +endf + +fu! ctrlp#mrufiles#cachefile() + if !exists('s:cadir') || !exists('s:cafile') + let s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'mru' + let s:cafile = s:cadir.ctrlp#utils#lash().'cache.txt' + en + retu s:cafile +endf + +fu! ctrlp#mrufiles#init() + if !has('autocmd') | retu | en + let s:locked = 0 + aug CtrlPMRUF + au! + au BufAdd,BufEnter,BufLeave,BufWritePost * cal s:record(expand('', 1)) + au QuickFixCmdPre *vimgrep* let s:locked = 1 + au QuickFixCmdPost *vimgrep* let s:locked = 0 + au VimLeavePre * cal s:savetofile(s:mergelists()) + aug END +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/quickfix.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/quickfix.vim new file mode 100644 index 0000000..03ab921 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/quickfix.vim @@ -0,0 +1,59 @@ +" ============================================================================= +" File: autoload/ctrlp/quickfix.vim +" Description: Quickfix extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_quickfix') && g:loaded_ctrlp_quickfix + fini +en +let g:loaded_ctrlp_quickfix = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#quickfix#init()', + \ 'accept': 'ctrlp#quickfix#accept', + \ 'lname': 'quickfix', + \ 'sname': 'qfx', + \ 'type': 'line', + \ 'sort': 0, + \ 'nolim': 1, + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) + +fu! s:lineout(dict) + retu printf('%s|%d:%d| %s', bufname(a:dict['bufnr']), a:dict['lnum'], + \ a:dict['col'], matchstr(a:dict['text'], '\s*\zs.*\S')) +endf +" Utilities {{{1 +fu! s:syntax() + if !ctrlp#nosy() + cal ctrlp#hicheck('CtrlPqfLineCol', 'Search') + sy match CtrlPqfLineCol '|\zs\d\+:\d\+\ze|' + en +endf +" Public {{{1 +fu! ctrlp#quickfix#init() + cal s:syntax() + retu map(getqflist(), 's:lineout(v:val)') +endf + +fu! ctrlp#quickfix#accept(mode, str) + let vals = matchlist(a:str, '^\([^|]\+\ze\)|\(\d\+\):\(\d\+\)|') + if vals == [] || vals[1] == '' | retu | en + cal ctrlp#acceptfile(a:mode, vals[1]) + let cur_pos = getpos('.')[1:2] + if cur_pos != [1, 1] && cur_pos != map(vals[2:3], 'str2nr(v:val)') + mark ' + en + cal cursor(vals[2], vals[3]) + sil! norm! zvzz +endf + +fu! ctrlp#quickfix#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/rtscript.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/rtscript.vim new file mode 100644 index 0000000..eed21c6 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/rtscript.vim @@ -0,0 +1,59 @@ +" ============================================================================= +" File: autoload/ctrlp/rtscript.vim +" Description: Runtime scripts extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_rtscript') && g:loaded_ctrlp_rtscript + fini +en +let [g:loaded_ctrlp_rtscript, g:ctrlp_newrts] = [1, 0] + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#rtscript#init(s:caching)', + \ 'accept': 'ctrlp#acceptfile', + \ 'lname': 'runtime scripts', + \ 'sname': 'rts', + \ 'type': 'path', + \ 'opmul': 1, + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) + +let s:filecounts = {} +" Utilities {{{1 +fu! s:nocache() + retu g:ctrlp_newrts || + \ !s:caching || ( s:caching > 1 && get(s:filecounts, s:cwd) < s:caching ) +endf +" Public {{{1 +fu! ctrlp#rtscript#init(caching) + let [s:caching, s:cwd] = [a:caching, getcwd()] + if s:nocache() || + \ !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[0] == &rtp ) + sil! cal ctrlp#progress('Indexing...') + let entries = split(globpath(ctrlp#utils#fnesc(&rtp, 'g'), '**/*.*'), "\n") + cal filter(entries, 'count(entries, v:val) == 1') + let [entries, echoed] = [ctrlp#dirnfile(entries)[1], 1] + el + let [entries, results] = g:ctrlp_rtscache[2:3] + en + if s:nocache() || + \ !( exists('g:ctrlp_rtscache') && g:ctrlp_rtscache[:1] == [&rtp, s:cwd] ) + if !exists('echoed') + sil! cal ctrlp#progress('Processing...') + en + let results = map(copy(entries), 'fnamemodify(v:val, '':.'')') + en + let [g:ctrlp_rtscache, g:ctrlp_newrts] = [[&rtp, s:cwd, entries, results], 0] + cal extend(s:filecounts, { s:cwd : len(results) }) + retu results +endf + +fu! ctrlp#rtscript#id() + retu s:id +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/tag.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/tag.vim new file mode 100644 index 0000000..626363a --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/tag.vim @@ -0,0 +1,138 @@ +" ============================================================================= +" File: autoload/ctrlp/tag.vim +" Description: Tag file extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if exists('g:loaded_ctrlp_tag') && g:loaded_ctrlp_tag + fini +en +let g:loaded_ctrlp_tag = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#tag#init()', + \ 'accept': 'ctrlp#tag#accept', + \ 'lname': 'tags', + \ 'sname': 'tag', + \ 'enter': 'ctrlp#tag#enter()', + \ 'type': 'tabs', + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) +" Utilities {{{1 +fu! s:findcount(str) + let [tg, ofname] = split(a:str, '\t\+\ze[^\t]\+$') + let tgs = taglist('^'.tg.'$') + if len(tgs) < 2 + retu [0, 0, 0, 0] + en + let bname = fnamemodify(bufname('%'), ':p') + let fname = expand(fnamemodify(simplify(ofname), ':s?^[.\/]\+??:p:.'), 1) + let [fnd, cnt, pos, ctgs, otgs] = [0, 0, 0, [], []] + for tgi in tgs + let lst = bname == fnamemodify(tgi["filename"], ':p') ? 'ctgs' : 'otgs' + cal call('add', [{lst}, tgi]) + endfo + let ntgs = ctgs + otgs + for tgi in ntgs + let cnt += 1 + let fulname = fnamemodify(tgi["filename"], ':p') + if stridx(fulname, fname) >= 0 + \ && strlen(fname) + stridx(fulname, fname) == strlen(fulname) + let fnd += 1 + let pos = cnt + en + endfo + let cnt = 0 + for tgi in ntgs + let cnt += 1 + if tgi["filename"] == ofname + let [fnd, pos] = [0, cnt] + en + endfo + retu [1, fnd, pos, len(ctgs)] +endf + +fu! s:filter(tags) + let nr = 0 + wh 0 < 1 + if a:tags == [] | brea | en + if a:tags[nr] =~ '^!' && a:tags[nr] !~# '^!_TAG_' + let nr += 1 + con + en + if a:tags[nr] =~# '^!_TAG_' && len(a:tags) > nr + cal remove(a:tags, nr) + el + brea + en + endw + retu a:tags +endf + +fu! s:syntax() + if !ctrlp#nosy() + cal ctrlp#hicheck('CtrlPTabExtra', 'Comment') + sy match CtrlPTabExtra '\zs\t.*\ze$' + en +endf +" Public {{{1 +fu! ctrlp#tag#init() + if empty(s:tagfiles) | retu [] | en + let g:ctrlp_alltags = [] + let tagfiles = sort(filter(s:tagfiles, 'count(s:tagfiles, v:val) == 1')) + for each in tagfiles + let alltags = s:filter(ctrlp#utils#readfile(each)) + cal extend(g:ctrlp_alltags, alltags) + endfo + cal s:syntax() + retu g:ctrlp_alltags +endf + +fu! ctrlp#tag#accept(mode, str) + cal ctrlp#exit() + let str = matchstr(a:str, '^[^\t]\+\t\+[^\t]\+\ze\t') + let [tg, fdcnt] = [split(str, '^[^\t]\+\zs\t')[0], s:findcount(str)] + let cmds = { + \ 't': ['tab sp', 'tab stj'], + \ 'h': ['sp', 'stj'], + \ 'v': ['vs', 'vert stj'], + \ 'e': ['', 'tj'], + \ } + let utg = fdcnt[3] < 2 && fdcnt[0] == 1 && fdcnt[1] == 1 + let cmd = !fdcnt[0] || utg ? cmds[a:mode][0] : cmds[a:mode][1] + let cmd = a:mode == 'e' && ctrlp#modfilecond(!&aw) + \ ? ( cmd == 'tj' ? 'stj' : 'sp' ) : cmd + let cmd = a:mode == 't' ? ctrlp#tabcount().cmd : cmd + if !fdcnt[0] || utg + if cmd != '' + exe cmd + en + let save_cst = &cst + set cst& + cal feedkeys(":".( utg ? fdcnt[2] : "" )."ta ".tg."\r", 'nt') + let &cst = save_cst + el + let ext = "" + if fdcnt[1] < 2 && fdcnt[2] + let [sav_more, &more] = [&more, 0] + let ext = fdcnt[2]."\r".":let &more = ".sav_more."\r" + en + cal feedkeys(":".cmd." ".tg."\r".ext, 'nt') + en + cal ctrlp#setlcdir() +endf + +fu! ctrlp#tag#id() + retu s:id +endf + +fu! ctrlp#tag#enter() + let tfs = tagfiles() + let s:tagfiles = tfs != [] ? filter(map(tfs, 'fnamemodify(v:val, ":p")'), + \ 'filereadable(v:val)') : [] +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/undo.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/undo.vim new file mode 100644 index 0000000..dee705e --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/undo.vim @@ -0,0 +1,154 @@ +" ============================================================================= +" File: autoload/ctrlp/undo.vim +" Description: Undo extension +" Author: Kien Nguyen +" ============================================================================= + +" Init {{{1 +if ( exists('g:loaded_ctrlp_undo') && g:loaded_ctrlp_undo ) + fini +en +let g:loaded_ctrlp_undo = 1 + +cal add(g:ctrlp_ext_vars, { + \ 'init': 'ctrlp#undo#init()', + \ 'accept': 'ctrlp#undo#accept', + \ 'lname': 'undo', + \ 'sname': 'udo', + \ 'enter': 'ctrlp#undo#enter()', + \ 'exit': 'ctrlp#undo#exit()', + \ 'type': 'line', + \ 'sort': 0, + \ 'nolim': 1, + \ }) + +let s:id = g:ctrlp_builtins + len(g:ctrlp_ext_vars) + +let s:text = map(['second', 'seconds', 'minutes', 'hours', 'days', 'weeks', + \ 'months', 'years'], '" ".v:val." ago"') +" Utilities {{{1 +fu! s:getundo() + if exists('*undotree') + \ && ( v:version > 703 || ( v:version == 703 && has('patch005') ) ) + retu [1, undotree()] + el + redi => result + sil! undol + redi END + retu [0, split(result, "\n")[1:]] + en +endf + +fu! s:flatten(tree, cur) + let flatdict = {} + for each in a:tree + let saved = has_key(each, 'save') ? 'saved' : '' + let current = each['seq'] == a:cur ? 'current' : '' + cal extend(flatdict, { each['seq'] : [each['time'], saved, current] }) + if has_key(each, 'alt') + cal extend(flatdict, s:flatten(each['alt'], a:cur)) + en + endfo + retu flatdict +endf + +fu! s:elapsed(nr) + let [text, time] = [s:text, localtime() - a:nr] + let mins = time / 60 + let hrs = time / 3600 + let days = time / 86400 + let wks = time / 604800 + let mons = time / 2592000 + let yrs = time / 31536000 + if yrs > 1 + retu yrs.text[7] + elsei mons > 1 + retu mons.text[6] + elsei wks > 1 + retu wks.text[5] + elsei days > 1 + retu days.text[4] + elsei hrs > 1 + retu hrs.text[3] + elsei mins > 1 + retu mins.text[2] + elsei time == 1 + retu time.text[0] + elsei time < 120 + retu time.text[1] + en +endf + +fu! s:syntax() + if ctrlp#nosy() | retu | en + for [ke, va] in items({'T': 'Directory', 'Br': 'Comment', 'Nr': 'String', + \ 'Sv': 'Comment', 'Po': 'Title'}) + cal ctrlp#hicheck('CtrlPUndo'.ke, va) + endfo + sy match CtrlPUndoT '\v\d+ \zs[^ ]+\ze|\d+:\d+:\d+' + sy match CtrlPUndoBr '\[\|\]' + sy match CtrlPUndoNr '\[\d\+\]' contains=CtrlPUndoBr + sy match CtrlPUndoSv 'saved' + sy match CtrlPUndoPo 'current' +endf + +fu! s:dict2list(dict) + for ke in keys(a:dict) + let a:dict[ke][0] = s:elapsed(a:dict[ke][0]) + endfo + retu map(keys(a:dict), 'eval(''[v:val, a:dict[v:val]]'')') +endf + +fu! s:compval(...) + retu a:2[0] - a:1[0] +endf + +fu! s:format(...) + let saved = !empty(a:1[1][1]) ? ' '.a:1[1][1] : '' + let current = !empty(a:1[1][2]) ? ' '.a:1[1][2] : '' + retu a:1[1][0].' ['.a:1[0].']'.saved.current +endf + +fu! s:formatul(...) + let parts = matchlist(a:1, + \ '\v^\s+(\d+)\s+\d+\s+([^ ]+\s?[^ ]+|\d+\s\w+\s\w+)(\s*\d*)$') + retu parts == [] ? '----' + \ : parts[2].' ['.parts[1].']'.( parts[3] != '' ? ' saved' : '' ) +endf +" Public {{{1 +fu! ctrlp#undo#init() + let entries = s:undos[0] ? s:undos[1]['entries'] : s:undos[1] + if empty(entries) | retu [] | en + if !exists('s:lines') + if s:undos[0] + let entries = s:dict2list(s:flatten(entries, s:undos[1]['seq_cur'])) + let s:lines = map(sort(entries, 's:compval'), 's:format(v:val)') + el + let s:lines = map(reverse(entries), 's:formatul(v:val)') + en + en + cal s:syntax() + retu s:lines +endf + +fu! ctrlp#undo#accept(mode, str) + let undon = matchstr(a:str, '\[\zs\d\+\ze\]') + if empty(undon) | retu | en + cal ctrlp#exit() + exe 'u' undon +endf + +fu! ctrlp#undo#id() + retu s:id +endf + +fu! ctrlp#undo#enter() + let s:undos = s:getundo() +endf + +fu! ctrlp#undo#exit() + unl! s:lines +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/utils.vim b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/utils.vim new file mode 100644 index 0000000..91b9f24 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/autoload/ctrlp/utils.vim @@ -0,0 +1,110 @@ +" ============================================================================= +" File: autoload/ctrlp/utils.vim +" Description: Utilities +" Author: Kien Nguyen +" ============================================================================= + +" Static variables {{{1 +fu! ctrlp#utils#lash() + retu &ssl || !exists('+ssl') ? '/' : '\' +endf + +fu! s:lash(...) + retu ( a:0 ? a:1 : getcwd() ) !~ '[\/]$' ? s:lash : '' +endf + +fu! ctrlp#utils#opts() + let s:lash = ctrlp#utils#lash() + let usrhome = $HOME . s:lash( $HOME ) + let cahome = exists('$XDG_CACHE_HOME') ? $XDG_CACHE_HOME : usrhome.'.cache' + let cadir = isdirectory(usrhome.'.ctrlp_cache') + \ ? usrhome.'.ctrlp_cache' : cahome.s:lash(cahome).'ctrlp' + if exists('g:ctrlp_cache_dir') + let cadir = expand(g:ctrlp_cache_dir, 1) + if isdirectory(cadir.s:lash(cadir).'.ctrlp_cache') + let cadir = cadir.s:lash(cadir).'.ctrlp_cache' + en + en + let s:cache_dir = cadir +endf +cal ctrlp#utils#opts() + +let s:wig_cond = v:version > 702 || ( v:version == 702 && has('patch051') ) +" Files and Directories {{{1 +fu! ctrlp#utils#cachedir() + retu s:cache_dir +endf + +fu! ctrlp#utils#cachefile(...) + let [tail, dir] = [a:0 == 1 ? '.'.a:1 : '', a:0 == 2 ? a:1 : getcwd()] + let cache_file = substitute(dir, '\([\/]\|^\a\zs:\)', '%', 'g').tail.'.txt' + retu a:0 == 1 ? cache_file : s:cache_dir.s:lash(s:cache_dir).cache_file +endf + +fu! ctrlp#utils#readfile(file) + if filereadable(a:file) + let data = readfile(a:file) + if empty(data) || type(data) != 3 + unl data + let data = [] + en + retu data + en + retu [] +endf + +fu! ctrlp#utils#mkdir(dir) + if exists('*mkdir') && !isdirectory(a:dir) + sil! cal mkdir(a:dir, 'p') + en + retu a:dir +endf + +fu! ctrlp#utils#writecache(lines, ...) + if isdirectory(ctrlp#utils#mkdir(a:0 ? a:1 : s:cache_dir)) + sil! cal writefile(a:lines, a:0 >= 2 ? a:2 : ctrlp#utils#cachefile()) + en +endf + +fu! ctrlp#utils#glob(...) + let path = ctrlp#utils#fnesc(a:1, 'g') + retu s:wig_cond ? glob(path, a:2) : glob(path) +endf + +fu! ctrlp#utils#globpath(...) + retu call('globpath', s:wig_cond ? a:000 : a:000[:1]) +endf + +fu! ctrlp#utils#fnesc(path, type, ...) + if exists('*fnameescape') + if exists('+ssl') + if a:type == 'c' + let path = escape(a:path, '%#') + elsei a:type == 'f' + let path = fnameescape(a:path) + elsei a:type == 'g' + let path = escape(a:path, '?*') + en + let path = substitute(path, '[', '[[]', 'g') + el + let path = fnameescape(a:path) + en + el + if exists('+ssl') + if a:type == 'c' + let path = escape(a:path, '%#') + elsei a:type == 'f' + let path = escape(a:path, " \t\n%#*?|<\"") + elsei a:type == 'g' + let path = escape(a:path, '?*') + en + let path = substitute(path, '[', '[[]', 'g') + el + let path = escape(a:path, " \t\n*?[{`$\\%#'\"|!<") + en + en + retu a:0 ? escape(path, a:1) : path +endf +"}}} + +" vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/doc/ctrlp.txt b/vim-plugins/bundle/ctrlp.vim/doc/ctrlp.txt new file mode 100644 index 0000000..e697b93 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/doc/ctrlp.txt @@ -0,0 +1,1451 @@ +*ctrlp.txt* Fuzzy file, buffer, mru, tag, ... finder. v1.79 +*CtrlP* *ControlP* *'ctrlp'* *'ctrl-p'* +=============================================================================== +# # +# :::::::: ::::::::::: ::::::::: ::: ::::::::: # +# :+: :+: :+: :+: :+: :+: :+: :+: # +# +:+ +:+ +:+ +:+ +:+ +:+ +:+ # +# +#+ +#+ +#++:++#: +#+ +#++:++#+ # +# +#+ +#+ +#+ +#+ +#+ +#+ # +# #+# #+# #+# #+# #+# #+# #+# # +# ######## ### ### ### ########## ### # +# # +=============================================================================== +CONTENTS *ctrlp-contents* + + 1. Intro........................................|ctrlp-intro| + 2. Options......................................|ctrlp-options| + 3. Commands.....................................|ctrlp-commands| + 4. Mappings.....................................|ctrlp-mappings| + 5. Input Formats................................|ctrlp-input-formats| + 6. Extensions...................................|ctrlp-extensions| + +=============================================================================== +INTRO *ctrlp-intro* + +Full path fuzzy file, buffer, mru, tag, ... finder with an intuitive interface. +Written in pure Vimscript for MacVim, gVim and Vim version 7.0+. Has full +support for Vim's |regexp| as search pattern, built-in MRU files monitoring, +project's root finder, and more. + +To enable optional extensions (tag, dir, rtscript...), see |ctrlp-extensions|. + +=============================================================================== +OPTIONS *ctrlp-options* + +Overview:~ + + |loaded_ctrlp|................Disable the plugin. + |ctrlp_map|...................Default mapping. + |ctrlp_cmd|...................Default command used for the default mapping. + |ctrlp_by_filename|...........Default to filename mode or not. + |ctrlp_regexp|................Default to regexp mode or not. + |ctrlp_match_window|..........Order, height and position of the match window. + |ctrlp_switch_buffer|.........Jump to an open buffer if already opened. + |ctrlp_reuse_window|..........Reuse special windows (help, quickfix, etc). + |ctrlp_tabpage_position|......Where to put the new tab page. + |ctrlp_working_path_mode|.....How to set CtrlP's local working directory. + |ctrlp_root_markers|..........Additional, high priority root markers. + |ctrlp_use_caching|...........Use per-session caching or not. + |ctrlp_clear_cache_on_exit|...Keep cache after exiting Vim or not. + |ctrlp_cache_dir|.............Location of the cache directory. + |ctrlp_show_hidden|...........Ignore dotfiles and dotdirs or not. + |ctrlp_custom_ignore|.........Hide stuff when using |globpath()|. + |ctrlp_max_files|.............Number of files to scan initially. + |ctrlp_max_depth|.............Directory depth to recurse into when scanning. + |ctrlp_user_command|..........Use an external scanner. + |ctrlp_max_history|...........Number of entries saved in the prompt history. + |ctrlp_open_new_file|.........How to open a file created by . + |ctrlp_open_multiple_files|...How to open files selected by . + |ctrlp_arg_map|...............Intercept and or not. + |ctrlp_follow_symlinks|.......Follow symbolic links or not. + |ctrlp_lazy_update|...........Only update when typing has stopped. + |ctrlp_default_input|.........Seed the prompt with an initial string. + |ctrlp_abbrev|................Input abbreviations. + |ctrlp_key_loop|..............Use input looping for multi-byte input. + |ctrlp_use_migemo|............Use Migemo patterns for Japanese filenames. + |ctrlp_prompt_mappings|.......Change the mappings inside the prompt. + + MRU mode: + |ctrlp_mruf_max|..............Max MRU entries to remember. + |ctrlp_mruf_exclude|..........Files that shouldn't be remembered. + |ctrlp_mruf_include|..........Files to be remembered. + |ctrlp_mruf_relative|.........Show only MRU files in the working directory. + |ctrlp_mruf_default_order|....Disable sorting. + |ctrlp_mruf_case_sensitive|...MRU files are case sensitive or not. + |ctrlp_mruf_save_on_update|...Save to disk whenever a new entry is added. + + BufferTag mode: (to enable, see |ctrlp-extensions|) + |g:ctrlp_buftag_ctags_bin|....The location of the ctags-compatible binary. + |g:ctrlp_buftag_systemenc|....The encoding used for the ctags command. + |g:ctrlp_buftag_types|........Add new filetypes and set the cmd arguments. + + Advanced options: + |ctrlp_open_func|.............Use custom file opening functions. + |ctrlp_status_func|...........Change CtrlP's two statuslines. + |ctrlp_buffer_func|...........Call custom functions in the CtrlP buffer. + |ctrlp_match_func|............Replace the built-in matching algorithm. + +------------------------------------------------------------------------------- +Detailed descriptions and default values:~ + + *'g:ctrlp_map'* +Use this option to change the mapping to invoke CtrlP in |Normal| mode: > + let g:ctrlp_map = '' +< + + *'g:ctrlp_cmd'* +Set the default opening command to use when pressing the above mapping: > + let g:ctrlp_cmd = 'CtrlP' +< + + *'g:loaded_ctrlp'* +Use this to disable the plugin completely: > + let g:loaded_ctrlp = 1 +< + + *'g:ctrlp_by_filename'* +Set this to 1 to set searching by filename (as opposed to full path) as the +default: > + let g:ctrlp_by_filename = 0 +< +Can be toggled on/off by pressing inside the prompt. + + *'g:ctrlp_regexp'* +Set this to 1 to set regexp search as the default: > + let g:ctrlp_regexp = 0 +< +Can be toggled on/off by pressing inside the prompt. + + *'g:ctrlp_match_window'* +Change the postion, the listing order of results, the minimum and the maximum +heights of the match window: > + let g:ctrlp_match_window = '' +< +Example: > + let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10,results:10' +< +The position: (default: bottom) + top - show the match window at the top of the screen. + bottom - show the match window at the bottom of the screen. + +The listing order of results: (default: btt) + order:ttb - from top to bottom. + order:btt - from bottom to top. + +The minimum and maximum heights: + min:{n} - show minimum {n} lines (default: 1). + max:{n} - show maximum {n} lines (default: 10). + +The maximum number of results: + results:{n} - list maximum {n} results (default: sync with max height). + +Note: When a setting isn't set, its default value will be used. + + *'g:ctrlp_switch_buffer'* +When opening a file, if it's already open in a window somewhere, CtrlP will try +to jump to it instead of opening a new instance: > + let g:ctrlp_switch_buffer = 'Et' +< + e - jump when is pressed, but only to windows in the current tab. + t - jump when is pressed, but only to windows in another tab. + v - like "e", but jump when is pressed. + h - like "e", but jump when is pressed. + E, T, V, H - like "e", "t", "v", and "h", but jump to windows anywhere. + 0 or - disable this feature. + + *'g:ctrlp_reuse_window'* +When opening a file with , CtrlP avoids opening it in windows created by +plugins, help and quickfix. Use this to setup some exceptions: > + let g:ctrlp_reuse_window = 'netrw' +< +Acceptable values are partial name, filetype or buftype of the special buffers. +Use regexp to specify the pattern. +Example: > + let g:ctrlp_reuse_window = 'netrw\|help\|quickfix' +< + + *'g:ctrlp_tabpage_position'* +Where to put the new tab page when opening one: > + let g:ctrlp_tabpage_position = 'ac' +< + a - after. + b - before. + c - the current tab page. + l - the last tab page. + f - the first tab page. + + *'g:ctrlp_working_path_mode'* +When starting up, CtrlP sets its local working directory according to this +variable: > + let g:ctrlp_working_path_mode = 'ra' +< + c - the directory of the current file. + a - like "c", but only applies when the current working directory outside of + CtrlP isn't a direct ancestor of the directory of the current file. + r - the nearest ancestor that contains one of these directories or files: + .git .hg .svn .bzr _darcs + w - begin finding a root from the current working directory outside of CtrlP + instead of from the directory of the current file (default). Only applies + when "r" is also present. + 0 or - disable this feature. + +Note #1: if "a" or "c" is included with "r", use the behavior of "a" or "c" (as +a fallback) when a root can't be found. + +Note #2: you can use a |b:var| to set this option on a per buffer basis. + + *'g:ctrlp_root_markers'* +Use this to set your own root markers in addition to the default ones (.git, +.hg, .svn, .bzr, and _darcs). Your markers will take precedence: > + let g:ctrlp_root_markers = [''] +< +Note: you can use a |b:var| to set this option on a per buffer basis. + + *'g:ctrlp_use_caching'* +Enable/Disable per-session caching: > + let g:ctrlp_use_caching = 1 +< + 0 - Disable caching. + 1 - Enable caching. + n - When bigger than 1, disable caching and use the number as the limit to + enable caching again. + +Note: you can quickly purge the cache by pressing while inside CtrlP. + + *'g:ctrlp_clear_cache_on_exit'* +Set this to 0 to enable cross-session caching by not deleting the cache files +upon exiting Vim: > + let g:ctrlp_clear_cache_on_exit = 1 +< + + *'g:ctrlp_cache_dir'* +Set the directory to store the cache files: > + let g:ctrlp_cache_dir = $HOME.'/.cache/ctrlp' +< + + *'g:ctrlp_show_hidden'* +Set this to 1 if you want CtrlP to scan for dotfiles and dotdirs: > + let g:ctrlp_show_hidden = 0 +< +Note: does not apply when a command defined with |g:ctrlp_user_command| is +being used. + + *'ctrlp-wildignore'* +You can use Vim's |'wildignore'| to exclude files and directories from the +results. +Examples: > + " Excluding version control directories + set wildignore+=*/.git/*,*/.hg/*,*/.svn/* " Linux/MacOSX + set wildignore+=*\\.git\\*,*\\.hg\\*,*\\.svn\\* " Windows ('noshellslash') +< +Note #1: the `*/` in front of each directory glob is required. + +Note #2: |wildignore| influences the result of |expand()|, |globpath()| and +|glob()| which many plugins use to find stuff on the system (e.g. VCS related +plugins look for .git/, .hg/,... some other plugins look for external *.exe +tools on Windows). So be a little mindful of what you put in your |wildignore|. + + *'g:ctrlp_custom_ignore'* +In addition to |'wildignore'|, use this for files and directories you want only +CtrlP to not show. Use regexp to specify the patterns: > + let g:ctrlp_custom_ignore = '' +< +Examples: > + let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' + let g:ctrlp_custom_ignore = { + \ 'dir': '\v[\/]\.(git|hg|svn)$', + \ 'file': '\v\.(exe|so|dll)$', + \ 'link': 'SOME_BAD_SYMBOLIC_LINKS', + \ } + let g:ctrlp_custom_ignore = { + \ 'file': '\v(\.cpp|\.h|\.hh|\.cxx)@ + let g:ctrlp_max_files = 10000 +< +Note: does not apply when a command defined with |g:ctrlp_user_command| is +being used. + + *'g:ctrlp_max_depth'* +The maximum depth of a directory tree to recurse into: > + let g:ctrlp_max_depth = 40 +< +Note: does not apply when a command defined with |g:ctrlp_user_command| is +being used. + + *'g:ctrlp_user_command'* +Specify an external tool to use for listing files instead of using Vim's +|globpath()|. Use %s in place of the target directory: > + let g:ctrlp_user_command = '' +< +Examples: > + let g:ctrlp_user_command = 'find %s -type f' " MacOSX/Linux + let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows +< +You can also use 'grep', 'findstr' or something else to filter the results. +Examples: > + let g:ctrlp_user_command = + \ 'find %s -type f | grep -v -P "\.jpg$|/tmp/"' " MacOSX/Linux + let g:ctrlp_user_command = + \ 'dir %s /-n /b /s /a-d | findstr /v /l ".jpg \\tmp\\"' " Windows +< +Use a version control listing command when inside a repository, this is faster +when scanning large projects: > + let g:ctrlp_user_command = [root_marker, listing_command, fallback_command] + let g:ctrlp_user_command = { + \ 'types': { + \ 1: [root_marker_1, listing_command_1], + \ n: [root_marker_n, listing_command_n], + \ }, + \ 'fallback': fallback_command, + \ 'ignore': 0 or 1 + \ } +< +Some examples: > + " Single VCS, listing command does not list untracked files: + let g:ctrlp_user_command = ['.git', 'cd %s && git ls-files'] + let g:ctrlp_user_command = ['.hg', 'hg --cwd %s locate -I .'] + + " Multiple VCS's: + let g:ctrlp_user_command = { + \ 'types': { + \ 1: ['.git', 'cd %s && git ls-files'], + \ 2: ['.hg', 'hg --cwd %s locate -I .'], + \ }, + \ 'fallback': 'find %s -type f' + \ } + + " Single VCS, listing command lists untracked files (slower): + let g:ctrlp_user_command = + \ ['.git', 'cd %s && git ls-files . -co --exclude-standard'] + + let g:ctrlp_user_command = + \ ['.hg', 'hg --cwd %s status -numac -I . $(hg root)'] " MacOSX/Linux + + let g:ctrlp_user_command = ['.hg', 'for /f "tokens=1" %%a in (''hg root'') ' + \ . 'do hg --cwd %s status -numac -I . %%a'] " Windows +< +Note #1: in the |Dictionary| format, 'fallback' and 'ignore' are optional. In +the |List| format, fallback_command is optional. + +Note #2: if the fallback_command is empty or the 'fallback' key is not defined, +|globpath()| will then be used when scanning outside of a repository. + +Note #3: unless the |Dictionary| format is used and 'ignore' is defined and set +to 1, the |wildignore| and |g:ctrlp_custom_ignore| options do not apply when +these custom commands are being used. When not present, 'ignore' is set to 0 by +default to retain the performance advantage of using external commands. + +Note #4: when changing the option's variable type, remember to |:unlet| it +first or restart Vim to avoid the "E706: Variable type mismatch" error. + +Note #5: you can use a |b:var| to set this option on a per buffer basis. + + *'g:ctrlp_max_history'* +The maximum number of input strings you want CtrlP to remember. The default +value mirrors Vim's global |'history'| option: > + let g:ctrlp_max_history = &history +< +Set to 0 to disable prompt's history. Browse the history with and . + + *'g:ctrlp_open_new_file'* +Use this option to specify how the newly created file is to be opened when +pressing : > + let g:ctrlp_open_new_file = 'v' +< + t - in a new tab. + h - in a new horizontal split. + v - in a new vertical split. + r - in the current window. + + *'g:ctrlp_open_multiple_files'* +If non-zero, this will enable opening multiple files with and : > + let g:ctrlp_open_multiple_files = 'v' +< +Example: > + let g:ctrlp_open_multiple_files = '2vjr' +< +For the number: + - If given, it'll be used as the maximum number of windows or tabs to create + when opening the files (the rest will be opened as hidden buffers). + - If not given, will open all files, each in a new window or new tab. + +For the letters: + t - each file in a new tab. + h - each file in a new horizontal split. + v - each file in a new vertical split. + i - all files as hidden buffers. + j - after opening, jump to the first opened tab or window. + r - open the first file in the current window, then the remaining files in + new splits or new tabs depending on which of "h", "v" and "t" is also + present. + + *'g:ctrlp_arg_map'* +When this is set to 1, the and mappings will accept one extra key +as an argument to override their default behavior: > + let g:ctrlp_arg_map = 0 +< +Pressing or will then prompt for a keypress. The key can be: + t - open in tab(s) + h - open in horizontal split(s) + v - open in vertical split(s) + i - open as hidden buffers (for only) + c - clear the marked files (for only) + r - open in the current window (for only) + , , - cancel and go back to the prompt. + - use the default behavior specified with |g:ctrlp_open_new_file| and + |g:ctrlp_open_multiple_files|. + + *'g:ctrlp_follow_symlinks'* +If non-zero, CtrlP will follow symbolic links when listing files: > + let g:ctrlp_follow_symlinks = 0 +< + 0 - don't follow symbolic links. + 1 - follow but ignore looped internal symlinks to avoid duplicates. + 2 - follow all symlinks indiscriminately. + +Note: does not apply when a command defined with |g:ctrlp_user_command| is +being used. + + *'g:ctrlp_lazy_update'* +Set this to 1 to enable the lazy-update feature: only update the match window +after typing's been stopped for a certain amount of time: > + let g:ctrlp_lazy_update = 0 +< +If is 1, update after 250ms. If bigger than 1, the number will be used as the +delay time in milliseconds. + + *'g:ctrlp_default_input'* +Set this to 1 to enable seeding the prompt with the current file's relative +path: > + let g:ctrlp_default_input = 0 +< +Instead of 1 or 0, if the value of the option is a string, it'll be used as-is +as the default input: > + let g:ctrlp_default_input = 'anystring' +< + + *'g:ctrlp_abbrev'* +Define input abbreviations that can be expanded (either internally or visibly) +in the prompt: > + let g:ctrlp_abbrev = {} +< +Examples: > + let g:ctrlp_abbrev = { + \ 'gmode': 'i', + \ 'abbrevs': [ + \ { + \ 'pattern': '^cd b', + \ 'expanded': '@cd ~/.vim/bundle', + \ 'mode': 'pfrz', + \ }, + \ { + \ 'pattern': '\(^@.\+\|\\\@ (use the expanded string in the + new filename). + c - only when auto-completing directory names with (expand the pattern + immediately before doing the auto-completion). + or not defined - always enable. + +Note: the abbrev entries are evaluated in sequence, so a later entry can be +evaluated against the expanded result of a previous entry; this includes itself +when 'gmode' is "t". + + *'g:ctrlp_key_loop'* +An experimental feature. Set this to 1 to enable input looping for the typing +of multi-byte characters: > + let g:ctrlp_key_loop = 0 +< +Note #1: when set, this option resets the |g:ctrlp_lazy_update| option. + +Note #2: you can toggle this feature inside the prompt with a custom mapping: > + let g:ctrlp_prompt_mappings = { 'ToggleKeyLoop()': [''] } +< + + *'g:ctrlp_use_migemo'* +Set this to 1 to use Migemo Pattern for Japanese filenames. Migemo Search only +works in regexp mode. To split the pattern, separate words with space: > + let g:ctrlp_use_migemo = 0 +< + + *'g:ctrlp_prompt_mappings'* +Use this to customize the mappings inside CtrlP's prompt to your liking. You +only need to keep the lines that you've changed the values (inside []): > + let g:ctrlp_prompt_mappings = { + \ 'PrtBS()': ['', ''], + \ 'PrtDelete()': [''], + \ 'PrtDeleteWord()': [''], + \ 'PrtClear()': [''], + \ 'PrtSelectMove("j")': ['', ''], + \ 'PrtSelectMove("k")': ['', ''], + \ 'PrtSelectMove("t")': ['', ''], + \ 'PrtSelectMove("b")': ['', ''], + \ 'PrtSelectMove("u")': ['', ''], + \ 'PrtSelectMove("d")': ['', ''], + \ 'PrtHistory(-1)': [''], + \ 'PrtHistory(1)': [''], + \ 'AcceptSelection("e")': ['', '<2-LeftMouse>'], + \ 'AcceptSelection("h")': ['', '', ''], + \ 'AcceptSelection("t")': [''], + \ 'AcceptSelection("v")': ['', ''], + \ 'ToggleFocus()': [''], + \ 'ToggleRegex()': [''], + \ 'ToggleByFname()': [''], + \ 'ToggleType(1)': ['', ''], + \ 'ToggleType(-1)': ['', ''], + \ 'PrtExpandDir()': [''], + \ 'PrtInsert("c")': ['', ''], + \ 'PrtInsert()': [''], + \ 'PrtCurStart()': [''], + \ 'PrtCurEnd()': [''], + \ 'PrtCurLeft()': ['', '', ''], + \ 'PrtCurRight()': ['', ''], + \ 'PrtClearCache()': [''], + \ 'PrtDeleteEnt()': [''], + \ 'CreateNewFile()': [''], + \ 'MarkToOpen()': [''], + \ 'OpenMulti()': [''], + \ 'PrtExit()': ['', '', ''], + \ } +< +Note: if pressing moves the cursor one character to the left instead of +deleting a character for you, add this to your |.vimrc| to disable the plugin's +default mapping: > + let g:ctrlp_prompt_mappings = { 'PrtCurLeft()': ['', ''] } +< + +---------------------------------------- +MRU mode options:~ + + *'g:ctrlp_mruf_max'* +Specify the number of recently opened files you want CtrlP to remember: > + let g:ctrlp_mruf_max = 250 +< + + *'g:ctrlp_mruf_exclude'* +Files you don't want CtrlP to remember. Use regexp to specify the patterns: > + let g:ctrlp_mruf_exclude = '' +< +Examples: > + let g:ctrlp_mruf_exclude = '/tmp/.*\|/temp/.*' " MacOSX/Linux + let g:ctrlp_mruf_exclude = '^C:\\dev\\tmp\\.*' " Windows +< + + *'g:ctrlp_mruf_include'* +And if you want CtrlP to only remember some files, specify them here: > + let g:ctrlp_mruf_include = '' +< +Example: > + let g:ctrlp_mruf_include = '\.py$\|\.rb$' +< + + *'g:ctrlp_mruf_relative'* +Set this to 1 to show only MRU files in the current working directory: > + let g:ctrlp_mruf_relative = 0 +< +Note: you can use a custom mapping to toggle this option inside the prompt: > + let g:ctrlp_prompt_mappings = { 'ToggleMRURelative()': [''] } +< + + *'g:ctrlp_mruf_default_order'* +Set this to 1 to disable sorting when searching in MRU mode: > + let g:ctrlp_mruf_default_order = 0 +< + + *'g:ctrlp_mruf_case_sensitive'* +Match this with your file system case-sensitivity setting to avoid duplicate +MRU entries: > + let g:ctrlp_mruf_case_sensitive = 1 +< + + *'g:ctrlp_mruf_save_on_update'* +Set this to 0 to disable saving of the MRU list to hard drive whenever a new +entry is added, saving will then only occur when exiting Vim: > + let g:ctrlp_mruf_save_on_update = 1 +< + +---------------------------------------- +Advanced options:~ + + *'g:ctrlp_open_func'* +Define a custom function to open the selected file: > + let g:ctrlp_open_func = {} +< +Example: > + let g:ctrlp_open_func = { + \ 'files' : 'Function_Name_1', + \ 'buffers' : 'Function_Name_2', + \ 'mru files' : 'Function_Name_3', + \ } +< +Structure of the functions: > + function! Function_Name(action, line) + " Arguments: + " | + " +- a:action : The opening action: + " | + 'e' : user pressed (default) + " | + 'h' : user pressed (default) + " | + 'v' : user pressed (default) + " | + 't' : user pressed (default) + " | + 'x' : user used the console dialog (default) and + " | chose "e[x]ternal". + " | + " +- a:line : The selected line. + + endfunction +< +Note: does not apply when opening multiple files with and . + +Example: open HTML files in the default web browser when is pressed and +in Vim otherwise > + function! HTMLOpenFunc(action, line) + if a:action =~ '^[tx]$' && fnamemodify(a:line, ':e') =~? '^html\?$' + + " Get the filename + let filename = fnameescape(fnamemodify(a:line, ':p')) + + " Close CtrlP + call ctrlp#exit() + + " Open the file + silent! execute '!xdg-open' filename + + elseif a:action == 'x' && fnamemodify(a:line, ':e') !~? '^html\?$' + + " Not a HTML file, simulate pressing again and wait for new input + call feedkeys("\") + + else + + " Use CtrlP's default file opening function + call call('ctrlp#acceptfile', [a:action, a:line]) + + endif + endfunction + + let g:ctrlp_open_func = { 'files': 'HTMLOpenFunc' } +< + + *'g:ctrlp_status_func'* +Use this to customize the statuslines for the CtrlP window: > + let g:ctrlp_status_func = {} +< +Example: > + let g:ctrlp_status_func = { + \ 'main': 'Function_Name_1', + \ 'prog': 'Function_Name_2', + \ } +< +Structure of the functions: > + " Main statusline + function! Function_Name_1(focus, byfname, regex, prev, item, next, marked) + " Arguments: + " | + " +- a:focus : The focus of the prompt: "prt" or "win". + " | + " +- a:byfname : In filename mode or in full path mode: "file" or "path". + " | + " +- a:regex : In regex mode: 1 or 0. + " | + " +- a:prev : The previous search mode. + " | + " +- a:item : The current search mode. + " | + " +- a:next : The next search mode. + " | + " +- a:marked : The number of marked files, or a comma separated list of + " the marked filenames. + + return full_statusline + endfunction + + " Progress statusline + function! Function_Name_2(str) + " a:str : Either the number of files scanned so far, or a string indicating + " the current directory is being scanned with a user_command. + + return full_statusline + endfunction +< +See https://gist.github.com/1610859 for a working example. + + *'g:ctrlp_buffer_func'* +Specify the functions that will be called after entering and before exiting the +CtrlP buffer: > + let g:ctrlp_buffer_func = {} +< +Example: > + let g:ctrlp_buffer_func = { + \ 'enter': 'Function_Name_1', + \ 'exit': 'Function_Name_2', + \ } +< + + *'g:ctrlp_match_func'* +Set an external fuzzy matching function for CtrlP to use: > + let g:ctrlp_match_func = {} +< +Example: > + let g:ctrlp_match_func = { 'match': 'Function_Name' } +< +Structure of the function: > + function! Function_Name(items, str, limit, mmode, ispath, crfile, regex) + " Arguments: + " | + " +- a:items : The full list of items to search in. + " | + " +- a:str : The string entered by the user. + " | + " +- a:limit : The max height of the match window. Can be used to limit + " | the number of items to return. + " | + " +- a:mmode : The match mode. Can be one of these strings: + " | + "full-line": match the entire line. + " | + "filename-only": match only the filename. + " | + "first-non-tab": match until the first tab char. + " | + "until-last-tab": match until the last tab char. + " | + " +- a:ispath : Is 1 when searching in file, buffer, mru, mixed, dir, and + " | rtscript modes. Is 0 otherwise. + " | + " +- a:crfile : The file in the current window. Should be excluded from the + " | results when a:ispath == 1. + " | + " +- a:regex : In regex mode: 1 or 0. + + return list_of_matched_items + endfunction +< + +Note: you can extend any of the above options with { 'arg_type': 'dict' } to +enable passing all the function arguments in a single Dictionary argument. Use +the existing argument names as keys in this Dictionary. + +Example: > + let g:ctrlp_status_func = { + \ 'arg_type' : 'dict', + \ 'enter': 'Function_Name_1', + \ 'exit': 'Function_Name_2', + \ } + + function! Function_Name_1(dict) + " where dict == { + " \ 'focus': value, + " \ 'byfname': value, + " \ 'regex': value, + " \ ... + " } + endfunction +< + +=============================================================================== +COMMANDS *ctrlp-commands* + + *:CtrlP* +:CtrlP [starting-directory] + Open CtrlP in find file mode. + + If no argument is given, the value of |g:ctrlp_working_path_mode| will be + used to determine the starting directory. + + You can use to auto-complete the [starting-directory] when typing it. + + *:CtrlPBuffer* +:CtrlPBuffer + Open CtrlP in find buffer mode. + + *:CtrlPMRU* +:CtrlPMRU + Open CtrlP in find Most-Recently-Used file mode. + + *:CtrlPLastMode* +:CtrlPLastMode [--dir] + Open CtrlP in the last mode used. When having the "--dir" argument, also + reuse the last working directory. + + *:CtrlPRoot* +:CtrlPRoot + This acts like |:CtrlP| with |g:ctrlp_working_path_mode| = 'r' and ignores + the variable's current value. + + *:CtrlPClearCache* +:CtrlPClearCache + Flush the cache for the current working directory. The same as pressing + inside CtrlP. + To enable or disable caching, use the |g:ctrlp_use_caching| option. + + *:CtrlPClearAllCaches* +:CtrlPClearAllCaches + Delete all the cache files saved in |g:ctrlp_cache_dir| location. + +------------------------------------------------------------------------------- +For commands provided by bundled extensions, see |ctrlp-extensions|. + +=============================================================================== +MAPPINGS *ctrlp-mappings* + + *'ctrlp-'* + + Default |Normal| mode mapping to open the CtrlP prompt in find file mode. + +---------------------------------------- +Once inside the prompt:~ + + + Toggle between full-path search and filename only search. + Note: in filename mode, the prompt's base is '>d>' instead of '>>>' + + *'ctrlp-fullregexp'* + Toggle between the string mode and full regexp mode. + Note: in full regexp mode, the prompt's base is 'r>>' instead of '>>>' + + See also: |input-formats| (guide) and |g:ctrlp_regexp_search| (option). + + , 'forward' + + Scroll to the 'next' search mode in the sequence. + + , 'backward' + + Scroll to the 'previous' search mode in the sequence. + + *'ctrlp-autocompletion'* + Auto-complete directory names under the current working directory inside + the prompt. + + + Toggle the focus between the match window and the prompt. + + , + + Exit CtrlP. + +Moving:~ + + , + + Move selection down. + + , + + Move selection up. + + + Move the cursor to the 'start' of the prompt. + + + Move the cursor to the 'end' of the prompt. + + , + , + + Move the cursor one character to the 'left'. + + , + + Move the cursor one character to the 'right'. + +Editing:~ + + , + + Delete the preceding character. + + + Delete the current character. + + + Delete a preceding inner word. + + + Clear the input field. + +Browsing input history:~ + + + Next string in the prompt's history. + + + Previous string in the prompt's history. + +Opening/Creating a file:~ + + + Open the selected file in the 'current' window if possible. + + + Open the selected file in a new 'tab'. + + + Open the selected file in a 'vertical' split. + + , + , + + Open the selected file in a 'horizontal' split. + + + Create a new file and its parent directories. + +Opening multiple files:~ + + + - Mark/unmark a file to be opened with . + - Mark/unmark a file to create a new file in its directory using . + + + - Open files marked by . + - When no file has been marked by , open a console dialog with the + following options: + + Open the selected file: + t - in a tab page. + v - in a vertical split. + h - in a horizontal split. + r - in the current window. + i - as a hidden buffer. + x - (optional) with the function defined in |g:ctrlp_open_func|. + + Other options (not shown): + a - mark all files in the match window. + d - change CtrlP's local working directory to the selected file's + directory and switch to find file mode. + +Function keys:~ + + + - Refresh the match window and purge the cache for the current directory. + - Remove deleted files from the MRU list. + + + - Wipe the MRU list. + - Delete MRU entries marked by . + +Pasting:~ + + , *'ctrlp-pasting'* + + Paste the clipboard content into the prompt. + + + Open a console dialog to paste , , the content of the search + register, the last visual selection, the clipboard or any register into the + prompt. + +Choose your own mappings with |g:ctrlp_prompt_mappings|. + +---------------------------------------- +When inside the match window (press to switch):~ + + a-z + 0-9 + ~^-=;`',.+!@#$%&_(){}[] + Cycle through the lines which have the matching first character. + +=============================================================================== +INPUT FORMATS *ctrlp-input-formats* + +Formats for inputting in the prompt:~ + +a) Simple string. + + E.g. 'abc' is understood internally as 'a[^a]\{-}b[^b]\{-}c' + +b) When in regexp mode, the input string's treated as a Vim's regexp |pattern| + without any modification. + + E.g. 'abc\d*efg' will be read as 'abc\d*efg'. + + See |ctrlp-fullregexp| (keymap) and |g:ctrlp_regexp_search| (option) for + how to enable regexp mode. + +c) End the string with a colon ':' followed by a Vim command to execute that + command after opening the file. If you need to use ':' literally, escape it + with a backslash: '\:'. When opening multiple files, the command will be + executed on each opening file. + + E.g. Use ':45' to jump to line 45. + + Use ':/any\:string' to jump to the first instance of 'any:string'. + + Use ':+setf\ myfiletype|50' to set the filetype to 'myfiletype', then + jump to line 50. + + Use ':diffthis' when opening multiple files to run |:diffthis| on the + first 4 files. + + See also: Vim's |++opt| and |+cmd|. + +d) Submit two dots '..' to go upward the directory tree by 1 level. To go up + multiple levels, use one extra dot for each extra level: +> + Raw input Interpreted as + .. ../ + ... ../../ + .... ../../../ +< + Note: if the parent directories are large and uncached, this can be slow. + + You can also use '@cd path/' to change CtrlP's local working directory. + Use '@cd %:h' to change to the directory of the current file. + +e) Similarly, submit '/' or '\' to find and go to the project's root. + + If the project is large, using a VCS listing command to look for files + might help speeding up the intial scan (see |g:ctrlp_user_command| for more + details). + + Note: d) and e) only work in file, directory and mixed modes. + +f) Type the name of a non-existent file and press to create it. Mark a + file with to create the new file in the same directory as the marked + file. + + E.g. Using 'newdir/newfile.txt' will create a directory named 'newdir' as + well as a file named 'newfile.txt'. + + If an entry 'some/old/dirs/oldfile.txt' is marked with , then + 'newdir' and 'newfile.txt' will be created under 'some/old/dirs'. The + final path will then be 'some/old/dirs/newdir/newfile.txt'. + + Note: use '\' in place of '/' on Windows (if |'shellslash'| is not set). + +g) In filename mode (toggle with ), you can use one primary pattern and + one refining pattern separated by a semicolon. Both patterns work like (a), + or (b) when in regexp mode. + +h) Submit ? to open this help file. + +=============================================================================== +EXTENSIONS *ctrlp-extensions* + +Extensions are optional. To enable an extension, add its name to the variable +g:ctrlp_extensions: > + let g:ctrlp_extensions = ['tag', 'buffertag', 'quickfix', 'dir', 'rtscript', + \ 'undo', 'line', 'changes', 'mixed', 'bookmarkdir'] +< +The order of the items will be the order they appear on the statusline and when +using , . + +Available extensions:~ + + *:CtrlPTag* + * Tag mode:~ + - Name: 'tag' + - Command: ":CtrlPTag" + - Search for a tag within a generated central tags file, and jump to the + definition. Use the Vim's option |'tags'| to specify the names and the + locations of the tags file(s). + E.g. set tags+=doc/tags + + *:CtrlPBufTag* + *:CtrlPBufTagAll* + * Buffer Tag mode:~ + - Name: 'buffertag' + - Commands: ":CtrlPBufTag [buffer]", + ":CtrlPBufTagAll". + - Search for a tag within the current buffer or all listed buffers and jump + to the definition. Requires |exuberant_ctags| or compatible programs. + + *:CtrlPQuickfix* + * Quickfix mode:~ + - Name: 'quickfix' + - Command: ":CtrlPQuickfix" + - Search for an entry in the current quickfix errors and jump to it. + + *:CtrlPDir* + * Directory mode:~ + - Name: 'dir' + - Command: ":CtrlPDir [starting-directory]" + - Search for a directory and change the working directory to it. + - Mappings: + + change the local working directory for CtrlP and keep it open. + + change the global working directory (exit). + + change the local working directory for the current window (exit). + + change the global working directory to CtrlP's current local + working directory (exit). + + *:CtrlPRTS* + * Runtime script mode:~ + - Name: 'rtscript' + - Command: ":CtrlPRTS" + - Search for files (vimscripts, docs, snippets...) in runtimepath. + + *:CtrlPUndo* + * Undo mode:~ + - Name: 'undo' + - Command: ":CtrlPUndo" + - Browse undo history. + + *:CtrlPLine* + * Line mode:~ + - Name: 'line' + - Command: ":CtrlPLine [buffer]" + - Search for a line in all listed buffers or in the specified [buffer]. + + *:CtrlPChange* + *:CtrlPChangeAll* + * Change list mode:~ + - Name: 'changes' + - Commands: ":CtrlPChange [buffer]", + ":CtrlPChangeAll". + - Search for and jump to a recent change in the current buffer or in all + listed buffers. + + *:CtrlPMixed* + * Mixed mode:~ + - Name: 'mixed' + - Command: ":CtrlPMixed" + - Search in files, buffers and MRU files at the same time. + + *:CtrlPBookmarkDir* + *:CtrlPBookmarkDirAdd* + * BookmarkDir mode:~ + - Name: 'bookmarkdir' + - Commands: ":CtrlPBookmarkDir", + ":CtrlPBookmarkDirAdd [directory]". + - Search for a bookmarked directory and change the working directory to it. + - Mappings: + + change the local working directory for CtrlP, keep it open and + switch to find file mode. + + change the global working directory (exit). + + change the local working directory for the current window (exit). + + + - Wipe bookmark list. + - Delete entries marked by . + +---------------------------------------- +Buffer Tag mode options:~ + + *'g:ctrlp_buftag_ctags_bin'* +If ctags isn't in your $PATH, use this to set its location: > + let g:ctrlp_buftag_ctags_bin = '' +< + + *'g:ctrlp_buftag_systemenc'* +Match this with your OS's encoding (not Vim's). The default value mirrors Vim's +global |'encoding'| option: > + let g:ctrlp_buftag_systemenc = &encoding +< + + *'g:ctrlp_buftag_types'* +Use this to set the arguments for ctags, jsctags... for a given filetype: > + let g:ctrlp_buftag_types = '' +< +Examples: > + let g:ctrlp_buftag_types = { + \ 'erlang' : '--language-force=erlang --erlang-types=drmf', + \ 'javascript' : { + \ 'bin': 'jsctags', + \ 'args': '-f -', + \ }, + \ } +< + +=============================================================================== +CUSTOMIZATION *ctrlp-customization* + +Highlighting:~ + * For the CtrlP buffer: + CtrlPNoEntries : the message when no match is found (Error) + CtrlPMatch : the matched pattern (Identifier) + CtrlPLinePre : the line prefix '>' in the match window + CtrlPPrtBase : the prompt's base (Comment) + CtrlPPrtText : the prompt's text (|hl-Normal|) + CtrlPPrtCursor : the prompt's cursor when moving over the text (Constant) + + * In extensions: + CtrlPTabExtra : the part of each line that's not matched against (Comment) + CtrlPBufName : the buffer name an entry belongs to (|hl-Directory|) + CtrlPTagKind : the kind of the tag in buffer-tag mode (|hl-Title|) + CtrlPqfLineCol : the line and column numbers in quickfix mode (Comment) + CtrlPUndoT : the elapsed time in undo mode (|hl-Directory|) + CtrlPUndoBr : the square brackets [] in undo mode (Comment) + CtrlPUndoNr : the undo number inside [] in undo mode (String) + CtrlPUndoSv : the point where the file was saved (Comment) + CtrlPUndoPo : the current position in the undo tree (|hl-Title|) + CtrlPBookmark : the name of the bookmark (Identifier) + +Statuslines:~ + * Highlight groups: + CtrlPMode1 : 'file' or 'path' or 'line', and the current mode (Character) + CtrlPMode2 : 'prt' or 'win', 'regex', the working directory (|hl-LineNr|) + CtrlPStats : the scanning status (Function) + + For rebuilding the statuslines, see |g:ctrlp_status_func|. + +=============================================================================== +MISCELLANEOUS CONFIGS *ctrlp-miscellaneous-configs* + +* Using |wildignore| for |g:ctrlp_user_command|: +> + function! s:wig2cmd() + " Change wildignore into space or | separated groups + " e.g. .aux .out .toc .jpg .bmp .gif + " or .aux$\|.out$\|.toc$\|.jpg$\|.bmp$\|.gif$ + let pats = ['[*\/]*\([?_.0-9A-Za-z]\+\)\([*\/]*\)\(\\\@) + +* A standalone function to set the working directory to the project's root, or + to the parent directory of the current file if a root can't be found: +> + function! s:setcwd() + let cph = expand('%:p:h', 1) + if cph =~ '^.\+://' | retu | en + for mkr in ['.git/', '.hg/', '.svn/', '.bzr/', '_darcs/', '.vimprojects'] + let wd = call('find'.(mkr =~ '/$' ? 'dir' : 'file'), [mkr, cph.';']) + if wd != '' | let &acd = 0 | brea | en + endfo + exe 'lc!' fnameescape(wd == '' ? cph : substitute(wd, mkr.'$', '.', '')) + endfunction + + autocmd BufEnter * call s:setcwd() +< +(requires Vim 7.1.299+) + +* Using a |count| to invoke different commands using the same mapping: +> + let g:ctrlp_cmd = 'exe "CtrlP".get(["", "Buffer", "MRU"], v:count)' +< + +=============================================================================== +CREDITS *ctrlp-credits* + +Developed by Kien Nguyen . Distributed under Vim's |license|. + +Project's homepage: http://kien.github.com/ctrlp.vim +Git repository: https://github.com/kien/ctrlp.vim +Mercurial repository: https://bitbucket.org/kien/ctrlp.vim + +------------------------------------------------------------------------------- +Thanks to everyone that has submitted ideas, bug reports or helped debugging on +gibhub, bitbucket, and through email. + +Special thanks:~ + + * Woojong Koh + * Simon Ruderich + * Yasuhiro Matsumoto + * Ken Earley + * Kyo Nagashima + * Zak Johnson + * Diego Viola + * Piet Delport + * Thibault Duplessis + * Kent Sibilev + * Tacahiroy + * Luca Pette + * Seth Fowler + * Lowe Thiderman + * Christopher Fredén + * Zahary Karadjov + * Jo De Boeck + * Rudi Grinberg + * Timothy Mellor + +=============================================================================== +CHANGELOG *ctrlp-changelog* + + + Combine *g:ctrlp_match_window_bottom* *g:ctrlp_match_window_reversed* and + *g:ctrlp_max_height* into |g:ctrlp_match_window|. + + New option: |g:ctrlp_match_window|. + +Before 2012/11/30~ + + + New options: |g:ctrlp_abbrev|, + |g:ctrlp_key_loop|, + |g:ctrlp_open_func|, + |g:ctrlp_tabpage_position|, + |g:ctrlp_mruf_save_on_update| + + Rename: + *g:ctrlp_dotfiles* -> |g:ctrlp_show_hidden|. + + Change |g:ctrlp_switch_buffer|'s and |g:ctrlp_working_path_mode|'s type + (old values still work). + + New key for |g:ctrlp_user_command| when it's a Dictionary: 'ignore'. + +Before 2012/06/15~ + + + New value for |g:ctrlp_follow_symlinks|: 2. + + New value for |g:ctrlp_open_multiple_files|: 'j'. + + Allow using , , to open files marked by . + + Extend '..' (|ctrlp-input-formats| (d)) + + New input format: '@cd' (|ctrlp-input-formats| (d)) + +Before 2012/04/30~ + + + New option: |g:ctrlp_mruf_default_order| + + New feature: Bookmarked directories extension. + + New commands: |:CtrlPBookmarkDir| + |:CtrlPBookmarkDirAdd| + +Before 2012/04/15~ + + + New option: |g:ctrlp_buffer_func|, callback functions for CtrlP buffer. + + Remove: g:ctrlp_mruf_last_entered, make it a default for MRU mode. + + New commands: |:CtrlPLastMode|, open CtrlP in the last mode used. + |:CtrlPMixed|, search in files, buffers and MRU files. + +Before 2012/03/31~ + + + New options: |g:ctrlp_default_input|, default input when entering CtrlP. + |g:ctrlp_match_func|, allow using a custom fuzzy matcher. + + Rename: + *ClearCtrlPCache* -> |CtrlPClearCache| + *ClearAllCtrlPCaches* -> |CtrlPClearAllCaches| + *ResetCtrlP* -> |CtrlPReload| + +Before 2012/03/02~ + + + Rename: + *g:ctrlp_regexp_search* -> |g:ctrlp_regexp|, + *g:ctrlp_dont_split* -> |g:ctrlp_reuse_window|, + *g:ctrlp_jump_to_buffer* -> |g:ctrlp_switch_buffer|. + + Rename and tweak: + *g:ctrlp_open_multi* -> |g:ctrlp_open_multiple_files|. + + Deprecate *g:ctrlp_highlight_match* + + Extend |g:ctrlp_user_command| to support multiple commands. + + New option: |g:ctrlp_mruf_last_entered| change MRU to Recently-Entered. + +Before 2012/01/15~ + + + New mapping: Switch and . is now used for completion + of directory names under the current working directory. + + New options: |g:ctrlp_arg_map| for , to accept an argument. + |g:ctrlp_status_func| custom statusline. + |g:ctrlp_mruf_relative| show only MRU files inside cwd. + + Extend g:ctrlp_open_multi with new optional values: tr, hr, vr. + + Extend |g:ctrlp_custom_ignore| to specifically filter dir, file and link. + +Before 2012/01/05~ + + + New feature: Buffer Tag extension. + + New commands: |:CtrlPBufTag|, |:CtrlPBufTagAll|. + + New options: |g:ctrlp_cmd|, + |g:ctrlp_custom_ignore| + +Before 2011/11/30~ + + + New features: Tag, Quickfix and Directory extensions. + + New commands: |:CtrlPTag|, |:CtrlPQuickfix|, |:CtrlPDir|. + + New options: |g:ctrlp_use_migemo|, + |g:ctrlp_lazy_update|, + |g:ctrlp_follow_symlinks| + +Before 2011/11/13~ + + + New special input: '/' and '\' find root (|ctrlp-input-formats| (e)) + + Remove ctrlp#SetWorkingPath(). + + Remove *g:ctrlp_mru_files* and make MRU mode permanent. + + Extend g:ctrlp_open_multi, add new ways to open files. + + New option: g:ctrlp_dont_split, + |g:ctrlp_mruf_case_sensitive| + +Before 2011/10/30~ + + + New feature: Support for custom extensions. + also removes non-existent files from MRU list. + + New option: g:ctrlp_jump_to_buffer + +Before 2011/10/12~ + + + New features: Open multiple files. + Pass Vim's |++opt| and |+cmd| to the opening file + (|ctrlp-input-formats| (c)) + Auto-complete each dir for |:CtrlP| [starting-directory] + + New mappings: mark/unmark a file to be opened with . + open all marked files. + + New option: g:ctrlp_open_multi + + Remove *g:ctrlp_persistent_input* *g:ctrlp_live_update* and . + +Before 2011/09/29~ + + + New mappings: , next/prev string in the input history. + create a new file and its parent dirs. + + New options: |g:ctrlp_open_new_file|, + |g:ctrlp_max_history| + + Added a new open-in-horizontal-split mapping: + +Before 2011/09/19~ + + + New command: ResetCtrlP + + New options: |g:ctrlp_max_files|, + |g:ctrlp_max_depth|, + g:ctrlp_live_update + + New mapping: + +Before 2011/09/12~ + + + Ability to cycle through matched lines in the match window. + + Extend the behavior of g:ctrlp_persistent_input + + Extend the behavior of |:CtrlP| + + New options: |g:ctrlp_dotfiles|, + |g:ctrlp_clear_cache_on_exit|, + g:ctrlp_highlight_match, + |g:ctrlp_user_command| + + New special input: '..' (|ctrlp-input-formats| (d)) + + New mapping: . + + New commands: |:CtrlPCurWD|, + |:CtrlPCurFile|, + |:CtrlPRoot| + + + New feature: Search in most recently used (MRU) files + + New mapping: . + + Extended the behavior of . + + New options: g:ctrlp_mru_files, + |g:ctrlp_mruf_max|, + |g:ctrlp_mruf_exclude|, + |g:ctrlp_mruf_include| + + New command: |:CtrlPMRU| + +First public release: 2011/09/06~ + +=============================================================================== +vim:ft=help:et:ts=2:sw=2:sts=2:norl diff --git a/vim-plugins/bundle/ctrlp.vim/doc/tags b/vim-plugins/bundle/ctrlp.vim/doc/tags new file mode 100644 index 0000000..e1404fd --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/doc/tags @@ -0,0 +1,100 @@ +'ctrl-p' ctrlp.txt /*'ctrl-p'* +'ctrlp' ctrlp.txt /*'ctrlp'* +'ctrlp-' ctrlp.txt /*'ctrlp-'* +'ctrlp-autocompletion' ctrlp.txt /*'ctrlp-autocompletion'* +'ctrlp-fullregexp' ctrlp.txt /*'ctrlp-fullregexp'* +'ctrlp-pasting' ctrlp.txt /*'ctrlp-pasting'* +'ctrlp-wildignore' ctrlp.txt /*'ctrlp-wildignore'* +'g:ctrlp_abbrev' ctrlp.txt /*'g:ctrlp_abbrev'* +'g:ctrlp_arg_map' ctrlp.txt /*'g:ctrlp_arg_map'* +'g:ctrlp_buffer_func' ctrlp.txt /*'g:ctrlp_buffer_func'* +'g:ctrlp_buftag_ctags_bin' ctrlp.txt /*'g:ctrlp_buftag_ctags_bin'* +'g:ctrlp_buftag_systemenc' ctrlp.txt /*'g:ctrlp_buftag_systemenc'* +'g:ctrlp_buftag_types' ctrlp.txt /*'g:ctrlp_buftag_types'* +'g:ctrlp_by_filename' ctrlp.txt /*'g:ctrlp_by_filename'* +'g:ctrlp_cache_dir' ctrlp.txt /*'g:ctrlp_cache_dir'* +'g:ctrlp_clear_cache_on_exit' ctrlp.txt /*'g:ctrlp_clear_cache_on_exit'* +'g:ctrlp_cmd' ctrlp.txt /*'g:ctrlp_cmd'* +'g:ctrlp_custom_ignore' ctrlp.txt /*'g:ctrlp_custom_ignore'* +'g:ctrlp_default_input' ctrlp.txt /*'g:ctrlp_default_input'* +'g:ctrlp_follow_symlinks' ctrlp.txt /*'g:ctrlp_follow_symlinks'* +'g:ctrlp_key_loop' ctrlp.txt /*'g:ctrlp_key_loop'* +'g:ctrlp_lazy_update' ctrlp.txt /*'g:ctrlp_lazy_update'* +'g:ctrlp_map' ctrlp.txt /*'g:ctrlp_map'* +'g:ctrlp_match_func' ctrlp.txt /*'g:ctrlp_match_func'* +'g:ctrlp_match_window' ctrlp.txt /*'g:ctrlp_match_window'* +'g:ctrlp_max_depth' ctrlp.txt /*'g:ctrlp_max_depth'* +'g:ctrlp_max_files' ctrlp.txt /*'g:ctrlp_max_files'* +'g:ctrlp_max_history' ctrlp.txt /*'g:ctrlp_max_history'* +'g:ctrlp_mruf_case_sensitive' ctrlp.txt /*'g:ctrlp_mruf_case_sensitive'* +'g:ctrlp_mruf_default_order' ctrlp.txt /*'g:ctrlp_mruf_default_order'* +'g:ctrlp_mruf_exclude' ctrlp.txt /*'g:ctrlp_mruf_exclude'* +'g:ctrlp_mruf_include' ctrlp.txt /*'g:ctrlp_mruf_include'* +'g:ctrlp_mruf_max' ctrlp.txt /*'g:ctrlp_mruf_max'* +'g:ctrlp_mruf_relative' ctrlp.txt /*'g:ctrlp_mruf_relative'* +'g:ctrlp_mruf_save_on_update' ctrlp.txt /*'g:ctrlp_mruf_save_on_update'* +'g:ctrlp_open_func' ctrlp.txt /*'g:ctrlp_open_func'* +'g:ctrlp_open_multiple_files' ctrlp.txt /*'g:ctrlp_open_multiple_files'* +'g:ctrlp_open_new_file' ctrlp.txt /*'g:ctrlp_open_new_file'* +'g:ctrlp_prompt_mappings' ctrlp.txt /*'g:ctrlp_prompt_mappings'* +'g:ctrlp_regexp' ctrlp.txt /*'g:ctrlp_regexp'* +'g:ctrlp_reuse_window' ctrlp.txt /*'g:ctrlp_reuse_window'* +'g:ctrlp_root_markers' ctrlp.txt /*'g:ctrlp_root_markers'* +'g:ctrlp_show_hidden' ctrlp.txt /*'g:ctrlp_show_hidden'* +'g:ctrlp_status_func' ctrlp.txt /*'g:ctrlp_status_func'* +'g:ctrlp_switch_buffer' ctrlp.txt /*'g:ctrlp_switch_buffer'* +'g:ctrlp_tabpage_position' ctrlp.txt /*'g:ctrlp_tabpage_position'* +'g:ctrlp_use_caching' ctrlp.txt /*'g:ctrlp_use_caching'* +'g:ctrlp_use_migemo' ctrlp.txt /*'g:ctrlp_use_migemo'* +'g:ctrlp_user_command' ctrlp.txt /*'g:ctrlp_user_command'* +'g:ctrlp_working_path_mode' ctrlp.txt /*'g:ctrlp_working_path_mode'* +'g:loaded_ctrlp' ctrlp.txt /*'g:loaded_ctrlp'* +:CtrlP ctrlp.txt /*:CtrlP* +:CtrlPBookmarkDir ctrlp.txt /*:CtrlPBookmarkDir* +:CtrlPBookmarkDirAdd ctrlp.txt /*:CtrlPBookmarkDirAdd* +:CtrlPBufTag ctrlp.txt /*:CtrlPBufTag* +:CtrlPBufTagAll ctrlp.txt /*:CtrlPBufTagAll* +:CtrlPBuffer ctrlp.txt /*:CtrlPBuffer* +:CtrlPChange ctrlp.txt /*:CtrlPChange* +:CtrlPChangeAll ctrlp.txt /*:CtrlPChangeAll* +:CtrlPClearAllCaches ctrlp.txt /*:CtrlPClearAllCaches* +:CtrlPClearCache ctrlp.txt /*:CtrlPClearCache* +:CtrlPDir ctrlp.txt /*:CtrlPDir* +:CtrlPLastMode ctrlp.txt /*:CtrlPLastMode* +:CtrlPLine ctrlp.txt /*:CtrlPLine* +:CtrlPMRU ctrlp.txt /*:CtrlPMRU* +:CtrlPMixed ctrlp.txt /*:CtrlPMixed* +:CtrlPQuickfix ctrlp.txt /*:CtrlPQuickfix* +:CtrlPRTS ctrlp.txt /*:CtrlPRTS* +:CtrlPRoot ctrlp.txt /*:CtrlPRoot* +:CtrlPTag ctrlp.txt /*:CtrlPTag* +:CtrlPUndo ctrlp.txt /*:CtrlPUndo* +ClearAllCtrlPCaches ctrlp.txt /*ClearAllCtrlPCaches* +ClearCtrlPCache ctrlp.txt /*ClearCtrlPCache* +ControlP ctrlp.txt /*ControlP* +CtrlP ctrlp.txt /*CtrlP* +ResetCtrlP ctrlp.txt /*ResetCtrlP* +ctrlp-changelog ctrlp.txt /*ctrlp-changelog* +ctrlp-commands ctrlp.txt /*ctrlp-commands* +ctrlp-contents ctrlp.txt /*ctrlp-contents* +ctrlp-credits ctrlp.txt /*ctrlp-credits* +ctrlp-customization ctrlp.txt /*ctrlp-customization* +ctrlp-extensions ctrlp.txt /*ctrlp-extensions* +ctrlp-input-formats ctrlp.txt /*ctrlp-input-formats* +ctrlp-intro ctrlp.txt /*ctrlp-intro* +ctrlp-mappings ctrlp.txt /*ctrlp-mappings* +ctrlp-miscellaneous-configs ctrlp.txt /*ctrlp-miscellaneous-configs* +ctrlp-options ctrlp.txt /*ctrlp-options* +ctrlp.txt ctrlp.txt /*ctrlp.txt* +g:ctrlp_dont_split ctrlp.txt /*g:ctrlp_dont_split* +g:ctrlp_dotfiles ctrlp.txt /*g:ctrlp_dotfiles* +g:ctrlp_highlight_match ctrlp.txt /*g:ctrlp_highlight_match* +g:ctrlp_jump_to_buffer ctrlp.txt /*g:ctrlp_jump_to_buffer* +g:ctrlp_live_update ctrlp.txt /*g:ctrlp_live_update* +g:ctrlp_match_window_bottom ctrlp.txt /*g:ctrlp_match_window_bottom* +g:ctrlp_match_window_reversed ctrlp.txt /*g:ctrlp_match_window_reversed* +g:ctrlp_max_height ctrlp.txt /*g:ctrlp_max_height* +g:ctrlp_mru_files ctrlp.txt /*g:ctrlp_mru_files* +g:ctrlp_open_multi ctrlp.txt /*g:ctrlp_open_multi* +g:ctrlp_persistent_input ctrlp.txt /*g:ctrlp_persistent_input* +g:ctrlp_regexp_search ctrlp.txt /*g:ctrlp_regexp_search* diff --git a/vim-plugins/bundle/ctrlp.vim/plugin/ctrlp.vim b/vim-plugins/bundle/ctrlp.vim/plugin/ctrlp.vim new file mode 100644 index 0000000..c7b8fa3 --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/plugin/ctrlp.vim @@ -0,0 +1,68 @@ +" ============================================================================= +" File: plugin/ctrlp.vim +" Description: Fuzzy file, buffer, mru, tag, etc finder. +" Author: Kien Nguyen +" ============================================================================= +" GetLatestVimScripts: 3736 1 :AutoInstall: ctrlp.zip + +if ( exists('g:loaded_ctrlp') && g:loaded_ctrlp ) || v:version < 700 || &cp + fini +en +let g:loaded_ctrlp = 1 + +let [g:ctrlp_lines, g:ctrlp_allfiles, g:ctrlp_alltags, g:ctrlp_alldirs, + \ g:ctrlp_allmixes, g:ctrlp_buftags, g:ctrlp_ext_vars, g:ctrlp_builtins] + \ = [[], [], [], [], {}, {}, [], 2] + +if !exists('g:ctrlp_map') | let g:ctrlp_map = '' | en +if !exists('g:ctrlp_cmd') | let g:ctrlp_cmd = 'CtrlP' | en + +com! -n=? -com=dir CtrlP cal ctrlp#init(0, { 'dir': }) +com! -n=? -com=dir CtrlPMRUFiles cal ctrlp#init(2, { 'dir': }) + +com! -bar CtrlPBuffer cal ctrlp#init(1) +com! -n=? CtrlPLastMode cal ctrlp#init(-1, { 'args': }) + +com! -bar CtrlPClearCache cal ctrlp#clr() +com! -bar CtrlPClearAllCaches cal ctrlp#clra() + +com! -bar ClearCtrlPCache cal ctrlp#clr() +com! -bar ClearAllCtrlPCaches cal ctrlp#clra() + +com! -bar CtrlPCurWD cal ctrlp#init(0, { 'mode': '' }) +com! -bar CtrlPCurFile cal ctrlp#init(0, { 'mode': 'c' }) +com! -bar CtrlPRoot cal ctrlp#init(0, { 'mode': 'r' }) + +if g:ctrlp_map != '' && !hasmapto(':'.g:ctrlp_cmd.'', 'n') + exe 'nn ' g:ctrlp_map ':'.g:ctrlp_cmd.'' +en + +cal ctrlp#mrufiles#init() + +com! -bar CtrlPTag cal ctrlp#init(ctrlp#tag#id()) +com! -bar CtrlPQuickfix cal ctrlp#init(ctrlp#quickfix#id()) + +com! -n=? -com=dir CtrlPDir + \ cal ctrlp#init(ctrlp#dir#id(), { 'dir': }) + +com! -n=? -com=buffer CtrlPBufTag + \ cal ctrlp#init(ctrlp#buffertag#cmd(0, )) + +com! -bar CtrlPBufTagAll cal ctrlp#init(ctrlp#buffertag#cmd(1)) +com! -bar CtrlPRTS cal ctrlp#init(ctrlp#rtscript#id()) +com! -bar CtrlPUndo cal ctrlp#init(ctrlp#undo#id()) + +com! -n=? -com=buffer CtrlPLine + \ cal ctrlp#init(ctrlp#line#cmd(1, )) + +com! -n=? -com=buffer CtrlPChange + \ cal ctrlp#init(ctrlp#changes#cmd(0, )) + +com! -bar CtrlPChangeAll cal ctrlp#init(ctrlp#changes#cmd(1)) +com! -bar CtrlPMixed cal ctrlp#init(ctrlp#mixed#id()) +com! -bar CtrlPBookmarkDir cal ctrlp#init(ctrlp#bookmarkdir#id()) + +com! -n=? -com=dir CtrlPBookmarkDirAdd + \ cal ctrlp#call('ctrlp#bookmarkdir#add', ) + +" vim:ts=2:sw=2:sts=2 diff --git a/vim-plugins/bundle/ctrlp.vim/readme.md b/vim-plugins/bundle/ctrlp.vim/readme.md new file mode 100644 index 0000000..d495fff --- /dev/null +++ b/vim-plugins/bundle/ctrlp.vim/readme.md @@ -0,0 +1,91 @@ +#**This project is unmaintained** +**You should use [this fork](https://github.com/ctrlpvim/ctrlp.vim) instead.** + +# ctrlp.vim +Full path fuzzy __file__, __buffer__, __mru__, __tag__, __...__ finder for Vim. + +* Written in pure Vimscript for MacVim, gVim and Vim 7.0+. +* Full support for Vim's regexp as search patterns. +* Built-in Most Recently Used (MRU) files monitoring. +* Built-in project's root finder. +* Open multiple files at once. +* Create new files and directories. +* [Extensible][2]. + +![ctrlp][1] + +## Basic Usage +* Run `:CtrlP` or `:CtrlP [starting-directory]` to invoke CtrlP in find file mode. +* Run `:CtrlPBuffer` or `:CtrlPMRU` to invoke CtrlP in find buffer or find MRU file mode. +* Run `:CtrlPMixed` to search in Files, Buffers and MRU files at the same time. + +Check `:help ctrlp-commands` and `:help ctrlp-extensions` for other commands. + +##### Once CtrlP is open: +* Press `` to purge the cache for the current directory to get new files, remove deleted files and apply new ignore options. +* Press `` and `` to cycle between modes. +* Press `` to switch to filename only search instead of full path. +* Press `` to switch to regexp mode. +* Use ``, `` or the arrow keys to navigate the result list. +* Use `` or ``, `` to open the selected entry in a new tab or in a new split. +* Use ``, `` to select the next/previous string in the prompt's history. +* Use `` to create a new file and its parent directories. +* Use `` to mark/unmark multiple files and `` to open them. + +Run `:help ctrlp-mappings` or submit `?` in CtrlP for more mapping help. + +* Submit two or more dots `..` to go up the directory tree by one or multiple levels. +* End the input string with a colon `:` followed by a command to execute it on the opening file(s): +Use `:25` to jump to line 25. +Use `:diffthis` when opening multiple files to run `:diffthis` on the first 4 files. + +## Basic Options +* Change the default mapping and the default command to invoke CtrlP: + + ```vim + let g:ctrlp_map = '' + let g:ctrlp_cmd = 'CtrlP' + ``` + +* When invoked, unless a starting directory is specified, CtrlP will set its local working directory according to this variable: + + ```vim + let g:ctrlp_working_path_mode = 'ra' + ``` + + `'c'` - the directory of the current file. + `'r'` - the nearest ancestor that contains one of these directories or files: `.git` `.hg` `.svn` `.bzr` `_darcs` + `'a'` - like c, but only if the current working directory outside of CtrlP is not a direct ancestor of the directory of the current file. + `0` or `''` (empty string) - disable this feature. + + Define additional root markers with the `g:ctrlp_root_markers` option. + +* Exclude files and directories using Vim's `wildignore` and CtrlP's own `g:ctrlp_custom_ignore`: + + ```vim + set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux + set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe " Windows + + let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' + let g:ctrlp_custom_ignore = { + \ 'dir': '\v[\/]\.(git|hg|svn)$', + \ 'file': '\v\.(exe|so|dll)$', + \ 'link': 'some_bad_symbolic_links', + \ } + ``` + +* Use a custom file listing command: + + ```vim + let g:ctrlp_user_command = 'find %s -type f' " MacOSX/Linux + let g:ctrlp_user_command = 'dir %s /-n /b /s /a-d' " Windows + ``` + +Check `:help ctrlp-options` for other options. + +## Installation +Use your favorite method or check the homepage for a [quick installation guide][3]. + +[1]: http://i.imgur.com/yIynr.png +[2]: https://github.com/kien/ctrlp.vim/tree/extensions +[3]: http://kien.github.com/ctrlp.vim#installation diff --git a/vim-plugins/bundle/emmet-vim/Makefile b/vim-plugins/bundle/emmet-vim/Makefile new file mode 100644 index 0000000..1c06023 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/Makefile @@ -0,0 +1,11 @@ +all : emmet-vim.zip + +remove-zip: + -rm doc/tags + -rm emmet-vim.zip + +emmet-vim.zip: remove-zip + zip -r emmet-vim.zip autoload plugin doc + +release: emmet-vim.zip + vimup update-script emmet.vim diff --git a/vim-plugins/bundle/emmet-vim/README.mkd b/vim-plugins/bundle/emmet-vim/README.mkd new file mode 100644 index 0000000..8bb52b2 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/README.mkd @@ -0,0 +1,149 @@ +# Emmet-vim + +[emmet-vim](http://mattn.github.com/emmet-vim) is a vim plug-in +which provides support for expanding abbreviations similar to +[emmet](http://emmet.io/). + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/mattn/emmet-vim/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + +![](https://raw.githubusercontent.com/mattn/emmet-vim/master/doc/screenshot.gif) + +## Installation + +[Download zip file](http://www.vim.org/scripts/script.php?script_id=2981): + + cd ~/.vim + unzip emmet-vim.zip + +To install using pathogen.vim: + + cd ~/.vim/bundle + git clone https://github.com/mattn/emmet-vim.git + +To install using [Vundle](https://github.com/gmarik/vundle): + + " add this line to your .vimrc file + Plugin 'mattn/emmet-vim' + +To checkout the source from repository: + + cd ~/.vim/bundle + git clone https://github.com/mattn/emmet-vim.git + +or: + + git clone https://github.com/mattn/emmet-vim.git + cd emmet-vim + cp plugin/emmet.vim ~/.vim/plugin/ + cp autoload/emmet.vim ~/.vim/autoload/ + cp -a autoload/emmet ~/.vim/autoload/ + + +## Quick Tutorial + +Open or create a New File: + + vim index.html + +Type ("\_" is the cursor position): + + html:5_ + +Then type `,` (Ctrly,), and you should see: + +```html + + + + + + + + _ + + +``` + +[More Tutorials](https://raw.github.com/mattn/emmet-vim/master/TUTORIAL) + + +## Enable in different mode + +If you don't want to enable emmet in all modes, +you can use set these options in `vimrc`: + +```vim +let g:user_emmet_mode='n' "only enable normal mode functions. +let g:user_emmet_mode='inv' "enable all functions, which is equal to +let g:user_emmet_mode='a' "enable all function in all mode. +``` + +## Enable just for html/css + +```vim +let g:user_emmet_install_global = 0 +autocmd FileType html,css EmmetInstall +``` + +## Redefine trigger key +To remap the default `` leader: + +```vim +let g:user_emmet_leader_key='' +``` + +Note that the trailing `,` still needs to be entered, so the new keymap would be `,`. + +## Adding custom snippets +If you have installed the [web-api](https://github.com/mattn/webapi-vim) for **emmet-vim** you can also add your own snippets using a custom **snippets.json** file. + +Once you have installed the [web-api](https://github.com/mattn/webapi-vim) add this line to your **.vimrc**: +``` +let g:user_emmet_settings = webapi#json#decode(join(readfile(expand('~/.snippets_custom.json')), "\n")) +``` +You can change the **path** to your **snippets_custom.json** according to your preferences. + +[Here](http://docs.emmet.io/customization/snippets/) you can find instructions about creating your customized **snippets.json** file. + +## Project Authors + +[Yasuhiro Matsumoto](http://mattn.kaoriya.net/) + +## Links + +### Emmet official site: + +* + +### zen-coding official site: + +* + +### emmet.vim: + +* + +### development repository: + +* + +### my blog posts about zencoding-vim: + +* + +* + +### Japanese blog posts about zencoding-vim: + +* + +* + +* + +* + +### A Chinese translation of the tutorial: + +* + diff --git a/vim-plugins/bundle/emmet-vim/TODO b/vim-plugins/bundle/emmet-vim/TODO new file mode 100644 index 0000000..e69de29 diff --git a/vim-plugins/bundle/emmet-vim/TUTORIAL b/vim-plugins/bundle/emmet-vim/TUTORIAL new file mode 100644 index 0000000..7d4ba61 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/TUTORIAL @@ -0,0 +1,212 @@ +Tutorial for Emmet.vim + + mattn + +1. Expand an Abbreviation + + Type the abbreviation as 'div>p#foo$*3>a' and type ','. + --------------------- +
+

+ +

+

+ +

+

+ +

+
+ --------------------- + +2. Wrap with an Abbreviation + + Write as below. + --------------------- + test1 + test2 + test3 + --------------------- + Then do visual select(line wise) and type ','. + Once you get to the 'Tag:' prompt, type 'ul>li*'. + --------------------- +
    +
  • test1
  • +
  • test2
  • +
  • test3
  • +
+ --------------------- + + If you type a tag, such as 'blockquote', then you'll see the following: + --------------------- +
+ test1 + test2 + test3 +
+ --------------------- + +3. Balance a Tag Inward + + type 'd' in insert mode. + +4. Balance a Tag Outward + + type 'D' in insert mode. + +5. Go to the Next Edit Point + + type 'n' in insert mode. + +6. Go to the Previous Edit Point + + type 'N' in insert mode. + +7. Update an ’s Size + + Move cursor to the img tag. + --------------------- + + --------------------- + Type 'i' on img tag + --------------------- + + --------------------- + +8. Merge Lines + + select the lines, which include '
  • ' + --------------------- +
      +
    • +
    • +
    • +
    + --------------------- + and then type 'm' + --------------------- +
      +
    • +
    + --------------------- + +9. Remove a Tag + + Move cursor in block + --------------------- + + --------------------- + Type 'k' in insert mode. + --------------------- +
    + +
    + --------------------- + + And type 'k' in there again. + --------------------- + + --------------------- + +10. Split/Join Tag + + Move the cursor inside block + --------------------- +
    + cursor is here +
    + --------------------- + Type 'j' in insert mode. + --------------------- +
    + --------------------- + + And then type 'j' in there again. + --------------------- +
    +
    + --------------------- + +11. Toggle Comment + + Move cursor inside the block + --------------------- +
    + hello world +
    + --------------------- + Type '/' in insert mode. + --------------------- + + --------------------- + Type '/' in there again. + --------------------- +
    + hello world +
    + --------------------- + +12. Make an anchor from a URL + + Move cursor to URL + --------------------- + http://www.google.com/ + --------------------- + Type 'a' + --------------------- + Google + --------------------- + +13. Make some quoted text from a URL + + Move cursor to the URL + --------------------- + http://github.com/ + --------------------- + Type 'A' + --------------------- +
    + Secure source code hosting and collaborative development - GitHub
    +

    How does it work? Get up and running in seconds by forking a project, pushing an existing repository...

    + http://github.com/ +
    + --------------------- + +14. Installing emmet.vim for the language you are using: + + # cd ~/.vim + # unzip emmet-vim.zip + + Or if you are using pathogen.vim: + + # cd ~/.vim/bundle # or make directory + # unzip /path/to/emmet-vim.zip + + Or if you get the sources from the repository: + + # cd ~/.vim/bundle # or make directory + # git clone http://github.com/mattn/emmet-vim.git + +15. Enable emmet.vim for the language you using. + + You can customize the behavior of the languages you are using. + + --------------------- + # cat >> ~/.vimrc + let g:user_emmet_settings = { + \ 'php' : { + \ 'extends' : 'html', + \ 'filters' : 'c', + \ }, + \ 'xml' : { + \ 'extends' : 'html', + \ }, + \ 'haml' : { + \ 'extends' : 'html', + \ }, + \} + --------------------- diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet.vim new file mode 100644 index 0000000..e344486 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet.vim @@ -0,0 +1,2033 @@ +"============================================================================= +" emmet.vim +" Author: Yasuhiro Matsumoto +" Last Change: 26-Jul-2015. + +let s:save_cpo = &cpoptions +set cpoptions&vim + +let s:filtermx = '|\(\%(bem\|html\|haml\|slim\|e\|c\|s\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$' + +function! emmet#getExpandos(type, key) abort + let expandos = emmet#getResource(a:type, 'expandos', {}) + if has_key(expandos, a:key) + return expandos[a:key] + endif + return a:key +endfunction + +function! emmet#splitFilterArg(filters) abort + for f in a:filters + if f =~# '^/' + return f[1:] + endif + endfor + return '' +endfunction + +function! emmet#useFilter(filters, filter) abort + for f in a:filters + if a:filter ==# '/' && f =~# '^/' + return 1 + elseif f ==# a:filter + return 1 + endif + endfor + return 0 +endfunction + +function! emmet#getIndentation(...) abort + if a:0 > 0 + let type = a:1 + else + let type = emmet#getFileType() + endif + if has_key(s:emmet_settings, type) && has_key(s:emmet_settings[type], 'indentation') + let indent = s:emmet_settings[type].indentation + elseif has_key(s:emmet_settings, 'indentation') + let indent = s:emmet_settings.indentation + elseif has_key(s:emmet_settings.variables, 'indentation') + let indent = s:emmet_settings.variables.indentation + else + let sw = exists('*shiftwidth') ? shiftwidth() : &l:shiftwidth + let indent = (&l:expandtab || &l:tabstop !=# sw) ? repeat(' ', sw) : "\t" + endif + return indent +endfunction + +function! emmet#getBaseType(type) abort + if !has_key(s:emmet_settings, a:type) + return '' + endif + if !has_key(s:emmet_settings[a:type], 'extends') + return a:type + endif + let extends = s:emmet_settings[a:type].extends + if type(extends) ==# 1 + let tmp = split(extends, '\s*,\s*') + let ext = tmp[0] + else + let ext = extends[0] + endif + if a:type !=# ext + return emmet#getBaseType(ext) + endif + return '' +endfunction + +function! emmet#isExtends(type, extend) abort + if a:type ==# a:extend + return 1 + endif + if !has_key(s:emmet_settings, a:type) + return 0 + endif + if !has_key(s:emmet_settings[a:type], 'extends') + return 0 + endif + let extends = s:emmet_settings[a:type].extends + if type(extends) ==# 1 + let tmp = split(extends, '\s*,\s*') + unlet! extends + let extends = tmp + endif + for ext in extends + if a:extend ==# ext + return 1 + endif + endfor + return 0 +endfunction + +function! emmet#parseIntoTree(abbr, type) abort + let abbr = a:abbr + let type = a:type + return emmet#lang#{emmet#lang#type(type)}#parseIntoTree(abbr, type) +endfunction + +function! emmet#expandAbbrIntelligent(feedkey) abort + if !emmet#isExpandable() + return a:feedkey + endif + return "\(emmet-expand-abbr)" +endfunction + +function! emmet#isExpandable() abort + let line = getline('.') + if col('.') < len(line) + let line = matchstr(line, '^\(.*\%'.col('.').'c\)') + endif + let part = matchstr(line, '\(\S.*\)$') + let type = emmet#getFileType() + let ftype = emmet#lang#exists(type) ? type : 'html' + let part = emmet#lang#{ftype}#findTokens(part) + return len(part) > 0 +endfunction + +function! emmet#mergeConfig(lhs, rhs) abort + let [lhs, rhs] = [a:lhs, a:rhs] + if type(lhs) ==# 3 + if type(rhs) ==# 3 + let lhs += rhs + if len(lhs) + call remove(lhs, 0, len(lhs)-1) + endif + for rhi in rhs + call add(lhs, rhs[rhi]) + endfor + elseif type(rhs) ==# 4 + let lhs += map(keys(rhs), '{v:val : rhs[v:val]}') + endif + elseif type(lhs) ==# 4 + if type(rhs) ==# 3 + for V in rhs + if type(V) != 4 + continue + endif + for k in keys(V) + let lhs[k] = V[k] + endfor + endfor + elseif type(rhs) ==# 4 + for key in keys(rhs) + if type(rhs[key]) ==# 3 + if !has_key(lhs, key) + let lhs[key] = [] + endif + if type(lhs[key]) == 3 + let lhs[key] += rhs[key] + elseif type(lhs[key]) == 4 + for k in keys(rhs[key]) + let lhs[key][k] = rhs[key][k] + endfor + endif + elseif type(rhs[key]) ==# 4 + if has_key(lhs, key) + call emmet#mergeConfig(lhs[key], rhs[key]) + else + let lhs[key] = rhs[key] + endif + else + let lhs[key] = rhs[key] + endif + endfor + endif + endif +endfunction + +function! emmet#newNode() abort + return { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'basevalue': 0, 'basedirect': 1, 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0, 'attrs_order': ['id', 'class'], 'block': 0, 'empty': 0 } +endfunction + +function! s:itemno(itemno, current) abort + let current = a:current + if current.basedirect > 0 + if current.basevalue ==# 0 + return a:itemno + else + return current.basevalue - 1 + a:itemno + endif + else + if current.basevalue ==# 0 + return current.multiplier - 1 - a:itemno + else + return current.multiplier + current.basevalue - 2 - a:itemno + endif + endif +endfunction + +function! emmet#toString(...) abort + let current = a:1 + if a:0 > 1 + let type = a:2 + else + let type = &filetype + endif + if len(type) ==# 0 | let type = 'html' | endif + if a:0 > 2 + let inline = a:3 + else + let inline = 0 + endif + if a:0 > 3 + if type(a:4) ==# 1 + let filters = split(a:4, '\s*,\s*') + else + let filters = a:4 + endif + else + let filters = ['html'] + endif + if a:0 > 4 + let group_itemno = a:5 + else + let group_itemno = 0 + endif + if a:0 > 5 + let indent = a:6 + else + let indent = '' + endif + + let dollar_expr = emmet#getResource(type, 'dollar_expr', 1) + let itemno = 0 + let str = '' + let rtype = emmet#lang#type(type) + while itemno < current.multiplier + if len(current.name) + if current.multiplier ==# 1 + let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(group_itemno, current), indent) + else + let inner = emmet#lang#{rtype}#toString(s:emmet_settings, current, type, inline, filters, s:itemno(itemno, current), indent) + endif + if current.multiplier > 1 + let inner = substitute(inner, '\$#', '$line'.(itemno+1).'$', 'g') + endif + let str .= inner + else + let snippet = current.snippet + if len(snippet) ==# 0 + let snippets = emmet#getResource(type, 'snippets', {}) + if !empty(snippets) && has_key(snippets, 'emmet_snippet') + let snippet = snippets['emmet_snippet'] + endif + endif + if len(snippet) > 0 + let tmp = snippet + let tmp = substitute(tmp, '\${emmet_name}', current.name, 'g') + let snippet_node = emmet#newNode() + let snippet_node.value = '{'.tmp.'}' + let snippet_node.important = current.important + let snippet_node.multiplier = current.multiplier + let str .= emmet#lang#{rtype}#toString(s:emmet_settings, snippet_node, type, inline, filters, s:itemno(group_itemno, current), indent) + if current.multiplier > 1 + let str .= "\n" + endif + else + if len(current.name) + let str .= current.name + endif + if len(current.value) + let text = current.value[1:-2] + if dollar_expr + " TODO: regexp engine specified + if exists('®expengine') + let text = substitute(text, '\%#=1\%(\\\)\@\ 0 + let key = get(matcharr, 1) + if key !~# '^\d\+:' + let key = substitute(key, '\\{', '{', 'g') + let key = substitute(key, '\\}', '}', 'g') + let value = emmet#getDollarValueByKey(key) + if type(value) ==# type('') + let expr = get(matcharr, 0) + call add(dollar_list, {'expr': expr, 'value': value}) + endif + endif + else + break + endif + let expand = substitute(expand, dollar_reg, '', '') + endwhile + return dollar_list +endfunction + +function! emmet#getDollarValueByKey(key) abort + let ret = 0 + let key = a:key + let ftsetting = get(s:emmet_settings, emmet#getFileType()) + if type(ftsetting) ==# 4 && has_key(ftsetting, key) + let V = get(ftsetting, key) + if type(V) ==# 1 | return V | endif + endif + if type(ret) !=# 1 && has_key(s:emmet_settings.variables, key) + let V = get(s:emmet_settings.variables, key) + if type(V) ==# 1 | return V | endif + endif + if has_key(s:emmet_settings, 'custom_expands') && type(s:emmet_settings['custom_expands']) ==# 4 + for k in keys(s:emmet_settings['custom_expands']) + if key =~# k + let V = get(s:emmet_settings['custom_expands'], k) + if type(V) ==# 1 | return V | endif + if type(V) ==# 2 | return V(key) | endif + endif + endfor + endif + return ret +endfunction + +function! emmet#reExpandDollarExpr(expand, times) abort + let expand = a:expand + let dollar_exprs = emmet#getDollarExprs(expand) + if len(dollar_exprs) > 0 + if a:times < 9 + for n in range(len(dollar_exprs)) + let pair = get(dollar_exprs, n) + let pat = get(pair, 'expr') + let sub = get(pair, 'value') + let expand = substitute(expand, pat, sub, '') + endfor + return emmet#reExpandDollarExpr(expand, a:times + 1) + endif + endif + return expand +endfunction + +function! emmet#expandDollarExpr(expand) abort + return emmet#reExpandDollarExpr(a:expand, 0) +endfunction + +function! emmet#expandCursorExpr(expand, mode) abort + let expand = a:expand + if expand !~# '\${cursor}' + if a:mode ==# 2 + let expand = '${cursor}' . expand + else + let expand .= '${cursor}' + endif + endif + let expand = substitute(expand, '\${\d\+:\?\([^}]\+\)}', '$select$$cursor$\1$select$', 'g') + let expand = substitute(expand, '\${\d\+}', '$select$$cursor$$select$', 'g') + let expand = substitute(expand, '\${cursor}', '$cursor$', '') + let expand = substitute(expand, '\${cursor}', '', 'g') + let expand = substitute(expand, '\${cursor}', '', 'g') + return expand +endfunction + +function! emmet#unescapeDollarExpr(expand) abort + return substitute(a:expand, '\\\$', '$', 'g') +endfunction + +function! emmet#expandAbbr(mode, abbr) range abort + let type = emmet#getFileType() + let rtype = emmet#lang#type(emmet#getFileType(1)) + let indent = emmet#getIndentation(type) + let expand = '' + let line = '' + let part = '' + let rest = '' + + let filters = emmet#getFilters(type) + if len(filters) ==# 0 + let filters = ['html'] + endif + + if a:mode ==# 2 + let leader = substitute(input('Tag: ', ''), '^\s*\(.*\)\s*$', '\1', 'g') + if len(leader) ==# 0 + return '' + endif + if leader =~# s:filtermx + let filters = map(split(matchstr(leader, s:filtermx)[1:], '\s*[^\\]\zs,\s*'), 'substitute(v:val, "\\\\\\\\zs.\\\\ze", "&", "g")') + let leader = substitute(leader, s:filtermx, '', '') + endif + if leader =~# '\*' + let query = substitute(leader, '*', '*' . (a:lastline - a:firstline + 1), '') + if query !~# '}\s*$' && query !~# '\$#' + let query .= '>{$#}' + endif + if emmet#useFilter(filters, '/') + let spl = emmet#splitFilterArg(filters) + let fline = getline(a:firstline) + let query = substitute(query, '>\{0,1}{\$#}\s*$', '{\\$column\\$}*' . len(split(fline, spl)), '') + else + let spl = '' + endif + let items = emmet#parseIntoTree(query, type).child + let itemno = 0 + for item in items + let inner = emmet#toString(item, type, 0, filters, 0, indent) + let inner = substitute(inner, '\$#', '$line'.(itemno*(a:lastline - a:firstline + 1)/len(items)+1).'$', 'g') + let expand .= inner + let itemno = itemno + 1 + endfor + if emmet#useFilter(filters, 'e') + let expand = substitute(expand, '&', '\&', 'g') + let expand = substitute(expand, '<', '\<', 'g') + let expand = substitute(expand, '>', '\>', 'g') + endif + let line = getline(a:firstline) + let part = substitute(line, '^\s*', '', '') + for n in range(a:firstline, a:lastline) + let lline = getline(n) + let lpart = substitute(lline, '^\s\+', '', '') + if emmet#useFilter(filters, 't') + let lpart = substitute(lpart, '^[0-9.-]\+\s\+', '', '') + let lpart = substitute(lpart, '\s\+$', '', '') + endif + if emmet#useFilter(filters, '/') + for column in split(lpart, spl) + let expand = substitute(expand, '\$column\$', '\=column', '') + endfor + else + let expand = substitute(expand, '\$line'.(n-a:firstline+1).'\$', '\=lpart', 'g') + endif + endfor + let expand = substitute(expand, '\$line\d*\$', '', 'g') + let expand = substitute(expand, '\$column\$', '', 'g') + let content = join(getline(a:firstline, a:lastline), "\n") + if stridx(expand, '$#') < len(expand)-2 + let expand = substitute(expand, '^\(.*\)\$#\s*$', '\1', '') + endif + let expand = substitute(expand, '\$#', '\=content', 'g') + else + let str = '' + if visualmode() ==# 'V' + let line = getline(a:firstline) + let lspaces = matchstr(line, '^\s*', '', '') + let part = substitute(line, '^\s*', '', '') + for n in range(a:firstline, a:lastline) + if len(leader) > 0 + let line = getline(a:firstline) + let spaces = matchstr(line, '^\s*', '', '') + if len(spaces) >= len(lspaces) + let str .= indent . getline(n)[len(lspaces):] . "\n" + else + let str .= getline(n) . "\n" + endif + else + let lpart = substitute(getline(n), '^\s*', '', '') + let str .= lpart . "\n" + endif + endfor + if stridx(leader, '{$#}') ==# -1 + let leader .= '{$#}' + endif + let items = emmet#parseIntoTree(leader, type).child + else + let save_regcont = @" + let save_regtype = getregtype('"') + silent! normal! gvygv + let str = @" + call setreg('"', save_regcont, save_regtype) + if stridx(leader, '{$#}') ==# -1 + let leader .= '{$#}' + endif + let items = emmet#parseIntoTree(leader, type).child + endif + for item in items + let expand .= emmet#toString(item, type, 0, filters, 0, '') + endfor + if emmet#useFilter(filters, 'e') + let expand = substitute(expand, '&', '\&', 'g') + let expand = substitute(expand, '<', '\<', 'g') + let expand = substitute(expand, '>', '\>', 'g') + endif + if stridx(leader, '{$#}') !=# -1 + let expand = substitute(expand, '\$#', '\="\n" . str', 'g') + endif + endif + elseif a:mode ==# 4 + let line = getline('.') + let spaces = matchstr(line, '^\s*') + if line !~# '^\s*$' + put =spaces.a:abbr + else + call setline('.', spaces.a:abbr) + endif + normal! $ + call emmet#expandAbbr(0, '') + return '' + else + let line = getline('.') + if col('.') < len(line) + let line = matchstr(line, '^\(.*\%'.col('.').'c\)') + endif + if a:mode ==# 1 + let part = matchstr(line, '\([a-zA-Z0-9:_\-\@|]\+\)$') + else + let part = matchstr(line, '\(\S.*\)$') + let ftype = emmet#lang#exists(type) ? type : 'html' + let part = emmet#lang#{ftype}#findTokens(part) + let line = line[0: strridx(line, part) + len(part) - 1] + endif + if col('.') ==# col('$') + let rest = '' + else + let rest = getline('.')[len(line):] + endif + let str = part + if str =~# s:filtermx + let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*') + let str = substitute(str, s:filtermx, '', '') + endif + let items = emmet#parseIntoTree(str, type).child + for item in items + let expand .= emmet#toString(item, type, 0, filters, 0, indent) + endfor + if emmet#useFilter(filters, 'e') + let expand = substitute(expand, '&', '\&', 'g') + let expand = substitute(expand, '<', '\<', 'g') + let expand = substitute(expand, '>', '\>', 'g') + endif + let expand = substitute(expand, '\$line\([0-9]\+\)\$', '\=submatch(1)', 'g') + endif + let expand = emmet#expandDollarExpr(expand) + let expand = emmet#expandCursorExpr(expand, a:mode) + if len(expand) + if has_key(s:emmet_settings, 'timezone') && len(s:emmet_settings.timezone) + let expand = substitute(expand, '${datetime}', strftime('%Y-%m-%dT%H:%M:%S') . s:emmet_settings.timezone, 'g') + else + " TODO: on windows, %z/%Z is 'Tokyo(Standard)' + let expand = substitute(expand, '${datetime}', strftime('%Y-%m-%dT%H:%M:%S %z'), 'g') + endif + let expand = emmet#unescapeDollarExpr(expand) + if a:mode ==# 2 && visualmode() ==# 'v' + if a:firstline ==# a:lastline + let expand = substitute(expand, '[\r\n]\s*', '', 'g') + else + let expand = substitute(expand, '[\n]$', '', 'g') + endif + silent! normal! gv + let col = col('''<') + silent! normal! c + let line = getline('.') + let lhs = matchstr(line, '.*\%<'.col.'c.') + let rhs = matchstr(line, '\%>'.(col-1).'c.*') + let expand = lhs.expand.rhs + let lines = split(expand, '\n') + call setline(line('.'), lines[0]) + if len(lines) > 1 + call append(line('.'), lines[1:]) + endif + else + if line[:-len(part)-1] =~# '^\s\+$' + let indent = line[:-len(part)-1] + else + let indent = '' + endif + let expand = substitute(expand, '[\r\n]\s*$', '', 'g') + if emmet#useFilter(filters, 's') + let epart = substitute(expand, '[\r\n]\s*', '', 'g') + else + let epart = substitute(expand, '[\r\n]', "\n" . indent, 'g') + endif + let expand = line[:-len(part)-1] . epart . rest + let lines = split(expand, '[\r\n]', 1) + if a:mode ==# 2 + silent! exe 'normal! gvc' + endif + call setline('.', lines[0]) + if len(lines) > 1 + call append('.', lines[1:]) + endif + endif + endif + if g:emmet_debug > 1 + call getchar() + endif + if search('\ze\$\(cursor\|select\)\$', 'c') + let oldselection = &selection + let &selection = 'inclusive' + if foldclosed(line('.')) !=# -1 + silent! foldopen + endif + let pos = emmet#util#getcurpos() + let use_selection = emmet#getResource(type, 'use_selection', 0) + try + let l:gdefault = &gdefault + let &gdefault = 0 + if use_selection && getline('.')[col('.')-1:] =~# '^\$select' + let pos[2] += 1 + silent! s/\$select\$// + let next = searchpos('.\ze\$select\$', 'nW') + silent! %s/\$\(cursor\|select\)\$//g + call emmet#util#selectRegion([pos[1:2], next]) + return "\gv" + else + silent! %s/\$\(cursor\|select\)\$//g + silent! call setpos('.', pos) + if col('.') < col('$') + return "\" + endif + endif + finally + let &gdefault = l:gdefault + endtry + let &selection = oldselection + endif + return '' +endfunction + +function! emmet#updateTag() abort + let type = emmet#getFileType() + let region = emmet#util#searchRegion('<\S', '>') + if !emmet#util#regionIsValid(region) || !emmet#util#cursorInRegion(region) + return '' + endif + let content = emmet#util#getContent(region) + let content = matchstr(content, '^<[^><]\+>') + if content !~# '^<[^><]\+>$' + return '' + endif + let current = emmet#lang#html#parseTag(content) + if empty(current) + return '' + endif + + let str = substitute(input('Enter Abbreviation: ', ''), '^\s*\(.*\)\s*$', '\1', 'g') + let item = emmet#parseIntoTree(str, type).child[0] + for k in keys(item.attr) + let current.attr[k] = item.attr[k] + endfor + let html = substitute(emmet#toString(current, 'html', 1), '\n', '', '') + let html = substitute(html, '\${cursor}', '', '') + let html = matchstr(html, '^<[^><]\+>') + call emmet#util#setContent(region, html) + return '' +endfunction + +function! emmet#moveNextPrevItem(flag) abort + let type = emmet#getFileType() + return emmet#lang#{emmet#lang#type(type)}#moveNextPrevItem(a:flag) +endfunction + +function! emmet#moveNextPrev(flag) abort + let type = emmet#getFileType() + return emmet#lang#{emmet#lang#type(type)}#moveNextPrev(a:flag) +endfunction + +function! emmet#imageSize() abort + let orgpos = emmet#util#getcurpos() + let type = emmet#getFileType() + call emmet#lang#{emmet#lang#type(type)}#imageSize() + silent! call setpos('.', orgpos) + return '' +endfunction + +function! emmet#encodeImage() abort + let type = emmet#getFileType() + return emmet#lang#{emmet#lang#type(type)}#encodeImage() +endfunction + +function! emmet#toggleComment() abort + let type = emmet#getFileType() + call emmet#lang#{emmet#lang#type(type)}#toggleComment() + return '' +endfunction + +function! emmet#balanceTag(flag) range abort + let type = emmet#getFileType() + return emmet#lang#{emmet#lang#type(type)}#balanceTag(a:flag) +endfunction + +function! emmet#splitJoinTag() abort + let type = emmet#getFileType() + return emmet#lang#{emmet#lang#type(type)}#splitJoinTag() +endfunction + +function! emmet#mergeLines() range abort + let lines = join(map(getline(a:firstline, a:lastline), 'matchstr(v:val, "^\\s*\\zs.*\\ze\\s*$")'), '') + let indent = substitute(getline('.'), '^\(\s*\).*', '\1', '') + silent! exe 'normal! gvc' + call setline('.', indent . lines) +endfunction + +function! emmet#removeTag() abort + let type = emmet#getFileType() + call emmet#lang#{emmet#lang#type(type)}#removeTag() + return '' +endfunction + +function! emmet#anchorizeURL(flag) abort + let mx = 'https\=:\/\/[-!#$%&*+,./:;=?@0-9a-zA-Z_~]\+' + let pos1 = searchpos(mx, 'bcnW') + let url = matchstr(getline(pos1[0])[pos1[1]-1:], mx) + let block = [pos1, [pos1[0], pos1[1] + len(url) - 1]] + if !emmet#util#cursorInRegion(block) + return '' + endif + + let mx = '.*]*>\s*\zs\([^<]\+\)\ze\s*<\/title[^>]*>.*' + let content = emmet#util#getContentFromURL(url) + let content = substitute(content, '\r', '', 'g') + let content = substitute(content, '[ \n]\+', ' ', 'g') + let content = substitute(content, '', '', 'g') + let title = matchstr(content, mx) + + let type = emmet#getFileType() + let rtype = emmet#lang#type(type) + if &filetype ==# 'markdown' + let expand = printf('[%s](%s)', substitute(title, '[\[\]]', '\\&', 'g'), url) + elseif a:flag ==# 0 + let a = emmet#lang#html#parseTag('') + let a.attr.href = url + let a.value = '{' . title . '}' + let expand = emmet#toString(a, rtype, 0, []) + let expand = substitute(expand, '\${cursor}', '', 'g') + else + let body = emmet#util#getTextFromHTML(content) + let body = '{' . substitute(body, '^\(.\{0,100}\).*', '\1', '') . '...}' + + let blockquote = emmet#lang#html#parseTag('
    ') + let a = emmet#lang#html#parseTag('') + let a.attr.href = url + let a.value = '{' . title . '}' + call add(blockquote.child, a) + call add(blockquote.child, emmet#lang#html#parseTag('
    ')) + let p = emmet#lang#html#parseTag('

    ') + let p.value = body + call add(blockquote.child, p) + let cite = emmet#lang#html#parseTag('') + let cite.value = '{' . url . '}' + call add(blockquote.child, cite) + let expand = emmet#toString(blockquote, rtype, 0, []) + let expand = substitute(expand, '\${cursor}', '', 'g') + endif + let indent = substitute(getline('.'), '^\(\s*\).*', '\1', '') + let expand = substitute(expand, "\n", "\n" . indent, 'g') + call emmet#util#setContent(block, expand) + return '' +endfunction + +function! emmet#codePretty() range abort + let type = input('FileType: ', &filetype, 'filetype') + if len(type) ==# 0 + return + endif + let block = emmet#util#getVisualBlock() + let content = emmet#util#getContent(block) + silent! 1new + let &l:filetype = type + call setline(1, split(content, "\n")) + let old_lazyredraw = &lazyredraw + set lazyredraw + silent! TOhtml + let &lazyredraw = old_lazyredraw + let content = join(getline(1, '$'), "\n") + silent! bw! + silent! bw! + let content = matchstr(content, ']*>[\s\n]*\zs.*\ze') + call emmet#util#setContent(block, content) +endfunction + +function! emmet#expandWord(abbr, type, orig) abort + let str = a:abbr + let type = a:type + let indent = emmet#getIndentation(type) + + if len(type) ==# 0 | let type = 'html' | endif + if str =~# s:filtermx + let filters = split(matchstr(str, s:filtermx)[1:], '\s*,\s*') + let str = substitute(str, s:filtermx, '', '') + else + let filters = emmet#getFilters(a:type) + if len(filters) ==# 0 + let filters = ['html'] + endif + endif + let str = substitute(str, '|', '${cursor}', 'g') + let items = emmet#parseIntoTree(str, a:type).child + let expand = '' + for item in items + let expand .= emmet#toString(item, a:type, 0, filters, 0, indent) + endfor + if emmet#useFilter(filters, 'e') + let expand = substitute(expand, '&', '\&', 'g') + let expand = substitute(expand, '<', '\<', 'g') + let expand = substitute(expand, '>', '\>', 'g') + endif + if emmet#useFilter(filters, 's') + let expand = substitute(expand, "\n\s\*", '', 'g') + endif + if a:orig ==# 0 + let expand = emmet#expandDollarExpr(expand) + let expand = substitute(expand, '\${cursor}', '', 'g') + endif + return expand +endfunction + +function! emmet#getSnippets(type) abort + let type = a:type + if len(type) ==# 0 || !has_key(s:emmet_settings, type) + let type = 'html' + endif + return emmet#getResource(type, 'snippets', {}) +endfunction + +function! emmet#completeTag(findstart, base) abort + if a:findstart + let line = getline('.') + let start = col('.') - 1 + while start > 0 && line[start - 1] =~# '[a-zA-Z0-9:_\@\-]' + let start -= 1 + endwhile + return start + else + let type = emmet#getFileType() + let res = [] + + let snippets = emmet#getResource(type, 'snippets', {}) + for item in keys(snippets) + if stridx(item, a:base) !=# -1 + call add(res, substitute(item, '\${cursor}\||', '', 'g')) + endif + endfor + let aliases = emmet#getResource(type, 'aliases', {}) + for item in values(aliases) + if stridx(item, a:base) !=# -1 + call add(res, substitute(item, '\${cursor}\||', '', 'g')) + endif + endfor + return res + endif +endfunction + +unlet! s:emmet_settings +let s:emmet_settings = { +\ 'variables': { +\ 'lang': "en", +\ 'locale': "en-US", +\ 'charset': "UTF-8", +\ 'newline': "\n", +\ 'use_selection': 0, +\ }, +\ 'custom_expands' : { +\ '^\%(lorem\|lipsum\)\(\d*\)$' : function('emmet#lorem#en#expand'), +\ }, +\ 'css': { +\ 'snippets': { +\ "@i": "@import url(|);", +\ "@import": "@import url(|);", +\ "@m": "@media ${1:screen} {\n\t|\n}", +\ "@media": "@media ${1:screen} {\n\t|\n}", +\ "@f": "@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}", +\ "@f+": "@font-face {\n\tfont-family: '${1:FontName}';\n\tsrc: url('${2:FileName}.eot');\n\tsrc: url('${2:FileName}.eot?#iefix') format('embedded-opentype'),\n\t\t url('${2:FileName}.woff') format('woff'),\n\t\t url('${2:FileName}.ttf') format('truetype'),\n\t\t url('${2:FileName}.svg#${1:FontName}') format('svg');\n\tfont-style: ${3:normal};\n\tfont-weight: ${4:normal};\n}", +\ "@kf": "@-webkit-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-o-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@-moz-keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}\n@keyframes ${1:identifier} {\n\t${2:from} { ${3} }${6}\n\t${4:to} { ${5} }\n}", +\ "anim": "animation:|;", +\ "anim-": "animation:${1:name} ${2:duration} ${3:timing-function} ${4:delay} ${5:iteration-count} ${6:direction} ${7:fill-mode};", +\ "animdel": "animation-delay:${1:time};", +\ "animdir": "animation-direction:${1:normal};", +\ "animdir:n": "animation-direction:normal;", +\ "animdir:r": "animation-direction:reverse;", +\ "animdir:a": "animation-direction:alternate;", +\ "animdir:ar": "animation-direction:alternate-reverse;", +\ "animdur": "animation-duration:${1:0}s;", +\ "animfm": "animation-fill-mode:${1:both};", +\ "animfm:f": "animation-fill-mode:forwards;", +\ "animfm:b": "animation-fill-mode:backwards;", +\ "animfm:bt": "animation-fill-mode:both;", +\ "animfm:bh": "animation-fill-mode:both;", +\ "animic": "animation-iteration-count:${1:1};", +\ "animic:i": "animation-iteration-count:infinite;", +\ "animn": "animation-name:${1:none};", +\ "animps": "animation-play-state:${1:running};", +\ "animps:p": "animation-play-state:paused;", +\ "animps:r": "animation-play-state:running;", +\ "animtf": "animation-timing-function:${1:linear};", +\ "animtf:e": "animation-timing-function:ease;", +\ "animtf:ei": "animation-timing-function:ease-in;", +\ "animtf:eo": "animation-timing-function:ease-out;", +\ "animtf:eio": "animation-timing-function:ease-in-out;", +\ "animtf:l": "animation-timing-function:linear;", +\ "animtf:cb": "animation-timing-function:cubic-bezier(${1:0.1}, ${2:0.7}, ${3:1.0}, ${3:0.1});", +\ "ap": "appearance:${none};", +\ "!": "!important", +\ "pos": "position:${1:relative};", +\ "pos:s": "position:static;", +\ "pos:a": "position:absolute;", +\ "pos:r": "position:relative;", +\ "pos:f": "position:fixed;", +\ "t": "top:|;", +\ "t:a": "top:auto;", +\ "r": "right:|;", +\ "r:a": "right:auto;", +\ "b": "bottom:|;", +\ "b:a": "bottom:auto;", +\ "l": "left:|;", +\ "l:a": "left:auto;", +\ "z": "z-index:|;", +\ "z:a": "z-index:auto;", +\ "fl": "float:${1:left};", +\ "fl:n": "float:none;", +\ "fl:l": "float:left;", +\ "fl:r": "float:right;", +\ "cl": "clear:${1:both};", +\ "cl:n": "clear:none;", +\ "cl:l": "clear:left;", +\ "cl:r": "clear:right;", +\ "cl:b": "clear:both;", +\ "colm": "columns:|;", +\ "colmc": "column-count:|;", +\ "colmf": "column-fill:|;", +\ "colmg": "column-gap:|;", +\ "colmr": "column-rule:|;", +\ "colmrc": "column-rule-color:|;", +\ "colmrs": "column-rule-style:|;", +\ "colmrw": "column-rule-width:|;", +\ "colms": "column-span:|;", +\ "colmw": "column-width:|;", +\ "d": "display:${1:block};", +\ "d:n": "display:none;", +\ "d:b": "display:block;", +\ "d:f": "display:flex;", +\ "d:if": "display:inline-flex;", +\ "d:i": "display:inline;", +\ "d:ib": "display:inline-block;", +\ "d:ib+": "display: inline-block;\n*display: inline;\n*zoom: 1;", +\ "d:li": "display:list-item;", +\ "d:ri": "display:run-in;", +\ "d:cp": "display:compact;", +\ "d:tb": "display:table;", +\ "d:itb": "display:inline-table;", +\ "d:tbcp": "display:table-caption;", +\ "d:tbcl": "display:table-column;", +\ "d:tbclg": "display:table-column-group;", +\ "d:tbhg": "display:table-header-group;", +\ "d:tbfg": "display:table-footer-group;", +\ "d:tbr": "display:table-row;", +\ "d:tbrg": "display:table-row-group;", +\ "d:tbc": "display:table-cell;", +\ "d:rb": "display:ruby;", +\ "d:rbb": "display:ruby-base;", +\ "d:rbbg": "display:ruby-base-group;", +\ "d:rbt": "display:ruby-text;", +\ "d:rbtg": "display:ruby-text-group;", +\ "v": "visibility:${1:hidden};", +\ "v:v": "visibility:visible;", +\ "v:h": "visibility:hidden;", +\ "v:c": "visibility:collapse;", +\ "ov": "overflow:${1:hidden};", +\ "ov:v": "overflow:visible;", +\ "ov:h": "overflow:hidden;", +\ "ov:s": "overflow:scroll;", +\ "ov:a": "overflow:auto;", +\ "ovx": "overflow-x:${1:hidden};", +\ "ovx:v": "overflow-x:visible;", +\ "ovx:h": "overflow-x:hidden;", +\ "ovx:s": "overflow-x:scroll;", +\ "ovx:a": "overflow-x:auto;", +\ "ovy": "overflow-y:${1:hidden};", +\ "ovy:v": "overflow-y:visible;", +\ "ovy:h": "overflow-y:hidden;", +\ "ovy:s": "overflow-y:scroll;", +\ "ovy:a": "overflow-y:auto;", +\ "ovs": "overflow-style:${1:scrollbar};", +\ "ovs:a": "overflow-style:auto;", +\ "ovs:s": "overflow-style:scrollbar;", +\ "ovs:p": "overflow-style:panner;", +\ "ovs:m": "overflow-style:move;", +\ "ovs:mq": "overflow-style:marquee;", +\ "zoo": "zoom:1;", +\ "zm": "zoom:1;", +\ "cp": "clip:|;", +\ "cp:a": "clip:auto;", +\ "cp:r": "clip:rect(${1:top} ${2:right} ${3:bottom} ${4:left});", +\ "bxz": "box-sizing:${1:border-box};", +\ "bxz:cb": "box-sizing:content-box;", +\ "bxz:bb": "box-sizing:border-box;", +\ "bxsh": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:color};", +\ "bxsh:r": "box-shadow:${1:inset }${2:hoff} ${3:voff} ${4:blur} ${5:spread }rgb(${6:0}, ${7:0}, ${8:0});", +\ "bxsh:ra": "box-shadow:${1:inset }${2:h} ${3:v} ${4:blur} ${5:spread }rgba(${6:0}, ${7:0}, ${8:0}, .${9:5});", +\ "bxsh:n": "box-shadow:none;", +\ "m": "margin:|;", +\ "m:a": "margin:auto;", +\ "mt": "margin-top:|;", +\ "mt:a": "margin-top:auto;", +\ "mr": "margin-right:|;", +\ "mr:a": "margin-right:auto;", +\ "mb": "margin-bottom:|;", +\ "mb:a": "margin-bottom:auto;", +\ "ml": "margin-left:|;", +\ "ml:a": "margin-left:auto;", +\ "p": "padding:|;", +\ "pt": "padding-top:|;", +\ "pr": "padding-right:|;", +\ "pb": "padding-bottom:|;", +\ "pl": "padding-left:|;", +\ "w": "width:|;", +\ "w:a": "width:auto;", +\ "h": "height:|;", +\ "h:a": "height:auto;", +\ "maw": "max-width:|;", +\ "maw:n": "max-width:none;", +\ "mah": "max-height:|;", +\ "mah:n": "max-height:none;", +\ "miw": "min-width:|;", +\ "mih": "min-height:|;", +\ "mar": "max-resolution:${1:res};", +\ "mir": "min-resolution:${1:res};", +\ "ori": "orientation:|;", +\ "ori:l": "orientation:landscape;", +\ "ori:p": "orientation:portrait;", +\ "ol": "outline:|;", +\ "ol:n": "outline:none;", +\ "olo": "outline-offset:|;", +\ "olw": "outline-width:|;", +\ "olw:tn": "outline-width:thin;", +\ "olw:m": "outline-width:medium;", +\ "olw:tc": "outline-width:thick;", +\ "ols": "outline-style:|;", +\ "ols:n": "outline-style:none;", +\ "ols:dt": "outline-style:dotted;", +\ "ols:ds": "outline-style:dashed;", +\ "ols:s": "outline-style:solid;", +\ "ols:db": "outline-style:double;", +\ "ols:g": "outline-style:groove;", +\ "ols:r": "outline-style:ridge;", +\ "ols:i": "outline-style:inset;", +\ "ols:o": "outline-style:outset;", +\ "olc": "outline-color:#${1:000};", +\ "olc:i": "outline-color:invert;", +\ "bfv": "backface-visibility:|;", +\ "bfv:h": "backface-visibility:hidden;", +\ "bfv:v": "backface-visibility:visible;", +\ "bd": "border:|;", +\ "bd+": "border:${1:1px} ${2:solid} ${3:#000};", +\ "bd:n": "border:none;", +\ "bdbk": "border-break:${1:close};", +\ "bdbk:c": "border-break:close;", +\ "bdcl": "border-collapse:|;", +\ "bdcl:c": "border-collapse:collapse;", +\ "bdcl:s": "border-collapse:separate;", +\ "bdc": "border-color:#${1:000};", +\ "bdc:t": "border-color:transparent;", +\ "bdi": "border-image:url(|);", +\ "bdi:n": "border-image:none;", +\ "bdti": "border-top-image:url(|);", +\ "bdti:n": "border-top-image:none;", +\ "bdri": "border-right-image:url(|);", +\ "bdri:n": "border-right-image:none;", +\ "bdbi": "border-bottom-image:url(|);", +\ "bdbi:n": "border-bottom-image:none;", +\ "bdli": "border-left-image:url(|);", +\ "bdli:n": "border-left-image:none;", +\ "bdci": "border-corner-image:url(|);", +\ "bdci:n": "border-corner-image:none;", +\ "bdci:c": "border-corner-image:continue;", +\ "bdtli": "border-top-left-image:url(|);", +\ "bdtli:n": "border-top-left-image:none;", +\ "bdtli:c": "border-top-left-image:continue;", +\ "bdtri": "border-top-right-image:url(|);", +\ "bdtri:n": "border-top-right-image:none;", +\ "bdtri:c": "border-top-right-image:continue;", +\ "bdbri": "border-bottom-right-image:url(|);", +\ "bdbri:n": "border-bottom-right-image:none;", +\ "bdbri:c": "border-bottom-right-image:continue;", +\ "bdbli": "border-bottom-left-image:url(|);", +\ "bdbli:n": "border-bottom-left-image:none;", +\ "bdbli:c": "border-bottom-left-image:continue;", +\ "bdf": "border-fit:${1:repeat};", +\ "bdf:c": "border-fit:clip;", +\ "bdf:r": "border-fit:repeat;", +\ "bdf:sc": "border-fit:scale;", +\ "bdf:st": "border-fit:stretch;", +\ "bdf:ow": "border-fit:overwrite;", +\ "bdf:of": "border-fit:overflow;", +\ "bdf:sp": "border-fit:space;", +\ "bdlen": "border-length:|;", +\ "bdlen:a": "border-length:auto;", +\ "bdsp": "border-spacing:|;", +\ "bds": "border-style:|;", +\ "bds:n": "border-style:none;", +\ "bds:h": "border-style:hidden;", +\ "bds:dt": "border-style:dotted;", +\ "bds:ds": "border-style:dashed;", +\ "bds:s": "border-style:solid;", +\ "bds:db": "border-style:double;", +\ "bds:dtds": "border-style:dot-dash;", +\ "bds:dtdtds": "border-style:dot-dot-dash;", +\ "bds:w": "border-style:wave;", +\ "bds:g": "border-style:groove;", +\ "bds:r": "border-style:ridge;", +\ "bds:i": "border-style:inset;", +\ "bds:o": "border-style:outset;", +\ "bdw": "border-width:|;", +\ "bdtw": "border-top-width:|;", +\ "bdrw": "border-right-width:|;", +\ "bdbw": "border-bottom-width:|;", +\ "bdlw": "border-left-width:|;", +\ "bdt": "border-top:|;", +\ "bt": "border-top:|;", +\ "bdt+": "border-top:${1:1px} ${2:solid} ${3:#000};", +\ "bdt:n": "border-top:none;", +\ "bdts": "border-top-style:|;", +\ "bdts:n": "border-top-style:none;", +\ "bdtc": "border-top-color:#${1:000};", +\ "bdtc:t": "border-top-color:transparent;", +\ "bdr": "border-right:|;", +\ "br": "border-right:|;", +\ "bdr+": "border-right:${1:1px} ${2:solid} ${3:#000};", +\ "bdr:n": "border-right:none;", +\ "bdrst": "border-right-style:|;", +\ "bdrst:n": "border-right-style:none;", +\ "bdrc": "border-right-color:#${1:000};", +\ "bdrc:t": "border-right-color:transparent;", +\ "bdb": "border-bottom:|;", +\ "bb": "border-bottom:|;", +\ "bdb+": "border-bottom:${1:1px} ${2:solid} ${3:#000};", +\ "bdb:n": "border-bottom:none;", +\ "bdbs": "border-bottom-style:|;", +\ "bdbs:n": "border-bottom-style:none;", +\ "bdbc": "border-bottom-color:#${1:000};", +\ "bdbc:t": "border-bottom-color:transparent;", +\ "bdl": "border-left:|;", +\ "bl": "border-left:|;", +\ "bdl+": "border-left:${1:1px} ${2:solid} ${3:#000};", +\ "bdl:n": "border-left:none;", +\ "bdls": "border-left-style:|;", +\ "bdls:n": "border-left-style:none;", +\ "bdlc": "border-left-color:#${1:000};", +\ "bdlc:t": "border-left-color:transparent;", +\ "bdrs": "border-radius:|;", +\ "bdtrrs": "border-top-right-radius:|;", +\ "bdtlrs": "border-top-left-radius:|;", +\ "bdbrrs": "border-bottom-right-radius:|;", +\ "bdblrs": "border-bottom-left-radius:|;", +\ "bg": "background:#${1:000};", +\ "bg+": "background:${1:#fff} url(${2}) ${3:0} ${4:0} ${5:no-repeat};", +\ "bg:n": "background:none;", +\ "bg:ie": "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1:x}.png',sizingMethod='${2:crop}');", +\ "bgc": "background-color:#${1:fff};", +\ "bgc:t": "background-color:transparent;", +\ "bgi": "background-image:url(|);", +\ "bgi:n": "background-image:none;", +\ "bgr": "background-repeat:|;", +\ "bgr:n": "background-repeat:no-repeat;", +\ "bgr:x": "background-repeat:repeat-x;", +\ "bgr:y": "background-repeat:repeat-y;", +\ "bgr:sp": "background-repeat:space;", +\ "bgr:rd": "background-repeat:round;", +\ "bga": "background-attachment:|;", +\ "bga:f": "background-attachment:fixed;", +\ "bga:s": "background-attachment:scroll;", +\ "bgp": "background-position:${1:0} ${2:0};", +\ "bgpx": "background-position-x:|;", +\ "bgpy": "background-position-y:|;", +\ "bgbk": "background-break:|;", +\ "bgbk:bb": "background-break:bounding-box;", +\ "bgbk:eb": "background-break:each-box;", +\ "bgbk:c": "background-break:continuous;", +\ "bgcp": "background-clip:${1:padding-box};", +\ "bgcp:bb": "background-clip:border-box;", +\ "bgcp:pb": "background-clip:padding-box;", +\ "bgcp:cb": "background-clip:content-box;", +\ "bgcp:nc": "background-clip:no-clip;", +\ "bgo": "background-origin:|;", +\ "bgo:pb": "background-origin:padding-box;", +\ "bgo:bb": "background-origin:border-box;", +\ "bgo:cb": "background-origin:content-box;", +\ "bgsz": "background-size:|;", +\ "bgsz:a": "background-size:auto;", +\ "bgsz:ct": "background-size:contain;", +\ "bgsz:cv": "background-size:cover;", +\ "c": "color:#${1:000};", +\ "c:r": "color:rgb(${1:0}, ${2:0}, ${3:0});", +\ "c:ra": "color:rgba(${1:0}, ${2:0}, ${3:0}, .${4:5});", +\ "cm": "/* |${child} */", +\ "cnt": "content:'|';", +\ "cnt:n": "content:normal;", +\ "cnt:oq": "content:open-quote;", +\ "cnt:noq": "content:no-open-quote;", +\ "cnt:cq": "content:close-quote;", +\ "cnt:ncq": "content:no-close-quote;", +\ "cnt:a": "content:attr(|);", +\ "cnt:c": "content:counter(|);", +\ "cnt:cs": "content:counters(|);", +\ "tbl": "table-layout:|;", +\ "tbl:a": "table-layout:auto;", +\ "tbl:f": "table-layout:fixed;", +\ "cps": "caption-side:|;", +\ "cps:t": "caption-side:top;", +\ "cps:b": "caption-side:bottom;", +\ "ec": "empty-cells:|;", +\ "ec:s": "empty-cells:show;", +\ "ec:h": "empty-cells:hide;", +\ "lis": "list-style:|;", +\ "lis:n": "list-style:none;", +\ "lisp": "list-style-position:|;", +\ "lisp:i": "list-style-position:inside;", +\ "lisp:o": "list-style-position:outside;", +\ "list": "list-style-type:|;", +\ "list:n": "list-style-type:none;", +\ "list:d": "list-style-type:disc;", +\ "list:c": "list-style-type:circle;", +\ "list:s": "list-style-type:square;", +\ "list:dc": "list-style-type:decimal;", +\ "list:dclz": "list-style-type:decimal-leading-zero;", +\ "list:lr": "list-style-type:lower-roman;", +\ "list:ur": "list-style-type:upper-roman;", +\ "lisi": "list-style-image:|;", +\ "lisi:n": "list-style-image:none;", +\ "q": "quotes:|;", +\ "q:n": "quotes:none;", +\ "q:ru": "quotes:'\\00AB' '\\00BB' '\\201E' '\\201C';", +\ "q:en": "quotes:'\\201C' '\\201D' '\\2018' '\\2019';", +\ "ct": "content:|;", +\ "ct:n": "content:normal;", +\ "ct:oq": "content:open-quote;", +\ "ct:noq": "content:no-open-quote;", +\ "ct:cq": "content:close-quote;", +\ "ct:ncq": "content:no-close-quote;", +\ "ct:a": "content:attr(|);", +\ "ct:c": "content:counter(|);", +\ "ct:cs": "content:counters(|);", +\ "coi": "counter-increment:|;", +\ "cor": "counter-reset:|;", +\ "va": "vertical-align:${1:top};", +\ "va:sup": "vertical-align:super;", +\ "va:t": "vertical-align:top;", +\ "va:tt": "vertical-align:text-top;", +\ "va:m": "vertical-align:middle;", +\ "va:bl": "vertical-align:baseline;", +\ "va:b": "vertical-align:bottom;", +\ "va:tb": "vertical-align:text-bottom;", +\ "va:sub": "vertical-align:sub;", +\ "ta": "text-align:${1:left};", +\ "ta:l": "text-align:left;", +\ "ta:c": "text-align:center;", +\ "ta:r": "text-align:right;", +\ "ta:j": "text-align:justify;", +\ "ta-lst": "text-align-last:|;", +\ "tal:a": "text-align-last:auto;", +\ "tal:l": "text-align-last:left;", +\ "tal:c": "text-align-last:center;", +\ "tal:r": "text-align-last:right;", +\ "td": "text-decoration:${1:none};", +\ "td:n": "text-decoration:none;", +\ "td:u": "text-decoration:underline;", +\ "td:o": "text-decoration:overline;", +\ "td:l": "text-decoration:line-through;", +\ "te": "text-emphasis:|;", +\ "te:n": "text-emphasis:none;", +\ "te:ac": "text-emphasis:accent;", +\ "te:dt": "text-emphasis:dot;", +\ "te:c": "text-emphasis:circle;", +\ "te:ds": "text-emphasis:disc;", +\ "te:b": "text-emphasis:before;", +\ "te:a": "text-emphasis:after;", +\ "th": "text-height:|;", +\ "th:a": "text-height:auto;", +\ "th:f": "text-height:font-size;", +\ "th:t": "text-height:text-size;", +\ "th:m": "text-height:max-size;", +\ "ti": "text-indent:|;", +\ "ti:-": "text-indent:-9999px;", +\ "tj": "text-justify:|;", +\ "tj:a": "text-justify:auto;", +\ "tj:iw": "text-justify:inter-word;", +\ "tj:ii": "text-justify:inter-ideograph;", +\ "tj:ic": "text-justify:inter-cluster;", +\ "tj:d": "text-justify:distribute;", +\ "tj:k": "text-justify:kashida;", +\ "tj:t": "text-justify:tibetan;", +\ "tov": "text-overflow:${ellipsis};", +\ "tov:e": "text-overflow:ellipsis;", +\ "tov:c": "text-overflow:clip;", +\ "to": "text-outline:|;", +\ "to+": "text-outline:${1:0} ${2:0} ${3:#000};", +\ "to:n": "text-outline:none;", +\ "tr": "text-replace:|;", +\ "tr:n": "text-replace:none;", +\ "tt": "text-transform:${1:uppercase};", +\ "tt:n": "text-transform:none;", +\ "tt:c": "text-transform:capitalize;", +\ "tt:u": "text-transform:uppercase;", +\ "tt:l": "text-transform:lowercase;", +\ "tw": "text-wrap:|;", +\ "tw:n": "text-wrap:normal;", +\ "tw:no": "text-wrap:none;", +\ "tw:u": "text-wrap:unrestricted;", +\ "tw:s": "text-wrap:suppress;", +\ "tsh": "text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000};", +\ "tsh:r": "text-shadow:${1:h} ${2:v} ${3:blur} rgb(${4:0}, ${5:0}, ${6:0});", +\ "tsh:ra": "text-shadow:${1:h} ${2:v} ${3:blur} rgba(${4:0}, ${5:0}, ${6:0}, .${7:5});", +\ "tsh+": "text-shadow:${1:0} ${2:0} ${3:0} ${4:#000};", +\ "tsh:n": "text-shadow:none;", +\ "trf": "transform:|;", +\ "trf:skx": "transform: skewX(${1:angle});", +\ "trf:sky": "transform: skewY(${1:angle});", +\ "trf:sc": "transform: scale(${1:x}, ${2:y});", +\ "trf:scx": "transform: scaleX(${1:x});", +\ "trf:scy": "transform: scaleY(${1:y});", +\ "trf:scz": "transform: scaleZ(${1:z});", +\ "trf:sc3": "transform: scale3d(${1:x}, ${2:y}, ${3:z});", +\ "trf:r": "transform: rotate(${1:angle});", +\ "trf:rx": "transform: rotateX(${1:angle});", +\ "trf:ry": "transform: rotateY(${1:angle});", +\ "trf:rz": "transform: rotateZ(${1:angle});", +\ "trf:t": "transform: translate(${1:x}, ${2:y});", +\ "trf:tx": "transform: translateX(${1:x});", +\ "trf:ty": "transform: translateY(${1:y});", +\ "trf:tz": "transform: translateZ(${1:z});", +\ "trf:t3": "transform: translate3d(${1:tx}, ${2:ty}, ${3:tz});", +\ "trfo": "transform-origin:|;", +\ "trfs": "transform-style:${1:preserve-3d};", +\ "trs": "transition:${1:prop} ${2:time};", +\ "trsde": "transition-delay:${1:time};", +\ "trsdu": "transition-duration:${1:time};", +\ "trsp": "transition-property:${1:prop};", +\ "trstf": "transition-timing-function:${1:tfunc};", +\ "lh": "line-height:|;", +\ "whs": "white-space:|;", +\ "whs:n": "white-space:normal;", +\ "whs:p": "white-space:pre;", +\ "whs:nw": "white-space:nowrap;", +\ "whs:pw": "white-space:pre-wrap;", +\ "whs:pl": "white-space:pre-line;", +\ "whsc": "white-space-collapse:|;", +\ "whsc:n": "white-space-collapse:normal;", +\ "whsc:k": "white-space-collapse:keep-all;", +\ "whsc:l": "white-space-collapse:loose;", +\ "whsc:bs": "white-space-collapse:break-strict;", +\ "whsc:ba": "white-space-collapse:break-all;", +\ "wob": "word-break:|;", +\ "wob:n": "word-break:normal;", +\ "wob:k": "word-break:keep-all;", +\ "wob:ba": "word-break:break-all;", +\ "wos": "word-spacing:|;", +\ "wow": "word-wrap:|;", +\ "wow:nm": "word-wrap:normal;", +\ "wow:n": "word-wrap:none;", +\ "wow:u": "word-wrap:unrestricted;", +\ "wow:s": "word-wrap:suppress;", +\ "wow:b": "word-wrap:break-word;", +\ "wm": "writing-mode:${1:lr-tb};", +\ "wm:lrt": "writing-mode:lr-tb;", +\ "wm:lrb": "writing-mode:lr-bt;", +\ "wm:rlt": "writing-mode:rl-tb;", +\ "wm:rlb": "writing-mode:rl-bt;", +\ "wm:tbr": "writing-mode:tb-rl;", +\ "wm:tbl": "writing-mode:tb-lr;", +\ "wm:btl": "writing-mode:bt-lr;", +\ "wm:btr": "writing-mode:bt-rl;", +\ "lts": "letter-spacing:|;", +\ "lts-n": "letter-spacing:normal;", +\ "f": "font:|;", +\ "f+": "font:${1:1em} ${2:Arial,sans-serif};", +\ "fw": "font-weight:|;", +\ "fw:n": "font-weight:normal;", +\ "fw:b": "font-weight:bold;", +\ "fw:br": "font-weight:bolder;", +\ "fw:lr": "font-weight:lighter;", +\ "fs": "font-style:${italic};", +\ "fs:n": "font-style:normal;", +\ "fs:i": "font-style:italic;", +\ "fs:o": "font-style:oblique;", +\ "fv": "font-variant:|;", +\ "fv:n": "font-variant:normal;", +\ "fv:sc": "font-variant:small-caps;", +\ "fz": "font-size:|;", +\ "fza": "font-size-adjust:|;", +\ "fza:n": "font-size-adjust:none;", +\ "ff": "font-family:|;", +\ "ff:s": "font-family:serif;", +\ "ff:ss": "font-family:sans-serif;", +\ "ff:c": "font-family:cursive;", +\ "ff:f": "font-family:fantasy;", +\ "ff:m": "font-family:monospace;", +\ "ff:a": "font-family: Arial, \"Helvetica Neue\", Helvetica, sans-serif;", +\ "ff:t": "font-family: \"Times New Roman\", Times, Baskerville, Georgia, serif;", +\ "ff:v": "font-family: Verdana, Geneva, sans-serif;", +\ "fef": "font-effect:|;", +\ "fef:n": "font-effect:none;", +\ "fef:eg": "font-effect:engrave;", +\ "fef:eb": "font-effect:emboss;", +\ "fef:o": "font-effect:outline;", +\ "fem": "font-emphasize:|;", +\ "femp": "font-emphasize-position:|;", +\ "femp:b": "font-emphasize-position:before;", +\ "femp:a": "font-emphasize-position:after;", +\ "fems": "font-emphasize-style:|;", +\ "fems:n": "font-emphasize-style:none;", +\ "fems:ac": "font-emphasize-style:accent;", +\ "fems:dt": "font-emphasize-style:dot;", +\ "fems:c": "font-emphasize-style:circle;", +\ "fems:ds": "font-emphasize-style:disc;", +\ "fsm": "font-smooth:|;", +\ "fsm:a": "font-smooth:auto;", +\ "fsm:n": "font-smooth:never;", +\ "fsm:aw": "font-smooth:always;", +\ "fst": "font-stretch:|;", +\ "fst:n": "font-stretch:normal;", +\ "fst:uc": "font-stretch:ultra-condensed;", +\ "fst:ec": "font-stretch:extra-condensed;", +\ "fst:c": "font-stretch:condensed;", +\ "fst:sc": "font-stretch:semi-condensed;", +\ "fst:se": "font-stretch:semi-expanded;", +\ "fst:e": "font-stretch:expanded;", +\ "fst:ee": "font-stretch:extra-expanded;", +\ "fst:ue": "font-stretch:ultra-expanded;", +\ "op": "opacity:|;", +\ "op+": "opacity: $1;\nfilter: alpha(opacity=$2);", +\ "op:ie": "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);", +\ "op:ms": "-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';", +\ "rsz": "resize:|;", +\ "rsz:n": "resize:none;", +\ "rsz:b": "resize:both;", +\ "rsz:h": "resize:horizontal;", +\ "rsz:v": "resize:vertical;", +\ "cur": "cursor:${pointer};", +\ "cur:a": "cursor:auto;", +\ "cur:d": "cursor:default;", +\ "cur:c": "cursor:crosshair;", +\ "cur:ha": "cursor:hand;", +\ "cur:he": "cursor:help;", +\ "cur:m": "cursor:move;", +\ "cur:p": "cursor:pointer;", +\ "cur:t": "cursor:text;", +\ "fxd": "flex-direction:|;", +\ "fxd:r": "flex-direction:row;", +\ "fxd:rr": "flex-direction:row-reverse;", +\ "fxd:c": "flex-direction:column;", +\ "fxd:cr": "flex-direction:column-reverse;", +\ "fxw": "flex-wrap: |;", +\ "fxw:n": "flex-wrap:nowrap;", +\ "fxw:w": "flex-wrap:wrap;", +\ "fxw:wr": "flex-wrap:wrap-reverse;", +\ "fxf": "flex-flow:|;", +\ "jc": "justify-content:|;", +\ "jc:fs": "justify-content:flex-start;", +\ "jc:fe": "justify-content:flex-end;", +\ "jc:c": "justify-content:center;", +\ "jc:sb": "justify-content:space-between;", +\ "jc:sa": "justify-content:space-around;", +\ "ai": "align-items:|;", +\ "ai:fs": "align-items:flex-start;", +\ "ai:fe": "align-items:flex-end;", +\ "ai:c": "align-items:center;", +\ "ai:b": "align-items:baseline;", +\ "ai:s": "align-items:stretch;", +\ "ac": "align-content:|;", +\ "ac:fs": "align-content:flex-start;", +\ "ac:fe": "align-content:flex-end;", +\ "ac:c": "align-content:center;", +\ "ac:sb": "align-content:space-between;", +\ "ac:sa": "align-content:space-around;", +\ "ac:s": "align-content:stretch;", +\ "ord": "order:|;", +\ "fxg": "flex-grow:|;", +\ "fxsh": "flex-shrink:|;", +\ "fxb": "flex-basis:|;", +\ "fx": "flex:|;", +\ "as": "align-self:|;", +\ "as:a": "align-self:auto;", +\ "as:fs": "align-self:flex-start;", +\ "as:fe": "align-self:flex-end;", +\ "as:c": "align-self:center;", +\ "as:b": "align-self:baseline;", +\ "as:s": "align-self:stretch;", +\ "pgbb": "page-break-before:|;", +\ "pgbb:au": "page-break-before:auto;", +\ "pgbb:al": "page-break-before:always;", +\ "pgbb:l": "page-break-before:left;", +\ "pgbb:r": "page-break-before:right;", +\ "pgbi": "page-break-inside:|;", +\ "pgbi:au": "page-break-inside:auto;", +\ "pgbi:av": "page-break-inside:avoid;", +\ "pgba": "page-break-after:|;", +\ "pgba:au": "page-break-after:auto;", +\ "pgba:al": "page-break-after:always;", +\ "pgba:l": "page-break-after:left;", +\ "pgba:r": "page-break-after:right;", +\ "orp": "orphans:|;", +\ "us": "user-select:${none};", +\ "wid": "widows:|;", +\ "wfsm": "-webkit-font-smoothing:${antialiased};", +\ "wfsm:a": "-webkit-font-smoothing:antialiased;", +\ "wfsm:s": "-webkit-font-smoothing:subpixel-antialiased;", +\ "wfsm:sa": "-webkit-font-smoothing:subpixel-antialiased;", +\ "wfsm:n": "-webkit-font-smoothing:none;" +\ }, +\ 'filters': 'fc', +\ }, +\ 'sass': { +\ 'extends': 'css', +\ 'snippets': { +\ '@if': "@if {\n\t|\n}", +\ '@e': "@else {\n\t|\n}", +\ '@in': "@include |", +\ '@ex': "@extend |", +\ '@mx': "@mixin {\n\t|\n}", +\ '@fn': "@function {\n\t|\n}", +\ '@r': "@return |", +\ }, +\ }, +\ 'scss': { +\ 'extends': 'css', +\ }, +\ 'less': { +\ 'extends': 'css', +\ }, +\ 'css.drupal': { +\ 'extends': 'css', +\ }, +\ 'html': { +\ 'snippets': { +\ '!': "html:5", +\ '!!!': "\n", +\ '!!!4t': "\n", +\ '!!!4s': "\n", +\ '!!!xt': "\n", +\ '!!!xs': "\n", +\ '!!!xxs': "\n", +\ 'c': "", +\ 'cc:ie6': "", +\ 'cc:ie': "", +\ 'cc:noie': "\n\t${child}|\n", +\ 'html:4t': "\n" +\ ."\n" +\ ."\n" +\ ."\t\n" +\ ."\t\n" +\ ."\n" +\ ."\n\t${child}|\n\n" +\ ."", +\ 'html:4s': "\n" +\ ."\n" +\ ."\n" +\ ."\t\n" +\ ."\t\n" +\ ."\n" +\ ."\n\t${child}|\n\n" +\ ."", +\ 'html:xt': "\n" +\ ."\n" +\ ."\n" +\ ."\t\n" +\ ."\t\n" +\ ."\n" +\ ."\n\t${child}|\n\n" +\ ."", +\ 'html:xs': "\n" +\ ."\n" +\ ."\n" +\ ."\t\n" +\ ."\t\n" +\ ."\n" +\ ."\n\t${child}|\n\n" +\ ."", +\ 'html:xxs': "\n" +\ ."\n" +\ ."\n" +\ ."\t\n" +\ ."\t\n" +\ ."\n" +\ ."\n\t${child}|\n\n" +\ ."", +\ 'html:5': "\n" +\ ."\n" +\ ."\n" +\ ."\t\n" +\ ."\t\n" +\ ."\n" +\ ."\n\t${child}|\n\n" +\ ."", +\ }, +\ 'default_attributes': { +\ 'a': [{'href': ''}], +\ 'a:link': [{'href': 'http://|'}], +\ 'a:mail': [{'href': 'mailto:|'}], +\ 'abbr': [{'title': ''}], +\ 'acronym': [{'title': ''}], +\ 'base': [{'href': ''}], +\ 'bdo': [{'dir': ''}], +\ 'bdo:r': [{'dir': 'rtl'}], +\ 'bdo:l': [{'dir': 'ltr'}], +\ 'del': [{'datetime': '${datetime}'}], +\ 'ins': [{'datetime': '${datetime}'}], +\ 'link:css': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|style.css'}, {'media': 'all'}], +\ 'link:print': [{'rel': 'stylesheet'}, g:emmet_html5 ? {} : {'type': 'text/css'}, {'href': '|print.css'}, {'media': 'print'}], +\ 'link:import': [{'rel': 'import'}, {'href': '|.html'}], +\ 'link:im': [{'rel': 'import'}, {'href': '|.html'}], +\ 'link:favicon': [{'rel': 'shortcut icon'}, {'type': 'image/x-icon'}, {'href': '|favicon.ico'}], +\ 'link:touch': [{'rel': 'apple-touch-icon'}, {'href': '|favicon.png'}], +\ 'link:rss': [{'rel': 'alternate'}, {'type': 'application/rss+xml'}, {'title': 'RSS'}, {'href': '|rss.xml'}], +\ 'link:atom': [{'rel': 'alternate'}, {'type': 'application/atom+xml'}, {'title': 'Atom'}, {'href': 'atom.xml'}], +\ 'meta:utf': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=UTF-8'}], +\ 'meta:vp': [{'name': 'viewport'}, {'content': 'width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0'}], +\ 'meta:win': [{'http-equiv': 'Content-Type'}, {'content': 'text/html;charset=Win-1251'}], +\ 'meta:compat': [{'http-equiv': 'X-UA-Compatible'}, {'content': 'IE=7'}], +\ 'style': g:emmet_html5 ? [] : [{'type': 'text/css'}], +\ 'script': g:emmet_html5 ? [] : [{'type': 'text/javascript'}], +\ 'script:src': (g:emmet_html5 ? [] : [{'type': 'text/javascript'}]) + [{'src': ''}], +\ 'img': [{'src': ''}, {'alt': ''}], +\ 'iframe': [{'src': ''}, {'frameborder': '0'}], +\ 'embed': [{'src': ''}, {'type': ''}], +\ 'object': [{'data': ''}, {'type': ''}], +\ 'param': [{'name': ''}, {'value': ''}], +\ 'map': {'name': ''}, +\ 'area': [{'shape': ''}, {'coords': ''}, {'href': ''}, {'alt': ''}], +\ 'area:d': [{'shape': 'default'}, {'href': ''}, {'alt': ''}], +\ 'area:c': [{'shape': 'circle'}, {'coords': ''}, {'href': ''}, {'alt': ''}], +\ 'area:r': [{'shape': 'rect'}, {'coords': ''}, {'href': ''}, {'alt': ''}], +\ 'area:p': [{'shape': 'poly'}, {'coords': ''}, {'href': ''}, {'alt': ''}], +\ 'link': [{'rel': 'stylesheet'}, {'href': ''}], +\ 'form': [{'action': ''}], +\ 'form:get': [{'action': ''}, {'method': 'get'}], +\ 'form:post': [{'action': ''}, {'method': 'post'}], +\ 'form:upload': [{'action': ''}, {'method': 'post'}, {'enctype': 'multipart/form-data'}], +\ 'label': [{'for': ''}], +\ 'input': [{'type': ''}], +\ 'input:hidden': [{'type': 'hidden'}, {'name': ''}], +\ 'input:h': [{'type': 'hidden'}, {'name': ''}], +\ 'input:text': [{'type': 'text'}, {'name': ''}, {'id': ''}], +\ 'input:t': [{'type': 'text'}, {'name': ''}, {'id': ''}], +\ 'input:search': [{'type': 'search'}, {'name': ''}, {'id': ''}], +\ 'input:email': [{'type': 'email'}, {'name': ''}, {'id': ''}], +\ 'input:url': [{'type': 'url'}, {'name': ''}, {'id': ''}], +\ 'input:password': [{'type': 'password'}, {'name': ''}, {'id': ''}], +\ 'input:p': [{'type': 'password'}, {'name': ''}, {'id': ''}], +\ 'input:datetime': [{'type': 'datetime'}, {'name': ''}, {'id': ''}], +\ 'input:date': [{'type': 'date'}, {'name': ''}, {'id': ''}], +\ 'input:datetime-local': [{'type': 'datetime-local'}, {'name': ''}, {'id': ''}], +\ 'input:month': [{'type': 'month'}, {'name': ''}, {'id': ''}], +\ 'input:week': [{'type': 'week'}, {'name': ''}, {'id': ''}], +\ 'input:time': [{'type': 'time'}, {'name': ''}, {'id': ''}], +\ 'input:number': [{'type': 'number'}, {'name': ''}, {'id': ''}], +\ 'input:color': [{'type': 'color'}, {'name': ''}, {'id': ''}], +\ 'input:checkbox': [{'type': 'checkbox'}, {'name': ''}, {'id': ''}], +\ 'input:c': [{'type': 'checkbox'}, {'name': ''}, {'id': ''}], +\ 'input:radio': [{'type': 'radio'}, {'name': ''}, {'id': ''}], +\ 'input:r': [{'type': 'radio'}, {'name': ''}, {'id': ''}], +\ 'input:range': [{'type': 'range'}, {'name': ''}, {'id': ''}], +\ 'input:file': [{'type': 'file'}, {'name': ''}, {'id': ''}], +\ 'input:f': [{'type': 'file'}, {'name': ''}, {'id': ''}], +\ 'input:submit': [{'type': 'submit'}, {'value': ''}], +\ 'input:s': [{'type': 'submit'}, {'value': ''}], +\ 'input:image': [{'type': 'image'}, {'src': ''}, {'alt': ''}], +\ 'input:i': [{'type': 'image'}, {'src': ''}, {'alt': ''}], +\ 'input:reset': [{'type': 'reset'}, {'value': ''}], +\ 'input:button': [{'type': 'button'}, {'value': ''}], +\ 'input:b': [{'type': 'button'}, {'value': ''}], +\ 'select': [{'name': ''}, {'id': ''}], +\ 'option': [{'value': ''}], +\ 'textarea': [{'name': ''}, {'id': ''}, {'cols': '30'}, {'rows': '10'}], +\ 'menu:context': [{'type': 'context'}], +\ 'menu:c': [{'type': 'context'}], +\ 'menu:toolbar': [{'type': 'toolbar'}], +\ 'menu:t': [{'type': 'toolbar'}], +\ 'video': [{'src': ''}], +\ 'audio': [{'src': ''}], +\ 'html:xml': [{'xmlns': 'http://www.w3.org/1999/xhtml'}, {'xml:lang': '${lang}'}], +\ }, +\ 'aliases': { +\ 'link:*': 'link', +\ 'meta:*': 'meta', +\ 'area:*': 'area', +\ 'bdo:*': 'bdo', +\ 'form:*': 'form', +\ 'input:*': 'input', +\ 'script:*': 'script', +\ 'html:*': 'html', +\ 'a:*': 'a', +\ 'menu:*': 'menu', +\ 'bq': 'blockquote', +\ 'acr': 'acronym', +\ 'fig': 'figure', +\ 'ifr': 'iframe', +\ 'emb': 'embed', +\ 'obj': 'object', +\ 'src': 'source', +\ 'cap': 'caption', +\ 'colg': 'colgroup', +\ 'fst': 'fieldset', +\ 'btn': 'button', +\ 'optg': 'optgroup', +\ 'opt': 'option', +\ 'tarea': 'textarea', +\ 'leg': 'legend', +\ 'sect': 'section', +\ 'art': 'article', +\ 'hdr': 'header', +\ 'ftr': 'footer', +\ 'adr': 'address', +\ 'dlg': 'dialog', +\ 'str': 'strong', +\ 'sty': 'style', +\ 'prog': 'progress', +\ 'fset': 'fieldset', +\ 'datag': 'datagrid', +\ 'datal': 'datalist', +\ 'kg': 'keygen', +\ 'out': 'output', +\ 'det': 'details', +\ 'cmd': 'command', +\ }, +\ 'expandos': { +\ 'ol': 'ol>li', +\ 'ul': 'ul>li', +\ 'dl': 'dl>dt+dd', +\ 'map': 'map>area', +\ 'table': 'table>tr>td', +\ 'colgroup': 'colgroup>col', +\ 'colg': 'colgroup>col', +\ 'tr': 'tr>td', +\ 'select': 'select>option', +\ 'optgroup': 'optgroup>option', +\ 'optg': 'optgroup>option', +\ }, +\ 'empty_elements': 'area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,keygen,command', +\ 'block_elements': 'address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,link,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul,h1,h2,h3,h4,h5,h6', +\ 'inline_elements': 'a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,small,span,strike,strong,sub,sup,textarea,tt,u,var', +\ 'empty_element_suffix': g:emmet_html5 ? '>' : ' />', +\ 'indent_blockelement': 0, +\ }, +\ 'elm': { +\ 'indentation': ' ', +\ 'extends': 'html', +\ }, +\ 'htmldjango': { +\ 'extends': 'html', +\ }, +\ 'html.django_template': { +\ 'extends': 'html', +\ }, +\ 'jade': { +\ 'indentation': ' ', +\ 'extends': 'html', +\ 'snippets': { +\ '!': "html:5", +\ '!!!': "doctype html\n", +\ '!!!4t': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"\n", +\ '!!!4s': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"\n", +\ '!!!xt': "doctype transitional\n", +\ '!!!xs': "doctype strict\n", +\ '!!!xxs': "doctype 1.1\n", +\ 'c': "\/\/ |${child}", +\ 'html:4t': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"\n" +\ ."html(lang=\"${lang}\")\n" +\ ."\thead\n" +\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n" +\ ."\t\ttitle\n" +\ ."\tbody\n\t\t${child}|", +\ 'html:4s': "doctype HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\"\n" +\ ."html(lang=\"${lang}\")\n" +\ ."\thead\n" +\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n" +\ ."\t\ttitle\n" +\ ."\tbody\n\t\t${child}|", +\ 'html:xt': "doctype transitional\n" +\ ."html(xmlns=\"http://www.w3.org/1999/xhtml\", xml:lang=\"${lang}\")\n" +\ ."\thead\n" +\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n" +\ ."\t\ttitle\n" +\ ."\tbody\n\t\t${child}|", +\ 'html:xs': "doctype strict\n" +\ ."html(xmlns=\"http://www.w3.org/1999/xhtml\", xml:lang=\"${lang}\")\n" +\ ."\thead\n" +\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n" +\ ."\t\ttitle\n" +\ ."\tbody\n\t\t${child}|", +\ 'html:xxs': "doctype 1.1\n" +\ ."html(xmlns=\"http://www.w3.org/1999/xhtml\", xml:lang=\"${lang}\")\n" +\ ."\thead\n" +\ ."\t\tmeta(http-equiv=\"Content-Type\", content=\"text/html;charset=${charset}\")\n" +\ ."\t\ttitle\n" +\ ."\tbody\n\t\t${child}|", +\ 'html:5': "doctype html\n" +\ ."html(lang=\"${lang}\")\n" +\ ."\thead\n" +\ ."\t\tmeta(charset=\"${charset}\")\n" +\ ."\t\ttitle\n" +\ ."\tbody\n\t\t${child}|", +\ }, +\ }, +\ 'pug': { +\ 'extends': 'jade', +\ }, +\ 'xsl': { +\ 'extends': 'html', +\ 'default_attributes': { +\ 'tmatch': [{'match': ''}, {'mode': ''}], +\ 'tname': [{'name': ''}], +\ 'xsl:when': {'test': ''}, +\ 'var': [{'name': ''}, {'select': ''}], +\ 'vari': {'name': ''}, +\ 'if': {'test': ''}, +\ 'call': {'name': ''}, +\ 'attr': {'name': ''}, +\ 'wp': [{'name': ''}, {'select': ''}], +\ 'par': [{'name': ''}, {'select': ''}], +\ 'val': {'select': ''}, +\ 'co': {'select': ''}, +\ 'each': {'select': ''}, +\ 'ap': [{'select': ''}, {'mode': ''}] +\ }, +\ 'aliases': { +\ 'tmatch': 'xsl:template', +\ 'tname': 'xsl:template', +\ 'var': 'xsl:variable', +\ 'vari': 'xsl:variable', +\ 'if': 'xsl:if', +\ 'choose': 'xsl:choose', +\ 'call': 'xsl:call-template', +\ 'wp': 'xsl:with-param', +\ 'par': 'xsl:param', +\ 'val': 'xsl:value-of', +\ 'attr': 'xsl:attribute', +\ 'co' : 'xsl:copy-of', +\ 'each' : 'xsl:for-each', +\ 'ap' : 'xsl:apply-templates', +\ }, +\ 'expandos': { +\ 'choose': 'xsl:choose>xsl:when+xsl:otherwise', +\ } +\ }, +\ 'jsx': { +\ 'extends': 'html', +\ 'attribute_name': {'class': 'className', 'for': 'htmlFor'}, +\ 'empty_element_suffix': ' />', +\ }, +\ 'xslt': { +\ 'extends': 'xsl', +\ }, +\ 'haml': { +\ 'indentation': ' ', +\ 'extends': 'html', +\ 'snippets': { +\ 'html:5': "!!! 5\n" +\ ."%html{:lang => \"${lang}\"}\n" +\ ."\t%head\n" +\ ."\t\t%meta{:charset => \"${charset}\"}\n" +\ ."\t\t%title\n" +\ ."\t%body\n" +\ ."\t\t${child}|\n", +\ }, +\ 'attribute_style': 'hash', +\ }, +\ 'slim': { +\ 'indentation': ' ', +\ 'extends': 'html', +\ 'snippets': { +\ 'html:5': "doctype 5\n" +\ ."html lang=\"${lang}\"\n" +\ ."\thead\n" +\ ."\t\tmeta charset=\"${charset}\"\n" +\ ."\t\ttitle\n" +\ ."\tbody\n" +\ ."\t\t${child}|\n", +\ }, +\ }, +\ 'xhtml': { +\ 'extends': 'html' +\ }, +\ 'mustache': { +\ 'extends': 'html' +\ }, +\ 'xsd': { +\ 'extends': 'html', +\ 'snippets': { +\ 'xsd:w3c': "\n" +\ ."\n" +\ ."\t\n" +\ ."\n" +\ } +\ }, +\} + +if exists('g:user_emmet_settings') + call emmet#mergeConfig(s:emmet_settings, g:user_emmet_settings) +endif + +let &cpoptions = s:save_cpo +unlet s:save_cpo + +" vim:set et: diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang.vim new file mode 100644 index 0000000..0bc416f --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang.vim @@ -0,0 +1,30 @@ +let s:exists = {} +function! emmet#lang#exists(type) abort + if len(a:type) == 0 + return 0 + elseif has_key(s:exists, a:type) + return s:exists[a:type] + endif + let s:exists[a:type] = len(globpath(&rtp, 'autoload/emmet/lang/'.a:type.'.vim')) > 0 + return s:exists[a:type] +endfunction + +function! emmet#lang#type(type) abort + let type = a:type + let base = type + let settings = emmet#getSettings() + while base != '' + for b in split(base, '\.') + if emmet#lang#exists(b) + return b + endif + if has_key(settings, b) && has_key(settings[b], 'extends') + let base = settings[b].extends + break + else + let base = '' + endif + endfor + endwhile + return 'html' +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/css.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/css.vim new file mode 100644 index 0000000..3796106 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/css.vim @@ -0,0 +1,350 @@ +function! emmet#lang#css#findTokens(str) abort + let tmp = substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '') + if tmp =~ '/' && tmp =~ '^[a-zA-Z0-9/_.]\+$' + " maybe path or something + return '' + endif + return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '') +endfunction + +function! emmet#lang#css#parseIntoTree(abbr, type) abort + let abbr = a:abbr + let type = a:type + let prefix = 0 + let value = '' + + let indent = emmet#getIndentation(type) + let aliases = emmet#getResource(type, 'aliases', {}) + let snippets = emmet#getResource(type, 'snippets', {}) + let use_pipe_for_cursor = emmet#getResource(type, 'use_pipe_for_cursor', 1) + + let root = emmet#newNode() + + " emmet + let tokens = split(abbr, '+\ze[^+)!]') + let block = emmet#util#searchRegion('{', '}') + if abbr !~# '^@' && emmet#getBaseType(type) ==# 'css' && type !=# 'sass' && block[0] ==# [0,0] && block[1] ==# [0,0] + let current = emmet#newNode() + let current.snippet = substitute(abbr, '\s\+$', '', '') . " {\n" . indent . "${cursor}\n}" + let current.name = '' + call add(root.child, deepcopy(current)) + else + for n in range(len(tokens)) + let token = tokens[n] + let prop = matchlist(token, '^\(-\{0,1}[a-zA-Z]\+\|[a-zA-Z0-9]\++\{0,1}\|([a-zA-Z0-9]\++\{0,1})\)\(\%([0-9.-]\+\%(p\|e\|em\|re\|rem\|%\)\{0,1}-\{0,1}\|-auto\)*\)$') + if len(prop) + let token = substitute(prop[1], '^(\(.*\))', '\1', '') + if token =~# '^-' + let prefix = 1 + let token = token[1:] + endif + let value = '' + for v in split(prop[2], '\d\zs-') + if len(value) > 0 + let value .= ' ' + endif + if token =~# '^[z]' + " TODO + let value .= substitute(v, '[^0-9.]*$', '', '') + elseif v =~# 'p$' + let value .= substitute(v, 'p$', '%', '') + elseif v =~# '%$' + let value .= v + elseif v =~# 'e$' + let value .= substitute(v, 'e$', 'em', '') + elseif v =~# 'em$' + let value .= v + elseif v =~# 're$' + let value .= substitute(v, 're$', 'rem', '') + elseif v =~# 'rem$' + let value .= v + elseif v =~# '\.' + let value .= v . 'em' + elseif v ==# 'auto' + let value .= v + elseif v ==# '0' + let value .= '0' + else + let value .= v . 'px' + endif + endfor + endif + + let tag_name = token + if tag_name =~# '.!$' + let tag_name = tag_name[:-2] + let important = 1 + else + let important = 0 + endif + " make default node + let current = emmet#newNode() + let current.important = important + let current.name = tag_name + + " aliases + if has_key(aliases, tag_name) + let current.name = aliases[tag_name] + endif + + " snippets + if !empty(snippets) + let snippet_name = tag_name + if !has_key(snippets, snippet_name) + let pat = '^' . join(split(tag_name, '\zs'), '\%(\|[^:-]\+-\)') + let vv = filter(sort(keys(snippets)), 'snippets[v:val] =~ pat') + if len(vv) > 0 + let snippet_name = vv[0] + else + let pat = '^' . join(split(tag_name, '\zs'), '\%(\|[^:-]\+-*\)') + let vv = filter(sort(keys(snippets)), 'snippets[v:val] =~ pat') + if len(vv) == 0 + let pat = '^' . join(split(tag_name, '\zs'), '[^:]\{-}') + let vv = filter(sort(keys(snippets)), 'snippets[v:val] =~ pat') + if len(vv) == 0 + let pat = '^' . join(split(tag_name, '\zs'), '.\{-}') + let vv = filter(sort(keys(snippets)), 'snippets[v:val] =~ pat') + endif + endif + let minl = -1 + for vk in vv + let vvs = snippets[vk] + if minl == -1 || len(vvs) < minl + let snippet_name = vk + let minl = len(vvs) + endif + endfor + endif + endif + if has_key(snippets, snippet_name) + let snippet = snippets[snippet_name] + if use_pipe_for_cursor + let snippet = substitute(snippet, '|', '${cursor}', 'g') + endif + let lines = split(snippet, "\n") + call map(lines, 'substitute(v:val, "\\( \\|\\t\\)", escape(indent, "\\\\"), "g")') + let current.snippet = join(lines, "\n") + let current.name = '' + let current.snippet = substitute(current.snippet, ';', value . ';', '') + if use_pipe_for_cursor && len(value) > 0 + let current.snippet = substitute(current.snippet, '\${cursor}', '', 'g') + endif + if n < len(tokens) - 1 + let current.snippet .= "\n" + endif + endif + endif + + let current.pos = 0 + let lg = matchlist(token, '^\%(linear-gradient\|lg\)(\s*\(\S\+\)\s*,\s*\([^,]\+\)\s*,\s*\([^)]\+\)\s*)$') + if len(lg) == 0 + let lg = matchlist(token, '^\%(linear-gradient\|lg\)(\s*\(\S\+\)\s*,\s*\([^,]\+\)\s*)$') + if len(lg) + let [lg[1], lg[2], lg[3]] = ['linear', lg[1], lg[2]] + endif + endif + if len(lg) + let current.name = '' + let current.snippet = printf("background-image:-webkit-gradient(%s, 0 0, 0 100%, from(%s), to(%s));\n", lg[1], lg[2], lg[3]) + call add(root.child, deepcopy(current)) + let current.snippet = printf("background-image:-webkit-linear-gradient(%s, %s);\n", lg[2], lg[3]) + call add(root.child, deepcopy(current)) + let current.snippet = printf("background-image:-moz-linear-gradient(%s, %s);\n", lg[2], lg[3]) + call add(root.child, deepcopy(current)) + let current.snippet = printf("background-image:-o-linear-gradient(%s, %s);\n", lg[2], lg[3]) + call add(root.child, deepcopy(current)) + let current.snippet = printf("background-image:linear-gradient(%s, %s);\n", lg[2], lg[3]) + call add(root.child, deepcopy(current)) + elseif prefix + let snippet = current.snippet + let current.snippet = '-webkit-' . snippet . "\n" + call add(root.child, deepcopy(current)) + let current.snippet = '-moz-' . snippet . "\n" + call add(root.child, deepcopy(current)) + let current.snippet = '-o-' . snippet . "\n" + call add(root.child, deepcopy(current)) + let current.snippet = '-ms-' . snippet . "\n" + call add(root.child, deepcopy(current)) + let current.snippet = snippet + call add(root.child, current) + elseif token =~# '^c#\([0-9a-fA-F]\{3}\|[0-9a-fA-F]\{6}\)\(\.[0-9]\+\)\?' + let cs = split(token, '\.') + let current.name = '' + let [r,g,b] = [0,0,0] + if len(cs[0]) == 5 + let rgb = matchlist(cs[0], 'c#\(.\)\(.\)\(.\)') + let r = eval('0x'.rgb[1].rgb[1]) + let g = eval('0x'.rgb[2].rgb[2]) + let b = eval('0x'.rgb[3].rgb[3]) + elseif len(cs[0]) == 8 + let rgb = matchlist(cs[0], 'c#\(..\)\(..\)\(..\)') + let r = eval('0x'.rgb[1]) + let g = eval('0x'.rgb[2]) + let b = eval('0x'.rgb[3]) + endif + if len(cs) == 1 + let current.snippet = printf('color:rgb(%d, %d, %d);', r, g, b) + else + let current.snippet = printf('color:rgb(%d, %d, %d, %s);', r, g, b, string(str2float('0.'.cs[1]))) + endif + call add(root.child, current) + elseif token =~# '^c#' + let current.name = '' + let current.snippet = 'color:\${cursor};' + call add(root.child, current) + else + call add(root.child, current) + endif + endfor + endif + return root +endfunction + +function! emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent) abort + let current = a:current + let value = current.value[1:-2] + let tmp = substitute(value, '\${cursor}', '', 'g') + if tmp !~ '.*{[ \t\r\n]*}$' + if emmet#useFilter(a:filters, 'fc') + let value = substitute(value, '\([^:]\+\):\([^;]*\)', '\1: \2', 'g') + else + let value = substitute(value, '\([^:]\+\):\([^;]*\)', '\1:\2', 'g') + endif + if current.important + let value = substitute(value, ';', ' !important;', '') + endif + endif + return value +endfunction + +function! emmet#lang#css#imageSize() abort + let img_region = emmet#util#searchRegion('{', '}') + if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region) + return + endif + let content = emmet#util#getContent(img_region) + let fn = matchstr(content, '\') + if len(node) + exe "normal ciw\='/* '.node.' */'\" + endif + endif + else + if line =~# mx + let space = substitute(matchstr(line, mx), mx, '\1', '') + let line = substitute(matchstr(line, mx), mx, '\2', '') + let line = space . substitute(line, '^\s*\|\s*$', '\1', 'g') + else + let mx = '^\(\s*\)\(.*\)\s*$' + let line = substitute(line, mx, '\1/* \2 */', '') + endif + call setline('.', line) + endif +endfunction + +function! emmet#lang#css#balanceTag(flag) range abort + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + else + let curpos = emmet#util#getcurpos() + endif + let block = emmet#util#getVisualBlock() + if !emmet#util#regionIsValid(block) + if a:flag > 0 + let block = emmet#util#searchRegion('^', ';') + if emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + endif + else + if a:flag > 0 + let content = emmet#util#getContent(block) + if content !~# '^{.*}$' + let block = emmet#util#searchRegion('{', '}') + if emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + endif + else + let pos = searchpos('.*;', 'nW') + if pos[0] != 0 + call setpos('.', [0, pos[0], pos[1], 0]) + let block = emmet#util#searchRegion('^', ';') + if emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + endif + endif + endif + if a:flag == -2 || a:flag == 2 + silent! exe 'normal! gv' + else + call setpos('.', curpos) + endif +endfunction + +function! emmet#lang#css#moveNextPrevItem(flag) abort + return emmet#lang#css#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#css#moveNextPrev(flag) abort + let pos = search('""\|()\|\(:\s*\zs$\)', a:flag ? 'Wbp' : 'Wp') + if pos == 2 + startinsert! + else + silent! normal! l + startinsert + endif +endfunction + +function! emmet#lang#css#splitJoinTag() abort + " nothing to do +endfunction + +function! emmet#lang#css#removeTag() abort + " nothing to do +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/elm.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/elm.vim new file mode 100644 index 0000000..2acde53 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/elm.vim @@ -0,0 +1,214 @@ +function! emmet#lang#elm#findTokens(str) abort + return emmet#lang#html#findTokens(a:str) +endfunction + +function! emmet#lang#elm#parseIntoTree(abbr, type) abort + let tree = emmet#lang#html#parseIntoTree(a:abbr, a:type) + if len(tree.child) < 2 | return tree | endif + + " Add ',' nodes between root elements. + let new_children = [] + for child in tree.child[0:-2] + let comma = emmet#newNode() + let comma.name = ',' + call add(new_children, child) + call add(new_children, comma) + endfor + call add(new_children, tree.child[-1]) + let tree.child = new_children + return tree +endfunction + +function! emmet#lang#elm#renderNode(node) + let elm_nodes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6' + \, 'div', 'p', 'hr', 'pre', 'blockquote' + \, 'span', 'a', 'code', 'em', 'strong', 'i', 'b', 'u', 'sub', 'sup', 'br' + \, 'ol', 'ul', 'li', 'dl', 'dt', 'dd' + \, 'img', 'iframe', 'canvas', 'math' + \, 'form', 'input', 'textarea', 'button', 'select', 'option' + \, 'section', 'nav', 'article', 'aside', 'header', 'footer', 'address', 'main_', 'body' + \, 'figure', 'figcaption' + \, 'table', 'caption', 'colgroup', 'col', 'tbody', 'thead', 'tfoot', 'tr', 'td', 'th' + \, 'fieldset', 'legend', 'label', 'datalist', 'optgroup', 'keygen', 'output', 'progress', 'meter' + \, 'audio', 'video', 'source', 'track' + \, 'embed', 'object', 'param' + \, 'ins', 'del' + \, 'small', 'cite', 'dfn', 'abbr', 'time', 'var', 'samp', 'kbd', 's', 'q' + \, 'mark', 'ruby', 'rt', 'rp', 'bdi', 'bdo', 'wbr' + \, 'details', 'summary', 'menuitem', 'menu'] + + if index(elm_nodes, a:node) >= 0 + return a:node + endif + return 'node "' . a:node . '"' +endfunction + +function! emmet#lang#elm#renderParam(param) + let elm_events = ["onClick", "onDoubleClick" + \, "onMouseDown", "onMouseUp" + \, "onMouseEnter", "onMouseLeave" + \, "onMouseOver", "onMouseOut" + \, "onInput", "onCheck", "onSubmit" + \, "onBlur", "onFocus" + \, "on", "onWithOptions", "Options", "defaultOptions" + \, "targetValue", "targetChecked", "keyCode"] + if index(elm_events, a:param) >= 0 + return a:param + endif + let elm_attributes = ["style", "map" , "class", "id", "title", "hidden" + \, "type", "type_", "value", "defaultValue", "checked", "placeholder", "selected" + \, "accept", "acceptCharset", "action", "autocomplete", "autofocus" + \, "disabled", "enctype", "formaction", "list", "maxlength", "minlength", "method", "multiple" + \, "name", "novalidate", "pattern", "readonly", "required", "size", "for", "form" + \, "max", "min", "step" + \, "cols", "rows", "wrap" + \, "href", "target", "download", "downloadAs", "hreflang", "media", "ping", "rel" + \, "ismap", "usemap", "shape", "coords" + \, "src", "height", "width", "alt" + \, "autoplay", "controls", "loop", "preload", "poster", "default", "kind", "srclang" + \, "sandbox", "seamless", "srcdoc" + \, "reversed", "start" + \, "align", "colspan", "rowspan", "headers", "scope" + \, "async", "charset", "content", "defer", "httpEquiv", "language", "scoped" + \, "accesskey", "contenteditable", "contextmenu", "dir", "draggable", "dropzone" + \, "itemprop", "lang", "spellcheck", "tabindex" + \, "challenge", "keytype" + \, "cite", "datetime", "pubdate", "manifest"] + + if index(elm_attributes, a:param) >= 0 + if a:param == 'type' + return 'type_' + endif + return a:param + endif + return 'attribute "' . a:param . '"' +endfunction + +function! emmet#lang#elm#toString(settings, current, type, inline, filters, itemno, indent) abort + let settings = a:settings + let current = a:current + let type = a:type + let inline = a:inline + let filters = a:filters + let itemno = a:itemno + let indent = emmet#getIndentation(type) + let dollar_expr = emmet#getResource(type, 'dollar_expr', 1) + let str = '' + + " comma between items with *, eg. li*3 + if itemno > 0 + let str = ", " + endif + + let current_name = current.name + if dollar_expr + let current_name = substitute(current.name, '\$$', itemno+1, '') + endif + + if len(current.name) > 0 + " inserted root comma nodes + if current_name == ',' + return "\n, " + endif + let str .= emmet#lang#elm#renderNode(current_name) + let tmp = '' + for attr in emmet#util#unique(current.attrs_order + keys(current.attr)) + if !has_key(current.attr, attr) + continue + endif + let Val = current.attr[attr] + + let attr = emmet#lang#elm#renderParam(attr) + + if type(Val) == 2 && Val == function('emmet#types#true') + let tmp .= ', ' . attr . ' True' + else + if dollar_expr + while Val =~# '\$\([^#{]\|$\)' + let Val = substitute(Val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endwhile + let attr = substitute(attr, '\$$', itemno+1, '') + endif + let valtmp = substitute(Val, '\${cursor}', '', '') + if attr ==# 'id' && len(valtmp) > 0 + let tmp .=', id "' . Val . '"' + elseif attr ==# 'class' && len(valtmp) > 0 + let tmp .= ', class "' . substitute(Val, ' ', '.', 'g') . '"' + else + let tmp .= ', ' . attr . ' "' . Val . '"' + endif + endif + endfor + + if ! len(tmp) + let str .= ' []' + else + let tmp = strpart(tmp, 2) + let str .= ' [ ' . tmp . ' ]' + endif + + " No children quit early + if len(current.child) == 0 && len(current.value) == 0 + "Place cursor in node with no value or children + let str .= ' [${cursor}]' + return str + endif + + let inner = '' + + " Parent contex text + if len(current.value) > 0 + let text = current.value[1:-2] + if dollar_expr + let text = substitute(text, '\%(\\\)\@\ 0 + " Text node + let text = child.value[1:-2] + if dollar_expr + let text = substitute(text, '\%(\\\)\@\ 0 + let str .= '%' . current_name + let tmp = '' + for attr in emmet#util#unique(current.attrs_order + keys(current.attr)) + if !has_key(current.attr, attr) + continue + endif + let Val = current.attr[attr] + if type(Val) == 2 && Val == function('emmet#types#true') + if attribute_style ==# 'hash' + let tmp .= ' :' . attr . ' => true' + elseif attribute_style ==# 'html' + let tmp .= attr . '=true' + end + else + if dollar_expr + while Val =~# '\$\([^#{]\|$\)' + let Val = substitute(Val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endwhile + let attr = substitute(attr, '\$$', itemno+1, '') + endif + let valtmp = substitute(Val, '\${cursor}', '', '') + if attr ==# 'id' && len(valtmp) > 0 + let str .= '#' . Val + elseif attr ==# 'class' && len(valtmp) > 0 + let str .= '.' . substitute(Val, ' ', '.', 'g') + else + if len(tmp) > 0 + if attribute_style ==# 'hash' + let tmp .= ',' + elseif attribute_style ==# 'html' + let tmp .= ' ' + endif + endif + if attribute_style ==# 'hash' + let tmp .= ' :' . attr . ' => "' . Val . '"' + elseif attribute_style ==# 'html' + let tmp .= attr . '="' . Val . '"' + end + endif + endif + endfor + if len(tmp) + if attribute_style ==# 'hash' + let str .= '{' . tmp . ' }' + elseif attribute_style ==# 'html' + let str .= '(' . tmp . ')' + end + endif + if stridx(','.settings.html.empty_elements.',', ','.current_name.',') != -1 && len(current.value) == 0 + let str .= '/' + endif + + let inner = '' + if len(current.value) > 0 + let text = current.value[1:-2] + if dollar_expr + let text = substitute(text, '\%(\\\)\@\ 0 + for child in current.child + let inner .= emmet#toString(child, type, inline, filters, itemno, indent) + endfor + let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') + let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g') + let str .= "\n" . indent . inner + endif + else + let str = current.value[1:-2] + if dollar_expr + let str = substitute(str, '\%(\\\)\@\\s*\%(\([^"'' \t]\+\)\|"\([^"]\{-}\)"\|''\([^'']\{-}\)''\)' + while len(attrs) > 0 + let match = matchstr(attrs, mx) + if len(match) ==# 0 + break + endif + let attr_match = matchlist(match, mx) + let name = attr_match[1] + let value = len(attr_match[2]) ? attr_match[2] : attr_match[3] + let current.attr[name] = value + let current.attrs_order += [name] + let attrs = attrs[stridx(attrs, match) + len(match):] + endwhile + return current +endfunction + +function! emmet#lang#haml#toggleComment() abort + let line = getline('.') + let space = matchstr(line, '^\s*') + if line =~# '^\s*-#' + call setline('.', space . matchstr(line[len(space)+2:], '^\s*\zs.*')) + elseif line =~# '^\s*%[a-z]' + call setline('.', space . '-# ' . line[len(space):]) + endif +endfunction + +function! emmet#lang#haml#balanceTag(flag) range abort + let block = emmet#util#getVisualBlock() + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + else + let curpos = emmet#util#getcurpos() + endif + let n = curpos[1] + let ml = len(matchstr(getline(n), '^\s*')) + + if a:flag > 0 + if a:flag == 1 || !emmet#util#regionIsValid(block) + let n = line('.') + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze%[a-z]')) + if l > 0 && l < ml + let ml = l + break + endif + let n -= 1 + endwhile + endif + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*%[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze[a-z]')) + if l > 0 && l > ml + let ml = l + break + endif + let n += 1 + endwhile + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*%[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + endif +endfunction + +function! emmet#lang#haml#moveNextPrevItem(flag) abort + return emmet#lang#haml#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#haml#moveNextPrev(flag) abort + let pos = search('""', a:flag ? 'Wb' : 'W') + if pos != 0 + silent! normal! l + startinsert + endif +endfunction + +function! emmet#lang#haml#splitJoinTag() abort + let n = line('.') + let sml = len(matchstr(getline(n), '^\s*%[a-z]')) + while n > 0 + if getline(n) =~# '^\s*\ze%[a-z]' + if len(matchstr(getline(n), '^\s*%[a-z]')) < sml + break + endif + let line = getline(n) + call setline(n, substitute(line, '^\s*%\w\+\%(\s*{[^}]*}\|\s\)\zs.*', '', '')) + let sn = n + let n += 1 + let ml = len(matchstr(getline(n), '^\s*%[a-z]')) + if len(matchstr(getline(n), '^\s*')) > ml + while n <= line('$') + let l = len(matchstr(getline(n), '^\s*')) + if l <= ml + break + endif + exe n 'delete' + endwhile + call setpos('.', [0, sn, 1, 0]) + else + let tag = matchstr(getline(sn), '^\s*%\zs\(\w\+\)') + let spaces = matchstr(getline(sn), '^\s*') + let settings = emmet#getSettings() + if stridx(','.settings.html.inline_elements.',', ','.tag.',') == -1 + call append(sn, spaces . ' ') + call setpos('.', [0, sn+1, 1, 0]) + else + call setpos('.', [0, sn, 1, 0]) + endif + startinsert! + endif + break + endif + let n -= 1 + endwhile +endfunction + +function! emmet#lang#haml#removeTag() abort + let n = line('.') + let ml = 0 + while n > 0 + if getline(n) =~# '^\s*\ze[a-z]' + let ml = len(matchstr(getline(n), '^\s*%[a-z]')) + break + endif + let n -= 1 + endwhile + let sn = n + while n < line('$') + let l = len(matchstr(getline(n), '^\s*%[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + if sn == n + exe 'delete' + else + exe sn ',' (n-1) 'delete' + endif +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/html.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/html.vim new file mode 100644 index 0000000..cdf440b --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/html.vim @@ -0,0 +1,954 @@ +let s:bx = '{\%("[^"]*"\|''[^'']*''\|\$#\|\${\w\+}\|\$\+\|{[^{]\+\|[^{}]\)\{-}}' +let s:mx = '\([+>]\|[<^]\+\)\{-}\s*' +\ .'\((*\)\{-}\s*' +\ .'\([@#.]\{-}[a-zA-Z_\!][a-zA-Z0-9:_\!\-$]*\|' . s:bx . '\|\[[^\]]\+\]\)' +\ .'\(' +\ .'\%(' +\ .'\%(#{[{}a-zA-Z0-9_\-\$]\+\|#[a-zA-Z0-9_\-\$]\+\)' +\ .'\|\%(\[\%("[^"]*"\|[^"\]]*\)\+\]\)' +\ .'\|\%(\.{[{}a-zA-Z0-9_\-\$]\+\|\.[a-zA-Z0-9_\-\$]\+\)' +\ .'\)*' +\ .'\)' +\ .'\%(\(' . s:bx . '\+\)\)\{0,1}' +\ .'\%(\(@-\{0,1}[0-9]*\)\{0,1}\*\([0-9]\+\)\)\{0,1}' +\ .'\(\%()\%(\(@-\{0,1}[0-9]*\)\{0,1}\*[0-9]\+\)\{0,1}\)*\)' + +function! emmet#lang#html#findTokens(str) abort + let str = a:str + let [pos, last_pos] = [0, 0] + while 1 + let tag = matchstr(str, '<[a-zA-Z].\{-}>', pos) + if len(tag) == 0 + break + endif + let pos = stridx(str, tag, pos) + len(tag) + endwhile + while 1 + let tag = matchstr(str, '{%[^%]\{-}%}', pos) + if len(tag) == 0 + break + endif + let pos = stridx(str, tag, pos) + len(tag) + endwhile + let last_pos = pos + while len(str) > 0 + let token = matchstr(str, s:mx, pos) + if token ==# '' + break + endif + if token =~# '^\s' + let token = matchstr(token, '^\s*\zs.*') + let last_pos = stridx(str, token, pos) + endif + let pos = stridx(str, token, pos) + len(token) + endwhile + let str = a:str[last_pos :-1] + if str =~# '^\w\+="[^"]*$' + return '' + endif + return str +endfunction + +function! emmet#lang#html#parseIntoTree(abbr, type) abort + let abbr = a:abbr + let type = a:type + + let settings = emmet#getSettings() + if !has_key(settings, type) + let type = 'html' + endif + if len(type) == 0 | let type = 'html' | endif + + let indent = emmet#getIndentation(type) + let pmap = { + \'p': 'span', + \'ul': 'li', + \'ol': 'li', + \'table': 'tr', + \'tr': 'td', + \'tbody': 'tr', + \'thead': 'tr', + \'tfoot': 'tr', + \'colgroup': 'col', + \'select': 'option', + \'optgroup': 'option', + \'audio': 'source', + \'video': 'source', + \'object': 'param', + \'map': 'area' + \} + + let inlineLevel = split('a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var',',') + + let custom_expands = emmet#getResource(type, 'custom_expands', {}) + if empty(custom_expands) && has_key(settings, 'custom_expands') + let custom_expands = settings['custom_expands'] + endif + + " try 'foo' to (foo-x) + let rabbr = emmet#getExpandos(type, abbr) + if rabbr == abbr + " try 'foo+(' to (foo-x) + let rabbr = substitute(abbr, '\%(+\|^\)\([a-zA-Z][a-zA-Z0-9+]\+\)+\([(){}>]\|$\)', '\="(".emmet#getExpandos(type, submatch(1)).")".submatch(2)', 'i') + endif + let abbr = rabbr + + let root = emmet#newNode() + let parent = root + let last = root + let pos = [] + while len(abbr) + " parse line + let match = matchstr(abbr, s:mx) + let str = substitute(match, s:mx, '\0', 'ig') + let operator = substitute(match, s:mx, '\1', 'ig') + let block_start = substitute(match, s:mx, '\2', 'ig') + let tag_name = substitute(match, s:mx, '\3', 'ig') + let attributes = substitute(match, s:mx, '\4', 'ig') + let value = substitute(match, s:mx, '\5', 'ig') + let basevalue = substitute(match, s:mx, '\6', 'ig') + let multiplier = 0 + substitute(match, s:mx, '\7', 'ig') + let block_end = substitute(match, s:mx, '\8', 'ig') + let custom = '' + let important = 0 + if len(str) == 0 + break + endif + if tag_name =~# '^#' + let attributes = tag_name . attributes + let tag_name = '' + endif + if tag_name =~# '[^!]!$' + let tag_name = tag_name[:-2] + let important = 1 + endif + if tag_name =~# '^\.' + let attributes = tag_name . attributes + let tag_name = '' + endif + if tag_name =~# '^\[.*\]$' + let attributes = tag_name . attributes + let tag_name = '' + endif + + for k in keys(custom_expands) + if tag_name =~ k + let custom = tag_name + let tag_name = '' + break + endif + endfor + + if empty(tag_name) + let pname = len(parent.child) > 0 ? parent.child[0].name : '' + if !empty(pname) && has_key(pmap, pname) + let tag_name = pmap[pname] + elseif !empty(pname) && index(inlineLevel, pname) > -1 + let tag_name = 'span' + elseif len(parent.child) == 0 || len(custom) == 0 + let tag_name = 'div' + else + let tag_name = custom + endif + endif + + let basedirect = basevalue[1] ==# '-' ? -1 : 1 + let basevalue = 0 + abs(basevalue[1:]) + if multiplier <= 0 | let multiplier = 1 | endif + + " make default node + let current = emmet#newNode() + + let current.name = tag_name + let current.important = important + + " aliases + let aliases = emmet#getResource(type, 'aliases', {}) + if has_key(aliases, tag_name) + let current.name = aliases[tag_name] + endif + + let use_pipe_for_cursor = emmet#getResource(type, 'use_pipe_for_cursor', 1) + + " snippets + let snippets = emmet#getResource(type, 'snippets', {}) + if !empty(snippets) + let snippet_name = tag_name + if has_key(snippets, snippet_name) + let snippet = snippet_name + while has_key(snippets, snippet) + let snippet = snippets[snippet] + endwhile + if use_pipe_for_cursor + let snippet = substitute(snippet, '|', '${cursor}', 'g') + endif + " just redirect to expanding + if type == 'html' && snippet !~ '^\s*[{\[<]' + return emmet#lang#html#parseIntoTree(snippet, a:type) + endif + let lines = split(snippet, "\n", 1) + call map(lines, 'substitute(v:val, "\\( \\|\\t\\)", escape(indent, "\\\\"), "g")') + let current.snippet = join(lines, "\n") + let current.name = '' + endif + endif + + for k in keys(custom_expands) + if tag_name =~# k + let current.snippet = '${' . (empty(custom) ? tag_name : custom) . '}' + let current.name = '' + break + elseif custom =~# k + let current.snippet = '${' . custom . '}' + let current.name = '' + break + endif + endfor + + " default_attributes + let default_attributes = emmet#getResource(type, 'default_attributes', {}) + if !empty(default_attributes) + for pat in [current.name, tag_name] + if has_key(default_attributes, pat) + if type(default_attributes[pat]) == 4 + let a = default_attributes[pat] + let current.attrs_order += keys(a) + if use_pipe_for_cursor + for k in keys(a) + let current.attr[k] = len(a[k]) ? substitute(a[k], '|', '${cursor}', 'g') : '${cursor}' + endfor + else + for k in keys(a) + let current.attr[k] = a[k] + endfor + endif + else + for a in default_attributes[pat] + let current.attrs_order += keys(a) + if use_pipe_for_cursor + for k in keys(a) + let current.attr[k] = len(a[k]) ? substitute(a[k], '|', '${cursor}', 'g') : '${cursor}' + endfor + else + for k in keys(a) + let current.attr[k] = a[k] + endfor + endif + endfor + endif + if has_key(settings.html.default_attributes, current.name) + let current.name = substitute(current.name, ':.*$', '', '') + endif + break + endif + endfor + endif + + " parse attributes + if len(attributes) + let attr = attributes + while len(attr) + let item = matchstr(attr, '\(\%(\%(#[{}a-zA-Z0-9_\-\$]\+\)\|\%(\[\%("[^"]*"\|[^"\]]*\)\+\]\)\|\%(\.[{}a-zA-Z0-9_\-\$]\+\)*\)\)') + if g:emmet_debug > 1 + echomsg 'attr=' . item + endif + if len(item) == 0 + break + endif + if item[0] ==# '#' + let current.attr.id = item[1:] + endif + if item[0] ==# '.' + let current.attr.class = substitute(item[1:], '\.', ' ', 'g') + endif + if item[0] ==# '[' + let atts = item[1:-2] + if matchstr(atts, '^\s*\zs[0-9a-zA-Z_\-:]\+\(="[^"]*"\|=''[^'']*''\|=[^ ''"]\+\)') ==# '' + let ks = [] + if has_key(default_attributes, current.name) + let dfa = default_attributes[current.name] + let ks = type(dfa) == 3 ? keys(dfa[0]) : keys(dfa) + endif + if len(ks) == 0 && has_key(default_attributes, current.name . ':src') + let ks = keys(default_attributes[current.name . ':src']) + endif + if len(ks) > 0 + let current.attr[ks[0]] = atts + else + let current.attr[atts] = '' + endif + else + while len(atts) + let amat = matchstr(atts, '^\s*\zs\([0-9a-zA-Z-:]\+\%(="[^"]*"\|=''[^'']*''\|=[^ ''"]\+\|[^ ''"\]]*\)\{0,1}\)') + if len(amat) == 0 + break + endif + let key = split(amat, '=')[0] + let Val = amat[len(key)+1:] + if key =~# '\.$' && Val ==# '' + let key = key[:-2] + unlet Val + let Val = function('emmet#types#true') + elseif Val =~# '^["'']' + let Val = Val[1:-2] + endif + let current.attr[key] = Val + if index(current.attrs_order, key) == -1 + let current.attrs_order += [key] + endif + let atts = atts[stridx(atts, amat) + len(amat):] + unlet Val + endwhile + endif + endif + let attr = substitute(strpart(attr, len(item)), '^\s*', '', '') + endwhile + endif + + " parse text + if tag_name =~# '^{.*}$' + let current.name = '' + let current.value = tag_name + else + let current.value = value + endif + let current.basedirect = basedirect + let current.basevalue = basevalue + let current.multiplier = multiplier + + " parse step inside/outside + if !empty(last) + if operator =~# '>' + unlet! parent + let parent = last + let current.parent = last + let current.pos = last.pos + 1 + else + let current.parent = parent + let current.pos = last.pos + endif + else + let current.parent = parent + let current.pos = 1 + endif + if operator =~# '[<^]' + for c in range(len(operator)) + let tmp = parent.parent + if empty(tmp) + break + endif + let parent = tmp + let current.parent = tmp + endfor + endif + + call add(parent.child, current) + let last = current + + " parse block + if block_start =~# '(' + if operator =~# '>' + let last.pos += 1 + endif + let last.block = 1 + for n in range(len(block_start)) + let pos += [last.pos] + endfor + endif + if block_end =~# ')' + for n in split(substitute(substitute(block_end, ' ', '', 'g'), ')', ',),', 'g'), ',') + if n ==# ')' + if len(pos) > 0 && last.pos >= pos[-1] + for c in range(last.pos - pos[-1]) + let tmp = parent.parent + if !has_key(tmp, 'parent') + break + endif + let parent = tmp + endfor + if len(pos) > 0 + call remove(pos, -1) + endif + let last = parent + let last.pos += 1 + endif + elseif len(n) + let st = 0 + for nc in range(len(last.child)) + if last.child[nc].block + let st = nc + break + endif + endfor + let cl = last.child[st :] + let cls = [] + for c in range(n[1:]) + for cc in cl + if cc.multiplier > 1 + let cc.basedirect = c + 1 + else + let cc.basevalue = c + 1 + endif + endfor + let cls += deepcopy(cl) + endfor + if st > 0 + let last.child = last.child[:st-1] + cls + else + let last.child = cls + endif + endif + endfor + endif + let abbr = abbr[stridx(abbr, match) + len(match):] + if abbr == '/' + let g:hoge = 1 + let current.empty = 1 + endif + + if g:emmet_debug > 1 + echomsg 'str='.str + echomsg 'block_start='.block_start + echomsg 'tag_name='.tag_name + echomsg 'operator='.operator + echomsg 'attributes='.attributes + echomsg 'value='.value + echomsg 'basevalue='.basevalue + echomsg 'multiplier='.multiplier + echomsg 'block_end='.block_end + echomsg 'abbr='.abbr + echomsg 'pos='.string(pos) + echomsg '---' + endif + endwhile + return root +endfunction + +function! s:dollar_add(base,no) abort + if a:base > 0 + return a:base + a:no - 1 + elseif a:base < 0 + return a:base - a:no + 1 + else + return a:no + endif +endfunction + +function! emmet#lang#html#toString(settings, current, type, inline, filters, itemno, indent) abort + let settings = a:settings + let current = a:current + let type = a:type + let inline = a:inline + let filters = a:filters + let itemno = a:itemno + let indent = a:indent + let dollar_expr = emmet#getResource(type, 'dollar_expr', 1) + let q = emmet#getResource(type, 'quote_char', '"') + let ct = emmet#getResource(type, 'comment_type', 'both') + let an = emmet#getResource(type, 'attribute_name', {}) + let empty_element_suffix = emmet#getResource(type, 'empty_element_suffix', settings.html.empty_element_suffix) + + if emmet#useFilter(filters, 'haml') + return emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent) + endif + if emmet#useFilter(filters, 'slim') + return emmet#lang#slim#toString(settings, current, type, inline, filters, itemno, indent) + endif + + let comment = '' + let current_name = current.name + if dollar_expr + let current_name = substitute(current_name, '\$$', itemno+1, '') + endif + + let str = '' + if len(current_name) == 0 + let text = current.value[1:-2] + if dollar_expr + " TODO: regexp engine specified + let nr = itemno + 1 + if exists('®expengine') + let text = substitute(text, '\%#=1\%(\\\)\@\ 0 + let str .= '<' . current_name + endif + for attr in emmet#util#unique(current.attrs_order + keys(current.attr)) + if !has_key(current.attr, attr) + continue + endif + let Val = current.attr[attr] + if type(Val) == 2 && Val == function('emmet#types#true') + unlet Val + let Val = 'true' + if g:emmet_html5 + let str .= ' ' . attr + else + let str .= ' ' . attr . '=' . q . attr . q + endif + if emmet#useFilter(filters, 'c') + if attr ==# 'id' | let comment .= '#' . Val | endif + if attr ==# 'class' | let comment .= '.' . Val | endif + endif + else + if dollar_expr + while Val =~# '\$\([^#{]\|$\)' + " TODO: regexp engine specified + if exists('®expengine') + let Val = substitute(Val, '\%#=1\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + else + let Val = substitute(Val, '\(\$\+\)\([^{#]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endif + endwhile + let attr = substitute(attr, '\$$', itemno+1, '') + endif + if attr ==# 'class' && emmet#useFilter(filters, 'bem') + let vals = split(Val, '\s\+') + let Val = '' + let lead = '' + for _val in vals + if len(Val) > 0 + let Val .= ' ' + endif + if _val =~# '^_' + if has_key(current.parent.attr, 'class') + let lead = current.parent.attr["class"] + if _val =~# '^__' + let Val .= lead . _val + else + let Val .= lead . ' ' . lead . _val + endif + else + let lead = split(vals[0], '_')[0] + let Val .= lead . _val + endif + elseif _val =~# '^-' + for l in split(_val, '_') + if len(Val) > 0 + let Val .= ' ' + endif + let l = substitute(l, '^-', '__', '') + if len(lead) == 0 + let pattr = current.parent.attr + if has_key(pattr, 'class') + let lead = split(pattr['class'], '\s\+')[0] + endif + endif + let Val .= lead . l + let lead .= l . '_' + endfor + else + let Val .= _val + endif + endfor + endif + if has_key(an, attr) + let attr = an[attr] + endif + if emmet#isExtends(type, 'jsx') && Val =~ '^{.*}$' + let str .= ' ' . attr . '=' . Val + else + let str .= ' ' . attr . '=' . q . Val . q + endif + if emmet#useFilter(filters, 'c') + if attr ==# 'id' | let comment .= '#' . Val | endif + if attr ==# 'class' | let comment .= '.' . Val | endif + endif + endif + unlet Val + endfor + if len(comment) > 0 && ct ==# 'both' + let str = '\n" . str + endif + if current.empty + let str .= ' />' + elseif stridx(','.settings.html.empty_elements.',', ','.current_name.',') != -1 + let str .= empty_element_suffix + else + let str .= '>' + let text = current.value[1:-2] + if dollar_expr + " TODO: regexp engine specified + let nr = itemno + 1 + if exists('®expengine') + let text = substitute(text, '\%#=1\%(\\\)\@\ 0 + for n in range(nc) + let child = current.child[n] + if child.multiplier > 1 + let str .= "\n" . indent + let dr = 1 + elseif len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1 + if nc > 1 || (len(child.name) > 0 && stridx(','.settings.html.inline_elements.',', ','.child.name.',') == -1) + let str .= "\n" . indent + let dr = 1 + elseif current.multiplier == 1 && nc == 1 && len(child.name) == 0 + let str .= "\n" . indent + let dr = 1 + endif + endif + let inner = emmet#toString(child, type, 0, filters, itemno, indent) + let inner = substitute(inner, "^\n", '', 'g') + let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') + let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g') + let str .= inner + endfor + else + if settings.html.indent_blockelement && len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1 + let str .= "\n" . indent . '${cursor}' . "\n" + else + let str .= '${cursor}' + endif + endif + if dr + let str .= "\n" + endif + let str .= '' + endif + if len(comment) > 0 + if ct ==# 'lastonly' + let str .= '' + else + let str .= "\n' + endif + endif + if len(current_name) > 0 && current.multiplier > 0 || stridx(','.settings.html.block_elements.',', ','.current_name.',') != -1 + let str .= "\n" + endif + return str +endfunction + +function! emmet#lang#html#imageSize() abort + let img_region = emmet#util#searchRegion('') + if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region) + return + endif + let content = emmet#util#getContent(img_region) + if content !~# '^<]\+>$' + return + endif + let current = emmet#lang#html#parseTag(content) + if empty(current) || !has_key(current.attr, 'src') + return + endif + let fn = current.attr.src + if fn =~# '^\s*$' + return + elseif fn !~# '^\(/\|http\)' + let fn = simplify(expand('%:h') . '/' . fn) + endif + + let [width, height] = emmet#util#getImageSize(fn) + if width == -1 && height == -1 + return + endif + let current.attr.width = width + let current.attr.height = height + let current.attrs_order += ['width', 'height'] + let html = substitute(emmet#toString(current, 'html', 1), '\n', '', '') + let html = substitute(html, '\${cursor}', '', '') + call emmet#util#setContent(img_region, html) +endfunction + +function! emmet#lang#html#encodeImage() abort + let img_region = emmet#util#searchRegion('') + if !emmet#util#regionIsValid(img_region) || !emmet#util#cursorInRegion(img_region) + return + endif + let content = emmet#util#getContent(img_region) + if content !~# '^<]\+>$' + return + endif + let current = emmet#lang#html#parseTag(content) + if empty(current) || !has_key(current.attr, 'src') + return + endif + let fn = current.attr.src + if fn !~# '^\(/\|http\)' + let fn = simplify(expand('%:h') . '/' . fn) + endif + + let [width, height] = emmet#util#getImageSize(fn) + if width == -1 && height == -1 + return + endif + let current.attr.width = width + let current.attr.height = height + let html = emmet#toString(current, 'html', 1) + call emmet#util#setContent(img_region, html) +endfunction + +function! emmet#lang#html#parseTag(tag) abort + let current = emmet#newNode() + let mx = '<\([a-zA-Z][a-zA-Z0-9]*\)\(\%(\s[a-zA-Z][a-zA-Z0-9]\+=\%([^"'' \t]\+\|"[^"]\{-}"\|''[^'']\{-}''\)\s*\)*\)\(/\{0,1}\)>' + let match = matchstr(a:tag, mx) + let current.name = substitute(match, mx, '\1', 'i') + let attrs = substitute(match, mx, '\2', 'i') + let mx = '\([a-zA-Z0-9]\+\)=\%(\([^"'' \t]\+\)\|"\([^"]\{-}\)"\|''\([^'']\{-}\)''\)' + while len(attrs) > 0 + let match = matchstr(attrs, mx) + if len(match) == 0 + break + endif + let attr_match = matchlist(match, mx) + let name = attr_match[1] + let value = len(attr_match[2]) ? attr_match[2] : attr_match[3] + let current.attr[name] = value + let current.attrs_order += [name] + let attrs = attrs[stridx(attrs, match) + len(match):] + endwhile + return current +endfunction + +function! emmet#lang#html#toggleComment() abort + let orgpos = getpos('.') + let curpos = getpos('.') + let mx = '<\%#[^>]*>' + while 1 + let block = emmet#util#searchRegion('') + if emmet#util#regionIsValid(block) + let block[1][1] += 2 + let content = emmet#util#getContent(block) + let content = substitute(content, '^$', '\1', '') + call emmet#util#setContent(block, content) + silent! call setpos('.', orgpos) + return + endif + let block = emmet#util#searchRegion('<[^>]', '>') + if !emmet#util#regionIsValid(block) + let pos1 = searchpos('<', 'bcW') + if pos1[0] == 0 && pos1[1] == 0 + return + endif + let curpos = getpos('.') + continue + endif + let pos1 = block[0] + let pos2 = block[1] + let content = emmet#util#getContent(block) + let tag_name = matchstr(content, '^<\zs/\{0,1}[^ \r\n>]\+') + if tag_name[0] ==# '/' + call setpos('.', [0, pos1[0], pos1[1], 0]) + let pos2 = searchpairpos('<'. tag_name[1:] . '\>[^>]*>', '', '', 'bnW') + let pos1 = searchpos('>', 'cneW') + let block = [pos2, pos1] + elseif tag_name =~# '/$' + if !emmet#util#pointInRegion(orgpos[1:2], block) + " it's broken tree + call setpos('.', orgpos) + let block = emmet#util#searchRegion('>', '<') + let content = '><' + call emmet#util#setContent(block, content) + silent! call setpos('.', orgpos) + return + endif + else + call setpos('.', [0, pos2[0], pos2[1], 0]) + let pos3 = searchpairpos('<'. tag_name . '\>[^>]*>', '', '', 'nW') + if pos3 == [0, 0] + let block = [pos1, pos2] + else + call setpos('.', [0, pos3[0], pos3[1], 0]) + let pos2 = searchpos('>', 'neW') + let block = [pos1, pos2] + endif + endif + if !emmet#util#regionIsValid(block) + silent! call setpos('.', orgpos) + return + endif + if emmet#util#pointInRegion(curpos[1:2], block) + let content = '' + call emmet#util#setContent(block, content) + silent! call setpos('.', orgpos) + return + endif + endwhile +endfunction + +function! emmet#lang#html#balanceTag(flag) range abort + let vblock = emmet#util#getVisualBlock() + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + else + let curpos = emmet#util#getcurpos() + endif + let settings = emmet#getSettings() + + if a:flag > 0 + let mx = '<\([a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*' + let last = curpos[1:2] + while 1 + let pos1 = searchpos(mx, 'bW') + let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) + let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze') + if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1 + let pos2 = searchpos('>', 'nW') + else + let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '', 'nW') + endif + let block = [pos1, pos2] + if pos1[0] == 0 && pos1[1] == 0 + break + endif + if emmet#util#pointInRegion(last, block) && emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + if pos1 == last + break + endif + let last = pos1 + endwhile + else + let mx = '<\([a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' + while 1 + let pos1 = searchpos(mx, 'W') + if pos1 == curpos[1:2] + let pos1 = searchpos(mx . '\zs', 'W') + let pos2 = searchpos('.\ze<', 'W') + let block = [pos1, pos2] + if emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + endif + let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) + let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze') + if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1 + let pos2 = searchpos('>', 'nW') + else + let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '', 'nW') + endif + let block = [pos1, pos2] + if pos1[0] == 0 && pos1[1] == 0 + break + endif + if emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + endwhile + endif + if a:flag == -2 || a:flag == 2 + silent! exe 'normal! gv' + else + call setpos('.', curpos) + endif +endfunction + +function! emmet#lang#html#moveNextPrevItem(flag) abort + silent! exe "normal \" + let mx = '\%([0-9a-zA-Z-:]\+\%(="[^"]*"\|=''[^'']*''\|[^ ''">\]]*\)\{0,1}\)' + let pos = searchpos('\s'.mx.'\zs', '') + if pos != [0,0] + call feedkeys('v?\s\zs'.mx."\", '') + endif +endfunction + +function! emmet#lang#html#moveNextPrev(flag) abort + let pos = search('\%(<\/\|\(""\)\|^\(\s*\)$', a:flag ? 'Wpb' : 'Wp') + if pos == 3 + startinsert! + elseif pos != 0 + silent! normal! l + startinsert + endif +endfunction + +function! emmet#lang#html#splitJoinTag() abort + let curpos = emmet#util#getcurpos() + while 1 + let mx = '<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*>' + let pos1 = searchpos(mx, 'bcnW') + let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) + let tag_name = substitute(content, '^<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\).*$', '\1', '') + let block = [pos1, [pos1[0], pos1[1] + len(content) - 1]] + if content[-2:] ==# '/>' && emmet#util#cursorInRegion(block) + let content = substitute(content[:-3], '\s*$', '', '') . '>' + call emmet#util#setContent(block, content) + call setpos('.', [0, block[0][0], block[0][1], 0]) + return + else + if tag_name[0] ==# '/' + let pos1 = searchpos('<' . tag_name[1:] . '[^a-zA-Z0-9]', 'bcnW') + call setpos('.', [0, pos1[0], pos1[1], 0]) + let pos2 = searchpos('', 'cneW') + else + let pos2 = searchpos('', 'cneW') + endif + let block = [pos1, pos2] + let content = emmet#util#getContent(block) + if emmet#util#pointInRegion(curpos[1:2], block) && content[1:] !~# '<' . tag_name . '[^a-zA-Z0-9]*[^>]*>' + let content = matchstr(content, mx)[:-2] . ' />' + call emmet#util#setContent(block, content) + call setpos('.', [0, block[0][0], block[0][1], 0]) + return + else + if block[0][0] > 0 + call setpos('.', [0, block[0][0]-1, block[0][1], 0]) + else + call setpos('.', curpos) + return + endif + endif + endif + endwhile +endfunction + +function! emmet#lang#html#removeTag() abort + let curpos = emmet#util#getcurpos() + while 1 + let mx = '<\(/\{0,1}[a-zA-Z][a-zA-Z0-9:_\-]*\)[^>]*' + let pos1 = searchpos(mx, 'bcnW') + let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) + let tag_name = matchstr(content, '^<\zs/\{0,1}[a-zA-Z0-9:_\-]*') + let block = [pos1, [pos1[0], pos1[1] + len(content) - 1]] + if content[-2:] ==# '/>' && emmet#util#cursorInRegion(block) + call emmet#util#setContent(block, '') + call setpos('.', [0, block[0][0], block[0][1], 0]) + return + else + if tag_name[0] ==# '/' + let pos1 = searchpos('<' . tag_name[1:] . '[^a-zA-Z0-9]', 'bcnW') + call setpos('.', [0, pos1[0], pos1[1], 0]) + let pos2 = searchpos('', 'cneW') + else + let pos2 = searchpos('', 'cneW') + endif + let block = [pos1, pos2] + let content = emmet#util#getContent(block) + if emmet#util#pointInRegion(curpos[1:2], block) && content[1:] !~# '^<' . tag_name . '[^a-zA-Z0-9]' + call emmet#util#setContent(block, '') + call setpos('.', [0, block[0][0], block[0][1], 0]) + return + else + if block[0][0] > 0 + call setpos('.', [0, block[0][0]-1, block[0][1], 0]) + else + call setpos('.', curpos) + return + endif + endif + endif + endwhile +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/jade.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/jade.vim new file mode 100644 index 0000000..06454a0 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/jade.vim @@ -0,0 +1,331 @@ +function! emmet#lang#jade#findTokens(str) abort + return emmet#lang#html#findTokens(a:str) +endfunction + +function! emmet#lang#jade#parseIntoTree(abbr, type) abort + return emmet#lang#html#parseIntoTree(a:abbr, a:type) +endfunction + +function! emmet#lang#jade#toString(settings, current, type, inline, filters, itemno, indent) abort + let settings = a:settings + let current = a:current + let type = a:type + let inline = a:inline + let filters = a:filters + let itemno = a:itemno + let indent = emmet#getIndentation(type) + let dollar_expr = emmet#getResource(type, 'dollar_expr', 1) + let attribute_style = emmet#getResource('jade', 'attribute_style', 'hash') + let str = '' + + let current_name = current.name + if dollar_expr + let current_name = substitute(current.name, '\$$', itemno+1, '') + endif + if len(current.name) > 0 + let str .= '' . current_name + let tmp = '' + for attr in emmet#util#unique(current.attrs_order + keys(current.attr)) + if !has_key(current.attr, attr) + continue + endif + let Val = current.attr[attr] + if type(Val) == 2 && Val == function('emmet#types#true') + if attribute_style ==# 'hash' + let tmp .= ' ' . attr . ' = true' + elseif attribute_style ==# 'html' + let tmp .= attr . '=true' + end + else + if dollar_expr + while Val =~# '\$\([^#{]\|$\)' + let Val = substitute(Val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endwhile + let attr = substitute(attr, '\$$', itemno+1, '') + endif + let valtmp = substitute(Val, '\${cursor}', '', '') + if attr ==# 'id' && len(valtmp) > 0 + let str .= '#' . Val + elseif attr ==# 'class' && len(valtmp) > 0 + let str .= '.' . substitute(Val, ' ', '.', 'g') + else + if len(tmp) > 0 + if attribute_style ==# 'hash' + let tmp .= ', ' + elseif attribute_style ==# 'html' + let tmp .= ' ' + endif + endif + if attribute_style ==# 'hash' + let tmp .= '' . attr . '="' . Val . '"' + elseif attribute_style ==# 'html' + let tmp .= attr . '="' . Val . '"' + end + endif + endif + endfor + if len(tmp) + if attribute_style ==# 'hash' + let str .= '(' . tmp . ')' + elseif attribute_style ==# 'html' + let str .= '(' . tmp . ')' + end + endif + + let inner = '' + if len(current.value) > 0 + let text = current.value[1:-2] + if dollar_expr + let text = substitute(text, '\%(\\\)\@\ 0 + for child in current.child + let inner .= emmet#toString(child, type, inline, filters, itemno, indent) + endfor + let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') + let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g') + let str .= "\n" . indent . inner + endif + else + let str = current.value[1:-2] + if dollar_expr + let str = substitute(str, '\%(\\\)\@\\s*\%(\([^"'' \t]\+\)\|"\([^"]\{-}\)"\|''\([^'']\{-}\)''\)' + while len(attrs) > 0 + let match = matchstr(attrs, mx) + if len(match) ==# 0 + break + endif + let attr_match = matchlist(match, mx) + let name = attr_match[1] + let value = len(attr_match[2]) ? attr_match[2] : attr_match[3] + let current.attr[name] = value + let current.attrs_order += [name] + let attrs = attrs[stridx(attrs, match) + len(match):] + endwhile + return current +endfunction + +function! emmet#lang#jade#toggleComment() abort + let line = getline('.') + let space = matchstr(line, '^\s*') + if line =~# '^\s*-#' + call setline('.', space . matchstr(line[len(space)+2:], '^\s*\zs.*')) + elseif line =~# '^\s*%[a-z]' + call setline('.', space . '-# ' . line[len(space):]) + endif +endfunction + +function! emmet#lang#jade#balanceTag(flag) range abort + let block = emmet#util#getVisualBlock() + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + else + let curpos = emmet#util#getcurpos() + endif + let n = curpos[1] + let ml = len(matchstr(getline(n), '^\s*')) + + if a:flag > 0 + if a:flag == 1 || !emmet#util#regionIsValid(block) + let n = line('.') + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze%[a-z]')) + if l > 0 && l < ml + let ml = l + break + endif + let n -= 1 + endwhile + endif + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*%[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze[a-z]')) + if l > 0 && l > ml + let ml = l + break + endif + let n += 1 + endwhile + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*%[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + endif +endfunction + +function! emmet#lang#jade#moveNextPrevItem(flag) abort + return emmet#lang#jade#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#jade#moveNextPrev(flag) abort + let pos = search('""', a:flag ? 'Wb' : 'W') + if pos != 0 + silent! normal! l + startinsert + endif +endfunction + +function! emmet#lang#jade#splitJoinTag() abort + let n = line('.') + let sml = len(matchstr(getline(n), '^\s*%[a-z]')) + while n > 0 + if getline(n) =~# '^\s*\ze%[a-z]' + if len(matchstr(getline(n), '^\s*%[a-z]')) < sml + break + endif + let line = getline(n) + call setline(n, substitute(line, '^\s*%\w\+\%(\s*{[^}]*}\|\s\)\zs.*', '', '')) + let sn = n + let n += 1 + let ml = len(matchstr(getline(n), '^\s*%[a-z]')) + if len(matchstr(getline(n), '^\s*')) > ml + while n <= line('$') + let l = len(matchstr(getline(n), '^\s*')) + if l <= ml + break + endif + exe n 'delete' + endwhile + call setpos('.', [0, sn, 1, 0]) + else + let tag = matchstr(getline(sn), '^\s*%\zs\(\w\+\)') + let spaces = matchstr(getline(sn), '^\s*') + let settings = emmet#getSettings() + if stridx(','.settings.html.inline_elements.',', ','.tag.',') == -1 + call append(sn, spaces . ' ') + call setpos('.', [0, sn+1, 1, 0]) + else + call setpos('.', [0, sn, 1, 0]) + endif + startinsert! + endif + break + endif + let n -= 1 + endwhile +endfunction + +function! emmet#lang#jade#removeTag() abort + let n = line('.') + let ml = 0 + while n > 0 + if getline(n) =~# '^\s*\ze[a-z]' + let ml = len(matchstr(getline(n), '^\s*%[a-z]')) + break + endif + let n -= 1 + endwhile + let sn = n + while n < line('$') + let l = len(matchstr(getline(n), '^\s*%[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + if sn == n + exe 'delete' + else + exe sn ',' (n-1) 'delete' + endif +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/less.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/less.vim new file mode 100644 index 0000000..25308a0 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/less.vim @@ -0,0 +1,47 @@ +function! emmet#lang#less#findTokens(str) abort + return emmet#lang#html#findTokens(a:str) +endfunction + +function! emmet#lang#less#parseIntoTree(abbr, type) abort + return emmet#lang#scss#parseIntoTree(a:abbr, a:type) +endfunction + +function! emmet#lang#less#toString(settings, current, type, inline, filters, itemno, indent) abort + return emmet#lang#scss#toString(a:settings, a:current, a:type, a:inline, a:filters, a:itemno, a:indent) +endfunction + +function! emmet#lang#less#imageSize() abort + call emmet#lang#css#imageSize() +endfunction + +function! emmet#lang#less#encodeImage() abort + return emmet#lang#css#encodeImage() +endfunction + +function! emmet#lang#less#parseTag(tag) abort + return emmet#lang#css#parseTag(a:tag) +endfunction + +function! emmet#lang#less#toggleComment() abort + call emmet#lang#css#toggleComment() +endfunction + +function! emmet#lang#less#balanceTag(flag) range abort + call emmet#lang#scss#balanceTag(a:flag) +endfunction + +function! emmet#lang#less#moveNextPrevItem(flag) abort + return emmet#lang#less#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#less#moveNextPrev(flag) abort + call emmet#lang#scss#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#less#splitJoinTag() abort + call emmet#lang#css#splitJoinTag() +endfunction + +function! emmet#lang#less#removeTag() abort + call emmet#lang#css#removeTag() +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/sass.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/sass.vim new file mode 100644 index 0000000..07677cf --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/sass.vim @@ -0,0 +1,160 @@ +function! emmet#lang#sass#findTokens(str) abort + return emmet#lang#css#findTokens(a:str) +endfunction + +function! emmet#lang#sass#parseIntoTree(abbr, type) abort + return emmet#lang#css#parseIntoTree(a:abbr, a:type) +endfunction + +function! emmet#lang#sass#toString(settings, current, type, inline, filters, itemno, indent) abort + let settings = a:settings + let current = a:current + let type = a:type + let inline = a:inline + let filters = a:filters + let itemno = a:itemno + let indent = a:indent + let str = '' + + let current_name = current.name + let current_name = substitute(current.name, '\$$', itemno+1, '') + if len(current.name) > 0 + let str .= current_name + let tmp = '' + for attr in keys(current.attr) + let val = current.attr[attr] + while val =~# '\$\([^#{]\|$\)' + let val = substitute(val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endwhile + let attr = substitute(attr, '\$$', itemno+1, '') + if attr ==# 'id' + let str .= '#' . val + elseif attr ==# 'class' + let str .= '.' . val + else + let tmp .= attr . ': ' . val + endif + endfor + if len(tmp) > 0 + let str .= "\n" + for line in split(tmp, "\n") + let str .= indent . line . "\n" + endfor + else + let str .= "\n" + endif + + let inner = '' + for child in current.child + let tmp = emmet#toString(child, type, inline, filters, itemno, indent) + let tmp = substitute(tmp, "\n", "\n" . escape(indent, '\'), 'g') + let tmp = substitute(tmp, "\n" . escape(indent, '\') . '$', '${cursor}\n', 'g') + let inner .= tmp + endfor + if len(inner) > 0 + let str .= indent . inner + endif + else + let text = emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent) + let text = substitute(text, '\s*;\ze\(\${[^}]\+}\)\?\(\n\|$\)', '', 'g') + return text + endif + return str +endfunction + +function! emmet#lang#sass#imageSize() abort +endfunction + +function! emmet#lang#sass#encodeImage() abort +endfunction + +function! emmet#lang#sass#parseTag(tag) abort +endfunction + +function! emmet#lang#sass#toggleComment() abort +endfunction + +function! emmet#lang#sass#balanceTag(flag) range abort + let block = emmet#util#getVisualBlock() + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + else + let curpos = emmet#util#getcurpos() + endif + let n = curpos[1] + let ml = len(matchstr(getline(n), '^\s*')) + + if a:flag > 0 + if a:flag == 1 || !emmet#util#regionIsValid(block) + let n = line('.') + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze[a-z]')) + if l > 0 && l < ml + let ml = l + break + endif + let n -= 1 + endwhile + endif + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze[a-z]')) + if l > 0 && l > ml + let ml = l + break + endif + let n += 1 + endwhile + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + endif +endfunction + +function! emmet#lang#sass#moveNextPrevItem(flag) abort + return emmet#lang#sass#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#sass#moveNextPrev(flag) abort + let pos = search('""\|\(^\s*|\s*\zs\)', a:flag ? 'Wpb' : 'Wp') + if pos == 2 + startinsert! + elseif pos != 0 + silent! normal! l + startinsert + endif +endfunction + +function! emmet#lang#sass#splitJoinTag() abort +endfunction + +function! emmet#lang#sass#removeTag() abort +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/scss.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/scss.vim new file mode 100644 index 0000000..12a8aeb --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/scss.vim @@ -0,0 +1,125 @@ +function! emmet#lang#scss#findTokens(str) abort + return emmet#lang#css#findTokens(a:str) +endfunction + +function! emmet#lang#scss#parseIntoTree(abbr, type) abort + if a:abbr =~# '>' + return emmet#lang#html#parseIntoTree(a:abbr, a:type) + else + return emmet#lang#css#parseIntoTree(a:abbr, a:type) + endif +endfunction + +function! emmet#lang#scss#toString(settings, current, type, inline, filters, itemno, indent) abort + let settings = a:settings + let current = a:current + let type = a:type + let inline = a:inline + let filters = a:filters + let itemno = a:itemno + let indent = a:indent + let str = '' + + let current_name = substitute(current.name, '\$$', itemno+1, '') + if len(current.name) > 0 + let str .= current_name + let tmp = '' + for attr in keys(current.attr) + let val = current.attr[attr] + while val =~# '\$\([^#{]\|$\)' + let val = substitute(val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endwhile + let attr = substitute(attr, '\$$', itemno+1, '') + if attr ==# 'id' + let str .= '#' . val + elseif attr ==# 'class' + let str .= '.' . val + else + let tmp .= attr . ': ' . val . ';' + endif + endfor + if len(tmp) > 0 + let str .= " {\n" + for line in split(tmp, "\n") + let str .= indent . line . "\n" + endfor + else + let str .= " {\n" + endif + + let inner = '' + for child in current.child + let inner .= emmet#toString(child, type, inline, filters, itemno) + endfor + let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') + let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g') + let str .= indent . inner . "${cursor}\n}\n" + else + return emmet#lang#css#toString(settings, current, type, inline, filters, itemno, indent) + endif + return str +endfunction + +function! emmet#lang#scss#imageSize() abort + call emmet#lang#css#imageSize() +endfunction + +function! emmet#lang#scss#encodeImage() abort + return emmet#lang#css#encodeImage() +endfunction + +function! emmet#lang#scss#parseTag(tag) abort + return emmet#lang#css#parseTag(a:tag) +endfunction + +function! emmet#lang#scss#toggleComment() abort + call emmet#lang#css#toggleComment() +endfunction + +function! emmet#lang#scss#balanceTag(flag) range abort + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + call setpos('.', curpos) + else + let curpos = emmet#util#getcurpos() + endif + if a:flag < 0 + let ret = searchpair('}', '', '.\zs{') + else + let ret = searchpair('{', '', '}', 'bW') + endif + if ret > 0 + let pos1 = emmet#util#getcurpos()[1:2] + if a:flag < 0 + let pos2 = searchpairpos('{', '', '}') + else + let pos2 = searchpairpos('{', '', '}') + endif + let block = [pos1, pos2] + if emmet#util#regionIsValid(block) + call emmet#util#selectRegion(block) + return + endif + endif + if a:flag == -2 || a:flag == 2 + silent! exe 'normal! gv' + else + call setpos('.', curpos) + endif +endfunction + +function! emmet#lang#scss#moveNextPrevItem(flag) abort + return emmet#lang#scss#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#scss#moveNextPrev(flag) abort + call emmet#lang#css#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#scss#splitJoinTag() abort + call emmet#lang#css#splitJoinTag() +endfunction + +function! emmet#lang#scss#removeTag() abort + call emmet#lang#css#removeTag() +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/slim.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/slim.vim new file mode 100644 index 0000000..d57bf1f --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lang/slim.vim @@ -0,0 +1,281 @@ +function! emmet#lang#slim#findTokens(str) abort + return emmet#lang#html#findTokens(a:str) +endfunction + +function! emmet#lang#slim#parseIntoTree(abbr, type) abort + return emmet#lang#html#parseIntoTree(a:abbr, a:type) +endfunction + +function! emmet#lang#slim#toString(settings, current, type, inline, filters, itemno, indent) abort + let current = a:current + let type = a:type + let inline = a:inline + let filters = a:filters + let itemno = a:itemno + let indent = emmet#getIndentation(type) + let dollar_expr = emmet#getResource(type, 'dollar_expr', 1) + let str = '' + + let current_name = current.name + if dollar_expr + let current_name = substitute(current.name, '\$$', itemno+1, '') + endif + if len(current.name) > 0 + let str .= current_name + for attr in emmet#util#unique(current.attrs_order + keys(current.attr)) + if !has_key(current.attr, attr) + continue + endif + let Val = current.attr[attr] + if type(Val) == 2 && Val == function('emmet#types#true') + let str .= ' ' . attr . '=true' + else + if dollar_expr + while Val =~# '\$\([^#{]\|$\)' + let Val = substitute(Val, '\(\$\+\)\([^{]\|$\)', '\=printf("%0".len(submatch(1))."d", itemno+1).submatch(2)', 'g') + endwhile + endif + let attr = substitute(attr, '\$$', itemno+1, '') + let str .= ' ' . attr . '="' . Val . '"' + endif + endfor + + let inner = '' + if len(current.value) > 0 + let str .= "\n" + let text = current.value[1:-2] + if dollar_expr + let text = substitute(text, '\%(\\\)\@\ 0 + for child in current.child + let inner .= emmet#toString(child, type, inline, filters, itemno, indent) + endfor + let inner = substitute(inner, "\n", "\n" . escape(indent, '\'), 'g') + let inner = substitute(inner, "\n" . escape(indent, '\') . '$', '', 'g') + let str .= "\n" . indent . inner + endif + else + let str = current.value[1:-2] + if dollar_expr + let str = substitute(str, '\%(\\\)\@\ 0 + let match = matchstr(attrs, mx) + if len(match) == 0 + break + endif + let attr_match = matchlist(match, mx) + let name = attr_match[1] + let value = len(attr_match[2]) ? attr_match[2] : attr_match[3] + let current.attr[name] = value + let current.attrs_order += [name] + let attrs = attrs[stridx(attrs, match) + len(match):] + endwhile + return current +endfunction + +function! emmet#lang#slim#toggleComment() abort + let line = getline('.') + let space = matchstr(line, '^\s*') + if line =~# '^\s*/' + call setline('.', space . line[len(space)+1:]) + elseif line =~# '^\s*[a-z]' + call setline('.', space . '/' . line[len(space):]) + endif +endfunction + +function! emmet#lang#slim#balanceTag(flag) range abort + let block = emmet#util#getVisualBlock() + if a:flag == -2 || a:flag == 2 + let curpos = [0, line("'<"), col("'<"), 0] + else + let curpos = emmet#util#getcurpos() + endif + let n = curpos[1] + let ml = len(matchstr(getline(n), '^\s*')) + + if a:flag > 0 + if a:flag == 1 || !emmet#util#regionIsValid(block) + let n = line('.') + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze[a-z]')) + if l > 0 && l < ml + let ml = l + break + endif + let n -= 1 + endwhile + endif + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + else + while n > 0 + let l = len(matchstr(getline(n), '^\s*\ze[a-z]')) + if l > 0 && l > ml + let ml = l + break + endif + let n += 1 + endwhile + let sn = n + if n == 0 + let ml = 0 + endif + while n < line('$') + let l = len(matchstr(getline(n), '^\s*[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + call setpos('.', [0, n, 1, 0]) + normal! V + call setpos('.', [0, sn, 1, 0]) + endif +endfunction + +function! emmet#lang#slim#moveNextPrevItem(flag) abort + return emmet#lang#slim#moveNextPrev(a:flag) +endfunction + +function! emmet#lang#slim#moveNextPrev(flag) abort + let pos = search('""\|\(^\s*|\s*\zs\)', a:flag ? 'Wpb' : 'Wp') + if pos == 2 + startinsert! + elseif pos != 0 + silent! normal! l + startinsert + endif +endfunction + +function! emmet#lang#slim#splitJoinTag() abort + let n = line('.') + while n > 0 + if getline(n) =~# '^\s*\ze[a-z]' + let sn = n + let n += 1 + if getline(n) =~# '^\s*|' + while n <= line('$') + if getline(n) !~# '^\s*|' + break + endif + exe n 'delete' + endwhile + call setpos('.', [0, sn, 1, 0]) + else + let spaces = matchstr(getline(sn), '^\s*') + call append(sn, spaces . ' | ') + call setpos('.', [0, sn+1, 1, 0]) + startinsert! + endif + break + endif + let n -= 1 + endwhile +endfunction + +function! emmet#lang#slim#removeTag() abort + let n = line('.') + let ml = 0 + while n > 0 + if getline(n) =~# '^\s*\ze[a-z]' + let ml = len(matchstr(getline(n), '^\s*[a-z]')) + break + endif + let n -= 1 + endwhile + let sn = n + while n < line('$') + let l = len(matchstr(getline(n), '^\s*[a-z]')) + if l > 0 && l <= ml + let n -= 1 + break + endif + let n += 1 + endwhile + if sn == n + exe 'delete' + else + exe sn ',' (n-1) 'delete' + endif +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/en.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/en.vim new file mode 100644 index 0000000..30713e4 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/en.vim @@ -0,0 +1,65 @@ +function! emmet#lorem#en#expand(command) abort + let wcount = matchstr(a:command, '\(\d*\)$') + let wcount = wcount > 0 ? wcount : 30 + + let common = ['lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur', 'adipisicing', 'elit'] + let words = ['exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet', + \ 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi', + \ 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi', + \ 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos', + \ 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum', + \ 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus', + \ 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus', + \ 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum', + \ 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem', + \ 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus', + \ 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente', + \ 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet', + \ 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta', + \ 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima', + \ 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim', + \ 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores', + \ 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias', + \ 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea', + \ 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt', + \ 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate', + \ 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius', + \ 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos', + \ 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore', + \ 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo', + \ 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi', + \ 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam', + \ 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique', + \ 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere', + \ 'maxime', 'corrupti'] + let ret = [] + let sentence = 0 + for i in range(wcount) + let arr = common + if sentence > 0 + let arr += words + endif + let r = emmet#util#rand() + let word = arr[r % len(arr)] + if sentence == 0 + let word = substitute(word, '^.', '\U&', '') + endif + let sentence += 1 + call add(ret, word) + if (sentence > 5 && emmet#util#rand() < 10000) || i == wcount - 1 + if i == wcount - 1 + let endc = '?!...'[emmet#util#rand() % 5] + call add(ret, endc) + else + let endc = '?!,...'[emmet#util#rand() % 6] + call add(ret, endc . ' ') + endif + if endc !=# ',' + let sentence = 0 + endif + else + call add(ret, ' ') + endif + endfor + return join(ret, '') +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/ja.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/ja.vim new file mode 100644 index 0000000..f99d8fa --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/lorem/ja.vim @@ -0,0 +1,27 @@ +scriptencoding utf-8 + +function! emmet#lorem#ja#expand(command) abort + let wcount = matchstr(a:command, '^\%(lorem\|lipsum\)\(\d*\)}$', '\1', '') + let wcount = wcount > 0 ? wcount : 30 + + let url = "http://www.aozora.gr.jp/cards/000081/files/470_15407.html" + let content = emmet#util#cache(url) + if len(content) == 0 + let content = emmet#util#getContentFromURL(url) + let content = matchstr(content, ']*>\zs.\{-}

    ') + let content = substitute(content, '[ \r]', '', 'g') + let content = substitute(content, ']*>', "\n", 'g') + let content = substitute(content, '<[^>]\+>', '', 'g') + let content = join(filter(split(content, "\n"), 'len(v:val)>0'), "\n") + call emmet#util#cache(url, content) + endif + + let content = substitute(content, "ã€\n", "ã€", "g") + let clines = split(content, '\n') + let lines = filter(clines, 'len(substitute(v:val,".",".","g"))<=wcount') + if len(lines) == 0 + let lines = clines + endif + let r = emmet#util#rand() + return lines[r % len(lines)] +endfunction diff --git a/vim-plugins/bundle/emmet-vim/autoload/emmet/util.vim b/vim-plugins/bundle/emmet-vim/autoload/emmet/util.vim new file mode 100644 index 0000000..9a5b8d3 --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/autoload/emmet/util.vim @@ -0,0 +1,349 @@ +"============================================================================== +" region utils +"============================================================================== +" deleteContent : delete content in region +" if region make from between '' and '' +" -------------------- +" begin: +" :end +" -------------------- +" this function make the content as following +" -------------------- +" begin::end +" -------------------- +function! emmet#util#deleteContent(region) abort + let lines = getline(a:region[0][0], a:region[1][0]) + call setpos('.', [0, a:region[0][0], a:region[0][1], 0]) + silent! exe 'delete '.(a:region[1][0] - a:region[0][0]) + call setline(line('.'), lines[0][:a:region[0][1]-2] . lines[-1][a:region[1][1]]) +endfunction + +" change_content : change content in region +" if region make from between '' and '' +" -------------------- +" begin: +" :end +" -------------------- +" and content is +" -------------------- +" foo +" bar +" baz +" -------------------- +" this function make the content as following +" -------------------- +" begin:foo +" bar +" baz:end +" -------------------- +function! emmet#util#setContent(region, content) abort + let newlines = split(a:content, '\n', 1) + let oldlines = getline(a:region[0][0], a:region[1][0]) + call setpos('.', [0, a:region[0][0], a:region[0][1], 0]) + silent! exe 'delete '.(a:region[1][0] - a:region[0][0]) + if len(newlines) == 0 + let tmp = '' + if a:region[0][1] > 1 + let tmp = oldlines[0][:a:region[0][1]-2] + endif + if a:region[1][1] >= 1 + let tmp .= oldlines[-1][a:region[1][1]:] + endif + call setline(line('.'), tmp) + elseif len(newlines) == 1 + if a:region[0][1] > 1 + let newlines[0] = oldlines[0][:a:region[0][1]-2] . newlines[0] + endif + if a:region[1][1] >= 1 + let newlines[0] .= oldlines[-1][a:region[1][1]:] + endif + call setline(line('.'), newlines[0]) + else + if a:region[0][1] > 1 + let newlines[0] = oldlines[0][:a:region[0][1]-2] . newlines[0] + endif + if a:region[1][1] >= 1 + let newlines[-1] .= oldlines[-1][a:region[1][1]:] + endif + call setline(line('.'), newlines[0]) + call append(line('.'), newlines[1:]) + endif +endfunction + +" select_region : select region +" this function make a selection of region +function! emmet#util#selectRegion(region) abort + call setpos('.', [0, a:region[1][0], a:region[1][1], 0]) + normal! v + call setpos('.', [0, a:region[0][0], a:region[0][1], 0]) +endfunction + +" point_in_region : check point is in the region +" this function return 0 or 1 +function! emmet#util#pointInRegion(point, region) abort + if !emmet#util#regionIsValid(a:region) | return 0 | endif + if a:region[0][0] > a:point[0] | return 0 | endif + if a:region[1][0] < a:point[0] | return 0 | endif + if a:region[0][0] == a:point[0] && a:region[0][1] > a:point[1] | return 0 | endif + if a:region[1][0] == a:point[0] && a:region[1][1] < a:point[1] | return 0 | endif + return 1 +endfunction + +" cursor_in_region : check cursor is in the region +" this function return 0 or 1 +function! emmet#util#cursorInRegion(region) abort + if !emmet#util#regionIsValid(a:region) | return 0 | endif + let cur = emmet#util#getcurpos()[1:2] + return emmet#util#pointInRegion(cur, a:region) +endfunction + +" region_is_valid : check region is valid +" this function return 0 or 1 +function! emmet#util#regionIsValid(region) abort + if a:region[0][0] == 0 || a:region[1][0] == 0 | return 0 | endif + return 1 +endfunction + +" search_region : make region from pattern which is composing start/end +" this function return array of position +function! emmet#util#searchRegion(start, end) abort + let b = searchpairpos(a:start, '', a:end, 'bcnW') + if b == [0, 0] + return [searchpairpos(a:start, '', a:end, 'bnW'), searchpairpos(a:start, '\%#', a:end, 'nW')] + else + return [b, searchpairpos(a:start, '', a:end. '', 'nW')] + endif +endfunction + +" get_content : get content in region +" this function return string in region +function! emmet#util#getContent(region) abort + if !emmet#util#regionIsValid(a:region) + return '' + endif + let lines = getline(a:region[0][0], a:region[1][0]) + if a:region[0][0] == a:region[1][0] + let lines[0] = lines[0][a:region[0][1]-1:a:region[1][1]-1] + else + let lines[0] = lines[0][a:region[0][1]-1:] + let lines[-1] = lines[-1][:a:region[1][1]-1] + endif + return join(lines, "\n") +endfunction + +" region_in_region : check region is in the region +" this function return 0 or 1 +function! emmet#util#regionInRegion(outer, inner) abort + if !emmet#util#regionIsValid(a:inner) || !emmet#util#regionIsValid(a:outer) + return 0 + endif + return emmet#util#pointInRegion(a:inner[0], a:outer) && emmet#util#pointInRegion(a:inner[1], a:outer) +endfunction + +" get_visualblock : get region of visual block +" this function return region of visual block +function! emmet#util#getVisualBlock() abort + return [[line("'<"), col("'<")], [line("'>"), col("'>")]] +endfunction + +"============================================================================== +" html utils +"============================================================================== +function! emmet#util#getContentFromURL(url) abort + let res = system(printf('%s -i %s', g:emmet_curl_command, shellescape(substitute(a:url, '#.*', '', '')))) + while res =~# '^HTTP/1.\d 3' || res =~# '^HTTP/1\.\d 200 Connection established' || res =~# '^HTTP/1\.\d 100 Continue' + let pos = stridx(res, "\r\n\r\n") + if pos != -1 + let res = strpart(res, pos+4) + else + let pos = stridx(res, "\n\n") + let res = strpart(res, pos+2) + endif + endwhile + let pos = stridx(res, "\r\n\r\n") + if pos != -1 + let content = strpart(res, pos+4) + else + let pos = stridx(res, "\n\n") + let content = strpart(res, pos+2) + endif + let header = res[:pos-1] + let charset = matchstr(content, ']\+content=["''][^;"'']\+;\s*charset=\zs[^;"'']\+\ze["''][^>]*>') + if len(charset) == 0 + let charset = matchstr(content, ']*>') + endif + if len(charset) == 0 + let charset = matchstr(header, '\nContent-Type:.* charset=[''"]\?\zs[^''";\n]\+\ze') + endif + if len(charset) == 0 + let s1 = len(split(content, '?')) + let utf8 = iconv(content, 'utf-8', &encoding) + let s2 = len(split(utf8, '?')) + return (s2 == s1 || s2 >= s1 * 2) ? utf8 : content + endif + return iconv(content, charset, &encoding) +endfunction + +function! emmet#util#getTextFromHTML(buf) abort + let threshold_len = 100 + let threshold_per = 0.1 + let buf = a:buf + + let buf = strpart(buf, stridx(buf, '')) + let buf = substitute(buf, ']*>.\{-}', '', 'g') + let buf = substitute(buf, ']*>.\{-}', '', 'g') + let res = '' + let max = 0 + let mx = '\(]\{-}>\)\|\(<\/td>\)\|\(]\{-}>\)\|\(<\/div>\)' + let m = split(buf, mx) + for str in m + let c = split(str, '<[^>]*?>') + let str = substitute(str, '<[^>]\{-}>', ' ', 'g') + let str = substitute(str, '>', '>', 'g') + let str = substitute(str, '<', '<', 'g') + let str = substitute(str, '"', '"', 'g') + let str = substitute(str, ''', '''', 'g') + let str = substitute(str, ' ', ' ', 'g') + let str = substitute(str, '¥', '\¥', 'g') + let str = substitute(str, '&', '\&', 'g') + let str = substitute(str, '^\s*\(.*\)\s*$', '\1', '') + let str = substitute(str, '\s\+', ' ', 'g') + let l = len(str) + if l > threshold_len + let per = (l+0.0) / len(c) + if max < l && per > threshold_per + let max = l + let res = str + endif + endif + endfor + let res = substitute(res, '^\s*\(.*\)\s*$', '\1', 'g') + return res +endfunction + +function! emmet#util#getImageSize(fn) abort + let fn = a:fn + + if emmet#util#isImageMagickInstalled() + return emmet#util#imageSizeWithImageMagick(fn) + endif + + if filereadable(fn) + let hex = substitute(system('xxd -p "'.fn.'"'), '\n', '', 'g') + else + if fn !~# '^\w\+://' + let path = fnamemodify(expand('%'), ':p:gs?\\?/?') + if has('win32') || has('win64') | + let path = tolower(path) + endif + for k in keys(g:emmet_docroot) + let root = fnamemodify(k, ':p:gs?\\?/?') + if has('win32') || has('win64') | + let root = tolower(root) + endif + if stridx(path, root) == 0 + let v = g:emmet_docroot[k] + let fn = (len(v) == 0 ? k : v) . fn + break + endif + endfor + endif + let hex = substitute(system(g:emmet_curl_command.' "'.fn.'" | xxd -p'), '\n', '', 'g') + endif + + let [width, height] = [-1, -1] + if hex =~# '^89504e470d0a1a0a' + let width = eval('0x'.hex[32:39]) + let height = eval('0x'.hex[40:47]) + endif + if hex =~# '^ffd8' + let pos = 4 + while pos < len(hex) + let bs = hex[pos+0:pos+3] + let pos += 4 + if bs ==# 'ffc0' || bs ==# 'ffc2' + let pos += 6 + let height = eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3]) + let pos += 4 + let width = eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3]) + break + elseif bs =~# 'ffd[9a]' + break + elseif bs =~# 'ff\(e[0-9a-e]\|fe\|db\|dd\|c4\)' + let pos += (eval('0x'.hex[pos+0:pos+1])*256 + eval('0x'.hex[pos+2:pos+3])) * 2 + endif + endwhile + endif + if hex =~# '^47494638' + let width = eval('0x'.hex[14:15].hex[12:13]) + let height = eval('0x'.hex[18:19].hex[16:17]) + endif + + return [width, height] +endfunction + +function! emmet#util#imageSizeWithImageMagick(fn) abort + let img_info = system('identify -format "%wx%h" "'.a:fn.'"') + let img_size = split(substitute(img_info, '\n', '', ''), 'x') + if len(img_size) != 2 + return [-1, -1] + endif + return img_size +endfunction + +function! emmet#util#isImageMagickInstalled() abort + if !get(g:, 'emmet_use_identify', 1) + return 0 + endif + return executable('identify') +endfunction + +function! emmet#util#unique(arr) abort + let m = {} + let r = [] + for i in a:arr + if !has_key(m, i) + let m[i] = 1 + call add(r, i) + endif + endfor + return r +endfunction + +let s:seed = localtime() +function! emmet#util#srand(seed) abort + let s:seed = a:seed +endfunction + +function! emmet#util#rand() abort + let s:seed = s:seed * 214013 + 2531011 + return (s:seed < 0 ? s:seed - 0x80000000 : s:seed) / 0x10000 % 0x8000 +endfunction + +function! emmet#util#cache(name, ...) abort + let content = get(a:000, 0, '') + let dir = expand('~/.emmet/cache') + if !isdirectory(dir) + call mkdir(dir, 'p', 0700) + endif + let file = dir . '/' . substitute(a:name, '\W', '_', 'g') + if len(content) == 0 + if !filereadable(file) + return '' + endif + return join(readfile(file), "\n") + endif + call writefile(split(content, "\n"), file) +endfunction + +function! emmet#util#getcurpos() abort + let pos = getpos('.') + if mode(0) ==# 'i' && pos[2] > 0 + let pos[2] -=1 + endif + return pos +endfunction + +function! emmet#util#closePopup() abort + return pumvisible() ? "\" : '' +endfunction diff --git a/vim-plugins/bundle/emmet-vim/doc/emmet.txt b/vim-plugins/bundle/emmet-vim/doc/emmet.txt new file mode 100644 index 0000000..ffa5e0a --- /dev/null +++ b/vim-plugins/bundle/emmet-vim/doc/emmet.txt @@ -0,0 +1,1773 @@ +*emmet.txt* *Emmet* for Vim + + ------------------------------------------------------- + Emmet: vim plugins for HTML and CSS hi-speed coding + ------------------------------------------------------- + +Author: Yasuhiro Matsumoto +WebSite: http://mattn.kaoriya.net/ +Repository: https://github.com/mattn/emmet-vim +Site: https://mattn.github.com/emmet-vim +License: BSD style license + +============================================================================== +CONTENTS *emmet-contents* + +Introduction |emmet-introduction| +Install |emmet-install| +Tutorial |emmet-tutorial| + 1. Expand abbreviation |emmet-expand-abbr| |,| + 2. Expand word |emmet-expand-word| |;| + 3. Update tag |emmet-update-tag| |u| + 4. Wrap with abbreviation |emmet-wrap-with-abbreviation| |v_,| + 5. Balance tag inward |emmet-balance-tag-inward| |d| + 6. Balance tag outward |emmet-balance-tag-outward| |D| + 7. Go to next edit point |emmet-goto-next-point| |n| + 8. Go to previous edit point |emmet-goto-previous-point| |N| + 9. Add and update size |emmet-update-image-size| |i| + 10. Merge lines |emmet-merge-lines| |m| + 11. Remove tag |emmet-remove-tag| |k| + 12. Split/join tag |emmet-split-join-tag| |j| + 13. Toggle comment |emmet-toggle-comment| |/| + 14. Make anchor from URL |emmet-make-anchor-url| |a| + 15. Make quoted text from URL |emmet-quoted-text-url| |A| + 16. Code pretty |emmet-code-pretty| |c| + 17. Lorem ipsum |emmet-lorem-ipsum| +HTML expression syntax |emmet-html-expression-syntax| + 1. Elements |emmet-html-syntax-elements| + 2. Nesting operators |emmet-html-syntax-nesting-operators| + 2.1. Child |emmet->| + 2.2. Sibling |emmet-+| + 2.3. Climb-up |emmet-^| + 2.4. Multiplication |emmet-star| + 2.5. Grouping |emmet-()| + 3. Attribute operators |emmet-html-syntax-attribute-operators| + 3.1. ID and CLASS |emmet-.| |emmet-#| + 3.2. Custom attributes |emmet-[]| + 3.3. Item numbering |emmet-$| + 3.3.1. Changing numbering origin and direction |emmet-@| + 3.4. Quote character |emmet-html-attr-quote-char| + 4. Text |emmet-{}| + 5. Implicit tag names |emmet-html-implicit-tag-names| + 6. Notes on abbreviation formatting |emmet-html-syntax-notes| + 7. Choose position to insert text when wrap abbreviation |emmet-$#| +CSS expression syntax |emmet-css-expression-syntax| + 1. Properties |emmet-css-properties| + 2. Values |emmet-css-values| + 3. Units |emmet-css-units| + 4. Vendor prefixes |emmet-css-vendor-prefixes| +Commands |emmet-commands| + :Emmet |:Emmet| + :EmmetInstall |:EmmetInstall| +Variables |emmet-variables| + g:emmet_html5 |g:emmet_html5| + g:emmet_docroot |g:emmet_docroot| + g:emmet_curl_command |g:emmet_curl_command| + g:user_emmet_complete_tag |g:user_emmet_complete_tag| + g:user_emmet_leader_key |g:user_emmet_leader_key| + g:user_emmet_install_global |g:user_emmet_install_global| + g:user_emmet_install_command |g:user_emmet_install_command| + g:user_emmet_settings |g:user_emmet_settings| + g:user_emmet_mode |g:user_emmet_mode| +Customize |emmet-customize| + 1. Key mappings |emmet-customize-key-mappings| + 2. Indent size |emmet-indent-size| + 3. Define tag's behavior |emmet-define-tags-behavior| + 4. Adding custom snippets |emmet-custom-snippets| +Filters |emmet-filters-list| + Escapes XML-unsafe characters |emmet-filter-e| + Add comments around 'important tags' |emmet-filter-c| + Outputs as a single line |emmet-filter-s| + Trim list markers |emmet-filter-t| +Links |emmet-links| +ToDo |emmet-todo| + +============================================================================== +INTRODUCTION *emmet-introduction* *emmet* + +Emmet is an editor plugin for high-speed HTML, XML, XSL (or any other +structured code format) coding and editing. The core of this plugin is a +powerful abbreviation engine which allows you to expand expressions, +similar to CSS selectors, into HTML code: +> + div#page>div.logo+ul#navigation>li*5>a +< +can be expanded into: +> +
    + + +
    +< +Read more about current Emmet syntax + |emmet-html-expression-syntax| + |emmet-css-expression-syntax| + http://docs.emmet.io/abbreviations/ + +Abbreviation engine has a modular structure which allows you +to expand abbreviations into different languages. +Emmet currently supports CSS, HTML, XML/XSL and HAML, Slim languages +via filters (see |emmet-filter|). + +============================================================================== +INSTALL *emmet-install* + +Install the distributed files into Vim runtime directory which is usually +'~/.vim/', or '$HOME/vimfiles' on Windows. + +If you install pathogen (https://github.com/tpope/vim-pathogen) +that provided by Tim Pope, you should extract the +file into 'bundle' directory. + +============================================================================== +TUTORIAL *emmet-tutorial* + +If you are seeing this file as :help, then you can't edit this file. +You should copy this section and create new buffer, paste and write as +'emmet-tutor.txt'. Formally, open the file to start tutorial. + +1. Expand abbreviation *emmet-expand-abbr* *,* + + Type abbreviation as 'div>p#foo$*3>a' and type ','. +> +
    +

    + +

    +

    + +

    +

    + +

    +
    +< +2. Expand abbreviation *emmet-expand-word* *;* + + When you want to expand word except html tokens like below, use this. +> + foo +< + This will be expanded like: +> + + +3. Update tag *emmet-update-tag* *u* + + The begining of tags '
    ' on below +> +
    foo
    +< + Type 'u' request 'Enter Abbreviation:'. Then type +> + .global +< + This will be expanded like: +> +
    foo
    +< +4. Wrap with abbreviation *emmet-wrap-with-abbreviation* *v_,* + + Write as below. +> + test1 + test2 + test3 +< + Then do visual select (line wise) and type ','. + If you request 'Tag:', then type +> + ul>li* +< + Result: +> +
      +
    • test1
    • +
    • test2
    • +
    • test3
    • +
    +< + If you type tag name, for example +> + blockquote +< + then you'll see as following: +> +
    + test1 + test2 + test3 +
    +< + See also: |emmet-filter-t|, |emmet-$#| + +5. Balance tag inward *emmet-balance-tag-inward* *d* + + To select inward of '
      ' tag, type 'd' in insert mode. +> +
        + *
      • +
      • +
      • +
      +< + If cursor is at '*', 'd' select from begin of '
        ' to end of '
      '. + If cursor is at first of '
    • ', it select '
    • '. + +6. Balance tag outward *emmet-balance-tag-outward* *D* + + To select outward of '
        ' tag type 'D' in insert mode. +> +
          + *
        • +
        • +
        • +
        +< + If cursor is at '*', 'D' select from next letter of '
          ' + to previous letter of '
        '. + If cursor is at first of '
      • ', it select '
      • '. + +7. Go to next edit point *emmet-goto-next-point* *n* + + To jump next point that need to edit, type 'n' in insert mode. +> + *
        foo
        +
        +< + If cursor is at '*', type 'n' to move a cursor + into attribute value of '
        ' specified id as 'foo'. + And type again 'n' to move a cursor + into inner of '
        ' specified id as 'bar'. + +8. Go to previous edit point *emmet-goto-previous-point* *N* + + To jump previous point that need to edit, type 'N' in insert mode. +> +
        foo
        +
        * +< + If cursor is at '*', type 'N' to move a cursor + into '
        ' specified id as 'bar'. + And type again 'N' to move a cursor + into attribute value of 'foo'. + +9. Add and update size *emmet-update-image-size* *i* + + To add or update 'width' and 'height' attributes of image, + type 'i' on '' tag +> + +< + Type 'i' on '' tag +> + +< + If you change image, then type it again. it will be following. +> + +< + Image size retrieved using 'identify' (ImageMagick.org) (if available) + or |xxd|. + +10. Merge lines *emmet-merge-lines* *m* + + To join multi line text like following, type |J|. +> +
          +
        • +
        • +
        • +
        +< + If you select part of line include '
      • ' and type |m|, + it will be following. +> +
          +
        • +
        +< +11. Remove tag *emmet-remove-tag* *k* + + To remove tag in the block, type 'k'. +> + +< + Type 'k' in insert mode, then +> +
        + +
        +< + And type 'k' in there again, then '
        ' will be removed. + +12. Split/join tag *emmet-split-join-tag* *j* + + To join block, type 'j'. +> +
        + cursor is here +
        +< + Type 'j' in insert mode. Then, +> +
        +< + And type 'j' in there again. +> +
        +
        +< +13. Toggle comment *emmet-toggle-comment* */* + + Move cursor to block +> +
        + hello world +
        +< + Type '/' in insert mode. +> + +< + Type '/' in there again. +> +
        + hello world +
        +< +14. Make anchor from URL *emmet-make-anchor-url* *a* + + Move cursor to URL +> + http://www.google.com/ +< + Type 'a' +> + Google +< + Text retrieved using command, specified by |g:emmet_curl_command|. + +15. Make quoted text from URL *emmet-quoted-text-url* *A* + + Move cursor to URL +> + https://github.com/ +< + Type 'A' +> +
        + Secure source code hosting and collaborative development - GitHub
        +

        How does it work? Get up and running in seconds by forking a project, pushing an existing repository...

        + https://github.com/ +
        +< + Text retrieved using command, specified by |g:emmet_curl_command|. + +16. Code pretty *emmet-code-pretty* *c* + + Select code block, for example select following code from 'int main()'. +> +

        Writing in C language

        + + int main() { + puts("hello world"); + } +< + Type 'c' +> + int main() {
        +   puts("hello world");
        + }
        +< + To convert text into html used command |:TOhtml|. + +17. Lorem ipsum *emmet-lorem-ipsum* + + To insert dummy text (30 words by default). +> + div>lorem +< + Type |,| +> +
        Adipisicing asperiores deleniti ipsum fuga deserunt perferendis + molestiae sunt excepturi aut quo nihil! Optio accusantium corporis molestiae + deserunt ab, veritatis commodi. Eius nobis ab deserunt magni iure quo + laboriosam laboriosam.
        +< + For japanese user, put like follow into your |g:user_emmet_settings|: +> + let g:user_emmet_settings = { + ... + + \ 'custom_expands1' : { + \ '^\%(lorem\|lipsum\)\(\d*\)$' : function('emmet#lorem#ja#expand'), + \ }, + + ... +< + You will get japanese dummy text. Text retrieved from url + 'http://www.aozora.gr.jp/cards/000081/files/470_15407.html' + using command, specified by |g:emmet_curl_command|. + + To insert 3 words of dummy text. +> + div>lorem3 +< + Type |,| +> +
        + Elit libero id. +
        +< +============================================================================== +HTML EXPRESSION SYNTAX *emmet-html-expression-syntax* + +Emmet uses syntax similar to CSS selectors for describing elements' positions +inside generated tree and elements' attributes. + +1. Elements *emmet-html-syntax-elements* + + You can use elements' names like 'div' or 'p' to generate HTML tags. +> + p ->

        + div ->
        +< + You can write any word and transform it into a tag: +> + foo -> + bar -> +< + Emmet knowns set of empty elements: +> + br ->
        or
        + meta -> or +< + To choose between HTML '>' and XHTML ' />' use |g:emmet_html5| or + |g:user_emmet_settings|: +> + let g:user_emmet_settings = { + \ ... + \ 'html': { + \ ... + \ 'empty_element_suffix': ' />', + \ ... + \ }, + \ ... + \} +< + Emmet will automatically insert some attributes: +> + a -> + link -> +< + Set of inserted attributes can be changed using |g:user_emmet_settings|: +> + let s:emmet_settings = { + \ ... + \ 'html': { + \ ... + \ 'default_attributes': { + \ ... + \ 'a': {'href': ''}, + \ 'ins': {'datetime': '${datetime}'}, + \ 'iframe': [{'src': ''}, {'frameborder': '0'}], + \ 'textarea': [{'name': ''}, {'id': ''}, {'cols': '30'}, {'rows': '10'}], + \ ... + \ }, + \ ... + \ }, + \ ... + \} +< +2. Nesting operators *emmet-html-syntax-nesting-operators* + + Nesting operators are used to position abbreviation elements + inside generated tree: whether it should be placed + inside or near the context element. + + Operator Description Link ~ + > Child |emmet->| + + Sibling |emmet-+| + ^ Climb-up |emmet-^| + * Multiplication |emmet-star| + () Grouping |emmet-()| + +2.1. Child *emmet->* + + You can use '>' operator to nest elements inside each other: +> + div>ul>li +< + will produce +> +
        +
          +
        • +
        +
        +< +2.2. Sibling *emmet-+* + + Use '+' operator to place elements near each other, on the same level: +> + div+p+bq +< + will output +> +
        +

        +
        +< +2.3. Climb-up *emmet-^* + + With '>' operator you're descending down the generated tree and + positions of all sibling elements will be resolved + against the most deepest element: +> + div+div>p>span+em +< + will be expanded to +> +
        +
        +

        + + +

        +
        +< + With '^' operator, you can climb one level up the tree and change context + where following elements should appear: +> + div+div>p>span+em^bq +< + outputs to +> +
        +
        +

        + + +

        +
        +
        +< + You can use as many '^' operators as you like, + each operator will move one level up: +> + div+div>p>span+em^^^bq +< + will output to +> +
        +
        +

        + + +

        +
        +
        +< +2.4. Multiplication *emmet-star* + + With '*' operator you can define how many times element should be outputted: +> + ul>li*5 +< + outputs to +> +
          +
        • +
        • +
        • +
        • +
        • +
        +< + Expression may contain several '*' operators: +> + tr*2>td*3 +< + become +> + + + + + + + + + + +< +2.5. Grouping *emmet-()* + + Parentheses '()' are used by Emmets' power users for grouping subtrees + in complex abbreviations: +> + div>(header>ul>li*2>a)+footer>p +< + expands to +> +
        +
        +
          +
        • +
        • +
        +
        +
        +

        +
        +
        +< + If you're working with browser's DOM, you may think of groups + as Document Fragments: each group contains abbreviation subtree and + all the following elements are inserted at the same level + as the first element of group. + + You can nest groups inside each other and + combine them with multiplication '*' operator: +> + (div>dl>(dt+dd)*3)+footer>p +< + produces +> +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +
        +

        +
        +< + With groups, you can literally write full page mark-up + with a single abbreviation, but please don't do that. + +3. Attribute operators *emmet-html-syntax-attribute-operators* + + Attribute operators are used to modify attributes of outputted elements. + For example, in HTML and XML you can quickly add 'class' attribute + to generated element. + + Operator Description Link ~ + . Attribute 'class' |emmet-.| + # Attribute 'id' |emmet-#| + [] Custom attributes |emmet-[]| + $ Number |emmet-$| + @ Number origin and direction |emmet-@| + +3.1. ID and CLASS *emmet-.* *emmet-#* + + In CSS, you use 'elem#id' and 'elem.class' notation to reach the elements + with specified 'id' or 'class' attributes. + In Emmet, you can use the very same syntax to add these attributes + to specified element: +> + span.class1 -> + span.class1.class2 -> + div#wrapper ->
        + div#wrapper.content ->
        +< + More complex expression: +> + div#header+div.page+div#footer.class1.class2.class3 +< + will output +> + +
        + +< +3.2. Custom attributes *emmet-[]* + + You can use '[attr]' notation (as in CSS) + to add custom attributes to your element: +> + td[title="Hello world!" colspan=3] +< + outputs +> + +< + You can place as many attributes as you like inside square brackets. + + Attribute values may be omitted: +> + td[colspan title] +< + will produce +> + +< + You can use single or double quotes for quoting attribute values. +> + div[a='value1' b="value2"] +< + become +> +
        +< + You don't need to quote values if they don't contain spaces: +> + td[title=hello colspan=3] +< + will output +> + +< +3.3. Item numbering *emmet-$* + + With multiplication '*' operator you can repeat elements, + but with '$' you can number them. + Place '$' operator inside element's name, attribute's name or + attribute's value to output current number of repeated element: +> + ul>li.item_$*5 +< + outputs to +> +
          +
        • +
        • +
        • +
        • +
        • +
        +< + You can use multiple '$' in a row to pad number with zeroes: +> + ul>li.item_$$$*5 +< + outputs to +> +
          +
        • +
        • +
        • +
        • +
        • +
        +< + Also '$' can be used in element name and in text (|emmet-{}|): +> + h$[title=item$]{Header $}*3 +< + transformed to +> +

        Header 1

        +

        Header 2

        +

        Header 3

        +< +3.3.1. Changing numbering origin and direction *emmet-@* + + With '@' modifier, you can change + - numbering direction (ascending or descending) and + - origin (i. e. start value). + + For example, to change direction, add '@-' after '$': +> + ul>li.item_$@-*5 +< + outputs to +> +
          +
        • +
        • +
        • +
        • +
        • +
        +< + To change counter origin value, add '@N' modifier to '$': +> + ul>li.item_$@3*5 +< + transforms to +> +
          +
        • +
        • +
        • +
        • +
        • +
        +< + You can use these modifiers together: +> + ul>li.item_$@-3*5 +< + is transformed to +> +
          +
        • +
        • +
        • +
        • +
        • +
        +> +3.4. Quote character *emmet-html-attr-quote-char* + + |g:user_emmet_settings| may be used to change attribute quote character: +> + let g:user_emmet_settings = { + ... + \ 'html' : { + ... + \ 'quote_char': "'", + ... + \ }, + ... + \} +< + Then abbreviation +> + a[target=_blank] +< + will expand to +> + +< + instead of +> + +< + Default quote is '"'. + +4. Text *emmet-{}* + + You can use curly braces to add text to element: +> + a{Click me} +< + will produce +> + Click me +< + Note that '{text}' is used and parsed as a separate element + (like, 'div', 'p' etc), but has a special meaning + when written right after element. For example, +> + a{click} +< + and +> + a>{click} +< + will produce the same output, but +> + a{click}+b{here} +< + and +> + a>{click}+b{here} +< + won't: +> + + clickhere + + + clickhere +< + In second example the '' element is placed inside '' element. + And that's the difference: when '{text}' is written right after element, + it doesn't change parent context. + Here's more complex example showing why it is important: +> + p>{Click }+a{here}+{ to continue} +< + produces +> +

        Click here to continue

        +< + In this example, to write 'Click here to continue' inside '

        ' element + we have explicitly move down the tree with '>' operator after 'p', + but in case of 'a' element we don't have to, since we need '' element + with here word only, without changing parent context. + + For comparison, here's the same abbreviation + written without child '>' operator: +> + p{Click }+a{here}+{ to continue} +< + produces +> +

        Click

        + here to continue +< +5. Implicit tag names *emmet-html-implicit-tag-names* + + Even with such a powerful abbreviation engine, + which can expand large HTML structures from short abbreviation, + writing tag names may be very tedious. + + In many cases you can skip typing tag names and + Emmet will substitute it for you. + For example, instead of > + div.content +< you can simply write > + .content +< and expand it into > +
        +< + Other examples: +> + .wrapper ->
        + #popup -> +< + When you expand abbreviation, Emmet tries to grab parent context, + e. g. the HTML element, inside which you're expanding the abbreviation. + If the context was grabbed successfully, + Emmet uses its name to resolve implicit names. + Emmet looks at the parent tag name every time + you're expanding the abbreviation with an implicit name. + Here's how it resolves the names for some parent elements: + + Inserted element Parent elements ~ + li ul, ol + tr table, tbody, thead, tfoot + td tr + option select, optgroup + span Inline elements + div Block elements + + Take a look at some abbreviations equivalents + with implicit and explicit tag names: +> + .wrap>.content -> div.wrap>div.content + em>.info -> em>span.info + ul>.item*3 -> ul>li.item*3 + table>.row>.col -> table>tr.row>td.col + table>#row$*4>[colspan=2] -> table>tr#row$*4>td[colspan=2] +< +6. Notes on abbreviation formatting *emmet-html-syntax-notes* + + When you get familiar with Emmet's abbreviations syntax, + you may want to use some formatting to make your abbreviations more readable. + For example, use spaces between elements and operators, like this: +> + (header > ul.nav > li*5) + footer +< + But it won't work, because space is a stop symbol + where Emmet stops abbreviation parsing. + + Many users mistakenly think that each abbreviation + should be written in a new line, but they are wrong: + you can type and expand abbreviation anywhere in the text: + + This is why Emmet needs some indicators (like spaces) + where it should stop parsing to not expand anything that you don't need. + If you're still thinking that such formatting is required + for complex abbreviations to make them more readable: + - abbreviations are not a template language, + they don't have to be "readable", + they have to be "quickly expandable and removable"; + - you don't really need to write complex abbreviations. + Stop thinking that "typing" is the slowest process in web-development. + You'll quickly find out that constructing a single complex abbreviation + is much slower and error-prone than constructing and typing + a few short ones. + +7. Choose position to insert text when wrap abbreviation *emmet-$#* + + When wrap abbreviation (|emmet-wrap-with-abbreviation|) you can choose + position to insert text using '$#' operator. + Operator '$#' may be used only inside |emmet-[]| and/or |emmet-{}|. + + For example, do visual select (line wise) following text: +> + First + Second + Third +< + Then press ',' and type +> + ul>li[ title="[$#]" ]* +< + Result: +> +
          +
        • First
        • +
        • Second
        • +
        • Third
        • +
        +< + You may type +> + input[ type=input value=$# ] +< + to get +> + + + +< + Using '$#' you can type text (|emmet-{}|) only once: +> + a[title=$#]{foo} +< + will be expanded to +> + foo +< +============================================================================== +CSS EXPRESSION SYNTAX *emmet-css-expression-syntax* + +1. Properties *emmet-css-properties* + + Emmet has a lot of predefined snippets for CSS properties. +> + +< + become +> + +< + In above example '|' denotes a cursor (caret) position. + + Other examples: +> + t -> top: ; + d -> display: ; + o -> outline: ; + ov -> overflow: ; + cu -> cursor: ; + bdrs -> border-radius: ; +< + '+' operator may be used to insert number of properties: +> + m1+p2 +< + become +> + margin: 1px; + padding: 2px; +< +2. Values *emmet-css-values* + + Some properties have default values: +> + c -> color: #000; + bgc -> background-color: #FFF; + zoo -> zoom: 1; +< + To insert predefined property value after abbreviation + type colon ':' and first character of predefined keyword: +> + d:n -> display: none; + d:b -> display: block; + d:i -> display: inline; +< + Numerical value can be typed directly after abbreviation: +> + m10 -> margin: 10px; + m2e -> margin: 2em; +< + Use a hyphen '-' to separate some numerical values: +> + m10-20 -> margin: 10px 20px; + p1-2-3 -> padding: 1px 2px 3px; +< + To negative values + precede the first value with hyphen and all the rest with double hyphens: +> + m-10 -> margin: -10px; + m-1--2 -> margin: -1px -2px; + p-2--1-0-1 -> padding: -2px -1px 0 1px; +< + To insert '!important' append '!' to property abbreviation: +> + m! -> margin: !important; + bac! -> background: !important; +< + You can use special abbreviation 'lg(...)' + to insert definition of linear gradient. Example: +> + lg(left, #fc0 30%, red) +< + will expand to +> + background-image: -webkit-gradient(left, 0 0, 0 100, from(#fc0 30%), to(red)); + background-image: -webkit-linear-gradient(#fc0 30%, red); + background-image: -moz-linear-gradient(#fc0 30%, red); + background-image: -o-linear-gradient(#fc0 30%, red); + background-image: linear-gradient(#fc0 30%, red); +< +3. Units *emmet-css-units* + + By default, when you expand an abbreviation with integer value, + Emmet outputs it with a 'px' unit: +> + bor2 -> border: 2px; + fs100 -> font-size: 100px; + miw20 -> min-width: 20px; +< + By default, if you're expanding an abbreviation with a float value, + it is outputted with an 'em' unit: +> + fs1.5 -> font-style: 1.5em; +< + But you can explicitly provide the unit name + by putting one of characters right after value: + + Character Unit ~ + p % + e em + + Examples: +> + fs2e -> font-style: 2em; + w100p -> width: 100%; +< +4. Vendor prefixes *emmet-css-vendor-prefixes* + + To automatically create vendor-prefixed copies of property, + precede abbreviation with a hyphen '-'. For example, abbreviation +> + -bdrs +< + will be expanded into +> + -webkit-border-radius: ; + -moz-border-radius: ; + border-radius: ; +< +============================================================================== +COMMANDS *emmet-commands* + +:Emmet {expression} *:Emmet* + Expand {expression} and insert result under cursor. + {expression} is |emmet-html-expression|. + Also see |g:user_emmet_install_command|. + +:EmmetInstall *:EmmetInstall* + Create Emmet mappings to current buffer + (|mapping|, |:map-|) and, + if set |g:user_emmet_complete_tag|, + change |'omnifunc'| option to emmet#completeTag() + +============================================================================== +VARIABLES *emmet-variables* + +g:emmet_html5 *g:emmet_html5* + If set to 1, enable HTML 5 support: + - use ">" instead of "/>": > + + +< - omit some HTML 4 attributes: > + ', + \ 'skip' : s:skipPattern, + \ }, + \} + +let s:topFT = 'eruby' + +fun! XPT_erubyFiletypeDetect() "{{{ + let pos = [ line( "." ), col( "." ) ] + + let synName = xpt#util#NearestSynName() + + if synName == '' + " top level ft is html + return s:topFT + + else + + for [ name, ftPattern ] in items( s:pattern ) + let pos = searchpairpos( ftPattern.start, ftPattern.mid, ftPattern.end, 'nbW', ftPattern.skip ) + if pos != [0, 0] + return name + endif + endfor + + if synName =~ '^\cjavascript' + return 'javascript' + elseif synName =~ '^\ccss' + return 'css' + endif + + return s:topFT + + endif + +endfunction "}}} + +if exists( 'b:XPTfiletypeDetect' ) + unlet b:XPTfiletypeDetect +endif +let b:XPTfiletypeDetect = function( 'XPT_erubyFiletypeDetect' ) + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/eruby/eruby.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/eruby/eruby.xpt.vim new file mode 100644 index 0000000..81c4581 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/eruby/eruby.xpt.vim @@ -0,0 +1,21 @@ +XPTemplate priority=lang- + +XPTinclude + \ _common/common + \ html/html + \ html/eruby* + +XPTembed + \ ruby/ruby + \ javascript/javascript + \ css/css + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + + + + +" ================================= Wrapper =================================== + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/factor/factor.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/factor/factor.xpt.vim new file mode 100644 index 0000000..bcb87e3 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/factor/factor.xpt.vim @@ -0,0 +1,93 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTinclude + \ _common/common + + +" ========================= Function and Variables ============================= +fun! s:f.ModuleName() + let rootfolder = substitute(getcwd(), '^.*[\\/]\([^\\/]\+\)$', '\1', '') + let filename = rootfolder . '/' . expand('%:h:h') . '/' . expand('%:t:r') + let stripped = substitute( filename, '[\\/]', '.', 'g' ) + + return substitute( stripped, "-tests$", ".tests", '' ) +endfunction +" ================================= Snippets =================================== + +XPT alias "ALIAS: ... ... +ALIAS: `newword^ `oldword^ + +XPT const "CONSTANT: ... ... +CONSTANT: `word^ `constantValue^ + +XPT if "... [ ... ] [ ... ] if +`cond^ [ `then^ ] [ `else^ ] if + +XPT times "... [ ... ] times +`count^ [ `what^ ] times + +XPT mod " USING: ... IN: ... +XSET moduleName=ModuleName() +USING: kernel sequences accessors ; +IN: `moduleName^ + +XPT quote " [ ... ] +[ `cursor^ ] + +XPT arr " { ... } +{ `cursor^ } + +XPT vec " V{ ... } +V{ `cursor^ } + +XPT bi " [ ... ] [ ... ] bi +[ `first^ ] [ `cursor^ ] bi + +XPT tri " [ ... ] [ ... ] [ ... ] tri +[ `first^ ] [ `second^ ] [ `cursor^ ] tri + +XPT map " [ ... ] map +[ `cursor^ ] map + +XPT filter " [ ... ] filter +[ `cursor^ ] filter + +XPT dip " [ ... ] dip +[ `cursor^ ] dip + +XPT cleave " { [ ... ] ... } cleave +{ [ `code^ ]`...^ + [ `code^ ]`...^ +} cleave + +XPT when " [ ... ] when +[ `cursor^ ] when + +XPT unless " [ ... ] unless +[ `cursor^ ] unless + +XPT keep " [ ... ] keep +[ `cursor^ ] keep + +XPT cond " { { [ ... ] [ ... ] } } cond +{ { [ `cond^ ] [ `code^ ] }`...^ + { [ `cond^ ] [ `code^ ] }`...^`default...{{^ + [ `cursor^ ]`}}^ +} cond + +XPT case " { { ... [ ... ] } } case +{ { `case^ [ `code^ ] }`...^ + { `case^ [ `code^ ] }`...^`default...{{^ + [ `cursor^ ]`}}^ +} case + +XPT test "[ ... ] [ ... ] unit-test +{ `ret^ } [ `test^ ] unit-test + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/gitconfig/gitconfig.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/gitconfig/gitconfig.xpt.vim new file mode 100644 index 0000000..28920c0 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/gitconfig/gitconfig.xpt.vim @@ -0,0 +1,24 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + + +XPTinclude + \ _common/common + + +XPT branch " [branch "..."] +[branch "`branchName^"]`remote...{{^ + remote = `remote^`}}^`merge...{{^ + merge = refs/heads/`branchName^`}}^ + +XPT remote " [remote "..."] +[remote "`remoteName^"] + url = `fetchUrl^ + fetch = `fetchRef^ + +XPT user " Basic user configuration +[user] + name = `$Author^ + email = `$Email^ + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/gnuplot/gnuplot.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/gnuplot/gnuplot.xpt.vim new file mode 100644 index 0000000..58faed2 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/gnuplot/gnuplot.xpt.vim @@ -0,0 +1,34 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTinclude + \ _common/common + +XPT skeleton " basic file skeleton +set title "`plotTitle^" +set xlabel "`axisLabel^" +set ylabel "`ordinateLabel^" + +plot "`valueFile^" title "`valueTitle^" `using...{{^using `columns^ `}}^ with linespoint + +XPT label " axis labels +set xlabel "`axisLabel^" +set ylabel "`ordinateLabel^" + +XPT fun " ... ( ... ) = ... +`funName^( `args^ )=`cursor^ + +XPT range " set xrange ...; set yrange ... +set xrange [`xMin^:`xMax^] +set yrange [`yMin^:`yMay^] + +XPT tics " set xtics & ytics +set xtics `xTics^ +set ytics `yTics^ + +XPT term " Change output terminal +XSET termMode=Choose(['svg', 'canvas','latex', 'postscript', 'x11','eps', 'xterm']) +set terminal `termMode^ enhanced`size...{{^ size `width^ `height^`}}^ +set output "`filename^" + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/go/go.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/go/go.xpt.vim new file mode 100644 index 0000000..454cc25 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/go/go.xpt.vim @@ -0,0 +1,179 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +fun! s:f.MakeIntType( n ) + let n = a:n + return matchstr(n, '\v^u') . "int" . matchstr(n, '\v\d+$' ) +endfunction + +XPTvar $TRUE true +XPTvar $FALSE false +XPTvar $NULL nil +XPTvar $UNDEFINED nil + +XPTvar $SParg '' + +XPTinclude + \ _common/common + \ _comment/c.like + + +XPT _dec hidden " $_xSnipName +`$_xSnipName^ + +XPT package alias=_dec +XPT import alias=_dec +XPT type alias=_dec +XPT const alias=_dec +XPT var alias=_dec + +XPT _int " MakeIntType($_xSnipName) +`MakeIntType($_xSnipName)^ + +XPT i8 alias=_int +XPT i16 alias=_int +XPT i32 alias=_int +XPT i64 alias=_int +XPT u8 alias=_int +XPT u16 alias=_int +XPT u32 alias=_int +XPT u64 alias=_int + +XPT struct " struct { +struct { + `cursor^ +} + +XPT func wrap " func () int { +func `n^(`p?^)` `int?^ { + `cursor^ +} +XPT meth wrap " func (*T) () int { +func (`^) `n^(`p?^)` `int?^ { + `cursor^ +} +XPT go " go func (){}() +go func (`p?^) { + `cursor^ +}() +XPT tfunc " func Test +func Test`^(t *testing.T) { + `cursor^ +} +XPT bfunc " func Test +func Benchmark`^(b *testing.B) { + `cursor^ + + for ii := 0; i < b.N; i++ { + } +} +XPT main " func main\() +func main() { + `cursor^ +} + +XPT println " fmt.Println\() +fmt.Println( `^ ) +XPT sprintf " fmt.Sprintf\() +fmt.Sprintf( `^ ) + +XPT forever " for ;; +for ;; { + `cursor^ +} +XPT for wrap " for i=0; i<10; i++ +for `i^ := `0^; `i^ < `10^; `i^++ { + `cursor^ +} +XPT forr wrap " for i=10; i>=0; i-- +for `i^ := `10^; `i^ >= `0^; `i^-- { + `cursor^ +} +XPT forrange wrap " for range +for `_^, `^ := range `^ { + `cursor^ +} +XPT forin wrap alias=forrange + +XPT if wrap " if { +if `^ { + `cursor^ +} +XPT iftype wrap " if _, ok := x.(type); ok { ... } +if _, ok := `x^.( `tp^ ); ok { + `cursor^ +} +XPT _ifeq wrap hidden " if x == $v { +XSET $v=0 +if `^ == `$v^ { + `cursor^ +} +XPT _ifne wrap hidden " if x != $v { +XSET $v=0 +if `x^ != `$v^ { + `cursor^ +} +XPT iferr " if err != nil { +if err != nil { + `cursor^ +} +XPT ifn alias=_ifeq +XSET $v=nil +XPT ifnn alias=_ifne +XSET $v=nil +XPT if0 alias=_ifeq +XSET $v=0 +XPT ifn0 alias=_ifne +XSET $v=0 +XPT else +else { + `cursor^ +} + +XPT mps " map[string] +map[`string^]`T^ +XPT mpi " map[string] +map[`int^]`T^ + +XPT mkc " make\(chan X, n, capa?) +make(chan `bool^, `0^`, `capa?^) +XPT mks " make\([]X, n, capa?) +make([]`bool^, `0^`, `capa?^) +XPT mkm " make\(map[X]Y, n, capa?) +make(map[`string^]`bool^`, `capa?^) +XPT mkms " make\(map[string]Y, n, capa?) +make(map[string]`bool^`, `capa?^) + +XPT sel " select +select { +case `^: + `cursor^ +} +XPT selc " select x <-ch +select { +case ``x?` := ^<-`ch^: + `cursor^ +} + +XPT switch " switch x { +switch `^ { +case `^: + `cursor^ +} +XPT default " default: +default: + `cursor^ + +XPT test " if .. t.Errorf +if `^ {} else { + t.Errorf( `^ ) +} +XPT ttype " if _, ok := x.(type); ok { ... } +if _, ok := `x^.( `tp^ ); ok {} else { + t.Errorf( "Expect `x^ to be `tp^ but: %v", `x^ ) +} +XPT assert " if .. t.Errorf +if `^ {} else { + t.Fatalf( `^ ) +} diff --git a/vim-plugins/bundle/xptemplate/ftplugin/haskell/haskell.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/haskell/haskell.xpt.vim new file mode 100755 index 0000000..9ac532d --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/haskell/haskell.xpt.vim @@ -0,0 +1,164 @@ +XPTemplate priority=lang mark=`~ + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL +XPTvar $VOID_LINE /* void */; +XPTvar $BRif \n + +XPTinclude + \ _common/common + \ _preprocessor/c.like + + +" ========================= Function and Variables ============================= + + +" ================================= Snippets =================================== + + +XPT head " ----------------------------- +-------------------------------------------------- +---- `headName~ +-------------------------------------------------- + +XPT class " class .. where.. +class `context...{{~(`ctxt~) => `}}~`className~ `types~a~ where + `ar~ :: `type~ `...~ + `methodName~ :: `methodType~`...~ +`cursor~ + +XPT classcom " -- | class.. +-- | `classDescr~ +class `context...{{~(`ctxt~) => `}}~`className~ `types~a~ where + -- | `methodDescr~ + `ar~ :: `type~ `...~ + -- | `method_Descr~ + `methodName~ :: `methodType~`...~ +`cursor~ + +XPT datasum " data .. = ..|..|.. +data `context...{{~(`ctxt~) => `}}~`typename~`typeParams~ ~= + `Constructor~ `ctorParams~VOID()~` + `...~ + | `Ctor~ `params~VOID()~ + `...~ + `deriving...{{~deriving (`Eq,Show~)`}}~ +`cursor~ + + +XPT datasumcom " -- | data .. = ..|..|.. +-- | `typeDescr~VOID()~ +data `context...{{~(`ctxt~) => `}}~`typename~` `typeParams~ ~= + -- | `ConstructorDescr~ + `Constructor~ `ctorParams~VOID()~` + `...~ + -- | `Ctor descr~VOID()~ + | `Ctor~ `params~VOID()~` + `...~ + `deriving...{{~deriving (`Eq,Show~)`}}~ +`cursor~ + +XPT parser " .. = .. <|> .. <|> .. +`funName~ = `rule~` + `another_rule...{{~ + <|> `rule~` + `more...{{~ + <|> `rule~` + `more...~`}}~`}}~ + `err...{{~ "`descr~"`}}~ +`cursor~ + +XPT datarecord " data .. ={} +data `context...{{~(`ctxt~) => `}}~`typename~`typeParams~ ~= + `Constructor~ { + `field~ :: `type~` + `...{{~, + `fieldn~ :: `typen~` + `...~`}}~ + } + `deriving...{{~deriving (`Eq, Show~)`}}~ +`cursor~ + +XPT datarecordcom " -- | data .. ={} +-- | `typeDescr~ +data `context...{{~(`ctxt~) => `}}~`typename~`typeParams~ ~= + `Constructor~ { + `field~ :: `type~ -- ^ `fieldDescr~` + `...{{~, + `fieldn~ :: `typen~ -- ^ `fielddescr~` + `...~`}}~ + } + `deriving...{{~deriving (`Eq,Show~)`}}~ +`cursor~ + +XPT instance " instance .. .. where +instance `className~ `instanceTypes~ where + `methodName~ `~ = `decl~ `...~ + `method~ `~ = `declaration~`...~ +`cursor~ + +XPT if " if .. then .. else +if `expr~ + then `thenCode~ + else `cursor~ + +XPT fun " fun pat = .. +`funName~ `pattern~ = `def~` +`...{{~ +`name~R("funName")~ `pattern~ = `def~` +`...~`}}~ + +XPT funcom " -- | fun pat = .. +-- | `function_description~ +`funName~ :: `type~ +`name~R("funName")~ `pattern~ = `def~` +`...{{~ +`name~R("funName")~ `pattern~ = `def~` +`...~`}}~ + +XPT funtype " .. :: .. => .. -> .. -> +`funName~ :: `context...{{~(`ctxt~) + =>`}}~ `type~ -- ^ `is~` + `...{{~ + -> `type~ -- ^ `is~` + `...~`}}~ + +XPT options " {-# OPTIONS_GHC .. #-} +{-# OPTIONS_GHC `options~ #-} + +XPT lang " {-# LANGUAGE .. #-} +{-# LANGUAGE `langName~ #-} + +XPT inline " {-# INLINE .. #-} +{-# INLINE `phase...{{~[`2~] `}}~`funName~ #-} + +XPT noninline " {-# NOINLINE .. #-} +{-# NOINLINE `funName~ #-} + +XPT type " .. -> .. ->.... +`context...{{~(`ctxt~) => `}}~`t1~ -> `t2~`...~ -> `t3~`...~ + +XPT deriving " deriving (...) +deriving (`classname~`...~,`classname~`...~) + +XPT derivingstand " deriving instance ... +deriving instance `context...{{~`ctxt~ => `}}~`class~ `type~ + +XPT module " module .. () where ... +XSET moduleName=S(S(E('%:r'),'^.','\u&', ''), '[\\/]\(.\)', '.\u\1', 'g') +module `moduleName~ `exports...{{~( `cursor~ + ) `}}~where + +XPT foldr " foldr (.... -> ...) +foldr (\ `e~ `acc~ -> `expr~) `init~ `lst~ + +XPT foldl " foldl' (.... -> ...) +foldl' (\ `acc~ `elem~ -> `expr~) `init~ `lst~ + +XPT map " map (... -> ...) +map (`elem~ -> `expr~) `list~ + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/help/help.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/help/help.xpt.vim new file mode 100644 index 0000000..c1eb42e --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/help/help.xpt.vim @@ -0,0 +1,31 @@ +XPTemplate priority=lang + + +" containers +let s:f = g:XPTfuncs() + +" inclusion +XPTinclude + \ _common/common + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + +XPT ln " ========... +============================================================================== + + +XPT fmt " vim: options... +vim:tw=78:ts=8:sw=8:sts=8:noet:ft=help:norl: + + +XPT q " : > ... < +: > + `cursor^ +< + + +XPT r " |...| +|`content^| + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/html/eruby.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/html/eruby.xpt.vim new file mode 100644 index 0000000..5484831 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/html/eruby.xpt.vim @@ -0,0 +1,24 @@ +" These snippets work only in html context of a eruby file +if &filetype != 'eruby' + finish +endif + +XPTemplate priority=lang- + + +XPT ruby " <% ... +<% + `cursor^ +%> + + +XPT r " <% ... %> +<% `cursor^ %> + + +XPT re " <%= ... +<%= `expr^ %> + + +XPT rc " <%# ... +<%# `cursor^ %> diff --git a/vim-plugins/bundle/xptemplate/ftplugin/html/html.ftdetect.vim b/vim-plugins/bundle/xptemplate/ftplugin/html/html.ftdetect.vim new file mode 100644 index 0000000..958a0f6 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/html/html.ftdetect.vim @@ -0,0 +1,63 @@ +if exists("b:__HTML_FTDETECT_VIM__") + finish +endif +let b:__HTML_FTDETECT_VIM__ = 1 + + +" TODO xhtml support + +if &filetype !~ 'html' + finish +endif + + +let s:skipPattern = 'synIDattr(synID(line("."), col("."), 0), "name") =~? "\\vstring|comment"' +let s:pattern = { + \ 'javascript' : { + \ 'start' : '\V\c]\*>', + \ 'mid' : '', + \ 'end' : '\V\c', + \ 'skip' : s:skipPattern, + \ }, + \ 'css' : { + \ 'start' : '\V\c]\*>', + \ 'mid' : '', + \ 'end' : '\V\c', + \ 'skip' : s:skipPattern, + \ }, + \} + +fun! XPT_htmlFiletypeDetect() "{{{ + let pos = [ line( "." ), col( "." ) ] + let synName = xpt#util#NearestSynName() + + if synName == '' + " no character at current position or before curernt position + return &filetype + + else + + for [ name, ftPattern ] in items( s:pattern ) + let pos = searchpairpos( ftPattern.start, ftPattern.mid, ftPattern.end, 'nbW', ftPattern.skip ) + if pos != [0, 0] + return name + endif + endfor + + if synName =~ '^\cjavascript' + return 'javascript' + elseif synName =~ '^\ccss' + return 'css' + endif + + return &filetype + + endif + +endfunction "}}} + +if exists( 'b:XPTfiletypeDetect' ) + unlet b:XPTfiletypeDetect +endif +let b:XPTfiletypeDetect = function( 'XPT_htmlFiletypeDetect' ) + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/html/html.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/html/html.xpt.vim new file mode 100644 index 0000000..b57f551 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/html/html.xpt.vim @@ -0,0 +1,412 @@ +" TODO entity char +" TODO back at 'base' +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTinclude + \ _common/common + \ xml/xml + + + +XPTvar $CURSOR_PH + +XPTvar $CL +XPTinclude + \ _comment/doubleSign + +XPTembed + \ javascript/javascript + \ css/css + +" ========================= Function and Variables ============================= + + + +fun! s:f.createTable(...) "{{{ + let nrow_str = inputdialog("num of row:") + let nrow = nrow_str + 0 + + let ncol_str = inputdialog("num of column:") + let ncol = ncol_str + 0 + + let l = "" + let i = 0 | while i < nrow | let i += 1 + let j = 0 | while j < ncol | let j += 1 + let l .= "\n\n\n" + endwhile + endwhile + return "\n".l."
        " +endfunction "}}} + + +let s:doctypes = { + \ 'HTML 3.2 Final' : 'html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"', + \ 'HTML 4.0 Frameset' : 'html PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN" "http://www.w3.org/TR/REC-html40/frameset.dtd"', + \ 'HTML 4.0 Transitional' : 'html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"', + \ 'HTML 4.0' : 'html PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"', + \ 'HTML 4.01 Frameset' : 'html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"', + \ 'HTML 4.01 Transitional' : 'html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"', + \ 'HTML 4.01' : 'html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"', + \ 'HTML 5' : 'HTML', + \ 'XHTML 1.0 Frameset' : 'html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"', + \ 'XHTML 1.0 Strict' : 'html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"', + \ 'XHTML 1.0 Transitional' : 'html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"', + \ 'XHTML 1.1' : 'html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"', + \ 'XHTML Basic 1.0' : 'html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"', + \ 'XHTML Basic 1.1' : 'html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd"', + \ 'XHTML Mobile 1.0' : 'html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd"', + \ 'XHTML Mobile 1.1' : 'html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.1//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile11.dtd"', + \ 'XHTML Mobile 1.2' : 'html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd"', + \} + + +fun! s:f.html_doctype_list() + return keys( s:doctypes ) +endfunction + +fun! s:f.html_doctype_post(v) + if has_key( s:doctypes, a:v ) + return s:doctypes[ a:v ] + else + return '' + endif +endfunction + +fun! s:f.html_enc() + return &fenc == '' ? &encoding : &fenc +endfunction + +let s:nIndent = 0 +fun! s:f.html_cont_ontype() + let v = self.V() + if v =~ '\V\n' + let v = matchstr( v, '\V\.\*\ze\n' ) + let s:nIndent = &indentexpr != '' + \ ? eval( substitute( &indentexpr, '\Vv:lnum', 'line(".")', '' ) ) - indent( line( "." ) - 1 ) + \ : self.NIndent() + + return self.Finish( v . "\n" . repeat( ' ', s:nIndent ) ) + else + return v + endif +endfunction + +fun! s:f.html_cont_helper() + let v = self.V() + if v =~ '\V\n' + return self.ResetIndent( -s:nIndent, "\n" ) + else + return '' + endif +endfunction + + +fun! s:f.html_tag_cmpl() + if !exists( 'b:xpt_html_tags' ) + call htmlcomplete#LoadData() + let tagnames = sort( keys( b:html_omni ) ) + let b:xpt_html_tags = [] + let dict = { + \ 'vimxmlattrinfo' : 1, + \ 'vimxmlentities' : 1, + \ 'vimxmlroot' : 1, + \ 'vimxmltaginfo' : 1, + \ } + for t in tagnames + if !has_key( dict, t ) + call add(b:xpt_html_tags, t) + endif + endfor + endif + + return b:xpt_html_tags + +endfunction + +fun! s:f.html_close_tag() + let v = self.V() + if v =~ '\v/\s*$|^!' + return '' + else + return '' + endif +endfunction + +" ================================= Snippets =================================== + + +call XPTdefineSnippet("id", {'syn' : 'tag'}, 'id="`^"') +call XPTdefineSnippet("class", {'syn' : 'tag'}, 'class="`^"') + + + +" TODO map < to tag + + +XPT tag hidden " <$_xSnipName>.. +XSET content|def=Echo( R( 't' ) =~ '\v/\s*$' ? Finish() : '' ) +XSET content|ontype=html_cont_ontype() +<`t^$_xSnipName^>`content^`content^html_cont_helper()^`t^html_close_tag()^ +..XPT + + +XPT _tag wrap=content hidden " <$_xSnipName >.. +XSET content|ontype=html_cont_ontype() +<`$_xSnipName^>`content^^`content^html_cont_helper()^ +..XPT + +" XPT _t hidden " .. +" <`$_xSnipName^>`cont^ + + +XPT _tagAttr wrap=content hidden " <$_xSnipName >.. +XSET content|ontype=html_cont_ontype() +XSET att?=Echo('') +XSET att?|post=Echo(V()=~'\V\^ \$\|att?' ? '' : V()) +<`$_xSnipName^` `att?^>`content^^`content^html_cont_helper()^ +..XPT + + +XPT _tagblock hidden " <$_xSnipName >\n .. \n +<`$_xSnipName^> + `cursor^^ + + + +XPT _tagblockAttr hidden " <$_xSnipName >\n .. \n +<`$_xSnipName^` `attr^> + `cursor^^ + + + +XPT _shorttag hidden " <$_xSnipName /> +<`$_xSnipName^ /> + + +XPT _shorttagAttr hidden " <$_xSnipName /> +XSET att?=Echo('') +XSET att?|post=Echo(V()=~'\V\^ \$\|att?' ? '' : V()) +<`$_xSnipName^` `att?^/> +..XPT + + +XPT doctype " + + +XPT html " ..... + + + `:head:^ + + `cursor^ + + + + +XPT head " .. + + `:contenttype:^ + `:title:^ + + + + +XPT contenttype " + + +XPT title " .. +`title^expand('%:t:r')^ + + +XPT style " + + + +XPT meta " + + + +XPT link " + + + +XPT script " +..XPT + + +XPT scriptsrc " + + +XPT body " .. + + `cursor^ + + + + +XPT table alias=_tag +XPT tr alias=_tag +XPT td alias=_tag +XPT th alias=_tag + + +XPT fulltable hidden " create a full table +`createTable()^ + + +XPT a wrap " `cursor^ +..XPT + + +XPT div alias=_tag +XPT p alias=_tag +XPT ul alias=_tag +XPT ol alias=_tag +XPT li alias=_tag +XPT span alias=_tag + + + +XPT br alias=_shorttag +XPT img alias=_shorttagAttr +XSET att?=Embed( 'src="`where^" alt="`alt^"' ) + + + +XPT h1 alias=_tag +XPT h2 alias=_tag +XPT h3 alias=_tag +XPT h4 alias=_tag +XPT h5 alias=_tag +XPT h6 alias=_tag + +XPT iframe alias=_tagAttr +XSET att?=Embed( 'name="`name^"' ) + + + +" TODO enctype list : application/x-www-form-urlencoded +XPT form wrap "
        ..
        +XSET method=ChooseStr( 'GET', 'POST' ) +
        + `cursor^ +
        + +XPT textarea alias=_tagAttr +XSET att?=Embed( 'name="`name^"' ) + + +XPT input alias=_shorttagAttr +XSET att?=Embed( 'type="`type^" name="`name^" value="`value^"' ) +XSET type=ChooseStr( 'text', 'password', 'checkbox', 'radio', 'submit', 'reset', 'file', 'hidden', 'image', 'button' ) + + +" TODO other optional attribute like "checked", "readonly" +XPT _input_tmpl hidden " + + +XPT itext alias=_input_tmpl +XPT ipassword alias=_input_tmpl +XPT icheckbox alias=_input_tmpl +XPT iradio alias=_input_tmpl +XPT isubmit alias=_input_tmpl +XPT ireset alias=_input_tmpl +XPT ifile alias=_input_tmpl +XPT ihidden alias=_input_tmpl +XPT iimage alias=_input_tmpl +XPT ibutton alias=_input_tmpl + + +XPT label alias=_tagAttr +XSET att?=Embed( 'for="`which^"' ) + + +XPT select alias=_tagAttr +XSET att?=Embed( 'name="`name^"' ) + + +XPT option alias=_tagAttr +XSET att?=Embed( 'value="`value^"' ) + + +XPT fieldset "
        + + `cursor^ +
        +..XPT + +" XPT sdiv alias=_t + +" XPT diva " tips +" `:div( { 'content' : ':a:' } ):^ + + +" html 5 +" http://dev.w3.org/html5/html4-differences/Overview.html#character-encoding + +" XPT section alias=_tag +" XPT article alias=_tag +" XPT aside alias=_tag +" XPT hgroup alias=_tag +" XPT header alias=_tag +" XPT footer alias=_tag +" XPT nav alias=_tag + +" XPT figure alias=_tag +" XPT figcaption alias=_tag + +" XPT video alias=_tag +" XPT audio alias=_tag +" XPT source alias=_tag + +" XPT embed alias=_tag + +" XPT mark alias=_tag +" XPT progress alias=_tag +" XPT meter alias=_tag +" XPT time alias=_tag + + +" XPT canvas alias=_tag +" XPT comand alias=_tag +" XPT details alias=_tag +" XPT datalist alias=_tag + +" XPT keygen alias=_tag +" XPT output alias=_tag + +" XPT ruby alias=_tag + +" input type= +" tel +" search +" url +" email +" datetime +" date +" month +" week +" time +" datetime-local +" number +" range +" color + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/html/php.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/html/php.xpt.vim new file mode 100644 index 0000000..545e62c --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/html/php.xpt.vim @@ -0,0 +1,31 @@ +" These snippets work only in html context of php file +if &filetype != 'php' + finish +endif + +XPTemplate priority=lang-2 + +" this is html-scope variable independent +if exists( 'php_noShortTags' ) + XPTvar $PHP_TAG php +else + XPTvar $PHP_TAG +endif + + +XPT shebang " #!/usr/bin/env php +#!/usr/bin/env php + +..XPT + +XPT sb alias=shebang + + +XPT php " + + +XPT pe " + + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.ftdetect.vim b/vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.ftdetect.vim new file mode 100644 index 0000000..52880ed --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.ftdetect.vim @@ -0,0 +1,77 @@ +if exists( "g:__HTMLDJANGO_FTDETECT_VIM__" ) + finish +endif +let g:__HTMLDJANGO_FTDETECT_VIM__ = 1 + + +if &filetype !~ 'htmldjango' + finish +endif + + +" TODO use array instead of dict because of duplicated key could be possible +let s:skipPattern = 'synIDattr(synID(line("."), col("."), 0), "name") =~? "\\vstring|comment"' +let s:pattern = { + \ 'django' : { + \ 'start' : '\V\c{%', + \ 'mid' : '', + \ 'end' : '\V\c%}', + \ 'skip' : s:skipPattern, + \ }, + \ 'django_expr' : { + \ 'start' : '\V\c{{', + \ 'mid' : '', + \ 'end' : '\V\c}}', + \ 'skip' : s:skipPattern, + \ }, + \ 'javascript' : { + \ 'start' : '\V\c]\*>', + \ 'mid' : '', + \ 'end' : '\V\c', + \ 'skip' : s:skipPattern, + \ }, + \ 'css' : { + \ 'start' : '\V\c]\*>', + \ 'mid' : '', + \ 'end' : '\V\c', + \ 'skip' : s:skipPattern, + \ }, + \} + +let s:topFT = 'htmldjango' + +fun! XPT_htmldjangoFiletypeDetect() "{{{ + let pos = [ line( "." ), col( "." ) ] + + let synName = xpt#util#NearestSynName() + + if synName == '' + + return s:topFT + + else + + for [ name, ftPattern ] in items( s:pattern ) + let pos = searchpairpos( ftPattern.start, ftPattern.mid, ftPattern.end, 'nbW', ftPattern.skip ) + if pos != [0, 0] + return name + endif + endfor + + if synName =~ '\v^\cjavascript' + return 'javascript' + elseif synName =~ '\v^\ccss' + return 'css' + endif + + return s:topFT + + endif + +endfunction "}}} + +if exists( 'b:XPTfiletypeDetect' ) + unlet b:XPTfiletypeDetect +endif +let b:XPTfiletypeDetect = function( 'XPT_htmldjangoFiletypeDetect' ) + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.xpt.vim new file mode 100644 index 0000000..0823d90 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/htmldjango/htmldjango.xpt.vim @@ -0,0 +1,80 @@ +XPTemplate priority=lang- + + +XPTinclude + \ _common/common + \ html/html + + +XPT _simpletag hidden " {% $_xSnipName %} +{% `$_xSnipName^ %} +..XPT + + +XPT _tag hidden " {% $_xSnipName params %} +{% `$_xSnipName^ `params^ %} +..XPT + + +XPT _qtag hidden " {% $_xSnipName "params" %} +{% `$_xSnipName^ "`params^" %} +..XPT + + +XPT _simpleblock hidden " {% $_xSnipName %}..{% end$_xSnipName %} +{% `$_xSnipName^ %}`content^{% end`$_xSnipName^ %} +..XPT + + +XPT _block wrap=content hidden " {% $_xSnipName params %}..{% end$_xSnipName %} +{% `$_xSnipName^ `params^ %} + `content^ +{% end`$_xSnipName^ %} +..XPT + + +XPT _qblock wrap=content hidden " {% $_xSnipName "params" %}..{% end$_xSnipName %} +{% `$_xSnipName^ "`params^" %} + `content^ +{% end`$_xSnipName^ %} +..XPT + + +XPT _if wrap=content " $_xSnipName .. else .. end$_xSnipName +{% `$_xSnipName^ `param^ %} + `content^ +`else...{{^{% else %} + `content^`}}^ +{% end`$_xSnipName^ %} +..XPT + + +XPT var " {{ var }} +{{ `var^ }} +..XPT + + +XPT autoescape alias=_block +XPT block alias=_block +XPT comment alias=_simpleblock +XPT csrf_token alias=_simpletag +XPT cycle alias=_tag +XPT debug alias=_simpletag +XPT extends alias=_qtag +XPT filter alias=_block +XPT firstof alias=_tag +XPT for alias=_block +XPT empty alias=_simpletag +XPT else alias=_simpletag +XPT if alias=_if +XPT ifchanged alias=_if +XPT ifequal alias=_if +XPT ifnotequal alias=_if +XPT include alias=_qtag +XPT load alias=_tag +XPT now alias=_tag +XPT regroup alias=_tag +XPT url alias=_tag +XPT spaceless alias=_simpleblock +XPT ssi alias=_tag +XPT with alias=_block diff --git a/vim-plugins/bundle/xptemplate/ftplugin/java/java.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/java/java.xpt.vim new file mode 100755 index 0000000..e68e39e --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/java/java.xpt.vim @@ -0,0 +1,113 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE true +XPTvar $FALSE false +XPTvar $NULL null +XPTvar $UNDEFINED null + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH /* cursor */ + +XPTvar $BRif ' ' +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTinclude + \ _common/common + +XPTvar $CL /* +XPTvar $CM * +XPTvar $CR */ +XPTinclude + \ _comment/doubleSign + +XPTinclude + \ _condition/c.like + \ _loops/java.for.like + \ _loops/c.while.like + + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + + + + +XPT foreach " for \( .. : .. \) +for (`$SParg^`type^ `var^ : `inWhat^`$SParg^)`$BRloop^{ + `cursor^ +} + + +XPT private " private .. .. +private `type^ `varName^; + +XPT public " private .. .. +public `type^ `varName^; + +XPT protected " private .. .. +protected `type^ `varName^; + +XPT class " class .. ctor +public class `className^ { + public `className^(`$SParg^`ctorParam^`$SParg^)`$BRfun^{ + `cursor^ + } +} + + +XPT main " main ( String ) +public static void main(`$SParg^String[] args`$SParg^)`$BRfun^{ + `cursor^ +} + + +XPT enum " public enum { .. } +`public^ enum `enumName^ +{ + `elem^` `...^, + `subElem^` `...^ +}; +`cursor^ + +XPT prop " var getVar () setVar () +`type^ `varName^; + +`get...^ +XSETm get...|post +public `R("type")^ get`S(R("varName"),'.','\u&',"")^() + { return `R("varName")^; } + +XSETm END +`set...^ +XSETm set...|post +public `R("type")^ set`S(R("varName"),'.','\u&',"")^( `R('type')^ val ) + { `R("varName")^ = val; return `R( 'varName' )^; } + +XSETm END + + +XPT try wrap=what " try .. catch (..) .. finally +XSET handler=$CL handling $CR +try +{ + `what^ +}` `catch...^ +XSETm catch...|post + +catch (`Exception^ `e^) +{ + `handler^ +}` `catch...^ +XSETm END +`finally...{{^finally +{ + `cursor^ +}`}}^ + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/javascript/javascript.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/javascript/javascript.xpt.vim new file mode 100644 index 0000000..768fd9c --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/javascript/javascript.xpt.vim @@ -0,0 +1,163 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + + +XPTvar $TRUE true +XPTvar $FALSE false +XPTvar $NULL null +XPTvar $UNDEFINED undefined + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH /* cursor */ + + +XPTvar $CL /* +XPTvar $CM * +XPTvar $CR */ + +XPTinclude + \ _common/common + \ _comment/doubleSign + \ _condition/ecma + + +XPTvar $VAR_PRE +XPTvar $FOR_SCOPE 'var ' +XPTinclude + \ _loops/for + +XPTinclude + \ javascript/jquery + +" ========================= Function and Variables ============================= + + +" ================================= Snippets =================================== + + + +XPT bench " Benchmark +XSET log=console.log +XSET job=$VOID_LINE +XSET jobn=$VOID_LINE +var t0 = new Date().getTime(); +for (var i = 0; i < `times^; ++i){ + `job^ +} +var t1 = new Date().getTime(); +for (var i = 0; i < `times^; ++i){ + `jobn^ +} +var t2 = new Date().getTime(); +`log^(t1-t0, t2-t1); + +..XPT + +XPT asoe " assertObjectEquals +assertObjectEquals(`mess^ + , `arr^ + , `expr^) + + +XPT cmt " /** @auth... */ +XSET author=$author +XSET email=$email +/** +* @author : `author^ | `email^ +* @description +* `cursor^ +* @return {`Object^} `desc^ +*/ + + +XPT cpr " @param +@param {`Object^} `name^ `desc^ + + +" file comment +" 4 back slash represent 1 after rendering. +XPT fcmt " full doxygen comment +/**-------------------------/// `sum^ \\\--------------------------- + * + * `function^ + * @version : `1.0^ + * @since : `date^ + * + * @description : + * `cursor^ + * @usage : + * + * @author : `$author^ | `$email^ + * @copyright : + * @TODO : + * + *--------------------------\\\ `sum^ ///---------------------------*/ + + +XPT fun " function ..( .. ) {..} +XSET arg*|post=ExpandIfNotEmpty(', ', 'arg*') +function` `name^ (`arg*^) { + `cursor^ +} + + +XPT forin " for (var .. in ..) {..} +for ( var `i^ in `array^ )`$BRloop^{ + var `e^ = `array^[`i^]; + `cursor^ +} + + +XPT new " var .. = new ..\(..) +XSET arg*|post=ExpandIfNotEmpty(', ', 'arg*') +var `instant^ = new `Constructor^(`arg*^) + + +XPT proto " ...prototype... = function\(..) { .. } +XSET arg*|post=ExpandIfNotEmpty(', ', 'arg*') +`Class^.prototype.`method^ = function(`arg*^)`$BRfun^{ +`cursor^ +} + + +XPT setTimeout " setTimeout\(function\() { .. }, ..) +XSET job=$VOID_LINE +setTimeout(function() { `job^ }, `milliseconds^) + + +XPT try wrap=job " try {..} catch {..} finally +XSET dealError=/* error handling */ +XSET job=$VOID_LINE +try`$BRif^{ + `job^ +} +catch (`err^)`$BRif^{ + `dealError^ +}`...^ +catch (`err^)`$BRif^{ + `dealError^ +}`...^` +`finally...{{^ +finally`$BRif^{ + `cursor^ +}`}}^ + + +XPT bench_ wraponly=wrapped " Benchmark +XSET log=console.log +var t0 = new Date().getTime(); +for (var i = 0; i < `times^; ++i){ + `wrapped^ +} +var t1 = new Date().getTime(); +`log^(t1-t0); + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/javascript/jquery.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/javascript/jquery.xpt.vim new file mode 100644 index 0000000..ac665dd --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/javascript/jquery.xpt.vim @@ -0,0 +1,558 @@ +" finish " not finished +if !g:XPTloadBundle( 'javascript', 'jquery' ) + finish +endif + +XPTemplate priority=lang-2 + +let s:f = g:XPTfuncs() + +XPTvar $TRUE true +XPTvar $FALSE false +XPTvar $NULL null +XPTvar $UNDEFINED undefined + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +" XPTvar $JQ jQuery +XPTvar $JQ $ + +XPTinclude + \ _common/common + + +" ========================= Function and Variables ============================= +let s:options = { + \'async' : 1, + \'beforeSend' : 1, + \'cache' : 1, + \'complete' : 1, + \'contentType' : 1, + \'data' : 1, + \'dataFilter' : 1, + \'dataType' : 1, + \'error' : 1, + \'global' : 1, + \'ifModified' : 1, + \'jsonp' : 1, + \'password' : 1, + \'processData' : 1, + \'scriptCharset' : 1, + \'success' : 1, + \'timeout' : 1, + \'type' : 1, + \'url' : 1, + \'username' : 1, + \'xhr' : 1, + \} +fun! s:f.jquery_ajaxOptions() + +endfunction + +" ================================= Snippets =================================== + +" =============== +" Snippet Pieces +" =============== + +XPT optionalExpr hidden +(`$SParg^`expr?^`expr?^CmplQuoter_pre()^`$SParg^) + +XPT expr hidden +(`$SParg^`expr^`expr^CmplQuoter_pre()^`$SParg^) + +XPT maybeFunction hidden +(`$SParg^`function...{{^function(`i^`, `e?^) { `cursor^ }`}}^`$SParg^) + +XPT optionalVal hidden +(`$SParg`val?`$SParg^) + +XPT _funExp hidden +`function...{{^function(`i^`, `e?^) { `cursor^ }`}}^ +..XPT + +" ============ +" jQuery Core +" ============ + +XPT $ " $\() +$(`$SParg^`e^`e^CmplQuoter_pre()^`, `context?^`$SParg^) + +XPT jq " jQuery\() +jQuery(`$SParg^`e^`e^CmplQuoter_pre()^`, `context?^`$SParg^) + +XPT each " each\(... +each`:maybeFunction:^ + +XPT sz " size\() +size() + +XPT eq " eq\(...) +eq(`$SParg^`^`$SParg^) + +XPT get " get\(...) +get(`$SParg^`^`$SParg^) + +XPT ind " index\(...) +index(`$SParg^`^`$SParg^) + +XPT da " data\(.., ..) +data(`$SParg^`name^`, `value?^`$SParg^) + +XPT rmd " removeData\(..) +removeData(`$SParg^`name^`$SParg^) + +XPT qu " queue\(.., ..) +queue(`$SParg^`name^`, `toAdd?^`$SParg^) + +XPT dq " dequeue\(...) +dequeue(`$SParg^`name^`$SParg^) +..XPT + + + + +" ================== +" jQuery Attributes +" ================== + +XPT attr " attr\(.. +attr(`$SParg^`name^`$SParg^) + +XPT rma " removeAttr\(.. +removeAttr(`$SParg^`name^`$SParg^) + +XPT ac " addClass\(.. +addClass(`$SParg^`class^`$SParg^) + +XPT hc " hasClass\(.. +hasClass(`$SParg^`class^`$SParg^) + +XPT tc " toggleClass\(.. +toggleClass(`$SParg^`class^`, `switch?^`$SParg^) + +XPT html " html\(.. +html`:optionalVal:^ + +XPT text " text\(.. +text`:optionalVal:^ + +XPT val " val\(.. +val`:optionalVal:^ +..XPT + + + + +" =================== +" CSS +" =================== + +XPT css " css\(.. +css`:optionalVal:^ + +XPT os " offset\() +offset() + +XPT osp " offsetParent\() +offsetParent() + +XPT pos " position\() +position() + +XPT scrt " scrollTop\() +scrollTop`:optionalVal:^ + +XPT scrl " scrollLeft\() +scrollLeft`:optionalVal:^ + +XPT ht " height\(..) +height`:optionalVal:^ + +XPT wth " width\(..) +width`:optionalVal:^ + +XPT ih " innerHeight\() +innerHeight() + +XPT iw " innerWidth\() +innerWidth() + +XPT oh " outerHeight\(..) +outerHeight(`$SParg^`margin^`$SParg^) + +XPT ow " outerWidth\(..) +outerWidth(`$SParg^`margin^`$SParg^) +..XPT + + + + + +" =================== +" Traversing +" =================== + +XPT flt " filter\(.. +filter`:maybeFunction:^ + +XPT is " is\(.. +is`:expr:^ + +XPT map " map\(.. +map`:maybeFunction:^ + +XPT not " not\(..) +not`:expr:^ + +XPT slc " slice\(start, end) +slice(`$SParg^`start^`, `end?^`$SParg^) + +XPT add " add\(..) +add`:expr:^ + +XPT chd " children\(..) +children`:optionalExpr:^ + +XPT cls " closest\(..) +closest`:expr:^ + +XPT con " content\() +content() + +XPT fd " find\(..) +find`:expr:^ + +XPT ne " next\(..) +next`:optionalExpr:^ + +XPT na " nextAll\(..) +nextAll`:optionalExpr:^ + +XPT pr " parent\(..) +parent`:optionalExpr:^ + +XPT prs " parents\(..) +parents`:optionalExpr:^ + +XPT prv " prev\(..) +prev`:optionalExpr:^ + +XPT pra " prevAll\(..) +prevAll`:optionalExpr:^ + +XPT sib " sibling\(..) +sibling`:optionalExpr:^ + +XPT as " andSelf\() +andSelf() + +XPT end " end\() +end() +..XPT + + + +" =================== +" Manipulation +" =================== +XPT ap " append\(..) +append`:expr:^ + +XPT apt " appendTo\(..) +appendTo`:expr:^ + +XPT pp " prepend\(..) +prepend`:expr:^ + +XPT ppt " prependTo\(..) +prependTo`:expr:^ + +XPT af " after\(..) +after`:expr:^ + +XPT bf " before\(..) +before`:expr:^ + +XPT insa " insertAfter\(..) +insertAfter`:expr:^ + +XPT insb " insertBefore\(..) +insertBefore`:expr:^ + +XPT wr " wrap\(..) +wrap`:expr:^ + +XPT wra " wrapAll\(..) +wrapAll`:expr:^ + +XPT wri " wrapInner\(..) +wrapInner`:expr:^ + +XPT rep " replaceWith\(..) +replaceWith`:expr:^ + +XPT repa " replaceAll\(..) +replaceAll`:expr:^ + +XPT emp " empty\() +empty() + +XPT rm " remove\(..) +remove`:optionalExpr:^ + +XPT cl " clone\(..) +cloen`:optionalExpr:^ +..XPT + +" ========================= +" Ajax +" ========================= +" TODO callback +" TODO ajax option +" TODO universial behavior for clearing optional argument + +XPT _ld_callback hidden +function(`$SParg^`resText^`, `textStatus^`, `xhr^`$SParg^) { `cursor^ } + +XPT _aj_type hidden +XSET type=ChooseStr( '"xml"', '"html"', '"script"', '"json"', '"jsonp"', '"text"' ) +`, `type^ + +XPT _fun0 hidden +function() { `cursor^ } + + + +XPT aj " $JQ.ajax\(..) +`$JQ^.ajax(`$SParg^`opt^`$SParg^) + +XPT load " load\(url, ...) +load(`$SParg^`url^`url^CmplQuoter_pre()^`, `data^`data^CmplQuoter_pre()^`, `function...{{^, `:_ld_callback:^`}}^`$SParg^) + +XPT ag " $JQ.get\(url, ...) +`$JQ^.get(`$SParg^`url^`url^CmplQuoter_pre()^`, `data^`data^CmplQuoter_pre()^`, `callback^`:_aj_type:^`$SParg^) + +XPT agj " $JQ.getJSON\(url, ...) +`$JQ^.getJSON(`$SParg^`url^`url^CmplQuoter_pre()^`, `data^`, `callback^`$SParg^) + +XPT ags " $JQ.getScript\(url, ...) +`$JQ^.getScript(`$SParg^`url^`url^CmplQuoter_pre()^`, `callback^`$SParg^) + +XPT apost " $JQ.post\(url, ...) +`$JQ^.post(`$SParg^`url^`url^CmplQuoter_pre()^`, `data^`data^CmplQuoter_pre()^`, `callback^`:_aj_type:^`$SParg^) + + + +XPT ajaxComplete " ajaxComplete\(callback) +ajaxComplete(`$SParg^`fun...{{^function (`$SParg^`event^`, `xhr^`, `ajaxOption^`$SParg^){ `cursor^ }`}}^`$SParg^) + +XPT ajaxError " ajaxError\(callback) +ajaxError(`$SParg^`fun...{{^function (`$SParg^`event^`, `xhr^`, `ajaxOption^`, `err^`$SParg^){ `cursor^ }`}}^`$SParg^) + +XPT ajaxSend " ajaxSend\(callback) +ajaxSend(`$SParg^`fun...{{^function (`$SParg^`event^`, `xhr^`, `ajaxOption^`$SParg^){ `cursor^ }`}}^`$SParg^) + +XPT ajaxStart " ajaxStart\(callback) +ajaxStart(`$SParg^`fun...{{^`:_fun0:^`}}^`$SParg^) + +XPT ajaxStop " ajaxStop\(callback) +ajaxStop(`$SParg^`fun...{{^`:_fun0:^`}}^`$SParg^) + +XPT ajaxSuccess " ajaxSuccess\(callback) +ajaxSuccess(`$SParg^`fun...{{^function (`$SParg^`event^`, `xhr^`, `ajaxOption^`$SParg^){ `cursor^ }`}}^`$SParg^) + + + +XPT asetup " $JQ.ajaxSetup\(opt) +`$JQ^.ajaxSetup(`$SParg^`opt^`$SParg^) + +XPT ser " serialize\() +serialize() + +XPT sera " serializeArray\() +serializeArray() +..XPT + + +" =================== +" Events +" =================== +XPT _ev_fun_a hidden +XSET job=VoidLine() +function (`$SParg^`ev^`$SParg^) { `job^ } + +XPT _ev_fun hidden +function (`$SParg^`ev^`$SParg^) { `cursor^ } + +XPT _ev_arg hidden +(`$SParg^`type^`type^CmplQuoter_pre()^`, `data^`, `fun...{{^, `:_ev_fun:^`}}^`$SParg^) + +XPT _ev_tr_arg hidden +(`$SParg^`ev^`ev^CmplQuoter_pre()^`, `data^`$SParg^) + +XPT _ev_arg_fun hidden +(`$SParg^`fun...{{^`:_ev_fun:^`}}^`$SParg^) + + + +XPT rd " ready\(fun) +ready(`$SParg^`fun...{{^`:_fun0:^`}}^`$SParg^) + +XPT bd " bind\(type, data, fun) +bind`:_ev_arg:^ + +XPT one " one\(type, data, fun) +one`:_ev_arg:^ + +XPT tr " trigger\(ev, data) +trigger`:_ev_tr_arg:^ + +XPT trh " triggerHandler\(ev, data) +triggerHandler`:_ev_tr_arg:^ + +XPT ub " unbind\(type, fun) +unbind(`$SParg^`type^`type^CmplQuoter_pre()^`, `fun^`$SParg^) + +XPT lv " live\(type, fun) +live`:_ev_arg:^ + +XPT die " die\(type, fun) +die(`$SParg^`type^`type^CmplQuoter_pre()^`, `fun^`$SParg^) + +XPT ho " hover\(over, out) +hover(`$SParg^`over...{{^, `:_ev_fun_a:^`}}^`, `out..{{^, `:_ev_fun:^`}}^`$SParg^) + +XPT tg " toggle\(fn1, fn2, ...) +toggle(`$SParg^`fn1...{{^, `:_ev_fun_a:^`}}^`, `fn2...{{^, `:_ev_fun:^`}}^`$SParg^) + + + +XPT bl " blur\(fun) +blur`:_ev_arg_fun:^ + +XPT res " resize\(fun) +resize`:_ev_arg_fun:^ + +XPT scr " scroll\(fun) +scroll`:_ev_arg_fun:^ + +XPT sel " select\(fun) +select`:_ev_arg_fun:^ + +XPT sub " submit\(fun) +submit`:_ev_arg_fun:^ + +XPT unl " unload\(fun) +unload`:_ev_arg_fun:^ + + + +XPT kdown " keydown\(fun) +keydown`:_ev_arg_fun:^ + +XPT kup " keyup\(fun) +keyup`:_ev_arg_fun:^ + +XPT kpress " keypress\(fun) +keypress`:_ev_arg_fun:^ + +XPT clk " click\(fun) +click`:_ev_arg_fun:^ + +XPT dclk " dbclick\(fun) +dbclick`:_ev_arg_fun:^ + + + +XPT foc " focus\(fun) +focus`:_ev_arg_fun:^ + +XPT err " error\(fun) +error`:_ev_arg_fun:^ + + + +XPT mup " mouseup\(fun) +mouseup`:_ev_arg_fun:^ + +XPT mdown " mousedown\(fun) +mousedown`:_ev_arg_fun:^ + +XPT mmove " mousemove\(fun) +mousemove`:_ev_arg_fun:^ + +XPT menter " mouseenter\(fun) +mouseenter`:_ev_arg_fun:^ + +XPT mleave " mouseleave\(fun) +mouseleave`:_ev_arg_fun:^ + +XPT mout " mouseout\(fun) +mouseout`:_ev_arg_fun:^ + + + + +XPT ld " load\(fun) +load`:_ev_arg_fun:^ + +XPT ch " change\(fun) +change`:_ev_arg_fun:^ +..XPT + + + +" =================== +" Effects +" =================== + +XPT _ef_arg hidden +(`$SParg^`speed^`speed^CmplQuoter_pre()^`, `fun...{{^, `:_fun0:^`}}^`$SParg^) + +XPT sh " show\(speed, callback) +show`:_ef_arg:^ + +XPT hd " hide\(speed, callback) +hide`:_ef_arg:^ + +XPT sld " slideDown\(speed, callback) +slideDown`:_ef_arg:^ + +XPT slu " slideUp\(speed, callback) +slideUp`:_ef_arg:^ + +XPT slt " slideToggle\(speed, callback) +slideToggle`:_ef_arg:^ + + + +XPT fi " fadeIn\(speed, callback) +fadeIn`:_ef_arg:^ + +XPT fo " fadeOut\(speed, callback) +fadeOut`:_ef_arg:^ + +XPT ft " fadeTo\(speed, callback) +fadeTo(`$SParg^`speed^`speed^CmplQuoter_pre()^`, `opacity^`opacity^CmplQuoter_pre()^`, `fun...{{^, `:_fun0:^`}}^`$SParg^) + +XPT ani " animate\(params, ...) +animate(`$SParg^`params^`, `param^`$SParg^) + +XPT stop " stop\() +stop() +..XPT + +" =================== +" TODO select helper +" =================== + + + +" ================================= Wrapper =================================== + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/json/json.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/json/json.xpt.vim new file mode 100644 index 0000000..0e49585 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/json/json.xpt.vim @@ -0,0 +1,23 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +" use snippet 'varConst' to generate contant variables +" use snippet 'varFormat' to generate formatting variables +" use snippet 'varSpaces' to generate spacing variables + + +XPTinclude + \ _common/common + +XPT array " [ ..., ... ] +[ `val^`...^, `val^`...^ ] + +XPT obj " { "...":... } +{ "`key^":`val^`...^, "`key^":`val^`...^ } + +XPT dic " { "...":..., ... } +{ "`key^":`val^`...^, + "`key^":`val^`...^ +} + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/lex/lex.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/lex/lex.xpt.vim new file mode 100644 index 0000000..c46496f --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/lex/lex.xpt.vim @@ -0,0 +1,45 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH cursor + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTinclude + \ _common/common + \ c/c + + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + + +XPT lex " Basic lex file +%{ +/* includes */ +%} +/* options */ +%% +/* rules */ +%% +/* C code */ + + +XPT ruleList " .. {..} ... +`reg^ { `return^ }`...^ +`reg^ { `return^ }`...^ + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/lua/lua.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/lua/lua.xpt.vim new file mode 100644 index 0000000..d408a7a --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/lua/lua.xpt.vim @@ -0,0 +1,143 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH -- cursor + +XPTvar $BRif \n +XPTvar $BRloop \n +XPTvar $BRloop \n +XPTvar $BRstc \n +XPTvar $BRfun \n + +XPTvar $CS -- + +XPTinclude + \ _common/common + \ _comment/singleSign + + +" ========================= Function and Variables ============================= + +" Remove an item if its value hasn't change +fun! s:f.RemoveIfUnchanged() "{{{ + let v = self.V() + let [lft, rt] = self.ItemEdges() + if v == lft . self.N() . rt + return '' + else + return v + end +endfunction "}}} + +" ================================= Snippets =================================== + + + +XPT do " do ... end +do + `cursor^ +end + + +XPT fn " function \(..) .. end +XSET arg*|post=ExpandIfNotEmpty(', ', 'arg*') +function (`arg*^) `cursor^ end + + +XPT for " for ..=..,.. do ... end +XSET step?|post=EchoIfNoChange('') +for `var^ = `0^, `10^`, `step?^ do + `cursor^ +end + + +XPT forin " for .. in .. do ... end +XSET var*|post=ExpandIfNotEmpty(', ', 'var*') +for `var*^ in `expr^ do + `cursor^ +end + + +XPT forip " for ..,.. in ipairs\(..) do ... end +for `key^, `value^ in ipairs(`table^) do + `cursor^ +end + + +XPT forp " for ..,.. in pairs\(..) do ... end +for `key^, `value^ in pairs(`table^) do + `cursor^ +end + + +XPT fun " function ..\(..) .. end +XSET arg*|post=ExpandIfNotEmpty(', ', 'arg*') +function `name^(`arg*^) + `cursor^ +end + + +XPT if " if .. then .. end +if `cond^ then + `cursor^ +end + + +XPT ife " if .. then .. else .. end +XSET job=$CS job +if `cond^ then + `job^ +else + `cursor^ +end + + +XPT ifei " if .. then .. elseif .. else .. end +XSET job=$CS job +if `cond^ then` + `job^ +``elseif...` +{{^elseif `comparison^ then + `job^ +``elseif...` +^`}}^``else...` +{{^else + `cursor^ +`}}^end + + +XPT locf " local function ..\(..) ... end +XSET arg*|post=ExpandIfNotEmpty(', ', 'arg*') +local function `name^(`arg*^) + `cursor^ +end + + +" !!! snippet ends with a space !!! +XPT locv " local .. = .. +local `var^ = + + +XPT p " print\(..) +print(`cursor^) + + +XPT repeat " repeat .. until .. +repeat + `cursor^ +until + + +XPT while " while .. do ... end +while `cond^ do + `cursor^ +end + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/make/make.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/make/make.xpt.vim new file mode 100644 index 0000000..aa88df7 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/make/make.xpt.vim @@ -0,0 +1,76 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE # void +XPTvar $CURSOR_PH # cursor + +XPTvar $CS # + +XPTinclude + \ _common/common + \ _comment/singleSign + + +" ========================= Function and Variables ============================= + + +" ================================= Snippets =================================== + +XPT addprefix " $(addprefix ...) +$(addprefix `prefix^, `elemList^) + + +XPT addsuffix " $(addsuffix ...) +$(addsuffix `suffix^, `elemList^) + + +XPT filterout " $(filter-out ...) +$(filter-out `toRemove^, `elemList^) + + +XPT patsubst " $(patsubst ...) +$(patsubst `sourcePattern^%.c^, `destPattern^%.o^, `list^) + + +XPT shell " $(shell ...) +$(shell `command^) + + +XPT subst " $(subst ...) +$(subst `sourceString^, `destString^, `string^) + + +XPT wildcard " $(wildcard ...) +$(wildcard `globpattern^) + + +XPT ifneq " ifneq ... else ... endif +ifneq (`what^, `with^) + `job^ +``else...` +{{^else + `cursor^ +`}}^endif + + +XPT ifeq " ifneq ... else ... endif +XSET job=$CS job +ifeq (`what^, `with^) + `job^ +``else...` +{{^else + `cursor^ +`}}^endif + + +XPT basevar " CC ... CFLAG .. +`lang^C^C := `compiler^gcc^ +`lang^C^FLAGS := `switches^-Wall -Wextra^ + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/markdown/markdown.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/markdown/markdown.xpt.vim new file mode 100644 index 0000000..9e79652 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/markdown/markdown.xpt.vim @@ -0,0 +1,95 @@ +XPTemplate priority=lang mark=~^ + +let s:f = g:XPTfuncs() + +fun! s:f.HeaderPref() + let snipname = self.GetVar('$_xSnipName') + let nr = snipname[ 1 : 1 ] * 1 + return repeat('#', nr) +endfunction + +fun! s:f.UnderLine(char) + let v = self.ItemValue() + if v == '' + return '' + else + " line break before "===" and after "===" + return "\n" . repeat(a:char, len(v)) . "\n" + endif +endfunction + +fun! s:f.QuitContition() + let v = self.ItemValue() + if v == '' || v =~ '\V\n' + let q = self.Next(substitute(v, '\V\n', '', 'g')) + return q + endif +endfunction + +fun! s:f.BuildRef() + let title = '' + let id = self.R( 'refId' ) + + let url = s:f[ '_markdown_snipp_url' ] + unlet s:f[ '_markdown_snipp_url' ] + + if has_key( s:f, '_markdown_snipp_title' ) + let title = '"' . s:f[ '_markdown_snipp_title' ] . '"' + unlet s:f[ '_markdown_snipp_title' ] + endif + + call append( line('$'), '[' . id . ']: <' . url . '> ' . title ) + return '\n' +endfunction + +XPTinclude + \ _common/common + +XPT sharp_header hidden " HeaderPref() title +~HeaderPref() ~t^ + +XPT h1 alias=sharp_header +XPT h2 alias=sharp_header +XPT h3 alias=sharp_header +XPT h4 alias=sharp_header +XPT h5 alias=sharp_header +XPT h6 alias=sharp_header + +XPT header_alt hidden " ... repeat($decoration,3) +XSET $decoration== +XSET t|ontype=QuitContition() +~t^~t^UnderLine($decoration)^~^ + +XPT ha1 alias=header_alt +XSET $decoration== + +XPT ha2 alias=header_alt +XSET $decoration=- + +XPT title alias=ha1 +XPT section alias=ha2 +XPT subsection alias=h3 + + +XPT link " [...](...) +[~text^](~url^~ ~title?^) + +XPT img " ![...](...) +![~alt-text^](~url^~ ~title?^) + +XPT ref " [...][...] +[~text^][~refid^] + +XPT def " [name]: url +[~refid^]: ~url^ + +XPT hr " ----- +--- + +XPT ruler alias=hr + +XPT table " | header | ... | +| | | +| :-- | --: | +| | | + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/objc/autoimplem.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/objc/autoimplem.xpt.vim new file mode 100644 index 0000000..6fd16be --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/objc/autoimplem.xpt.vim @@ -0,0 +1,12 @@ +" Steal autoimplem from C snippets. +if !g:XPTloadBundle( 'objc', 'autoimplem' ) + finish +endif +XPTemplate priority=lang-2 + +let g:objcautoimlemneedc = 1 + +XPTinclude + \ _common/common + \ c/autoimplem + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/objc/objc.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/objc/objc.xpt.vim new file mode 100644 index 0000000..db8ebcb --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/objc/objc.xpt.vim @@ -0,0 +1,66 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +" Objective C can reuse all the C snippets, so include +" them by default. +XPTinclude + \ _common/common + \ c/c + +XPT msg " [to ...] +[`to^ `msg^`args...{{^:`arg^`...{{^ `argName^:`argVal^`...^`}}^`}}^] + +XPT forin " for (... in ...) { ... } +for (`type^id^ `var^ in `collection^) +{ + `cursor^ +} + +XPT import " #import "..." +#import "`hfile^" + +XPT #import " #import <...> +#import <`hfile^> + +XPT protocol " @protocol ... @end +@protocol `protocolName^ +`cursor^ +@end + +XPT interface " @interface ... : ... ... +@interface `interfaceName^ `inherit...{{^ : `father^ `}}^{ + // put instances variable here + `cursor^ +} +// put methods here +@end + +XPT implementation " @implementation ... @end +@implementation `className^ +`cursor^ +@end + +XPT categorie " @interface ... (...) ... @end +@interface `existingClass^ (`categorieName^) +`cursor^ +@end + +XPT catimplem " @implementation ... (...) ... @end +@implementation `existingClass^ (`categorieName^) +`cursor^ +@end + +XPT alloc " [[... alloc] ...] +[[`className^ alloc] `cursor^] + +XPT method " - (...) ....: ... +- (`retType^void^) `methodName^`args...{{^`...^ (`type^)name`...^`}}^; + +XPT implmethod " - (...) ... { ... } +- (`retType^) `methodName^ { + `cursor^ +} + +XPT alloc " [[... alloc] ...] +[[`className^ alloc] `cursor^] diff --git a/vim-plugins/bundle/xptemplate/ftplugin/ocaml.revised/ocaml.revised.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/ocaml.revised/ocaml.revised.xpt.vim new file mode 100644 index 0000000..fd3efd3 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/ocaml.revised/ocaml.revised.xpt.vim @@ -0,0 +1,172 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE (* void *) +XPTvar $CURSOR_PH (* cursor *) + +XPTvar $BRif ' ' +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTvar $CL (* +XPTvar $CM * +XPTvar $CR *) + +XPTinclude + \ _common/common + \ _comment/doubleSign + + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + +XPT if " if .. then .. else .. +if `cond^ +then `cursor^ + + +XPT match " match .. with [.. -> .. | ..] +match `expr^ with + [ `what0^ -> `with0^`...^ + | `what^ -> `with^`...^ + ] + + +XPT moduletype " module type .. = sig .. end +module type `name^ `^ = sig + `cursor^ +end; + + +XPT module " module .. = struct .. end +XSET name|post=SV( '^\w', '\u&' ) +module `name^ `^ = struct + `cursor^ +end; + +XPT while " while .. do .. done +while `cond^ do + `cursor^ +done + +XPT for " for .. to .. do .. done +XSET side=Choose(['to', 'downto']) +for `var^ = `val^ `side^ `expr^ do + `cursor^ +done + +XPT class " class .. = object .. end +class `_^^ `name^ = +object (self) + `cursor^ +end; + + +XPT classtype " class type .. = object .. end +class type `name^ = +object + method `field^ : `type^` `...^ + method `field^ : `type^` `...^ +end; + + +XPT classtypecom " (** .. *) class type .. = object .. end +(** `class_descr^^ *) +class type `name^ = +object + (** `method_descr^^ *) + method `field^ : `type^` `...^ + (** `method_descr^^ *) + method `field^ : `type^` `...^ +end; + + +XPT typesum " type .. = .. | .. +XSET typeParams?|post=EchoIfNoChange( '' ) +type `typename^` `typeParams?^ = + [ `constructor^`...^ + | `constructor^`...^ + ]; + + +XPT typesumcom " (** .. *) type .. = .. | .. +XSET typeParams?|post=EchoIfNoChange( '' ) +(** `typeDescr^ *) +type `typename^` `typeParams?^ = + [ `constructor^ (** `ctordescr^ *)`...^ + | `constructor^ (** `ctordescr^ *)`...^ + ]; + + +XPT typerecord " type .. = { .. } +XSET typeParams?|post=EchoIfNoChange( '' ) +type `typename^` `typeParams?^ = + { `recordField^ : `fType^` `...^ + ; `recordField^ : `fType^` `...^ + }; + + +XPT typerecordcom " (** .. *)type .. = { .. } +(** `type_descr^ *) +type `typename^ `_^^= + { `recordField^ : `fType^ (** `desc^ *)`...^ + ; `otherfield^ : `othertype^ (** `desc^ *)`...^ + }; + + +XPT try wrap=expr " try .. with .. -> .. +try `expr^ +with [ `exc^ -> `rez^ +` `...` +{{^ | `exc2^ -> `rez2^ +` `...` +^`}}^ ] + +XPT val " value .. : .. +value `thing^ : `cursor^ + +XPT ty " .. -> .. +`t^`...^ -> `t2^`...^ + +XPT do " do { .. } +do { + `cursor^ +} + +XPT begin " begin .. end +begin + `cursor^ +end + +XPT fun " (fun .. -> ..) +(fun `args^ -> `^) + +XPT func " value .. : .. = fun .. -> +value `funName^ : `ty^ = +fun `args^ -> + `cursor^; + + +XPT letin " let .. = .. in +let `name^ `_^^ = + `what^ `...^ +and `subname^ `_^^ = + `subwhat^`...^ +in + + +XPT letrecin " let rec .. = .. in +let rec `name^ `_^^ = + `what^ `...^ +and `subname^ `_^^ = + `subwhat^`...^ +in + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/ocaml/ocaml.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/ocaml/ocaml.xpt.vim new file mode 100755 index 0000000..1765d58 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/ocaml/ocaml.xpt.vim @@ -0,0 +1,181 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE (* void *) +XPTvar $CURSOR_PH (* cursor *) + +XPTvar $BRif ' ' +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTvar $CL (* +XPTvar $CM * +XPTvar $CR *) + +XPTinclude + \ _common/common + \ _comment/doubleSign + + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + + + + + +XPT if " if .. then .. else .. +if `cond^ + then `cursor^`else...{{^ + else`}}^ + + +" NOTE: the first repetition indent is different from the second one. Thus we +" need two part repetition +XPT match " match .. with .. -> .. | .. +match `expr^ with + `what^ -> `with^` `...{{^ + | `what^ -> `with^` `more...{{^ + | `what^ -> `with^` `more...^`}}^`}}^ + + +XPT moduletype " module type .. = sig .. end +module type `name^ `^ = sig + `cursor^ +end + + +XPT module " module .. = struct .. end +XSET name|post=SV( '^\w', '\u&' ) +module `name^ `^ = struct + `cursor^ +end + +XPT while " while .. do .. done +while `cond^ do + `cursor^ +done + +XPT for " for .. to .. do .. done +XSET side=Choose(['to', 'downto']) +for `var^ = `val^ `side^ `expr^ do + `cursor^ +done + +XPT class " class .. = object .. end +class `_^^ `name^ = +object (self) + `cursor^ +end + + +XPT classtype " class type .. = object .. end +class type `name^ = +object + method `field^ : `type^` `...^ + method `field^ : `type^` `...^ +end + + +XPT classtypecom " (** .. *) class type .. = object .. end +(** `class_descr^^ *) +class type `name^ = +object + (** `method_descr^^ *) + method `field^ : `type^` `...^ + (** `method_descr^^ *) + method `field^ : `type^` `...^ +end + + +" NOTE: the first repetition indent is different from the second one. Thus we +" need two part repetition +XPT typesum " type .. = .. | .. +XSET typeParams?|post=EchoIfNoChange( '' ) +type `typename^` `typeParams?^ = + `constructor^` `...{{^ + | `constructor^` `more...{{^ + | `constructor^` `more...^`}}^`}}^ + + +XPT typesumcom " (** .. *) type .. = .. | .. +XSET typeParams?|post=EchoIfNoChange( '' ) +(** `typeDescr^ *) +type `typename^` `typeParams?^ = + `constructor^ (** `ctordescr^ *)` `...{{^ + | `constructor^ (** `ctordescr^ *)` `more...{{^ + | `constructor^ (** `ctordescr^ *)` `more...^`}}^`}}^ + + +XPT typerecord " type .. = { .. } +XSET typeParams?|post=EchoIfNoChange( '' ) +type `typename^` `typeParams?^ = + { `recordField^ : `fType^` `...^ + ; `recordField^ : `fType^` `...^ + } + + +XPT typerecordcom " (** .. *)type .. = { .. } +(** `type_descr^ *) +type `typename^ `_^^= + { `recordField^ : `fType^ (** `desc^ *)` `...^ + ; `otherfield^ : `othertype^ (** `desc^ *)` `...^ + } + + +XPT try wrap=expr " try .. with .. -> .. +try `expr^ +with `exc^ -> `rez^ +` `...` +{{^ | `exc2^ -> `rez2^ +` `...` +^`}}^ + +XPT val " value .. : .. +value `thing^ : `cursor^ + +XPT ty " .. -> .. +`t^`...^ -> `t2^`...^ + +XPT do " do { .. } +do { + `cursor^ +} + +XPT begin " begin .. end +begin + `cursor^ +end + +XPT fun " (fun .. -> ..) +(fun `args^ -> `^) + +XPT func " value .. : .. = fun .. -> +let `funName^ : `ty^ = +fun `args^ -> + `cursor^ + + +XPT letin " let .. = .. in +let `name^ `_^^ = + `what^` `...^ +and `subname^ `_^^ = + `subwhat^` `...^ +in + + +XPT letrecin " let rec .. = .. in +let rec `name^ `_^^ = + `what^` `...^ +and `subname^ `_^^ = + `subwhat^` `...^ +in + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/perl/perl.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/perl/perl.xpt.vim new file mode 100644 index 0000000..9e708e7 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/perl/perl.xpt.vim @@ -0,0 +1,151 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL +XPTvar $UNDEFINED + +XPTvar $VOID_LINE # void; +XPTvar $CURSOR_PH # cursor + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTinclude + \ _common/common + +XPTvar $CS # +XPTinclude + \ _comment/singleSign + +XPTvar $VAR_PRE $ +XPTvar $FOR_SCOPE 'my ' +XPTinclude + \ _loops/for + +XPTinclude + \ _loops/c.while.like + + +" ========================= Function and Variables ============================= + + +" ================================= Snippets =================================== + + +" perl has no NULL value +XPT fornn hidden=1 + +XPT whilenn hidden=1 + + +XPT perl " #!/usr/bin/env perl +#!/usr/bin/env perl + +..XPT + + +XPT xif " .. if ..; +`expr^ if `cond^; + + +XPT xwhile " .. while ..; +`expr^ while `cond^; + + +XPT xunless " .. unless ..; +`expr^ unless `cond^; + + +XPT xforeach " .. foreach ..; +`expr^ foreach @`array^; + + +XPT sub " sub .. { .. } +sub `fun_name^`$BRfun^{ + `cursor^ +} + + +XPT unless " unless ( .. ) { .. } +unless`$SPcmd^(`$SParg^`cond^`$SParg^)`$BRif^{ + `cursor^ +} + + +XPT eval wrap=risky " eval { .. };if... +eval`$BRif^{ + `risky^ +}; +if`$SPcmd^(`$SParg^$@`$SParg^)`$BRif^{ + `handle^ +} + +XPT try alias=eval " eval { .. }; if ... + + +XPT whileeach " while \( \( key, val ) = each\( %** ) ) +while`$SPcmd^(`$SParg^(`$SParg^$`key^,`$SPop^$`val^`$SParg^) = each(`$SParg^%`array^`$SParg^)`$SParg^)`$BRloop^{ + `cursor^ +} + +XPT whileline " while \( defined\( \$line = ) ) +while`$SPcmd^(`$SParg^defined(`$SParg^$`line^`$SPop^=`$SPop^<`STDIN^>`$SParg^)`$SParg^)`$BRloop^{ + `cursor^ +} + + +XPT foreach " foreach my .. (..){} +foreach`$SPcmd^my $`var^ (`$SParg^@`array^`$SParg^)`$BRloop^{ + `cursor^ +} + + +XPT forkeys " foreach my var \( keys %** ) +foreach`$SPcmd^my $`var^ (`$SParg^keys @`array^`$SParg^)`$BRloop^{ + `cursor^ +} + + +XPT forvalues " foreach my var \( keys %** ) +foreach`$SPcmd^my $`var^ (`$SParg^values @`array^`$SParg^)`$BRloop^{ + `cursor^ +} + + +XPT if wrap=job " if ( .. ) { .. } ... +XSET job=$CS job +if`$SPcmd^(`$SParg^`cond^`$SParg^)`$BRif^{ + `job^ +}` +`elsif...^`$BRel^elsif`$SPcmd^(`$SParg^`cond2^`$SParg^)`$BRif^{ + `job^ +}` +`elsif...^` +`else...{{^`$BRel^else`$BRif^{ + `cursor^ +}`}}^ + +XPT package " +package `className^; + +use base qw(`parent^); + +sub new`$BRfun^{ + my $class = shift; + $class = ref $class if ref $class; + my $self = bless {}, $class; + $self; +} + +1; + +..XPT + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/php/php.ftdetect.vim b/vim-plugins/bundle/xptemplate/ftplugin/php/php.ftdetect.vim new file mode 100644 index 0000000..5a437cd --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/php/php.ftdetect.vim @@ -0,0 +1,75 @@ +if exists("b:__PHP_FTDETECT_VIM__") + finish +endif +let b:__PHP_FTDETECT_VIM__ = 1 + + +if &filetype !~ 'php' + finish +endif + + + +let s:skipPattern = 'synIDattr(synID(line("."), col("."), 0), "name") =~? "\\vstring|comment"' +let s:pattern = { + \ 'php' : { + \ 'start' : '\V\c\)\?', + \ 'mid' : '', + \ 'end' : '\V\c?>', + \ 'skip' : s:skipPattern, + \ }, + \ 'javascript' : { + \ 'start' : '\V\c]\*>', + \ 'mid' : '', + \ 'end' : '\V\c', + \ 'skip' : s:skipPattern, + \ }, + \ 'css' : { + \ 'start' : '\V\c]\*>', + \ 'mid' : '', + \ 'end' : '\V\c', + \ 'skip' : s:skipPattern, + \ }, + \} + +if exists( 'php_noShortTags' ) + let s:pattern.php.start = '\V\c' +endif + +let s:topFT = 'html' + +fun! XPT_phpFiletypeDetect() "{{{ + let pos = [ line( "." ), col( "." ) ] + + let synName = xpt#util#NearestSynName() + + if synName == '' + " top level ft is html + return s:topFT + + else + + for [ name, ftPattern ] in items( s:pattern ) + let pos = searchpairpos( ftPattern.start, ftPattern.mid, ftPattern.end, 'nbW', ftPattern.skip ) + if pos != [0, 0] + return name + endif + endfor + + if synName =~ '^\cjavascript' + return 'javascript' + elseif synName =~ '^\ccss' + return 'css' + endif + + return s:topFT + + endif + +endfunction "}}} + +if exists( 'b:XPTfiletypeDetect' ) + unlet b:XPTfiletypeDetect +endif +let b:XPTfiletypeDetect = function( 'XPT_phpFiletypeDetect' ) + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/php/php.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/php/php.xpt.vim new file mode 100644 index 0000000..a417ad6 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/php/php.xpt.vim @@ -0,0 +1,81 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE true +XPTvar $FALSE false +XPTvar $NULL null +XPTvar $UNDEFINED null + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH /* cursor */ + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTinclude + \ _common/common + +XPTvar $CL /* +XPTvar $CM * +XPTvar $CR */ +XPTinclude + \ _comment/doubleSign + +XPTvar $VAR_PRE $ +XPTvar $FOR_SCOPE +XPTinclude + \ _loops/for + +XPTinclude + \ _condition/c.like + \ _loops/c.while.like + +XPTembed + \ html/html + \ html/php* + + + +if exists( 'php_noShortTags' ) + XPTvar $PHP_TAG php +else + XPTvar $PHP_TAG +endif + +XPT html " +?>`html^', 'bWcn' ) + if defIndent == [0, 0] + return a:default + endif + + let di = indent( defIndent[ 0 ] ) + + let clsPos = searchpos( '\V\^\s\*\%<' . di . 'vclass\s\+\zs\w\+', 'bWcn' ) + if clsPos == [0, 0] + return a:default + endif + + return matchstr( getline( clsPos[0] ), '\Vclass\s\+\zs\w\+' ) + +endfunction + +fun! s:f.python_find_func( default ) + let indentNr = indent( line( "." ) ) + let defIndent = searchpos( '\V\^\s\*\%<' . indentNr . 'vdef\>', 'bWcn' ) + if defIndent == [0, 0] + return a:default + endif + + return matchstr( getline( defIndent[0] ), '\Vdef\s\+\zs\w\+' ) + +endfunction + +" ================================= Snippets =================================== + + +XPT _if hidden +if `cond^: + `pass^ + + +XPT _generator hidden " generator +XSET ComeFirst=elem seq func +`func^`func^python_genexpr_cmpl('elem')^ for `elem^ in `seq^` if `condition?^ + + +XPT _args hidden " expandable arguments +XSET arg*|post=ExpandInsideEdge( ',$SPop', '' ) +`$SParg`arg*`$SParg^ + +XPT _args2 hidden " expandable arguments +XSET arg*|post=ExpandInsideEdge( ',$SPop', '' ) +`,$SPop`arg*^ + + + + +XPT python " #!$PYTHON_EXC +XSET encoding=Echo(&fenc != '' ? &fenc : &enc) +#!`$PYTHON_EXC^ +# coding: `encoding^ + +..XPT + +XPT shebang alias=python + +XPT sb alias=python + + +XPT p " pass +pass + + +XPT s " self. +self. + + +XPT filehead " file description +`$PYTHON_DOC_MARK^ +File : `file()^ +Author : `$author^ +Contact : `$email^ +Date : `date()^ + +Description : `cursor^ +`$PYTHON_DOC_MARK^ + + +XPT if " if ..: .. else... +`:_if:^ + + +XPT else " else: +else: + `cursor^ + + +XPT elif " else: +elif `cond^: + `cursor^ + + +XPT range " range\( .. ) +range(`$SParg^``0?`,$SPop^`end^`$SParg^) + + +XPT forrange " for var in range\( .. ) +for `i^ in `:range:^: + `cursor^ + + +XPT for " for .. in ..: .. +XSET seq|post=Build( V() =~ '\V\^r\%[ange(]\$' ? '`:range:^' : ItemValueStripped() ) +for `var^ in `seq^`seq^python_seq_cmpl()^: + `cursor^ + + +XPT while " while ..: +while `condition^: + `cursor^ + + +XPT def " def ..( .. ): ... +XSET a=arg* +XSET a|post=Build( V() == 'arg*' ? '' : VS() . AutoCmpl( 1, 'self' ) . '`:_args2:^' ) +def `name^`$SPfun^(`a^python_sp_arg()^``a^`a^AutoCmpl(0,'self')^`a^python_sp_arg()^): + `cursor^ + + +" TODO use ontype/map instead +XPT lambda " (lambda .. : ..) +XSET arg*|post=ExpandInsideEdge( ',$SPop', '' ) +lambda `arg*^: `expr^ + + +XPT try wrap=job " try: .. except: ... +try: + `job^ +`:except:^ + + +XPT except " except .. +except `Exception^`$PYTHON_EXP_SYM`e^: + `cursor^ + + +XPT finally " finally: +finally: + `cursor^ + + +XPT class " class .. : def __init__ ... +class `ClassName^`$SPfun^(`$SParg`object`$SParg^): + `pass^ + + +XPT init " def __init__ +XSET arg*|post=ExpandInsideEdge( ',$SPop', '' ) +def __init__`$SPfun^(`$SParg^self`,$SPop`arg*^`$SParg^): + `cursor^ + + +" TODO guess method name for example __init__ +XPT super " super\( Clz, self ). +super(`$SParg^`clz^python_find_class('Me')^,`$SPop^self`$SParg^).`method^python_find_func('what')^(`:_args:^) + + +XPT ifmain " if __name__ == __main__ +if __name__`$SPop^==`$SPop^"__main__": + `cursor^ + +XPT with " with .. as .. : +with `opener^` as `name?^: + `cursor^ + + +XPT import " import .. +import `mod^` as `name?^ + + +XPT from " from .. import .. +from `module^ import `item^` as `name?^ + + +XPT fromfuture " from __future__ import .. +from __future__ import `name^ + + +XPT str wrap=s " str\( .. ) +str(`$SParg^`s^`$SParg^) + + +XPT genExp " \(func\(x) for x in seq) +(`$SParg^`:_generator:^`$SParg^) + + +XPT listComp " \[func\(x) for x in seq] +[`$SParg^`:_generator:^`$SParg^] diff --git a/vim-plugins/bundle/xptemplate/ftplugin/r/r.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/r/r.xpt.vim new file mode 100644 index 0000000..899506d --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/r/r.xpt.vim @@ -0,0 +1,36 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTinclude + \ _common/common + \ _condition/c.like + + +XPT for " for (... in ...) { ... } +for (`name^ in `vec^) +{ + `cursor^ +} + +XPT while " while ( ... ) { ... } +while ( `cond^ ) +{ + `cursor^ +} + +XPT fun " ... <- function ( ... , ... ) { ... } +`funName^ <- function( `args^ ) +{ + `cursor^ +} + +XPT operator " %...% <- function ( ... , ... ) { ... } +%`funName^% <- function( `args^ ) +{ + `cursor^ +} + +XPT head " #! /usr/bin/env/Rscript +#! /usr/bin/env Rscript + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/rst/rst.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/rst/rst.xpt.vim new file mode 100644 index 0000000..4e2a710 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/rst/rst.xpt.vim @@ -0,0 +1,70 @@ +" snippets for reStructuredText (.rst) +XPTemplate priority=lang mark=~^ + +let s:f = g:XPTfuncs() + +XPTinclude + \ _common/common + +fun! s:f.ExpandRstTitle() + let txt = self.R( 'title' ) + let bar = repeat( '=', len( txt ) ) + return bar . "\n" . txt . "\n" . bar . "\n" +endfunction + +fun! s:f.ExpandRstSection( char ) + let txt = self.R( 'sectionName' ) + let bar = repeat( a:char, len( txt ) ) + return txt . "\n" . bar . "\n" +endfunction + +XPT index " all stuff to create basic index +XSET sectionName|post=ExpandRstSection('=') +~sectionName^ + +Contents: + +.. toctree:: + :maxdepth: 2 + :numbered: + ~cursor^ + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + + +XPT title synonym=h1 " === ... === +XSET title|post=ExpandRstTitle() +~title^ + + +XPT section synonym=h2 " ... ==== +XSET sectionName|post=ExpandRstSection('=') +~sectionName^ + +XPT subsection synonym=h3 " .... ------- +XSET sectionName|post=ExpandRstSection('-') +~sectionName^ + + +XPT code " ```...``` +``~cursor^`` + +XPT italic " *...* +*~cursor^* + +XPT bold " **...** +**~cursor^** + +XPT link " .. _a link: ... +.. _a link: ~url^ + +XPT func " .. function:: ... +.. function:: ~funDesc^ + + ~cursor^ + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/ruby/ruby.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/ruby/ruby.xpt.vim new file mode 100644 index 0000000..273da97 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/ruby/ruby.xpt.vim @@ -0,0 +1,821 @@ +XPTemplate priority=lang keyword=:%# + +" containers +let s:f = g:XPTfuncs() + +" inclusion +XPTinclude + \ _common/common + +" ========================= Function and Variables ============================= + +fun! s:f.RubyCamelCase(...) "{{{ + let str = a:0 == 0 ? self.V() : a:1 + let r = substitute(substitute(str, "[\/ _]", ' ', 'g'), '\<.', '\u&', 'g') + return substitute(r, " ", '', 'g') +endfunction "}}} + +fun! s:f.RubySnakeCase(...) "{{{ + let str = a:0 == 0 ? self.V() : a:1 + return substitute(str," ",'_','g') +endfunction "}}} + +" Multiple each snippet {{{ +"{{{ s:each_list +let s:each_list = [ 'byte', 'char', 'cons', 'index', 'key', + \'line', 'pair', 'slice', 'value' ] +"}}} + +fun! s:f.RubyEachPopup() "{{{ + let l = [] + for i in s:each_list + let l += [{'word': i, 'menu': 'each_' . i . '{ |..| ... }'}] + endfor + return l +endfunction "}}} + +fun! s:f.RubyEachBrace() "{{{ + let v = self.SV('^_','','') + if v == '' + return '' + elseif v =~# 'slice\|cons' + return '_' . v.'(`val^3^)' + else + return '_' . v + endif +endfunction "}}} + +fun! s:f.RubyEachPair() "{{{ + let v = self.R('what') + if v =~# 'pair' + return '`el1^, `el2^' + elseif v == '' + return '`el^' + else + if v =~ 'slice\|cons' + let v = substitute(v,'val','','') + endif + return '`' . substitute(v,'[^a-z]','','g') . '^' + endif +endfunction "}}} +" End multiple each snippet }}} + +" Multiple assert snippet {{{ +"{{{ s:assert_map +let s:assert_map = { + \'block' : '' . ' { `cursor^ }', + \'equals' : '(`expected^, `actual^`, `message^)' . '', + \'in_delta' : '(`expected float^, `actual float^, `delta^`, `message^)' . '', + \'instance_of' : '(`klass^, `object to compare^`, `message^)' . '', + \'kind_of' : '(`klass^, `object to compare^`, `message^)' . '', + \'match' : '(/`regexp^/`^, `string^`, `message^)' . '', + \'not_equal' : '(`expected^, `actual^`, `message^)' . '', + \'nil' : '(`object^`, `message^)' . '', + \'no_match' : '(/`regexp^/`^, `string^`, `message^)' . '', + \'not_nil' : '(`object^`, `message^)' . '', + \'nothing_raised' : '(`exception^)' . ' { `cursor^ }', + \'not_same' : '(`expected^, `actual^`, `message^)' . '', + \'nothing_thrown' : '`(`message`)^' . ' { `cursor^ }', + \'operator' : '(`obj1^, `operator^, `obj2^`, `message^)' . '', + \'raise' : '(`exception^)' . ' { `cursor^ }', + \'respond_to' : '(`object^, `respond to this message^`, `message^)' . '', + \'same' : '(`expected^, `actual^`, `message^)' . '', + \'send' : '([`receiver^, `method^, `args^]`, `message^)' . '', + \'throws' : '(`expected symbol^`, `message^)' . ' { `cursor^ }', + \} +"}}} + +fun! s:RubyAssertPopupSort(a, b) "{{{ + return a:a.word == a:b.word ? 0 : a:a.word > a:b.word ? 1 : -1 +endfunction "}}} + +fun! s:f.RubyAssertPopup() "{{{ + let list = [] + for [k, v] in items(s:assert_map) + let list += [{ 'word' : k, 'menu' : 'assert_' . k . substitute(v, '`.\{-}^', '..', 'g') }] + endfor + return sort(list, 's:RubyAssertPopupSort') +endfunction "}}} + +fun! s:f.RubyAssertMethod() "{{{ + let v = self.SV('^_', '', '') + if v == '' + return v . '(`^`, `message^)' + endif + if has_key(s:assert_map, v) + return '_' . v . s:assert_map[v] + else + return '' + endif +endfunction "}}} +" End multiple assert snippet }}} + +" Repeat an item inside its edges. +" Behave like ExpandIfNotEmpty() but within edges +fun! s:f.RepeatInsideEdges(sep) "{{{ + let [edgeLeft, edgeRight] = self.ItemEdges() + let v = self.V() + let n = self.N() + if v == '' || v == self.ItemFullname() + return '' + endif + + + let v = self.ItemStrippedValue() + let [ markLeft, markRight ] = XPTmark() + + let newName = 'n' . n + let res = edgeLeft . v + let res .= markLeft . a:sep . markLeft . newName . markRight + let res .= 'ExpandIfNotEmpty("' . a:sep . '", "' . newName . '")' . markRight . markRight + let res .= edgeRight + + + return res +endfunction "}}} + +" Remove an item if its value hasn't change +fun! s:f.RemoveIfUnchanged() "{{{ + let v = self.V() + let [lft, rt] = self.ItemEdges() + if v == lft . self.N() . rt + return '' + else + return v + end +endfunction "}}} + + + +" ================================= Snippets =================================== + +XPT # syn=string " #{..} +#{`^} + + +XPT : " :... => ... +:`key^ => `value^ + + +XPT % " %**[..] +XSET _=Choose(['w', 'W', 'q', 'Q']) +%`_^[`^] + + +XPT BEG " BEGIN { .. } +BEGIN { + `cursor^ +} + + +XPT Comp " include Comparable def <=> ... +include Comparable + +def <=>(other) + `cursor^ +end + + +XPT END " END { .. } +END { + `cursor^ +} + + +XPT Enum " include Enumerable def each ... +include Enumerable + +def each(&block) + `cursor^ +end + + +XPT Forw " extend Forwardable +extend Forwardable + + +XPT Md " Marshall Dump +File.open(`filename^, "wb") { |`file^| Marshal.dump(`obj^, `file^) } + + +XPT Ml " Marshall Load +File.open(`filename^, "rb") { |`file^| Marshal.load(`file^) } + + +XPT Pn " PStore.new\(..) +PStore.new(`filename^) + + +XPT Yd " YAML dump +File.open("`filename^.yaml", "wb") { |`file^| YAML.dump(`obj^,`file^) } + + +XPT Yl " YAML load +File.open("`filename^.yaml") { |`file^| YAML.load(`file^) } + + +XPT _d " __DATA__ +__DATA__ + + +XPT _e " __END__ +__END__ + + +XPT _f " __FILE__ +__FILE__ + + +XPT ali " alias : .. : .. +XSET new.post=RubySnakeCase() +XSET old=old_{R("new")} +XSET old.post=RubySnakeCase() +alias :`new^ :`old^ + + +XPT all " all? { .. } +all? { |`element^| `cursor^ } + + +XPT amm " alias_method : .. : .. +XSET new.post=RubySnakeCase() +XSET old=old_{R("new")} +XSET old.post=RubySnakeCase() +alias_method :`new^, :`old^ + + +XPT any " any? { |..| .. } +any? { |`element^| `cursor^ } + + +XPT app " if __FILE__ == $PROGRAM_NAME ... +if __FILE__ == $PROGRAM_NAME + `cursor^ +end + + +XPT array " Array.new\(..) { ... } +Array.new(`size^) { |`i^| `cursor^ } + +XPT ass " assert**\(..) ... +XSET what=RubyAssertPopup() +XSET what|post=RubyAssertMethod() +XSET message|post=RemoveIfUnchanged() +assert`_`what^ + + +XPT attr " attr_** :... +XSET what=Choose(["accessor", "reader", "writer"]) +XSET what|post=SV("^_$",'','') +XSET attr*|post=ExpandIfNotEmpty(', :', 'attr*') +attr`_`what^ :`attr*^ + +XPT begin " begin .. rescue .. else .. end +XSET block=# block +XSET Exception|post=RubyCamelCase() +begin + `expr^ +``rescue...` +{{^rescue `Exception^` => `e^ + `block^ +``rescue...` +^`}}^``else...` +{{^else + `block^ +`}}^``ensure...` +{{^ensure + `cursor^ +`}}^end + +XPT bm " Benchmark.bmbm do ... end +XSET times=10_000 +TESTS = `times^ + +Benchmark.bmbm do |result| + `cursor^ +end + + +XPT case " case .. when .. end +XSET block=# block +case `target^` +when `comparison^ + `block^ +``when...` +{{^when `comparison^ + `block^ +``when...` +^`}}^``else...` +{{^else + `cursor^ +`}}^end + + +XPT cfy " classify { |..| .. } +classify { |`element^| `cursor^ } + + +XPT cl " class .. end +XSET ClassName.post=RubyCamelCase() +class `ClassName^ + `cursor^ +end + + +XPT cld " class .. < DelegateClass .. end +XSET ClassName.post=RubyCamelCase() +XSET ParentClass.post=RubyCamelCase() +XSET arg*|post=RepeatInsideEdges(', ') +class `ClassName^ < DelegateClass(`ParentClass^) + def initialize`(`arg*`)^ + super(`delegate object^) + + `cursor^ + end +end + + +XPT cli " class .. def initialize\(..) ... +XSET ClassName|post=RubyCamelCase() +XSET name|post=RubySnakeCase() +XSET init=Trigger('defi') +XSET def=Trigger('def') +class `ClassName^ + `init^` + `def...^ + + `def^` + `def...^ +end + + +XPT cls " class << .. end +XSET self=self +class << `self^ + `cursor^ +end + + +XPT clstr " .. = Struct.new ... +XSETm do...|post + do + `cursor^ +end +XSETm END +XSET ClassName|post=RubyCamelCase() +XSET attr*|post=RepeatInsideEdges(', :') +`ClassName^ = Struct.new`(:`attr*`)^` `do...^ + + +XPT col " collect { .. } +collect { |`obj^| `cursor^ } + + +XPT deec " Deep copy +Marshal.load(Marshal.dump(`obj^)) + + +XPT def " def .. end +XSET method|post=RubySnakeCase() +XSET arg*|post=RepeatInsideEdges(', ') +def `method^`(`arg*`)^ + `cursor^ +end + + +XPT defd " def_delegator : ... +def_delegator :`del obj^, :`del meth^, :`new name^ + + +XPT defds " def_delegators : ... +def_delegators :`del obj^, :`del methods^ + + +XPT defi " def initialize .. end +XSET arg*|post=RepeatInsideEdges(', ') +def initialize`(`arg*`)^ + `cursor^ +end + + +XPT defmm " def method_missing\(..) .. end +def method_missing(meth, *args, &block) + `cursor^ +end + + +XPT defs " def self... end +XSET method.post=RubySnakeCase() +XSET arg*|post=RepeatInsideEdges(', ') +def self.`method^`(`arg*`)^ + `cursor^ +end + + +XPT deft " def test_.. .. end +XSET name|post=RubySnakeCase() +XSET arg*|post=RepeatInsideEdges(', ') +def test_`name^ + `cursor^ +end + + +XPT deli " delete_if { |..| .. } +delete_if { |`arg^| `cursor^ } + + +XPT det " detect { .. } +detect { |`obj^| `cursor^ } + + +XPT dir " Dir[..] +XSET _='/**/*' +Dir[`_^] + + +XPT dirg " Dir.glob\(..) { |..| .. } +Dir.glob(`dir^) { |`file^| `cursor^ } + + +XPT do " do |..| .. end +XSET arg*|post=RepeatInsideEdges(', ') +do` |`arg*`|^ + `cursor^ +end + + +XPT dow " downto\(..) { .. } +XSET arg=i +XSET lbound=0 +downto(`lbound^) { |`arg^| `cursor^ } + + +XPT each " each_** { .. } +XSET what=RubyEachPopup() +XSET what|post=RubyEachBrace() +XSET vars=RubyEachPair() +each`_`what^ { |`vars^| `cursor^ } + + +XPT fdir " File.dirname\(..) +File.dirname(`^) + + +XPT fet " fetch\(..) { |..| .. } +fetch(`name^) { |`key^| `cursor^ } + + +XPT file " File.foreach\(..) ... +File.foreach('`filename^') { |`line^| `cursor^ } + + +XPT fin " find { |..| .. } +find { |`element^| `cursor^ } + + +XPT fina " find_all { |..| .. } +find_all { |`element^| `cursor^ } + + +XPT fjoin " File.join\(..) +File.join(`dir^, `path^) + + +XPT fla " flatten_once +inject(Array.new) { |`arr^, `a^| `arr^.push(*`a^) } + + +XPT fread " File.read\(..) +File.read(`filename^) + + +XPT grep " grep\(..) { |..| .. } +grep(/`pattern^/) { |`match^| `cursor^ } + + +XPT gsub " gsub\(..) { |..| .. } +gsub(/`pattern^/) { |`match^| `cursor^ } + + +XPT hash " Hash.new { ... } +Hash.new { |`hash^,`key^| `hash^[`key^] = `cursor^ } + +XPT if " if .. end +if `boolean exp^ + `cursor^ +end + +XPT ife " if .. else .. end +XSET block=# block +if `boolean exp^ + `block^ +else + `cursor^ +end + +XPT ifei " if .. elsif .. else .. end +XSET block=# block +if `boolean exp^` + `block^ +``elsif...` +{{^elsif `comparison^ + `block^ +``elsif...` +^`}}^``else...` +{{^else + `cursor^ +`}}^end + + +XPT inj " inject\(..) { |..| .. } +inject`(`arg`)^ { |`accumulator^, `element^| `cursor^ } + + +XPT lam " lambda { .. } +XSET arg*|post=RepeatInsideEdges(', ') +lambda {` |`arg*`|^ `cursor^ } + + +XPT loop " loop do ... end +loop do + `cursor^ +end + +XPT map " map { |..| .. } +map { |`arg^| `cursor^ } + + +XPT max " max { |..| .. } +max { |`element1^, `element2^| `cursor^ } + + +XPT min " min { |..| .. } +min { |`element1^, `element2^| `cursor^ } + + +XPT mod " module .. .. end +XSET module name|post=RubyCamelCase() +module `module name^ + `cursor^ +end + + +XPT modf " module .. module_function .. end +XSET module name|post=RubyCamelCase() +module `module name^ + module_function + + `cursor^ +end + + +XPT nam " Rake Namespace +XSET ns=fileRoot() +namespace :`ns^ do + `cursor^ +end + + +XPT new " Instanciate new object +XSET Object|post=RubyCamelCase() +XSET arg*|post=RepeatInsideEdges(', ') +`var^ = `Object^.new`(`arg*`)^ + + +XPT open " open\(..) { |..| .. } +XSET mode...|post=, '`wb^' +open(`filename^`, `mode...^) { |`io^| `cursor^ } + + +XPT par " partition { |..| .. } +partition { |`element^| `cursor^ } + + +XPT pathf " Path from here +XSET path=../lib +File.join(File.dirname(__FILE__), "`path^") + + +XPT rdoc syn=comment " RDoc description +=begin rdoc +# `cursor^ +#=end + + +XPT rej " reject { |..| .. } +reject { |`element^| `cursor^ } + + +XPT rep " Benchmark report +result.report("`name^: ") { TESTS.times { `cursor^ } } + + +XPT req " require .. +require '`lib^' + + +XPT reqs " %w[..].map { |lib| require lib } +XSET lib*|post=ExpandIfNotEmpty(' ', 'lib*') +%w[`lib*^].map { |lib| require lib } + +..XPT + + +XPT reve " reverse_each { .. } +reverse_each { |`element^| `cursor^ } + + +XPT ruby " #!/usr/bin/env ruby +XSET enc=Echo(&fenc ? &fenc : &enc) +#!/usr/bin/env ruby +# -*- encoding: `enc^ -*- + +XPT shebang alias=ruby + +XPT sb alias=ruby + + + +XPT scan " scan\(..) { |..| .. } +scan(/`pattern^/) { |`match^| `cursor^ } + + +XPT sel " select { |..| .. } +select { |`element^| `cursor^ } + + +XPT sinc " class << self; self; end +class << self; self; end + + +XPT sor " sort { |..| .. } +sort { |`element1^, `element2^| `element1^ <=> `element2^ } + + +XPT sorb " sort_by { |..| .. } +sort_by {` |`arg`|^ `cursor^ } + + +XPT ste " step\(..) { .. } +step(`count^`, `step^) { |`i^| `cursor^ } + + +XPT sub " sub\(..) { |..| .. } +sub(/`pattern^/) { |`match^| `cursor^ } + + +XPT subcl " class .. < .. end +XSET ClassName.post=RubyCamelCase() +XSET Parent.post=RubyCamelCase() +class `ClassName^ < `Parent^ + `cursor^ +end + + +XPT tas " Rake Task +XSET task name|post=RubySnakeCase() +XSET dep*|post=RepeatInsideEdges(', :') +desc "`task description^" +task :`task name^` => [:`dep*`]^ do + `cursor^ +end + + +XPT tc " require 'test/unit' ... class Test.. < Test::Unit:TestCase ... +XSET ClassName=RubyCamelCase(R("module")) +XSET ClassName.post=RubyCamelCase() +XSET deft=Trigger('deft') +require "test/unit" +require "`module^" + +class Test`ClassName^ < Test::Unit::TestCase + `deft^` + + `deft...`{{^ + + `deft^` + + `deft...`^`}}^ +end + + +XPT tif " .. ? .. : .. +(`boolean exp^) ? `exp if true^ : `exp if false^ + + +XPT tim " times { .. } +times {` |`i`|^ `cursor^ } + + +XPT tra " transaction\(..) { ... } +transaction(`true^) { `cursor^ } + + +XPT unif " Unix Filter +ARGF.each_line do |`line^| + `cursor^ +end + + +XPT unless " unless .. end +unless `boolean cond^ + `cursor^ +end + + +XPT until " until .. end +until `boolean cond^ + `cursor^ +end + + +XPT upt " upto\(..) { .. } +upto(`ubound^) { |`i^| `cursor^ } + + +XPT usai " if ARGV.. abort\("Usage... +XSET args=[options] +if ARGV`^ + abort "Usage: #{$PROGRAM_NAME} `args^" +end + + +XPT usau " unless ARGV.. abort\("Usage... +XSET args=[options] +unless ARGV`^ + abort "Usage: #{$PROGRAM_NAME} `args^" +end + + +XPT while " while .. end +while `boolean cond^ + `cursor^ +end + + +XPT wid " with_index { .. } +with_index { |`element^, `index^| `cursor^ } + + +XPT xml " REXML::Document.new\(..) +REXML::Document.new(File.read(`filename^)) + + +XPT y syn=comment " :yields: +:yields: + + +XPT zip " zip\(..) { |..| .. } +zip(`enum^) { |`row^| `cursor^ } + + + + +" ================================= Wrapper =================================== + + + +XPT invoke_ wraponly=wrapped " ..(SEL) +XSET name|post=RubySnakeCase() +`name^(`wrapped^) + + +XPT def_ wraponly=wrapped " def ..() SEL end +XSET method_name|post=RubySnakeCase() +XSET arg*|post=RepeatInsideEdges(', ') +def `method_name^`(`arg*`)^ + `wrapped^ +end + + +XPT class_ wraponly=wrapped " class .. SEL end +XSET _|post=RubyCamelCase() +class `_^ + `wrapped^ +end + + +XPT module_ wraponly=wrapped " module .. SEL end +XSET _|post=RubyCamelCase() +module `_^ + `wrapped^ +end + + +XPT begin_ wraponly=wrapped " begin SEL rescue .. else .. end +XSET Exception|post=RubyCamelCase() +XSET block=# block +begin + `wrapped^ +``rescue...` +{{^rescue `Exception^` => `e^ + `block^ +``rescue...` +^`}}^``else...` +{{^else + `block^ +`}}^``ensure...` +{{^ensure + `cursor^ +`}}^end + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/scheme/scheme.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/scheme/scheme.xpt.vim new file mode 100755 index 0000000..8233984 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/scheme/scheme.xpt.vim @@ -0,0 +1,71 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL +XPTvar $VOID_LINE /* void */; +XPTvar $BRif \n + +XPTinclude + \ _common/common + \ _condition/lisp.like + + +XPT begin " (begin .. ) +(begin + (`todo0^)` `...^ + (`todon^)` `...^) + + +XPT case " (case (of) ((match) (expr)) ..) +(case (`of^) + ({`match^} `expr1^)` `...^ + ({`matchn^} `exprn^)` `...^ + `else...^\(else \`cursor\^)^^) + + +XPT cond " (cond ([condi] (expr)) ..) +(cond ([`condition^] `expr1^)` `...^ +` ([`condition^] `exprn^)` `...^ + `else...^\(else \`cursor\^)^^) + + +XPT let " (let [(var (val)) ..] (body)) +(let [(`newVar^ `value^` `...^) +` (`newVarn^ `valuen^` `...^)] + (`cursor^)) + + +XPT letrec " (letrec [(var (val)) ..] (body)) +(letrec [(`newVar^ `value^` `...^) +` (`newVarn^ `valuen^` `...^)] + (`cursor^)) + + +XPT lambda " (lambda [params] (body)) +(lambda [`params^] + (`cursor^)) + + +XPT defun " (define var (lambda ..)) +(define `funName^ + (lambda [`params^] + (`cursor^)) + ) + + +XPT def " (define var (ex)) +(define `varName^ `cursor^) + + +XPT do " (do ..) +(do {(`var^ `init^ `step^)` `...0^ +` (`var^ `init^ `step^)` `...0^} + ([`test^] `exprs^) + (`command^)` `...2^ + (`command^)` `...2^) + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/sh/sh.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/sh/sh.xpt.vim new file mode 100644 index 0000000..ad29c6b --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/sh/sh.xpt.vim @@ -0,0 +1,179 @@ +XPTemplate priority=lang mark=~^ + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE # void +XPTvar $CURSOR_PH # cursor + + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTvar $SPop '' +XPTvar $SParg '' + +XPTinclude + \ _common/common + \ _printf/c.like + +XPTvar $CS # +XPTinclude + \ _comment/singleSign + + +" ========================= Function and Variables ============================= + +let s:braceMap = { + \ '`' : '`', + \ '{' : '}', + \ '[' : ']', + \ '(' : ')', + \ '{{' : '}}', + \ '[[' : ']]', + \ '((' : '))', + \ '{ ' : ' }', + \ '[ ' : ' ]', + \ '( ' : ' )', + \ '{{ ' : ' }}', + \ '[[ ' : ' ]]', + \ '(( ' : ' ))', + \} + +fun! s:f.sh_complete_brace() + + let v = self.V() + let br = matchstr( v, '\V\^\[\[({`]\{1,2} \?' ) + if br == '' + return '' + elseif br == '`' + return s:braceMap[ br ] + else + try + let cmpl = s:braceMap[ br ] + let cmplEsc = substitute( cmpl, ']', '\\[]]', 'g' ) + let tail = matchstr( v, '\V\%[' . cmplEsc . ']\$' ) + if tail == ' ' && br =~ ' ' + let tail = '' + endif + return cmpl[ len( tail ) : ] + catch /.*/ + echom v:exception + endtry + endif + +endfunction + +" ================================= Snippets =================================== + + + + +XPT shebang " #!/bin/[ba|z|c]sh +XSET sh=ChooseStr( 'sh', 'bash', 'zsh', 'csh' ) +#!/bin/~sh^ + +..XPT + +XPT sb alias=shebang + +XPT _shebang hidden " #!/bin/$_xSnipName +#!/bin/~$_xSnipName^ + +..XPT + + +XPT sh alias=_shebang +XPT bash alias=_shebang +XPT zsh alias=_shebang +XPT csh alias=_shebang + + +XPT echodate " echo `date +%...` +echo `date~ +~fmt^` + +XPT _cond hidden +XSET condition|map=[ [ +XSET condition|map=( ( +~condition^~condition^sh_complete_brace()^ + + +XPT printf " printf\(...) +XSET elts|pre=Echo('') +XSET elts=c_printf_elts( R( 'pattern' ), ' '[ len( $SPop ) : ] ) +printf "~pattern^"~elts^ + + + +XPT forin wrap " for .. in ..; do +for ~i^ in ~list^;~$BRloop^do + ~cursor^ +done + +XPT for wrap " for (( i=0; i=start; i++ )); do +for ((~i^ = ~n^; ~i^ >~=^ ~start^0^; ~i^--));~$BRloop^do + ~cursor^ +done + +XPT here wrap " << END .. +<<~-~END^ +~cursor^ +~END^substitute( V(), '\v\^-', '', '' )^ + +XPT until wrap " until ..; do +until ~:_cond:^;~$BRloop^;do + ~cursor^ +done + +XPT while wrap " while ..; do +while ~:_cond:^;~$BRloop^do + ~cursor^ +done + +XPT while1 alias=while " while [ 1 ]; do +XSET condition=Next( '[ ~$TRUE^ ]' ) + +XPT case wrap " case .. in .. +case ~$~var^ in + ~pattern^) + ~cursor^ + ;; + +esac + +XPT if wrap " if ..; then +if ~:_cond:^;~$BRif^then + ~cursor^ +fi + +XPT else wrap " else .. +else + ~cursor^ + +XPT ife wrap=job " if ..; then .. else .. +if ~:_cond:^;~$BRif^then + ~job^ +else + ~cursor^ +fi + +XPT elif wrap " elif .. ; then +elif ~:_cond:^;~$BRif^then + ~cursor^ + +XPT fun wrap " .. () { .. } +~name^ ()~$BRfun^{ + ~cursor^ +} diff --git a/vim-plugins/bundle/xptemplate/ftplugin/sql/sql.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/sql/sql.xpt.vim new file mode 100644 index 0000000..8462d79 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/sql/sql.xpt.vim @@ -0,0 +1,80 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +" if () ** { +" else ** { +XPTvar $BRif ' ' + +" } ** else { +XPTvar $BRel \n + +" for () ** { +" while () ** { +" do ** { +XPTvar $BRloop ' ' + +" struct name ** { +XPTvar $BRstc ' ' + +" int fun() ** { +" class name ** { +XPTvar $BRfun ' ' + +XPTinclude + \ _common/common + + + + +" ============================================================================ +" cursor - CURSOR logic +" ============================================================================ +XPT cursor hint=CURSOR\ logic +DECLARE @iFetchCount INT +DECLARE `^ CURSOR STATIC + FOR SELECT `^` + `Expression2...^ + ` ,`^` + `Expression2...^ + FROM `^ WITH (NOLOCK) + WHERE (`^)` + `Expression4...^ + ` AND (`^)` + `Expression4...^ + ORDER BY `^` + `Expression6...^ + ` ,`^` + `Expression6...^ +SET @iFetchCount = 0 +OPEN `^ +FETCH NEXT + FROM `^ + INTO `^` + `Variable2...^ + ` ,`^` + `Variable2...^ +WHILE (@@FETCH_STATUS = 0) +BEGIN + SET @iFetchCount = @iFetchCount + 1 + IF ((@iFetchCount % 1000) = 0) + BEGIN + SET @sMsg = '@iFetchCount = ' + ltrim(dbo.udfFormatNumber(@iFetchCount,18,0)) + EXEC dbadb.dbo.uspLogMessage @sJob, @sMsg + END + FETCH NEXT + FROM `^ + INTO `^` + `Variable4...^ + ` ,`^` + `Variable4...^ +END +CLOSE `^ +DEALLOCATE `^ +..XPT + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/svg/svg.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/svg/svg.xpt.vim new file mode 100644 index 0000000..8644443 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/svg/svg.xpt.vim @@ -0,0 +1,65 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTinclude + \ _common/common + \ xml/xml + + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + +XPT svg " Start an svg document + + + + `cursor^ + +..XPT + +XPT line " Create an svg line + +XSET style...|post= style="`cursor^" +..XPT + +XPT circle " Create an svg circle + +XSET style...|post= style="`cursor^" +..XPT + +XPT ellipse " Create an svg ellipse + +XSET style...|post= style="`cursor^" +..XPT + +XPT rect " Create an svg rectangle + +XSET style...|post= style="`cursor^" +..XPT + +XPT polygon " Create an svg polygon + +XSET style...|post= style="`cursor^" +..XPT + +XPT polyline " Create an svg polyline + +XSET style...|post= style="`cursor^" +..XPT + +XPT line " Create an svg line + + `cursor^ + +XSET style...|post= style="`style^" +..XPT + +" ================================= Wrapper =================================== + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/tcl/tcl.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/tcl/tcl.xpt.vim new file mode 100644 index 0000000..9aa73d0 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/tcl/tcl.xpt.vim @@ -0,0 +1,93 @@ +XPTemplate priority=lang mark=~^ + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH + +XPTvar $BRif \n + +XPTinclude + \ _common/common + + +" ========================= Function and Variables ============================= + + +" ================================= Snippets =================================== + + + +XPT shebang " #!/bin/sh .. exec tclsh.. +#!/bin/sh +#\ +exec tclsh "$0" "$@"" + +..XPT + +XPT sb alias=shebang + + +XPT for " for {...} +for {set ~i^ ~x^} {$~i^ <= ~len^} {incr ~i^} { + ~cursor^ +} + + +XPT foreach " foreach i var {... +foreach ~i^ ~var^ { + ~cursor^ +} + + +XPT while " while {i <= ?} {... +while {~i^ <= ~len^} { + ~cursor^ +} + + +XPT if " if { ... } { ... +if {~a^} { + ~cursor^ +} + + +XPT elseif " elseif {... +elseif {~a^} { + ~cursor^ +} + + +XPT else " else {... +else { + ~cursor^ +} + + +XPT switch " switch ... {... +switch ~var^ { + ~1^ { ~body1^ } + ~2^ { ~body2^ } + ~3^ { ~body3^ } + default { ~body4^ } +} + + +XPT proc " proc *** {... +proc ~name^ {~args^} { + ~cursor^ +} + + +XPT regexp " regexp ... match +regexp ~r^ ~str^ match ~vars^ + + +XPT regsub " regsub ... +regsub ~in^ ~str^ ~out^ + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/tex/tex.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/tex/tex.xpt.vim new file mode 100644 index 0000000..45d89e5 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/tex/tex.xpt.vim @@ -0,0 +1,137 @@ +XPTemplate priority=lang mark=`~ + +let s:f = g:XPTfuncs() + +XPTinclude + \ _common/common + +XPT _arg1 hidden " \\$_xSnipName\{..} +\\`$_xSnipName~{`cursor~} + +XPT _arg2 hidden " \\$_xSnipName\{..}\{..} +\\`$_xSnipName~{`a~}{`b~} + +XPT _sub hidden " \\{$_xSnipName}_.. +\\`$_xSnipName~_`sub~ + +XPT _sub_super hidden " \\{$_xSnipName}_..^.. +\\`$_xSnipName~_`sub~^`super~ + +XPT _begin wrap hidden " \begin{..} .. end{..} +\begin{`sth~}`{`what?`}~ + `cursor~ +\end{`sth~} + +XPT _block wrap hidden " \begin\{$_xSnipName} .. \end\{$_xSnipName} +\begin{`$_xSnipName~} + `cursor~ +\end{`$_xSnipName~} + +XPT _block_t wrap hidden " \begin\{$_xSnipName} .. \end\{$_xSnipName} +\begin{`$_xSnipName~}{`title~} + `cursor~ +\end{`$_xSnipName~} + +XPT section alias=_arg1 +XPT label alias=_arg1 +XPT ref alias=_arg1 + +XPT frac alias=_arg2 + +XPT abstract alias=_block +XPT document alias=_block +XPT equation alias=_block +XPT slide alias=_block + +XPT frame alias=_block_t +XPT block alias=_block_t + +XPT lim alias=_sub + +XPT int alias=_sub_super + +XPT info " title author date +\title{`title~} +\author{`$author~} +\date{`date()~} + +XPT array " begin{array}{..}... end{array} +\begin{array}{`kind~rcl~} +`what~` `...0~ & `what~` `...0~ \\\\` `...1~ +`what~` `...2~ & `what~` `...2~ \\\\` `...1~ +\end{array} + +XPT table " begin{tabular}{..}... end{tabular} +XSET hline..|post=\hline +XSET what*|post=ExpandIfNotEmpty( ' & ', 'what*' ) +\begin{tabular}{`kind~|r|c|l|~} +`hline..~ +`what*~ \\\\` `...1~ +`hline..~ +`what*~ \\\\` `...1~ +\end{tabular} + + +" backward compatible +XPT lbl " label{..} +\label{`cursor~} + +" backward compatible +XPT integral " int_..^.. +\int_`begin~^`end~{`cursor~} + +XPT itemize " begin{itemize} ... end{itemize} +\begin{itemize} + \item `what~~`...~ + \item `what~~`...~ +\end{itemize} + +XPT enumerate " begin{enumerate} ... end{enumerate} +\begin{enumerate} + \item `what~~`...~ + \item `what~~`...~ +\end{enumerate} + +XPT description " begin{description} ... end{description} +\begin{description} + \item[`what~] `content~~`...~ + \item[`what~] `content~~`...~ +\end{description} + +XPT sqrt " sqrt[..]{..} +\sqrt`[`nth?`]~{`cursor~} + +XPT sum " sum{..}~..{} +\sum_{`init~}^`end~{`cursor~} + +XPT documentclass " documentclass[..]{..} +XSET kind=Choose(['article','book','report', 'letter','slides']) +\documentclass[`11~pt]{`kind~} + +XPT toc " \tableofcontents +\tableofcontents + +" backward compatible +XPT beg alias=_begin + +XPT columns " \begin{columns}... +\begin{columns} + \begin{column}[l]{`size~5cm~} + \end{column}`...~ + + \begin{column}[l]{`size~5cm~} + \end{column}`...~ + `cursor~ +\end{columns} + +XPT enclose_ wraponly=wrapped " \begin{..} SEL \end{..} +\begin{`something~} + `wrapped~ +\end{`something~} + +XPT as_ wraponly=wrapped " SEL{..} +\\`wrapped~{`cursor~} + +XPT with_ wraponly=wrapped " \\.. {SEL} +\\`cursor~{`wrapped~} + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/unknown/unknown.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/unknown/unknown.xpt.vim new file mode 100644 index 0000000..2bd0722 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/unknown/unknown.xpt.vim @@ -0,0 +1,8 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + + +XPTinclude + \ _common/common + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/vim/autoload.vim.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/vim/autoload.vim.xpt.vim new file mode 100644 index 0000000..da00a43 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/vim/autoload.vim.xpt.vim @@ -0,0 +1,30 @@ +if expand( "%:p:h" ) . '/' !~# '\V\[\\/]autoload\[\\/]' + finish +endif + +XPTemplate priority=lang- + +let s:f = g:XPTfuncs() + +fun! s:f.vim_autoload_pre() + let path = expand( "%:p" ) + let path = substitute( path, '\V\\', '/', 'g' ) + let path = matchstr( path, '\V/autoload/\zs\.\+\ze.vim\$' ) + let path = substitute( path, '\V/', '#', 'g' ) + return path +endfunction + + + +XPTinclude + \ _common/common + \ vim/vim + +" TODO fix it +" XSET name|repl=vim_autoload_pre()#`name +XPT fun alias=_fun " fun! vim_autoload_pre()#** +XSET name=Build( '`' . vim_autoload_pre() . '#`n^' ) + + +XPT ## " vim_autoload_pre\()# +`vim_autoload_pre()^# diff --git a/vim-plugins/bundle/xptemplate/ftplugin/vim/vim.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/vim/vim.xpt.vim new file mode 100644 index 0000000..a1cb5a7 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/vim/vim.xpt.vim @@ -0,0 +1,182 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 + +" int fun ** ( +" class name ** ( +XPTvar $SPfun '' + +" int fun( ** arg ** ) +" if ( ** condition ** ) +" for ( ** statement ** ) +" [ ** a, b ** ] +" { ** 'k' : 'v' ** } +XPTvar $SParg ' ' + +" if ** ( +" while ** ( +" for ** ( +XPTvar $SPcmd ' ' + +" a ** = ** a ** + ** 1 +" (a, ** b, ** ) +XPTvar $SPop ' ' + +XPTinclude + \ _common/common + \ _printf/c.like + +XPTvar $CS " +XPTinclude + \ _comment/singleSign + +fun! s:f.vim_call() + " Note: do not use [ * - 2 ] which may be -1 + return getline( '.' )[ : self.ItemPos()[0][1] - 1 ] =~ '\v^\s*\w$' ? 'call ' : '' +endfunction + +call XPTdefineSnippet('vimformat', {}, [ '" vim:tw=78:ts=8:sw=4:sts=4:et:norl:fdm=marker:fmr={{{,}}}' ]) + + + +XPT lncol " [ line\( "." ), col\( "." ) ] +[ line( '.' ), col( '.' ) ] + +XPT printf " printf\(..) +XSET elts|pre=Echo('') +XSET elts=c_printf_elts( R( 'pattern' ), "," ) +printf(`$SParg^"`pattern^"`elts^`$SParg^) + +XPT _args hidden " expandable arguments +XSET arg*|post=ExpandInsideEdge( ',$SPop', '' ) +`$SParg`arg*`$SParg^ + +XPT self " self. +self. + +XPT once " if exists.. finish +XSET i|pre=headerSymbol() +if exists(`$SParg^"`g^:`i^"`$SParg^) + finish +endif +let `g^:`i^`$SPop^=`$SPop^1 +`cursor^ + +XPT version " if exists && larger than +XSET i|pre=headerSymbol() +XSET ver=1 +if exists(`$SParg^"`g^:`i^"`$SParg^) && `g^:`i^`$SPop^>=`$SPop^`ver^ + finish +endif +let ``g^:``i^`$SPop^=`$SPop^``ver^ +`cursor^ + +XPT varconf " if !exists ".." let .. = .. endif +if !exists(`$SParg^"`g^:`varname^"`$SParg^) + let `g^:`varname^`$SPop^=`$SPop^`val^ +endif + +XPT _fun hidden wrap " fun! ..(..) .. endfunction +fun! `name^`$SPfun^(`:_args:^) "{{{ + `cursor^ +endfunction "}}} + +XPT fun alias=_fun + +XPT member wrap " tips +fun! `name^`$SPfun^(`:_args:^) dict "{{{ + `cursor^ +endfunction "}}} + +XPT while wrap " while .. .. endwhile +while `cond^ + `cursor^ +endwhile + +XPT while1 alias=while +XSET cond=Embed( $TRUE ) + +XPT whilei wrap " while i | let i += 1 +let [`$SParg^`i^,`$SPop^`len^`$SParg^] = [`$SParg^`0^`$SPop^-`$SPop^1,`$SPop^`len_expr^`$SPop^-`$SPop^1`$SParg^] +while `i^`$SPop^<`$SPop^`len^ | let `i^`$SPop^+=`$SPop^1 + `cursor^ +endwhile + +XPT forin wrap " for .. in .. +for `value^ in `list^ + `cursor^ +endfor + +XPT try wrap=job " try .. catch .. +try + `job^ +`:catch:^ +endtry + +XPT catch " catch / .. / +XSET exception=.* +catch /`exception^/ + `cursor^ + +XPT finally " finally .. +finally + `cursor^ + +XPT if wrap " if .. else .. +if `cond^ + `cursor^ +endif + +XPT else " else .. +else + `cursor^ + +XPT filehead " description of file +" File Description {{{ +" ============================================================================= +" `cursor^ +" by `$author^ +" `$email^ +" Usage : +" +" ============================================================================= +" }}} +..XPT + +XPT savecpo " save &cpo +let s:oldcpo = &cpo +set cpo-=< cpo+=B +`cursor^ +let &cpo = s:oldcpo + +" The first placeholder wrapping 'com' keyword that causes ctags halt +XPT sid " generate s:sid variable +exe 'map xsid |let s:sid=matchstr(maparg("xsid"), "\\d\\+_")|unmap xsid' + +..XPT + +XPT bench " while 1000.. doit.. +let n = `100000^ +let i = 0 +let `t^_0 = reltime() + +while i < n + let i += 1 + `cursor^ +endwhile + +let `t^ = reltime( `t^_0 ) +let us = `t^[0] * 1000*1000 + `t^[1] +echo 'spent:' reltimestr( `t^ ) +echo 'per-call(us):' us/n + +XPT call wraponly=param " ..\( .. ) +`vim_call()`name^(`$SParg^`param^`$SParg^) + +XPT _call hidden wrap=param? " $_xSnipName( .. ) +`$_xSnipName^(`$SParg`param?`$SParg^) + +XPT string alias=_call diff --git a/vim-plugins/bundle/xptemplate/ftplugin/xhtml/xhtml.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/xhtml/xhtml.xpt.vim new file mode 100644 index 0000000..cfb7695 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/xhtml/xhtml.xpt.vim @@ -0,0 +1,6 @@ +XPTemplate priority=lang- + +XPTinclude + \ html/html + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/xml/xml.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/xml/xml.xpt.vim new file mode 100644 index 0000000..297c897 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/xml/xml.xpt.vim @@ -0,0 +1,155 @@ +XPTemplate priority=spec + +let s:f = g:XPTfuncs() + +XPTvar $CURSOR_PH + +XPTinclude + \ _common/common + +XPTvar $CL +XPTinclude + \ _comment/doubleSign + + +" ========================= Function and Variables ============================= + +fun! s:f.xml_att_val() + if self.Phase()=='post' + return '' + endif + + let name = self.ItemName() + return self.Vmatch('\V' . name, '\V\^\s\*\$') + \ ? '' + \ : '="val" ' . name +endfunction + +fun! s:f.xml_tag_ontype() + let v = self.V() + if v =~ '\V\s\$' + let v = substitute( v, '\V\s\*\$', '', 'g' ) + return self.Next( v ) + endif + return v +endfunction + +fun! s:f.xml_attr_ontype() + let v = self.V() + if v =~ '\V=\$' + return self.Next() + elseif len( v ) > 2 && v =~ '\V""\$' + return self.Next( v[ 0 : -2 ] ) + else + return v + endif + +endfunction + +fun! s:f.xml_create_attr_ph() + " let prev = self.PrevItem( -1 ) + if !self.HasStep( 'x' ) + return self.Embed('` `x^' . '`att*^') + endif + + let prev = self.Reference( 'x' ) + + if prev =~ '=$' + return self.Embed('`"`x`"^' . '`att*^') + elseif prev =~ '"$' + return self.Embed('` `x^' . '`att*^') + else + return self.Next( '' ) + endif +endfunction + +fun! s:f.xml_close_tag() + let v = self.V() + if v[ 0 : 0 ] != '<' || v[ -1:-1 ] != '>' + return '' + endif + + let v = v[ 1: -2 ] + + if v =~ '\v/\s*$|^!' + return '' + else + return '' + endif +endfunction + +fun! s:f.xml_cont_helper() + let v = self.V() + if v =~ '\V\n' + return self.ResetIndent( -s:nIndent, "\n" ) + else + return '' + endif +endfunction + +let s:nIndent = 0 +fun! s:f.xml_cont_ontype() + let v = self.V() + if v =~ '\V\n' + let v = matchstr( v, '\V\.\*\ze\n' ) + let s:nIndent = &indentexpr != '' + \ ? eval( substitute( &indentexpr, '\Vv:lnum', 'line(".")', '' ) ) - indent( line( "." ) - 1 ) + \ : self.NIndent() + + return self.Finish( v . "\n" . repeat( ' ', s:nIndent ) ) + else + return v + endif +endfunction + + +" inoremap < =XPTtgr('__tag',{'syn':'','k':'<'}) + +" ================================= Snippets =================================== + +XPT _tag hidden " <$_xSnipName>.. +XSET content|def=Echo( R( 't' ) =~ '\v/\s*$' ? Finish() : '' ) +XSET content|ontype=xml_cont_ontype() +<`t^$_xSnipName^>`content^`content^xml_cont_helper()^`t^xml_close_tag()^ +..XPT + +XPT __tag hidden " .. +XSET content|def=Echo( R( 't' ) =~ '\v/\s*$' ? Finish() : '' ) +XSET content|ontype=xml_cont_ontype() +`<`t`>^^`content^^`content^xml_cont_helper()^`t^xml_close_tag()^ +..XPT + +" NOTE: use Embed in default value phase to prevent post filter ruin place +" holder +" XPT < " .. +" XSET tag|ontype=xml_tag_ontype() +" XSET att*|pre=Echo('') +" XSET att*|def=Embed( '` `^' ) +" <`tag^`att*^>`content^ +" ..XPT + + +" " auto attributes completion +" XPT < " .. +" XSET tag|ontype=xml_tag_ontype() +" XSET att*|pre=Echo('') +" XSET att*|def=xml_create_attr_ph() +" XSET x|def=Echo( '' ) +" XSET x|ontype=xml_attr_ontype() +" XSET x|post=SV( '\v^\s*$', '' ) +" <`tag^`att*^>`content^ +" ..XPT + + +XPT ver " + + +XPT style " + + +XPT cdata wrap " diff --git a/vim-plugins/bundle/xptemplate/ftplugin/xpt/xpt.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/xpt/xpt.xpt.vim new file mode 100644 index 0000000..0d19ded --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/xpt/xpt.xpt.vim @@ -0,0 +1,223 @@ +XPTemplate priority=sub + +let s:f = g:XPTfuncs() + +XPTinclude + \ _common/common + \ vim/vim + + +fun! s:f.xpt_vim_hint_escape() + let v = substitute( self.V(), '\(\\*\)\([(]\)', '\1\1\\\2', 'g' ) + return v +endfunction + + +" TODO lazy load +let s:xpt_snip = split( globpath( &rtp, "ftplugin/**/*.xpt.vim" ), "\n" ) +call map( s:xpt_snip, 'substitute(v:val, ''\V\'', ''/'', ''g'')' ) +call map( s:xpt_snip, 'matchstr(v:val, ''\Vftplugin/\zs\.\*\ze.xpt.vim'')' ) + +fun! s:f.xpt_ftp_pum() + return self.Choose( s:xpt_snip ) +endfunction + +let s:xpts = {} +for v in s:xpt_snip + if v == '' + continue + endif + + let [ ft, snip ] = split( v, '/' ) + if !has_key( s:xpts, ft ) + let s:xpts[ ft ] = [] + endif + + let s:xpts[ ft ] += [ snip ] +endfor + + +fun! s:f.xpt_vim_path() + return keys( s:xpts ) +endfunction + +fun! s:f.xpt_vim_name(path) + let path = matchstr( a:path, '\w\+' ) + if has_key( s:xpts, path ) + return s:xpts[ path ] + else + return '' + endif +endfunction + + + + +XPT ftpfile " xpt ftplugin snippet file +XSET path=xpt_vim_path() +XSET name=xpt_vim_name( R( 'path' ) ) +`path^/`name^ + +XPT incfile " XPTinclude ... +XPTinclude + \ _common/common + \ `:ftpfile:^ + + +XPT container " let s:f = .. +let s:f = g:XPTfuncs() + + +XPT tmpl " XPT name ... +XSET tips|post=xpt_vim_hint_escape() +\XPT `name^` " `tips^ +`cursor^ + + +XPT snip alias=tmpl + + +XPT var " XPTvar $*** *** +XPTvar $`name^ `cursor^ + + +XPT varLang " variables to define language properties +" variable prefix +XPTvar $VAR_PRE + + +XPT varFormat " variables to define format +" if () ** { +" else ** { +XPTvar $BRif ' ' + +" } ** else { +XPTvar $BRel \n + +" for () ** { +" while () ** { +" do ** { +XPTvar $BRloop ' ' + +" struct name ** { +XPTvar $BRstc ' ' + +" int fun() ** { +" class name ** { +XPTvar $BRfun ' ' + + +XPT varSpaces " variable to define spacing +" int fun ** ( +" class name ** ( +XPTvar $SPfun '' + +" int fun( ** arg ** ) +" if ( ** condition ** ) +" for ( ** statement ** ) +" [ ** a, b ** ] +" { ** 'k' : 'v' ** } +XPTvar $SParg ' ' + +" if ** ( +" while ** ( +" for ** ( +XPTvar $SPcmd ' ' + +" a ** = ** a ** + ** 1 +" (a, ** b, ** ) +XPTvar $SPop ' ' + + +XPT varConst " variables to define constants +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + + +XPT varHelper " variables to define helper place holders +XPTvar $VOID_LINE +XPTvar $CURSOR_PH + + +XPT varComment1 " variables to define single sign comments +XPTvar $CS `cursor^ + + +XPT varComment2 " variables to define double sign comments +XPTvar $CL `left sign^ +XPTvar $CM `cursor^ +XPTvar $CR `right sign^ + +XPT spfun " `\$SPfun^ +\`$SPfun\^ + +XPT sparg " `\$SParg^ +\`$SParg\^ + +XPT spcmd " `\$SPcmd^ +\`$SPcmd\^ + +XPT spop " `\$SPop^ +\`$SPop\^ + + +XPT buildifeq " {{}} +\``name^{{\^`cursor^\`}}\^ + +XPT inc " `::^ +\`:`name^:\^ + +XPT include " `Include:^ +\`Include:`name^\^ + + +XPT fun wrap " fun! s:f.** +fun! `s:f.`name^(`$SParg`param?`$SParg^) + `cursor^ +endfunction + + +XPT skeleton " very simple snippet file skeleton +" Save this file as ~/.vim/ftplugin/c/hello.xpt.vim(or +" ~/vimfiles/ftplugin/c/hello.xpt.vim). +" Then you can use it in C language file: +" vim xpt.c +" And type: +" helloxpt +" +XPTemplate priority=personal+ + +\XPT helloxpt " tips about what this snippet do +Say hello to \`xpt^. +\`xpt^ says hello. + + + + + +XPT xpt " start template to write template +XPTemplate priority=`prio^ +XSET prio=ChooseStr( 'all', 'spec', 'like', 'lang', 'sub', 'personal' ) + +let s:f = g:XPTfuncs() + +" use snippet 'varConst' to generate contant variables +" use snippet 'varFormat' to generate formatting variables +" use snippet 'varSpaces' to generate spacing variables + + +XPTinclude + \ _common/common + + +\XPT helloxpt " tips about what this snippet does +Say hello to \`xpt\^. +\`xpt\^ says hello. + +`cursor^ + +..XPT + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/xptest/xptest.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/xptest/xptest.xpt.vim new file mode 100644 index 0000000..975361b --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/xptest/xptest.xpt.vim @@ -0,0 +1,64 @@ +XPTemplate priority=lang + +let s:f = g:XPTfuncs() + + +XPTinclude + \ _common/common + + +fun! s:f.fff() + let v = self.V() + if v == 'aa' + return '' + else + return ', another' + endif +endfunction + + + + + +XPT aa syn=43w +fjdkls +\XPT +fdskl +..XPT + +XPT table alias=_tag +XPT tr alias=_tag + +XPT e " tips +#{ `^ } + +XPT bb " tips +XSET cursor=123 +what `a^ `cursor^ +\XPT +..XPT + +" XPT jkldsjfksl + +XPT q " tips +XSET $a=3 +`p`{$a}`p^-`p^ + +XPT x " tips +XSET $a=3 +`p`p`p^-`$a^ + +XPT t " tips +`:x:^fjkdls +fjksl + + +fd +..XPT +" XPT aa " paste at end test +" `f^`aa...{{^pp`}}^`l^Echo( Context().history[-1].item.name )^ + +XPT pp " tips +`...^ +- Let's repeat `this^ +`...^ diff --git a/vim-plugins/bundle/xptemplate/ftplugin/xslt/xslt.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/xslt/xslt.xpt.vim new file mode 100644 index 0000000..b4acb3c --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/xslt/xslt.xpt.vim @@ -0,0 +1,110 @@ +XPTemplate priority=lang- keyword=< + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH cursor + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + +XPTinclude + \ _common/common + \ html/html + \ xml/xml + +XPTvar $CL +XPTinclude + \ _comment/doubleSign + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + + + + +XPT sort " + + +XPT valueof " + + +XPT apply " + + +XPT param " + + +XPT import " + + +XPT include " + + +XPT stylesheet " + + + + + + + + +XPT template " + `cursor^ + + + +XPT foreach " + `cursor^ + + + +XPT if " + `cursor^ + + + +XPT choose " + + `job^ + `...^ + + `job^ + `...^ + `otherwise...{{^ + `cursor^ + `}}^ + + + +XPT when " + `what^ + + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/yacc/yacc.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/yacc/yacc.xpt.vim new file mode 100644 index 0000000..ca774ab --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/yacc/yacc.xpt.vim @@ -0,0 +1,55 @@ +XPTemplate priority=lang- + +let s:f = g:XPTfuncs() + +XPTvar $TRUE 1 +XPTvar $FALSE 0 +XPTvar $NULL NULL +XPTvar $UNDEFINED NULL + +XPTvar $VOID_LINE /* void */; +XPTvar $CURSOR_PH /* cursor */ + +XPTvar $BRif ' ' +XPTvar $BRel \n +XPTvar $BRloop ' ' +XPTvar $BRstc ' ' +XPTvar $BRfun ' ' + + +XPTinclude + \ _common/common + \ c/c + + +" ========================= Function and Variables ============================= + +" ================================= Snippets =================================== + + +XPT yacc " Basic yacc file +%{ +/* includes */ +%} +/* options */ +%% +/* grammar rules */ +%% +/* C code */ + +XPT rule " ..: .. | .. | ... +`ruleName^: `pattern^ { `action^ } +` `...` +{{^ | `pattern^ { `action^ } +` `...` +^`}}^ ; + +XPT tok " %token ... +%token + +XPT prio " %left ... %right ... +XSET op*|post=ExpandIfNotEmpty( "' '", 'op*', "" ) +%left '`op*^'` `...^ +%left '`op*^'` `...^ + + diff --git a/vim-plugins/bundle/xptemplate/ftplugin/zsh/zsh.xpt.vim b/vim-plugins/bundle/xptemplate/ftplugin/zsh/zsh.xpt.vim new file mode 100644 index 0000000..2efc27c --- /dev/null +++ b/vim-plugins/bundle/xptemplate/ftplugin/zsh/zsh.xpt.vim @@ -0,0 +1,8 @@ +" got basic sh snippets for zsh files +" (like ~/.zshrc) +XPTemplate priority=lang + +XPTinclude + \ _common/common + \ sh/sh + diff --git a/vim-plugins/bundle/xptemplate/personal/Readme.txt b/vim-plugins/bundle/xptemplate/personal/Readme.txt new file mode 100644 index 0000000..5ede980 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/personal/Readme.txt @@ -0,0 +1,25 @@ + +This is the folder where you add your personal snippets. + +This fold is one of 'runtimepath'. You can imagine this is another ~/.vim +folder( in Unix ) or ~/vimfiles( in windows ). + +============================================================================== + +To add your own snippets, just create a snippet file like what XPT does. For +example to create a C language snippet you need to create: > + personal/ftplugin/c/some_name.xpt.vim +< And then add snippets in this file. +See |xpt-snippet-syntax| |xpt-write-snippet| and |xpt-snippet-tutorial|. + +NOTE: personal snippets in this file should have high priority which is set +with |xpt-snippet-priority|, for example the "personal" priority: > + XPTemplate priority=personal +< This is the highest priority thus no other snippets overrides yours. See +|xpt-snippet-priority| + + +You can also create snippets in some other folders and specify them as snippet +folder with |g:xptemplate_snippet_folders| + +" vim:tw=78:ts=8:sw=8:sts=8:noet:ft=help:norl:spell: diff --git a/vim-plugins/bundle/xptemplate/personal/ftplugin/_common/personal_example.xpt.vim b/vim-plugins/bundle/xptemplate/personal/ftplugin/_common/personal_example.xpt.vim new file mode 100644 index 0000000..adbab62 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/personal/ftplugin/_common/personal_example.xpt.vim @@ -0,0 +1,15 @@ +" Move me to your own fptlugin/_common and config your personal information. +" +" Here is the place to set personal preferences; "priority=personal" is the +" highest which overrides any other XPTvar setting. +" +" You can also set personal variables with 'g:xptemplate_vars' in your .vimrc. +XPTemplate priority=personal + + +" XPTvar $author you have not yet set $author variable +" XPTvar $email you have not yet set $email variable + +XPT yoursnippet " tips here +bla bla + diff --git a/vim-plugins/bundle/xptemplate/plugin/debug.vim b/vim-plugins/bundle/xptemplate/plugin/debug.vim new file mode 100644 index 0000000..706635f --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/debug.vim @@ -0,0 +1,133 @@ +if exists( "g:__DEBUG_VIM__" ) && g:__DEBUG_VIM__ >= XPT#ver + finish +endif +let g:__DEBUG_VIM__ = XPT#ver + +let s:oldcpo = &cpo +set cpo-=< +set cpo+=B + +let s:globalLogLevel = 'warn' +" let s:globalLogLevel = 'debug' + +com! DebugGetSID let s:sid = matchstr("", '\zs\d\+_\ze') +DebugGetSID +delc DebugGetSID + +fun! CreateLogger( level ) "{{{ + + let level = s:logLevels[ a:level ] + let level = min( [ level, s:logLevels[ s:globalLogLevel ] ] ) + + let logger = copy( s:loggerPrototype ) + + if level < s:logLevels.fatal | let logger.Fatal = s:loggerPrototype.LogNothing | endif + if level < s:logLevels.error | let logger.Error = s:loggerPrototype.LogNothing | endif + if level < s:logLevels.warn | let logger.Warn = s:loggerPrototype.LogNothing | endif + if level < s:logLevels.info | let logger.Info = s:loggerPrototype.LogNothing | endif + if level < s:logLevels.log | let logger.Log = s:loggerPrototype.LogNothing | endif + if level < s:logLevels.debug | let logger.Debug = s:loggerPrototype.LogNothing | endif + + return logger +endfunction "}}} + +fun! Assert( shouldBeTrue, msg ) "{{{ + if !a:shouldBeTrue + throw a:msg + end +endfunction "}}} + +com! -nargs=+ Assert call Assert( , ) + + +let s:logLevels = { + \ 'fatal' : 1, + \ 'error' : 2, + \ 'warn' : 3, + \ 'info' : 4, + \ 'log' : 5, + \ 'debug' : 6, + \ } + +let s:loggerPrototype = {} +fun! s:Fatal(...) dict "{{{ + return call('Log_core', ['Fatal'] + a:000) +endfunction "}}} + +fun! s:Error(...) dict "{{{ + return call('Log_core', ['Error'] + a:000) +endfunction "}}} + +fun! s:Warn(...) dict "{{{ + return call('Log_core', ['Warn'] + a:000) +endfunction "}}} + +fun! s:Info(...) dict "{{{ + return call('Log_core', ['Info'] + a:000) +endfunction "}}} + +fun! s:Log(...) dict "{{{ + return call('Log_core', ['Log'] + a:000) +endfunction "}}} + +fun! s:Debug(...) dict "{{{ + return call('Log_core', ['Debug'] + a:000) +endfunction "}}} + +fun! s:LogNothing(...) "{{{ +endfunction "}}} + + + +let s:loggerPrototype.Fatal = function( "" . s:sid . "Fatal" ) +let s:loggerPrototype.Error = function( "" . s:sid . "Error" ) +let s:loggerPrototype.Warn = function( "" . s:sid . "Warn" ) +let s:loggerPrototype.Info = function( "" . s:sid . "Info" ) +let s:loggerPrototype.Log = function( "" . s:sid . "Log" ) +let s:loggerPrototype.Debug = function( "" . s:sid . "Debug" ) +let s:loggerPrototype.LogNothing = function( "" . s:sid . "LogNothing" ) + + +if len( finddir( $HOME . '/tmp' ) ) > 0 + let s:logLocation = finddir( $HOME . '/tmp' ) +else + let s:logLocation = $HOME +endif + +let s:logLocation .= '/vim.log' + + +call delete(s:logLocation) + +fun! Log_core(level, ...) "{{{ + " call stack printing + try + throw '' + catch /.*/ + let stack = matchstr( v:throwpoint, 'function\s\+\zs.\{-}\ze\.\.\%(Fatal\|Error\|Warn\|Info\|Log\|Debug\).*' ) + let stack = substitute( stack, '\d\+_', '', 'g' ) + endtry + + + exe 'redir! >> '.s:logLocation + + + silent echom a:level . ':::' . stack . ' cursor at=' . string( [ line("."), col(".") ] ) + + for msg in a:000 + let l = split(';' . msg . ';', "\n") + let l[0] = l[0][1:] + let l[ -1 ] = l[ -1 ][ :-2 ] + for v in l + silent! echom v + endfor + endfor + redir END + + if a:level =~ 'Fatal\|Error\|Warn' + echoerr string( a:000 ) + endif +endfunction "}}} + + +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/plugin/xpmark.vim b/vim-plugins/bundle/xptemplate/plugin/xpmark.vim new file mode 100644 index 0000000..a8b3c62 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xpmark.vim @@ -0,0 +1,695 @@ +if exists( "g:__XPMARK_VIM__" ) && g:__XPMARK_VIM__ >= XPT#ver + finish +endif +let g:__XPMARK_VIM__ = XPT#ver +let s:oldcpo = &cpo +set cpo-=< cpo+=B +com! XPMgetSID let s:sid = matchstr("", '\zs\d\+_\ze') +XPMgetSID +delc XPMgetSID +runtime plugin/xptemplate.conf.vim +runtime plugin/debug.vim +let s:log = xpt#debug#Logger( 'warn' ) +let g:xpm_mark = 'p' +let g:xpm_mark_nextline = 'l' +let g:xpm_changenr_level = 1000 +let s:insertPattern = '[i]' +let g:XPM_RET = { 'likely_matched':{'likely_matched' : 1}, 'no_updated_made':{'no_updated_made' : 1}, 'undo_redo':{'undo_redo' : 1}, 'updated':{'updated' : 1}, } +let s:emptyHistoryElt = {'list':[], 'dict' :{}, 'likely' : { 'start' : '', 'end' : '' }} +let g:XPMpreferLeft = 'l' +let g:XPMpreferRight = 'r' +augroup XPM + au! + au BufEnter * call InitBuf() +augroup END +fun! XPMcheckStatusline() + if stridx( &l:statusline, 'XPMautoUpdate' ) >= 0 + return + else + call s:SetupStatusline() + endif +endfunction +fun! s:SetupStatusline() + if &statusline == "" + if &l:statusline == '' + setlocal statusline=%<%f\ %h%m%r%=%-14.(%l,%c%V%)\ %P + else + endif + else + if &l:statusline == '' + setlocal statusline< + else + endif + endif + if stridx( &l:statusline, 'XPMautoUpdate' ) < 0 + if &l:statusline =~ '\V\^%!' + let &l:statusline .= '.XPMautoUpdate("statusline")' + else + let &l:statusline .= '%{XPMautoUpdate("statusline")}' + endif + endif +endfunction +fun! XPMadd(name,pos,prefer,...) + call XPMcheckStatusline() + let d = s:BufData() + let prefer = a:prefer == 'l' ? 0 : 1 + if has_key(d.marks,a:name) + call d.removeMark(a:name) + endif + let d.marks[a:name] = a:pos + [len(getline(a:pos[0])),prefer] + call d.addMarkOrder(a:name,get(a:000,0,0)) +endfunction +fun! XPMhere(name,prefer) + call XPMadd( a:name, [ line( "." ), col( "." ) ], a:prefer ) +endfunction +fun! XPMremove(name) + let d = s:BufData() + call d.removeMark(a:name) +endfunction +fun! XPMremoveStartEnd(dict) + let d = s:BufData() + call d.removeMark(a:dict.start) + call d.removeMark(a:dict.end) +endfunction +fun! XPMremoveMarkStartWith(prefix) + let d = s:BufData() + for key in keys(d.marks) + if key =~# '^\V' . a:prefix + call d.removeMark(key) + endif + endfor +endfunction +fun! XPMflush() + let d = s:BufData() + let d.marks = {} + let d.orderedMarks = [] + let d.changeLikelyBetween = { 'start' : '', 'end' : '' } + let d.markHistory[ changenr() ] = { 'dict' : d.marks, 'list': d.orderedMarks, 'likely' : d.changeLikelyBetween } +endfunction +fun! XPMflushWithHistory() + call XPMflush() + let d = s:BufData() + let d.markHistory = {} +endfunction +fun! XPMgoto(name) + let d = s:BufData() + if has_key(d.marks,a:name) + let pos = d.marks[a:name][: 1] + call cursor(pos) + endif +endfunction +fun! XPMpos(name) + let d = s:BufData() + if has_key(d.marks,a:name) + return d.marks[a:name][: 1] + endif + return [0,0] +endfunction +fun! XPMhas(...) + let d = s:BufData() + for name in a:000 + if !has_key(d.marks,name) + return 0 + endif + endfor + return 1 +endfunction +fun! XPMposStartEnd(dict) + let d = s:BufData() + return [has_key(d.marks,a:dict.start) ? d.marks[a:dict.start][0:1] : [0,0], has_key(d.marks,a:dict.end) ? d.marks[a:dict.end][0:1] : [0,0],] +endfunction +fun! XPMposList(...) + let d = b:_xpmark + let list = [] + for name in a:000 + call add(list,get(d.marks,name,[0,0])[0:1]) + endfor + return list +endfunction +fun! XPMmarkAfter(pos) + let d = b:_xpmark + for name in d.orderedMarks + if d.marks[name][0] >= a:pos[0] && d.marks[name][1] >= a:pos[1] + return { 'name' : name, 'pos' : copy( d.marks[ name ] ) } + endif + endfor + return 0 +endfunction +fun! XPMsetLikelyBetween(start,end) + let d = s:BufData() + let d.changeLikelyBetween = { 'start' : a:start, 'end' : a:end } +endfunction +fun! XPMsetUpdateStrategy(mode) + let d = s:BufData() + if a:mode == 'manual' + let d.updateStrategy = a:mode + elseif a:mode == 'normalMode' + let d.updateStrategy = a:mode + elseif a:mode == 'insertMode' + let d.updateStrategy = a:mode + else + let d.updateStrategy = 'auto' + endif +endfunction +fun! XPMupdateSpecificChangedRange(start,end) + let d = s:BufData() + let nr = changenr() + if nr != d.lastChangenr + call d.snapshot() + endif + call d.initCurrentStat() + let rc = d.updateWithNewChangeRange(a:start,a:end) + call d.saveCurrentStat() + return rc +endfunction +fun! XPMautoUpdate(msg) + if !exists( 'b:_xpmark' ) + return '' + endif + let d = s:BufData() + let isInsertMode = (d.lastMode == 'i' && mode() == 'i') + if d.updateStrategy == 'manual' || d.updateStrategy == 'normalMode' && isInsertMode || d.updateStrategy == 'insertMode' && !isInsertMode + return '' + endif + call XPMupdate('auto') + return '' +endfunction +fun! XPMupdate(...) + if !exists( 'b:_xpmark' ) + return '' + endif + let d = s:BufData() + let mode = a:0 > 0 ? a:000[0] : 'auto' + if mode == 'force' + let needUpdate = 1 + else + let needUpdate = d.isUpdateNeeded() + endif + if !needUpdate + call d.snapshot() + call d.saveCurrentStat() + return g:XPM_RET.no_updated_made + endif + call d.initCurrentStat() + if d.lastMode =~ s:insertPattern && d.stat.mode =~ s:insertPattern + let rc = d.insertModeUpdate() + else + let rc = d.normalModeUpdate() + endif + call d.saveCurrentStat() + return rc +endfunction +fun! XPMupdateStat() + let d = s:BufData() + call d.saveCurrentStat() +endfunction +fun! XPMupdateCursorStat(...) + let d = s:BufData() + call d.saveCurrentCursorStat() +endfunction +fun! XPMsetBufSortFunction(funcRef) + if !exists('b:_xpm_compare') + let b:_xpm_compare = a:funcRef + endif +endfunction +fun! XPMallMark() + let d = s:BufData() + let msg = '' + let i = 0 + for name in d.orderedMarks + let msg .= printf( '%3d', i ) . ' ' . name . repeat( '-', 30-len( name ) ) . substitute( string( d.marks[ name ] ), '\<\d\>', ' &', 'g' ) . "\n" + let i += 1 + endfor + return msg +endfunction +fun! s:isUpdateNeeded() dict + if empty(self.marks) && changenr() == self.lastChangenr + return 0 + endif + return 1 +endfunction +fun! s:initCurrentStat() dict + let self.stat = { 'currentPosition':[ line( '.' ), col( '.' ) ], 'totalLine':line( "$" ), 'currentLineLength':len( getline( "." ) ), 'mode':mode(), 'positionOfMarkP':[ line( "'" . g:xpm_mark ), col( "'" . g:xpm_mark ) ] } +endfunction +fun! s:snapshot() dict + let nr = changenr() + if nr == self.lastChangenr + return + endif + let n = self.lastChangenr + 1 + if !has_key(self.markHistory,n-1) + if has_key(self.markHistory,n-2) + let self.markHistory[n-1] = self.markHistory[n-2] + else + let self.markHistory[n-1] = deepcopy(s:emptyHistoryElt) + endif + endif + while n < nr + let self.markHistory[n] = self.markHistory[n - 1] + if has_key(self.markHistory,n - g:xpm_changenr_level) + unlet self.markHistory[n - g:xpm_changenr_level] + endif + let n += 1 + endwhile + let self.marks = copy(self.marks) + let self.orderedMarks = copy(self.orderedMarks) + let self.changeLikelyBetween = deepcopy(self.changeLikelyBetween) + let self.markHistory[ nr ] = { 'dict' : self.marks, 'list': self.orderedMarks, 'likely' : self.changeLikelyBetween } +endfunction +fun! s:handleUndoRedo() dict + let nr = changenr() + if nr < self.lastChangenr + call self.ToChangeNr(nr) + return 1 + elseif nr > self.lastChangenr && nr <= self.changenrRange[1] + call self.ToChangeNr(nr) + return 1 + else + return 0 + endif +endfunction +fun! s:ToChangeNr(nr) dict + if has_key(self.markHistory,a:nr) + let self.marks = self.markHistory[a:nr].dict + let self.orderedMarks = self.markHistory[a:nr].list + let self.changeLikelyBetween = self.markHistory[a:nr].likely + else + call s:log.Info( "No " . a:nr . ' in markHistory, create new mark set' ) + let self.marks = {} + let self.orderedMarks = [] + let self.changeLikelyBetween = { 'start' : '', 'end' : '' } + endif +endfunction +fun! s:insertModeUpdate() dict + if self.handleUndoRedo() + return g:XPM_RET.undo_redo + endif + let stat = self.stat + if changenr() != self.lastChangenr + call self.snapshot() + endif + if stat.totalLine == self.lastTotalLine + if stat.currentPosition[0] == self.lastPositionAndLength[0] && stat.currentLineLength == self.lastPositionAndLength[2] + return g:XPM_RET.no_updated_made + endif + if self.lastPositionAndLength[2] == len(getline(self.lastPositionAndLength[0])) + return g:XPM_RET.no_updated_made + endif + endif + let lastPos = self.lastPositionAndLength[: 1] + let bLastPos = [self.lastPositionAndLength[0] + stat.totalLine - self.lastTotalLine,0] + let bLastPos[1] = self.lastPositionAndLength[1] - self.lastPositionAndLength[2] + len(getline(bLastPos[0])) + if bLastPos[0] * 10000 + bLastPos[1] >= lastPos[0] * 10000 + lastPos[1] + return self.updateWithNewChangeRange(self.lastPositionAndLength[:1],stat.currentPosition) + else + return self.updateWithNewChangeRange(stat.currentPosition,stat.currentPosition) + endif +endfunction +fun! s:normalModeUpdate() dict + let stat = self.stat + let nr = changenr() + if nr == self.lastChangenr + return g:XPM_RET.no_updated_made + endif + if self.handleUndoRedo() + return g:XPM_RET.undo_redo + endif + let cs = [ line( "'[" ), col( "'[" ) ] + let ce = [ line( "']" ), col( "']" ) ] + call self.snapshot() + let diffOfLine = stat.totalLine - self.lastTotalLine + if stat.mode =~ s:insertPattern + if diffOfLine > 0 + if self.lastPositionAndLength[0] < stat.positionOfMarkP[0] + call self.updateMarksAfterLine(self.lastPositionAndLength[0] - 1) + else + call self.updateMarksAfterLine(stat.currentPosition[0] - 1) + endif + elseif self.lastMode =~ 's' || self.lastMode == "\" + return self.updateWithNewChangeRange([ line( "'<" ), col( "'<" ) ], stat.currentPosition) + else + return self.updateWithNewChangeRange(stat.currentPosition,stat.currentPosition) + endif + elseif self.lastMode =~ s:insertPattern + return g:XPM_RET.no_updated_made + else + let linewiseDeletion = stat.positionOfMarkP[0] == 0 + let lineNrOfChangeEndInLastStat = ce[0] - diffOfLine + if linewiseDeletion + if cs == ce + call self.updateForLinewiseDeletion(cs[0],lineNrOfChangeEndInLastStat) + return g:XPM_RET.updated + else + endif + elseif stat.positionOfMarkP[0] == line( "'" . g:xpm_mark_nextline ) && stat.totalLine < self.lastTotalLine + let endPos = [self.lastPositionAndLength[0],self.lastPositionAndLength[2]] + return self.updateWithNewChangeRange(endPos,endPos) + elseif self.lastMode =~ '[vVsS]' + elseif diffOfLine == -1 + let cs = [self.lastPositionAndLength[0],self.lastPositionAndLength[2] + 1] + let ce = [self.lastPositionAndLength[0],self.lastPositionAndLength[2] + 2] + return self.updateWithNewChangeRange(cs,ce) + elseif cs == [1,1] && ce == [stat.totalLine,1] || diffOfLine < -1 + call XPMflush() + return g:XPM_RET.updated + endif + return self.updateWithNewChangeRange(cs,ce) + endif + return g:XPM_RET.updated +endfunction +fun! s:updateMarksAfterLine(line) dict + let diffOfLine = self.stat.totalLine - self.lastTotalLine + for [n,v] in items(self.marks) + if v[0] > a:line + let self.marks[n] = [v[0] + diffOfLine,v[1],v[2],v[3]] + endif + endfor +endfunction +fun! s:updateForLinewiseDeletion(fromLine,toLine) dict + for [n,mark] in items(self.marks) + if mark[0] >= a:toLine + let self.marks[n] = [mark[0] + self.stat.totalLine - self.lastTotalLine,mark[1],mark[2],mark[3]] + elseif mark[0] >= a:fromLine && mark[0] < a:toLine + call self.removeMark(n) + endif + endfor +endfunction +fun! s:updateWithNewChangeRange(changeStart,changeEnd) dict + let bChangeEnd = [a:changeEnd[0] - self.stat.totalLine, a:changeEnd[1] - len(getline(a:changeEnd[0]))] + let likelyIndexes = self.findLikelyRange(a:changeStart,bChangeEnd) + if likelyIndexes == [-1,-1] + let indexes = [0,len(self.orderedMarks)] + call self.updateMarks(indexes,a:changeStart,a:changeEnd) + return g:XPM_RET.updated + else + let len = len(self.orderedMarks) + let i = likelyIndexes[0] + let j = likelyIndexes[1] + call self.updateMarksBefore([0,i + 1],a:changeStart,a:changeEnd) + call self.updateMarks([i+1,j],a:changeStart,a:changeEnd) + let len2 = len(self.orderedMarks) + let j += len2 - len + call self.updateMarksAfter([j,len2],a:changeStart,a:changeEnd) + return [self.orderedMarks[i],self.orderedMarks[j]] + endif +endfunction +fun! s:updateMarksBefore(indexRange,changeStart,changeEnd) dict + let lineLengthCS = len(getline(a:changeStart[0])) + let [iStart,iEnd] = [a:indexRange[0] - 1,a:indexRange[1] - 1] + while iStart < iEnd + let iStart += 1 + let name = self.orderedMarks[iStart] + let mark = self.marks[name] + let bMark = [mark[0] - self.lastTotalLine,mark[1] - mark[2]] + if mark[0] < a:changeStart[0] + continue + elseif mark[0] == a:changeStart[0] && mark[1] - 1 < a:changeStart[1] + let self.marks[name] = [mark[0],mark[1],lineLengthCS,mark[3]] + else + call s:log.Error( 'mark should be before, but it is after start of change:' . string( [ mark, a:changeStart ] ) ) + endif + endwhile +endfunction +fun! s:updateMarksAfter(indexRange,changeStart,changeEnd) dict + let bChangeEnd = [a:changeEnd[0] - self.stat.totalLine, a:changeEnd[1] - len(getline(a:changeEnd[0]))] + let diffOfLine = self.stat.totalLine - self.lastTotalLine + let lineLengthCS = len(getline(a:changeStart[0])) + let lineLengthCE = len(getline(a:changeEnd[0])) + let lineNrOfChangeEndInLastStat = a:changeEnd[0] - diffOfLine + let [iStart,iEnd] = [a:indexRange[0] - 1,a:indexRange[1] - 1] + while iStart < iEnd + let iStart += 1 + let name = self.orderedMarks[iStart] + let mark = self.marks[name] + let bMark = [mark[0] - self.lastTotalLine,mark[1] - mark[2]] + if mark[0] > lineNrOfChangeEndInLastStat + if diffOfLine == 0 + break + endif + let self.marks[name] = [mark[0] + diffOfLine,mark[1],mark[2],mark[3]] + elseif bMark[0] == bChangeEnd[0] && bMark[1] >= bChangeEnd[1] + let self.marks[name] = [a:changeEnd[0],bMark[1] + lineLengthCE,lineLengthCE,mark[3]] + else + call s:log.Error( 'mark should be after changes, but it is before them:' . string( [ bMark, bChangeEnd ] )) + endif + endwhile +endfunction +fun! s:updateMarks(indexRange,changeStart,changeEnd) dict + let bChangeEnd = [a:changeEnd[0] - self.stat.totalLine, a:changeEnd[1] - len(getline(a:changeEnd[0]))] + let diffOfLine = self.stat.totalLine - self.lastTotalLine + let lineLengthCS = len(getline(a:changeStart[0])) + let lineLengthCE = len(getline(a:changeEnd[0])) + let lineNrOfChangeEndInLastStat = a:changeEnd[0] - diffOfLine + let [iStart,iEnd] = [a:indexRange[0] - 1,a:indexRange[1] - 1] + while iStart < iEnd + let iStart += 1 + let name = self.orderedMarks[iStart] + let mark = self.marks[name] + let bMark = [mark[0] - self.lastTotalLine,mark[1] - mark[2]] + if mark[0] < a:changeStart[0] + continue + elseif mark[0] > lineNrOfChangeEndInLastStat + let self.marks[name] = [mark[0] + diffOfLine,mark[1],mark[2],mark[3]] + elseif mark[0 : 1] == a:changeStart && bMark == bChangeEnd + if mark[3] == 0 + let self.marks[name] = [mark[0],mark[1],lineLengthCS,0] + else + let self.marks[name] = [a:changeEnd[0],bMark[1] + lineLengthCE,lineLengthCE,1] + endif + elseif mark[0] == a:changeStart[0] && mark[1] - 1 < a:changeStart[1] + let self.marks[name] = [mark[0],mark[1],lineLengthCS,mark[3]] + elseif bMark[0] == bChangeEnd[0] && bMark[1] >= bChangeEnd[1] + let self.marks[name] = [a:changeEnd[0],bMark[1] + lineLengthCE,lineLengthCE,mark[3]] + else + call self.removeMark(name) + let iStart -= 1 + let iEnd -= 1 + endif + endwhile +endfunction +fun! XPMupdateWithMarkRangeChanging(startMark,endMark,changeStart,changeEnd) + let d = s:BufData() + call d.initCurrentStat() + if changenr() != d.lastChangenr + call d.snapshot() + endif + let startIndex = index(d.orderedMarks,a:startMark) + let endIndex = index(d.orderedMarks,a:endMark,startIndex + 1) + call d.updateMarksAfter([endIndex,len(d.orderedMarks)],a:changeStart,a:changeEnd) + let [i,len] = [startIndex + 1 ,endIndex] + while i < len + let len -= 1 + let mark = d.orderedMarks[i] + endwhile + let lineLength = len(getline(a:changeStart[0])) + let [i] = [startIndex + 1] + while i > 0 + let i -= 1 + let mark = d.orderedMarks[i] + if d.marks[mark][0] < a:changeStart[0] + break + else + let d.marks[mark][2] = len(getline(d.marks[mark][0])) + endif + endwhile + call d.saveCurrentStat() +endfunction +fun! s:findLikelyRange2(changeStart,bChangeEnd) dict + if self.changeLikelyBetween.start == '' || self.changeLikelyBetween.end == '' + return [-1,-1] + elseif !has_key(self.marks,self.changeLikelyBetween.start) || !has_key(self.marks,self.changeLikelyBetween.end) + return [-1,-1] + endif + let [likelyStart,likelyEnd] = [self.marks[self.changeLikelyBetween.start], self.marks[self.changeLikelyBetween.end]] + let bLikelyEnd = [likelyEnd[0] - self.lastTotalLine, likelyEnd[1] - likelyEnd[2]] + let nChangeStart = a:changeStart[0] * 10000 + a:changeStart[1] + let nLikelyStart = likelyStart[0] * 10000 + likelyStart[1] + let nbChangeEnd = a:bChangeEnd[0] * 10000 + a:bChangeEnd[1] + let nbLikelyEnd = bLikelyEnd[0] * 10000 + bLikelyEnd[1] + if nChangeStart >= nLikelyStart && nbChangeEnd <= nbLikelyEnd + let re = [] + let [i,len] = [0,len(self.orderedMarks)] + while i < len + if self.orderedMarks[i] == self.changeLikelyBetween.start + call add(re,i) + elseif self.orderedMarks[i] == self.changeLikelyBetween.end + call add(re,i) + return re + endif + let i += 1 + endwhile + call s:log.Error( string( self.changeLikelyBetween ) . ' : end mark is not found!' ) + else + return [-1,-1] + endif +endfunction +fun! s:findLikelyRange(changeStart,bChangeEnd) dict + if self.changeLikelyBetween.start == '' || self.changeLikelyBetween.end == '' + return [-1,-1] + elseif !has_key(self.marks,self.changeLikelyBetween.start) || !has_key(self.marks,self.changeLikelyBetween.end) + return [-1,-1] + endif + let nChangeStart = a:changeStart[0] * 10000 + a:changeStart[1] + let nbChangeEnd = a:bChangeEnd[0] * 10000 + a:bChangeEnd[1] + let iLikelyStart = -1 + let iLikelyEnd = -1 + let [i,len] = [0,len(self.orderedMarks)] + while i < len + if self.orderedMarks[i] == self.changeLikelyBetween.start + let iLikelyStart = i + elseif self.orderedMarks[i] == self.changeLikelyBetween.end + let iLikelyEnd = i + break + endif + let i += 1 + endwhile + if iLikelyStart == -1 || iLikelyEnd == -1 + return [-1,-1] + endif + while iLikelyStart >= 0 + let likelyStart = self.marks[self.orderedMarks[iLikelyStart]] + let nLikelyStart = likelyStart[0] * 10000 + likelyStart[1] + if nChangeStart >= nLikelyStart + break + endif + let iLikelyStart -= 1 + endwhile + if iLikelyStart == -1 + return [-1,-1] + endif + while iLikelyEnd < len(self.orderedMarks) + let likelyEnd = self.marks[self.orderedMarks[iLikelyEnd]] + let bLikelyEnd = [likelyEnd[0] - self.lastTotalLine, likelyEnd[1] - likelyEnd[2]] + let nbLikelyEnd = bLikelyEnd[0] * 10000 + bLikelyEnd[1] + if nbChangeEnd <= nbLikelyEnd + break + endif + let iLikelyEnd += 1 + endwhile + if iLikelyEnd == len(self.orderedMarks) + return [-1,-1] + endif + return [iLikelyStart,iLikelyEnd] +endfunction +fun! s:saveCurrentCursorStat() dict + if self.marks == {} + return + endif + let p = [ line( '.' ), col( '.' ) ] + exe 'k'.g:xpm_mark + if p[0] < line( '$' ) + exe '+1k' . g:xpm_mark_nextline + else + exe 'delmarks ' . g:xpm_mark_nextline + endif + let self.lastPositionAndLength = p + [ len( getline( "." ) ) ] + let self.lastMode = mode() +endfunction +fun! s:saveCurrentStat() dict + call self.saveCurrentCursorStat() + let self.lastChangenr = changenr() + let self.changenrRange[0] = min([self.lastChangenr,self.changenrRange[0]]) + let self.changenrRange[1] = max([self.lastChangenr,self.changenrRange[1]]) + let self.lastTotalLine = line( "$" ) +endfunction +fun! s:removeMark(name) dict + if !has_key(self.marks,a:name) + return + endif + if self.changeLikelyBetween.start == a:name || self.changeLikelyBetween.end == a:name + let self.changeLikelyBetween = { 'start' : '', 'end' : '' } + endif + call filter( self.orderedMarks, 'v:val != ' . string( a:name ) ) + call remove(self.marks,a:name) +endfunction +fun! s:addMarkOrder(name,beforeWhich) dict + let markToAdd = self.marks[a:name] + let nPos = markToAdd[0] * 10000 + markToAdd[1] + let i = -1 + for n in self.orderedMarks + let i += 1 + let mark = self.marks[n] + let nMark = mark[0] * 10000 + mark[1] + if nMark == nPos + if a:beforeWhich isnot 0 && n =~ a:beforeWhich + call insert(self.orderedMarks,a:name,i) + return + else + let cmp = self.compare(a:name,n) + if cmp == 0 + throw 'XPM : overlapped mark:' . a:name . '=' . string(markToAdd) . ' and ' . n . '=' . string( mark ) + elseif cmp > 0 + continue + else + call insert(self.orderedMarks,a:name,i) + return + endif + endif + elseif nPos < nMark + call insert(self.orderedMarks,a:name,i) + return + endif + endfor + call add (self.orderedMarks,a:name) +endfunction +fun! s:compare(a,b) dict + if exists( 'b:_xpm_compare' ) + return b:_xpm_compare(self,a:a,a:b) + else + return s:defaultCompare(self,a:a,a:b) + endif +endfunction +fun! s:ClassPrototype(...) + let p = {} + for name in a:000 + let p[ name ] = function( '' . s:sid . name ) + endfor + return p +endfunction +let s:prototype = s:ClassPrototype( 'ToChangeNr', 'addMarkOrder', 'compare', 'findLikelyRange', 'handleUndoRedo', 'initCurrentStat', 'insertModeUpdate', 'isUpdateNeeded', 'normalModeUpdate', 'removeMark', 'saveCurrentCursorStat', 'saveCurrentStat', 'snapshot', 'updateForLinewiseDeletion', 'updateMarks', 'updateMarksAfter', 'updateMarksAfterLine', 'updateMarksBefore', 'updateWithNewChangeRange', ) +fun! s:initBufData() + let nr = changenr() + let b:_xpmark = { 'updateStrategy':'auto', 'stat':{}, 'orderedMarks':[], 'marks':{}, 'markHistory':{}, 'changeLikelyBetween':{ 'start' : '', 'end' : '' }, 'lastMode':'n', 'lastPositionAndLength':[ line( '.' ), col( '.' ), len( getline( '.' ) ) ], 'lastTotalLine':line( '$' ), 'lastChangenr':nr, 'changenrRange':[nr, nr], } + let b:_xpmark.markHistory[ nr ] = { 'dict' : b:_xpmark.marks, 'list' : b:_xpmark.orderedMarks, 'likely' : b:_xpmark.changeLikelyBetween } + call extend( b:_xpmark, s:prototype, 'force' ) + exe 'k' . g:xpm_mark + if line( '.' ) < line( '$' ) + exe '+1k' . g:xpm_mark_nextline + else + exe 'delmarks ' . g:xpm_mark_nextline + endif +endfunction +fun! s:BufData() + if !exists('b:_xpmark') + call s:initBufData() + endif + return b:_xpmark +endfunction +fun! s:InitBuf() + if !exists('b:_xpmark') + call s:initBufData() + endif +endfunction +fun! s:defaultCompare(d,markA,markB) + let [ma,mb] = [a:d.marks[a:markA],a:d.marks[a:markB]] + let nMarkA = ma[0] * 10000 + ma[1] + let nMarkB = mb[0] * 10000 + mb[1] + return (nMarkA - nMarkB) != 0 ? (nMarkA - nMarkB) : (a:d.marks[a:markA][3] - a:d.marks[a:markB][3]) +endfunction +if &ruler && &rulerformat == "" + set rulerformat=%-14.(%l,%c%V%)%=%P +elseif !&ruler + set rulerformat= +endif +set ruler +let &rulerformat .= '%{XPMautoUpdate("ruler")}' +fun! PrintDebug() + let d = s:BufData() + let debugString = changenr() + let debugString .= ' p:' . string( getpos( "'" . g:xpm_mark )[ 1 : 2 ] ) + let debugString .= ' ' . string( [[ line( "'[" ), col( "'[" ) ], [ line( "']" ), col( "']" ) ]] ) . " " + let debugString .= " " . mode() . string( [line( "." ), col( "." )] ) . ' last:' .string( d.lastPositionAndLength ) + let debugString .= " ll:" . d.lastTotalLine + return substitute( debugString, '\s', '' , 'g' ) +endfunction +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/plugin/xpopup.vim b/vim-plugins/bundle/xptemplate/plugin/xpopup.vim new file mode 100644 index 0000000..72ff30e --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xpopup.vim @@ -0,0 +1,637 @@ +if exists( "g:__XPOPUP_VIM__" ) && g:__XPOPUP_VIM__ >= XPT#ver + finish +endif +let g:__XPOPUP_VIM__ = XPT#ver +let s:oldcpo = &cpo +set cpo-=< cpo+=B +runtime plugin/debug.vim +exe XPT#let_sid +let s:log = CreateLogger( 'warn' ) +let s:log = CreateLogger( 'debug' ) +fun! s:SetIfNotExist(k,v) + if !exists(a:k) + exe "let ".a:k."=".string(a:v) + endif +endfunction +let s:opt = { 'doCallback':'doCallback', 'enlarge':'enlarge', 'acceptEmpty':'acceptEmpty', 'tabNav':'tabNav', } +let s:CHECK_PUM = 1 +let s:errorTolerance = 3 +let s:sessionPrototype = { 'callback':{}, 'list':[], 'key':'', 'prefixIndex':{}, 'popupCount':0, 'sessCount':0, 'errorInputCount':0, 'line':0, 'col':0, 'prefix':'', 'ignoreCase':0, 'acceptEmpty':0, 'matchWholeName':0, 'matchPrefix':0, 'strictInput':0, 'tabNav':0, 'last':'', 'currentText':'', 'longest':'', 'matched':'', 'matchedCallback':'', 'currentList':[], } +fun! XPPopupNew(callback,data,...) + let sess = deepcopy(s:sessionPrototype) + let sess.callback = a:callback + let sess.data = a:data + call sess.createPrefixIndex([]) + if a:0 > 0 + let items = a:1 + if type( items ) == type( '' ) + call sess.SetTriggerKey(items) + elseif type(items) == type([]) + call sess.addList(items) + else + call s:log.Error( 'unsupported items type as pum items:' . str( items ) ) + endif + endif + return sess +endfunction +fun! s:popup(start_col,opt) dict + let doCallback = get(a:opt,s:opt.doCallback,1) + let ifEnlarge = get(a:opt,s:opt.enlarge,1) + let self.popupCount += 1 + let cursorIndex = col(".") - 1 - 1 + let self.line = line(".") + let self.col = a:start_col + let self.prefix = s:GetTextBeforeCursor(self) + let self.ignoreCase = self.prefix !~# '\u' + if self.key != '' + let self.longest = self.prefix + let actions = self.KeyPopup(doCallback,ifEnlarge) + else + let self.currentList = s:filterCompleteList(self) + if ifEnlarge + let self.longest = s:LongestPrefix(self) + else + let self.longest = self.prefix + endif + let actions = self.ListPopup(doCallback,ifEnlarge) + endif + let actions = s:CreateSession(self) . actions + call s:ApplyMapAndSetting() + return actions +endfunction +fun PUMclear() + return "\\\" +endfunction +fun! s:CreateSession(sess) + if !exists( 'b:__xpp_sess_count' ) + let b:__xpp_sess_count = 0 + endif + let action = '' + let b:__xpp_sess_count += 1 + let a:sess.sessCount = b:__xpp_sess_count + if exists( 'b:__xpp_current_session' ) + call s:End() + if pumvisible() + let action .= PUMclear() + endif + endif + let b:__xpp_current_session = a:sess + return action +endfunction +fun! s:SetAcceptEmpty(acc) dict + let self.acceptEmpty = !!a:acc + return self +endfunction +fun! s:SetMatchWholeName(mwn) dict + let self.matchWholeName = !!a:mwn + return self +endfunction +fun! s:SetOption(opt) dict + if type(a:opt) == type([]) + for optname in a:opt + let self[optname] = 1 + endfor + elseif type(a:opt) == type({}) + for [key,value] in items(a:opt) + let self[key] = value + endfor + endif +endfunction +fun! s:KeyPopup(doCallback,ifEnlarge) dict + let actionList = [] + if a:ifEnlarge + let actionList = [ 'clearPum', 'clearPrefix', 'typeLongest', 'triggerKey', 'setLongest' ] + if a:doCallback + let actionList += [ 'checkAndCallback' ] + endif + else + let actionList = [ 'clearPum', 'clearPrefix', 'typeLongest', 'triggerKey', 'removeTrailing', 'forcePumShow' ] + endif + return "\=XPPprocess(" . string( actionList ) . ")\" +endfunction +fun! s:ListPopup(doCallback,ifEnlarge) dict + let actionClosePum = '' + let actionList = [] + if self.longest !=# self.prefix + let actionList += ['clearPum', 'clearPrefix', 'clearPum', 'typeLongest' ] + endif + if 0 + else + if self.popupCount > 1 && a:ifEnlarge && self.acceptEmpty && self.prefix == '' + let self.matched = '' + let self.matchedCallback = 'onOneMatch' + let actionList = [] + let actionList += [ 'clearPum', 'clearPrefix', 'clearPum', 'callback' ] + elseif len(self.currentList) == 0 + let self.matched = '' + let self.matchedCallback = 'onEmpty' + let actionList += ['callback'] + elseif len(self.currentList) == 1 && a:doCallback + if self.matchPrefix + let self.matched = type(self.currentList[0]) == type({}) ? self.currentList[0].word : self.currentList[0] + let self.matchedCallback = 'onOneMatch' + let actionList += ['clearPum', 'clearPrefix', 'clearPum', 'typeMatched', 'callback'] + else + let actionClosePum = PUMclear() + let actionList += [ 'popup', 'fixPopup' ] + endif + elseif self.prefix != "" && self.longest ==? self.prefix + if self.matchPrefix && a:doCallback + let self.matched = '' + for item in self.currentList + let key = type(item) == type({}) ? item.word : item + if key ==? self.prefix + let self.matched = key + let self.matchedCallback = 'onOneMatch' + let actionList += ['clearPum', 'clearPrefix', 'clearPum', 'typeLongest', 'callback'] + break + endif + endfor + if self.matched == '' + let actionClosePum = PUMclear() + let actionList += [ 'popup', 'fixPopup' ] + endif + else + let actionClosePum = PUMclear() + let actionList += [ 'popup', 'fixPopup' ] + endif + else + let actionClosePum = PUMclear() + let actionList += [ 'popup', 'fixPopup' ] + endif + endif + let self.matchPrefix = 1 + return actionClosePum . "\=XPPprocess(" . string( actionList ) . ")\" +endfunction +fun! s:SetTriggerKey(key) dict + let self.key = a:key +endfunction +fun! s:sessionPrototype.addList(list) + let list = a:list + if list == [] + return + endif + if type( list[0] ) == type( '' ) + call map( list, '{"word" : v:val, "icase" : 1 }' ) + else + call map( list, '{"word" : v:val["word"],' . '"info": get(v:val, "info", ""),' . '"menu": get(v:val, "menu", ""),' . '"icase": 1 }' ) + endif + let self.list += list + call self.updatePrefixIndex(list) +endfunction +fun! s:sessionPrototype.createPrefixIndex(list) + let self.prefixIndex = { 'keys' : {}, 'lowerkeys' : {}, 'ori' : {}, 'lower' : {} } + call self.updatePrefixIndex(a:list) +endfunction +fun! s:sessionPrototype.updatePrefixIndex(list) + if g:xptemplate_pum_quick_back == 0 + return + endif + for item in a:list + let key = (type(item) == type({})) ?item.word : item + if !has_key(self.prefixIndex.keys,key) + let self.prefixIndex.keys[key] = 1 + call s:UpdateIndex(self.prefixIndex.ori,key) + endif + let lowerKey = substitute(key, '.', '\l&', 'g') + if !has_key(self.prefixIndex.lowerkeys,lowerKey) + let self.prefixIndex.lowerkeys[lowerKey] = 1 + call s:UpdateIndex(self.prefixIndex.lower,lowerKey) + endif + endfor +endfunction +fun! s:_InitBuffer() + if exists( 'b:__xpp_buffer_init' ) + return + endif + let b:_xpp_map_saver = xpt#msvr#New(1) + call xpt#msvr#AddList(b:_xpp_map_saver, 'i_', 'i_', 'i_', 'i_', 'i_', 'i_', 'i_', 'i_', ) + let b:_xpp_setting_switch = xpt#settingswitch#New() + let co = {"menu":1, "menuone":1, "longest":1} + for k in split(&completeopt, ',') + let co[k] = 1 + endfor + let new_completeopt = join( keys(co), ',' ) + call xpt#settingswitch#AddList(b:_xpp_setting_switch, [ '&l:cinkeys', '' ], [ '&l:indentkeys', '' ], [ '&completeopt', new_completeopt ], ) + let b:__xpp_buffer_init = 1 +endfunction +fun! XPPprocess(list) + if !exists("b:__xpp_current_session") + call s:log.Error("session does not exist!") + return "" + endif + let sess = b:__xpp_current_session + if len(a:list) == 0 + return "\\" + endif + let actionName = a:list[0] + let nextList = a:list[1 :] + let postAction = "" + if actionName == 'clearPrefix' + let n = col(".") - sess.col + let postAction = repeat( "\", n ) + elseif actionName == 'clearPum' + if pumvisible() + let postAction = "\" + endif + elseif actionName == 'triggerKey' + let postAction = sess.key + elseif actionName == 'setLongest' + let current = s:GetTextBeforeCursor(sess) + if len(current) > len(sess.longest) + let postAction = repeat( "\", len( current ) - len( sess.longest ) ) . current[len(sess.longest) :] + let sess.longest = s:GetTextBeforeCursor(sess) + if pumvisible() + let nextList = [ 'clearPum', 'clearPrefix', 'typeLongest', 'triggerKey' ] + nextList + else + let nextList = [ 'clearPrefix', 'clearPum', 'typeLongest' ] + nextList + endif + endif + elseif actionName == 'removeTrailing' + let current = s:GetTextBeforeCursor(sess) + if len(current) > len(sess.longest) + let postAction = repeat( "\", len( current ) - len( sess.longest ) ) + endif + elseif actionName == 'forcePumShow' + let postAction = "\\" + elseif actionName == 'checkAndCallback' + if pumvisible() + return "\\" + else + let current = s:GetTextBeforeCursor(sess) + let sess.matched = current + let sess.matchedCallback = 'onOneMatch' + call s:End() + let postAction = "" + if has_key(sess.callback,sess.matchedCallback) + let postAction = sess.callback[sess.matchedCallback](sess) + return postAction + else + return '' + endif + endif + elseif actionName == 'keymodeEnlarge' + let current = s:GetTextBeforeCursor(sess) + if sess.acceptEmpty && current == '' + let sess.longest = '' + let sess.matched = '' + let sess.matchedCallback = 'onOneMatch' + let nextList = [ 'callback' ] + elseif current !=# sess.currentText + let sess.longest = sess.currentText + let sess.matched = sess.currentText + let sess.matchedCallback = 'onOneMatch' + let nextList = [ 'clearPrefix', 'typeLongest', 'callback' ] + else + return sess.popup(sess.col, { 'doCallback' : 1, 'enlarge':1 } ) + endif + elseif actionName == 'enlarge' + let current = s:GetTextBeforeCursor(sess) + if current !=# sess.currentText + let sess.longest = sess.currentText + let sess.matched = sess.currentText + let sess.matchedCallback = 'onOneMatch' + let nextList = [ 'clearPrefix', 'typeLongest', 'callback' ] + else + return sess.popup(sess.col, { 'doCallback' : 1, 'enlarge':1 } ) + endif + elseif actionName == 'typeMatched' + let postAction = sess.matched + elseif actionName == 'typeLongest' + let postAction = sess.longest + elseif actionName == 'type' + let postAction = remove(nextList,0) + elseif actionName == 'popup' + call complete(sess.col,sess.currentList) + elseif actionName == 'fixPopup' + let current = s:GetTextBeforeCursor(sess) + let i = 0 + let j = -1 + for v in sess.currentList + let key = type(v) == type({}) ? v.word : v + if key ==# current + let j = i + break + endif + let i += 1 + endfor + if j != -1 + let postAction .= repeat( "\", j + 1 ) + endif + elseif actionName == 'callback' + call s:End() + let postAction = "" + if has_key(sess.callback,sess.matchedCallback) + let postAction = sess.callback[sess.matchedCallback](sess) + return postAction + endif + elseif actionName == 'end' + call s:End() + let postAction = '' + else + endif + if !empty(nextList) + let postAction .= "\=XPPprocess(" . string( nextList ) . ")\" + else + let postAction .= g:xpt_post_action + endif + return postAction +endfunction +fun! s:GetTextBeforeCursor(sess) + let c = col( "." ) + if c == 1 + return '' + endif + return getline(".")[ a:sess.col - 1 : c - 2 ] +endfunction +fun! XPPcomplete(col,list) + let oldcfu = &completefunc + set completefunc=XPPcompleteFunc + return "\\" +endfunction +fun! XPPcr() + if !s:PopupCheck(s:CHECK_PUM) + call feedkeys("\", 'mt') + return "" + endif + return "\=XPPaccept()\" +endfunction +fun! XPPup(key) + if !s:PopupCheck(s:CHECK_PUM) + call feedkeys( a:key, 'mt' ) + return "" + endif + return "\" +endfunction +fun! XPPdown(key) + if !s:PopupCheck(s:CHECK_PUM) + call feedkeys( a:key, 'mt' ) + return "" + endif + return "\" +endfunction +fun! XPPcallback() + if !exists("b:__xpp_current_session") + return "" + endif + let sess = b:__xpp_current_session + call s:End() + if has_key(sess.callback,sess.matchedCallback) + let post = sess.callback[sess.matchedCallback](sess) + else + let post = "" + endif + return post +endfunction +fun! XPPshorten() + if !s:PopupCheck(! s:CHECK_PUM) + let s:pos = getpos(".")[ 1 : 2 ] + return "\\=XPPcorrectPos()\\" + endif + if !pumvisible() + return "\" + endif + let sess = b:__xpp_current_session + let current = s:GetTextBeforeCursor(sess) + if sess.key != '' + return "\" + endif + if current == '' + call s:End() + return "\" + endif + let actions = "\" + let actions = "" + if g:xptemplate_pum_quick_back == 1 + let prefixMap = (sess.ignoreCase) ? sess.prefixIndex.lower : sess.prefixIndex.ori + let shorterKey = s:FindShorter(prefixMap, ( sess.ignoreCase ? substitute(current, '.', '\l&', 'g') : current )) + else + let shorterKey = current[0 : -2] + endif + let action = actions . repeat( "\", len(current) - len(shorterKey) ) . "\=XPPrepopup(0, 'noenlarge')\" + return action +endfunction +fun! XPPenlarge(key) + if !s:PopupCheck(s:CHECK_PUM) + call feedkeys( a:key, 'm' ) + return "" + endif + return "\=XPPrepopup(1, 'enlarge')\" +endfunction +fun! XPPcancel(key) + if !s:PopupCheck() + call feedkeys( a:key, 'mt' ) + return "" + endif + return "\=XPPprocess(" . string( [ 'clearPum', 'clearPrefix', 'typeLongest', 'end' ] ) . ")\" +endfunction +fun! XPPaccept() + if !s:PopupCheck() + call feedkeys("\", 'mt') + return "" + endif + let sess = b:__xpp_current_session + let beforeCursor = col( "." ) - 2 + let beforeCursor = beforeCursor == -1 ? 0 : beforeCursor + let toType = getline(sess.line)[sess.col - 1 : beforeCursor] + return "\=XPPprocess(" . string( [ 'clearPum', 'clearPrefix', 'type', toType, 'end' ] ) . ")\" +endfunction +fun! XPPrepopup(doCallback,ifEnlarge) + if !exists("b:__xpp_current_session") + return "" + endif + let sess = b:__xpp_current_session + if sess.key != '' + let sess.currentText = s:GetTextBeforeCursor(sess) + let action = "\" . "\=XPPprocess(" . string( [ 'keymodeEnlarge' ] ) . ")\" + return action + else + let action = sess.popup(sess.col, { 'doCallback' : a:doCallback, 'enlarge':a:ifEnlarge == 'enlarge' } ) + return action + endif +endfunction +fun! XPPcorrectPos() + let p = getpos(".")[1:2] + if p != s:pos + unlet s:pos + return "\" + else + unlet s:pos + return "" + endif +endfunction +fun! s:ApplyMapAndSetting() + call s:_InitBuffer() + if exists( 'b:__xpp_pushed' ) + return + endif + let b:__xpp_pushed = 1 + call xpt#msvr#Save(b:_xpp_map_saver) + let sess = b:__xpp_current_session + exe 'inoremap ' '=XPPup("\UP>")' + exe 'inoremap ' '=XPPdown("\DOWN>")' + exe 'inoremap ' '=XPPshorten()' + exe 'inoremap ' '=XPPcancel("\C-e>")' + if sess.tabNav + exe 'inoremap ' '=XPPup("\S-Tab>")' + exe 'inoremap ' '=XPPdown("\TAB>")' + exe 'inoremap ' '=XPPenlarge("\CR>")' + exe 'inoremap ' '=XPPenlarge("\C-y>")' + else + exe 'inoremap ' '=XPPenlarge("\TAB>")' + exe 'inoremap ' '=XPPenlarge("\CR>")' + exe 'inoremap ' '=XPPenlarge("\C-y>")' + endif + augroup XPpopup + au! + au CursorMovedI * call s:CheckAndFinish() + au InsertEnter * call XPPend() + augroup END + call xpt#settingswitch#Switch(b:_xpp_setting_switch) + if exists( ':AcpLock' ) + AcpLock + endif +endfunction +fun! s:ClearMapAndSetting() + call s:_InitBuffer() + if !exists( 'b:__xpp_pushed' ) + return + endif + unlet b:__xpp_pushed + augroup XPpopup + au! + augroup END + call xpt#msvr#Restore(b:_xpp_map_saver) + call xpt#settingswitch#Restore(b:_xpp_setting_switch) + if exists( ':AcpUnlock' ) + try + AcpUnlock + catch /.*/ + endtry + endif +endfunction +fun! s:CheckAndFinish() + if !exists( 'b:__xpp_current_session' ) + call s:End() + return '' + endif + let sess = b:__xpp_current_session + if !pumvisible() + if line( "." ) == sess.line + if sess.strictInput + if col(".") > sess.col + call feedkeys( "\", 'n' ) + endif + else + return s:MistakeTypeEnd() + endif + else + return s:MistakeTypeEnd() + endif + endif + return '' +endfunction +fun! s:MistakeTypeEnd() + call s:End() + return PUMclear() +endfunction +fun! XPPhasSession() + return exists("b:__xpp_current_session") +endfunction +fun! XPPend() + call s:End() + if pumvisible() + return PUMclear() + endif + return '' +endfunction +fun! s:End() + call s:ClearMapAndSetting() + if exists("b:__xpp_current_session") + unlet b:__xpp_current_session + endif +endfunction +fun! s:PopupCheck(...) + let checkPum = (a:0 == 0 || a:1) + if !exists("b:__xpp_current_session") + call s:End() + return 0 + endif + let sess = b:__xpp_current_session + if sess.line != line(".") || col(".") < sess.col || (checkPum && !pumvisible()) + call s:End() + return 0 + endif + return 1 +endfunction +fun! s:UpdateIndex(map,key) + let [i,len] = [0,len(a:key)] + while i < len + let prefix = a:key[0 : i - 1] + if !has_key(a:map,prefix) + let a:map[prefix] = 1 + else + let a:map[prefix] += 1 + endif + let i += 1 + endwhile +endfunction +fun! s:LongestPrefix(sess) + let longest = ".*" + for e in a:sess.currentList + let key = (type(e) == type({})) ? e.word : e + if longest == ".*" + let longest = a:sess.ignoreCase ? substitute(key, '.', '\l&', 'g') : key + else + while key !~ '^\V' . ( a:sess.ignoreCase ? '\c' : '\C' ) . escape(longest, '\') && len(longest) > 0 + let longest = longest[ : -2 ] " remove one char + endwhile + endif + endfor + let longest = ( longest == '.*' ) ? '' : longest + if a:sess.prefix !=# longest[: len(a:sess.prefix) - 1] + let longest = a:sess.prefix . longest[len(a:sess.prefix) :] + endif + return longest +endfunction +fun! s:filterCompleteList(sess) + let list = [] + let caseOption = a:sess.ignoreCase ? '\c' : '\C' + if a:sess.matchWholeName + let pattern = '\V\^' . caseOption . a:sess.prefix . '\$' + else + let pattern = '\V\^' . caseOption . a:sess.prefix + endif + for item in a:sess.list + let key = (type(item) == type({})) ? item.word : item + if key =~ pattern + let list += [item] + endif + endfor + return list +endfunction +fun! s:FindShorter(map,key) + let key = a:key + if len(key) == 1 + return '' + endif + let nmatch = has_key(a:map,key) ? a:map[key] : 1 + if !has_key(a:map,key[: -2]) + return key[: -2] + endif + let key = key[: -2] + while key != '' && a:map[key] == nmatch + let key = key[: -2] + endwhile + return key +endfunction +fun! s:ClassPrototype(...) + let p = {} + for name in a:000 + let p[ name ] = function( '' . s:sid . name ) + endfor + return p +endfunction +let s:sessionPrototype2 = s:ClassPrototype( 'popup', 'SetAcceptEmpty', 'SetMatchWholeName', 'SetTriggerKey', 'SetOption', 'KeyPopup', 'ListPopup', ) +call extend( s:sessionPrototype, s:sessionPrototype2, 'force' ) +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/plugin/xpreplace.vim b/vim-plugins/bundle/xptemplate/plugin/xpreplace.vim new file mode 100644 index 0000000..b1bb03b --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xpreplace.vim @@ -0,0 +1,197 @@ +if exists( "g:__XPREPLACE_VIM__" ) && g:__XPREPLACE_VIM__ >= XPT#ver + finish +endif +let g:__XPREPLACE_VIM__ = XPT#ver +let s:oldcpo = &cpo +set cpo-=< cpo+=B +runtime plugin/debug.vim +runtime plugin/xpmark.vim +let s:log = CreateLogger( 'warn' ) +let s:log = CreateLogger( 'debug' ) +fun! s:InitBuffer() + if exists( 'b:__xpr_init' ) + return + endif + let b:__xpr_init = { 'settingSwitch' : xpt#settingswitch#New() } + call xpt#settingswitch#AddList(b:__xpr_init.settingSwitch, [ '&l:textwidth', '0' ], [ '&l:virtualedit', 'onemore' ], [ '&l:whichwrap' , 'b,s,h,l,<,>,~,[,]' ], [ '&l:selection' , 'exclusive' ], [ '&l:selectmode' , '' ], ) +endfunction +fun! XPRstartSession() + call s:InitBuffer() + if exists( 'b:_xpr_session' ) + throw "xpreplace session already pushed" + return + endif + let b:_xpr_session = {} + call xpt#settingswitch#Switch(b:__xpr_init.settingSwitch) + let b:_xpr_session.savedReg = @" + let @" = 'XPreplaceInited' +endfunction +fun! XPRendSession() + if !exists( 'b:_xpr_session' ) + throw "no setting pushed" + return + endif + let @" = b:_xpr_session.savedReg + call xpt#settingswitch#Restore(b:__xpr_init.settingSwitch) + unlet b:_xpr_session +endfunction +fun! XPreplaceByMarkInternal(startMark,endMark,replacement) + let [start,end] = [XPMpos(a:startMark),XPMpos(a:endMark)] + if start == [0,0] || end == [0,0] + throw 'XPM:' . ' ' . a:startMark . ' or ' . a:endMark . 'is invalid' + endif + let pos = XPreplaceInternal( start, end, a:replacement, { 'doJobs' : 0 } ) + call XPMupdateWithMarkRangeChanging(a:startMark,a:endMark,start,pos) + return pos +endfunction +fun! XPreplaceInternal(start,end,replacement,...) + let option = { 'doJobs' : 1, 'saveHoriScroll' : 0 } + if a:0 == 1 + call extend( option, a:1, 'force' ) + endif + let replacement = a:replacement + let repLines = split( a:replacement, '\n', 1 ) + if option.doJobs + call s:doPreJob(a:start,a:end,replacement) + endif + if 0 + let [curNrLines,finalNrLines] = [a:end[0] - a:start[0] + 1,len(repLines)] + let [ s, e ] = [ 1, col( [ a:end[ 0 ], '$' ] ) ] + let repLines[0] = XPT#TextInLine(a:start[0],s,a:start[1]) . repLines[0] + let repLines[-1] .= XPT#TextInLine(a:end[0],a:end[1],e) + let positionAfterReplacement = [a:end[0] + (finalNrLines - curNrLines),a:end[1] - len(getline(a:end[0]))] + if curNrLines > finalNrLines + call cursor(a:start) + if curNrLines > finalNrLines + 1 + exe 'silent!' 'normal!' 'zOd' ( finalNrLines - curNrLines - 1 ) 'j' + else + silent! normal! zOdd + endif + elseif curNrLines < finalNrLines + call append( a:start[ 0 ], repeat( [ '' ], finalNrLines - curNrLines ) ) + endif + call setline(a:start[0],repLines) + let positionAfterReplacement[1] += len(getline(positionAfterReplacement[0])) + call cursor(positionAfterReplacement) + silent! normal! zO + else + call cursor(a:start) + silent! normal! zO + call cursor(a:start) + if a:start != a:end + silent! normal! v + call cursor(a:end) + silent! normal! dzO + call cursor(a:start) + endif + if replacement != '' + let positionAfterReplacement = s:Replace_standard(a:start,a:end,replacement) + else + let positionAfterReplacement = [ line("."), col(".") ] + endif + endif + if option.doJobs + call s:doPostJob(a:start,positionAfterReplacement,replacement) + endif + return positionAfterReplacement +endfunction +fun! s:Replace_standard(start,end,replacement) + let replacement = a:replacement + let bStart = [a:start[0] - line( '$' ), a:start[1] - len(getline(a:start[0]))] + call cursor(a:start) + let ifPasteAtEnd = ( col( [ a:start[0], '$' ] ) == a:start[1] && a:start[1] > 1 ) + let @" = replacement . ';' + if ifPasteAtEnd + call cursor(a:start[0],a:start[1] - 1) + let char = matchstr( getline( '.' ), '\v.$' ) + let @" = char . replacement . ';' + silent! normal! ""P + else + if col( "." ) == len( getline( line( "." ) ) ) + 1 + silent! normal! ""p + else + silent! normal! ""P + endif + endif + let positionAfterReplacement = [ bStart[0] + line( '$' ), 0 ] + let positionAfterReplacement[1] = bStart[1] + len(getline(positionAfterReplacement[0])) + call cursor(a:start) + k' + call cursor(positionAfterReplacement) + silent! '',.foldopen! + if ifPasteAtEnd + call cursor(positionAfterReplacement[0],positionAfterReplacement[1] - 1 - len(char)) + silent! normal! DzO + else + call cursor(positionAfterReplacement) + if positionAfterReplacement[1] == len(getline(positionAfterReplacement[0])) + 1 && positionAfterReplacement[1] > 1 + call cursor(positionAfterReplacement[0],positionAfterReplacement[1] - 1) + silent! normal! xzO + else + silent! normal! XzO + endif + endif + let positionAfterReplacement = [ bStart[0] + line( '$' ), 0 ] + let positionAfterReplacement[1] = bStart[1] + len(getline(positionAfterReplacement[0])) + return positionAfterReplacement +endfunction +fun! s:Replace_gp(start,end,replacement) + let replacement = a:replacement + let bStart = [a:start[0] - line( '$' ), a:start[1] - len(getline(a:start[0]))] + call cursor(a:start) + let ifPasteAtEnd = ( col( [ a:start[0], '$' ] ) == a:start[1] && a:start[1] > 1 ) + let @" = replacement . ';' + call cursor(a:start) + silent! normal! ""gPzOXzO + let positionAfterReplacement = [ line( "." ), col( "." ) ] + return positionAfterReplacement +endfunction +fun! XPreplace(start,end,replacement,...) + let option = { 'doJobs' : 1 } + if a:0 == 1 + call extend(option, a:1, 'force') + endif + call XPRstartSession() + let positionAfterReplacement = a:end + try + let positionAfterReplacement = XPreplaceInternal(a:start,a:end,a:replacement,option) + catch /.*/ + call XPT#warn(v:exception) + call XPT#warn(v:throwpoint) + finally + call XPRendSession() + endtry + return positionAfterReplacement +endfunction +let s:_xpreplace = { 'post' : {}, 'pre' : {} } +fun! XPRaddPreJob(functionName) + let s:_xpreplace.pre[a:functionName] = function(a:functionName) +endfunction +fun! XPRaddPostJob(functionName) + let s:_xpreplace.post[a:functionName] = function(a:functionName) +endfunction +fun! XPRremovePreJob(functionName) + let d = s:_xpreplace.pre + if has_key(d,a:functionName) + unlet d[a:functionName] + endif +endfunction +fun! XPRremovePostJob(functionName) + let d = s:_xpreplace.post + if has_key(d,a:functionName) + unlet d[a:functionName] + endif +endfunction +fun! s:doPreJob(start,end,replacement) + let d = { 'f' : '' } + for d.f in values(s:_xpreplace.pre) + call d.f(a:start,a:end) + endfor +endfunction +fun! s:doPostJob(start,end,replacement) + let d = { 'f' : '' } + for d.f in values(s:_xpreplace.post) + call d.f(a:start,a:end) + endfor +endfunction +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/plugin/xpt.plugin.highlight.vim b/vim-plugins/bundle/xptemplate/plugin/xpt.plugin.highlight.vim new file mode 100644 index 0000000..164b673 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xpt.plugin.highlight.vim @@ -0,0 +1,136 @@ +if exists( "g:__XPT_PLUGIN_HIGHLIGHT_VIM__" ) && g:__XPT_PLUGIN_HIGHLIGHT_VIM__ >= XPT#ver + finish +endif +let g:__XPT_PLUGIN_HIGHLIGHT_VIM__ = XPT#ver +runtime plugin/xptemplate.vim +if '' == g:xptemplate_highlight + finish +endif +if !hlID( 'XPTcurrentPH' ) + hi def link XPTcurrentPH DiffChange +endif +if !hlID( 'XPTfollowingPH' ) + hi def link XPTfollowingPH CursorLine +endif +if !hlID( 'XPTnextItem' ) + hi def link XPTnextItem IncSearch +endif +fun! s:UpdateHL(x,ctx) + if !a:ctx.processing + return 1 + endif + call s:ClearHL(a:x,a:ctx) + if pumvisible() + return 1 + endif + if g:xptemplate_highlight =~ 'current' && a:ctx.phase == 'fillin' + let r = s:MarkRange(a:ctx.leadingPlaceHolder.mark) + call s:HL( 'XPTcurrentPH', r[2:] ) + endif + if g:xptemplate_highlight =~ 'following' && a:ctx.phase == 'fillin' + let r = '' + for ph in a:ctx.item.placeHolders + let r .= '\|' . s:MarkRange( ph.mark ) + endfor + call s:HL( 'XPTfollowingPH', r[2:] ) + endif + if g:xptemplate_highlight =~ 'next' + let r = s:PatternOfNext(a:ctx) + if g:xptemplate_highlight_nested + for octx in a:x.stack + let r .= s:PatternOfNext(octx) + endfor + endif + call s:HL( 'XPTnextItem', r[2:] ) + endif + return 1 +endfunction +fun! s:PatternOfNext(ctx) + let r = '' + for item in a:ctx.itemList + if item.keyPH != {} + let r .= '\|' . s:MarkRange( item.keyPH.innerMarks ) + else + let r .= '\|' . s:MarkRange( item.placeHolders[0].mark ) + endif + endfor + if a:ctx.itemList == [] || 'cursor' != item.name + let pos = XPMposList(a:ctx.marks.tmpl.end,a:ctx.marks.tmpl.end) + let r .= '\|' . XPTgetStaticRange( pos[0], [ pos[1][0], pos[1][1] + 1 ] ) + endif + return r +endfunction +fun! s:MarkRange(marks) + let pos = XPMposList(a:marks.start,a:marks.end) + if pos[0] == pos[1] + let pos[1][1] += 1 + endif + return XPTgetStaticRange(pos[0],pos[1]) +endfunction +fun! XPTgetStaticRange(p,q) + let posStart = a:p + let posEnd = a:q + if posStart[0] == posEnd[0] && posStart[1] + 1 == posEnd[1] + return '\%' . posStart[0] . 'l' . '\%' . posStart[1] . 'c' + endif + let r = '' + if posStart[0] == posEnd[0] + let r = r . '\%' . posStart[0] . 'l' + if posStart[1] > 1 + let r = r . '\%>' . (posStart[1]-1) .'c' + endif + let r = r . '\%<' . posEnd[1] . 'c' + else + if posStart[0] < posEnd[0] - 1 + let r = r . '\%>' . posStart[0] .'l' . '\%<' . posEnd[0] . 'l' + else + let r = r . '\%' . ( posStart[0] + 1 ) .'l' + endif + let r = r . '\|' . '\%(' . '\%' . posStart[0] . 'l\%>' . (posStart[1]-1) . 'c\)' . '\|' . '\%(' . '\%' . posEnd[0] . 'l\%<' . (posEnd[1]+0) . 'c\)' + endif + let r = '\%(' . r . '\)' + return '\V'.r +endfunction +if exists( '*matchadd' ) + fun! s:HLinit() + if !exists( 'b:__xptHLids' ) + let b:__xptHLids = [] + endif + endfunction + fun! s:ClearHL(x,ctx) + call s:HLinit() + for id in b:__xptHLids + try + call matchdelete(id) + catch /.*/ + endtry + endfor + let b:__xptHLids = [] + endfunction + fun! s:HL(grp,ptn) + call s:HLinit() + call add(b:__xptHLids,matchadd(a:grp,a:ptn,30)) + endfunction +else + let s:matchingCmd = { 'XPTcurrentPH':'3match', 'XPTfollowingPH':'match', 'XPTnextItem':'2match', } + fun! s:ClearHL(x,ctx) + for cmd in values(s:matchingCmd) + exe cmd 'none' + endfor + endfunction + fun! s:HL(grp,ptn) + let cmd = get( s:matchingCmd, a:grp, '' ) + if '' != cmd + exe cmd a:grp '/' . a:ptn . '/' + endif + endfunction +endif +exe XPT#let_sid +let s:FuncUpdate = function( '' . s:sid . "UpdateHL" ) +let s:FuncClear = function( '' . s:sid . "ClearHL" ) +call g:XPTaddPlugin("insertenter" , 'after' , s:FuncUpdate ) +call g:XPTaddPlugin("start" , 'after' , s:FuncUpdate ) +call g:XPTaddPlugin("update" , 'after' , s:FuncUpdate ) +call g:XPTaddPlugin("finishSnippet", 'after' , s:FuncUpdate ) +call g:XPTaddPlugin("ph_pum" , 'before', s:FuncClear ) +call g:XPTaddPlugin("finishAll" , 'after' , s:FuncClear ) diff --git a/vim-plugins/bundle/xptemplate/plugin/xptemplate.conf.vim b/vim-plugins/bundle/xptemplate/plugin/xptemplate.conf.vim new file mode 100644 index 0000000..7c163a8 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xptemplate.conf.vim @@ -0,0 +1,234 @@ +if exists( "g:__XPTEMPLATE_CONF_VIM__" ) && g:__XPTEMPLATE_CONF_VIM__ >= XPT#ver + finish +endif +let g:__XPTEMPLATE_CONF_VIM__ = XPT#ver +let s:oldcpo = &cpo +set cpo-=< cpo+=B +exe XPT#importConst +let s:def = function( "XPT#default" ) +call s:def('g:xptemplate_key' , '' ) +call s:def('g:xptemplate_key_force_pum' , '' . g:xptemplate_key ) +call s:def('g:xptemplate_key_pum_only' , '' . g:xptemplate_key ) +call s:def('g:xptemplate_key_visual' , g:xptemplate_key ) +call s:def('g:xptemplate_nav_next' , '' ) +call s:def('g:xptemplate_nav_prev' , '' ) +call s:def('g:xptemplate_nav_cancel' , '' ) +call s:def('g:xptemplate_goback' , '' ) +call s:def('g:xptemplate_to_right' , '' ) +call s:def('g:xptemplate_key_2' , g:xptemplate_key ) +call s:def('g:xptemplate_nav_next_2' , g:xptemplate_nav_next ) +call s:def('g:xptemplate_fallback' , 'XPTrawKey' ) +call s:def('g:xptemplate_key_visual_2' , g:xptemplate_key_visual ) +call s:def('g:xptemplate_fallback_condition' , '\V\c' ) +call s:def('g:xptemplate_move_even_with_pum' , g:xptemplate_nav_next !=? '' ) +call s:def('g:xptemplate_close_pum' , 0 ) +call s:def('g:xptemplate_break_undo' , 0 ) +call s:def('g:xptemplate_always_show_pum' , 0 ) +call s:def('g:xptemplate_minimal_prefix' , 1 ) +call s:def('g:xptemplate_pum_tab_nav' , 0 ) +call s:def('g:xptemplate_pum_quick_back' , 1 ) +call s:def('g:xptemplate_strict' , 2 ) +call s:def('g:xptemplate_highlight' , 'next' ) +call s:def('g:xptemplate_highlight_nested' , 0 ) +call s:def('g:xptemplate_brace_complete' , 0 ) +call s:def('g:xptemplate_strip_left' , 1 ) +call s:def('g:xptemplate_ph_pum_accept_empty' , 1 ) +call s:def('g:xptemplate_hook_before_cr' , '' ) +call s:def('g:xptemplate_debug_log' , '' ) +call s:def('g:xptemplate_vars' , '' ) +call s:def('g:xptemplate_bundle' , '' ) +call s:def('g:xptemplate_snippet_folders' , [] ) +runtime! autoload/xpt/option/* +call s:def('g:xpt_post_action', '') +fun! s:ParseXPTVars() + let var_strings = split(g:xptemplate_vars . '&', '\V'.s:nonEscaped.'&\zs') + let vars = {} + for v in var_strings + let key = matchstr(v, '\V\^\[^=]\*\ze=') + if key == '' + continue + endif + if key !~ '^\$' + let key = '$'.key + endif + let val = matchstr(v, '\V\^\[^=]\*=\zs\.\*') + let escaped_val = xpt#util#UnescapeChar(val, '&') + let vars[key] = strpart(escaped_val,0,len(escaped_val)-1) + endfor + return vars +endfunction +if type( g:xptemplate_minimal_prefix ) == type( '' ) + if g:xptemplate_minimal_prefix =~ ',' + let [ outer, inner ] = split( g:xptemplate_minimal_prefix, ',' ) + if outer =~ '\d' + let g:xptemplate_minimal_prefix = outer + 0 + else + let g:xptemplate_minimal_prefix = outer + endif + if inner =~ '\d' + let g:xptemplate_minimal_prefix_nested = inner + 0 + else + let g:xptemplate_minimal_prefix_nested = inner + endif + endif +endif +call s:def( 'g:xptemplate_minimal_prefix_nested', g:xptemplate_minimal_prefix ) +if g:xptemplate_fallback == '' + let g:xptemplate_fallback = '' +endif +if g:xptemplate_fallback == g:xptemplate_key || g:xptemplate_fallback == g:xptemplate_key_force_pum + let g:xptemplate_fallback = 'nore:' . g:xptemplate_fallback +endif +if g:xptemplate_brace_complete is 1 + let g:xptemplate_brace_complete = '([{"''' +endif +let s:path = expand( "" ) +let s:filename = 'xptemplate.conf.vim' +let s:path = substitute( s:path, '\', '/', 'g' ) +let s:path = matchstr( s:path, '\V\.\*\ze/plugin/' . s:filename ) +let &runtimepath .= ',' . s:path . '/personal' +for s:path in g:xptemplate_snippet_folders + let &runtimepath .= ',' . s:path +endfor +unlet s:path +unlet s:filename +let g:XPTmappings = { 'popup_old':"=XPTemplateStart(0,{'popupOnly':1})", 'trigger_old':"=XPTemplateStart(0)", 'popup':"=XPTemplateStart(0,{'k':'%s','popupOnly':1})", 'force_pum':"=XPTemplateStart(0,{'k':'%s','forcePum':1})", 'trigger':"=XPTemplateStart(0,{'k':'%s'})", 'wrapTrigger':"\"0s=XPTemplatePreWrap(@0)", 'incSelTrigger':"`>a=XPTemplateStart(0)", 'excSelTrigger':"`>i=XPTemplateStart(0)", 'selTrigger':(&selection == 'inclusive') ? "`>a=XPTemplateStart(0,{'k':'%s'})" : "`>i=XPTemplateStart(0,{'k':'%s'})", } +if g:xptemplate_break_undo + let g:XPTmappings.trigger = "u" . g:XPTmappings.trigger +endif +if g:xptemplate_close_pum + for k in split('popup,force_pum,trigger', ',') + let g:XPTmappings[k] = "" . g:XPTmappings[k] + endfor +end +if g:xptemplate_fallback =~ '\V\^nore:' + let g:xptemplate_fallback = g:xptemplate_fallback[5:] + exe "inoremap XPTfallback" g:xptemplate_fallback +else + exe "imap XPTfallback" g:xptemplate_fallback +endif +exe "inoremap XPTrawKey" g:xptemplate_key +fun! s:EscapeMap(s) + return substitute( a:s, '\V>', '++', 'g' ) +endfunction +exe "inoremap " g:xptemplate_key printf( g:XPTmappings.trigger , s:EscapeMap( g:xptemplate_key ) ) +exe "xnoremap " g:xptemplate_key_visual g:XPTmappings.wrapTrigger +exe "snoremap " g:xptemplate_key printf( g:XPTmappings.selTrigger , s:EscapeMap( g:xptemplate_key ) ) +exe "inoremap " g:xptemplate_key_pum_only printf( g:XPTmappings.popup , s:EscapeMap( g:xptemplate_key_pum_only ) ) +exe "inoremap " g:xptemplate_key_force_pum printf( g:XPTmappings.force_pum , s:EscapeMap( g:xptemplate_key_force_pum )) +if g:xptemplate_key_2 != g:xptemplate_key + exe "inoremap " g:xptemplate_key_2 g:XPTmappings.trigger + exe "snoremap " g:xptemplate_key_2 g:XPTmappings.selTrigger +endif +if g:xptemplate_key_visual_2 != g:xptemplate_key_visual + exe "xnoremap " g:xptemplate_key_visual_2 g:XPTmappings.wrapTrigger +endif +let g:XPTpvs = s:ParseXPTVars() +if type( g:xptemplate_bundle ) == type( '' ) + let s:bundle = split( g:xptemplate_bundle, ',' ) +else + let s:bundle = g:xptemplate_bundle +endif +let g:xptBundle = {} +for ftAndBundle in s:bundle + let [ ft; bundle_list ] = split( ftAndBundle, '_' ) + let bundle = join( bundle_list, '_' ) + if !has_key(g:xptBundle,ft) + let g:xptBundle[ft] = {} + endif + let g:xptBundle[ft][bundle] = 1 +endfor +fun! g:XPTaddBundle(ft,bundle) + call XPTemplateInit() + let g:xptBundle[a:ft] = get(g:xptBundle,a:ft,{}) + let g:xptBundle[a:ft][a:bundle] = 1 + call XPTembed( a:ft . '/' . a:bundle ) +endfunction +fun! g:XPTloadBundle(ft,bundle) + if !has_key(g:xptBundle,a:ft) + return 0 + elseif !has_key( g:xptBundle[ a:ft ], a:bundle ) && !has_key( g:xptBundle[ a:ft ], '*' ) + return 0 + else + return 1 + endif +endfunction +fun! XPTfiletypeInit() + if !exists( 'b:xptemplateData' ) + call XPTemplateInit() + endif + let x = b:xptemplateData + let fts = x.filetypes + for [ft,ftScope] in items(fts) + let f = ftScope.funcs + for [k,v] in items(g:XPTpvs) + let f[k] = v + endfor + if &l:commentstring != '' + let cms = split( &l:commentstring, '\V%s', 1 ) + if cms[1] == '' + let f[ '$CS' ] = get( f, '$CS', cms[0] ) + else + if !has_key( f, '$CL' ) && !has_key( f, '$CR' ) + let [ f[ '$CL' ], f[ '$CR' ] ] = cms + endif + endif + endif + endfor +endfunction +augroup XPTftInit + au! + au FileType * call XPTfiletypeInit() +augroup END +if stridx( g:xptemplate_brace_complete, '(' ) >= 0 + inoremap ( =XPTtgr('(',{'noliteral':1,'k':'('}) +endif +if stridx( g:xptemplate_brace_complete, '[' ) >= 0 + inoremap [ =XPTtgr('[',{'noliteral':1,'k':'['}) +endif +if stridx( g:xptemplate_brace_complete, '{' ) >= 0 + inoremap { =XPTtgr('{',{'noliteral':1,'k':'{'}) +endif +if stridx( g:xptemplate_brace_complete, '''' ) >= 0 + inoremap ' =XPTtgr('''',{'noliteral':1,'k':''''}) +endif +if stridx( g:xptemplate_brace_complete, '"' ) >= 0 + inoremap " =XPTtgr('"',{'noliteral':1,'k':'"'}) +endif +fun! XPTinfo() + if !exists( 'b:xptemplateData' ) + return 0 + endif + let x = b:xptemplateData + if !x.renderContext.processing + return 0 + endif + let st = x.stack + let st = st + [x.renderContext] + call map( st, '{"$snipname":v:val.snipObject.name, "$phname":v:val.item.name}' ) + return st +endfunction +fun! XPTinfoStr(...) + let data = XPTinfo() + if data is 0 + return '' + endif + let fmt = a:000 + if len(fmt) == 0 + let fmt = [ "$snipname.$phname", " > " ] + elseif len(fmt) == 1 + call add( fmt, " > " ) + else + let fmt = fmt[0 : 1] + endif + let rst = [] + for e in data + let elt = fmt[0] + for k in [ "$snipname", "$phname" ] + let elt = substitute( elt, '\V' . k, e[ k ], 'g' ) + endfor + call add(rst,elt) + endfor + return join(rst,fmt[1]) +endfunction +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/plugin/xptemplate.parser.vim b/vim-plugins/bundle/xptemplate/plugin/xptemplate.parser.vim new file mode 100644 index 0000000..bc426ea --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xptemplate.parser.vim @@ -0,0 +1,22 @@ +if exists( "g:__XPTEMPLATE_PARSER_VIM__" ) && g:__XPTEMPLATE_PARSER_VIM__ >= XPT#ver + finish +endif +let g:__XPTEMPLATE_PARSER_VIM__ = XPT#ver +let s:oldcpo = &cpo +set cpo-=< cpo+=B +runtime plugin/xptemplate.conf.vim +exec XPT#importConst +com! -nargs=* XPTemplate if xpt#parser#InitSnippetFile( expand( "" ), ) == 'finish' | finish | endif +com! -nargs=* XPTemplateDef call xpt#parser#LoadSnippetToParseList(expand("")) | finish +com! -nargs=* XPT call xpt#parser#LoadSnippetToParseList(expand("")) | finish +com! -nargs=* XPTvar call xpt#parser#SetVar() +com! -nargs=* XPTsnipSet call xpt#parser#SnipSet() +com! -nargs=+ XPTinclude call xpt#parser#Include() +com! -nargs=+ XPTembed call xpt#parser#Embed() +fun! XPTinclude(...) + call xpt#parser#Load(a:000,1) +endfunction +fun! XPTembed(...) + call xpt#parser#Load(a:000,0) +endfunction +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/plugin/xptemplate.vim b/vim-plugins/bundle/xptemplate/plugin/xptemplate.vim new file mode 100644 index 0000000..6b32940 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/plugin/xptemplate.vim @@ -0,0 +1,2286 @@ +" GetLatestVimScripts: 2611 1 :AutoInstall: xpt.tgz +" VERSION: 0.4.9.161024-8f2c6c5 +if exists( "g:__XPTEMPLATE_VIM__" ) && g:__XPTEMPLATE_VIM__ >= XPT#ver + finish +endif +let g:__XPTEMPLATE_VIM__ = XPT#ver +let s:oldcpo = &cpo +set cpo-=< cpo+=B +exe XPT#let_sid +runtime plugin/xptemplate.conf.vim +runtime plugin/xpreplace.vim +runtime plugin/xpmark.vim +runtime plugin/xpopup.vim +exec XPT#importConst +let s:log = xpt#debug#Logger( 'warn' ) +let s:log = xpt#debug#Logger( 'debug' ) +let s:close_pum = "\\\" +let s:renderPhase = xpt#rctx#phase +call XPRaddPreJob( 'XPMupdateCursorStat' ) +call XPRaddPostJob( 'XPMupdateSpecificChangedRange' ) +call XPMsetUpdateStrategy( 'normalMode' ) +fun! XPTmarkCompare(o,markToAdd,existedMark) + let renderContext = b:xptemplateData.renderContext + if renderContext.phase == 'rendering' + let [lm,rm] = [a:o.changeLikelyBetween.start,a:o.changeLikelyBetween.end] + if a:existedMark ==# rm + return -1 + endif + elseif renderContext.action == 'build' && has_key( renderContext, 'buildingMarkRange' ) && renderContext.buildingMarkRange.end == a:existedMark + return -1 + endif + return 1 +endfunction +let s:repetitionPattern = '\w\*...\w\*' +let s:expandablePattern = '\V\S\+...\$' +let s:nullDict = {} +let s:nullList = [] +let s:nonEscaped = '\%(' . '\%(\[^\\]\|\^\)' . '\%(\\\\\)\*' . '\)' . '\@<=' +let g:XPTemplateSettingPrototype = { 'hidden':0, 'variables':{}, 'preValues':{ 'cursor' : xpt#flt#New( 0, '$CURSOR_PH' ) }, 'defaultValues':{}, 'mappings':{}, 'ontypeFilters':{}, 'postFilters':{}, 'comeFirst':[], 'comeLast':[], } +fun! g:XPTapplyTemplateSettingDefaultValue(setting) + let s = a:setting + let s.postQuoter = get( s, 'postQuoter', { 'start' : '{{', 'end' : '}}' } ) + let s.preValues.cursor = get( s.preValues, 'cursor', '$CURSOR_PH' ) +endfunction +let g:XPT_RC = { 'ok':{}, 'canceled':{}, } +let s:buildingSeqNr = 0 +let s:anonymouseIndex = 0 +let s:pumCB = {} +fun! s:pumCB.onEmpty(sess) + if g:xptemplate_fallback ==? '' + call XPT#warn( "XPT: No snippet matches" ) + return '' + else + let x = b:xptemplateData + let x.fallbacks = [ [ "\XPTfallback", 'feed' ] ] + x.fallbacks + return XPT#fallback(x.fallbacks) + endif +endfunction +fun! s:pumCB.onOneMatch(sess) + if a:sess.matched == '' + call feedkeys( eval('"\' . g:xptemplate_key . '"' ), 'nt') + return '' + else + return s:DoStart(a:sess) + endif +endfunction +let s:ItemPumCB = {} +fun! s:ItemPumCB.onOneMatch(sess) + if 0 == s:XPTupdate() + return s:ShiftForward( '' ) + else + return "" + endif +endfunction +fun! s:FallbackKey() + call feedkeys( "\XPTfallback", 'mt' ) + return '' +endfunction +fun! XPTemplateKeyword(val) + let x = b:xptemplateData + let ftScope = x.filetypes[x.snipFileScope.filetype] + let ftkeyword = ftScope.ftkeyword + let val = substitute(a:val, '\w', '', 'g') + let val = string(val)[1 : -2] + let needEscape = '^\]-' + let ftkeyword.list += split( val, '\v\s*' ) + call sort(ftkeyword.list) + let ftkeyword.list = split( substitute( join( ftkeyword.list, '' ), '\v(.)\1+', '\1', 'g' ), '\v\s*' ) + let ftkeyword.regexp = '\[0-9A-Za-z_' . escape( join( ftkeyword.list, '' ), needEscape ) . ']' +endfunction +fun! XPTemplatePriority(...) + let x = b:xptemplateData + let p = get( a:000, 0, '' ) + if p == '' + let p = 'lang' + endif + let x.snipFileScope.priority = xpt#priority#Parse(p) +endfunction +fun! XPTemplateMark(sl,sr) + let b:xptemplateData.snipFileScope.ptn = xpt#snipfile#GenPattern({'l':a:sl, 'r':a:sr}) +endfunction +fun! XPTmark() + let renderContext = b:xptemplateData.renderContext + let xp = renderContext.snipObject.ptn + return [xp.l,xp.r] +endfunction +fun! g:XPTfuncs() + return g:GetSnipFileFtScope().funcs +endfunction +fun! XPTemplateAlias(name,toWhich,setting) + let name = a:name + let xptObj = b:xptemplateData + let xt = xptObj.filetypes[g:GetSnipFileFT()].allTemplates + let toSnip = get(xt,a:toWhich) + if toSnip is 0 + return + endif + let setting = deepcopy(toSnip.setting) + call xpt#util#DeepExtend(setting,a:setting) + let prio = xptObj.snipFileScope.priority + let existed = get( xt, a:name, { 'priority': xpt#priority#Get( 'lowest' ) } ) + if existed.priority < prio + return + endif + if has_key(xt,a:toWhich) + let xt[a:name] = { 'name':a:name, 'parsed':0, 'ftScope':toSnip.ftScope, 'snipText':toSnip.snipText, 'priority':prio, 'setting':setting, 'ptn':deepcopy(toSnip.ptn), } + call s:UpdateNamePrefixDict(toSnip.ftScope,a:name) + call s:ParseTemplateSetting(xt[a:name]) + if get( xt[ name ].setting, 'abbr', 0 ) + call s:Abbr(name) + endif + endif +endfunction +fun! g:GetSnipFileFT() + let x = b:xptemplateData + return x.snipFileScope.filetype +endfunction +fun! g:GetSnipFileFtScope() + let x = b:xptemplateData + return x.filetypes[x.snipFileScope.filetype] +endfunction +fun! s:GetTempSnipScope(x,ft) + if !has_key( a:x, '__tmp_snip_scope' ) + let sc = xpt#snipfile#New('') + let b:xptemplateData.snipFileScope = sc + let sc.priority = 0 + let a:x.__tmp_snip_scope = sc + endif + let a:x.__tmp_snip_scope.filetype = '' == a:ft ? 'unknown' : a:ft + return a:x.__tmp_snip_scope +endfunction +fun! XPTemplate(name,str_or_ctx,...) + let x = b:xptemplateData + if a:0 == 0 + let snip = a:str_or_ctx + let setting = {} + else + let snip = a:1 + let setting = a:str_or_ctx + endif + let ft = get( setting, 'filetype', &filetype ) + let ft = '' == ft ? 'unknown' : ft + call xpt#parser#loadSpecialFiletype(ft) + call xpt#snipfile#Push() + let x.snipFileScope = s:GetTempSnipScope(x,ft) + call XPTdefineSnippet(a:name,setting,snip) + call xpt#snipfile#Pop() +endfunction +fun! XPTdefineSnippet(name,setting,snip) + let name = a:name + let x = b:xptemplateData + let ftScope = x.filetypes[x.snipFileScope.filetype] + let templates = ftScope.allTemplates + let xp = x.snipFileScope.ptn + let templateSetting = deepcopy(g:XPTemplateSettingPrototype) + call extend( templateSetting, a:setting, 'force' ) + call g:XPTapplyTemplateSettingDefaultValue(templateSetting) + let prio = x.snipFileScope.priority + if has_key(templates,a:name) && templates[a:name].priority < prio + return + endif + call s:UpdateNamePrefixDict(ftScope,a:name) + if type(a:snip) == type([]) + let snip = join(a:snip, "\n") + else + let snip = a:snip + endif + let templates[a:name] = { 'name':a:name, 'parsed':0, 'ftScope':ftScope, 'snipText':snip, 'priority':prio, 'setting':templateSetting, 'ptn':deepcopy(b:xptemplateData.snipFileScope.ptn), } + call s:InitTemplateObject(x,templates[a:name]) + if get( templates[ name ].setting, 'abbr', 0 ) + call s:Abbr(name) + endif +endfunction +fun! s:UpdateNamePrefixDict(ftScope,name) + if !has_key( a:ftScope, 'namePrefix' ) + let a:ftScope.namePrefix = {} + endif + let [n,pre] = [a:name,a:ftScope.namePrefix] + while n != '' && !has_key( pre, n ) + let pre[n] = 1 + let n = n[: -2] + endwhile +endfunction +fun! s:Abbr(name) + let name = a:name + try + exe 'inoreabbr ' name '' . "\=XPTtgr(" . string( name ) . ",{'k':''})\" + catch /.*/ + let n = matchstr( name, '\v\w+$' ) + let pre = name[: -len(n) - 1] + let x.abbrPrefix[n] = get(x.abbrPrefix,n,{}) + let x.abbrPrefix[n][pre] = 1 + exe 'inoreabbr ' n printf( "\=XPTabbr(%s)\", string( n ) ) + endtry +endfunction +fun! s:InitTemplateObject(xptObj,tmplObj) + call s:ParseTemplateSetting(a:tmplObj) + call s:AddCursorToComeLast(a:tmplObj.setting) + call s:InitItemOrderList(a:tmplObj.setting) + if !has_key( a:tmplObj.setting.defaultValues, 'cursor' ) + let a:tmplObj.setting.defaultValues.cursor = xpt#flt#New( 0, 'Finish("")' ) + endif + if len(a:tmplObj.name) == 1 && 0 " diabled + else + let nonWordChar = substitute( a:tmplObj.name, '\w', '', 'g' ) + if nonWordChar != '' + if !(a:tmplObj.setting.wraponly || a:tmplObj.setting.hidden) + call XPTemplateKeyword(nonWordChar) + endif + endif + endif +endfunction +fun! s:ParseInclusion(tmplDict,tmplObject) + if type( a:tmplObject.snipText ) == type( function( 'tr' ) ) + return + endif + let xp = a:tmplObject.ptn + let phPattern = '\V' . xp.lft . 'Include:\(\.\{-}\)' . xp.rt + let linePattern = '\V' . '\n\(\s\*\)\.\{-}' . phPattern + call s:DoInclude( a:tmplDict, a:tmplObject, { 'ph' : phPattern, 'line' : linePattern }, 1 ) + let phPattern = '\V' . xp.lft . ':\(\.\{-}\):' . xp.rt + let linePattern = '\V' . '\n\(\s\*\)\.\{-}' . phPattern + call s:DoInclude( a:tmplDict, a:tmplObject, { 'ph' : phPattern, 'line' : linePattern }, 0 ) +endfunction +fun! s:DoInclude(tmplDict,tmplObject,pattern,keepCursor) + let snip = "\n" . a:tmplObject.snipText + let xp = a:tmplObject.ptn + let included = {a:tmplObject.name : 1} + let pos = 0 + while 1 + let pos = match(snip,a:pattern.line,pos) + if -1 == pos + break + endif + let [matching,indent,incName] = matchlist(snip,a:pattern.line,pos)[: 2] + let indent = matchstr( split( matching, '\n' )[ -1 ], '^\s*' ) + let [incName,params] = s:ParseInclusionStatement(a:tmplObject,incName) + if has_key(a:tmplDict,incName) + if has_key(included,incName) && included[incName] > 20 + throw "XPT : include too many snippet:" . incName . ' in ' . a:tmplObject.name + endif + let included[incName] = get(included,incName,0) + 1 + let ph = matchstr(matching,a:pattern.ph) + let incTmplObject = a:tmplDict[incName] + call s:ParseSnippet(incTmplObject,incTmplObject.ftScope) + call s:MergeSetting(a:tmplObject.setting,incTmplObject.setting) + let incSnip = s:ReplacePHInSubSnip(a:tmplObject,incTmplObject,params) + let incSnip = substitute( incSnip, '\n', '&' . indent, 'g' ) + if !a:keepCursor + let incSnip = substitute( incSnip, xp.lft . 'cursor' . xp.rt, xp.l . xp.r, 'g' ) + endif + let leftEnd = pos + len(matching) - len(ph) + let rightStart = pos + len(matching) + let left = snip[: leftEnd - 1] + let right = snip[rightStart :] + let snip = left . incSnip . right + else + throw "XPT : include inexistent snippet:" . incName . ' in ' . a:tmplObject.name + endif + endwhile + let a:tmplObject.snipText = snip[1:] +endfunction +fun! s:ReplacePHInSubSnip(snipObject,subSnipObject,params) + let xp = a:snipObject.ptn + let incSnip = a:subSnipObject.snipText + let incSnipPieces = split( incSnip, '\V' . xp.rt, 1 ) + for [k,v] in items(a:params) + let [i,len] = [0 - 1,len(incSnipPieces) - 1] + while i < len | let i += 1 + let piece = incSnipPieces[i] + if piece =~# '\V' . k + let parts = split( piece, '\V' . xp.lft, 1 ) + let iName = len(parts) == 4 ? 2 : len(parts) - 1 + if parts[iName] ==# k + let parts[iName] = v + endif + let incSnipPieces[i] = join(parts,xp.l) + endif + endwhile + endfor + let incSnip = join(incSnipPieces,xp.r) + return incSnip +endfunction +fun! s:ParseInclusionStatement(snipObject,st) + let xp = a:snipObject.ptn + let ptn = '\V\^\[^(]\{-}(' + let st = a:st + if st =~ ptn && st[ -1 : -1 ] == ')' + let name = matchstr(st,ptn)[: -2] + let paramStr = st[len(name) + 1 : -2] + let paramStr = xpt#util#UnescapeChar(paramStr,xp.l . xp.r) + let params = {} + try + let params = eval(paramStr) + catch /.*/ + XPT#warn( 'XPT: Invalid parameter: ' . string( paramStr ) . ' Error=' . v:exception ) + endtry + return [name,params] + else + return [st,{}] + endif +endfunction +fun! s:MergeSetting(toSettings,fromSettings) + let a:toSettings.comeFirst += a:fromSettings.comeFirst + let a:toSettings.comeLast = a:fromSettings.comeLast + a:toSettings.comeLast + call s:InitItemOrderList(a:toSettings) + call extend( a:toSettings.preValues, a:fromSettings.preValues, 'keep' ) + call extend( a:toSettings.defaultValues, a:fromSettings.defaultValues, 'keep' ) + call extend( a:toSettings.postFilters, a:fromSettings.postFilters, 'keep' ) + call extend( a:toSettings.variables, a:fromSettings.variables, 'keep' ) + for key in keys(a:fromSettings.mappings) + if !has_key(a:toSettings.mappings,key) + let a:toSettings.mappings[key] = { 'saver' : xpt#msvr#New(1), 'keys' : {} } + endif + for keystroke in keys(a:fromSettings.mappings[key].keys) + let a:toSettings.mappings[key].keys[keystroke] = a:fromSettings.mappings[key].keys[keystroke] + call xpt#msvr#Add( a:toSettings.mappings[ key ].saver, 'i', keystroke ) + endfor + endfor +endfunction +fun! s:ParseTemplateSetting(tmpl) + let x = b:xptemplateData + let setting = a:tmpl.setting + if type( get( setting, 'wraponly', 0 ) ) == type( '' ) + let setting.wrap = setting.wraponly + let setting.wraponly = 1 + endif + let setting.iswrap = has_key( setting, 'wrap' ) + let setting.wraponly = get( setting, 'wraponly', 0 ) + if has_key( setting, 'wrap' ) && setting.wrap is 1 + let setting.wrap = 'cursor' + endif + let x.renderContext.snipObject = a:tmpl + if has_key(setting, 'rawHint') + let hint = xpt#eval#Eval(setting.rawHint, [x.filetypes[x.snipFileScope.filetype].funcs, setting.variables, ]) + if type(hint) == type({}) + if get(hint, 'action', '') == 'pum' + let pum = get(hint, 'pum', []) + let setting.hint = join( pum[ : 3 ], ' ' ) . ' ..' + else + let setting.hint = get(hint, 'text', '') + endif + elseif type(hint) == type([]) + let setting.hint = join( hint[ : 3 ], ' ' ) . ' ..' + elseif type(hint) == type(1) + let setting.hint = string(hint) + elseif type(hint) == 2 + let setting.hint = string(hint) + else + let setting.hint = hint + endif + endif + call s:ParsePostQuoter(setting) +endfunction +fun! s:ParsePostQuoter(setting) + if !has_key( a:setting, 'postQuoter' ) || type(a:setting.postQuoter) == type({}) + return + endif + let quoters = split( a:setting.postQuoter, ',' ) + if len(quoters) < 2 + throw 'postQuoter must be separated with ","! :' . a:setting.postQuoter + endif + let a:setting.postQuoter = { 'start' : quoters[0], 'end' : quoters[1] } +endfunction +fun! s:AddCursorToComeLast(setting) + if match( a:setting.comeLast, 'cursor' ) < 0 + call add( a:setting.comeLast, 'cursor' ) + endif +endfunction +fun! s:InitItemOrderList(setting) + let a:setting.comeFirst = xpt#util#RemoveDuplicate(a:setting.comeFirst) + let a:setting.comeLast = xpt#util#RemoveDuplicate(a:setting.comeLast) +endfunction +fun! XPTreload() + try + call s:Crash() + catch /.*/ + endtry + try + unlet b:xptemplateData + catch /.*/ + endtry + e +endfunction +fun! XPTgetAllTemplates() + call s:GetContextFTObj() " force initializing + return copy(b:xptemplateData.filetypes[&filetype].allTemplates) +endfunction +fun! XPTemplatePreWrap(wrap) + let x = b:xptemplateData + let x.wrap = a:wrap + let x.wrap = substitute( x.wrap, '\V\n\$', '', '' ) + let x.wrap = xpt#indent#ToSpace(x.wrap) + if ( g:xptemplate_strip_left || x.wrap =~ '\n' ) && visualmode() ==# 'V' + let x.wrapStartPos = virtcol(".") + let indent = matchstr( x.wrap, '^\s*' ) + let indentNr = len(indent) + let x.wrap = x.wrap[indentNr :] + else + let x.wrapStartPos = col(".") + let indentNr = min( [ indent( line( "." ) ), virtcol('.') - 1 ] ) + endif + let maxIndent = indentNr + let x.wrap = substitute( x.wrap, '\V\n \{0,' . maxIndent . '\}', "\n", 'g' ) + let lines = split( x.wrap, '\V\\r\n\|\r\|\n', 1 ) + let maxlen = 0 + for l in lines + let maxlen = maxlen < len(l) ? len(l) : maxlen + endfor + let indentNr -= maxIndent + let x.wrap = { 'indent' : -indentNr, 'text':x.wrap, 'lines':lines, 'max':maxlen, 'curline':lines[ 0 ], } + let leftSpaces = s:ConcreteSpace() + if leftSpaces != '' + let x.wrapStartPos = len(leftSpaces) + 1 + endif + let leftSpaces = substitute( leftSpaces, ' ', ' ', 'g' ) + return leftSpaces . "\=XPTemplateDoWrap()\" +endfunction +fun! s:ConcreteSpace() + if getline( line( '.' ) ) =~ '^\s*$' + let pos = virtcol( '.' ) + normal! d0 + let leftSpaces = XPT#convertSpaceToTab( repeat( ' ', pos - 1 ) ) + else + let leftSpaces = '' + endif + return leftSpaces +endfunction +fun! XPTemplateDoWrap() + call XPTparseSnippets() + let x = b:xptemplateData + let ppr = s:Popup("", x.wrapStartPos, {}) + return ppr +endfunction +fun! XPTabbr(name) + let x = b:xptemplateData + let line = getline( "." ) + let pre = matchstr( line, '\v\S+$' ) + if pre == '' + return printf( "\=XPTtgr(%s, {'k':''})\", string( a:name ) ) + else + if has_key(x.abbrPrefix,a:name) + if has_key(x.abbrPrefix[a:name],pre) + return repeat( "\", len( pre ) ) . printf( "\=XPTtgr(%s, {'k':''})\", string( pre . a:name ) ) + else + return printf( "\=XPTtgr(%s, {'k':''})\", string( a:name ) ) + endif + else + return printf( "\=XPTtgr(%s, {'k':''})\", string( a:name ) ) + endif + endif +endfunction +fun! XPTtgr(snippetName,...) + let opt = a:0 == 1 ? a:1 : {} + if pumvisible() || XPPhasSession() + return XPPend() . "\=XPTtgr(" . string( a:snippetName ) . ', ' . string(opt) . ")\" + endif + if opt != {} + if get( opt, 'noliteral', 0 ) + let opt.nosyn = '\V\cstring\|comment' + elseif get( opt, 'literal', 0 ) + let opt.syn = '\V\cstring\|comment' + endif + if has_key( opt, 'nopum' ) + let opt.pum = !opt.nopum + endif + let syn = synIDattr( synID( line("."), col("."), 0 ), "name" ) + if has_key( opt, 'nosyn' ) && syn =~ opt.nosyn || has_key( opt, 'syn' ) && syn !~ opt.syn + return opt.k + endif + if has_key( opt, 'pum' ) + if opt.pum && !pumvisible() || !opt.pum && pumvisible() + return opt.k + endif + endif + endif + let action = XPTemplateStart( 0, { 'startPos' : [ line( "." ), col( "." ) ], 'tmplName' : a:snippetName } ) + return action +endfunction +fun! XPTemplateTrigger(snippetName,...) + let opt = a:0 == 1 ? a:1 : {} + return XPTtgr(a:snippetName,opt) +endfunction +fun! XPTparseSnippets() + let x = b:xptemplateData + for p in x.snippetToParse + call xpt#parser#ParseSnippet(p) + endfor + let x.snippetToParse = [] +endfunction +fun! XPTemplateStart(pos_unused_any_more,...) + let action = '' + call XPTparseSnippets() + let x = b:xptemplateData + let opt = a:0 == 1 ? a:1 : {} + if has_key( opt, 'tmplName' ) + let startColumn = opt.startPos[1] + let templateName = opt.tmplName + call cursor(opt.startPos) + return action . s:DoStart({ 'line':opt.startPos[0], 'col':startColumn, 'matched':templateName, 'data':{ 'ftScope' : s:GetContextFTObj() } } ) + endif + if get( opt, 'concrete', 0 ) == 0 + let opt.concrete = 1 + let leftSpaces = s:ConcreteSpace() + if leftSpaces != '' + let leftSpaces = substitute( leftSpaces, ' ', ' ', 'g' ) + return leftSpaces . "\=XPTemplateStart(0," . string( opt ) . ")\" + endif + endif + let keypressed = get( opt, 'k', g:xptemplate_key ) + let keypressed = substitute( keypressed, '\V++', '>', 'g' ) + if pumvisible() + if XPPhasSession() + return XPPend() . "\=XPTemplateStart(0," . string( opt ) . ")\" + else + if x.fallbacks == [] + if keypressed =~ g:xptemplate_fallback_condition + let x.fallbacks = [ [ "\XPTfallback", 'feed' ] ] + x.fallbacks + return XPT#fallback(x.fallbacks) + else + endif + else + if g:xptemplate_fallback =~? '\VXPTrawKey\|' || g:xptemplate_fallback ==? keypressed + return XPT#fallback(x.fallbacks) + else + let x.fallbacks = [ [ "\XPTfallback", 'feed' ] ] + x.fallbacks + return XPT#fallback(x.fallbacks) + endif + endif + endif + else + if XPPhasSession() + call XPPend() + endif + endif + let forcePum = get( opt, 'forcePum', g:xptemplate_always_show_pum ) + if x.renderContext.processing + let miniPrefix = g:xptemplate_minimal_prefix_nested + else + let miniPrefix = g:xptemplate_minimal_prefix + endif + let isFullMaatching = miniPrefix is 'full' + let cursorColumn = col(".") + let startLineNr = line(".") + let accEmp = 0 + if g:xptemplate_key ==? '' + let accEmp = 1 + endif + if has_key( opt, 'popupOnly' ) + let startColumn = cursorColumn + elseif x.wrapStartPos + let startColumn = x.wrapStartPos + else + let ftScope = s:GetContextFTObj() + let ftkeyword = ftScope.ftkeyword + let columnBeforeCursor = col( "." ) - 2 + if columnBeforeCursor >= 0 + let lineToCursor = getline(startLineNr)[0 : columnBeforeCursor] + else + let lineToCursor = '' + endif + let pre = ftScope.namePrefix + let n = split( lineToCursor, '\s', 1 )[ -1 ] + let snpt_name_ptn = '\V\^\(' . ftkeyword.regexp . '\|\k\)\k\*' + while n != '' && !has_key( pre, n ) + let shorter = substitute( n, snpt_name_ptn, '', '' ) + if shorter == n + let n = n[1 :] + else + let n = shorter + endif + endwhile + let matched = n + if !has_key( opt, 'popupOnly' ) + if !isFullMaatching && len(matched) < miniPrefix + let x.fallbacks = [ [ "\XPTfallback", 'feed' ] ] + x.fallbacks + return XPT#fallback(x.fallbacks) + endif + endif + let startColumn = col( "." ) - len( matched ) + if matched == '' + let [startLineNr, startColumn] = [line("."), col(".")] + endif + endif + let templateName = strpart(getline(startLineNr),startColumn - 1,cursorColumn - startColumn) + let action = action . s:Popup(templateName,startColumn, { 'acceptEmpty' : accEmp, 'forcePum':forcePum, 'matchWholeName':get( opt, 'popupOnly', 0 ) ? 0 : isFullMaatching } ) + return action +endfunction +fun! s:NewRenderContext(ftScope,tmplName) + let x = b:xptemplateData + if x.renderContext.processing + call xpt#buf#Pushrctx() + endif + let renderContext = xpt#rctx#New(x) + let x.renderContext = renderContext + let renderContext.phase = 'inited' + let renderContext.snipObject = s:GetContextFTObj().allTemplates[a:tmplName] + let renderContext.ftScope = a:ftScope + call s:ParseSnippet(renderContext.snipObject,renderContext.ftScope) + let renderContext.snipSetting = copy(renderContext.snipObject.setting) + let setting = renderContext.snipSetting + for k in [ 'variables', 'preValues', 'defaultValues' , 'ontypeFilters', 'postFilters', 'comeFirst', 'comeLast' ] + let setting[k] = copy(setting[k]) + endfor + return renderContext +endfunction +fun! s:ParseSnippet(snippet,ftScope) + if !a:snippet.parsed + let a:snippet.snipText = xpt#indent#IndentToTabStr(a:snippet.snipText) + call s:ParseInclusion(a:ftScope.allTemplates,a:snippet) + let a:snippet.snipText = s:ParseQuotedPostFilter(a:snippet) + let a:snippet.snipText = s:ParseRepetition(a:snippet) + let a:snippet.parsed = 1 + endif +endfunction +fun! s:DoStart(sess) + let x = b:xptemplateData + if !has_key(s:GetContextFTObj().allTemplates,a:sess.matched) + return '' + endif + let b:__xpt_snip_sess__ = a:sess + return "\" . s:RenderSnippet() +endfunction +fun! s:RenderSnippet() + let x = b:xptemplateData + let sess = b:__xpt_snip_sess__ + let x.savedReg = @" + let [lineNr,column] = [sess.line,sess.col] + let cursorColumn = col(".") + let tmplname = sess.matched + let ctx = s:NewRenderContext(sess.data.ftScope,tmplname) + call s:BuildSnippet([lineNr,column],[lineNr,cursorColumn]) + let ctx.phase = 'rendered' + let ctx.processing = 1 + call s:CallPlugin( 'render', 'after' ) + if empty(x.stack) + call s:SaveNavKey() + call s:ApplyMap() + endif + let x.wrap = '' + let x.wrapStartPos = 0 + let action = s:GotoNextItem() + call s:CallPlugin( 'start', 'after' ) + return action +endfunction +fun! s:SaveNavKey() + let x = b:xptemplateData + let navKey = g:xptemplate_nav_next + let mapInfo = xpt#msvr#MapInfo( navKey, 'i' ) + if mapInfo.cont == '' + let x.canNavFallback = 0 + exe 'inoremap XPTnavFallback ' navKey + else + let x.canNavFallback = 1 + let mapInfo.key = 'XPTnavFallback' + exe xpt#msvr#MapCommand(mapInfo) + endif +endfunction +fun! s:FinishRendering(...) + let x = b:xptemplateData + let renderContext = x.renderContext + let xp = renderContext.snipObject.ptn + let isCursor = get( renderContext.item, 'name', 0 ) is 'cursor' + call XPMremoveMarkStartWith(renderContext.markNamePre) + if empty(x.stack) + let x.fallbacks = [] + let renderContext.processing = 0 + let renderContext.phase = 'finished' + call s:ClearMap() + call XPMflushWithHistory() + let @" = x.savedReg + call s:CallPlugin( 'finishAll', 'after' ) + else + call xpt#buf#Poprctx() + call s:CallPlugin( 'finishSnippet', 'after' ) + let renderContext = x.renderContext + endif + return '' +endfunction +fun! s:Popup(pref,coln,opt) + let x = b:xptemplateData + let renderContext = x.renderContext + if renderContext.phase == 'finished' + let renderContext.phase = 'popup' + endif + let cmpl=[] + let cmpl2 = [] + let ftScope = s:GetContextFTObj() + if ftScope == {} + return '' + endif + let forcePum = get( a:opt, 'forcePum', g:xptemplate_always_show_pum ) + let snipDict = ftScope.allTemplates + let synNames = s:SynNameStack(line("."), a:coln) + if has_key(snipDict,a:pref) && !forcePum + let snipObj = snipDict[a:pref] + if s:IfSnippetShow(snipObj,synNames) + return s:DoStart({ 'line':line( "." ), 'col':a:coln, 'matched':a:pref, 'data':{ 'ftScope' : s:GetContextFTObj() } } ) + endif + endif + for [key,snipObj] in items(snipDict) + if !s:IfSnippetShow(snipObj,synNames) + continue + endif + let hint = get( snipObj.setting, 'hint', '' ) + if key =~# '\V\^\[A-Z]' + call add( cmpl2, {'word' : key, 'menu' : hint } ) + else + call add( cmpl, {'word' : key, 'menu' : hint } ) + endif + endfor + call sort(cmpl) + call sort(cmpl2) + let cmpl = cmpl + cmpl2 + let pumsess = XPPopupNew(s:pumCB, { 'ftScope' : ftScope }, cmpl) + call pumsess.SetAcceptEmpty( get( a:opt, 'acceptEmpty', 0 ) ) + call pumsess.SetMatchWholeName( get( a:opt, 'matchWholeName', 0 ) ) + call pumsess.SetOption({ 'matchPrefix':! forcePum, 'tabNav':g:xptemplate_pum_tab_nav } ) + return pumsess.popup(a:coln,{}) +endfunction +fun! s:IfSnippetShow(snipObj,synNames) + let x = b:xptemplateData + let snipObj = a:snipObj + let synNames = a:synNames + if snipObj.setting.wraponly && x.wrap is '' || !snipObj.setting.iswrap && x.wrap isnot '' + return 0 + endif + if has_key(snipObj.setting, "syn") && snipObj.setting.syn != '' && match(synNames, '\c' . snipObj.setting.syn) == -1 + return 0 + endif + if get( snipObj.setting, 'hidden', 0 ) == 1 + return 0 + endif + return 1 +endfunction +fun! s:AddIndent(text,nIndent) + let baseIndent = repeat( " ", a:nIndent ) + return substitute(a:text, '\n', '&' . baseIndent, 'g') +endfunction +fun! s:ParseRepetition(snipObject) + let tmplObj = a:snipObject + let xp = a:snipObject.ptn + let tmpl = a:snipObject.snipText + let bef = "" + let rest = "" + let rp = xp.lft . s:repetitionPattern . xp.rt + let repPtn = '\V\(' . rp . '\)\_.\{-}' . '\1' + let repContPtn = '\V\(' . rp . '\)\zs\_.\{-}' . '\1' + let stack = [] + let from = 0 + while 1 + let startOfMatch = match(tmpl,repPtn,from) + if startOfMatch == -1 + break + endif + let stack += [startOfMatch] + let from = startOfMatch + 1 + endwhile + while stack != [] + let matchpos = stack[-1] + unlet stack[-1] + if matchpos == 0 + let bef = '' + else + let bef = tmpl[: matchpos-1] + endif + let rest = tmpl[matchpos :] + let indentNr = s:GetIndentBeforeEdge(tmplObj,bef) + let repeatPart = matchstr(rest,repContPtn) + let repeatPart = 'BuildIfNoChange(' . string( repeatPart ) . ')' + let symbol = matchstr(rest,rp) + let name = substitute( symbol, '\V' . xp.lft . '\|' . xp.rt, '', 'g' ) + let tmplObj.setting.postFilters[name] = xpt#flt#New(-indentNr,repeatPart) + let bef .= symbol + let rest = substitute(rest, repPtn, '', '') + let tmpl = bef . rest + endwhile + return tmpl +endfunction +fun! s:GetIndentBeforeEdge(tmplObj,textBeforeLeftMark) + let xp = a:tmplObj.ptn + if a:textBeforeLeftMark =~ '\V' . xp.lft . '\_[^' . xp.r . ']\*\%$' + let tmpBef = substitute( a:textBeforeLeftMark, '\V' . xp.lft . '\_[^' . xp.r . ']\*\%$', '', '' ) + let indentOfFirstLine = matchstr( tmpBef, '.*\n\zs\s*' ) + else + let indentOfFirstLine = matchstr( a:textBeforeLeftMark, '.*\n\zs\s*' ) + endif + return len(indentOfFirstLine) +endfunction +fun! s:ParseQuotedPostFilter(tmplObj) + let xp = a:tmplObj.ptn + let postFilters = a:tmplObj.setting.postFilters + let quoter = a:tmplObj.setting.postQuoter + let flagPattern = '\V\[!]\$' + let startPattern = '\V\_.\{-}\zs' . xp.lft . '\_[^' . xp.r . ']\*' . quoter.start . xp.rt + let endPattern = '\V' . xp.lft . quoter.end . xp.rt + let snip = a:tmplObj.snipText + let stack = [] + let startPos = 0 + while startPos != -1 + let startPos = match(snip,startPattern,startPos) + if startPos != -1 + call add(stack,startPos) + let startPos += len(matchstr(snip,startPattern,startPos)) + endif + endwhile + while 1 + if empty(stack) + break + endif + let startPos = remove(stack,-1) + let endPos = match(snip,endPattern,startPos + 1) + if endPos == -1 + break + endif + let startText = matchstr(snip,startPattern,startPos) + let endText = matchstr(snip,endPattern,endPos) + let name = startText[1 : -1 - len(quoter.start) - 1] + let flag = matchstr(name,flagPattern) + if flag != '' + let name = name[: -1 - len(flag)] + endif + if name =~ xp.lft + let name = matchstr( name, '\V' . xp.lft . '\zs\_.\*' ) + if name =~ xp.lft + let name = matchstr( name, '\V\_.\*\ze' . xp.lft ) + endif + endif + let plainPostFilter = snip[startPos + len(startText) : endPos - 1] + let firstLineIndentNr = s:GetIndentBeforeEdge(a:tmplObj,snip[: startPos - 1]) + if flag == '!' + let plainPostFilter = 'BuildIfChanged(' . string( plainPostFilter ) . ')' + else + let plainPostFilter = 'BuildIfNoChange(' . string( plainPostFilter ) . ')' + endif + let postFilters[name] = xpt#flt#New(-firstLineIndentNr,plainPostFilter) + let snip = snip[: startPos + len(startText) - 1 - 1 - len(quoter.start) - len(flag)] . snip[endPos + len(endText) - 1 :] + endwhile + return snip +endfunction +fun! s:BuildSnippet(nameStartPosition,nameEndPosition) + call getchar(0) + let x = b:xptemplateData + let ctx = b:xptemplateData.renderContext + let xp = ctx.snipObject.ptn + let curline = getline(a:nameStartPosition[0]) + let nIndent = -1 + if len( matchstr( curline, '\V\^\s\*' ) ) == a:nameStartPosition[ 1 ] - 1 + if has_key(ctx.oriIndentkeys,ctx.snipObject.name) || has_key(ctx.leadingCharToReindent,ctx.snipObject.name) + if a:nameStartPosition == a:nameEndPosition + call XPreplace(a:nameStartPosition,a:nameEndPosition, ctx.snipObject.name, { 'doJobs' : 0 } ) + endif + let nIndent = XPT#getPreferedIndentNr(a:nameStartPosition[0]) + if a:nameStartPosition == a:nameEndPosition + call XPreplace(a:nameStartPosition,[a:nameEndPosition[0], a:nameEndPosition[1] + len(ctx.snipObject.name)], '', { 'doJobs' : 0 } ) + endif + endif + endif + let ctx.phase = 'rendering' + if ctx.snipSetting.iswrap && x.wrap isnot '' + let setting = ctx.snipSetting + let setting.preValues[ setting.wrap ] = xpt#flt#New( 0, 'GetWrappedText()' ) + let setting.defaultValues[ setting.wrap ] = xpt#flt#New( 0, "Next()", 1 ) + call insert(setting.comeFirst,setting.wrap,0) + endif + if x.wrap isnot '' + let ctx.wrap = copy(x.wrap) + endif + let snippetText = ctx.snipObject.snipText + let currentNIndent = XPT#getIndentNr(a:nameStartPosition[0],a:nameStartPosition[1]) + let nIndentToAdd = currentNIndent + if nIndent >= 0 + if nIndent > currentNIndent + let snippetText = repeat( ' ', nIndent - currentNIndent ) . snippetText + let nIndentToAdd = nIndent + elseif nIndent < currentNIndent + let snippetText = repeat( ' ', nIndent ) . snippetText + let nIndentToAdd = nIndent + let a:nameStartPosition[1] = 1 + endif + endif + let snippetText = xpt#indent#ToActualIndentStr(snippetText,nIndentToAdd) + call XPMupdate() + call XPMadd( ctx.marks.tmpl.start, a:nameStartPosition, g:XPMpreferLeft, '\Ve\$' ) + call XPMadd( ctx.marks.tmpl.end, a:nameEndPosition, g:XPMpreferRight, '\Ve\$' ) + call xpt#settingswitch#Switch(b:xptemplateData.settingWrap) + call XPMsetLikelyBetween(ctx.marks.tmpl.start,ctx.marks.tmpl.end) + call XPreplace(a:nameStartPosition,a:nameEndPosition,snippetText) + let ctx.firstList = [] + let ctx.itemList = [] + let ctx.lastList = [] + if 0 > s:BuildPlaceHolders(ctx.marks.tmpl) + return s:Crash() + endif + let ctx = empty(x.stack) ? x.renderContext : x.stack[0] + let rg = XPMposList(ctx.marks.tmpl.start,ctx.marks.tmpl.end) + exe 'silent! ' . rg[0][0] . ',' . rg[1][0] . 'foldopen!' +endfunction +fun! s:GetNameInfo(end) + let x = b:xptemplateData + let xp = x.renderContext.snipObject.ptn + if getline(".")[col(".") - 1] != xp.l + throw "cursor is not at item start position:".string(getpos(".")[1:2]) + endif + let endn = a:end[0] * 10000 + a:end[1] + let l0 = getpos(".")[1:2] + let r0 = searchpos(xp.rt, 'nW') + let r0n = r0[0] * 10000 + r0[1] + if r0 == [0,0] || r0n >= endn + return [[0,0],[0,0],[0,0],[0,0]] + endif + let l1 = searchpos(xp.lft, 'W') + let l2 = searchpos(xp.lft, 'W') + let l1n = l1[0] * 10000 + l1[1] + let l2n = l2[0] * 10000 + l2[1] + if l1n > r0n || l1n >= endn + let l1 = [0,0] + endif + if l2n > r0n || l1n >= endn + let l2 = [0,0] + endif + if l1 != [0,0] && l2 != [0,0] + return [l0,l1,l2,r0] + elseif l1 == [0,0] && l2 == [0,0] + return [l0,l0,r0,r0] + else + return [l0,l1,r0,r0] + endif +endfunction +fun! s:GetValueInfo(end) + let x = b:xptemplateData + let xp = x.renderContext.snipObject.ptn + if getline(".")[col(".") - 1] != xp.r + throw "cursor is not at item end position:".string(getpos(".")[1:2]) + endif + let nEnd = a:end[0] * 10000 + a:end[1] + let r0 = [ line( "." ), col( "." ) ] + let l0 = searchpos(xp.lft, 'nW', a:end[0]) + if l0 == [0,0] + let l0n = nEnd + else + let l0n = min([l0[0] * 10000 + l0[1],nEnd]) + endif + let r1 = searchpos(xp.rt, 'W', a:end[0]) + if r1 == [0,0] || r1[0] * 10000 + r1[1] >= l0n + return [r0,copy(r0),copy(r0)] + endif + let r2 = searchpos(xp.rt, 'W', a:end[0]) + if r2 == [0,0] || r2[0] * 10000 + r2[1] >= l0n + return [r0,r1,copy(r1)] + endif + return [r0,r1,r2] +endfunction +fun! s:TextWithoutIndent(posRange) + let [s,e] = a:posRange + let text = xpt#util#TextBetween([s,e]) + let text = xpt#indent#ToSpace(text) + let nIndent = xpt#indent#IndentBefore(s) + let text = xpt#indent#RemoveIndentStr(text,nIndent) + return text +endfunction +fun! s:CreatePlaceHolder(ctx,nameInfo,valueInfo) + let xp = a:ctx.snipObject.ptn + let toescape = xp.l . xp.r + let leftEdge = s:TextWithoutIndent(a:nameInfo[0 : 1]) + let name = s:TextWithoutIndent(a:nameInfo[1 : 2]) + let rightEdge = s:TextWithoutIndent(a:nameInfo[2 : 3]) + let [leftEdge,name,rightEdge] = [leftEdge[1 :],name[1 :],rightEdge[1 :]] + let leftEdge = xpt#util#UnescapeChar(leftEdge,toescape) + let name = xpt#util#UnescapeChar(name,toescape) + let rightEdge = xpt#util#UnescapeChar(rightEdge,toescape) + let fullname = leftEdge . name . rightEdge + let incPattern = '\V\^:\zs\.\*\ze:\$\|\^Include:\zs\.\*\$' + if name =~ incPattern + return { 'include' : matchstr( name, incPattern ) } + endif + if name =~ '\V' . xp.item_var . '\|' . xp.item_func + return { 'value' : fullname, 'leftEdge':leftEdge, 'name':name, 'rightEdge':rightEdge, } + endif + let placeHolder = { 'name':name, 'isKey':(a:nameInfo[0] != a:nameInfo[1]), } + if placeHolder.isKey + call extend(placeHolder,{ 'leftEdge':leftEdge, 'rightEdge':rightEdge, 'fullname':fullname, }, 'force' ) + endif + if a:valueInfo[1] != a:valueInfo[0] + let isPostFilter = a:valueInfo[1][0] == a:valueInfo[2][0] && a:valueInfo[1][1] + 1 == a:valueInfo[2][1] + let val = xpt#util#TextBetween(a:valueInfo[0 : 1]) + let val = val[1:] + let val = xpt#util#UnescapeChar(val,xp.l . xp.r) + let nIndent = indent(a:valueInfo[0][0]) + if isPostFilter + if name =~ s:expandablePattern + let val = xpt#util#UnescapeChar( val, '{$( ' ) + let val = 'BuildIfNoChange(' . string( val ) . ')' + endif + let placeHolder.postFilter = xpt#flt#New(-nIndent,val) + else + let placeHolder.ontimeFilter = xpt#flt#New(-nIndent,val) + endif + endif + return placeHolder +endfunction +fun! s:BuildMarksOfPlaceHolder(item,placeHolder,nameInfo,valueInfo) + let renderContext = b:xptemplateData.renderContext + let [item,placeHolder,nameInfo,valueInfo] = [a:item,a:placeHolder,a:nameInfo,a:valueInfo] + if item.name == '' + let markName = '``' . s:anonymouseIndex + let s:anonymouseIndex += 1 + else + let markName = item.name . s:buildingSeqNr . '`' . ( placeHolder.isKey ? 'k' : (len(item.placeHolders)-1) ) + endif + let markPre = renderContext.markNamePre . markName . '`' + call extend(placeHolder,{ 'mark':{ 'start':markPre . 'os', 'end':markPre . 'oe', }, }, 'force' ) + if placeHolder.isKey + call extend(placeHolder,{ 'editMark':{ 'start':markPre . 'is', 'end':markPre . 'ie', }, }, 'force' ) + let placeHolder.innerMarks = placeHolder.editMark + else + let placeHolder.innerMarks = placeHolder.mark + endif + let valueInfo[2][1] += 1 + if placeHolder.isKey + let shift = (nameInfo[0] != nameInfo[1] && nameInfo[0][0] == nameInfo[1][0]) + let nameInfo[1][1] -= shift + let shift = (nameInfo[1][0] == nameInfo[2][0]) * (shift + 1) + let nameInfo[2][1] -= shift + if nameInfo[2] != nameInfo[3] + let shift = (nameInfo[2][0] == nameInfo[3][0]) * (shift + 1) + let nameInfo[3][1] -= shift + endif + call XPreplaceInternal(nameInfo[0],valueInfo[2],placeHolder.fullname) + else + if nameInfo[0][0] == nameInfo[3][0] + let nameInfo[3][1] -= 1 + endif + call XPreplaceInternal(nameInfo[0],valueInfo[2],placeHolder.name) + endif + call XPMadd( placeHolder.mark.start, nameInfo[0], 'l' ) + if placeHolder.isKey + call XPMadd( placeHolder.editMark.start, nameInfo[1], 'l' ) + call XPMadd( placeHolder.editMark.end, nameInfo[2], 'r' ) + endif + call XPMadd( placeHolder.mark.end, nameInfo[3], 'r' ) +endfunction +fun! s:AddItemToRenderContext(ctx,item) + let [ctx,item] = [a:ctx,a:item] + let exist = has_key(ctx.itemDict,item.name) + if item.name != '' + let ctx.itemDict[item.name] = item + endif + if exist + return + endif + if ctx.phase != 'rendering' + if ! s:AddToOrderList(ctx.firstList,item) + call add(ctx.firstList,item) + endif + call filter( ctx.itemList, 'v:val isnot item' ) + return + endif + if item.name == '' + call add(ctx.itemList,item) + elseif s:AddToOrderList(ctx.firstList,item) || s:AddToOrderList(ctx.lastList,item) + return + else + call add(ctx.itemList,item) + endif +endfunction +fun! s:AddToOrderList(list,item) + let i = index(a:list,a:item.name) + if i != -1 + let a:list[i] = a:item + return 1 + else + return 0 + endif +endfunction +fun! s:BuildPlaceHolders(markRange) + let s:buildingSeqNr += 1 + let rc = 0 + let x = b:xptemplateData + let renderContext = b:xptemplateData.renderContext + let snipObj = renderContext.snipObject + let setting = snipObj.setting + let xp = renderContext.snipObject.ptn + let renderContext.itemDict = {} + let current = [renderContext.item,renderContext.leadingPlaceHolder] + let renderContext.action = 'build' + if renderContext.firstList == [] + let renderContext.firstList = copy(renderContext.snipSetting.comeFirst) + endif + if renderContext.lastList == [] + let renderContext.lastList = copy(renderContext.snipSetting.comeLast) + endif + let renderContext.buildingMarkRange = copy(a:markRange) + call XPRstartSession() + call XPMgoto(a:markRange.start) + let i = 0 + while i < 10000 + let i += 1 + let markPos = s:NextLeftMark(a:markRange) + let end = XPMpos(a:markRange.end) + let nEnd = end[0] * 10000 + end[1] + if markPos == [0,0] || markPos[0] * 10000 + markPos[1] >= nEnd + break + endif + let nameInfo = s:GetNameInfo(end) + if nameInfo[0] == [0,0] + break + endif + call cursor(nameInfo[3]) + let valueInfo = s:GetValueInfo(end) + if valueInfo[0] == [0,0] + break + endif + let placeHolder = s:CreatePlaceHolder(renderContext,nameInfo,valueInfo) + let rc = 1 + if renderContext.wrap != {} && setting.iswrap && get( placeHolder, 'name', 0 ) is setting.wrap && get( placeHolder, 'isKey', 0 ) + let n = len(renderContext.wrap.lines) - 1 + let indent = repeat( ' ', virtcol( nameInfo[ 0 ] ) - 1 ) + let line = "\n" . indent . xp.l . placeHolder.leftEdge . xp.l . 'GetWrappedText()' . xp.l . placeHolder.rightEdge . xp.r + let lines = repeat(line,n) + let pos = copy(valueInfo[-1]) + let pos[1] += 1 + call XPreplaceInternal(pos,pos,lines) + endif + if has_key( placeHolder, 'include' ) + call s:ApplyBuildTimeInclusion(placeHolder,nameInfo,valueInfo) + call cursor(nameInfo[0]) + elseif has_key( placeHolder, 'value' ) + let to_build = s:ApplyInstantValue(placeHolder,nameInfo,valueInfo) + if to_build + call cursor(nameInfo[0]) + endif + else + let item = s:BuildItemForPlaceHolder(placeHolder) + call s:BuildMarksOfPlaceHolder(item,placeHolder,nameInfo,valueInfo) + let renderContext.item = item + let renderContext.leadingPlaceHolder = item.keyPH == s:nullDict ? placeHolder : item.keyPH + call s:EvaluateEdge(xp,item,placeHolder) + call s:ApplyPreValues(placeHolder) + call xpt#rctx#AddDefaultPHFilters(renderContext,placeHolder) + call cursor(XPMpos(placeHolder.mark.end)) + endif + endwhile + let renderContext.itemList = renderContext.firstList + renderContext.itemList + renderContext.lastList + call filter( renderContext.itemList, 'type(v:val) != 1' ) + let renderContext.firstList = [] + let renderContext.lastList = [] + let end = XPMpos(a:markRange.end) + call cursor(end) + let [renderContext.item,renderContext.leadingPlaceHolder] = current + let renderContext.action = '' + call XPRendSession() + return rc +endfunction +fun! s:NextLeftMark(markRange) + let x = b:xptemplateData + let renderContext = x.renderContext + let xp = renderContext.snipObject.ptn + let curline = getline( line(".") ) + let c = col(".") + if len(curline) > 1 && curline[c - 1] == xp.l + return [ line("."), c ] + endif + while 1 + let end = XPMpos(a:markRange.end) + let nEnd = end[0] * 10000 + end[1] + let ptn = xpt#util#CharsPattern(xp.l . xp.r) + let markPos = searchpos( '\V\\\*' . ptn, 'cW' ) + if markPos == [0,0] || markPos[0] * 10000 + markPos[1] >= nEnd + break + endif + let content = getline(markPos[0])[markPos[1] - 1 :] + let char = matchstr( content, '\V' . ptn ) + let content = matchstr( content, '^\\*' ) + let newEsc = repeat( '\', len( content ) / 2 ) + call XPreplaceInternal( markPos, [ markPos[0], markPos[1] + len( content ) ], newEsc, { 'doPostJob' : 1 } ) + if len(content) % 2 == 0 && char == xp.l + call cursor([markPos[0],markPos[1] + len(newEsc)]) + break + endif + call cursor([markPos[0],markPos[1] + len(newEsc) + 1]) + endwhile + return markPos +endfunction +fun! s:EvaluateEdge(xp,item,ph) + if !a:ph.isKey + return + endif + let eval_ptn = '\V' . a:xp.item_var . '\|' . a:xp.item_func + if a:ph.leftEdge =~ eval_ptn + let a:ph.leftEdge = s:EvalAsFilter(a:ph.leftEdge, XPMpos(a:ph.mark.start)) + call XPreplaceByMarkInternal(a:ph.mark.start,a:ph.editMark.start, a:ph.leftEdge) + endif + if a:ph.rightEdge =~ eval_ptn + let a:ph.rightEdge = s:EvalAsFilter(a:ph.rightEdge, XPMpos(a:ph.editMark.end)) + call XPreplaceByMarkInternal(a:ph.editMark.end,a:ph.mark.end, a:ph.rightEdge) + endif + let a:ph.fullname = a:ph.leftEdge . a:item.name . a:ph.rightEdge + let a:item.fullname = a:ph.fullname +endfunction +fun! s:EvalAsFilter(raw,start_pos) + let x = b:xptemplateData + let rctx = x.renderContext + let flt = xpt#flt#New(0,a:raw) + let flt_rst = s:EvalFilter(flt,[ rctx.ftScope.funcs, rctx.snipSetting.variables, ]) + return s:IndentFilterText(flt_rst,a:start_pos) +endfunction +fun! s:IndentFilterText(flt_rst,start) + let lines = split( a:flt_rst.text, '\n', 1 ) + if get(a:flt_rst, 'parseIndent', 1) + call xpt#indent#IndentToTab(lines) + endif + let indent = s:IndentAt(a:start,a:flt_rst) + call xpt#indent#ToActualIndent(lines,indent) + return join(lines, "\n") +endfunction +fun! s:ApplyBuildTimeInclusion(placeHolder,nameInfo,valueInfo) + let renderContext = b:xptemplateData.renderContext + let tmplDict = renderContext.ftScope.allTemplates + let placeHolder = a:placeHolder + let nameInfo = a:nameInfo + let valueInfo = a:valueInfo + let [incName,params] = s:ParseInclusionStatement(renderContext.snipObject,placeHolder.include) + if !has_key(tmplDict,incName) + call XPT#warn( "unknown inclusion :" . incName ) + return + endif + let incTmplObject = tmplDict[incName] + call s:ParseSnippet(incTmplObject,renderContext.ftScope) + call s:MergeSetting(renderContext.snipSetting,incTmplObject.setting) + let incSnip = s:ReplacePHInSubSnip(renderContext.snipObject,incTmplObject,params) + let incSnip = s:AddIndent(incSnip,nameInfo[0][1]-1) + let valueInfo[-1][1] += 1 + call XPreplaceInternal(nameInfo[0],valueInfo[-1],incSnip) +endfunction +fun! s:ApplyInstantValue(placeHolder,nameInfo,valueInfo) + let rctx = b:xptemplateData.renderContext + let ph = a:placeHolder + let nameInfo = a:nameInfo + let valueInfo = a:valueInfo + let start = a:nameInfo[0] + let combined_flt_rst = {} + let text = '' + let to_build = 0 + for k in [ 'leftEdge', 'name', 'rightEdge' ] + if ph[k] != '' + let flt = xpt#flt#New(0,ph[k]) + let flt_rst = s:EvalFilter(flt,[ rctx.ftScope.funcs, rctx.snipSetting.variables, ]) + if flt_rst.rc == 0 + continue + endif + let text .= get( flt_rst, 'text', '' ) + if get(flt_rst, 'nIndent', 0) != 0 + let combined_flt_rst.nIndent = flt_rst.nIndent + endif + if flt_rst.action == 'build' + let to_build = 1 + endif + endif + endfor + let valueInfo[-1][1] += 1 + let combined_flt_rst.text = text + let text = s:IndentFilterText(combined_flt_rst,start) + call XPreplaceInternal( nameInfo[0], valueInfo[-1], text, { 'doJobs' : 1 } ) + return to_build +endfunction +fun! s:IndentAt(start,flt_rst) + let filter_indent_offset = get(a:flt_rst, 'nIndent', 0) + let indent = xpt#indent#IndentBefore(a:start) + let indent += filter_indent_offset + let indent = max([0,indent]) + return indent +endfunction +fun! s:ApplyPreValues(placeHolder) + let rctx = b:xptemplateData.renderContext + let setting = rctx.snipSetting + let name = a:placeHolder.name + let preValue = name == '' ? g:EmptyFilter : get(setting.preValues,name,g:EmptyFilter) + if preValue is g:EmptyFilter + let preValue = get( a:placeHolder, 'ontimeFilter', get(setting.defaultValues,name,g:EmptyFilter)) + endif + if preValue is g:EmptyFilter + return + endif + let flt_rst = s:EvalFilter(preValue,[ rctx.ftScope.funcs, rctx.snipSetting.variables, ]) + if flt_rst.rc is 0 || ! has_key(flt_rst, 'text') + return + endif + let mark_name = s:GetPHReplacingMarkName(flt_rst) + let marks = a:placeHolder[mark_name] + let s = XPMpos(marks.start) + let text = s:IndentFilterText(flt_rst,s) + try + call XPreplaceByMarkInternal(marks.start,marks.end,text) + catch /.*/ + call s:Crash( v:exception . " while update preset text" ) + endtry +endfunction +fun! s:BuildItemForPlaceHolder(placeHolder) + let renderContext = b:xptemplateData.renderContext + if has_key(renderContext.itemDict,a:placeHolder.name) + let item = renderContext.itemDict[a:placeHolder.name] + else + let item = { 'name' : a:placeHolder.name, 'fullname':a:placeHolder.name, 'initValue':a:placeHolder.name, 'processed':0, 'placeHolders':[], 'keyPH':s:nullDict, 'behavior':{}, } + endif + let inPrevBuild = (index(renderContext.itemList,item) >= 0) + call s:AddItemToRenderContext(renderContext,item) + if a:placeHolder.isKey + let item.keyPH = a:placeHolder + let item.fullname = a:placeHolder.fullname + else + if renderContext.phase != 'rendering' && inPrevBuild + call insert(item.placeHolders,a:placeHolder) + else + call add(item.placeHolders,a:placeHolder) + endif + endif + return item +endfunction +fun! s:XPTvisual() + if &selectmode =~ 'cmd' + normal! v\ + else + normal! v + endif +endfunction +fun! s:CleanupCurrentItem() + let renderContext = b:xptemplateData.renderContext + call s:ClearItemMapping(renderContext) +endfunction +fun! s:ShiftBackward() + let renderContext = b:xptemplateData.renderContext + if empty(renderContext.history) + return '' + endif + call s:CleanupCurrentItem() + let his = remove(renderContext.history,-1) + call s:PushBackItem() + let renderContext.item = his.item + let renderContext.leadingPlaceHolder = his.leadingPlaceHolder + let leader = renderContext.leadingPlaceHolder + call XPMsetLikelyBetween(leader.mark.start,leader.mark.end) + return s:SelectCurrent() +endfunction +fun! s:PushBackItem() + let renderContext = b:xptemplateData.renderContext + let item = renderContext.item + if !renderContext.leadingPlaceHolder.isKey + call insert(item.placeHolders,renderContext.leadingPlaceHolder,0) + endif + call insert(renderContext.itemList,item,0) + let item.processed = 1 +endfunction +fun! s:ShiftForward(action) + let x = b:xptemplateData + let renderContext = x.renderContext + if pumvisible() + if XPPhasSession() + return XPPend() . "\=" . s:sid . 'ShiftForward(' . string( a:action ) . ")\" + else + if g:xptemplate_move_even_with_pum + return s:close_pum . "\" . '=XPTforceForward(' . string( a:action ) . ")\" + else + if x.canNavFallback + let x.fallbacks = [ [ "\XPTnavFallback", 'feed' ], [ "\=XPTforceForward(" . string( a:action ) . ")\", 'expr' ], ] + return XPT#fallback(x.fallbacks) + else + return XPPend() . "\=" . s:sid . 'ShiftForward(' . string( a:action ) . ")\" + endif + endif + endif + else + if XPPhasSession() + call XPPend() + endif + return s:close_pum . "\" . '=XPTforceForward(' . string( a:action ) . ")\" + endif +endfunction +fun! XPTforceForward(action) + call XPMupdate('force') + if s:XPTupdate() < 0 + return '' + endif + if s:FinishCurrent(a:action) < 0 + return '' + endif + let postaction = s:GotoNextItem() + return postaction +endfunction +fun! s:FinishCurrent(action) + let renderContext = b:xptemplateData.renderContext + let marks = renderContext.leadingPlaceHolder.mark + call s:CleanupCurrentItem() + let rc = s:XPTupdate() + if rc == -1 + return -1 + endif + let name = renderContext.item.name + if a:action ==# 'clear' + call XPreplace(XPMpos( marks.start ),XPMpos( marks.end ), '') + endif + let [post,built] = s:ApplyPostFilter() + if name != '' + let renderContext.namedStep[name] = post + endif + if built || a:action ==# 'clear' + call s:RemoveCurrentMarks() + else + let renderContext.history += [{ 'item':renderContext.item, 'leadingPlaceHolder':renderContext.leadingPlaceHolder } ] + endif + return 0 +endfunction +fun! s:RemoveCurrentMarks() + let renderContext = b:xptemplateData.renderContext + let item = renderContext.item + let leader = renderContext.leadingPlaceHolder + call XPMremoveStartEnd(leader.mark) + if has_key( leader, 'editMark' ) + call XPMremoveStartEnd(leader.editMark) + endif + for ph in item.placeHolders + call XPMremoveStartEnd(ph.mark) + endfor +endfunction +fun! s:ApplyPostFilter() + let rctx = b:xptemplateData.renderContext + let rctx.activeLeaderMarks = 'mark' + let posts = rctx.snipSetting.postFilters + let name = rctx.item.name + let leader = rctx.leadingPlaceHolder + let marks = rctx.leadingPlaceHolder[rctx.activeLeaderMarks] + let rctx.phase = 'post' + let typed = xpt#util#TextBetween(XPMposStartEnd(marks)) + if rctx.item.name != '' + let rctx.namedStep[rctx.item.name] = typed + endif + let groupPostFilter = get(posts,name,g:EmptyFilter) + let leaderPostFilter = get( leader, 'postFilter', g:EmptyFilter ) + let filter = groupPostFilter is g:EmptyFilter ? leaderPostFilter : groupPostFilter + let hadBuilt = 0 + if filter isnot g:EmptyFilter + let flt_rst = s:EvalPostFilter(filter,typed,leader) + let mark_name = s:GetPHReplacingMarkName(flt_rst) + let marks = rctx.leadingPlaceHolder[mark_name] + let ori_flt_rst = copy(flt_rst) + call XPMsetLikelyBetween(marks.start,marks.end) + if flt_rst.rc != 0 + if has_key( flt_rst, 'text' ) + if flt_rst.text !=# typed + let [start,end] = XPMposStartEnd(marks) + if mark_name == 'mark' + call s:RemoveEditMark(leader) + endif + call xpt#settingswitch#Switch(b:xptemplateData.settingWrap) + let text = s:IndentFilterText(flt_rst,start) + call XPreplace(start,end,text) + endif + endif + if flt_rst.action == 'build' + let rctx.firstList = [] + let buildrc = s:BuildPlaceHolders(marks) + if 0 > buildrc + return [s:Crash(),1] + endif + let hadBuilt = 0 < buildrc + let rctx.phase = 'post' + endif + endif + endif + if groupPostFilter is g:EmptyFilter + call s:UpdateFollowingPlaceHoldersWith(typed,{}) + return [typed,hadBuilt] + else + call s:UpdateFollowingPlaceHoldersWith( typed, { 'post' : ori_flt_rst } ) + if hadBuilt + return [typed,hadBuilt] + else + return [ get(flt_rst, 'text', typed), hadBuilt ] + endif + endif +endfunction +fun! s:RemoveEditMark(ph) + if has_key( a:ph, 'editMark' ) + call XPMremoveStartEnd(a:ph.editMark) + let a:ph.innerMarks = a:ph.mark + unlet a:ph.editMark + endif +endfunction +fun! s:EvalPostFilter(filter,typed,leader) + let renderContext = b:xptemplateData.renderContext + let pos = XPMpos(a:leader.mark.start) + let pos[1] = 1 + let startMark = XPMmarkAfter(pos) + let flt_rst = s:EvalFilter(a:filter,[ renderContext.ftScope.funcs, renderContext.snipSetting.variables, { '$UserInput' : a:typed } ] ) + return flt_rst +endfunction +fun! s:GotoNextItem() + let action = s:DoGotoNextItem() + call xpt#settingswitch#Restore(b:xptemplateData.settingWrap) + return action +endfunction +fun! s:DoGotoNextItem() + let renderContext = b:xptemplateData.renderContext + let placeHolder = s:ExtractOneItem() + if placeHolder == s:nullDict + call cursor(XPMpos(renderContext.marks.tmpl.end)) + return s:FinishRendering(1) + endif + let phPos = XPMpos(placeHolder.mark.start) + if phPos == [0,0] + return s:Crash('failed to find position of mark:' . placeHolder.mark.start) + endif + let leader = renderContext.leadingPlaceHolder + let leaderMark = leader.innerMarks + call XPMsetLikelyBetween(leaderMark.start,leaderMark.end) + if renderContext.item.processed + let renderContext.phase = 'fillin' + return s:SelectCurrent() + endif + let oldRenderContext = renderContext + let postaction = s:InitItem() + let renderContext = b:xptemplateData.renderContext + let leader = renderContext.leadingPlaceHolder + if renderContext.processing && empty(renderContext.itemList) && !has_key(renderContext.snipSetting.postFilters,renderContext.item.name) && !has_key( leader, 'postFilter' ) && empty(renderContext.item.placeHolders) && XPMpos(leader.mark.end) == XPMpos(renderContext.marks.tmpl.end) && postaction !~ '' + let pp = s:FinishRendering() + return postaction + endif + if !renderContext.processing + return postaction + endif + try + call XPMsetLikelyBetween(leader.mark.start,leader.mark.end) + catch /.*/ + return s:Crash() + endtry + if postaction == '' + if oldRenderContext == renderContext || oldRenderContext.level < renderContext.level + call cursor(XPMpos(renderContext.leadingPlaceHolder.innerMarks.end)) + endif + return '' + else + return postaction + endif +endfunction +fun! s:ExtractOneItem() + let renderContext = b:xptemplateData.renderContext + let itemList = renderContext.itemList + let [renderContext.item,renderContext.leadingPlaceHolder] = [{},{}] + if empty(itemList) + return s:nullDict + endif + let item = itemList[0] + let renderContext.itemList = renderContext.itemList[1 :] + let renderContext.item = item + if empty(item.placeHolders) && item.keyPH == s:nullDict + call XPT#warn( "item without placeholders!" ) + return s:nullDict + endif + if item.keyPH == s:nullDict + let renderContext.leadingPlaceHolder = item.placeHolders[0] + let item.placeHolders = item.placeHolders[1:] + else + let renderContext.leadingPlaceHolder = item.keyPH + endif + return renderContext.leadingPlaceHolder +endfunction +fun! s:HandleDefaultValueAction(flt_rst) + let x = b:xptemplateData + let rctx = x.renderContext + let leader = rctx.leadingPlaceHolder + if a:flt_rst.action ==# 'expandTmpl' + let marks = leader.mark + call XPreplace(XPMpos( marks.start ), XPMpos( marks.end ), '') + call XPMsetLikelyBetween(marks.start,marks.end) + return XPTemplateStart(0, {'startPos' : getpos(".")[1:2], 'tmplName' : a:flt_rst.tmplName}) + elseif a:flt_rst.action ==# 'pum' + return s:DefaultValuePumHandler(rctx,a:flt_rst) + elseif a:flt_rst.action ==# 'finishTemplate' + return s:ActionFinish(rctx,a:flt_rst) + elseif a:flt_rst.action ==# 'build' + if s:FillinLeader(a:flt_rst) is s:BROKEN || s:BuildLeaderText(a:flt_rst) is s:BROKEN + return s:BROKEN + endif + return s:GotoNextItem() + elseif a:flt_rst.action ==# 'text' + if s:FillinLeader(a:flt_rst) is s:BROKEN + return s:BROKEN + endif + else + if s:FillinLeader(a:flt_rst) is s:BROKEN + return s:BROKEN + endif + endif + if a:flt_rst.nav == 'next' + if x.renderContext.processing + let postaction = s:ShiftForward( '' ) + return postaction + else + return '' + endif + endif + return s:SelectCurrent() +endfunction +fun! s:GetLeaderOpPos(flt_rst) + let marks = s:GetLeaderOpMarks(a:flt_rst) + let [s,e] = XPMposStartEnd(marks) + return [s,e] +endfunction +fun! s:GetLeaderOpMarks(flt_rst) + let rctx = b:xptemplateData.renderContext + let mark_name = s:GetPHReplacingMarkName(a:flt_rst) + return rctx.leadingPlaceHolder[mark_name] +endfunction +fun! s:GetPHReplacingMarkName(flt_rst) + let rctx = b:xptemplateData.renderContext + let mark_name = get(a:flt_rst, 'marks') + if mark_name is 0 + let mark_name = xpt#rctx#DefaultMarks(rctx) + endif + return mark_name +endfunction +fun! s:ActionFinish(renderContext,flt_rst) + let rctx = b:xptemplateData.renderContext + let [start,end] = s:GetLeaderOpPos(a:flt_rst) + if start[0] != 0 && end[0] != 0 + if a:flt_rst.rc isnot 0 + if has_key( a:flt_rst, 'text' ) + let text = s:IndentFilterText(a:flt_rst,start) + call XPreplace(start,end,text) + endif + endif + endif + if s:FinishCurrent( '' ) < 0 + return '' + endif + call cursor(XPMpos(rctx.leadingPlaceHolder.mark.end)) + let xptObj = b:xptemplateData + if empty(xptObj.stack) || 1 + return s:FinishRendering() + else + return '' + endif +endfunction +fun! s:FillinLeader(flt_rst) + let x = b:xptemplateData + let rctx = x.renderContext + let mark_name = s:GetPHReplacingMarkName(a:flt_rst) + let marks = rctx.leadingPlaceHolder[mark_name] + let [s,e] = XPMposStartEnd(marks) + if s[0] == 0 || e[0] == 0 + call s:Crash('leader marks not found:' . string(mark_name)) + return s:BROKEN + endif + if a:flt_rst.rc is 0 + return s:NONE + endif + if has_key( a:flt_rst, 'text' ) + call xpt#settingswitch#Switch(b:xptemplateData.settingWrap) + let text = s:IndentFilterText(a:flt_rst,s) + call XPreplace(s,e,text) + endif + call s:XPTupdate() + return s:DONE +endfunction +fun! s:BuildLeaderText(flt_rst) + let rctx = b:xptemplateData.renderContext + let mark_name = s:GetPHReplacingMarkName(a:flt_rst) + let marks = rctx.leadingPlaceHolder[mark_name] + if a:flt_rst.action == 'build' + let build_rc = s:BuildPlaceHolders(marks) + if build_rc is s:BROKEN + call s:Crash('building place holder failed') + elseif build_rc is s:BUILT + call s:RemoveCurrentMarks() + end + return build_rc + end + return s:NONE +endfunction +fun! s:DefaultValuePumHandler(renderContext,flt_rst) + let pumlen = len(a:flt_rst.pum) + if pumlen > 1 + return s:DefaultValueShowPum(a:renderContext,a:flt_rst) + endif + if pumlen == 0 + let a:flt_rst.text = '' + elseif pumlen == 1 + let a:flt_rst.text = a:flt_rst.pum[0] + endif + if s:FillinLeader(a:flt_rst) is s:BROKEN + return s:BROKEN + endif + return s:SelectCurrent() +endfunction +fun! s:DefaultValueShowPum(renderContext,flt_rst) + let leader = a:renderContext.leadingPlaceHolder + let [start,end] = XPMposStartEnd(leader.innerMarks) + call XPreplace( start, end, '') + call cursor(start) + call s:CallPlugin( 'ph_pum', 'before' ) + let pumsess = XPPopupNew(s:ItemPumCB,{},a:flt_rst.pum) + call pumsess.SetAcceptEmpty( get( a:flt_rst, 'acceptEmpty', g:xptemplate_ph_pum_accept_empty ) ) + call pumsess.SetOption({ 'tabNav':g:xptemplate_pum_tab_nav } ) + return pumsess.popup( col("."), { 'doCallback' : 1, 'enlarge' : 0 } ) +endfunction +fun! s:InitItem() + let renderContext = b:xptemplateData.renderContext + let currentItem = renderContext.item + let leaderMark = renderContext.leadingPlaceHolder.innerMarks + let currentItem.initValue = xpt#util#TextBetween(XPMposStartEnd(leaderMark)) + call xpt#rctx#SwitchPhase(renderContext,s:renderPhase.iteminit) + let postaction = s:ApplyDefaultValue() + let renderContext = b:xptemplateData.renderContext + if renderContext.processing && currentItem == renderContext.item + let renderContext.item.initValue = xpt#util#TextBetween(XPMposStartEnd(leaderMark)) + endif + if renderContext.phase == s:renderPhase.iteminit + call s:InitItemMapping() + call s:InitItemTempMapping() + call xpt#rctx#SwitchPhase(renderContext,s:renderPhase.fillin) + endif + return postaction +endfunction +fun! s:ApplyDefaultValue() + let rctx = b:xptemplateData.renderContext + let leader = rctx.leadingPlaceHolder + let defs = rctx.snipSetting.defaultValues + if has_key(defs,leader.name) && defs[leader.name].force + let filter = defs[leader.name] + else + let filter = get( leader, 'ontimeFilter', get(defs,leader.name, g:EmptyFilter)) + endif + if filter is g:EmptyFilter + call s:XPTupdate() + return s:SelectCurrent() + endif + let rctx.activeLeaderMarks = 'innerMarks' + let typed = xpt#util#TextBetween(XPMposStartEnd(leader.innerMarks)) + let flt_rst = s:EvalFilter(filter,[ rctx.ftScope.funcs, rctx.snipSetting.variables, { '$UserInput': typed } ] ) + if flt_rst.rc is 0 + return s:SelectCurrent() + endif + return s:HandleDefaultValueAction(flt_rst) +endfunction +fun! XPTmappingEval(str) + if pumvisible() + if XPPhasSession() + return XPPend() . "\=XPTmappingEval(" . string(a:str) . ")\" + else + return "\\\\=XPTmappingEval(" . string(a:str) . ")\" + endif + endif + let rc = s:XPTupdate() + if rc != 0 + return '' + endif + let x = b:xptemplateData + let typed = xpt#util#TextBetween( XPMposStartEnd( x.renderContext.leadingPlaceHolder.mark)) + let filter = xpt#flt#New(0,a:str) + let flt_rst = s:EvalFilter(filter,[ x.renderContext.ftScope.funcs, x.renderContext.snipSetting.variables, { '$UserInput' : typed } ] ) + if flt_rst.rc is 0 + return '' + endif + let postAction = s:HandleMapAction(flt_rst) + return postAction +endfunction +fun! s:InitItemMapping() + let renderContext = b:xptemplateData.renderContext + let mappings = renderContext.snipObject.setting.mappings + let item = renderContext.item + if has_key(mappings,item.name) + call xpt#msvr#Save(mappings[item.name].saver) + for [key,mapping] in items(mappings[item.name].keys) + exe 'inoremap ' key '=XPTmappingEval(' string( mapping.text ) ')' + endfor + endif +endfunction +fun! s:InitItemTempMapping() + let renderContext = b:xptemplateData.renderContext + let mappings = renderContext.tmpmappings + if !has_key( mappings, 'saver' ) + return + endif + for keys in mappings.keys + call xpt#msvr#Add( mappings.saver, 'i', keys[0] ) + endfor + call xpt#msvr#Save(mappings.saver) + for keys in mappings.keys + exe 'inoremap ' keys[0] '=XPTmappingEval(' string( keys[1] ) ')' + endfor +endfunction +fun! XPTmapKey(left,right) + let renderContext = b:xptemplateData.renderContext + let mappings = renderContext.tmpmappings + if renderContext.phase != s:renderPhase.iteminit + call s:log.Warn( "Not in [iteminit] phase, mapping ingored" ) + return + endif + if !has_key( mappings, 'saver' ) + let mappings.saver = xpt#msvr#New(1) + let mappings.keys = [] + endif + call add(mappings.keys,[a:left,a:right]) +endfunction +fun! s:ClearItemMapping(rctx) + let renderContext = a:rctx + let mappings = renderContext.tmpmappings + if has_key( mappings, 'saver' ) + call xpt#msvr#Restore(mappings.saver) + endif + let mappings = renderContext.snipObject.setting.mappings + let item = renderContext.item + if has_key(mappings,item.name) + call xpt#msvr#Restore(mappings[item.name].saver) + endif +endfunction +fun! s:SelectCurrent() + let ph = b:xptemplateData.renderContext.leadingPlaceHolder + let marks = ph.innerMarks + let [ctl,cbr] = XPMposStartEnd(marks) + if ctl == cbr + call cursor(ctl) + call XPMupdateStat() + return '' + else + call cursor(ctl) + call s:XPTvisual() + if &l:selection == 'exclusive' + call cursor(cbr) + else + if cbr[1] == 1 + call cursor( cbr[0] - 1, col( [ cbr[0] - 1, '$' ] ) ) + else + call cursor(cbr[0],cbr[1] - 1) + endif + endif + normal! v + if &selectmode =~ 'cmd' + call feedkeys( "\gv", 'nt' ) + else + call feedkeys( "\gv\", 'nt' ) + endif + call XPMupdateStat() + return '' + endif +endfunction +fun! s:EvalFilter(filter,closures) + let rctx = b:xptemplateData.renderContext + let snip = rctx.snipObject + let r = xpt#flt#Eval(snip,a:filter,a:closures) + call s:LoadFilterActionSnippet(r) + return r +endfunction +fun! s:LoadFilterActionSnippet(flt_rst) + let renderContext = b:xptemplateData.renderContext + if has_key( a:flt_rst, 'snippet' ) + let allsnip = renderContext.ftScope.allTemplates + let snipname = a:flt_rst.snippet + if has_key(allsnip,snipname) + let snip = allsnip[snipname] + call s:ParseSnippet(snip,renderContext.ftScope) + call s:MergeSetting(renderContext.snipSetting, snip.setting) + let a:flt_rst.text = snip.snipText + else + call XPT#warn( 'snippet "' . snipname . '" not found' ) + end + end +endfunction +fun! s:Goback() + let renderContext = b:xptemplateData.renderContext + return s:SelectCurrent() +endfunction +fun! s:XPTinitMapping() + let literal_chars = '' . 'abcdefghijklmnopqrstuvwxyz' . 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . '1234567890' . '!@#$%^&*()' . '`~-_=+[{]}\;:"'',<.>/?' + let literalKeys = split( literal_chars, '\V\s\*' ) + let literalKeys = map( literalKeys, '"s_".v:val' ) + [ 's_', 's_\|', ] + let b:mapSaver = xpt#msvr#New(1) + call xpt#msvr#AddList(b:mapSaver, 'i_' . g:xptemplate_nav_next, 's_' . g:xptemplate_nav_next, 'i_' . g:xptemplate_nav_prev, 's_' . g:xptemplate_nav_prev, 's_' . g:xptemplate_nav_cancel, 's_' . g:xptemplate_to_right, 'n_' . g:xptemplate_goback, 'i_' . g:xptemplate_goback, 'i_', 's_', 's_', ) + if g:xptemplate_nav_next_2 != g:xptemplate_nav_next + call xpt#msvr#AddList(b:mapSaver, 'i_' . g:xptemplate_nav_next_2, 's_' . g:xptemplate_nav_next_2, ) + endif + let b:mapLiteral = xpt#msvr#New(1) + call xpt#msvr#AddList(b:mapLiteral,literalKeys) + let b:xptemplateData.settingSwitch = xpt#settingswitch#New() + call xpt#settingswitch#AddList(b:xptemplateData.settingSwitch, [ '&l:textwidth', '0' ], [ '&l:lazyredraw', '1' ], [ '&l:indentkeys', { 'exe' : 'setl indentkeys-=*' } ], [ '&l:cinkeys', { 'exe' : 'setl cinkeys-=*' } ], ) + let b:xptemplateData.settingWrap = xpt#settingswitch#New() + call xpt#settingswitch#Add(b:xptemplateData.settingWrap, '&l:wrap', '1') +endfunction +fun! s:XPTCR() + let [ l, c ] = [ line( "." ), col( "." ) ] + let textFollowing = getline(l)[c - 1 :] + if textFollowing !~ '\V\^\s' || !&autoindent + return "\" + else + let spaces = matchstr( textFollowing, '\V\^\s\+' ) + return "\" . spaces . repeat( "\", len( spaces ) ) + endif +endfunction +fun! s:ApplyMap() + let x = b:xptemplateData + let renderContext = x.renderContext + call xpt#settingswitch#Switch(b:xptemplateData.settingSwitch) + call xpt#msvr#Save(b:mapSaver) + call xpt#msvr#Save(b:mapLiteral) + call xpt#msvr#UnmapAll(b:mapSaver) + call xpt#msvr#Literalize( b:mapLiteral, { 'insertAsSelect' : 1 } ) + exe 'inoremap ' g:xptemplate_nav_prev '=ShiftBackward()' + exe 'inoremap ' g:xptemplate_nav_next '=ShiftForward("")' + exe 'snoremap ' g:xptemplate_nav_cancel 'i=ShiftForward("clear")' + exe 'nnoremap ' g:xptemplate_goback 'i=Goback()' + exe 'inoremap ' g:xptemplate_goback ' =Goback()' + exe 'imap ' g:xptemplate_hook_before_cr . 'XPT_map_CR' + snoremap i + snoremap d + if g:xptemplate_nav_next_2 != g:xptemplate_nav_next + exe 'inoremap ' g:xptemplate_nav_next_2 '=ShiftForward("")' + exe 'snoremap ' g:xptemplate_nav_next_2 '`>a=ShiftForward("")' + endif + if &selection == 'inclusive' + exe 'snoremap ' g:xptemplate_nav_prev '`>a=ShiftBackward()' + exe 'snoremap ' g:xptemplate_nav_next '`>a=ShiftForward("")' + exe "snoremap ".g:xptemplate_to_right." `>a" + else + exe 'snoremap ' g:xptemplate_nav_prev '`>i=ShiftBackward()' + exe 'snoremap ' g:xptemplate_nav_next '`>i=ShiftForward("")' + exe "snoremap ".g:xptemplate_to_right." `>i" + endif +endfunction +fun! s:ClearMap() + call xpt#settingswitch#Restore(b:xptemplateData.settingSwitch) + call xpt#msvr#Restore(b:mapLiteral) + call xpt#msvr#Restore(b:mapSaver) +endfunction +fun! XPTbufData() + if !exists( 'b:xptemplateData' ) + call XPTemplateInit() + endif + return b:xptemplateData +endfunction +fun! XPTnewSnipScope(filename) + let sf = xpt#snipfile#New(a:filename) + let b:xptemplateData.snipFileScope = sf + return sf +endfunction +fun! XPTsnipScope() + return b:xptemplateData.snipFileScope +endfunction +fun! XPTemplateInit() + if exists( 'b:xptemplateData' ) + return + endif + call xpt#buf#New() + call XPMsetBufSortFunction( function( 'XPTmarkCompare' ) ) + call s:XPTinitMapping() +endfunction +fun! s:SynNameStack(l,c) + if exists( '*synstack' ) + let ids = synstack(a:l,a:c) + if empty(ids) + return [] + endif + let names = [] + for id in ids + let names = names + [synIDattr(id, "name")] + endfor + return names + else + return [synIDattr( synID( a:l, a:c, 0 ), "name" )] + endif +endfunction +fun! s:UpdateFollowingPlaceHoldersWith(contentTyped,option) + let renderContext = b:xptemplateData.renderContext + let useGroupPost = renderContext.phase == 'post' && has_key( a:option, 'post' ) + if useGroupPost + let group_flt_rst = a:option.post + endif + call XPRstartSession() + let phList = renderContext.item.placeHolders + try + for ph in phList + let flt = renderContext.phase == 'post' ? get( ph, 'postFilter', get( ph, 'ontimeFilter', g:EmptyFilter ) ) : get( ph, 'ontimeFilter', g:EmptyFilter ) + let phStartPos = XPMpos(ph.mark.start) + let [phln,phcol] = phStartPos + if flt isnot g:EmptyFilter + let flt_rst = s:EvalFilter(flt,[ renderContext.ftScope.funcs, renderContext.snipSetting.variables, { '$UserInput' : a:contentTyped } ] ) + elseif useGroupPost + let flt_rst = copy(group_flt_rst) + else + let flt_rst = { 'nIndent': -XPT#getIndentNr( phln, phcol ), 'text':a:contentTyped } + endif + let flttext = s:IndentFilterText(flt_rst,phStartPos) + let text = xpt#util#TextBetween(XPMposStartEnd(ph.mark)) + if text !=# flttext + call XPreplaceByMarkInternal(ph.mark.start,ph.mark.end,flttext) + endif + endfor + catch /.*/ + call XPT#error(v:exception) + finally + call XPRendSession() + endtry +endfunction +fun! s:Crash(...) + let msg = "XPTemplate session ends: " . join( a:000, "\n" ) + call XPPend() + let x = b:xptemplateData + call s:ClearItemMapping(x.renderContext) + while !empty(x.stack) + let rctx = remove(x.stack,-1) + call s:ClearItemMapping(rctx) + endwhile + call s:ClearMap() + let x.stack = [] + let x.renderContext = xpt#rctx#New(x) + call XPMflushWithHistory() + call XPT#warn(msg) + call s:CallPlugin( 'finishAll', 'after' ) + return '' +endfunction +fun! s:XPTupdateTyping() + let rc = s:XPTupdate() + if rc != 0 + return rc + endif + let renderContext = b:xptemplateData.renderContext + if 'fillin' != renderContext.phase + return rc + endif + let leader = renderContext.leadingPlaceHolder + let ontypeFilters = renderContext.snipSetting.ontypeFilters + let flt = get(ontypeFilters,leader.name,g:EmptyFilter) + if flt isnot g:EmptyFilter + call s:HandleOntypeFilter(flt) + endif + return rc +endfunction +fun! s:HandleOntypeFilter(filter) + let renderContext = b:xptemplateData.renderContext + let leader = renderContext.leadingPlaceHolder + let [start,end] = XPMposStartEnd(leader.mark) + let contentTyped = xpt#util#TextBetween([start,end]) + let flt_rst = s:EvalFilter(a:filter,[ renderContext.ftScope.funcs, renderContext.snipSetting.variables, { '$UserInput' : contentTyped } ] ) + if 0 is flt_rst.rc + return + endif + if has_key( flt_rst, 'action' ) + call s:HandleOntypeAction(renderContext,flt_rst) + endif +endfunction +fun! s:HandleOntypeAction(renderContext,flt_rst) + let postaction = s:HandleAction(a:flt_rst) + if '' != postaction + call feedkeys( postaction, 'n' ) + endif +endfunction +fun! s:HandleMapAction(flt_rst) + let rctx = b:xptemplateData.renderContext + if a:flt_rst.action == 'finishTemplate' + let postaction = s:ActionFinish(rctx,a:flt_rst) + return postaction + elseif a:flt_rst.action == '' + endif + let postaction = get(a:flt_rst, 'text', '') + if a:flt_rst.nav == 'next' + if rctx.processing + let postaction .= s:ShiftForward( '' ) + return postaction + else + return '' + endif + endif + return postaction +endfunction +fun! s:HandleAction(flt_rst) + let rctx = b:xptemplateData.renderContext + let [s,e] = s:GetLeaderOpPos(a:flt_rst) + let postaction = '' + if a:flt_rst.action == 'text' + if has_key( a:flt_rst, 'text' ) + call XPreplace(s,e,a:flt_rst.text) + endif + elseif a:flt_rst.action == 'finishTemplate' + let postaction = s:ActionFinish(rctx,a:flt_rst) + return postaction + elseif a:flt_rst.action == '' + endif + if a:flt_rst.nav == 'next' + if rctx.processing + let postaction = s:ShiftForward( '' ) + return postaction + else + return '' + endif + endif + return postaction +endfunction +fun! s:IsUpdateCondition(renderContext) + if a:renderContext.phase == 'uninit' + call XPMflushWithHistory() + return 0 + endif + if !a:renderContext.processing + call XPMupdate() + return 0 + endif + return 1 +endfunction +fun! s:UpdateMarksAccordingToLeaderChanges(renderContext) + let leaderMark = a:renderContext.leadingPlaceHolder.mark + let innerMarks = a:renderContext.leadingPlaceHolder.innerMarks + let [start,end] = XPMposList(leaderMark.start,leaderMark.end) + if start[0] == 0 || end[0] == 0 + throw 'XPM:mark_lost:' . string( start[0] == 0 ? leaderMark.start : leaderMark.end ) + endif + if XPMhas(innerMarks.start,innerMarks.end) + call XPMsetLikelyBetween(innerMarks.start,innerMarks.end) + else + call XPMsetLikelyBetween(leaderMark.start,leaderMark.end) + endif + let rc = XPMupdate() + if a:renderContext.phase == 'fillin' + if rc is g:XPM_RET.updated || (type(rc) == type([]) && (rc[0] != leaderMark.start && rc[0] != innerMarks.start || rc[1] != leaderMark.end && rc[1] != innerMarks.end)) + if g:xptemplate_strict == 2 + throw 'XPT:changes outside of place holder' + elseif g:xptemplate_strict == 1 + undo + call XPMupdate() + call XPT#warn( "editing OUTSIDE place holder is not allowed whne g:xptemplate_strict=1, use " . g:xptemplate_goback . " to go back" ) + return g:XPT_RC.canceled + else + endif + endif + endif + return rc +endfunction +fun! s:XPTupdate() + call XPTemplateInit() + let renderContext = b:xptemplateData.renderContext + if !s:IsUpdateCondition(renderContext) + return 0 + endif + try + let rc = s:UpdateMarksAccordingToLeaderChanges(renderContext) + if g:XPT_RC.canceled is rc + return 0 + endif + call s:DoUpdate(renderContext,rc) + return 0 + catch /^XP.*/ + call s:Crash(v:exception) + return -1 + finally + call XPMupdateStat() + endtry +endfunction +fun! s:DoUpdate(renderContext,changeType) + let renderContext = a:renderContext + let contentTyped = xpt#util#TextBetween(XPMposStartEnd(renderContext.leadingPlaceHolder.mark)) + call s:CallPlugin("update", 'before') + if type(a:changeType) == type([]) || a:changeType is g:XPM_RET.likely_matched || a:changeType is g:XPM_RET.no_updated_made + let relPos = s:RecordRelativePosToMark( [ line( '.' ), col( '.' ) ], renderContext.leadingPlaceHolder.mark.start ) + call s:UpdateFollowingPlaceHoldersWith(contentTyped,{}) + call s:GotoRelativePosToMark(relPos,renderContext.leadingPlaceHolder.mark.start) + else + endif + call s:CallPlugin('update', 'after') + let renderContext.lastContent = contentTyped +endfunction +fun! s:DoBreakUndo() + if pumvisible() + return "\\" + endif + return "\u" +endfunction +inoremap XPTdoBreakUndo =DoBreakUndo() +inoremap XPT_map_CR =XPTCR() +fun! s:BreakUndo() + if mode() != 'i' || pumvisible() + return + endif + let x = b:xptemplateData + if x.renderContext.processing + call feedkeys( "\XPTdoBreakUndo", 'm' ) + endif +endfunction +fun! s:RecordRelativePosToMark(pos,mark) + let p = XPMpos(a:mark) + if a:pos[0] == p[0] + return [0,a:pos[1] - p[1]] + else + return [a:pos[0] - p[0],a:pos[1]] + endif +endfunction +fun! s:GotoRelativePosToMark(rPos,mark) + let p = XPMpos(a:mark) + if a:rPos[0] == 0 + call cursor(p[0],a:rPos[1] + p[1]) + else + call cursor(p[0] + a:rPos[0],a:rPos[1]) + endif +endfunction +fun! s:XPTcheck() + if !exists( 'b:xptemplateData' ) + call XPTemplateInit() + endif + let x = b:xptemplateData + if x.wrap isnot '' + let x.wrapStartPos = 0 + let x.wrap = '' + endif + call s:CallPlugin( 'insertenter', 'after' ) +endfunction +fun! s:GetContextFT() + if exists( 'b:XPTfiletypeDetect' ) + return b:XPTfiletypeDetect() + elseif &filetype == '' + return 'unknown' + else + return &filetype + endif +endfunction +fun! s:GetContextFTObj() + let x = b:xptemplateData + let ft = s:GetContextFT() + call xpt#parser#loadSpecialFiletype(ft) + let ftScope = get(x.filetypes,ft,{}) + return ftScope +endfunction +augroup XPT + au! + au BufEnter * call XPTemplateInit() + au InsertEnter * call XPTcheck() + au CursorMoved,CursorMovedI * call XPTupdateTyping() + if g:xptemplate_strict == 1 + au CursorMovedI * call BreakUndo() + endif +augroup END +fun! g:XPTaddPlugin(event,when,func) + if has_key(s:plugins,a:event) + call add(s:plugins[a:event][a:when],a:func) + else + throw "XPT does NOT support event:".a:event + endif +endfunction +let s:plugins = {} +fun! s:CreatePluginContainer(...) + for evt in a:000 + let s:plugins[evt] = { 'before' : [], 'after' : []} + endfor +endfunction +call s:CreatePluginContainer( 'start', 'render', 'build', 'finishSnippet', 'finishAll', 'preValue', 'defaultValue', 'ph_pum', 'postFilter', 'initItem', 'nextItem', 'prevItem', 'update', 'insertenter', ) +delfunc s:CreatePluginContainer +fun! s:CallPlugin(ev,when) + let cnt = get(s:plugins,a:ev,{}) + let evs = get(cnt,a:when,[]) + if evs == [] + return + endif + let x = b:xptemplateData + for XPTplug in evs + call XPTplug(x,x.renderContext) + endfor +endfunction +com! XPTreload call XPTreload() +com! XPTcrash call Crash() +let &cpo = s:oldcpo diff --git a/vim-plugins/bundle/xptemplate/readme-img/400x/browse-and-basic.gif b/vim-plugins/bundle/xptemplate/readme-img/400x/browse-and-basic.gif new file mode 100644 index 0000000000000000000000000000000000000000..c57e53020f40762365de2732f4ffaa8232b76f9e GIT binary patch literal 41314 zcma&NRaBb~x9$B9AOsKY6ff>>4N}~l;_h198rOy zb7m@L5*l7SS_XDn5D%@e2rZKYtpGr0MocFGW)Kr#KtW>ER%W6#X2Nk|!Uvu@YCgqO zWMu=`ULvuXldy?1u*q|72`rB;S*W*aF_x0=QryXA2== zsPIc_VOl^mlu=ZURrH0tsGgN5kGmKbowy@|xTlObH&o&ktpq=Tq_MsvmfkZp=V#F5 zXB>ym__$#9LNFt1m?EWAAhvWoRN75MTFFCNR!NqR=ed`noTQ4JhpfCJkwT`qf>DTq z0xRC5fz_e6-iRnLU&a&4mB4gHEk-5Vt$Q~ zmm0dNnh^n-gz{Q8-dY^tS_T^0F*(}0lsZAmI;NI7a9-UsZCyh>-3WTUaveRj2t7+q z18Eh*mwYeM*^J68jpB8T9cqm=Wld6)OhVmFRC7%%ILzvK&0dL`rG%OBu$w!Wnd{b? zTh*HzJ+~^=v1FlY$L2+hO`?EZn}l6GuYIzKy$_#*gSKOuh*OWaQ<}6> zqpDMhsWUv@Svt*GK+JvcxqG_0dy|QKf~jYQ(aU00ukI`_Ia%+)XkUG`fIQv69@D^D zi@=hcKpmr?4)x$63wV=h=%96Yx<_QRNfaV3%C|JyC@0oEHZjg6r8GJ%zbxG|Gb716 zudXsLpgG?;vZ&g(xVaFK)rNTarYxqYqB6RwEvK%zt3I}+A-AU`qrR;wzrC}iqq?=D zsidp3uBYQ|@9THHxxMdNyWV%ddtcku-~D!=``tiG$E5zstnSZ!(|vYjpw|a+{j3eAELcOLB)NX4felZ_&X*5#gO_*+lJ+0KIoFPk^cchWg)(4=N*9jMIFwiBgyR{N>dGP%lxu-Z% zI^4D(kpx0X#&^8Al%FC|ShS_9#-7 zof!aX6uh2$qtkNL1)bJlHH?LjJ}PM3Sl5DgoSj*NY@`ov5lj;& zY!(dg-_ig(nZ89ZeAX(cOU9}m)VcY?Fo+Kslp^goMY*#nEmZfB?8%6Wr4p|{tyi|k zaVi3nuM%djky?NRFXK_-&7DghkrlDYgjo1nrzs2i&mm1fMCNkz9_Qat+I3`#>EfCW zkbb2(qMQN-0NV_o?Qs<@oU_{wPcpOu23S*UHg>@{nEKN&^IB{wP-x`T_ z<)V@b`Feb+c$5^uS{u6gu&Z2AIBjTzRG{|4LHgN(2m>JY!yub`l7?G@o|`!xgUpU` zDJ*D8L%Ppugj87rg}{2UAJ&ZTj%LaTQ{IEkYB6!NE#pMgw{O(!add8v7`nDDvTD0X z9ji5-!dgXmH99jA#m(@Oy5DmU&$shFh{>6cgDfGLMyQ6U!3xA+& z0G1z$(`sc0Xe7*y)#JC)^F0H$#(7o0#niy?D--l*2#eXF!zdI9+yHxaFSL1rR~g!L zXgRz*jZC#QL5DdGoHEHQ*uIcz4`Vvu?aQPA+X4V32dbWS)U~rI!P50|3*6+#3Mf|< zeNEr)(~taWmxn(s_TDmqzS8u+f*sP;FUO~*74+CUR!}w~Z?{`0cj9>FS!J>Y*AMr2 zqBE);p!@F++F!p1e(PRtS2s88&NK+!`}39%)F*rq^_@vs(s{Gn{h~gVDwQ$g`l5Cj zY*;dS5pYJMvHKpMFwDmX`s(035VK7Dat8CLLTXW4FZg_A2dD4Hq%YT;Ei*3R{daIM z(@D8V7Sc1R8q8Mr;m^;WtVhQmFVfMW@`aAkN+JK8@{n9H?ZT@ujTac2aBgF(Cj_=C9{&C+O}!)%l!wU{KjIUwWjn$Ji4bOZhovdb zQGD|!2Vyn}rMz*O&sgYy1XN8r0!+FQTHc{J(QQ1rDM6y>KhjvCw-ebf>?M>|QjR6|yKp0zd{Od~X`WjhV z(Y*F^|OqWn?anp&sJ!53{_yh4ozubs|g_3#Flcyy7 zN;w>n>e}sf^&tQm4-;B9$P zp#9p^pGwIY5GhrgH8$w=1xhlad49sx_qDvN64vp#2BUp8){aY+3~H>aRO3!T#yhk` z5W2d|3opz|bDw8Z_UicB2l49$bY#X|l;}$QrJ>G#lGN?csJss`+e@5sxZ0337KX2P z_En^mVWi3GC~%g=Xes`8*zqR4DYLC_+=L?)zhDO(=9rE(kyPOtUIi z(e|6+8;}_sV$GSNWL9mUl{j`L6}-Z@O646h@jQ|RfnPMXmBL4HipLF3qCS4PCZ`pgsi|L#_r-7g zWy2+}N^uo;J?j;wgYB;KQyRY!GL5mDdyMO#PzkCoM9$Y!>mQRPo83J(yM%a}9cm`K zFZ?k3^X+3dj^jY6Dno_+4>bQ!g?9iUVUPU_TsS0(nzp@|W^fAo7W>^>Me+?CWc7#s z^>n854a?qUYOcJG+65Qv9b;d-LHo&UwKVa#0dpiw`N!=iVa$R;57^oYOtjKvF+W8t z^>;dlinq@ujPqOvcL_}RxomvvG;RXdgC%xOilTR8%^e@SI#J;t_-iR z7D5PkcrWRhC-g&qeSAeo5>ibNOr#ksOlyZ%g;k*s0i^_Y5O_JCVF*!qKYEH4(nzBL14!J~mVM&>xk!-{q_f* zwE#JbP#tJhGdOszy%IKt5pj!-TEM@AL5B=)*U!iP~CjRppBNiIu zky`IPNT@*+IW$^KyJ}$yF-;wz{!&&E2U_SQaphw^QJtZT&$ZAQp`_(nNFVeGmZK+b zqN|}X!!j|1H*uiQm@*-}z!(B&Z+zKnJjrXQ)N?#Lfe4KcP@8h78Ic}JQ^FFd5pt^D zu^n`i8Smq*_KrRDg8_7&8Go$`fBe88s@(Y*t>xK4($$JykS^g(r+$EL^6!=8``cuI zECnQzf?}8g_D_N2reJiXV6CR$+@(OtQt?Gn2@O+;{ZmPEQ^~thDOXde?^0>V(&$9e z7!1>x{L`3o(^$LG*jLjy@6x!*(s@PF`3=(r{nLdXa??e-(#2QPCGXN_A<=&@z3_l%?{|w4qD9)xyy!=<%Egg$;Dcr;o#b&-3&$KPNCb70L3+s&ks4nc5Edr0BUucNyv9`GgL+04%GYrC=<#V4|yFYPDeIu3(O= za6zPS$*^$Qzi=hDaILFwV>P=49cWuEeDICQ?_SN>UQK?-lDmJHJmgStd{=ZvR(v5+ zd}Ubt!@u}8xA4W-BF~@dZYe+`nEV_azdYA~Kj7#63m>Le+*hep$V= z(+HJ`Cl=51Vp*&;XmND$i$SVoEbh8rU*(ZnMo)9sf(} z1G3hG`9`Zr;+U-kS~Tr)oP<=1_K~%Ymn2_LdpbQj?fZ%O5k}^jn4@e=`eG^m{rmGR zPP2w6{0D3w@?SkfzWZb0`yJ@RY*m8>-rbx@3C{8PFiIiEG^8iLcMtiqd)LnHrwb_LVt7Gl!X;PN|V| zv}iGm2hNLRM<4Sd!QJ-7YWTJ!rUB>I%vPw17yT%N%-m3Nu!bD8qDj%wpgb;-^>sx- z04ubr^!|a7zDy-cZ`CH(W!c!N_$?R>AnvsYtJT#I1S2_~lao8Q7iAsiPW;5EYaAkv zuY=7mkTbb=axhbSpm1n_bQ0-+ZT*I3&^PA|4EeckP^>bi%f4PJXYZO|?m_T&s_;`F zc}i>vcw%o3d(B4o^Qrgowb+&h(yZY@AL{zbk=O#_?5xRscrL%`VC$hbFL ze0}6|q&}?A~eG|BV3@Qwc+35(&0{x6?nK?c`*%*8_%Emu0vEFMP zAtzwKFU5G%1ON?1K%Z8yA5_3uN8RRn#nA23^~bshiFRoca>9-!#sI%>VRT7}BX+!y zhqMNC1p4_8E1yc?ZFt>@N%Lo9r2E`0<(31>iu6U7yWJeShP%B2-*0#Oh-l8A2W8o= zKM$)alXkLDyjN2)vAS?5j*-XTK~FGO8$^RV@>r4{pR8>~yFsj>71Il?|ZYTf~~Ykfh%? zN|CHRd4Ke-W^+fq#XXbU#Ct^SjT8WYxlvJ4_VxS8vtHI^vZD;xz^gQ;8`vSesDfvq zi)mZ>%rP7|;70M&i)HtK78?D2TJDQ9(zgXKxrhasA_;zGVLR+dlO`!g_0{TQKd3|A zMskc=Xm=@I(=aun>S0-s24emYj~YT{Nwvl^DkZ=MKOe&55oQ0SGAc?Nq6OG>p4DKWWLfSdn}y2 zTgfB%m(iA9b*90#>T}Xs#wpWbp%L^Uk0w?dX-nBI!?zc?a|spvm5S4jFD~;|rYZzG z#;08aUV62zYYI~>gtKgYquu{qVU=|A=JRfh8h&a78Y{fvaKEB zl}q?%L8}57FxE966ww!#Zrb2xDVj3fESXtQUn=JOJLlM zGRU+v)gb>bTKRF~p&P9UJYS2t?8l(2z!sn<@8gYqp56xKHC>y zv)GB6eI!NUlkLYhbPwD2QcIwg9snn0YX=G8`7iL%IZy28Qg2(t^D+!AAsY}u!A(SV z!fkTwwXwszJEv7Yh6GF@AyYkk)bDR~kt8y2wHTo>-`q;SYjeoG?w-H)zIugW$jinr znnD!B1PVDnsN}>HCTAWhK^^`qg_@=jr>9G!Rl%EExbe=K>FYy9G%2*;t-X0F@tF$a z9~vdy39Sz^A0$MGESmfR>V-a@pqSSqL+Jz$iqxP0*_f0c_V&W*fY&U)1RvWy)&N8= zeopew`STZo;d2pU|0yS>2R;1_XkA0rBcdQ;n3A9TcZhSFw~p$ zcG9#Os$=kG0})f4jD66JN7=EgbE*)g%wbvcs}JMDThLSCH2NT@yV{}{bxKLGE`AXD znvTfO!2R=R)7<&_*n+U3IQ0;4#uSr@gg^^eRLRAVs&gkg{x%{i*6b@TBqyHFzbJ^& z*4NG)Xt2(&hjQA6o!d#G3o9xii%3CdIi-AJdfYjZx}ErNwL(v1injsc>dawia7zw+ zvdgPaGh_4o>H5e*;5sGn?9pC|+#BnHD5bg4N~aPrGm&U+_NOyLmj$a|9{ecSrIDQf z)UIr5RCL34NFEpPdD2^N9}PsZ`M)f9w}MsUfzpj%|;FnR7Ph(0AKLGOd<6xL$n! zLvkBFW!Uht^kwL&vBR3*S(!G@m$FIiKRBj8&G=3)jcPn<{uGM7xR`EH?eJU~sQRg~ zc;@f;OI_ka7^dvI_MCx5+1-&>sCWh*L#_nj za?t_?$d!6O_Id7@+<3L!a1@}ACCK0Gm;GP7#rnuw4F8_}hMMEEs`&livR`83PL2PQ z{VHdQlVfdJzz|q^s#u%W!x-3#kzD_o{nAo3)+~f&VuZ>E5VQBEKP@Q6N_G4+(N_EM z4RLOxBXHve}+{t^8E!8oI+Hfr7lEnsVoswm2C7@Z<^pcl6fj zbmgN3bA<1H-S}j&`ootK)R+{4p~-Z9_~z$KozHL-;+XlDV5X|Aurs95t#If}w0Q)f zp72Hlv29g}Evf6lmuS{;`t2BoEc@+P=8CHAIQI5~?Rf4H=AHjLZ}F89%!+R%7$i}B z$uXE=RcMvMPBW;fVn|n$W?{_Kvt`-KvCa}<62o=pn?c%-Ilu<=(+t#*u^I=)`E282 zEApJX(d}YiF8kXRMG!k4lyC+h_lx#3H*$1JCBT^EguFyXitY?fk}L2R?)2N4S( z;jOyxhQy<0%+Q{TJ~pnmKelVXzk@tYs1l6dvpnp9jImjAvjBDO30QA-xMNRcjp>Go z&Dbx-mHD3ds78 zS^B3(0Rew!N$}ri>9I$_K^bhMm5KZxdlavOf1jnu|29jiQnYpCu#MGp>%r{*=ux!8 za13-E`jsO4=p`_-w#Et6qy%({Tz4@>4+bmk7i&x=ms!#g;RaH@14k&*-FgHIZESPw zIqh&{OllS3FO&_&^Tt~*thWH%Y=io_E2|bh#|`&21I%~(Wo@9N>(ocFf)zzado?i zw-!zzRX^@4@V3*Mb*YOKxVHo+_ z%*6o-Xxoq8C1=j^>D(|)SejR;Mbt-ZSzTA-YIm4**qOVbDgRp4PKHhhWEm7gIac6= zd@VF*D=vW!bBeJzut|K-t=`LXW|Cc%qW04WmDXx^*e~>x*0C!J`r)u&6ar>tPJ-h+ z&eA?n+(BuAR@vv*DRQibWf^*ohvhl8e`m?(=&%wI#d=g#mgRUqD2qa9GAB&2RJqKfZ0wOhq~j+8IaxEs9c*_xKW|mM776F;}@-UArN8A z`qmAfH)Zpe3Tf>daIk2vn!q2)3y6-gzbB+eed{SL3A+mX}7T^&$r&HWuw)% zz}KEPj`yItvjMD^)26%XJC71Og4+IDV{D3nHR>TIp==$rlb6@g}c<;@(U*G%CxPG4vk+}UnAA9=d_r;XZ_urRu@?3we zmh|2JT(8)@`SWAL_xqolt?19%wFymVT?@upbkCzW;R|uP$-7 z_xg?GuW#YSzYpx*1AFSPASwtD38{pSIGkcfxKG4y9~+=d@!hrW>l8ju`0OAPHZ-{f z78~o^6M=@&WXPj(G2`MjhlNwCl$;qu2JzR9(qdvS`4lj z5$jEyz+0JZT926LUZq&+3d5`~Gy~@Ck%=Gwg7FO+sdVgRD3(Wi{QKxhpc-hR3-dkB zb5h7u=6xvpp$V%RbkrBz^yDALM%Xa8;*CzWNd|>SHV=6cot$?bf9a?wXe-HIoSyF2 z!Kl)Ui!>KwR6wf)1L(7)I58Mz2H@CNL~t6~J}Z6zilR3sm2?3C18PW#Af3|4N=gM* zp4@R&pNsSoN*flQ9Ocjx&&>LuT@)KdWutBUOuw(?{FVMPKKwM4VhI)EYfW&AJv^!s zdnDmL&G$ayeOP`B+ajHcn474BNJlwn!o!McjuV4{G)U~=T?hl6j$aPYftN51O+!J%r4fLh&UROQ0 zQq;moOAC8`av(1gpy?ubRUzDF%89iwI<4&`Q*v?3_I)IE z$w}PYYd;5#mfb$d`3e@37kmPu6I+et>}$?Z<*@s+WjGfZm(^PFoWn9wC<$~n=lk|g zy;XGJxbxmN(R(Mfs9q7R{0V%(uMy0?Dis}iD^)UWQst4Fzp(p*v*$CBf>))HNvLs0 z#psSRc_=3Q8vo|)Stgn&_pz84x8S>pe7Ca`%n!d8vVDIJzxl_zP~7%G)EdJ`rXHWt z+kR+LW5m;-arnPA{QpuWh5x2ZtSCT5$zT-b|J3m7+@5_I``-v?z5dewlBmx1e@T=@t{v899XI=fZ6p9}4o9Pm48sdEeZGws zK2o09*+;Y(12P(##(@6L-Ro!~z^wW#(;M{#l94HZLueKZm1DM0zN5`D^6k`5 z&)-xHjl&0ILh18Vk%Xm2f!bTsUqKgx(Y1U4DHVM{#?GJYjwao{g5`@oCXFX;mblFd zP4bH6b^TMoei1WX{tNDrP-UoSF$K7O4IuTwP9SlF{7uPKLKJZ@9cy$nv73Z-ewtA#I zhFMX@f9clbqiz8^%>$od(2RuRah5k57n3}*>>AU8XdGU1kGciX86AGqtw5Y$r+N9E z3jRekeHZTmWaY>lBqe>G%@57C)8F-s>GuRy>?;#ptWf8NwO6eQ>)UIc3BI<6n7op> z*$ldQSc6mFbBbjl5iL~sey+Nwx?PSO^%vewk-vAGcL#zuoIIX!-sxo+&4}zp^(gfX zTP41`JJgjoi45!MrxZQ1s-F4jarE{bt4G;ogxJadgE9qcV;Z&04hW*wZkPqO{fLSD zE^)hT`9{+DIODetMjNfdl3CVi=)wq zf-?=rE;BeGje()#p9PR31Eb<#vXosl-zPZ$Dq$lL{}Kwb5qj<%Z>N-=LS49(<`)A7 zyaBwdvk0EwTc~fM`7)alh&XqiusvYFpa}0_kQ+A=dJ97Y58)Pv414KxKouX&g)_Ts z8JRu+mt`D5w^56*B!1OCcrAtPP>}y((XSc!#GdjLVs1i|)!8b5KW%Rx@tPcOal}WH zJISMz{=-D4Bm{@ktqB=sznN2n6a+&CBg}R9g?MGsuv5PoF(6aijVY`pr7YL3!@hw# z)TzUg+*cR?>$505j8P96f^wKb?6^;fR%V^o?o%m4iD7J*yS38>1A$=)D*HUJy>2re zgg(`QuI>7ZZI34%UD?$1&CBl~6M>HA2}u>ZSf4|cC*lZ|Gz$WuHOf7M?mN|@h;*VI z_Wf!MgiOGT7T@MT{nPf`2hw~qA#29K#xcuKMAdEd-$2 zyeuW1u96d)m`@70dQF2}tst+okOoqwW>&3M(w|t!>b@%HPOMh3Q(DYhdsL?BYBk@9 z#iE~Al`!lYjcBE%Qu6C61=Sj@?1`m{JwmGUM|sp*!x4)JFF!Rv#b1LZ=B6PNAICW8 zb*$-DZWGpMmDlJt)#x?^5Y<__I2lg=ZTPPn1Z+l;J9(0j3y{k+So4(J#XMQ7Q)@_u=V z0>iyt*~sWc&O?!4TWutZiy4K{r-1hMKI{f}7xF|wb0pvu4HD2ekHgwpg027jP<$>G zb4gmD#bjlK`>HiD!!{g;`~X0{7sa*Ch{iup8TG2|Njk>q=p0r3=9&L%@ zthwhCmKRC+XYB8OADm19#Lc@C@9*x9n_XZ#D^U|Uzha9iT{zw{<6wpfGRX_tr-_ze|0) zHY4e?+xWQyI;SM0C{*{qUu==t8h8VtB#S^zrVQKhmX{m_OWzp+PM)FthcpM zqqV*{hsPCJQAa@QMCvTiJ{|>jQauR2c_x05c1*DwB^f>Or_VEc(0Gr(!++RJGzo;z zD_4E>bENX#nr+{5MMo8{*h2M#1hUTtI~bs@<1zP|v!Ds7;`>PE>|IBocg$iEX#3XH zuo2Vx#O7HKY~kH;ZcV|I1{$zct#&&wOGw42&mzj}dYe!8t~~yIyXuqoS`$L|7df-N zdqT5!GlBP)2;8>^^6Ebq^6#&z)cp{mjNy(ErP>qMY^E zzj^G*WXl-l+i(~S^~+A~G~?Um|JYT`!;|hchVS{~L6oR@3&r}Og-UHTA8HMrybHSl z)`gQFD=sSK_PW&;lEM_e@TW%R$ThciUjEjU6D!OnyWWf-V)_Y*ipEU(W*i6@ZFPqgdi`&NtRL%RIC-#$kR zXuOIKB7wb^$UV`;>hD98pB~qZ=Lt>WWgT=?jZ*uV!VqdA*wBvjU@XA{bNMd3W@Rz- z8j@L|TKCXR7ZeaIQG7RHKuJh>>}KmRuTq%fZ1zBY;_6nOO%Z*`jsyp-WZdM(vi|J{ z2@>Z<$mh->fBQj}lvE|b!>{2gk}SI!pPwu4W*U^*+GH8~tm3hmNBxsmIqc=ySN!$Z z?T35$?jtPw1zyX4J@#Jp{-eh}+%JazC7B4~yr+&(Zvwint8x=-&RArU*5a3u-^AE{1_(PEEbmpb=qOsf+8=}6g z9lx;$i?KIN2_CbT+50`VxZ*kh{Ph#Rt^Q^Ut^VVdS8`%5Z6BM{PTQ>lFu!%5v^!NY zm;f}gIDks3Jqav^l?e$&YKybzY(n|X+q$ha2S<-){wW^qEviug5#s}W%+Ybujf-NHxn1rE_=pv zGv*WQOw+KZ^{vI&2YAk3VSP=jc~&ueY_FINI0ZX5+f8l>RAo zp-kl9F*c?@*iKKnwxSyzcxFOw7oX(Z?!R~CaSg7(TGf|FLIKQmbF^nwym)DI5r4wAz6r}UHD6;{TfTrn9*j{X z^=M#jZ?$OH;J4h=0V*mgDCy8x2oHmvRIKLGm%}mN=AyfLf4~ogNJapTYu^VvXWtm? zBo*ND;n1;kroJ7sm*bB*jDNviI0upD*CRbma?_!s+=BpQyY`FTbCe3kLGM!n0oifGAkuTV>HaiqN^E6O0 zh;%FyX$&;xu)ztZ!Og@9RS5HLnmbaPW+$Q|k68cNknUyC?Np`Y&G^G?$j{4S0J{o? zrZg8ueuaRjR!Kia1Mz)wEo#(Wlp$N5Q|!Vi?dmy@u5X7+{l>|V;M+d4K74zai|)@b ztt;<}CY;ydQh_c3+@M-`DVf6L)*{G?MkV{ zNev56s01`vJ$aQopf9cJg4i~=!6XSb3=R0_G3!~8?)E*?Ha@S|#`g3suwyeSTN)-u zPw)wl8n+u5-Uce1k#}^{Den@@=5Owecw|78S-f)@&6XX7x@J*1+0L9~|5OmXqaQq3 zajjMoFTLrCPDkQ$8&WY>y3Tb($qqwxY6n+d_D?UGMLa!G#>BjQYn_H7FkEKYPIs&6 z_i{jFmO_4^rX~LrWl@YG$07|?ZKP?T!Y|Rl3bkP|e~a*G+;OgOz`IA1NovlhRM}-U zdgQv9<}7U8BF@0Ozt2j}sLCF1{@s+lT1(!?sXf7-yN7A_q?Uqxm3`6myBWWkmZF=f zeaT;Uv+$4>qrG|3i;O{>FOb&K^`HaUH@TGNVW>uPDmaQeIO@7N=wOBUL?GZWqjK=Us>k0rJF7fZqS5+~9!cuyB8ui;qFVKTZK}0trUHi_M`_w9Kg-OBIWgkM%9tNne_5| zEax{)@Vz#NQDpALb9LV+;;-m(?jut;@0t6^g3d94q<7cveie!@H+pk=o_eDwyycsP zi;R4^_vP;xJToR z_QR{I&(Bn!R%F4O$}Z?)&JCHz_n87M$Rh%CD^O`H0`w)~ES3H;g#b81AMEq!2t`}& zdwBvwL;iwB2Cj;_P&jVlg5Mz$3z&! zMES+Ukoc_XtM85)vQ$zWO4HeA# z1K}=|WBO)P3voRPEzVT+@#P<0W2 z-l`Fe`Nj6x?GQt(+h#tAHDFYYrwe_1Ixtf#gM3Es+SXG5XuWaeNLdq7I{MmVWSRZu zkqzgIKu^C@T)Ga1d0A0ABXavMyN8{g24uV2f0%Q5SQbwi*LOW72mHWyd7=#~dHPm` zbH8n`uyGZ(UNqA87sHKu$l>_#UpwLW{{EFpz7Wro~BINq0BkebfA78m4~rJJpH6DCVH-I=l5hG*#T@3mFdWxgxdmzqRyrEvu)kE zW{=8PVip;WPgT_0nVnn^s>8N1F$IYZEvFqcAl}>ctZ;ISRo!;RDAt$db1dU+cV_DoQYw zpyq}e$IXVv~epw}1MVelBnT-F_w4-Otk=w}(Hs$4OCWPk=rdRG{w@n)p`e&p!zm zdy{5IKR&*HKusY+W;fq~R`p@LI159h%aQ;z5s!R`(Q*ue=8Ou1peP_x!a}gfBTF<( zM=<=(MMn!8ApG0ET#VePVrN9rK%-vK!&Y}|u=KUJB%T_vBP0!=au}tx>JR>>O&V%%@c6LV$Qh0wR#3x*qlJ6_XFA2bKkMpT^ zu;4MA6-`O$Jyz7OS4M^J@ls+`%JzI9(d4{1NETF7rlg2mc~_GHx^BYtj24DVVfzg}CH4wI3pRdS zHq?Og&b^|DPQ3jE|ob9-eS{fX#ITOH|@6Z%3(CP(0#GFTH}d*D>?! zuk_=e}62k?GWvYVap=;-?}X<}1A@ zdSrI9Y@vUc-6hxt2fasrklNEf?ro(s*|EXc{Yhh3FcSs(wwzwyc}sRC8>JxTUuJLf zhPmL#i=`|)6lKL#|5s|I~f)JB_- zu0UnYf$P)?V=i(OI%KJ_4=9V>-%;MO8 zaGGM|Rkrc-Z-!k; zu@IrY-DCS<5iT*zgB4D$*YOXu!^qVOjaDO^4CTO=+N^v+Ar{>jG z5=(1qe>zmE#Y4JbKW3a29g<%l#6dTP|6VxJd+*8Hc#Hf4Z#r+tvSo33+*DBYv*;ns zi}jC=SG;Y5f#aXc$y!$ES?mPP#IcgqHwI^{yA~5yriy+oCb{@}_t%efA2W=@GaOp zc(5Jz^k%+5v+IrRbN%XDj=2`ID3--bXW&U?19cf-Ikwmue4dHHPZr=U+^Bs=cyM?BHJ1|IkG$0$acfyTIV>WXh)nT4$XrUg2v3QYp z382zBiTKGCP3;FVzj_*HJM-#3BmxZI+fnHo@rTX(-RHhWdOSGzs5z4m_@|WO)B82H z*(-^;`co>2MahS|t8J?`Xw}vcNrOe9K#4bbc6O*}g4DU=$-reL=^qXCC%}jI_YdDG zvf-aM*OvBW+IDlkM^v8>+?A)dH=?>aJO9E${;bEa;O%#UvTascQHk_kmp^D%PkzoN zeJ}`ZOTu^0>r6;AVfC>K!tB@~KkANsiY12QmS5z;)40xCWV`?kZAUWRG@ zfafl{w=sq)$OlkDl*mZKiTpx$ZWNk_o$DHnCh3u_wv1BfAs`QUaySy;4)~8eZh3if z3%k2SA~B{Y2|yxmgd&q<0sws{mJUyHdlBs0kf}=G`)EV~!OP1^ndfNkWkTk>8fGSl zS56AA^4fgd{2YE?g+ORff;9*XNX^7XF|KUPGG5vtpFy5`18nwD_U%d!58jGMdwP!h zeAouQF++lD={{F-vB>?3lLWC-qf$C4awVibgn~YqGN_K+V4Ja+hTFJC()ecK_*R4X zcE9*^e!=d}_}-QHcen97ujY$IG z$v?-E{@$_VCaUt{ptn(0^Z{(iy}?` zR*LmbDve0$-#ZqEgiUv(V<^_|?SxJ4w1L|+O8>Mu=JX-^^r43p90(L=6QC1qNtejw z;}^-0bx50^19x4ZF~Dd}VW^ILNurCW>ojC!0N-?f5G5S_ASV6K1z3atyO@S|6^2GW zha@D;G^Rn2LBrd#f@9i6ZeGpx0|d|mnU^V9Kx3A>KgL&cE@_$!tHlg;7Uol$OdW^J z&+yC_{wdstS!QHewLDoi{#m}&f6rjZ5jbmbI??ppeE;0%k9RE9iK~4WKnjKj2y?v; zrx!>C%wyr>YkpA75C1~fS)Jdzn)AMkykCTL(69jP zUpOI>_jt#0g^r8emrl}`wSiZJ?VdFc(4B3eGHN6z85aNVgQwo^9xdHc80 zbGi@)TFH28ypo1gel)l?eCeTGz&$zwq=W$fL_lf~C$V%Q+X&v=5-sVHA0n^$MN`+d zfa4TQj=S_PT>$!BDP|w9)nYy?EAHtb9V%TqrzhZqK%GS{E$l+*(Lx)6B;~a-b@JE! zNVr>L1(3Pd&oD})y5nWL5efka{i8B&!`IGh6(2jbBgpnO0N)d{I z9ez|%Dq1t2LqC*)&4r9}P?f$xQ>}QE;=7ITW6em-qvpV87V)GP9jERysKq|3s_n-y z?JI@!)rKz=4UE+^1R$C)@^F=Ey&Y@C!)kF6wZlp^D|z+PV^m)d*topRk1g>hfHXC( zRQrEXcHU70OA@n{TMn4ZVm6(wl}}6b!vXAoLn~N2E6u!~&=o zRJsKekg60F#KH~wo^yZax6V0t-NnDGHBTm)XXZ2eyZ2tFTOh-#{0MXljIR+qDx7TV zekZO_SQ5jp2rdB@7*`x&!9exTXkZt5YJP(1hXLGvyEwM>=Fh{Mx?=@|KH!}}3(<>c z9o4elm$P-)0#a@Ltiru7VfcY`^T+y4ps`u3s4Y4x>-=e<1qrF0i88w0`VeIVTS)WY7@_poV~^yL!@B1lnUY z+pYN#imC|Z{*JTWtQy_~EmeehW1Clh*TgD(1t)U%fTK^WJ3tb(sVvZ_(H-*+zUl}M z+Gu*Q+J)Ol36~U$^X>_L+?CwllRDp%{=J95-J7M_n|+}-_gZg$QEy>?Z*fZ7-^9xM z4`TfU1pf=M{(CjUgTSwq{wI0CMfbEe{D%e~B1738`B#wnqF?#w@8ktf#Q){fw&ecU zDW8#cO7a5skBHHe){!lpc07HXHBN3OCP$+EElC5N>JSufK-ca05kmZs08ES`+C4xLue<@StR>g0((-IM@OHnf{tUM`dhFkqI zMa@`S&ijX&A(GFB-gSXd*7u10*dw(92bMm?O$t^_y^n zWP@A7SVN=PJqgL?+jGeqt%engLv+A476e?4T!^CUmezmJVEpGLJGKb~K!%n&?x%Z7 zQNj-%C%2Oo=&y86yY>5azcu5QZpjLq@TEu^F3(!wougD z&}|I(*}UuR{gwW!cT;|GZ&Q3v#W*B`V$;$vSVzjQ=C{^iEI`=FI_*MU0t<^NH)cU> z%3YB3?JRqvPBjDmk7Xpk$r9z}8GXi8_pi&53)bhnh_q}^*J+GI4ild@38@UyaiM_C zN$fRo`J0ATuU(KfA$>v99pSL98N;@VU8G}mWX@{-D9z&;?mi69c$LlJ+-u*rC9ZF1 zwwkNvj1GNe7ou6OD7{Ojql|748%C=@iA^P;(?IO_7?_?L@K~yJzp}hiV(zQ5Qc{?H z_`dPQ$G!sbVW-_JNGyLiF=k)G_MRw!@I1-8dgofs?W6Se?Iu>4m>q!crkdmv)xU&6 zyT7=9?P*z;2RsJfmg>#&fC$C#sTZLM-KyQcu4gZoJrgqgmG#u+drZvRtR+#z;kOKf zEMV|}Md{9WtuT=VQ1NA+e$hZ z6gkUmXm-D>^{i5h3&j!stm0i?Zg$OSwoTurR`#y&c-kwR1f=tIM~=rd4+9@G>bt7F z&w9Bk{k3-|ov$h%v0W`=wcU852?4*4qs4=aKps>@{TNCH0Fb~7p zWtLd0ANFtU67cG;jlAuN7iJ!I-H~W%fSOpWY=8Y=G<18bAg!2NeydyKA@hB|CVcTe z-@egU=D7b=CHtR39^+9Y^OC)nBBz)ZkH)o!%uDHh@NLpA^maUzF1w!Mww4{(AGiW9 zNAP%PoD3o3Yh;}lIxepBdQHG}GfZDz5Y>&c9C$A-9`@LqSNr6_L~dMQ^`_9;7o#y~ zw*UF+6KQ53F38yj%NeF?d%WN~1!&-oOyu6)o1c-%cYaw0)DfM_zEjr;f$w=&n_hP8 zWb?S!68@#p5!Pt)$Y83i@Jo}2aiiVz*i=_vkON<+B+)Uyn%5{QUh>B}n083Kh`+5_ zdEq&5O^&s2tT`zoX4*`iT-URs-8qsub0q*-}iec~05j zkTdg!d3Mrsv5zg(gThwUAokpu;0U_s(b4(HEn<}K5ZAy7L(8#v?Uz8V2f+V1O8B0X z=U0=y+aFCwQ>j9!heS5bb1jFC=rLb7EV%8PqDH1;e>|QkHkPuC`YdIt;i?nVuM^kB znbXkJy6#^6l3Jd`Kbn%(Q6*};W^mz;nxXh~&E%TOi^1lNi=DC4-{ZIpgHb`b1{Z}V zd86Z7+`f!{9ZTl*oY9nIpbd8lhTD-igV zxm;bCyi-syO>5_pNwYb2wo#vVu!%S4CEW`y@@&Hi8}IoqbB(&1$9OLT(LKhkm?gSN_jpq9}NCJ1%h0q;v5T$TVz~X7&l(O_t4MK-ZTro1aWvi zcJA9NVn#XeT5?4(&yK zE>a)*?fhjcd34N^hXpqnQt@ym^VNK3w9;J#yH{H%QsDFHk7LQivJHJAl{n?ygwtbK3 znix~dj}P5{t%=^)P&9Y8GItI3Lfy9*7IxQufTQA7a1Ow3uz`+tZAPB$1|yqXwqUeE>ZZ;3zg!0Ks$hfl{vES@}<4>NZUm-jSRA652l}+ zfgb}L0lb+=f!2%}kJvx-Mll7ow!$`Bp_TZg+0&d~Xc!m}0wc`SO&Gdu6rsF_080{Z z*5jn(%j9o6p@D`qk*SCt>0|i-F`ogj&E%lZNd1F!q|A#)5GEKlg~Ks}xR^OM18k#U z-7|2e1=KDnOQ|4@0m!C3lidwra=?PUlwu{4GER+VP@)rBlsG&11iE{&?do9gR(LNi zxpy_2!7))^JZXM0(?C4eTPekBH1}dJaLG2-x*lZ9$#hje@rvyw3W25hr}=ZneKAFZ z>E|&e0l2kXMnZZ+Xnw$2e%iPE4+}ZEp*aw8-Wx>03^OchjgE{h9LMHli^u8eGtT0G zc>wOElro)}iw}d(`<+}}FNziA*%oc%z^VyqpD zsJFAQcVX~74CHTYa?D>6PgXBrxQU6S6+npX5@R8S^%P+ZT}mTSLie0x{EgHjmO;gw ztFMfp(DFEig%ASFD&;XF@IW*o5?_eyOTN5Q;lFmQxf!A=wG%6q?by%ERh~Vp#Bfz< zs#Iy)Rq2LT=@nKPBv)z7RGA!BVdpfN@{~{VdDoqxC9r$igbPn1LAK$F#sK;fml(=1 zB+IJCDoc?k=&vm*F=#Ew_Yt(t{pz08)qUCv*siMp`KrM#pg5>;m8&*@>r~94G;P(@ zq^?@SceSQR+2IAd9y+8`ncLwr$8^{4zm&^~ZJrxzHrI?OFr!I$?r+zv zxX>qL`9X*YN0W3p{1+V%W$k__5&Et}_G&^6jt)40h8_tbz8k2-&`HJZ3xSJT-0Vcm zV?aiDhilHQkzb7Obp?5lWew3Pb+zF^>vg|`!i5f6IbPl}+`UyRiV$cN;_nZa$Tb(^ z7Dh1>0^QAMuEo?aakrO=`nYoa$;9}luk3$Q;(zd!O_cwG607u6dAUpfhd~ZM>@f-UZ-K`t2_DG6-*bzN`l$u_-DhaTu?+V)aD2 z38+SZCsi^VBXx;Z?C;E^M-9gJ-JP^fCb8@&IU~}ucA{y}7y<&xS3fl&yd17(T@A$EeHe<&J zV**|YXAs^`v@K_v%Wv=aM|FOvHWWR7W|I{-lM20f*g5#*9>t?scJM?6j~f9MM@z`e z4}LLy%_^$cd{*w}tLIFg*ItK=?EthMWa%k!mS-#3Xl-tzz6mq@wPf2Z!zfo#b{X2#BNglYNGc3v8zj<)!6( z1)9e#r??2GA}7^`0D_CF5%jZ*#j;~US|ruCTP7B+An~QVqGN&XSdsIf$_aDRaPM#$ z*1qhuDx4oUHOrh3yizZ!6Y!CuYij(YTP4MO)n6^=yj4N*l^sv-|2JQmL>+}XJ$_SX zwYkL+g$-+`#ylDtyAHjoZ<(oVv~_Gdj*y?XoSo0O}q{}`GZ zY@`g$MGd5y4M|t>ww|E{*wxxRPM$QvM1fP%nF|rAR;PCci`cK@?lH7K-yTjgc;)ec z!+pT-(a8ig|54FO`^JCF)s=g3_@3$)JBCmX4=N+4L7L=yQ9Im{_*X4tXSTuE3NH9k z$Fn@}DY*&V_UO;uhKfJs0Mqjqzf9Un+R;oq#B3?d)(RZqM)~1#$@u3f4+$ETQ&#Fb z6eueH$+f3oYT>A*Ta!`FW@cqu}&QP9RtcJDFRkhvok{A1@ z%4B7RxtFF-tM5;q3y;v44S6f}<$-Fc>H#kC{4eg6`LxKxG6mA3j)rv}fj0?fsX{Zt zx-a0TviHRfcFvpqqT+i;Ytshi#RWb!&jy#pOaD~IT13VS&!FP)XvB8Vt~ndvLQbgh zfT>QbYdugq7}ATw#imFs(!WnoMYd5aMbZ3{M=qgv44Fypj#}^5(bhDQXhXi(fQ1*u zwVnOVSj2*?Ms%{x@VV0yNzpL^9K>@v{q)+jHul-}8&Qy+zV=_qa)^v4Vk5di#6fsI0vV(EW*;%?JOEqz3~*^ z!d-wS(p}s?tSv}mL!*-truhTQ;!x0*WZhRcI#a6HY|~92v2C9`&DT0I1!;XVpfe3(1;GTL z4M9CU*ofBi0*flzQ?F?ZL(E(RS`rgTWk1I_#5EvGf$8_~j{d!U5I7%xw375ad<4pv z2(Q!J5+5As!={g=RX5Ezu3drFr?_Q%KuK%sS4N~*)3X~rY|5qk`OK(hf*PwHH!^-r zZUVWy1T+cS9@^da*ue{Ns1p@RfBtsy^17+!?{A*9jiDLgMjOwzK<{3Yxu&S9 z78#dZ^1e_;V245Gr|x?Dp@1{Kk&Z5gKNWn6YNZ)v+HTLjmyfvk@=W83QL#>ddsgB0 zhwHuIC~dyH=bwdn1g4$1^wwQFU340_jEo!(vr4$GxTTc$ipe?Jn0-{E-uEB)>&_Q` zkEu7*ldHvkm!Q1AV_!rJaMn9b8`u}p26i0Pr1Hy zRb;jm57RtT4z ze6Dq(CiHO4Af>P|MMB<=n5<#*JtV{Ga4 zYIw{tDBxP7?n6GB$?#9w&uwFa9!NA(HClHfzqTe_Y+^dWFpDx__hSypI`yC$JWHRM zIM|;J|1`Eer1Huy{%EThafk=f+AD5hTpm1xsaU? zJ#~{ixA&4UaKht??wvWJm-2kzN2TqZAGglBUtpclqnX{|>GI0<^*2UtM!gE(^f=!? zH$DFKcu)_Q(f{g$$^O{Hb+h@4ORpte6Aa8kvML{6S@52@XywC_{hY-{@L7NTj@wvv z*>&pcw}ro5V)Cghd3V)M{-pT0p~2gQNG<`*lLO$BM%nbiGfz-zMmp-U?xhyn6>5Xw zMZIqxY+6~QN*cW{?0S`#`R;Ui(386-8PcFS<`x`N_=DVYrxu#i-CwKq{#YS$mbh8@ zSK2&vQ!Mg(T+AzURC4;mvvV8D&G@b##XF2^ExXG5O=N)MSKEWN`Df9`7%# z&tIIR@tR)|+Z4LN`|`%^hpLc;8zC0KU}iI5#*>3B{EMI&^Qvc+EI#d?NnkL3ELZ9b zn)a!c-g2(;@}nD{YOERpqqKCasPm0V*>N7#RuI0cQGvMNTrDTOB?^K@Cj`-0YN{z& zM9XVmkE2ioAUW-y`b7()6mYlClE&_)e4wPBorR*xgpl2;w%tg`^)}Xc$8&*~ ztwTKWnByvtC1llA7hbDyPCxrJTT%SpZ{7*A)N0ga2R8p2l;^Q59 z!81wGHgIJegF$psV2|L1#iWYWMAA&c9s(t}z)%TE+-`+(J!fp}5fZ~N+_FhYP-1GI zN$3TDa*vcqC8iMoc!uSC4p4KEXll^{%NRQFY49RO_z46U?-3e7aAo6?CUDTD!BkBW z{3F05x(!_em|iZX#QsLd-PY8n2dNvVv==rfCLzEy3OU=8rujZ?K`ebKKVgb5m572p z#WNrPc>EynY$W~pYWkK29T$$)hn%#FfI@L_W-xGJ5Gq0DqA(3~fihtY(RrSEk~2$3 zfXUeZx6+3|8b@a~P~b=p!H-K?fh5WuWoB}7G6~UV3D}ku%0BoDgj9%hQLlB@Ioo{-& zsFM?k@dGd#aBFw!^Al6 zpHAu}L9%wB4|Sk*n}Qq4yX*wUxrzvBNNKTTZOkg ziETY4kCKQR;!HokmF_5)(S?_NqlbOhCw){-=z);(*JwOOOBTcn7Yk7IDx?Wgp}jx2 z!x2`}o6bN0C)*0%>Me92<+>=R2Iez}Lxp2W1)#$O0k6zTr;32YieICZr|c5Y>tz`I z%6v}f>Ap%$19p7_c(P|gFRr{&yim2TqQy^e;{d3h$iI&(nW-Nj&?+bvwloMewyO*osdn(WkW-QMhjewFGZWlJ#?>5*)XSLgLS_&Y#?GhGxno^w_ zS!Pj>`-&LXsyGbz99kI~4;!V$5uuJS-t{`90ejG4+6pFNWvpqNP!$4UN=k0rvTNDK zwFKn11VWfL<`O>kC8Uo5liTosM0k)yYtT&j2hPN=5=gVt0=)~_+Za|3zRYcvTWl9N z4_34Bpx-+uOcJBGVM^Sk36A;^hJ&<&(7GuBYSEwDkmBjs`jE50M8qQmH#bH#H& zWdGcoDw6;r=qefDRWuL6yS}A!U#!);$Zc|oyUY18t!t61J*#_VmK5WG1~g8of*80l z<(Zf3nUdXI(%#)x36Ajg45sQS-KAZbI`>zc88E1$mOyp$t69V6o;L!$V2$3@CGUH2 zy_QsG9R}4W6nyz?eDf|?;Q0EgBoQ_Jnsp5Jf2*GVk!Sy(s^>A!a{SG+BIXLQzw_p$ zU89GN^X4qdm zrTf2B&=^A}eWaf?+%P;cX7_Aa*G%}Zo5FSq_^4&RcT{TfYoBOe&dylHI_6l2?cHW^ z`K06cdG}z?df?{WyGQBoe~K>Pf51E(!)SQx77Uu?RwDbw}hqX>4@4g8)uD#xnMTQ!SklLtV!* zm)&v>f@|=UB&2S1ten=K8J9^*Y}hV`DDgP;!+s^-Y|wy0-3V0INl~EN21@RCnM<3{ zH99Dl(~``pDA@-xe=#~gfsNZ=eLBGYqb7$(P}PU1F}D41A_yy%h}kzt1OarAWKXJa zwb^$uw0zO>SqYcXH=ioMW0akC2!DEI)H&qwX&_n}-vpApq$D~B4{pHUeQC!)N6jp7 zgm^ghSwXLf5f%*UN{*zu)0!8<0bc?_hnw8%FH!Mnoml5@1P?|GN_5v}Ag*Cv-MZ{u zjf`N36$0}zs4D`8yjL#QceGup+n`$Gu3A5U3Q-T-z95}Q7GVsmk5jHYt-I9rpL0@V zejP0RB~zIo_pYb>aQs?&WSU~dUG(=P-g{>|DeAaTGmpe*6%p(ICiCnP2uj-0Jim^8 z)Ie^e;l-V|XfuNv#hzxg#9im;z|zXN;LmAe-FQ=9mp-(pk*)SL_C2(Xag?uBQPyLL zUFWP|dmwgBV=O2~#UYkOSV^}T!^ceEsy>pcuDkY=K#N>wjkQ75aXduhWPK1kUI!HW zv_t~O;Us@-&aF5#*|iwqh8W9r3tEH~A#nK))GHM^#A1IdeNvTQs?nA$+?mJL zFFJA(1c`2lZp%jwFfL&{SPFAEjpgIyR>mxSwdc8`9zm6!Fxy6V2=d={KlLJWEOjJ0 zrf($ZwEi7Qhf9?XyA&*i<74F9s)%FKFICg)5}Kxu$D-Hk%o zc<3Z9KALALmM_UbxRc3nSn=z8dXqWDw{hX5l{W~DlE97u&yPRRAF{#s5I$aTG)?SX3pBF{8MeD2v2>`o7 zT68CyF4U~Km_h>cCx*(B+Uzs}^${e08wg&eyW-BEy|6$xhEo|51*yY^yoYKSG+B%^xf z+U550a>5n!5q8Ic>?lXOaFgl~g@*MCAT0 z!4GU5wu0?>yokr*<)@C^dY~-lo;@+!jtjjS!4Q)lG{yJW2@WWVTzZF3e*N$kxQT(a z@kuP1ZtROKtp`nDj7h82$IeOm`o`DxMBxEUMn-Vsyj%>8K*#He2Kqad(XEM-Ys28L zea9XycjFDa`NOH6@y?czryCC652tTFje`4rjhZ#^WE82EZ<7}qfuNaul*I<=yJJDm z#`@+sy=>cD6>D?o-6%FH#>8ZCj;0R7b;663QP^r%wZa9RAXj zr`(H9{PENPTO()nlBb=1>{ge;=QpL~-oHjZ%@}={Dyi9zsu9oTxIp@WLN45`Tq1;SSux2&%=Sx1CVPA*Y$IKkgXIm=2w2 zo%28qK0{!}=xmW2lJfOd1$}|*%aQxHL&%>ZPX2(v%8*{QWZrYej;Hc$$bfVfhVSw#4RTN8Tl(kM2 zD&LlSCW_jIAB7LeB1Fq9Mb8MyALIp3yGIG3)UI2e$-)B7bUq5^0F*C=C;Ghf?(|v9ARZ^&PH>eJx1;OhiB#E6(2PYlEV=rQ&w6@ou5<|H8AV z1b?OfU!GM;3O#`RbsrQ*g1d^rFeH#24(e(H59C7#BH*qRR>g{EBbc&n5_2IyeqGY; zU{Wb0d6zG_$|HFfpWHB#9AN{Oz|%GBCAyW?Gn=FXVM~VQlYJ>Zx7W~HW~Z*8Q*6zj!*=+Ct)Lz5Ge**uOs-@Wpv=2Wo0lwb!Ut(E8o>{v`_$-OhtlibDL^hU z4`7uL;68y!(E-WZ+2eeKvq=dU&v;G!Y+Z3CJ#mDgZK?@K8bcvTP)fc@VExKJm8L`ZFO@yzn!M7dZo)D((g%q-9!sc4( zE>PwvR`xk5{%ca1?`oNc2gyB=^sSe~I7fmXk`P?w|IC{YQi?y$o0ss8*yfAib5mxi zVB0Of-Q_d+BKnoUHRXF1OcfQkS1KmlPsL<9uZ_MGv*SiKK2)}El#3M4FRs4 zCe|~7>tGcXw4o855)Fs3SkIV?Q;Oe#|ETq1 z_)A6mPp#J}-Wm2Zl0o9><61AGAXU&CpEsNO9Uc?r8%w={wctUx-|osqZvbD|iQ9%J z6>*G7ST);&ct|4W-}Ka|K53p4Vd9krcfTpm7v&czI=K?$m-+S71M_;?VZRrz%xcL7QlVkjSS~ zc=ugRr=oIpQ=tKg3*K)XZUyW{_2)s3 zuG19E_fTObuF2kXQ2!RT_FTu6_ofK`;@*8(h_syQ{t>{nbWx)}jGrvJ92QfmuV2tG+8b{T)OM3*ePhk^jUJxVjYSm_$NY|h;oMaupH zi7gAIOMGDhqN-M)43K9|j!QHJYMoRqe#K%(b^2^iY4(DGxsm;lMxx zG2Fg#$rGHuGw2D<)MyAxMRBlQR(UBUj#7t|PKl$0qR-Q2X0Ty*Ld1E0Vs(9R1Ut50ir0vY}e6u?)({TZQbN&*f%&mjM@wL8$^Eh8We=T zIP@Fg{FMB^;F7-iZ@AR-9%F_~TzRlCmK^`A?JI>Q_r_J?K>(t}o7}{xz5xa6klLFJ z71brV&b4aF!}{(?$v#zhf4#FwP4)Ip6V~wJ=Lt435+xk$Lm{SzgB-rkAC`C2MA0GT zN~i#Hz4-?hzmFvY0F_Y`=Iuu}>?3a8ANCus+t?=*xs>kS0uNfssq2DR=G7Zl+DdT% zcLd-Uw5plv5WWhy5VRh3P{PBSQxt#oG-aN5P~Jv5k3-i@L+(VsLZmnVtdX**gTe_) zSV?eFdo-};q4oqyk&pYjnjTtD?1P07GL4{%TAS)E%lplmhn;OQ-pDrz(p2{bEI|QGa{#B1d2HCD~$})=`aJ1 z*JF@Tt4*}4Lk`bbI0e%4F^uG!Rz|P#KuYe#4^^GmOO*-XR*!|*VHJ*su-4zy~pQjXb!_~mzicwCRm+-a&r{NY25s7OWK2=a_Xtm9f{iK2S zeiPOp%463n!Q=f?>fN&;1?E;37=Gj-`*|hkJ4X?e-fJJrqx1Yv_VUwJE}S(L({;OJ zer?s_17=Q{5HVo_d0bV(NImf|$_rMEqNzqORNPPfAE94`pR4{|=vQF%Jb0?-N^+wE zG{sK!izPO~vZaLGvTDuFx<7bdGHQp-`Y_r0IXL(xUigWlp{0%9$$YT$>+O2h@B9`I z3L7(f$xSEKZO5#p+VUP4rQMUdFz)6mSC!dWbGgxS`HF(It-gS7ZYA>N!a_&iL*FYL zlap^c614^**l^K;#fu2hGY^fOGDq9-A3hqGzjn>=OdIyu7UP&<(Pe>;IrDDn(%mjH zIbS^RU21P(L7n>OEOS#=p$oG+_u%#{0Z-Gp^>FjUog#nvXaV9P_r&OI;rdtN`2jwW z(GS`u95!PleWVQ(4G;onyR*7=VuIZdUsD_GcYkTT!o9ftP-*;DP4Io^pI`I!nb@-hF+9fwvJ7 zjFtqB6XZ)_OklES8QHz=PtFn&lT+z8b;H66^HQrB}>Z%9kt;Hji>FO&%&DToy+(Z%c z6Dj@RTW<`{m#kY3&rLQt1~q+B^u9d(G5C>WVvC<;tm}KpKxWcl1p^@CL{$_}xE1(w zzymlu6%d*F!WJ zi4d&zj#xi6L9`^L!%Zg~vIUUKHe|a_ zReiIgdnw#kxz@690&7Wiz`mUNv|6xNEiikysMA76|!d5+_^;Qiv8|gB0T?XA%$p-wd>c*=- zF>svx^rJ{CcHz0D318=n>i9h#-CtXID){!-4NxGX|5F&#vlDOIt*S1x8#7=cF6-R3 zeOfws#GQLHqHyKK?4TX+JoACW6#dRJrp^Cbp4y7bGTxINzxQMR+0n1>M@Ik(4_3lc z+u&(K@sJ)Vys%_Ku7}CKr>)?Pzq;^EWPHe1ygO^u)8|0rXR}IqwSgM1n-6J&0H4M$ zYFb~TL}R@KP(F?3(QWLiVs%m`9@ z^iiitciuHXHlocsPLnq2jbKvibVL*4`haHSsJkR7A75pYToamHm!I6wliYM5RlV~s zcF3Oml>csryy*e+VMdZyQ(aFpy`T(5>ZQ%qr8#P{&)cNF#UgjfuoXPGgA89Fr!IM< zucA^GSJU32GRBmcR>U&y_3$KbbF`gCeCtWQrGfZq!*$@1F?;~C7^dK$=;k&L-GY$( zbH<(pV8Ic>h=5N3nJoI5iwNY%pj`F>=katanz3`3{UaVOL6Io&@Ldf8Wr~%e$+=Fz znQ#Dr<9T|dM^s26-h>d(tYzIrvHeYm0MpMEMxlZX<$ItL07uG1_W4mziWBECA>#Qe z_}M9L#7CJ7G|b>D;Oy>Dt`2@C5r4ra`MKaBqQ@-YuAe*5!y}9qb9I8{nX=0>!-o(= z2RyF>h9M#hexn{9CC;@3;uL-kd^Z)m31V8pgKj#)7YOP8VJW>hP;eM*rIorL4WH;q zEnX`ieM>Iz%*!iCS#AY7fRrI}{w{)ThQN?aIC+zBvIA4pl~knhTR9XAgjX!4K?R6C z1%*ARbWby`Jv`&~OzP8b#k-{9k=~TX*}|Jj`L3tod6^8|z0@7}qBloLMFX5-WL)WZ zD}2il@H8tnjRHrSmUQ&+*z%Rdnw5P`O3~97ROcjy%$B_6EL~78T}Ue0NaDWPQ@XWQ zMiFQ!y1d3PdX6!xTi>e_FRNuP8>~YWeoMymRrbtOauufV6ncm6!n(St&M22Uvt2H_OXo5miGYC70~DTpC0NP&L}&Rqgrk6>`>OB76mrx{53BNrZdb zl`Iiz2NG*@hJt_Y zTc@nZS;zwPxt@~SXdM!ehiQ74++?Gr*ls3!JxBpXy5ee~r5JJ{Q~}^nl4O_(^dNyk zL&K;5YX&r>WH|_^i+;OjpeT5nEaJTI!os^54j5_YdSu2mSFg4ncUt5cvPvB#oeFq5dCD(#z*EsV@GrNt!p- z7W;QPV|bP*s^WJ8!snWa8f>KjC7p5cMFXY1?X}mQ#Pm(a;pEQMAWAx;$K71x$6d`A zs=VKhl^9ODzUreS@Jxn=Q2dN|)~_(59`x&>cveY;lu$~0n+>;CsgZ5{(%5mE$dlgo z56?(iDZd*KUi?mH>^p7~K^|`Vq4BXZJz5`<9$a7mOo{#spLo2p7)%G8)j7x2+H>cD zilv>`1ASjMX4<{qj^FO5q%$73iJYf2AndKaXuS07&h78}+wUnk(|7Ou{C+So-U3s< zdxO~jIkti(EG5C)S2vB6j&-z1-N|inc6je1g3bn!fj_&*&&y)cw13;8N01Vdt(?Ii2 z4=e&;p?F}g9Jh~)AyS88Xz5wB6A}1)J%nI2XmFd4Droo2*q-h!f&7#=EHCRO%AIux zQ1wWQ4_h(pr)Z4MxZq4G2OQ5ZJMbtrh$a=Y+tz#zHJv9D*T;-6s5IdX3Kiy0Ve4^x zlMNWw%eU=vDBa!vQ;>#IiaSuhm(cR30G*GLILRs?H-aN+#=*GH8lf^5@5dn-9H_OP z+9`!b-+#&=+&ZfgvUcaxOrmjVe~9!l4Hd?ix8HkXPTo1l76@pzal>s1~wB_yzU zV8pi=9Q39%e4aAmJXmEY>YvhJQuNY&FBigC8~EO;-Yn^9dxMxmKb>3e7>)2vp2pDK zm9V77g<|WwbX}AzsPVivX~<_){E13}?^DuGo=@FGoLP?H_@B9`T$GRS=PbJY>siDe zN1f81Q4>RCtGTdTCC9Cgp!F1SyV03G5I!BX92$A3OP0T|4j|_QCigJc z4%jQOzDwOtL*|v7Nf>J!B|1MzGRf2on#=YwOIQ2*(7!8$1paww$A3Nawt07g1m(~N zqxJ(~4nii>g4;;lG*+6Ahc>uMy(~b%pBjC}d6Xb!+Mu>}rg}8r5OYRNJPmoG2<|Tutlcpu-pP6{IjIb8)RT7tMpRexI`VO_8>0%?wtCkA)wq z7spE#7Lj)cXxN!?UZzp8T#yYG8J`*IkhYtSzS&l~ zWn=lAy%O)4q{PH7izwDIUeVRnXvwt-F~SO_HiWb6~D=wfvYe8&u%;yXo&_& zM`J>aODue{XQPM>#l3r_j$@dw{)9@iNkFJU%bRkB4)ItM~Y6lVIK&GD`30Zo8C!%jAcx$5mwSHRMr!XeAD3 z()|E1uoHwwr@96X8$LB+D)JQ#LV1w0-D^?c1vf1VEFcJ2yKnecO6z<*FC-V z)~k;Tn&oH6AL|CwwM-S#Wo*BM8`)-eV1uP*X-*O@z52&T)X_-sQZOAu$ zu6g?L{)UN~R$0DztL6os&SJSh-W$0)&nZcBbgX#C=$P2J_=LoyKQq-5XG&*ttiGCgQ%0E_{%F-A#i6VTq4E&h-Vu(1l5ga1h|Lg)uv}ykPRr@SiQ})^_a4 zM^SDA^~bjXl*Xv!BZ*SVrirHPIp^OfUBYUCm56TqIw^K1;w_b?B=6&YpOxP?P?mqL z#P8p%1SB@Y?#r)@22gc-Zp;G5ZXSNm7@9#H^sA+Mi`kZ;QL#A9V2TT8=|SoTrLzO| zrtU*U(EB-(t*jN8D|_+C^{%BV%wHQ8_q@Xc77FCGOH?{M0~@UpE+I=9A-`Ag`_Yf< zpR4fyH>>#P`9NZcqF0NPQ`kU`#QkQwa|A@e{XG!`_kb|UbF?T=`n8b^Dr8hru~}3O ziF!JcQiG@j`|Vc!bc%z!kFcyOjS14pRSnAe`WVG}Fgsf}!fzYgNB#MwQQ|!R^anfs zyNw^qpPzs@sZe~J0U6IM2u>tZ!;1x|Gec8Nu`%?~C#~x2{mh)Q_0Y`rMq*VaCAk2B zw3DdesGG>HN000~=a^Ssl?7o$$6M6Ug6RS^4=wl=!zj1uf-p*S&&{Sn0FrF6_AG&_ z5OacWZ4FXOBM>O@1>a0IVyNhnFJ}?egr7+CT()bak<_O?bKMs)NO=ajno>%mg}ov| zeO0dtvIr_@ z;44#o>Mt|_Kbh|j+xMN)J^}QPXi>T-q+1>3z_&vQVLq*9_i1j&$xT!38Z%d5J}c7< zBEHLqkh!ZVr8kbxo(S>-i(+Eu(aIHWWWh`NU_4TTC7TmUw6(%ARb^Mqo0{#45;Y>U zM-iuD=oKmj-l-4X&%J2nPT;!qWyvz-iKl`swqSF~lnVL;Nkzw3ju;AgkB@P z8z4xBPz4mEgNT$Mpfmwd5dmq6v@tXRhpM1}fOJtArC2~`#up$nYi7NfH9zP5c)#ym z_nv#sJ>TAEf9HJr+<&v`iCBYk?Pydky*9GJI8sfwW3oAjOvLG2#m7J^Ss)6Xe9`osW_Y2)&0|G z0t3i&RNicLQFepM&1ACC2^J)gyV#Glle=M@DEkA_yT8}bfi^Avny1hgOlJQS`RF!{ zX8#M3Z-0tG0Kc{6UyOWovv4!O|0nzZC;R`vWT&q>_Ws8|nW@qYAZ48Te=}1>AJ^tY zlha^2@rrsls02914i~IzkaSA)jt+LSG)p7Q42X?qMldJw7`z#8p4E-=IEwF$s?>tHem|MzHW z-AEvy4W9Lhd{m3JBxMwL@cH)8<;{|vTidYM90m`-fJP33@1LQHSGQ9kM;ym&)AS(f zx26J4if2FLrFQ7U4*7IEfCU5AMGuJpe`>~F7y~md;->36jo`ff53(JWMO1X7LDxLF z0Qe@}8C>8M;8aSKmhz!EKw|fGOlRffHC(2XIPDwy4YJ(v0!?-}tt^Wtz9&7d&EcZK zG@yxE(JdE!u0>_cF_WMHjqNNcH-)N|Ofb7Po=5|lN^X2+y7ixdhOhT29cXCOXCG)n zEjp%1spd4Cv6eUzM8g?UMW=cCPxY)<^0PYYp5=FsH9zBZY6+tO4VG!5lBIMHXc7fR zDvLxSv#RXw)Nxxr(&NH$Z5^Cv1umCK>m!kh(wxA5W7uUoPkcmN2q(aFaBvjPo#D#%o*zT9Xx(LheImq$N6=rMcX;AZF1 z3v%Rs(GSMK1G^>ZTOBg@oC1H8A7Kj_+#EL9c0s+Gu^84c=Q^NJ^r%Yw8_1&THT27W zPu73G?|`iP{h1JMP-$enHB_p9RG2f8Pf-s<7<0n}vi77FdR8L%B#tq?r|=Gn83h8b z56DizSDKFwFX#HsE4e%lHby^BR}0|Ei_^L zdiT3k41_ip4;t_<;uOaoDLwpqOa3K>zCW%4zqi8k&jV7YqlSm@A5}pp*y&s(UbSkM zI)!N13j)AcMR!c(USaVsrD8b|+rlRbU-x>ndjZdmg|@(BhYR>r9X_@wdyQO2rMz{r zuvnnpGBb2bm$4SLt~4`dX51f(rUP0|q*>$ciF|*h$NZH6;gNk|n5P&j2xpDM=E)mZ z>DZMQid;che|__y!fmKf)Kj9zorBk`jQM1kV^ulg)D2j+kJWTj`IGCg(*yVi#wEOQ z&W|YLY3ybEk)7mZu{Ph5$%~%PYGfs@wN@^z`Ygz2$k@$WAxAiHocSkZ` z>&I@-Z7@R}X67Efk^+I@{_;|l#Wy{}VobPJrsQcC*uxE>ccT}-tEmOxJV`H?I};$K zbPdrp!20Va(76tM{n~z1FcjPqi+&DXK6-v@%=3DbUUa+}?-z#qpy2KEoWi&{ZZ*9` zkPzQ1Ai(SPk&xH3eI>Xdntdp0QXO0tg@rE9#!gi*Q)8dUN*)aXo^m%uZ-7OIF_`ko za;%*Ef@lgKGYge+oI}Sc=3DkNOYN^M-LDR7lv|3ixK(dM5Bn3xigToECl_hkL8T?G zoq=3g(Tq`NDTb&_r@H5K<@OUpMh29Ju_iq?hCJL9!?EaXCuJy_;EEVgn*gVgg4bi0 zo|j)f5#?5vLMzveHnx9}5xLo~Y_7K1v`ss5SpPj_NaH6Jq8{zY2V_zCt@Dix$DRo0 zSkcg44d0q(+J2=w&SR_@m|E?PyDD$|C191rfhD=7djiJ3pdt;3G$2Xl<=eX~xpf(i z&fJshn2}ba$}$6u-DMkG=ytU?rFA;RT63oEOBUZ|1qVe~>(zZG3NN^~ty3o1mob zjP9$7kE!Y_rRV%H4_!g#=9G+tSQ{61=a0A(g2=2UooUR7DK#?a?lS-}#HY*=-yXUr znw9#xVC&4(g@ZvOpwn$)s49<>jiI(155KclV+dNdq=~7|LJu6nQlhKIZE}WGdqMDb z85nZD-^0N`I0x1Kp?8Tk=I7x9C5 zq~jSHIz`@cly~XW6XfLAA>i)`sDfIlQ3WaEVZU^=ra-}}-fiVnHm0ZDhgwGz@GnI; zFD)f~8A8NtCy2~S^*@Sbf}L_ zrIabIR3m$tL-}1F%lV7%bet%#BGC@wM|-EE&$hNyZc%Oz!S&Vs#!Vt26*m=rF)}Hv z0@MWGmnG;roq)Po7CrI0Q@gxq4~cAy%uV2kiFgSdjOFkOErY#9TidUQTt4{`D0F)2 zh741e?IU1#e3<}v2z*Ijv~*m4g~(Lf9&6#|5#E??n(K7@?$mBslkC&jUiIe=QsLx9 zo*E5r=f>RWiSIngO@;pJr$N3YX^=#_Pi@m0F?z}m%WUpf7uTdyEX4|=6S$oKvF2fX zCaX-mfB?k%w;8^Ug}QkU`ios1D@06Jqr+psn||Ik{F$%yns0CO>4`+dBjZV57egC~S1v`4JIszNc#vf{1A>1;)LP1K>I zBYYaDU+b!#T2yjgu-3Ar@Mo5ALWOu+&V^_iuzfVj3XVL}`WkTN>h<=fC{y+8HmHWI zMh{w$RQ|3mYs8U$(wsL)@B6P@ z5M2`d$H&kKYcQQJ`uv$6!Kl}0C(wC_5io#SB;U%=wzi_kgK!z2@lil2g74B#JaX&c zd3O$^L(CP@MdS@kptAG>lBCzTl!iKgxt03p@@TF`%S|1bkBG5&Id1I62JLeJ8d(%79iGi zuG!}#(`V9If9E#lw&jjO7PAtYM3X9)p|3=rnMnTYL)(X66k`20@~-Yl{4c`Uo_1|_ zg(=KLL@=y|yX8A6s=&!8?*N}2Y!NDQZ?>N27X_s}I^&NK_hVXIHuV114Jqa& zG}sSZMna#fM?PVY>Wb7Z4WG>I_`*!kE;f%`t|U`UPwqC@I-D3nKylaSmmQtHA{DuH zXl1HEduvU?ndEUoEbh`M!&st%KVOldSf13Vcq@OD!5FdUB0H_qZR&4eFCXDonp&%0>d#`+7k#;RCLnI#|pI-4!n3RVhN_>-%ORoD4cqg=fOrr67P>OzK=5Y^==I{?uZaq$-nm^tBDa|Q$00r zI852=Yk>ktGp(;1F$$^xw_>&!=DM9aPfF7(9}^Q8%0t(S_jWir!`T7gnaW<|EGYec z8qzb6^EriEL!nfsQAyB2pgLqL0+d4--%7-;*0V}LrH^1)!<1QgW zp1++}Thn*Vm%Df@8OlhLk8zjyE$|G?NNs&Xu6Ub;ByhAFM;zb&5pGe&$Eji&eC7J$ zc@b{<(v*j8y2yf^MZ99XBI2^*+#2Ds2CBzBlkFEUNn4vEl8~*(lSra~kON`>GbMfx lilu=4N|r5*d&wzX$5`) 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/400x/c-loop-and-wrapper.gif b/vim-plugins/bundle/xptemplate/readme-img/400x/c-loop-and-wrapper.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed0214afb0a398c8ff60ad0d83da2af54060374c GIT binary patch literal 72773 zcmeFZby!>ZoBw?xgy0G8gb-YcyMz!z@Ze5^Ybow+L$II??(XgsYYP+#b?P$h3{+{S zol=*XDbJzIx6kbE_qV&xv-`*Xu4}pYqXKO>C-?h)zh9sGK33KweS-idq!suC?0s-U zAOMt?ofi;*LPViZNhv4*!vd_D0J{lXPzDgzM+?dDV`TUg3?%iXC5_cYbaiB4Pz5*) zD+t9&K~;oc%2F_0Ru*j`xC$1kgM;g-z>QQ`Of(QOayVHPT@_7TbrqZj&eT{_R$Ws| zQ^&+uR}0{>0#J^Cm=(b10fN;Rlp?v+f&pACpqv1xCjwd-fZ;JNog^NEbhJ{Wh*}6*Gnh|5UJhp^bHGYf z8T@pV*RjLtcqoFOM*iwr1Wf}+Lv^x&skN?=2hKQL);JbtnvONsl(6#T!5`u_kC(zH ziJBi%^&lv?xSEpewDDfb#7Gs}bVa{NeY+$br*yTzaIJ_4ye@)hC~IvhM>N&4B4}G$ znA%xtTU(miTbsGq8>N!@!yJtXmSlpBBiV{9yW841J2?82octY~D0Z&?&TgJ= z-o7?=AvVq-Htq@b-ieL}GhBTmoO}|z1EbsnlYD~X{lb&|BQt{C?WoZifKd*oMG3cE zlb~e*%BozDTrFtVC~R3RYF91p*dRe^;j-@#qI5{ObjVxh$XFLB+LtQ3)Mz{A=(rbZ zxt43Wx9ED6YkD^rdXyXaSIf9}NqcoGd3GrI52^cio5t3t1deG244Q=Wn}qjk2aoB5 z&FDtV8ApukM=j_dUN(w5L-NeQdzISy(=GkWoe$C+s0B75buNKf9-)Qq5ruwHxjr#P zu2EG!vB!PmDtr@~ErL1;5yKAAofe0t9AY~xV&@&=r)(4EoT7W3W4k@lhy9ZK52kkb zr4Lf#$DNWFJTj)-(ignbC%rT0sWI8qxKe6jML`nO1#%K*#a0=DKo5*JM*)-|3Sz zCuX~*7sgI6HlJSVU09xxghHivIUFoqT`bHgmYQnnFbG%=(qG^Z9$*(x*(;8{G69gg z00b#c9&KI9M)E27u8+2z$w$f9G?K^KSBr$TBJZz{b*vr7SQLs|k9VG{P;lw@JvZKU zp+-IEe53V5_oW8?gctYEP4rx8!Dq8e*i80b?I2eu`JJEayWXR2`vjfZS}Bol)tdB3 zZd(!R>Y|)nclP3)T)M^dtcbz%ORua$mjvzS-M2WxA z+UAgfwZ9Y)%3SnG3_ias_2wQVI~4h1C|OL&=3%vgwz*BI2sZpy+QaQ@u!Gs%GjktS z?g=`XNis4pp~l<>=dxX*rtuf+4XpSb?&~kFS15}`FZjq7CT>DEY4RiU#<6hznBDT* zkQa*rI}3irkBtNA=LGLINGh~E{M}OEb;=F14XXuxZV38{=m$1!|1>@}GBtzc(6a|A zTU?2L$tq*mU)`QUkxG%ZFw(c#OPecG78 zou1k;5UzJObmUapGna-(4A}=wRBkNP^0)CX?6}$bCE5Q;(9=MAJ*N55N8-oqYw~X@t+)|BLeddnoC_sF#8>tk!s_3 zD+6bFSR?y2Wcw)moD>v-FZu|eVoS9c&kF@jb0p4bLfh^`(e0hu$d$~9`b{`bwG1Z| zpUqv7&ssC3kv#eOh&*u(!4qie<0>PWk7uPRkWu^}*< zOFfcSa~Wpa>5Ax2sjRtn8)jQDy!`mpCSnsam@_LkF5cWwm+LAfTO}BQHb7a{=ar4S zJd!@%jdGZjk<8exF=Vct$y&&-u>5IDMj&u?RGM7$>vbHd+p~?stFvl~m;8Rl6D6=h zkCU*07zbNh*nb<6$YwAPWU&DOyjs%B0lYwI-NoELG$aq}BYA%A!oq8_3G7>_<+WX$!j6Q53mGNv7U`xD0T9IhHB*e#J#(iWXz1}Q1FNaC*UjZ zrTye4_hDP_>tC(Xp_c21KiyL~UHDraf8VcuPFTdy5jez-48_Zi19CL#0!Hz5nv^pO zA7ce#M}-Qo#%F&}>O`bGL}osTVt$44pGLhoYz0^0-6{0IJuak z0^4GPYb-&;QE7%XxuAw1u};p@l+$L!+D$wzR`1a-uR2$8o1OQ)A5l+YX`B?y_oPT$ z1iNAWHqm*ak}V>C@&Vfe+X|Z}`3k+ec>T1529xqN)-$s*Rkd2?;*TYCI94v&IfV~C zUTRyb>-LX5&)bPYad1gLT7yU2>|w_%SV-GAtzqyjM{{~KoBDwAnX|lVt0fCL={Mdg zd@vSMo%T9pNUD5sqw{yz@nFx((nRQDN&KV?w_2aIgCC=^SDPsjF2h-K{>Jlm^WtvRC1l;sZ^3t@6Mo79num3Th+Y*5hEFiUOTnr))wJL z>AENY5PlU15}WRZ5jm;Xf~qwt(L5%G!NIadUgvMTo48B03u2)-hlaXq6`aU^sLQ9n z^x@8qTA2G4KwW5VFjw`EL|((2U0$JC!DY?6m&-h~GD20^McLA}+n%VsJ8>HD*S>!L zVIZ52C-SF@gN~ur@hcBS;#FO_snJ2Yq6bn5Z%;~RKgdvg5LAD?Rc=a0N>sadKIv+= ztRd6PJ!PRH|20j|XyN2zgwlz)XFNGwE zAs?!oznF`Boxf(=9D&BRcF10eKYoS!1UtmtlKtWptwe32lUABsjL)0D*ejYWz%6i2 z{`E1xsE;$3O}aE>3*m9tFMq5*-SAWw5ndps%w6TWW84Y8pQLG@pPlCJ*7)uB^Y0Lq z{6{vB2PIeXx!%=i%5;t!e9D@kfuFJEWQZ zraalceL9PlnA)*hL=6F2O>LllxAZbstwQElE!ArHCvj*StUVW>^;@QbO*!XDfOBz? z<9Q0I8E(^_WBfMQ8k%LzRl(jGM^{Y6iOgh4&?!O?t9YUni#aJYhxDvWlI4w8%%o!Z zJB$8F_vL)nkxlWpdMN%{g>U9I7$O~Zoy-x(QM7Ta5TIRrYxDJ*`gyG*D!p0a!f2je zes)>(&2funoXiVXFy|2Y;~XWJj+7qKLpZR5gM6Svw_CMSYV-L<^AM11HYb>J59-2- z-X(3jnkQMOb?qZu>`iy?I6|h}Z#!|nq4=7?3*cpW-yoPkHz2_?|J9m}OD%WD43b^I z#HQSSeGGEc6CG5`?;(%=rooMgg)@+D#!p;WXuvZJPxc19W0C6@cNFzzL7WcFiteUN zMuyP1-=c^%%f*+4i3{6BiwebSy{O|T9-9?ZQBZxhQ8O4cK<)l~wT$=K9?0c=L17l74a7S&Cho zpCE)IFV}doO13SjjQke065{)u=6ia|r+?MkcUvMKL*$7shqjd&z4iHs^X1v{WD3Z0 zTYFW1KsD~NV6F%hBA3$rDl354vR5=G)*a3V0i2frCG1_FZnRI$|41yWaPP*-`EukEZ{jaOa$Y+d8s zy5=u+ts?a{8a$m|^_`0Ky>;~x0rlN|^}}E4d884aM|r;Dc?P}eN9!8qyineoJm081 zpD8>i((32E8b_bAe^Y0LX*9m0HeN2MX9ZY3ZSW)l2Q!lR96zBGR{2z-rcd7sws>28Zub;~zvysNLV3RI?<)A( z%M|S^H|(qQ?yFAktF7;=pX+P9*Vp{DuT`|a-LSvYyT3cV-=VDsy42Ad*>G^hd+==f;ClVw`MJT1_XaP29o!Hdx@I^u z-`5W;_TP9>KO#CnuOI638pwY!)IU2=qBQ(8eR#Wm_{H4t%X`DWeI4Er9eHaw^4@#o zWBSPF`jN(np*#H}V$(xeFGj=>!zYwR#Yn>^BS+ciM>&5Q<^FvXB{s%uG{)~UCYUiM z+%P6OKh|-6B=h{39b|NzecaxBlwvb(i$?tw0ObG`c0dV00lYvi7zDwr2q4r<*bxBQ ziCxE+RWCf!3>9UCO0eR~bQB=j+uD*WEP{{4``I5jm}3}H?3h;Lklx@Ko9oYL4=?UY zZyL$-S2}(eUz14Qi>AeC`E?z2!=rsI*$YFAQ}gxRr)E#hcT6qMom!qcwLG_%J^%YY z5CM2vtilc9<0LG)z?HksDh%CU2JO8`=pnx49CjrzCbue0A<>;VXm=Z-!Q4a?!A8VD zQ95&Tj338N;Enb~$Y8noWH2yKfJ;VJ7K@}(2v81Ah)bO_v(44L-NDoR`&Bar%m5WA zc-1g}T{QqI1b}Z`HhnobR1*Q0wA7X$nQ2-c5GRpj-K>owNzU5rL|0KSD-M4*PK$s8 zb^+?Pkvg`K2Ck7xUYRBV?p#3uoZ*4ohoX2AGo=Eel&Oijk(qiHnJ&&rc7fT3nPsZB z+3wbb-jr-7r!sH<25)MaYh<5q?4WP*)WNi=gXuHiCl$Qnv>L74K0@B0W8o-?KIK<9 z?NvJG!aU_lo1+$xo5}^F}rahDwecbU}r01&- zQSU!{ef`}sdjD>C0T4h%6ucWq@NNK5_MGE=7hdsnG*$|HzggaUjAQR+Z3EgsK1e=9 zppZTChfoEO`cQrah_C?*){GZxq6mj73PN>QS&Z2b+Co~&(oh{)xUmKc7N;hwswbk7wNL1aC6v}`!EJwc4eZ{h}#4+WIt5qi;Vx`BXZBENo| zq9RFN%U0gh$-sz=GfCdZZ=%FZMJqoYOM(v3Lx~ijOo>&*)66a>E5o9ly=%`?2ZB4d!wQ=!u!Mk`7-42qy+&x_gelcY4M5n+Y z@6d!0Tc4xu0byY-NugFpgS~@df)6DePDqGMNKND+mP(Kc_{fzYc$2d!04pDaZQ5>y zAZAnW9RQ)4QShD?7)KTxL^Ab*`}HH|NZxrMHgh=CVi{XumDB*rgjaN-@8N3Sgc^&` zUP9E2P5hj1#;{x3Tu5qBKpKd?ddO)jl%p%&xt;#>(?^R66N)O1RJH`=_fl!IG38x} z^+QK$yEEG-y}om=94V198S!jgOums~iHS~e2Rv4sPc}S0D zMWR_*H@mpi`v>MnSQR8VWF>ePrn;5yDHN$L)43p(+UIUFVkx}T=%vjkhC4@J03Vx9obcrJlPmC)sisXo;25yGS{7v zUyzr}Y^k&VC~EC$nCi)%=wVFu7tIgQ=Z6^6gOw-7s!vWb7p9s|%~zd1Ro~Xr zGdSHpG&9^eHQhEf+rBW{KQlHqH8eKge{!a6etvLrW_2zzULRgl_Q z!#LF_Iel9B>4Rvta0^{#q#Mw^i`H!#J${;sjzeE<3wml%>KQ2k!B5|k%hLW_@TgwB z&p543C6cWp*70c;O!B$F2^heZ99aKlpeB;Kv&CK_vwJ{cu}tahQ$?GM;Zf&PVgoK0 zteOl1x{l}vhJkF2FQ~+SeVGQCYINq1hrZczH04xyoTc^a=SS?82PluOXj~d&UBrD$ z?I<>T1S~?$zP-QBW%hgqPNQ=gBHMCU(5*aq@N?u2qS|K}J0jCq@0SR-ODQPGPNPL5 zfop5?mqQ2{~Xk1&JLjihdV_k_ickxONI*aCJHZPvWOo(UGhMJv4 zYM(PDFWf!O52%b^p#Z6Dp~S#)wkF*ber=$QKLBvlV7H{4F;e7B6g|@K6#2YUW7#D< znp0yGr-rn4z7n@~7k1AaqU%&7hqy>@wUk-h?WM5a`*6LeP-L17kdVC>W8b~G}~4XBaL6sZQx8mp_wIRNOa$Ac@}&2V4K=d4juzYY++H)E}Gv$@Z~fI zoZw$6zyTgv)vF8KgP=Fv0r8W`Sy}r1la^c+V?< z0BglwKr0!Od?miUylz1}9OHs$VNcqn4EP}pZWoE@^Td{z%~Jx_jhD`UJ@6p;(WT=* zXYwgd;j3M61!f&Y?XaU=M|=<7Vpp{33FKV8fAFq&le(?fxUdG(`%fI})rNF7_OiM& z3dEG(pmCcHXP&;_2~|d(u%3U#zEwIh)xZt^lNe3&946d~sQ2_Kyn?>7-Y;xuYwmLmchxhCSiLwao@!zgzaC;onul}#O?;MvI@qF}LMs$hD2bSGE6xQ$bz zd`aZqPM-e7Htv-5Gm>9-^6{Kl>)oI6ELq4+E*DfFv9y+$gK{dMz^z5qoLGQ6oAByw zI-4uXGTT?9$VYpff8frlraK%~s1FAS)B@X?H@x{XRH3_{N&4r}C6U@4lCscz+XWs# zHe5zr04UQ@ST3Pa@JQqvAZrDJdNQ6ZYfD{_Iwhn9ySnFmP!M7(FMkv zZ72tThPbzW!B&`nSzTDss3<@gp3*3V)rANJT03OppuAS`XV`eJvIuFv!GsfY>WPaC zDt)4s>3T+162D6$u1{3eFyw&3FKU?xd`pip!|?8N2YO>g){`5L_x|$>7C7GJ{<3*kR9TAM(V21a3Wfvfuk5qsa{#W`C0#r2ra&9@G73I|S0F=WK zdWS&k1R5fWF?)RCVbED*e{bp4hxKX__mV}!5enE{2O6`%W(an|?+tKpdU&0_LaqS&T*K4EtlMy1ROQpqkPZszyl-o zhsJw`;y(;JELIp<@D-8@-xi}bp@qUoz7SvortQjsn?qVsP?*FD7Cb?HJCW@?uocUu zzz1L-dQS;g!ZxMZfXIras8#w6yPcU#e&}DXJ$nDOQ$Syw2ma?0d)ZC}E+`G*I{@(O zz$6So zP+lZPk?-$z^M|dpi;uESOYt}y<#Ra7H9gh)$kAY1-w0c8&|FgEq7ElSho>J-NRCcT ziPny#=_VE0=2qAhHjxV3TuR&0%1dJ_8j`xkGkQnCi&}&g1uyCklh>n!1+VUunk;yA zL7(?`Z`b2S9`be^@^=|J=>5aVt!gRVGEf6A|DKtv$S7%UsIDuit1B#Ttt@M6ptbiF zwsp4*bX85xb~k2q3^Y#Um4Sy5C|TbEbXSXxy@=ddCP)aOR`b{A=d_)%4w znp>(dlxd1YKRr4sdagh#JR(wktYo5sm0|;dTRZZezE)786M5il`8t*&224@R<|Cq! zg}vMTefcH2(RWHwKD|M*Z&EF>vE{S9TGvlFDP$&oGhbW$p8A-7HmXKpv$GiYYwJL&@Zib*4Nx zZ=qzbo4I*emdl?lfKm_}aILaYDOwS-L2Fg3WVotDK3{(zqU=2xtYI#@#619%Gg4`9 zbD%U7MW549w0fki^G2;{H2fV$=k(z|Us){1nvaXSRYil97GQJXnfgTV+|%=1LOht% zfNT~PZtVl8GZIi*7N3v3=1Z2JYIF&wizSUM-MXAOwYD#h)}Du{q0M0`o~_0{&$a#T zk{gBNIK4veUpWwB6#eJ)yO-V5W&{$;LR#{}fh&erj#AP;w16>i{|vkUP$>jUoC=mn z{@xvg@B&bYJrDxJfGh-HGXQHu`+F<|qo4{_3E(6EJT_2yr@zY;PLlx6RPb9TD_RAC z(gg-NFvZz&vD-@RRS+l@cpL%@a-gIg)aLdv;c`}%b=K5$)-eVPD#VoMkQq8m&p6uH zIML9=$#O5V;obbmZXUkY-YzjIK^9J65hVs%f~hP%As7_Jefn}Jy&%4*EV;NgxVY?|6iq@XCfsx}W)<)VRUFzSFg z=SRY6Z!7|(8VorLLpk$91rq}m|Hw0y`}z&Wn6|%S%;5Zd@65s^7+pH|qDvb%!0`9< z^6%8w|Nhl~%N5wqhYF)bOW6pv|91vNoPpX}*_#0opP|B63)v+6?_>uDS+E^_I5`vE zW{<(kYa*CVmNs-cX5RQ>mO`O*9`_v#;k{)bL@)no=NFn2P@&}7iCJWO`|Ju7k4h^D z2OR23AY^fxw1B)2H``2(FXQc%78!Q7m$AGlzpd)zQ;3{cg)>(~LLkETv6KtmxjZ+v z&Eb}9S?0mw7NmQVVVqkU*?DJQZ=NYiIFj%TZvi`!Cpwni5V@MaU=91MF=^DUe*fgLx#R1L zAI=CFa^4i#sTfRHLQMEVPKuTBu03TV95d0Nw_QMmbl2F)c8;#_EBB6OnfoGxR|7b{ z$ggo>I47l!{$c$XhP5WXhe?ZuU+IVfj)U4Ku`_PYL_kg0+~_HTRt z58MSx8|VQ3skDK%093bqXYfxoZr>$<8V4GMeVGGc)eoif(9rn1Y1kLLzgvgD>)j6< z0jk~)-|!y`U;W?@;rqK?*q1-hEBsvn|Lz<9E`t9j5AolnhV|ch&woY@{{eOWR}KHG zn)a8RQA+=XoMDN=dn0XVsl+XM`{qgxw+a3{9o?R5ofqr-60`2yB@86@*7fBfXvZ;P zlFzlfA6u|x878&6#4TbR7=JX9Tl4Gy*uiUzMa8uqw_I3bVm)6OUfKkf(VK-%=;qIk zBdIegT(+!jDn}LgnedDE=Y$|}<>)u(WKqy#wE;AIiI9#9=Q8?px9SqxG07y}4kplT zTy@~!gXkxn0-=AHSBRonO zhaLR(2LqLCb|Wjeq8)(VY$b`x0*l$ATH=opV#5YE?h95ux1yvjc)2dgHJigl4+5M! zt0D)&TS+49t+E@UrHYAL(w3d-s9dzWCz`J*9PPwcm!rPH5`Hl;k3;VqIv-EzByZ#r za^GO3r|s7}ElG*xNE#0szkUoZun6V&g+?Rn{N|dkf-KfG9s_&q@aloRx zTkzM(EK1QJ)#*r^Mvgm2Nr_ijmBoFEGq)uwfMD^G>qT!ziK&tz5uE4U^KahZ1mpLJ zwkLRdM_5YVBN{@Mu#eP#WHo<10VjG>RlhN_I%|EU?Ne z3oQp&6lEc#B8&_a2^FZTCRe&OBtlM)?bb~ z4d@;&m~tB%xAe@ynhT;4wI|WSBX{sQ0vgWC!MIX(Zm*oo&zoWGc!GkeTwN>OoUF*_ z*VXtu2hYye3M~HN%wEw#fH`N^wzsi>GK5GgUXY z{RVD5)liJ?F6zmN4LHQ+q#&DHp}k1vE&Z7`lNz(&*&Q42BWIBwWM>f$3&LWoAe`L7 z;wTE-eD#~X{$njsqsuGT}|xeh(9>9V}Z^D$FjTD98_l=bQez;x$E zjm}LDx-)x<6v{8{x+08}ja1SQnh>alCI^rKu;^<;Y^XIcR5F5(Ma3r@Cc$N=id(z;dh%81q4IiOuylXc$EI7C*m&E z)%g?2s+13=vGfzs-f|9RafkB_vjfsv0gN|hJzQpyF$0jBy-sXTq^caJC$Fk!S6xCk z=qF8oDd3gIwh<4B3Mk3!7Yq+T1XSSQU9JXCsrTs5e!+ZqgVO&B0|_XJf+UFlfUcC0 z(vPeQA|bG-{!WEd-OVs$M>S7^Mp&d)WF%N`pz+&hLtx3dX=s3H_U~+HzxKcbNifsy zpGoe!J3q45ektx#p??^*y|cR?-VBVX;E~-wwPb&*qyKAu`7h{CQSl!ADJ!q2tg5c5 z1&9p|b=i$Pg^kTQO_d#;bY4s@pMkyUH{Elh4x&ypLuIR4oV8G_KRI`y zuYLY!Nk3pA3#?k`Z0$b$ zR+W95yJ^A~ab--5982NM03-=yb>bRIY@SlWo2szYp4+9b$*EY1UZ+d)m`u7~St^!7 z)9<%-ja?_v<++}?cE>#KY%&oT;(yOvMTsKm)CD&!>X{@*>!bXAOb_ckCkaAjz#uD) zT_~b{E=^!Srq$I*?ZWx%o%2N14=h8%*cBKcWMRjUJ(1vhH%uO)1i$_1)#mAJC_{e? z#$e|cXWsz`%gZP!ZWJ$RuzDz9puwOc_@|E>+CI7f1sTY>j+`)aAr;+7NyfsYpWe;0 zN!L64%VN|Agul_un@8YG|G~=(v+tg5blA3VgKv67?qHC7r^)Y0FE$m?cbIJ(pWo(O zZjhHcWrBl>s?{DhJ9sqx>u>K4&<`I&?S2Jb$ZtyTKDgb2VfmW>3yl*y)0)i+Wnyx; z-1XaXcmjpDas{5IY~_o@-wDXT#0UrG$&{zI7pQbAw5C5F6Ou{)c5XZHD5nCITx#^f z6M0;3PH4XpRl#?u3KlTlpHDyv0?*j~^^ye|u^--y_eL3heCfX#W#9pDdo^tgsQse} z!Z2Wf1E+PseV_fQ0uxIMWyc5$W0@bjIV1-sH(yV1vj*IJ*_>=*DO_->rFdt4D232N(De}TVIWa^c%mffdq6j5PoT8YDjFhIXq=B-G ziXKK*9iw629E8T;GlIXM_O*_wJ<8ifR!5F<_T2?P^&g1x)Bn=kR8B|gT16lG3KCRn8r zY>qkDr1@G#c#}h&Z4-Sd>0l0zB-l_%2Sdqzhe$3-mKMn*+jJ5kolHFD=oo9|m2B&M z%+WQ~-Yy8Gc?xA-*M19y!ro^h5r|3GTE+FM5JsQKoNp>cN7TfRe<3l8m5I zx|3tJvs;dd^G+}Dk1L=i76hcz{pmRYx!J)b1;M!m!6pCg z(*8g29|TEI*uUw!|75u_()9_Eo~MV^D%UQEmpLai=A4|EyJah1r=K7hJVm7m%SIvHVzfABTw<=rVB?=8&vhYH@^ijt0| z6n7p0mL?0mTAM8HjXP4O3?F9k;T$If9d~(a^Q*hOMjcnMmddG@Up+XT-=lNX{mZ-O zw@+9pD3jUF@tt!Sq)A@Why3-vfun%_-u zS@c3tGp3Q}$Z&fzXq?Hk7=fkDpqLPVfdJRIBijPZ{vKaUeqS24c{2jUA^l zc9vd`ie$M@WR?#(a|{&3e=uZDT^~Gmp;>lZmqvjlB5kQ`1Jh@(zeE>ns^j68@?@$8 zpQM1dBE@_XF}7Xx@~Q7+m|H1ZueckHv1Ur)-3jP;m|jqf@O5rMm+G=p(&~2 z7tWTH%>t|Dw7!A0X1S8fm<>UA&T=7C7pct>cgalZ$lI?=Y8yLmMGi~7{i1rM<(R6d z@Bfa_*OJ(CYTztL%=-_8)|Jz}w%Qbi|rM zdH)E{>z0v?uucg)&i0a-r@h#wFMsb$uJ*b)kD$B@TVHFXori3gjsjA&gQ0R(d#V0h zUt&@^AFcZtBKsl=!bvrMxy!$ChTe*j*6XZjC=F*C8=RxCWCfawe(23Xy~ywwkap0$ z*=M_ob0M|niW`q1*>B|WbfP_k*E~sA)URTE2P=h=?x37Ra@>Cj^fXVFRm)jtck6yz zD>zU-=%rF5xSHNP;j00^Khvr|5t|DmV?;=X)tfI(OC67u7?yQqswKSMY{6M+dm ztEMDj)U6$+tJys`h`B9ZbD{g(rI_@04V#=j`fJvgIZw+wZfau3Q$vg$ zWgOElDN{Dn81jXEyINh=MOf$Tdhpg(cB-)8UPfG0sSZ1pI~|tSN)H$GX`?y*{8G^g z9Zo#;RJk?#7aR1c$) zdW^er9d!uT7kf+8C)A67f*UYb6(;?eie7o)aZMG?t{BA-MVf29C9C;POj^+L&!KNv zIdH8|Jw|~uOs{Bd3m1{>NNAzf19&;rB_?+1WwOidTPM||&t!GR z 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
        {>J zMwA%LyVLbKS;fCGD?kdcucT=BSxaB54zvy}2 z^tFHD{Y8LdX>o>}kh5v1@~}+f zgNWtBzSudpWSK@z3t)AQ5kL$Y30fQgSgw6)MLZ;^Zyl}tzvm$-|#_e*~Utce} z>0_Q79I)-9c#^U3XF@pb&BTV%fBIm0a{4ogDR`FUWe!*Nrf`yl7+ z_l17?gwBU4K4N6@Qw-_L-@T}0jL|GtDYJikU^~k$s84@2FY8z7Nq)CeIJQ->IA}HB z!C}RyzSgI`97ZZq3Vy6HXk|55)sKxKjO`M6cD~N3UQ$;(SZtLv800o}o8wB5b{Tb1 zK~V20&XqHlRl7d~1;(`SUKusIx$>cCr~BFAyN$sEi(a2k<4%`VRU1JuXY5y|)^qrsveHGUM7zzl`Lma7`2gXN^R(&-0pYSm^XtfFdI>Oa^7!kW7d zMT2#=b*i-7w%G5CT`>%gB4cW12VQPJ#M# zN6&V><)qkT9Yb*k^In%!HqxHN?a;9h(q+DMzNPBdN1b~QJU+cSZ*agTp_2$_zDACP z(5ib?Ss2(mHLBfyU;WuQ$UzFYyX!dSXx$Sm>HclOMBp0}F72`FX3xGgRw-D|L`QL! ztzi!*u|S2-QhbAgo8Lb0su(QFmIjdK&dW((&SL*yJ~X;y^j)2Zg&8!Fi5|>N9=6Yt zm^lM0NL~WhXm&^8C!K(Yj_~o+`S9d?mmhDU8@mjNx_rzXxB4P*jN(tJpMIqT z%4d#-34?e5kX#g`;|MA}P1c64P;{6aO?8OB$n*F^#n-7qfnYUiSmSm?8|Jn@9aNs#B9RSnfoP(AO;J=X>25E%g4^LQQ z8Kau@Q+jlAu(G3WZ``;(iskRmM&>#6E;GD4xRU2GsE4)K4*H^=V`vpsj&p;HXmMFu zh%T0O{A?9x#9ejjFF8X&YBbVOBnnRYrHOV4n3I;41<0b2U-e)7tkO7K26PnJUe8}W z36+UDSN{A~P;jIDV`j71FI?hT6@kC16m`>XE7j4D_ygON)fay znl~Oqtx{9tJ^bR)P}ljCC?&`2gBgw*03h%5j`)Pz5xSaqJ*GjkMG5m#e{sYjW4_qQS=FN9CI%O6qSgs>tj+8Bgu#cjxtc{J-&UvEo#GQ7X94g55KezHBYo(s(FUEChPc=f4uAW+;`mK zb&GRGL`71SW$*RK$9E63*{_1{i&MUAV z|NW~tNueO@+91b<*yYNL#YG$n=}(r&^J8utVpq=|{`#78_=^L30Kr0?upjlXuplf| z6&5;%#SW0?jL0!^W^gKIlrLa^4PqyZ<#LVmNqD9E~p&WXH41 z32K-w8%&EEruBP*5#mBh@*^d9q=f|(#W|Fugr(IG{~Bd}4>9@xqdCBBcx1cewd3GJ zLlH(~BIbaQ10dnbC27wkdt|``2O0_$3^>zp%K3091#)RbNXWVgE4fK2oYF<=%gfq> z2^+$SKEmo4Nfm!#tw^a85o)SF3hF`Hn*PUzmlKBiQYV8I^kNka614SWG>wu#n{@T7LMo?0}Rr($K}h_-apb8v8TGDL-28HMN> z#G;K8(dOw^W{D0cUl)@Ace7wO>m)Bd+W-^yFeAG#V|PDCi&#T_aMDUJLMNFTq*_`< z7(2(AyQH7APq1{4w|4O|^7SCcsKhjS4V=IbH2Y@LC7gwsBr_CFlV6T=aIR};wrdpD1*{l|JQ~Qn z6ORWnoOgECpB~e~njA3kF0i4xG^1 VALM^|G{_r>YT!O?E80Oj1&aY{tz$p5@# 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

        C2aFy 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/400x/py-class-def.gif b/vim-plugins/bundle/xptemplate/readme-img/400x/py-class-def.gif new file mode 100644 index 0000000000000000000000000000000000000000..a52d82180945daa48b96d691a7def7e0dc57271c GIT binary patch literal 43849 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

        sC4lmxJ{+Z8PKJStKwMqLe4Qa6~ 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/400x/py-try.gif b/vim-plugins/bundle/xptemplate/readme-img/400x/py-try.gif new file mode 100644 index 0000000000000000000000000000000000000000..6069747110c731bd3df6077fdbcffbc1277be1fa GIT binary patch literal 23815 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¬8GMQRj(m9HT9z|b?jiN^bqJSa-(hkVs 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≺X_`5gL-tQ%YFacSCw+OkFi4+1~TW8#tV7X-r?d-Bkr@f-=A*NJKV3CFE!q`<0JIu z>Xo)Fy?Nl*0UK@BfDvGsT_EKx-D^x}Q%uBOw7&ORSh7&mb>)58vzzz1+M+)X3$6Tr z9+i4_{5-CVIQ#j5kRtl)q`t)e*J*Q8$FGm=gJ-`!biGK`dH3|76>dv;mD#N<$xa4D2KUIhmBQX}1l{6>su&ftIWSY?6k#WWY*D;v!u6=A%}KWFF>RH0LeBkj zR|L^jlVbhP1!ZpI;zp#lCJ>=!H3H}0B2L9vC?V+jhftz)iCH))9dC0DEncd_Om~y_ ztk>VCfm+Bgx{2ImxkHZqv{Vh=cQm=6F;4pN=GZ`#B_t{r47ovjkjeqbgIDq3J`{gJ z`(bXn1{br4#DCX@2{(DZ9*0AZNZH6Nuj0>n!NlOg2Bjm6kGHNmTYjjnU_k+)P)@q4 z)iB`WdP)8k9ocL3tV~oU`|s8NoVEdi!5Faox{t^E-Ga`7l9?oZkqUZIe2EHbXNFHjozg6p~xaCyOj}A4oU%8^P(l-dj2P~>4|hcgy@eO zSW*|01a6O-s^F8$GvwN@X?!g!`N?lBXq73sU)^nRu`VTop2kwx?^+H3PX&P>#!`-9 zE~gC=SEdmYcbyZw4GnMA@D;6wO-fhZ8~E1s-KT<_`k4dUJPo=*b%4dit*bZez(Rkw5&KYuob{!aAbsNqaU5e7)Rv>1eHgNR-lM zddPpWnYw)>)4kMdHGVlQww0{k=O-Tr9eRNtbjVCFS6&|rkM64ZDbrYw6b+jHwwlL5 zKQxrYI;BDDArHz zx2+8?4o_Bwp2I?zw<0qU>|mQYUY?4)yck9oD1P4Pn7>dc-i&#t(@$y?y?6+d)6(g@ zl~3HLqZCV!{h-uId2g|Ta(Y(p2do2|uu)MNP*5cMVmKml<$LvqrEcK${F+a8Up=4U zsh-`h_0pBTM%m?4qv&571d9Gf0Ck=Uhi>$o-JeW*}r%7!4cs8%#VSrXR@Vv zu^%e-Fa1kNQ<_;B!&8!V`fBjg`9)8jw!Q27=K2>Q>&c(3o%%A3BVxo%{UWrRg68(? z!F0)xdbX;`JK}&BG^B2t5O)(S*#hN%Cgv%mtA=7~VO8>4ZsrdKB-h*i{mS>73fXo0 zY~o#)gyL+ghhPUyI)=v#zrAK)1e08|+NdRP@foR4R}% z_nm1$<>g`eeE~hwa;hRP^COYy4ZYsUVC`J{=zTxp$f3omvv5A4y?evgPQM&V{V7e+ zv!b1D65eHAL#W>{5IoO=cT4; z+J9L`4#@aQx^<`UU+V9x?<&hG3#%9En}7JX{#`QinwLb;{GOLK)yDI@4>!}(#2aqW z-RU<|UNuuqawsqr5YaThZL$LD#DZU7VLE2;6La}#JcXPEV(7u6V2d6#AzMvDd-u4r zA}i~77%@L_Y#1Xx%+kBx((lSL=*sCS)@nLFKB7Tb_{K@}MjI`cP-+hF;IWpowpP@M z|K4N09WT<Cnn4vRF8`wf35DLK@jkAY4P`6X&2 ztu?IE9|Wa?^U~X15Iu^#^Pi*aK5;}KaeN={RyNbY=p^Bml3aA6tjVfP@v!T2*u*ss zDdS8V?#%eZWu3wG@WOcop3X&^RV9%{5=yxhne{T&<@J!u-iZq{UA9iIjI^uAq8Giq zjJscjH>#@maII~nRWm2xYX1LpBotx9Pn+d1KwsxfHfa|Tb43&*!W^gXCuC(n; z?thL3N0;|NDwo>CLn=A{Hv^+@v8F$-TqKuQ!noJO8f}c3SIX^-(>)KbBx>Kg2cBZY zUg(zvc#nd#go3UVFU4W6@npHdgF+$3B2)PybDJW|dqvh|MYh95_AiSZe-_~wi(TZ4 z-E4|I?iG9K@?wArj|Y&M2)=V(IO;la(jelpy6!*@D-FsB4eA{_L2afmnUXQJV0>{f zopyQhv3gY?sHBWtL%txgKwad6M!7tbB)zs3O<0(e6w`SKwj|6~EmX6(tlg9df(m1! zt+e6`ofgoVm1l6aaDQ-*(Eh5W-!#)@Tm27LlcsnoqFE7cexg9q9khN}P(0?csV z_L#p~;NYIegu%#;(P>%K^lX$+xG8Sd^V>TEX1$o1>zW;Ilc!t>fN~+GT=VC0cLZ8v zmP+olcio{@PznP;8ljx`F;G5_avBAyPfh&dMVv&d_lZ%NWQgj#9{$s^`isH(ldXDd zld3TR!gHMm99PCiCGMBQj@zLCag>uQ&hZ)rHBzXjT6;jlpIDjCzz7%n5kV=^6>uq$ z3ev%cMKxLN){@|58TCm`NiJy(VlOeXrPC-s8q8g(w;s@i%C4-QxQ1y zgW+ADj&3@1|A~WoT}I$ohD{<6OlUNlkf7h_YWmi7&D~A&iZ`kd>~dvliFX=2%(yv9 z|G4GBxJl%Ip<_gOZLjsn)X^TLcS+p-kT@#Ey((b%GUVcEZkh>zI4=ll^!7r3YSaGc z{m0R#OAE;P6-&1YbzOD4-Uk#P;Le*}t|W7q8gm9<9oJpp8~_ntASLsE=IL&)4!88b z7p`v9xm^8u+x$*m#>$}|`oFojca8VL(>p2+#5J3!qZ8+E7Qk9c9 zPrXeWjRO1NVe;a4ee9@2etLpr3e9?Ig`!xq#tVeNo)SL;wY&>zUqS0Ll;UQb!hW#s zpe?&A4E0*PR0N2-=nKnUJsJJ|WQ=)aLUCluZe%8UWUgXl;mOF-tC5x8Bddx&el5s= zpFDX_5Nf{|H!6@@iqM@l#LL^?2!}3O*L~IZujr1LpR&`aOw%c|jh7(zOYkke?`uk! zfX}|QA>)WkX>$1j@j!8c_TS(1fc8;JY-vfif7)}_RnKLrJh$r5tr}sjZPHQL9!fdr={tT->Pv_i8BkamE*m;K1 zURCK5Ayv@~F9n=3Z*^rzaM}rf!dx|>41IG*%){3SsW^~599;s-Je~WTH;|N0GQ5!M3{#;iPe4e)j2!WknV?n zU;0I}G(Y!U8t&64+NC3oy5}vlXkEkoIHjhxspe>@hOgY6<8kd5CFMy2X>@r^cZue5 zMBVcbh!rKb=W~W6#`G}>clu`U_;o|vIE?xavMI5(x4yM(f~$f)1<++tqAF%$w_Qw*e5RM=!{7d?yt~S;DT{RpjCjN+{wSE=E>y?v z#e(wI?R`eR{SH4M1ch-{#00$(NgjZ1rudg*Tt7UUS8D zj3kLqE_9sm?BO)uT$gu_OWUV-*_Y`c&(k}H{5D7f_5Xd8#(gO`Z^eK*oFM-m0w|af z9i1fpX=EL#fBuS-kV;TTb+a9HAzl%&RPeIf?Jh|4v|IOMoqJ@nd;V-K0deogQs0M5 zS{`s`3J6W>W*uB^y<`0S4(-^DH+auPad>Re(;C^MwfCM+lxmqlNi*(>{reG<6ABccjp;7`^{e+`(G~{hv*Cc$hy*zHV|=@Bs~@@?Q8*M|*L0^hrZ45jHyPB(~zHf2!A=YL~3p{W@RdNo-6Z_qtxP?7s117ml0?8p0m z^Rn*FJYw@GIzv`0KAC6mR97iz&5&*Xq@L>f1#kAGSKm{~`-wt}m(VstdxfXNDs+?k z@e15Zfiv1hs^NUxnJ`t&M@H~(R9Ht?P9?j1kg&lko zzkTp7{3qR62J-hO@gEh)n^&`Pcb+kF5QG0b11d47JB`_8k6lrZ(_f5T&0PM{A1AjD z6!t~3{eiP&3NmG0p+=5?DFLX1%euM=^PJc9=t;B^gO}5!%u<=gVW4G9aO>%$R%MWf zDsRvOZI#!PLQT`q@#!9$sXp&(XO>Y&&5YCJOp4P?+QZiY_8}pOA=&Ng-7{KjD6i^cHR0~vLRKwg`ht8F7mGg zxcyCRJIr?TL(@O9ylu_?Z9mrkL)d#pHPxjPI1Di7`d@!--21>mR&eB<%9$YIRitXJ+I)_aD@dX@fW zy+1gZhr;PK01J`_NhATDZjw~pMBR&GzHV&X|Ib6=rw*pp`X73pT(L#U`j125D3DwW zV-1DHy8;J9wT+Y1qyK#zsJ*qcPvdoGX@X9$s2wAMrLU?{VkEQce|=Tv~b2=RlzspeXe8S;NeoCLD!aZ zuLcS3eO{=p{<${y<@urGnZ{$PFV;7IlF7dlly4hi>FNw({2Yr0R)nuP_aWT_E|Ejm z+4Gq(e{@9!BP4)kI1$+|n>V!yY8ZAmvZ)-pPWKdlV?7yAbR%`b>wTlSCV^n@cmV=Y z!5j`M@ID}Bb0lqUDh$t-8wLN~dY%1&yMtyOph5M!5&VLcO64Xi+{+Z#T$;NccGhwJ zTa0;@xYi@iTTO`jyB``6LWfX_F`Qm=tSk@_64v9*^{4zZ$uBqgv!JdNF*x-4c3s;e zmfTi}*U!&mq-14!Ke zZfBn(vMx|uBqC^M^G?-n`NN#p3%vc|TbfzrO?}%;BgT+EQ(h>*X;<&%ylb8I!AaHdMZc1;sjs<_|oPF}i2ZKUr1vZ+ei&#p(UA zB`|xb3D=AyVC<`l@oYYdPrJ`<)Uw|_2;v+*L(b}E)#l3w4ZQ6zRQ_J7y?dbaZM(sl zM;l+SUnpE}Gd|f+eu+*g2Y|V6|-@e@a@zBkp@0%kI3CbR3PS43(V=uS% zzL$>+yu=Z&PB!AG>;k)m+mpfnPuA=HOPuVC?k(I|m@Twu{uk?Q7hx5Er5!l`y?Sf; z*AFWDU%QM3-Y2^&Es}3{S38t{?5@#t{`$S%%Z~0+o5@K3y*ctE%y@IuZ?ERmcsA_w z&$;Z^ueO)UfBgByX#Q(&cfJ3@>z|CUC#dbstsi@P0Fn%_>r$Zt3?kf+4CUQMxu`Ha zm<0(elDf6dEk{K7I{WE zS|ZEVbl7;UmJ5R+yiB{JzV}MEL4<9^ZBEw@rDob7p}G=a5}d}Jt=lMLRvd`gO+~x# zH8>zw0#ppyxuOTCvhgdy)`sZ<{Vh#Ol`A2H;B=u`T^-r1dOsBhKiFuv2D=hTxQE!N zB&SmA5~U@O?%yDlSR8V+j}cCCNL5?+uRlF`faEEj!2$;8o8Hn*c1~z zK-w2E`Jn5jrtOi~Bg6q)16u42&S>84iKF4=Lsg$}?Z5~0wSB`i_ zE{ST}*?8C%Sh}%4%F+D>xfpP%H;u1TRO)HV#V}8Y3|vUA;ln`M6OyGs3*D1D3legW zM&@6PWj|H)G~_YSQg}1bPw5Sv-La=Mbs4LpTonE#X>&bWQ`q)mSbT4$(nhX1m~Yyw zuVqD_6cJ)-UCvaP$2LT8$-fC&a*&mHn(=ZR-UO?ofY15fCs=*WQY)~4b7s6Kd{onX zb4s<}t@mrL^H2n}AOXyuwE3d}WkqW@lXA38vGbP-|kq74u0Rdh9WUZiU{(2ToO^zl-iR z8jMZV!D<%nzjd3C9ft~TQ`4)bRIboCUj)}3(zQA=rO;~HRr2PWC}`(AAredU6-8oLnD5^3)mU~?lKwX_ z1LwW=lMcY*0I%a zcCcRb$21K(K}_TSZhcy-vMn;JG)G6i@2RdOkV3U#KX)<2)?Q0kwKw~=DBnCDi0_qi zn1x&l3BFp+JPFP=Ti~<%klVP#tGVfYNermvY^4SJjPp~vX5MvFiByNc`l?9jEwS5A z_H`VyfX#}6m~(DJU&m6FWeXlXF8?_!x%)P5N>k-7o(b(e8bd-h{O0Kp3W(sR7pul7I@!B=g>+gE*&d7!?N#OXba`Fi0) z+u^wo6K`s*H=#~RY+L6JqJj0D$TL_JgAsk1ATq@`%V~b>dHj+7nJwxmwHIB_Ntdr+ z@gd~a9|vBf+|(EupYxR)d>V3{cQs2r$=At8{Yu!K-(G9hm92F9u zWRZRHvnxe-H5pwqr;|dLjr_BobHN=kTDbq(8(h^B(1#a(4GsUj z0E2V4;QXR9SiRT}UUjDZxYrc?3BM`j^6vX^#q-6nkeindv7FIMcuX3?c>tI@^+iYA zl$wXC(+yILYbrOQMNT`1&e1f<6Hqqpy<-)mIS-x~(^LhIYlUmGkKeYZT=?|Sy(*X0 zKlW1g-sI^91@UvDzrU_D>B5A`+O9H~b*h^=-f7&M`jX4vp5s{<^s-cQOF{&*Wy|W)9h=!C z=NbOX?A%C_kmVD_X}nE@A~nOth=l~i6Hl5%acY-9|DK3y6Yam|&SoV#R@#`bkC4Vh z`4q)(r3SJ}TlsID1H@%zNA?a+SRMfm)4=Zv{Nq`z_ zO~T3|=dMwg>b4Z+{%YVZUs`Qfy1`9NEvTNKAnBA!>GIyQs$SCgUKd|dDm#u?>(-Tg z#AV^lfzb{M9+Yc^u}U$nlicM9$1U+l;U8{mGV+@Pf1Mbm!7X~bbq>EUR5&Mm8*uu} za`)p0M_~=_7tDEyZ!br)^lpF4@j-9iV^2+f9wiaY&u~OjAyNmxO}a00t6k*p_I2A? zTJKmzcZ}b$%H+7`*|d2s&=+UNA+Jc9y?E*L&Qj@O?1ve2$X6G7vDY2uq|^Um=f5W% z^%YhuhFCA0gaM#Z$DaJ&7mai!?@u};4fD+v%{>S0ocUaQ-+W$4_2&IZIU~#H%boDs7CItD;a!)iI2z_2)315M~XMQaJ zuXfYLcw1Yvd7dI6I4&U;6Lz$oCjv)!lecMo(&2q;_MW~TMQ+Heo_5Z$*B;r951X0 z{q4G9WN5urho}e^c3(f-u**A3F}Ib?ZbveqVBmprO>389<-35Z)^!>@ya0-T#~#JR z0D)qAp1RTg2P8df@6mpCiPUMb9wcXLtmIyJwev*_kSF5puF(R`*3(XSdtpx#(416r zR*5w{-=8%vG&dI7v~D8Il15^=LI)J`uFoLr!HjWUfamK-Li14 zYUgWN<$LmB`lX1o@z2-Hi(Fg}L~%$jxA| z6?GCE`7$bsba+swh2>$v!Pd!>x^EioALtkiscdRuBr0^!V0R4ep_-kBqp&d&?S$ zoTJC|$|(goMK78S?i}6J1k?x;P)}Tk^2_p)82P_An@x!83(++RFaNThk{$oEbKTD! zPjx~~c!Wl`)Y$6w5gz>-=X&sn%4*ExdC2e<@0}9~ypJiqdcS;O>UGK}9OKE4a1VV? zM~M6Yfuo8{L|+$e;F2f~@ClmaU0xA6ahigERxl}Ycms2aK(x7M;%Q%W1uGU?bcc0u z3aeMgLKQCwXOEaZdu-4rf+QJwHTs*d^3V43N59y`a*V}qG#iK_#bXV`ABZZX?RE5@ zJCTq+bhfPf!#T&zh4`(G+0(y%ekL*}9d@I+vw}M`f8)|L-p)B~wViHK---RL_T;tn z{jK)XPSG$2=l^x9&HV4}+XoMg7R`ot`YO8K7ddq<-uX2oyb3R)_!%wT6Z|#MVq8`d z)4B9O?bjeJw5&AS=)3LBUqb_3Wo6}^-yggE8m6P1vcIi_-ivV?SZ1uNbv;^gaTX9> zc%WSQMfAsmDm7t7mQzh*=Z{DIYNI>an>A}Sk1ey^#@j`ltABMeeARX*Fkux9pOR3| z+Utd>A1hAD9J6=Uh4BpgHy6)dMA-z3ai#AOnv^y*(9cxT1;m_`T8%=VMIU)Nsq)FW zX|#C7!cAye;jhh(3(2d|oTJ}xuQzFSkJl5`e$ShPRrY2Z+dG)<3ew;%r>=#s2ZecI zwy?gcL%%~TM(SaBQz}pL0SEI>Uc!BJ%@dv?OD~SR6uE!KZK&VaDeuJYh-trSzvXi1 zTR-=uv!B(5zIHiUR0%IX`%yL8`gpT(ZS+U%=js{d&o1|$3yIX504IA=L6&u~xo><; zVmThp_sZ*+_{|$nk|&V%>$gSr^MGqH>fxv4hLY@>?`q>uXhF&ASvoZfH=ZnwH^16^ z|H*yXY5dm%wKLn@k{>tAKmT4{OPKlw_t`ttbrE%Ii7e32;Y~QRt0DjTho#ysv*2bn=G8Lg)m-1JAH1)dv|n#F+iz#TM$EnDQt{w6^=RA# zr*U8lmGu%1q!FNsG~^=fSw8_B1yG9ww>2_oKxZ%1v1c&Ae!52<2@sRApC*A{C|-0E zr`j@4`E5@g>qpCY)F=TI9Pl{I=XpdIb=28YTFOCg&a;`v>jWG;>Fibe#!F2F)UbZK z3V2^p@wPJceNf@jLgd_{Lb&k|bt()x!9IX*wH%cHH(1-v(V< z{9eIPL@9r7YyT~x|IG@2*n~exDj>%+;7x2$Wkt}W1lWR+y-4Ip#ItPC*lH*sAqHlL z2aYh1{?{Kb0U)$n@&u9fAOM+@L{DQt2a0$wh7U^cn#LgcsK6@<;uaYoGyJ<%LSQB# z{jnj{IrhsWu!1aJs}kJk9NbzF+_@cGAsMoT59#v{x!Dpj1`nOo4W021U1$k~>XBAd z!nkjQ^Zc|QrJ{Q9EU!#JuUN=eENYSZe3S;}Q6OD&UJM$TPGyDTVX-7cEP+!)1wBZF zZtY42$3a29PI)^v;qKsR@MQq?$=?HO~ z2q_Md>|hj5I#Q9}S2-?HZ7}l8pxar!DD8kKeGatYe1ru@^ragyjxOPclu!r?9indoo}zGWJb3wT-np9rc;FmomC#cd1On?Ay_f4&t&Fm50YY(z zSaWu>DWv}_YVbpnc|{^A2c+>weYug8>XcN=mNL|ubY?qgBEb2}_2k*O$86v?u_y%{)al%`3Igzejy!7Wsix;_>H7Qy zM~Z%UCbSlEYa!FTG6idv4w_{>jL)*GM9s`+5d^ZI?+vBAFv}zfAr*+ZBd z`IQ1L5FR%<`OQgW`u6^_Z+(`AaL zW%7Tj=FxMDmKKWg+TN}%#BLx^TdtJuvIs$e=+pfmuU(;#Z0_{2qTi3x&0l2D&uI{BA8drk44g$ce(1wBSn`*<7~> zCDOx=_+KRtc;B74`EHBw&YSd3ZTQ`fpQSz8&upF1T{NdVvKWiu;spFWTI+n$9U9brv8;hD zINVtNinC%ITjA}7_BF^37=Hh4tEfS#EYG#9z#wIu2I87g{nXs= zZ#+a)K(Tpe&R5wR+R#yhqbhg{`EF$YUy##_jwhUG-tA!Dz9xr3i-}9gUko~l7 z5cX~85hXD3x7#N`E_y|f%5sa!CYO6?tFZNf6Z|2u#qqJ@f>*d;ZEG$St?n|TU2Cpe z`)h{EzFRAlK*g%piQlSYsHI3G*2z@Yjg)_q+pWV1)tfZie7sh#^s-(hv0k;hUVWtg z^lm*~sG)-ApPj_tMYaDVb^HHF>hJ>y42f}v2(a_&S4&=;)Pk~L;3|+TW>KxM!pI34 z<^L?Ib&0gl@`v&Y6z~!8jXpw}G8#|Okk9{7RO@rADAHSAH_LcMf4_HunbfD)bSaE`jWt_rBeEn5l&l`7 zkgD7c!5&~!;gY?!+qk0B630yH`~G?Bp$6miQ%@-Ww)17@y*2x*Vz)u2ss$tp_F@{){4<+pxquPu&;U9F8$maxbA;sF8d zn1-04g2_F1MNAaNr&n}BP+ZS}D6pJs(hXbpxG4M@>nkh6oigoDh+HvW`2?D=2<))bFU${B)$ry}o7*jJP9B5ZO&` z#uqFN?1%XhGCpD&gO7ff*{aW{Kh$IuMQD$=pQPvD1VLZ1;NnGXYe`(=c%<2?@P}3Bo(q zVcH+|aQ^r37&?T5OSg?DGj4NX@h#zTTT8BlP^ngspERZdrz&a&o2aej_h|& zR{SAVTX+?*R8IG;61H=!>n1)s>aA~bfD>r~fLUp--uB(A0f~TMEHmJ9+GN<>3=fcH zP+5LBT7D24h5g87Iayo?XsWL+fLeVDjjx$0-&1>gA>onsNYCt}TJaeBl56Z}PQPrZ zoZOS3tBH$5@>|vBHc=TQ4tO{rolX3>>$&^Gax=+(y<1l+dR0UAFS|TEH)k&^Qt^{3 z(I$eddG;Buy8ApU=eK-Q+8@W84n5Y{g=K~WDOr3aGTkLC{oUw^ZyGukPGQ*F{(BS2 z;#+~8ZO!+CUTzNgOBPjVNx$paJWCk&y2U4dOr<~^%}plW-T3n!Kd=M6XgXma@^O1U zC#8e*`o%Qk1HhxJ`7aW{gMNB}H{6KPG!i^=M+dFVK_FsYRHtfw5{(fdEYNf=P%hjC z9n7H|-1req4j~Np`F0L`WkQw#GpW-~aDUwHjNDV-VKkqSglM`vta+CILXxJ1Igpun zZYtr*&uJYhG{Vq*f|FjvX3b3MwCj@-DJ+LC0W2)$*5x+(<|53bzGLgoS&R4MnyKZA zH!*&wmx{OyhjJ>WY8g=gxUufPlDfs!N(YR{4pj6^Zz|^hC#iR&@szhT9&=p@GDoKK zHS0DV|KD~J&8kByq0SxYB3muZr*~Guh{y~qyI#v#fmM>~gs2#=%klHaSHq!~BgG~4 zTJ_CVBVs!;B$QiQja^qG$^T;~VVEg%{hy>x3C@&zsMl^bwECu^BlDP3Yx|v@)fg(% z!1vSZxF@g{TO~C1TxyUVyG~}eFwKfzz#17Tt;KbplfXs0wA!707f*voO4P&|J&IpT zoHKlQ?5Jkvmuk)UQx)vKGC!-PF;tbvC~vj}`d+Im4{OST)ls#p8^$LapC?DH&uVNO z)pK8c7l~lC#!KpV2bw8HTEeLXbSyD1$rph$&k=uJe(J4}W+DMg)l$~GBouokk(c$p zw(?N7q8>Cu?CNEMyZWtBMOPx#zSrql{+-kl?|V{h0?pqU>5H*l7mPUS-qxC}y^)h; z$kdke^zyqj^P)4DNqy&PLHtI6b7dj74a-DFb%K=Ga_Y|4rci|6OnSQUDI*% z*%8zv@4UGFnyigTk4KBloy2ve-WQbporL82^#nv&lC8{=g>w5~*P9ZAQH9PXl*+6Z z&0yhL)Uv=R%IY0Y)4}N)o@{TxaO}aSvmXolW2ier(1tgMa2reZbh0N$@IT4%Jk9Ln z#%B4uPR&P860$}RR^>LXMfN`Jqsy+>6$qFH_GJqQUjbG{q~*ckR}2s41ERoY=Zh_u zi3co0S0RF^RV+sH5;A3^M%QFt#QMLJ+e3VC_>?A>2%{qJsQL0vk7?rfCw*D!p# z{wQ4@|COx$X^Z~$H4HF^92}s+uQ7ZDmnMExZa3;gv&b$`h+G}1Xc-Fdz@yz?NC=NM zXMN0T{@!EH&;u+9XJKQ*dh1;DXb7}1VY8NiBXPtB!FTC3NH`3yw|R!~)Y}vV@X6u= z7_7J6pU`}Q6jiHuz2Hj&9;mp#o+8OVr^#y;;b&Yb&O166J_hTFm^m05@p9fU#`Oy& zbmJ5{oY)`)Ww}mJO!GpHu?eN7nw-y>f@5>8j!pqsf&@Hq_44!IW_`-}8=ZtgyNmg) zgVc|tE0@idXks@9JB$yOr5Y_i`&EMWl)ARhSXfld5o!`WMUotTX!YSN8BFc-)ti7O z^T-0G8{kkifxS~49xGXfy<9F{cKoC^_9V7ke9`^Kpsv{Xuh7y@kXLArgCq1w?TQaN z#;ayLnyjLGSwuV=9)cK9F?zy>_ig;X=$l7pRg#BhUHIZ%PnmG^ta0qLOd5vgs4L39 z{%L>j^x6bUcwD8tqU+}e8K!@J_Uv2d*7B|wSMwa%ADzczsI3ln)RyOY&UmoK5Bv2R zx&n1s%0tQ;zEGljx202QN9XCs33*B1AI}~f>0EXwbo$NkXTN_KW0I`pOijo6xm`G4 zloc$o{nv@=X07b?n>O;1leEWfQ-@PbTE8T$+LWk!9sl&x&Ea%gicXE>cNya$$v>O8 zSM?B)1N69~>zB_6FGJ06t!I8dM8dInbKoVkQ}lyjJnt4Gb(EEr@e%RSNs%$H;jSm} z8qsq7)!zDrFE3fu&m?y)pO$*9{OWS~;Vs72lISx!U=V{(Ts=?g;QeiLQsbl)lE#|) z{!)aA90UguPqqB&1N<(xVa>U6;l=BysMlhY*T~ol3IGv0@QQT~1J}J1*GEjUvj6e$ zY3fzal^9R!L#8Fg*SsGx+ro@s=k=DRCBwL$xYH!vxt?U#dcA7$q-=Q}ykw&E&1*Ya z-RY!PPnws~+-vO$J2k z{-Jx@{v^JD2$g^+X6$wjh>Zh*zms~kzuzhYMTQ5b#QOcf2B*M-*GPVI_~53Tz-1Du(>kyvC%9uE zsBb&4+ux5C8}dmC-5QH(uLvpJ4jxen`~nYUn&%4@p-Tgy%iE!hfxvlM$TB5hm5!Rh zg^j||eE{b$2A#T%V#eAY93mWt=%Rq%bOYD$s4f!_2nb|`b+!N!fiVLdC ziBzADJis5NbtCHb&uGK>D3if}OZgGm0k$z+OGls|?>v<|RIVX&P zLn83tJQ;-3I7M%u>M8JE^C%5EtJXmuwSAmX6N|2z(z9U-2Qn?o?vKjl}Ytuy16qtdFwqoN6{J%G>U2|i0#o+_0-0z^P@l{e zNJg}gr|D#jOseaRR9^ig!J*W{0%=DU0*<<-(MV~sZ2|H-X$nIjW7Zi;uIaaiGVhp0 z{sXAwn_=oyObQjOiUYPVtncDd=V)LB1F!&?Z=Z}+=21uh)`uhdsq~nKl`~^wv#~WU75gTbI{iuVx#v<1wW=wsw(_ZZME8k8peH^Cyw5Jdr5eN?Ua{eR&rdJY2s z`{N6ThYG1f0sHt0bD`0-ptZ7~bElwNweYwMnqgkJMJ(LU@$pd;uIMSVqS^SO#dxvr zJ4GvPz?#|Htp&=CK=H1A@m^(#+;BbG0rTiNB z8)q?~|KKcz9SSs@y%Rw7(^-);WMV8RML?&SfOG~}VFIK}qnUbuJShoMwNJKCvZd$j zN_F!~<%3X~s_#zP!Icx3u^!a;^{zL*OzUQ;PC}^xXR$Ho`%4DzSIys>=D)wS_&$Tb z%(4n~->vLrRoUysvSV%^V%tmBRQ`)^5!r7d&`iFC=ZsPgK%&X)bP{R?6K>cJoVkH& zAwzDo{tI*^w(Nth^nfaMGJF_^{=opX=8*>iPhyWw6MM|T*Ma}$ zUc9H!fO?+1A(d|-T-GqIN)Neco}|eL`&5x|vIBFN0+s!neq9!*yAu52AM~|FY|!s$ zFb)pBhzzt9f?r*tTvx9*>u9`lD;lhBOvN@?**95_B)IH#vq^A@kPQ zf>!sAR+inm6lAG+bz}OiwrK*hW45husg0uEc;sb7m{4cWNaz$6gfTc^Ly#Lc!C^A0 zZXo{2LO_sQ%u8e&(y-n;5i)>}-(JLW=4Jnb#Cqo2T@ydNaRCN`kwdq@k)=+0Q0#;p z)oz56px%Kl=vuM|m#a|>xzFn($(tQ5Dz;&7Y`ecCb_;-k4AOs5F?#I9c}k`Ma+27+ zr9w@hH2c{=>V!bhq#m)yKuj|77G2Sts^}gH@QU8JhRLR5+U1P8KL!Rf`50EdN8G4u zAgD*Cuu1-VZ$0qERPKx7qc1A*`N*L!XF!rBn0oFvaCtP4iGq!gs6ppG8?aOGci)CV z6%&+o$bJw?irNQdSd{2Is)YtP<8rR40}79T`5>`!0Q`O)y2W_kA`2J~f>65w>~6nD z$ma?=;1GgzbgywP?0*ST-pCKUG#t48XaJQ|g(3|EjSgh|90=DKOs)z~9}U!$&e|eZ z_YNjPQ-=w^hr^b@JPb6&0B%gJN`?o!s$z~|xa5=oO==D4WrN!ci@L zfzjWi6QkhN?XlUUG5PATvd-ZTh0*1s!>gPl++8J1l7?wT_0u|UbEFw1z5@g^zEUy; zRKe8m6sT+F(aJcq4f6rfD;UsMPeF9iCPiO?M?ycWktg^+PAq*7fx40gD>2XNF+zelE(DH2TSPLX=fX#af~)IW^P@868goXBxdoLf$cY*FvS3XaqR zSvnJ2e+cqUbdKI zT#Y#WAD2NnPC!IVUvcAH-lt#6GXCpqbbL?VXt-|s!f1Q>+wo6C*w$4#8Ri2yp$LcL z&GGPuqrSQ3x~oOQnNPnV$ehK~qn}a52oWPDqhor%OaqJ2_uc|KeZ^~&NMzwO>1zEl za~|uF!o?+$NcHgaCe@!ZB;%paX96Xa!U_;O@2tP>Gq$c8wd-udGopL-#fD?$>`<80 z-~(d;-n38ovp(=G7l*FiZ#R>F)O=!Emu#^DoRgF()`KHaUWS?o?8SOBm^%+%PwRJ+ ziF@2=|Bd@Q-zDjOe={}}`4WU;ZvhOg_%#O>cG6)avW>YFdxzkKNoU|?Xc-3@<-gp5 zfx?HbNCB`Y78fuilFSftxcL4k&EayJlW>6PgWPX#AY;%j^_7OHuGrOtbDjmb79I;e4uCs9I{M*+Q<1**pCcvmKTo6q?8t8dpzy$`+Qc z5|^Kv>{GUQb(e$L@vz<}*rGb9PGVL0=C6A9WN#oMJ2AWKNGA-6(+pAjDS|grXCN>4 zJOwTIVv2s%EIzIga#~tR!>CV%Dnc=qp~@h#l!s;Fsv53+hQG&z^KBMykW6nDF!G$E-*Su9HP$$QQ##B;~ z7$Td%ORPtu@lUy)t}7g%K(}uHqpeZ*iw76gWAgTXqI&x*uJ;-qc6 zAk;hZrcpOS56m2Re21Tw==YfE{q{HD1G|ZMPSwGTM3LNEH>Z3ctPa@h$rFAdgug~# zrR%dJs*Cj_HQpJhk9_C)VX?~ee$Si}H4F;E^p+k8!E^6w|5l3Zi4v87y(>^SW;A<% zc=(cH*fYG>p-~*WBH{jF$C^j(nu2DtGtITANh8#(wI46{fzW3xUazI91;{zySnD7( zVwo1Ujs?SJ-;i$Tp1{U>!m75z-O70 zaMYtm=(L&DF&7R{Gw1lxEd{O!O7Q);u?X$m9IJ3f1e3AZltO98uV3__>HDrmrt+;Z zTNxz&ifJ`;y*RBW5Uz(w(Cf5SLa^{yLsR3;A(-k07#*3d(#&sc_cvq9R_*`Ed)J{M zNy*~8&U9;+>(E;Ac1QNgwqCM8vOWNEzkoUvKMqQ@Nh`xA&|6C4Oi7O+xanWb1#;Guy~B?aaGY-uAV~btC^D@3*gHpRpO` zoAtN#l~ryO5<>EC&Fc484s8@Ucgkw4we`DfZoFl&@G)mM7^oB2r1&#!7~b}QCe_Vi zQb>W7q`_dD*}nH%@L->@xo*BAgN4>i8>T0Ivoy!3(Dr)!P+#TddrC;5{X>J{p}nEa zvWm{a$4)ngR2@8u-GQ@cR}7oB$u+JgxFRbrwUNnHp7$SFiwFVvw_3%@D@pf{y-3+- zY+F@n_shH2mglhr;xw{{s_vVbWuL#CY_Ru0F9? z5hQLk^;fRHe`3X9PyemDe>oY>q8UTnuG0h%JO$!8fY+&8(BdZ*eymvx-(%d92cmpn zkmE}O`%;JG8=RH2y#?~1W4-VnhQ)2edk525Bhr<~CLkIF<29($DaDKf8m3x*?EoRK98y?!=k@n(m!ca75 z$mNkqzOAkBUo;kR|7|+QUFZ74A}h7VyCN((+l?oV4TL!DPKoy8{x)acjeNt!oa%fO z>X13BPB%wa1^=Q3s$L({`IozB5ScYU3-E<5=e_6Xa9~P=2}&uJGft)i8lXe5gc4Z%wcUdxITQ$hErs}5lB3iSz+!J< z$=q_+i0p93-PzZG6tVHTsgOSrp<;^MwnFoHNU3-na`w<5d2DK%9?f~JJJ?Vb7N{$*32>#;sJD?IM_dodYX-c?pB72x*? z6`t(7cCp@y*35eiJV0xx7{T)V9u@!xSYTL~J&iq2!s_Jq69Q3$9pewf`JZq0W%2i4 zjP{n6;s~DeCv96r=mxxj+lcE1zGN~sxLHjZ>;>VaChq9k8dw#zG9LYzg}4{HlN+?4#nDZ5rGh8%!$??t=&0ng&gqhDP}WH?gt{ z04|HsK!>iU%RuOmZZM3>()5*mOwp@=#tsKy1Bbk|;g0SM$b3a8b|$oskF=WOe}PAB zvx0fo6XExE*gz(!`Ms_Ged~&cp+dP<%@VK9QytVC(VFyI;uTD(JWL_4%GZ1b*Z|g^5eq>0Z=2kv09K>cUM*RR$TtuVt-7UZcrE-*s zWlP^!Nb@eapu5#m{I9{`f}{58J*nKTM&M8*EQ7-WQtUJ-^-!VDouFiGO_k&cIjpyxjN# zn*>jrc+dOsIj0gzZZ?Jbfd1#wB?!E_vZY^3q`PfwJ&r{*={IDgIZ%b(fUwxD=oJs8te* z$=Cn^GE|k!Vn$|jCBx&%h)ObYh|IKMFaoJus;S&&sXVT!eDSFQm8n8QsUnpUM6NV3 z)iiOlGzr%zHL4#b=sTX6`e#olF^-jGTKJd0c4>EJ&e% z$}Cy-Ls>^$vurA}lmk(tRK(^yviNNJKPdLuLKaaV$5S=OdnjWLi;lUcYHNnd-=k-1 ztNx8vN!jNRQm?%-RUC3-&2kb2(w2eT2>skQwz(Ho)8bvFK}F`y28J|&PcpJ40yFKP zD(W;O#Wgo6KEJXuzj`PuB0{pBr1lRveP*^#PF=s`cbKKOQD^N^4 ziyFk1(1}`q4JofNGM<^eJ*xKpiUDOGYnljgQ<+V(TqzjT66Fj#0ez8D;IAs3H-!8` z6J+*4bmDXI`G{>tG{Ri&YC@*PO~CSInTxCR5~<8i7W0_1eDXy3i>j;?eYkRa>1#FC zw`LMkOc+d(xDVCvrSNF4l-)mzYQY#WZN1Zi>2nNl)C9B=N2$7%=T%is%785ts8tY0 zB39)gjdPeuzDY1U0-9;wxyz!frl43!Hgy78o+!UW2Nfb96dbaqo3p#EQr$JHvc2kK zdugp&b)#GL{fK>(_IWQMdkx49aw|Ik6S3O?z3D)d0je8wgukEt`~6a;trt4WuABx$ z)88e?q#6GL^YJVXh=>Yv_)Xw+x=anCn(8?OS{UpLcuaQ7PkXmWM>!1b3wZr*Wfrm+ z7d%KOfOn`snXQQG!P*&oc0Yg`Y@;fxqGwFB1xIRMRh`+w)E&81C%Fqs-vVVvK>6yd zsr-sv+m8upS@+XEZV~18wY~qg_UMKGSbNfSI0Fncsy*%E32|sQ=au01DQe&$&U*Wi zrdu-7(_|=3ZC}C5O^{?FN~J`}U-dv}9#+IWpKVR``$7{Qfp)2Gez+%a{&g_YLkR7q zE-7Kw@Xby7z#3HFUL-tTVu^y42Jn$-AV@DvdI-EH(RIanM+Nd+#k8TW4Ai7F0M+^JSiH2bfkVnB&?JXy56w(2~aikSN>5enYi%M*rT!QK>)o+m`rW0Db_K?L^M*yA*=)WXAYMYqtXU`zS zmx7*gb2wB1SYPTk9PPay!KqsaV4cu{Ca~^pBt)%8>{0i^Zbu6S7+dO9MD!dI?ujhv z@<;Z45$dH^XH7C21PeYc$)ZV>tYNa~Y4b*WkM_9>~=fFdNGZZ0Z(avE?Kx@;a ztEz_vA|w$;TD`Ngw=hgLhh12Ihm(awltBPnzsbFeVYKe%gFzH8p7 zXX$t0vOB)Gu48b*19wOS>t0W0f+^CRv z3d%|oGA;PXTxpQP!3uMLmY=3oIht<{+hTC^V!%5XK%2lhig~Yldd_JPOvOMK_JG{< zsZZ8wm}7Xb@_<6BnZ$PtxJ93e4noc;04L2S@FCN$+$Oge%oV!KJhJ*t=)8T}yw{ic zE%VY<;O~kaw)CVz4scH zvzE${!`xUH%?+HUWGrSc5kRt08kfP5(zJLX%s|09XXf$T{DC-89KFQ zvTWzNEF9WDNLl{=XL(djc1?srOIKyC8R;gK2JI4AFiv+{l+l-o4HUSzj0AtAX$2Nv z83E6OKZMRuf;uy-dR8<9R=bMmYqqNr`m2XW+r-9KS9Vs89bP+r>&%+HT$Z6=zHkyX z+BGdIPE9R6^=_|BSCWv=^|HH{0iil5dyZPyI<)=ds?&==M(-QBqMdgBoy&Ggg8 zt?>>0wiFS8&3k7yt?q6kK64v-CwRrve%`3KBaI9M$6_W9%nLRd!2|91PlmQty;0&vmy1dQc&AbpG@ z+N3tIqTeC+f80K=!OP}Pg>iC;s7qmLwx3biL{3u2>~|Dx+j6gd`!C?=q|fJHoZSO^ zkmX+G_((t)sx2$_J7@h)z~wK#@)g%l5wt5Ee_Yxy{0BHjCR0<1o+|X2&PbimgPstc zBV5z)Vmb?g+fm&h=6h`oB=N>`;LoKk{FoQ(vqXH7R`Y0E+?hRjk0b1$c%tu~cEI)b z`$Yr!3})&uvHLsEJzf1556-VnRcMI@zK4#sA0!B|Z$+gs%(779wL5VofvGMBSLy(2_C8ELj=mFbb2ZV`*6OcI@e9U^ z23MN$@+r1EtxD6nUxHLKyI@9Kp86-v(t5AieSd#CbtfH4T2-+rq%)*wk`q)W7Q3l_ zVqATic<^(ST!1H&CYDwi7eg-+Fqv1!7F`zuo_{P3^LzG>eFY zAT5nccXvukhX?`^F5R${w4$U4h>Ea)ASEFJi=+|)(g;!th{{>-`};iedwz4y%sKxv zvombW?)83MuPetSQ|Gq=RqXS3mxMlj7u_V)?;l*Z7mYYm^}5C>VP zdvQ0p3!IM3;P~-D`+fmQG%zu!My$FP659>TKbgEXHw{FUDl3oSKc}0DUcNq8EA8og zLE_wZDfME#6BTLjY3rtRD$Bx`cq_UARN-^v?bj+CtDSE_(VFR8jAJgvGgK{1WHn={ zXaOGGMVp0zy>7eej~M0NpMZebq#0K+BN*A6gD# zCx>9EXtJn~7stBxnpn~4`)q!E>M@4JT`}*1dFx@x6hf(qf1Av`v#%5ncBy=xSWutWSw5P8I11+__C}K(!G>F?{UU;5QUW89SFWE3 zr3X_tWEhJNiTBZ;<*-}m4jka*Nz8z+=mDw4d=s?^`yWt zwYIn5RjnF7SQ>!!N#H#wRscFoec&$5V=|~a=4wcv%+;okfjQhPs?xjulozAWq3bfP z^oh60Kd>L5%A2l&OMIt?7NDn7%|FL9_2B5ZYpNG%?-2YV_fufPuCVq66TdKouET_8 zIbW^To+@8=<}L~cp4ik2V56d0@Yc9Ee~KK#($Y|9gk;WbUJX*0DA`rkke%Zq!)fs? zg4<5sMzjosWfogazpvl@-%4fw5B0mB)19dQm-<~Zp`Qfx6`jp(=r^}c5AWV-JDcD8 ztLxSKc6at{;e;d_I3E5Md3N?0peA%8^!K7!e=U+35V|jn{CEA1SARd*=GQXQD4|bk zWIsLZ*B1^}FviHovzlM_Z?wN50pG{oW=8jx+uGKVB65{_1Yf z_Gx4V7)NP;NjF4%(cBBZJ`DqFvi3a5U z?0dTPE?XHTDALbEj~$>ZQo=#+y*jpo@^6yLN?cBZ+;Jt^=R0m&x*%w>$2R~JrF1ayX}tww!%h#t;t>A%^FaG$LhyXhW|O8p>De* zf&s5wxqh}t{pS4S`BieQ2@n#AR$|9*0Fux*D3f-@F`hSJhdtL%RHe>Y7lqIF6YLK5 zg9DFv!}cr?CvIUu4fnF80!e<)dAC4Qv%t0Kdq0lhGH76kH!Q*s_j~;w$4S&k0$k6Z zn%oco;Qm*7O9cGfRKd=vG@ux=nMbvKE zt96M~n8aAJIAhH~zf#a?Gn5J+_X2^yF@Y5D5Heg;hXst%9}p(SBZy$Q5$63NUM$+4%z@{3>;gh*;NDVIgZKa`4U%Ma>H zOnoR}3ScX|=`@~ND=?KQvqLJA zVGy`5n4Tvc=;t5a)C@gdO!5PgR1gRl?yet(q~A&tMQ0eCPa_0x0V24RT6{d13w9wX zQ?(@}fuu1ACd2r{);I9)q_Z_}_ef1U5_o|v_m zANt|~1hE(?tOZ!{k#mOt7yzmOfc1D<|_yMwyPzVv6+Z?sG9+*Xhtz|3d z=0V_wijIpVQ!Ni)Pb0t$ko5#WNhF>WFOzVGF^__X27p;4=T~Sfys(6vB7sUat8y@x zyfjRC8UZtWkmV0%?2Kk@WfqeGytRT-Mc@n=(i;KB&POKGkigstCnc5F-i1=ug!-3) z6qAz3{U2X00LDB>&m;(h$?0$ll}Zlu+bc8RFE`dIXZ0-Ctcjw{hg`(OfE-|j(+CU( zK<$N+Y{$C9ihw)R4CIi5X@sO_Si~N@C==vY8oD|S0~>)&Djw>zR;5pu*AmIqa2Xn! zmwzWFfkg`3aSu3|IU>%PBQ$Y&I-jzX4684PR-fcmk0ruWf2PaqRc|r@5mtd$-9dID z@Jpb|>i$FuOd=UJ)_p5Xs{)W12s~+Ef~b_jodIZ0VI8zBboDsYTe~pp7=9KUk;Qv&YNL|8 z8s{ThOgY=2a@=sLk)G8MMKyHqF~vQqwn}oQd#oW59IW?f+8$AzJ!eP>%)*+H+cZen zyu5ZE_EMU(z1H?pe)gr}*-I>Iqq1D1s!gMMSfgf9qjp=6a9gAPS)+^%(vTE5ZohnE zVrNRI)E`wG+bD4U_L?Dek0{r$YYf zq@g0vdmCOT?karRjT;hoUZkAGAa&4iQC-fdh8~4qJxbnhG>dz+U-x#VygvN@K)|%N z|3JXl&Q(feIu-%Pz+q*Cyq7@xqJS<{i)HOw+hT(9(OXCPz9gGIxAz3saKR5auo9*} zc&_KJV7~|30BPVTwz##z7**o{TR+FE$(8B`v$jgt67=IxuN(Vm!wGw(NRpj4PH<4a zqAgx-Fqdk8#OwtLc6=@cneN zPqyJ;x#1n};ew*!S#N>)U&BlCBYTD;Hqj&QUq=nW#C>nWhGy^=eo9$}G%!ci{4tJoGqil9c|NBo44NbH2VLc49IYLXntv+sK)hueer3Z_~}{6cvHkIA&oGGK?eB)ilhoW z-p*|gE1&(J{(Gt(=lU}E=S8@@VQ%_+)PmvkMSujz0^5{V3WnP)&Y{#joxrS(0IBPZ z7MUh>)th2|@i=cm%=iq z+J)?1vYp=x`@_JY-RI+-=7~6yS79H|%f2)h&0;xLl+&B%7g6&LU{a3nS^`>rOH z5`YhS)y@(+28=KR~KH|+19 z0M{*}NQHVXk?HWF&+hfhzwHE4qBXYnP%8~YuXERR{Rit|9g9o1_&?(*kNqiqiksW$ zR!utQ%+pt`BdKk7R~;UpoJQI&*MIChT3=z`F!`|NheF*_Tt75g4<6YFS6ulE^`#Ta zl~J}0f?piSLOKWU#*(o8)z1-EsQ`0Q4Vnz2`EndUEe?>`tyQ8Hgz;-pBdC%bu#^fX zi9~j*-LWax`J+Sz6IlxL+L;+yo`8U44_j`F?~>BS^*>kb^uZU1RNoe5RTrtc7n;LN zzZRx{eK+!T#1~1tx^rKDX91}@joJ{b-#PBw;rz3+lumV^|7~M|^v~=nEZQbXWnN~PK^?X$_iq~> zO1){8`F5Z;dT2>cas7I``@Qd0508!;jxN4A4!^fe0+x}^*8hDaFp&IFh*z>e!G!nSH%U!R2kWxca-}O%RPt(4ra9Y?H=Vq-m~RLox2+i^7;}` z(|f|C+V`XDKP&G2JTzL!i8X--eenH!U^a3RD14MbJ)ZTZGw0c1Ps2~j`qLqUo(I>D zn(k3QHuzbY@iXGh@454g*%m`{iiQM|zCscUbkivHa{fxYepq}-S9)~M_YKJZ;iL_^ zcLlBS@R{08JdYO`J=ys-+k&{*6@0LWoNY)eeeD;EF_jz8|HLPEX_ucu%FnhMaM>Lm{FWfc(8F4093Ufr^xhV;@$whGB3IPbJA8Zn z>Yim!zU1x75Tf0=Y~TluYSlWdq}MdUWXhbit--Y*G5CkeS0*u|!JJiQ&f$;ZT*Swc zd5R@>gSMw{|6Sx-_!WAzIhmc1r`IEX`;+-m_;1<*u+#FK-UV;2&=GgV4YfvZC+WqU zs1+?laUl4RF9%a&)n5`qwzb1>Yw>w}I>3=#RcuJ#*`Of1E9z6S_6si}9@whoUrQ-I z*PxQTwh6Bd?J$apVqrBgYGb5h8>xG^H=gk(?pKc%FNjsqQMvjxkX-pWCdmnGW`>{~B+X0scobhUxSFGajqKgm6Jgb?m$BL(X>@D!>2sL{= zt$j}RDwSG4WGSBWKJRkU6-63nI>|LA_wu;-QkPJD{m|9>H||*9Ec8(qzw!ETD$K8A z^ygY%$V|)Hv-@jYZiOCwll82+oYCuh7go7=S>4U8-WGUVbW7Op6=m4*dgplSCaZr3 z4cW3^DNTFfgJ+>*>h1!;eaz(Z&((7^1Ev*@O&a$3kH&Pa&+mCT-Ea-6p^CP<^JzHh zMBRT*jP2H2acB9^IE=>agLlHCY{SD(j@g_RwWJh&J~O$|{(YL$^}+X!FM0POf3E8# z3{Oox-rLRn!FlCg41t@)J`qgafP-Et29c9KJ0y2`sn3&OIMss11%Z(JWKEZ1=;sW6 z%bz?^LdT=8Qqw!y`uB)GsECQ>adD)yJ5gpj*opj3GbHC7^3-O(Dqg6?5oNWk!VWfa z@FmYc(kL^s^;INXJ>~Ka2~oL3%Oj#(t4mcEq9$1H5pN~0L*1^ab~WB8)%g-PWwWKa zM5R%hmrEI$+>E+(pHcel@-LyqRm$>fMj2r%&YZtbG_Y`Ee9R>mE@Y^t>Sg216c-n6 z_ESwwb>pn;au*(<(7`|`^dDTDP9z?|=VD9v| z=YOv^q5*Rxd17A}n@WxC;ERf(f37#DMx9AX(xekjLZ_>CAyz3}LW|y&Sf-gRVE2xG z1&7p>o_o)K%WV{YspuNJc4N6wokLGDJLNT8Cv8=Im$K3;fzd*6`=3j!*$d!X0$Ly7!47u%HxmRDv2aMm&xp)j$j*H2?I=*iE@y=RGKXY8G#5J9)` z%BU}C)>X@cwL%xp*%xFU&FAD6rDW)JoZ78?_%c-GRc@gaI)0Z^KNSdfJ}xehvcC&z z%45cX6s0~#Q*pSy72lo{rX9v%mg1zNj7X`R;k#Nq!XKBEc$#uTpwkt-V@& zNr7~CKn8b2B-nd5WLnxQansH`O1S)>dKs@;1MN!Pp@M=$ck`!8;-zHQxpACZOsl!w zEp8P_W{jH^c^~Iu5~L3;d*ZNVV}yrk82u-!w-u5tozeqfA6N52Dw!%Tu6M=^f!RzO zAd;Rp2iEQ@y{MXV^}YP*foo!X-g>#}EH8oWZPY0$LFEhK`g&w<{!;Q&}SomLoMtKt#2fOVC7?TL(QEqr{jU9V5=a z5%JF?V1?H|lYkFug~_^hrLK^T?f%>$tk;M61c`k3z=}O0sxW1IO*j4a25~)nzc1!; z5@Dt&nAClR~Cu!5$>M}eKYu?S_u zXnJqVFS2MQq_3fH)~)Jw#lSa6vr&4Olz9&#L0pOT_aN^E%V{Hyk_FyXa|T%NDuvtL!Ug# zB_qP6mlN`_U5Sx&y|KN-&2mbDeP3kV&(Zpc5mA<=FAdww2L1ZQi^E*Rl07*Z5U@Gb zj_M7#FIrte=~tkm@W%j2{#xUdia+V{Ybt0LMCslJB7szR&nK6`h#_9+3dkM;#II2j zaf5nZPU8GohEZhdgkCVy0h*Vr6Oh10qb9Hrj?y(medxKqL``-{eYl(ay47gdS~kXi z#_f7W*2o34Dy2DpCWs*(G zE`I0Gb`>x$A<+dP3{Q>c*DY+i$!IQ?*D|gwU0@K26UE>Fv26|=(%I&E4Ze`l9b~j# z-O4Szo#|L9>s*PyzQQoA>p2GmR0Vkx=U?Bjfdy(bi z?fO&-^xpGMK9{ujdGW`Ygcs(|SzQ)c?;iIzo;!U<5=wSZ%!%(J-`#I|9p~vAWP@I) zG3Vh@bq$aknp=}SZuzT;uF{#`vOaE|8Lq$6{4XxPhfQ zzvA(##XZzDP0-ktrMETDx=&yF#!FH-qB5i#&M6(P8@wN;9k*yl$do2m*-Yt>Xz*kA z(lqh_=NplGkGP8c$W5%iaBPRP+r8aa;E;aX3ICX?QoqYe+ZivL5AZM&RSZq|(2Nf< z7?f){Xb?`lRrWI>CiMro;!jr-)=JNZtam)~T{U~exQ$wG6azu_r65p4R*`4yWBOH3 zH9^mPj=QT~>~A&u#MiHmhV33cgmtU(QnaSU#dAMKDEG&Suw)P`z9^lQf?>8<8IjO( z4EZ4Z*+t__FmnYr7r&NvjTv{@)$dQlTL#T8e3*QcD#`B=@oq!?8<3|8$t4Gaj#>jS zZ_3$)e3Eo@IOIMKnP9M-~F^()AZ$nR`kaxs_+I zC&qJ|KAM0LI<3Zr!@^D5(dW7DbbOvhsRDPZ57JKtbRrL8QYMN7r99M^e*3Q{hc9nW zJ=wV{YvOW|xk7<+adeY4Fb`!{*#X@e3-z6sVk;fqnwn53^f!HQ)eNui+IzR`=YBag zam$joWvXQa`poMUwIgSkVn- zvSVGLKLRP=4AD91T42~us%KBR-fcP4dNm?7PxUip)N-ckQ~~uXZx8V{tGASxqcULy zZT;(cWA^vISLmZZwgB1>toO>)7Wvqv3ow?huLEMY+aYhYn|FO(s*VHEi&-87Ye9#ej#awCodaHBCC} z{BX`YauN6rXDPkOlIcnp>?}ZkfeIVTnV%qXIkvW&f^-*xVt|VxWNqv5{sT9)H&j?} zB?#ZwcRIHW{*e$sIt-=ITl(FhwvV?z22`BZ+~v#Nz@2W9@%9M~(Nsipy$J;tY4fM< za&^@)r1KD`AwYx1!r&f{_&oM{C@T1XDrxwWnZ&KwDBr{YolYRv(!)!_Ju25D;eM## zm@bkC_9Q|%&5{baJ=;}0DKI3V3$?gQd>bKI%rf2eBx+Dut}q8;k>^_+?=@@bxsb1Q zbHFiOGnEB!7F`5VVzr*A!&X+b>iQ_2#iwDEl&}~8vS=Rx;JwWvZXK#2Fn3JLy-Q*N zDhH?f4F{Ncu)#_6uWpJ6%q`8!nO(eh$^A2_u$g3QiR;qnQ+K(n2I#K=?^(Fd!nu0p zcoS_zrv`$Aq)WqfcmU(Yq~FHAa+SL65@;eJW_Uek#ofv5ix|i3zHHHkEbuMAttRiUaQ)r2Fea`X7#esHi~f7ADFqZ9@a87DO)+rMnLEa( zIfhT7ruq{G9@~ev+(^>8)evZE?~$=ZAGdNJfEht=ZYFjGJA*22L0VaD)N`z~9T)hnFotiN>B^dGN3dZC^98!|CvbM~fY)|vM$zmO~d?5`c;9KCE z9s$C*04WV)pp@#VvDEFHfHoF)f(<+yPxZq|oM7KDXoR#Q1TI2{gQHx0gP}90W-x9`j zk{OpIvH9J^(?1ZN>_`62gz{6V-b|uQgZ@41|`JOkMG4>YygknZjrg&ny)J(#SICFxea+N?j?0JnH*4C9t`IYRQ z7Hiv4i|{e22pHi;mSK1*23xTeIr6iX$Wr$~wvHrEoVr^#Q&{(@wQlZH-NMg0$F6%> zy-%)yGS{YI;_pP^QT3+f_3}qJ8g$eZ*Qjk?lD?~iv_p6C#PGOA_ve-+KOtI3nvS(H zlC(PKDL_UI6wk#rWRx~gZCf&-pNkkZZ1R$ipO6WvJ!hH)v#`d8LgVRKy(TmwI3`?7 zd*iv3;zu-8KIGYGS=tIvn!J>-Svzl)h2bEkE?|3Wv`pJeg(6i44}01Wt?b0KMtEv@Qu=s@ zX`RhvRGWtv_nOqgwHx|Evs0WTlgyB$z2LHN@LjjB~LqiyLPcqWto#joR$Kc(Sih zpYG48`yFA;IjpUX=MsPd4r0^PzI^1{BnR9*Z56l7fBsZ%T+a2YOM&=LgS^H9Rt-a{ zV8h}(;E=V|)D)pY4q*%=Gpl*?FzI#wNBND!m~UZn`*OuHK?R)O4To9+cvb^8xVv%? z529dD3`SfIgMI(xc1}>+7rJ(R%Li?AT^ZI7#cNDNavw4lmbJz{kcagIwg9E(J#h7G zXrT;pt`m}@e6hyiQlY6%&|{5?UcU=>3|*VGQq6Rzu6G7|&d-<{sJ$H6?)s#XpTTNl zCYyJVYehOS=JNn3qJr0|h5u?D^JBJ z%xtT*=zH}^t=Fq5;Q^D1ZG|?Z`Ld>Xv%1&s`ul5MR>TRX*o+0gyfN3Ygg^+OL3DWF zT`>S7;oKO-MV8?Y^1~Ch!&BkIGsVN7UJuXB4KJ|KlAJx?{He!{M?l?A*9(4-m!Ia&xQ^a0%UK~RXu*#6;S#2Cf7 z9r3Eq*ahSVv9xjSVcHEmG9D{^lLi-;&Zu$8gzo$Y3ZW?t_DMIPDMO!0i+P%VG5_O#<-DaIeAA}< z+Nb1&CfOaQTAHpSt&Z%9VYTe1AG3jTmh= zm6Ar&AdVvO^t}!fC*DYoh>v=8Q)bB7qPiJLpBd-6@t1W|!U~_@`;(-z5((no$9$yq z`S?(8#+zN_P=2;C0{vik&P`z)JUmNIBlJcHvMe%pj78lYo+g|N&2H9yEJ~vph?tc@ z&JXPnC+z089X>JRkTl@G#uc#PMBY5HwS>4?GJ9V98O1*CgPhskp+PRrR{j2~d%gJ> zKT`T>jQ!Jw-NHH5(o)^$v%0x0g+;g{XIfn!Njkyl09-QsjEbD0)?Z54nM?9n@)7#f zR<{JdMbYyc8CyyNL4%*-sE++9cui;I`lhGs%!?!tF=8mbDh=ni6aaa8XiTTygfHiM@)-Q7(okxfQ z`XezuL^3_n-G%6;H(@|v`gzV z#rHd%i4bC~Y?b0>FB@(9RmHRg#1T741y@+lvfYDX&%)$Hg=}UOY$;XKx}I*Uy6zm~ zcZ`^56X^jd2la-U?)@9GdIM>_)T;QaT{7CZ}!rT5LDhKyUF0< zv1)eYix%Dvww6|6P*u735=vSoT6Oh~bUGTa7z}U++YU3N;DeqSQXS zoP9H~QMj;ITH63#F?z*z?G@PQmF5p+t8=>asESv%PigFRZhj4cR_I>^-#7sI9|*4< z90P~OXLRas8jCgE@>~v&iLcgs$mAXtT++Pv*bNZtl;<; ziU^z{Kt~Lm8VwT70qBYDncR1e@yB7$`XYWE#|fY0te+ZC|1^y~33__MiX$X%pBw|H zS?AI@ey8hX_YjR852D~qm{Tx@G@({)jO~u)Jc*)gHZrZ$xeR;?brxCCNWApAOb$V) zX`#O7{H?y_jXJ*TX4}&tIRCknah53vvGkYA>Y>x$OV>$tg=82U9l^op5IDN16id!<)n$grRSXCH9kO%KWTz8`&u_oPcCp1| zZP8ODDUm{#)JsM*h6#?G5UH!T==~pIu4t*THHgksfgsmvV=o_(Pm~fLAzayV=v9Dm z96K5D+ZGLuZ5>YrHQh%_6z(0oPRN<;f*;QaT)NWpwY^eEMP2e; z&6e3CtL7%Xtsi{Gub4HHUEec}fSE!#$@nx^xffnh4JunwRdt%hDcV$fi#d$g6zhCg z4r1wqq`&2|d2_9(G3gu!!QhSn$HmPB(CrI-4#123TPuUCQVRY*YdxDn?RwPTTX!DK zWcjWy%-aYr@N`jAt7*?kJ2h`+|C|#wIX#QZsB`ELc{%91*+?U1@#W70H)5h^CrEu! zS}9fspS1!7f9`&Y!uS_CmB;u;8+K>1rE&oLyKhLhrP?#0V^B9{s!M}H?=8AV{n+(*Ou%0) z&s2VGigpy$B4RMu*l>X;8VU1|E+H*b%$U+EGBg&rJg4%GS7tL%I3A?USDqmSUNs(= zWRe}zQl(qPYUAPd7%E;VXL^cJnQgWVV+E`2!%^&KCi>QkoNBZRJWmgk#MN?R$`Y_5 zUR{cU)ZG)tT4JA`C4W=)!dBvd|LI`)pP@P~223GfTa8{)h(&XAgjW+g6{sAOh zdK6NqRFc`W{^ueQOtzRw%<+8!?QO+kOjIYyM6d79MzPkbP%8B|RB!ydNMxiQUhr~D zHx3&|JMT{KG4bqgsIGJWk$y3)#ivHkT&J#Dn-&hCe-?>Cke8`M9{Js%phX{iA94hf zB7Fq4#A`eRK|zl>fW2=PN$8~AZP9%7&M+Yiy4W{7Bl+yFgQed)h4HaXuJ>(y0`E=M z7I)QMBeX(m?hWxLSZK1fxqIveRigtXHe0%TQqDQ4 z?{s!y8jAIb;66+xy%G+3ZR(sXB`{EN|HFGei{NNSX_JQnq?IH~js`+rm(Zc!%VZGw zAO&17sfF+|J>%)XX}a9z`)qyL153Id@pVGa zW4V|Y;<~vub}g$F`N>sS@p}{!+KH|lz5MbY!W%%O{y=wJ^)}v9pr(f6Tm-24YT5G^ zK3uI*Q@lSw62~-qbB{{#9=$+H$2^9Nyf84<&Z#I+zf$MHPj=>vU&`S}*L_&oQ*j}Z zwES|%A(ZvCTytN(C@|vvb)*km#&N*I^3ZuO3jGq51%n#SKhxvGL1}5E<>(v7FV{9$ zCMSwhi&4v)K5IHY0)LZV3l~qNSb9u;vyYXt9CxwX>2He$-urOr=N!4e_Br z+!yjKwQ>>BAQS$2II1%iKspu(IxrQkaO5OB-%cenkm@OaBr&e9G8_kfmT(L1-4)4Sf>rotQ`eD3P8yX=$>EdL=Ag8kH{UQ((x(d zDD^{R9{T)ZlymL4lSl58Xmp|UDPRWs!t2v?sNgg!D z=nf-J{rfIX_HuiuHhrlNBQ2hZXI!)AYv`hW>o|0*H26?&_S#-}Oq?&cr7m;xiQBUX zHk6wQ40R*x698$ziobINe|`M4V5R8WxWd-AyI9Esd<<1TC=fI(kY_L_wN6%$Mss9} zGMjUTmgPe!UYq1ld3=ka?u}`9V2;$FL203Ze)-nt*DbxdId-It$Rq~3%tFwyytIH| zqxn-aTjiL~4pwW*u+EtGeXvo(e)$*ADctfQELskjALkg&-iPd1KS9ra$p+C{gb0qM zJvv8j!WF4P)(L9y8Y}H|K?+||1yva)v|?7Tc;SR@I~Czvc0~bkvZrbeg?(V1_0Ef* zXxzbx-6Tvu?axdX^*9qel7b6!?KwG1eEu{*7K&5}5Xl@h>f|7K5#9YCV?zmXJOvjr zJNW>*@zQec+GBRY{C*CJc)_ADtXi)I8z zTng7&Jk4)|FQF@QxA=xh4i@P;$04uCi|3=-V}}m_$;zwQWkb;{6QxidO;Cuq0Te1; zicVV-^XNvWhV*mO3|EUPbpGRDVK*cDyAK7wM%srWR{!H*Y06=sit^A3=fdj{{&lbz z3{n(`m7`KEH4PHB#-olvWC|M~*63D~M~r4%*dPHThJcCk_^2m(dhZNXE|McBl(viU2|S5;h55YU1wp0FH*@k8VOOH*=ZXZyy5 z#}*wFz0cH;UmYmJW_tT#>nJ<~mAXGov9SS9@0)!!A%AQ&cJ)3cYfsQ!rHEENJeMJY zpuxW7pY-_rg)%KTR0RcIwA4CsY%&rW;NlR04z>Q^Xvh`v@kyBt+qmCc{d>pTA}nKx zG4GXNXbhZ*i=0lrmo)nN#K@w7ZGA77!I@BeI~HRfr3pq-hA0_6Nio?8m~M+k3M>7@ z+WQtZKikx!3Nxa-ak>!GF~gwcAc+S+BpC=82beFB@O9E92P*;u{^yeO*9EfM6&p3N zgn^P_!F>Jz0+U}s>AM%hEx$x@L%N4`cP~LjewmhXr5CLE5AP4Xu+n?H*J<%L+NM&a zWupUg6J}$P$ByCN8&5DIi@-IqSQ@+hX*ii&T*WnpLG2DicFETTJ_DRQTxPth zxp&LZ4b)4Z?^nFog^vT5I}*OkrNl!+LNVx#D{LGrGqfV$%B;k$cvv(XO4jw_2D?N8 zWrTawrJv7J;I#l7(nCwG=|dj;NXwFDhCB8W9AT*96INp(++zhG0FbegA*R3k5vacD z%2OEnYh0)GluDgsLJ`i(?ie=>-ji%FYu}QBV&4p?^_-OoMr$0K(x&`4;PMRwkoZ!F zBoSMPP+oF!%blEN6u#0pzvfHLFb6|RwG5~E2A%zc>{d2uE~fdI^PO>!e$5*37{$5^ zhXG;^Dx8-UXQO|~F3Rx`UQ<8ViNHYDesa{4{GiLpo(fX-V*hT+6Z1pY6vY3X3#lcc-p@{2m_F{?$Wxa^&I4ArE!6 zSG!NRRyafTTwGh>XY6k&&4)eHep?4s*68)2AHyHMshoeWdt<$Rq2Np)^z32w$e$l= z=f6n;$zSUR=Rar9|D24z`Exva{^yM3Vq?OA2TY3J()Q&Az!GJHO2b5ha7AyeQn5D& zFVLb+oR1hR!0Q%p%P9K9s3%|UW=w`|Ak3LUoFHgYv`XufU~R7!P44c3e-%|GNh_Kt zn}vmmh#=CAaSTi`sQ{Q^4J2S0RpDyQooFY_7sHnsTm8~ZLo>!;z>x_9R*{ZLXtt0a zh)PZ;00#A|iQ7p?`RYWMX~Zjh(o} z=;w)C13oZIghGQqDRM8Vy!o4fDLdYNivfVB`%tYppnrG_1d)+W1yoo|Y=a~IyTuzm zldcfihVTDG?jnfdAg7no&a^))3DqgDH&U7>Z_QQNQ8q&Z`+Tp(JF@&RmxViBRCn@A zq-QPyP5Dx@I>@0Ns>%-Cgs zfc-N(LhL8q6P)7GY#1OReU85BuIBNs)_ty5_HD43D;ARoQ*`LZU=7|MR(NywfOt~m zZvB(bT6i#{sUq%H*)6r8tcCL*_T&v&RJc3-Z+*mM&@6ivq`;kF(<8ahy{s}Q^P0zH zu0T@W{zMvX#tRsu6Q7KGs=Eci7A=zz+2k9s=NpNt6DD%axh-nmY0d5uyd>MpeQL6t zUx~J~1$YI1bbr%*!DjE_Ca?B8w5A14VmODtVLPcCfj6%Xyf0SalfLTgk`!sekSflc zgjFGVO3eyn{46(YjS+dtJbC(wX;33*@SxB81izn*!0H{}%_d)NE^=poGy)A@orx&Y zbZb7vriR9auike{w8}nB@pmn_9#gP?&8*1EI_mp<@e?2N3k5&a(7gV6WQfe>@3*Kg z+@j;PyUayyR|=v(?*tsNv@#9=T`8z3RJ+|HpoIT6GtSJZ#d7XKoJdmqO&K6i%6w4E z>st%3e_Bk~PL7&iel zU_qYHE&cF!h&7*fc9#2n5XK9(AN2BO04GZz6Xvnyq-|)v_58KG3@Nnoh7(xyj*`Wl zD+NJ{lL*UA`{iI6Qv9yOL%vAP#bapF=Mt7C6ZlOH3>L{JyaM}u&u|_r`y_4}r3QKG zTA>gJw@ijxzpHRxtRS6wV))IUyMp{2g2|VF%Z#Dn>%r9wAu;`S`BG8d(}?v`DN+J2 z@&eR!{^YS0KX7(x5B7Igkc6Yf06GDip9Aq}e3egLnqe;k7adARU{9K>DosM4(8&gV zhI1oCYj#}eOEW<-h9wDWw_i8k9qe`Nlmc}($Ev<1yNrf@E-7G@v|A4EK7 zyZqeBHJUGk&Nr?h3kzB$M=$}9`Ss_QFTAk&9-|aOr)JqeO5^4B$fEZEQ%&oulrP23 zy-1H2Coo$8ze3K5fn?yVg^3Z@SsP_U8a>q##BIiDcRp>BM!R@5Nwbz1=0+RbNq#bLqj)6;)MVdwYT~`XfDhf;HTI8xadC;$O=hE1^N1hy%HS6icV1*p0rty$ZVaVg;4PVPSwUaEzxr4u-Ca^Eey<- zqah)71^3hMOT5yo99fm7@y7HIOdEmezl$b?lO5=?!9gQi8)|S zE1=(^w+c~iaG7L}0;69*uD$K$UN6}T%VC#)#yMxIVtc#%6N2n#`E@r_D(%3lt+XzJ z_BZExV7FY2ZEyQ{*Q@h4jZM7ar0NEWA#y(-8(%PuSOi)0nmTI?sGhR~x;5Vzk{cjl zS;oZ~yK$hH{sF7?0lV7%e)^b>D}4d2))5%XU~3F)5%3Fgx;tIv3QNb`4Mo03mw8v^ zUIwbd-J>M)TjGRooV|-qu7JJo5>_jCvt9G}XKTGS(CGQJDgoW@781)89{uXgFq_Lz zcx!|q27(9BeUIK8-yILXd-&9(#M5edt6X0v(vTwf7FlE|PvoS* zWINSt&vtamB7Kjl?%UUf9;&_{6#vQXsY?Fl_CawCvarUux`JR0(J1$85O?m7g{1!BG`?t=#2A6jZ69%7;PuGX-2=b zDt2Y+MKVo{|1=E`e|+9HE|tkF9q`aUH_l3WLKQi2HFQFG*u3Y-xGs`z@iJPf(ovm# z(gIoe@ckX*oi{M|snxkj-A7cI?N3~oXS6aq`_--Gx1S{QOgbi6^rqsHekXdTeaLC2ZMxI_ z{@wlS3R5=o)0cnt?A)F7^qCGWnXVY7t@26GE)HFMI`d#>=B3Z9)7@AW>HC)>W-E~) z!p)_x^``&0KXw(GQy!ifXU}x zpqOIz==Vn$YW8LOC$fduhY?FG9ZPHrOB{ceFdWMl6_+pBFJE{d2J5=Ww@WMNWFb&b zFR-vI!u3T!iEncc1)=#O(Q#3>V|m%}i_}$GiS93a55z?O&}uB0YDLm1D1H(4rIn7P z-s@DUY9Q?!eo@h1k*())J%Bf3Q2Q9P(F2ssAJk3XH5J8+ZoX^$k<{KCv-@LZDM1_7^=r|J=%Dk+ja~e@Q{#%ogH;%fLQjLhse{R}A!NH$2+Y}BN0@s4dhTe$L6 zpZ1Wb1}5ztE>a2@Z)l~j;;*u?Hd15~ubb7x1Q_T17xfrpnR~y9gT_zq&_r4@eyyVz6 zLaw9N%wBRpZlPdGsA&=82?`}Nf+ESKH;Lc2K`6(otNsoMki|C5Qb`?T*RUxl-F2AE}{RP$qdaAr2x8<-$_wzcTZAc zPl<*T`ShaWa~SC6`L{!u19VdqZb$raW%>8wH>zcWKVX{w3}sqCD6DT&lbSd1MTli5 zpxGeM0!Dv$eL|8$N5cgrubQ?^6PHvHX?XO@EytGCQfXG7r}U`-Q1u8!v7F;HLlAdE zaoVP`o}EfIpV^B*{%;&D4oplZR&Uine7BCZ>db}CbPnJen?#PXD{VJ z%{S8__@cz!hAE*>4$2k$u|D&10rQ=8be?H1T;CT?|1ZAIIw-3C{rhJFSbFJ(r4dm; z>CmMc0Rcg}L%LI!Ub;J6I+c)=aOp0k1*D`z1VqB(+57%}=Xw74&GVbtIdf)qX8$_7 z^V#clz25K9{JoASJOAaZNR0h=6Fy4Lcb_R|G|Xy&dd7vG*1G5tp z0b#BgBE$Nm_znjpn1Jwu&OW#j{Ikz(sDdoT@uwWIpYW%Tk&AgTclj^)ZR#T`BHdU9o(FO!6 z2#i(vm@+rP?xS6H{(!%>C96G9vl(MhV;<4MW$e@T?k9Ko|iX0Urymsd=%_j3OSoBcA0MEyAG0 zg%vfCrxOlW`SipjeXqfaQRf-V0YO7#mx*V|@ZLhf_)7%Mb5%$@UqNh3Q}k*F`NQ8Q zU)?Or(z8Zb+`Ce&cidV+uJbdVxZMOcr&lKh?)o;h1Of%VyUPsXgrJ|S{ukUoZJipA z7cEc^U-5m2-7lhKwGBe>v=GSH@@7PDhw6?JR^(ac z8mV$dvp6X?a*Bz(TdDd!jiJ8(@g%gP#bwk3Fzg5Te)}TStm}eZ|ka& zxMV(et)uKY|Ilq%=(|`S_Q(I%YcJsy>}4p^#Dg0W{madh)h8n)EE)D7@>jZpu&T|}Azt#NcL#*Y{o5lf zUb8C(@`RI_asf0teJqzUjyKHyA^pTxAF}^mJt0lg#S4QbOn~qt7+^qL7+E9+Y6X>@ zbxPu=pR+9DxoVB68VYCenW^WyN6x7YWj(SqRX!2JJCQ|L?npnKF|Wb~%Ov10ZIH;w ze9!Kbfw~i1MM~6#5#wD|F)y5;eK%$k_c9gnNE*nQdwbj6Cv^Fl1zvz9g5rJ_i2@v~kaqTO?2yD-C%9Nv}~g z!?jZ8Vjb*ll78iu8@_RN`Ed@>SWhzdRU5(Db^c&F zj-i+y$%zCwEzQK_J(Cl2cU&~$hbZYi;@xZ`DEK0674E0KvXr!>84==@S`>cd_m-;Y z#mb1(mkwR}gY=h#EezFI0|ukKK@7}*Podr+-3w6)vd1b@jdJCbvcRAlR}lvz9gjF8(9{3|&C;2av|yUQA59R3tK19tE@q&6c?1voHa zjH{*Aa?2?a(}!7ch5bA~O8RBN@GvqMDlLM!N^y*W1Omh07^$|@xSZQVS#yRtX{#0@`6(Jd&xzeO$c>39v9e1bUwSeIrI4Vj+bw+^6KAwzV3F`3v6yYS% z@34y)7DX?cIU;T7`K{2k6P}4DNsA2gs63tB*~F7*|L)xeLa8I8)F3Sg;|fcKHpMRs z$577BJKL}Qf8d#)rnPnNY1N1S*+X1KU$TDpMYA+sX8t~Y(iwS}?J7%!GC?U=TSvOT z@He)${(Fxp8i{oC@0@fuRbbBXEb@OVoQT0FydyOKHX?$z?&K1|JTikdWCm**z_27< zHy`F?e-q=RrR;o0b}h=}@3p)Tqj9aNCf7=VR0|sZM#J5P9Cke#0sp}XgO!)S0D`?! zu3_A(0w(EbV_T+VoN%BzobhJ1AiB(E#1w`kqrfc%h<b6l

        QwwqvF>s@|Fs%$YUDMe0YvJo!0wbMxKGWSn-6j6P zb{_wZNz&0knd+y<`);D>i;dug+!Ln>Y%}cz49ouYOo{p3P=}Db{lNSzrqpzY`bpq( z^>weLcLh5nG1p`4=H6Q)A-k-L9iuc!-udFp`wXdpGx1~;YOC9%R8~=3hbQO3LVZuA z9|kEzv!0{5LJuf$b%0;sKdOIq9bUG-RZ=JWq4Z_-P}<_x(#OANXzU;Mw2@u~`V-$6 zSRd4n8wuDVe%$KqK6D!nTKICD()m#FTgavKMmbkNN4o5p?X7F3$jt_me$oj_txMda8WiYlE3Ti+qT!aVyaeThp|73tEPx;(32fur{vIJvS1=w(?y*k-(K5yJF=I4rtkMgU(`ab1dNKYJqDD}9|LExZf|SApn}0Ttlmyx)0d3+A6OlX>o1{b8yxwLR!`AKd#!O! zJlidO%A(rgZLG3O>1XI82Eb#hjJJt$J0$0qraJ;`7^n==xD|j7)ktc<~ zsFC=NLFt%S+G8ubcw^^-&zMMOJ5b&VtT`1NM>49W96}lRNaSMv@if1$n}@n|CXs6L zOM;+m1{bub(SCJRUm0Er1BDfY7V3CYTqHYNhX?~^Nv@0eSI|b}vc*C(#Ffk|->WlA zvXtzrO)3tL-te*nl_J~h&j+GsWl|{0S+@Ki`DPjJCn5*_s!w;EBfjG`8S#H9sh%0S zEhtYUQ(Xbf6T!n0S5OFKx5pOO4B#{)HypiAjqHzhejpb^%A!eYXqS8IEu!nYy^K4s zx=@@o+5t&iT@jL0(YOK8#@^<;4mF%o>O0~l8> zN%K7l?rAsDGT!TpW_3t!(iD5@$efR9U2wzD5P$XUqK1cBe<1RB##Z@5zZe_MoE9)W zHn{M{t;)ok^n5YEo1qoxJ-MNMEk06(09a-NY^ufkkA}8o+Y!8FL>!R_KT zT&E6eVe5sLd*s?rz5)jDG?u3XA`}t!bg_O|0wsEm1^~MH_$k0P;L(?JSvB)!P_Fx< z!2W;&-wHCVI^(x$oz_H#6CJt5@ADly=;C_NXPQQ&x33PPDeaf}-qWqe8eycA(n^if zjcSkn{Mw<=`6YK2p?{-tMs-5dX?y1v$8R7+=kKmc$}e_X6yc}^=t8CKb11Pm2#taA zO7s%opM(PP)y>W+8=%eW*4U> zybW#YXZ(2*gCyCizA=&;;HZg2^W7?;_-qivD#XFA5m`d%KZ3sXPX-u*kdjI-hL_Pc zPL{fatT!i(&p9>WY%C0z^B}yxt`MtNuq8W$sRzz2x!kzWTp}rh;V9t*>)#`6AmcQd zaNCr#G$@UwP>i@+YD{z_7d`iBG;19a2XMAINx=l*b58`Cqzth+lBUWLnZbCUgMZjj zRm~C!&Ew*dle$(@ans8nv{Gb2FU3e*ol#HxjY&A5)bSEg46ca4!Q!8IWg8j-Rsy)F3&H21wIX~IGIVp)YlT^?_Z%Z{p_A%cYd zJ8P&Bs0E7B)=9GB2f@LL9|Pf}Tu59F7YaZCV+z0~K-<6pS9jL1y`WBvu(dBXnvG!# z!2lFF3QUPc1fX{6ihEHgI%BKH1&0}xw1ZXmK4HQx3pxKbgM%?J`LonGR;pFI`UP4S@tDDY3dSo&26{;Us=bi|5+o|IVC*-v{i zGRtZ1pYsqDjeymY7$c6udpUHI`;;9-!}JoU`pcOtcn?nSJ832-1#VN|g@FieFlE{A z8Ibh!vjqIViR0P+m_8(=cS5cDRO2* zExZ|#E3IE~=LP>H9zi17z2P-#{1ytpEm(w3I1ux6O`P1#p((rLPC~yiNY9K)RI+t9 zGI?eJ2Z{+0GirC_?%~7X2wZMgJ@ThzI7rbFmiXH=vObvnVj+zXM*Hm{L!BkTv_`Cg zIX`7-!4?=-=-^4?XlQl4Db9sKC?Og>h4YL~O5^}5*#SbZ$3MXO21l#`dnFD+sTFY& zuRCa&```tcX9;7FyA35|tERm1*^T4WRc|l?RuX!-XnI<7v}A!MdF>e~gdQr_bEx!+ zwy^;`V*TttPUBn;b1c_e42VbwLBc*72I9ehWcEmBlxRglWuNZv$@{NZx`w!ff)px7nmIbIQBPndEP>(A&KBbI_;EE?aXV#I+ zg#Eq1=pYjC5Hk4Ir<)7l**3&TxQNk4u4S%mc5chM+t^ceNy0%AZ7@ru6gD15ziIpg zSc-b&tk&_W-%^xJiO-2c+yhFaI^i!VVFT0hH{-mi)0##iDZua}TPU2L$e1VJ^OHhU z1Kh*+k>}X_b$!@AX0Dbo%L04Id45wX$PLe_Ho` z92fTq%YnHyJR&ai=Q=ziZ5I!q>mQv8YySJAmbXUGTTsJVy$`X~MIbVGJ^NsT^|JdR zCnfjkZB-o4yq7I!R2=zrgIo#1e z?kiC9l^ag8xHFk6($>S^^$5_zYqd z&5){pyF8j|K3Yx%uZxG}XBz6{1EgdD?}-sS+|e`=9d3E$&WKS-zM=E6F)(zMqASO@ag~zaQw#&VAdIb=Rrfac_4=`N&|^oJpR`)L79sB_zQftN|1=& z$J47BeEK@mv~loB^AC@_CA5d*(-1rpBDn3uUT`lTydM^*p=0rsmrw}-G|(v|WQNK| z#t+&j$oZRxWIobU3OD3&0-u=6(LofhDDq)3TkST}0q|q)s3TP)jRw=cD-a6yuxZiO zVk9CBKWRwRn!~~RFAtpG-Zax6xQlOd&oJRFEU@-IAd7SlnoA*PurYHmhoo5Co3m`p z_7mMn{G0&{*(S~@+j|7qJGI)oUf6qzIdE*+-7$b=v$PC{Xp1~f|zohy~KPIA&$ zU@5BAS==4yK`|f{m$Zj;UATbt(4{_KbmgO?ob`L;Wt@R8XJH!aL>L>gXBSDAk)g?> z?o;l853-cr6*Oh=G(1rZ)$wGA_Jmr6<{4R~-U3WxgK(*P5!_CB2f=kCnJs9|)}_Rw z92>k@f}1m~dj>c&MMY1=7vIv?Y>~jY&DYr{vqwB%ix+6kwE_eA&)WdggZvwC0gI$H zq9YIO7mxPWsXzxL>;)7$nl4HPW?rgg-(&}paTgTjP<*^bBg(08wCmoyn}@`soXWt+ z@*?@2M=NxZ?AehWyo8fgLGBG9>Q^Bkb))vnpy@?CvlKUg(d+MWum&2VMV}9?iM%FI zRSkKgztH9J)296pQYug-&3+0;}&jPfsBp@lYB z!x(CwjJZ6kv8>6cDy*!z38>QjS!3F0ZEI+b6t5Zesnu1ie056+InMR*px_Q;UuXlj)nRS%+$&F!>SL*TB+V;W zE%jrMB05mfC*MYjVE^%-73|OaxlO7W@@cmeHS4(RQ>7}e)Ed#wO&qr>`EK%?KD0Pl#YM;}(|Ft*IKWxu@N!roiW zuG@O3?qGHs@Vc_Hlxi@krEj_ggrmJWh$QIUEO3&q`Tyt3Qvf?TF2XH**8x8x|>FDqi;5fZ&!l86itMrW!_= zWDWi4VNZ?9km@!YJtGX;Jak;5ofa>udsyR5FkC|du5A=KJdis?gTe3Z^q#Th2-LNz zZ1btDh>j1LAJ*=k3z>eR^$^xIaAV@vV6PF5cqyLclfQ zUtC#Ep|ng~IZQV*C$5%0=`{>j(hfX|{72xR`dkFTKEiPN2>SP9ZbiMMk3$~y7o)Lq z%svVsv6|R873O$0%)ljfK>PO{oe9(Fw~F(Az=vg8TYrFo9mI-w{F^(=c%t9J#Wc0O z5}ES)h6ixuB_u@v@;4{Sp*kj`OThS5=TKR~G_iRnZ*tR*cS+1ib0hc*?XDRjc!Y33 z&{FB~Ny|%!NnAmFK8aq6>F7kZYyE^@_R(0AFZt}q=yV|YBA@dUk+Jd+rK*XVuyWwf zI1R1`Y=6fSECltn1PfxE&gVO&BuBgHA8p3sOkO}7&}<3>ZP+Gu!c1~CRd*(y)Y^J| zK{IVuCC`i`LsKC{7=mx)(@9*@=SP+UbuPnQ zG#(8A1$qR0qNqR9iC!%Xlf>=d*siSNcAO?XaxHgT;xYEA^peqbUa59GaK>wEX2N8) zYlo!$2V2dVpAZTGv|ilHXbGc!*?1Z+Z{X$=4! zpgC3hf#;8|s96rPRu}1shX+0_Y)A1tdg8 zHs(a#%Ju2v%msVg%%g6>d|*LNGF?#;`&45wv8+z58(`~ZaNGa|Seg>Uvo2?#B-jMI zJAea=j{srpB4a)&Fy+_)F2OUWM_Qw}2+awzqF=3KXe?)HW!fERe9rs;6aFyB*)MYC zRJpcN%i`DbXT@4F)7B}|!FVnvbouD;QG-EJk}h63-!hZo@)&8%JFVq2Xl89X>U@6E z@dg8?)v*sn0z(Ck;Z94-Lj@a(IhTs+oUW0tMSD8d0HP;~xSC*fzxAA&Pk{%n(W9AT zjGxrSD&{Nl5eA zqfNxAHuh_sO&1Eo6bxTV#$doiDVvI)1({j5%9bNKhyBWOb7k6;c%Pfg6RGhR`D}>R z4<8nKkx;(%DIQde8pwC%K3yVQ2Z+trx_P%kqUsS*xv2xtab5TczC&x{7h|5|YcaymFJG^VE(R3N&hP9vfu5@Eoui9<#0SxIz#H=~(nCeZ zP8RQ`zRZ%nl;eHbZ~ijjZq)!6P&+l{PNEwA7){V?T{xAJV}6W|f!LeCXSDDyJ#aP$ z80!Nj01j6czPwNB`?QQ_gFQSG!F_ksZs#jy$&3;>cVVcDXNIj5Kl{&Qdwyi1q!`tbJ>37-27_Y zyefV8>!-@^8u#Cb(_dINT(LPBZh>G&h!iYLimR78Mf}>IAzi#dz!!B$cME9A$5x{@r}@le_ooyU?F`0Df>x%4Ib3udBwI@gJ<(ClVSL`cEf>>i{CzlpLFFa)n>giY4_AC=AaHs3LKugfcRD_=5Z?R3Gfnew6cH3IH!Fs2cU{&j!+O{{VH<-QnU(M^|7zW6X27M_d(KS^NnY z_*y*0)m(+edpvL?Z7VR)@P<_3;6x!%zU$dQtm?#xVj-*79t%yd%Z%IzhlnS$6Fz!- z(0|=ih1I|7RG!Gw@wZmTB^sBq^ez1StlKYI*K#y0FXZ0Xty-uswE(1xzpmk}?M!c! zj^@aeKn$~vb_8q5%pl9!sD136xw_O8G0%Y;?~1#0f6it{mgMle=|Y*Cb#7C1H%dx% z_K)bkYK|1qKi=9Fke6TqKSIG<*++%>-ktWrL^nHz0oZZJl$H(?%a6s8Bb#}HKucd0 z!>13MX`YyUKbmLvU)`iEc4P>@7?loQOVel95N*-r?AF-Jry^^|WA4^A;bnD)Sz#Ew z#~OKFr%>x>%uz|>`B|Jb-MU=$={0U!^WQEM=L?qXCSniVz$GC%=$C%5LK}3Vx6uB7 zCT2ahgU32pv@+|F==Zq83aGAXck_WMKS6ddvk@Kx6pWBV*;AT3bFnb2r(0ka6?pDu z8v8NW=Q_1AI1~nM8Gj1j4eTf_V9B^)q^qHdc6P4#72>86>Km^)&Aj>1sK`fMem5)_ zzpA&?UUh6JJ{jiNn@ju1DX6+Al$L29GjIRVwf%F23D9{;i*$FO$=fTkl4+Va^x~ky z-is@1W&Zx=^f!}B)gKsdZg;kBm~La*1em zlD=dDxrnv%r5L@`vMZz}^#F+*5UR4kF(6Xd27sBsa)j-w z>BOaFR0!b4uA^$2yJh6=0sY9ky>Vf6o(aB|(A!3{1m^1s+1R7cf)Q#emJ6FX5Zovg zKW#!vwTY0ZeFqUb8pm@}c9eu`RK)=>03-xtK|AavN%gcX&Z6_zp_LL8TjMTI<ysL`Uf7g%I$iVfa8bKs|cE#v!c5(UBf zA|!QiTebm{3YI8PT}C9=`;RE5)iX-(jAO}q$rPgP^4`8k4<=rh6sTZMr*N18#2k2R zhy{Vfh3aYEccO@!8@s=WhQ)J(woUYUK|v`4^ooRF#5n+6i~Pa_^@x}#m$SYd($c$xb>G%|bU%3nm?vaIV`<9if1Kz!>|(qO_`1O<=_uJ_)t@c@bHgJ92k zJoAkyB3Rf;V2D$I61lO*N-YV{bHkX48g}T>*in=7avKfADDlU(oSFGE@0%4SVV;56 zk1XEBxCv4=k@aA56&MC)pHO_;0d>ZJ;o#FP)%C#PG(LGiT?cLa{w&9x-Y1O^<*31$ zLnEnrD94ewX~W4>n05T66wMM%LGYjC&FKGc@+K9oHw{zVA4AT-qv^PTi{PZc?>vCs zG#`xpA2c(In0?HLk75T(2*u}U_qQ&6B*c6CHAL;dG}G*@$gXCtsK)Wp^<$fvV$FYO zW=rjpSK2R?O>=~>z10S$RrFEAO!4y)VZtRBCrgtOAnc91m0_cvRmt-oA`N=d_*$Gau7X4&Qy67tF$cawFgx z^y(DXo5pL0bXsY7_5q`G50woPxLn*3FOYM};5V8=diPOJX}(cs{PTxy1BFLcDi0$4 zyg3m(Qx%Q^Kzu1gB2J2)@xe1XjacM8G~|&8o-R#6;9<-DRy_M=X78P?5t~w(6IGl& z%TS{lHJu?`_LQ3mUO^X*hs%g`-xk!@0HXBMO+drcO?u|M{%O%Qelh}X=+vwvR zyB8neesSj7BlvK`@@#u5B1D)X6z`W$L!YMjEB)@zk=7~1(+y1OUUV{4(-H-*x3wVM z1CPnrMKTIV#STMQE|%=teyKHo&*5y46kBKhDjp4+>%0FAal@ZN&;6a}sgjy|bMpr@ z@01?wqYuLv0CL30k%HSX+|sn_eqn+p+u@0lmnqm2iAWcAZE1&y(!_m}?5RT0CT!u< z(VNmzPH3Xan@D5nlRt0#RtdGk0-|c8GPg!}-SxV+Rn6e@h9CTsAqC!vq!P0tGZRu} z1ifa5D~{8$?6??o_2wOzWGYEyJye2=)1TY~PH;e|pM#eZcT{*K4Kzp>ICPPR+D? zh71e+HJLrdSMA3QqUnm_7${^;@Qr4yK(<2qVmBo0D9DBm>%u-*lnd61(>Ht<$IS%` z=#!|NFbwaTK+&*fB1nb@VNk7wc8O(;R~3i#Kc?~sgqn8#BoTBTk+m~R=G0Kaw3{*n zVa7HDhS<=ElyKf!V-bVQhu6fI^mo#}fVKL|2{CJ+E%35P#JJf=l)y&m;Ci+YmZN)06)1fz1h^0{?lS}2!Bh~CN13J|~ zYsLko8DUjxil(KA1UoU2RA*I`!qO|&i>4vt19j4-!A$v`CAT3dJHL4=0Dq$?>^Zkvuc% zI~v5sn4E3EB61|su23Yb?6J&UNG!j7WBjAlSgM2^L;_q;j*DVF{JfaVH$Z_5in37q zO+O;Vs+NSex*c}DN$L)GvD{_f;1pjTmC91gs83i0Z=kw)P$;=B5_{nYBTD}EQ{*A? zQ4DFd&?_o zIX^D_3B?-$$ks7na(bzSH?M!Z@=iSD#)ZY(r$;V3oEY?`Ghzt%?r8zO9xi*89_ z5N+8#u8Z##qKIz2OzH0Ht`q+NK-5e~p)f!-+FB5!2=@5!^TAhI3P za|pBSfrk49Fyd;K&ouDm`pnnOEWQ3kX){k ztS-n;0YY35t-LhGYghc!HD_nXmZ^o?Hbeba$ioMpArcn_gdTos1xQe`hu6Zl(`XPN z%RRUl$`(-nEbQD0R7&1*8gX|cPW)j9X^h*X!?!EuGP5mkJLo3!*T&`kr&3~&Wq80Z z;K27?n5x%t|Bqh5zmnM&!wKz8TtXNissAP7Y|&-c-)wo$6t60@mCozlj6)~_AWE@e z#C2qC00%S{L_&Br9_;Wm^H2+Xfk$|DX2=-# z89Xx}e5x|qWyw9jC}vLFA!x+T6=uEqB-#v@S9J4lK3ZDNKb{qLgL^_wY+ie8!BT9| zRV;=+u0$fP%qXrRAg(GWuBJV%ZYl2dRa`>=xz?_SV3=!TKs>_A;y@|>j#WhaRXh{E z)nx;kXEPofkigv<3Tvkv3P@;JB52~X{lWvER81UTN?5K;n3tevtx8xyCw4g|F0?03 z?Th&Ez(451KQ1M1qfxdJ@MQ_gBZ-8etE8{{@hx;opZ7(oFF==A=hqARU-py4j3O?p zk_m;ATU3(2Ii`>>B>zH7gl?$841KOdQ&s{}h&xhuMgkbFQ?_Brc#>%s^r?gjZY&P= z;9^fY$z+b}RN~Q;uM+7T#VK4J2^=@eiOgzgJk>%_q|bv&d}wdl`hKdU6H2(lRTP~* zt&}1~=%=BUE*mSMm~Ec`m{p4<-ct)!Axyi^kSRKvq{fhJ$&mhdS;XKLcn#)zXEfug zDnraEo{S-D#UYEFF#EzW+aWOR=tpoeU=}JA!mbuPlbP&(opD!pG$fx&tEM* z$v7|c9-huVo$?ZN;4(2+Ex*1xHFi0pF*kc~G^h2JfIHf9-w&?iQ~;OE$1oK1-YQ(Y zDj3Nv;BC!Vt}a}^F5F-!+PaY}+A%KL4J_KvEjsKdI$AC|zAjP`F1W@1QbhG7e^|=p zav|ZYb%b6p4}{+g)P zPO7A5#1XH-nlLsa=hiF5F#H@^2rLEUZJ*oq6aJ0}6+s(ICFB%7127@Xm!k2--~g=< zUV-!T9y*tPLzlO7^?k}NL$p3k%FkM(pBeAE%<#BMpP4zH0J2f+Pb2`6lSoL0^Ou#^ zzWDW6zxwka#|x?Y>o}L+Z(VMFy3C5XHW)U@`qC4Q11e75J^nyr8)H&H1LX#YY6h-{ z38IQ`{Bcv`EVAMpp6k`@Ls*9(l;(i;OGNU-xIh2-=1-QpH_FwkD)j3Relw%{4vz=a z!2{;tw3Z3rlFC*^@t|V{S2#&jz4@}DS#!L6%Aqx+vYMBm~>S`dE(z=+0K(6pMCTULl)~U zji`0SAudb2qZWV;X{Y$c{er0nb>S_?+l?RQUP?gVRN?9_7G$*S|H9u+^@~3k2*~3P z@OTp7dl?j4Sw`kjX66ecpRsi1cWWQB;d1GVitT5wv*FVW@P6X|CqE#1lxVBfUFmny z^svi77(OeCfLNwV%d+fuR=?JTlXGPzumsRyVUCty=jDpiq1Gz=IEG3tn2HpwzGp^$OvN!NiQ*CFp~t;eiV%54ap<1*z_m#n5nEB zBHH1#ILLf)GX7#Yp_RP?Xwu-?uBu!Rr%*xx{3GV3zOdf}Eel8fkeNxB&KDa3@D-Q% z^P?9cIu%ow^<*B&3jtHaBh4Qq^Rgn^wOWv7z z4$x>AVpM;j^49`N!S#7nZWuHLm`=bawZuK-Z{9?*HC2Rgch<`mU2TKsSe=E68L?N@DxAD z!d3LAsAe}DB?~Jx&x_IBeRBd!^x2>EZk7|-DuZ6bfUt3H>nb&xv zx7NiNuSG5=+{*H3c{Q^b^NIE?*xc|VL9b0sWtF8fuHXqRePO$q>CCieW47UmPx5l0 z7gkRTjX2rh>CN)!ow_ptb4N1VA=wn_gJ}c+#LuY1Bqxk<01N^3M!9*M%s&^1kHg>U zEwNj(+vL(EV8ASC==!qG0G5>7u&kI(t!>U0TZ>dTHiRV3aQ*ALqr>`H@4;t%^UsFQ zKN}T&e)<=K?*Dw?Syczy{ho*+`cN{&zFULd)z{i3R46|z-mQY|T}dKg2c~LQzHZLb zN~gI>%TN9Ong%9W20tj&mVCK%F;jD6<^5wR;LUIzQDy#>U3H9SZA<$I@0Y#g9ys>{ zcv=!YSLF7j-2q^hu(aS=Qm}7loW{MJ3HHQ23qUbG^o~FI;n-_1JHYpxlKN+!Wwn0Y z#$khYNYk--iyNq|=nGHd7u%&T#pXWsYqYCQg)b%dh#9Eyhlo~~4gRRL3WN=fKgj0% zVSnlIb@{>Lk4d25Y|8bb#EGfIhtl}>g`k)sn%SQ8XWB``P5_TadX0(S!BoOUQF;zd z&adOlKU3yeCI>RNP6V9em5yoU7|W&ta|R^G(`C}{T=cj~4R_NQdlbnm93jWFJ0&rv zn&YPey`LSAKhKb1?$(!PKgjuhvxd?XI_r?_XLji)dRfSpEW=;;TuiY4rD^|25+(nm z5~}2L3yRYZQ@M2yzH>ZG512^#_2h)b{iSTZ1pA9qgyfGPO=^|tT{cN(&2Je>G8cy< zy)d1zkF?{By3=MjxQM_A^Vv(M7pcYTVS8w7tno;26j`Gs_S-$8z2^lioSC~fTKa`NF- z#luhB>{r;^U)?0rY)+h0x0fI{vlMBCi_&a|-mle{vi{JQfK~yPBqUoD0_q#S>j zFkPSY{U$Nu#UBB|6Nhhkwa1x}uhs$`;hzS}KfgL*@BJlm{$`~x2LIH|^yxa$%Nf;$ zgfa{7vYX2U;Lzf$GeRKw-C@j*P(x}9RFUQ{^juWBHhBhHOu!ALpJp9m7Rij z5kdAX#q^sHTr3CZa60+I3>e<0{$r(deqeA*@OKQuMwlWBEMSzQU%GVhRU_d2$>HZObV45!J=q0V znT_vl2Y#y1>U=`Fs^q_ejpg)zwIb!SnD+X6h{%1X4;u@iq@j{dgMr2KY!_w=b}POM|(!W z4Q~vC@3Gu)f!n@^C7s8}0e(T$oI)c*LOuS%5l|;AhYIFG zJp$c+ODLd{;5XMS{gO3NA5gy}vSFg3G81{#5_!LQKE;o}hVjOGBsDr7RAoGzM}@!t znHHkt8BL~Mm5Lt)1pN^;5^l)l%_oq@&KJ65d7xhRZH$*Pc)TV|&kN{bu&1V^=YwV$ z2o(?LKjH017dpbx-j5wuJnU(penximGIOCS9}<4A&2 z@oPM*nQh^Y(Xw9jX2UGr6OyM^Z4Ki?@x%8rhnYQAXMbe6tx!1he*y1OTUM7<{Djsv zF8r*mcxfo*ns_B+74O0C)fV=oM<0~w&gLP{93W39mvv)V)$og{>xXh}u6xSz_o5~skn z=Dk+hyHV8kDKLh`)g^~1_bxiM6(l)e#hbwtLbyx1^G3HQuqXeNhaQA~Wf{fx9?L;g zu&2Ml@aoR+s(^(4{GU5hbxw$=>%W6!h3=-_e|-P6q>nvclqq@on{nYmxzaW?Fd*N( z$tvPe$U(pWqb>nZC`yR5t-%Sk%Y4D zfJt_3pe!_ZZp*AN243vdZ;qryi-m0V*HPR=$W-yUk&3Vi-_7aO(Gdz#Pr&?mzjY7q zXp4*QREu!(i7>Tw630Fk2kRPBrtpM$i8_~VsaCSEZZ`OWd#6;}TU$A!$~X}noU88x z$o}Rw8f?P`cXqeQ+|<;WXZPia3zf=uWd-R=b#@^1qkVx!rNHy0XpP;lB+Ab&^t4M` zva3p9K`%Z!;u%~-R#wuzpTayA*F%)75mhW_LNT`w@kP?W(w}y`#BR-|l35XG7#l`p zy>>C+rtm%Y|UBoJ$s_TNkYue+C#;Ih+7WKV#y~Xc6JmWr7X|98WUyr75@)=?;X`t-*t}B?+|)bLk~?u?+6Hph)NSdilItV6MF9;RYR{LO+Y~nMLI|kL_`cyMMR1U`sl-r z`n>P=oqNA`-1GlAgFmwe8Dr(Q_nvF6x#naGuZ|b{C>jc>G@MsprHqOS7783QTj)*= z{2Y5!s}ad?RhgA#ZmM74@hZFELzUO_Yq+)neP92aPRC|MZ^gBNtdc0-42k%~xp;T#U!0G|6kK@uS1 zsp#AtQ_Imr2BDX|uT4oX2o}WlHi`v%NCIeL-$BbM-I4}=W_Anj=ALK+P)=a|M_7RD zk35k~DhZ*tK;pyaKb7rQNIIq9CX&{M239NRe|I8bG<8Ia@#JjnsW`@$B`D>i#rT*v zj>{}>DgBunx&rl%Z{@1yL>;&H>{7a-gwjfY&W+7tHWc?XBNyln3l&HNTuJ0sGi4&| zXc?GoNZus?6mS7ITliTCaNcSIly($!5`eaJm`t8E5@N~*@&}dx;U3y4Xkawhou!ZVPf_4P5XiSvBiSMH37y`zuYZDy3G$fA!Fqt_zv!&%R zB&S0KyDMXlUNckyJ4{MZ6gF+ zAN~|0xYxXV?3!Cx9`FpeZn+#KR_}bcs0V?{r~-nM*&G3V7XvPVVd(%64mV1mHeQnWjyByL6bR{Za@$N$d;EzY%8&WLR^Aspe>+}F`q+J9G5c9Z{K8?;WtOi51M<*)fYbACxTrsj?u}$T_`*QnpnXo!y`JNJhH692HNRM2 zpjOKwG_=B8$*fw8#+LV7_i+~io;$FT8iQZ#c@Q(rEtAVlxyRj zju-cxb@G#JQ(g`_zE-`QDlBYN8i`(ve|3vx&toM+_9Ay#h$_-pEYs3ps5H~`@Ajn# zkV(yI?xEF?aPG2C>rxut-*YX0^Txp0(-;oVa}GaPBv^`=)zvO!c&yb(`gAUR#@rDC zIc>_3wEP~R%kA?^A(rS?Mur%5as0DB>`)!4`Bwbe8zQMc7x?LzEnnJ`Gw z29DZ!eS9$IUiYzW!OqmDofa#*-LaDE)ldt=Qnnv$!NRvYclu>Nb$y=o`t@Yu-+G&+*ZnUW}pKZXf$u@7-tX>dCwP{MSeCyWeMqWBsaz z)r$L{n$H&wnpJ8ll=H-P-5yYSnd}VcS#q=js8`7e4FlWs{k-oqBU{IeBp>rU=l&um zFsgq$M7$k4fcP>wAbs!4>@Jk1%Wic@B}2IMsX%zNirjLeeN@fYAV<0}wZ7E~%gCEj z4`BizbmhoAc-DEgb}3VPc0(q?2mWzmAvr*9_|1(0kzujmfzoGhX%fB_V+E?)YTapG z@?@5@w*n(#ZW`tn*FC3)A5Att`TN_}!BxL+i+nGN2gFXN%l@_XbozKiSKcKhD$GSx zvW44Cx_{JhPByr*>~$?(RNGTN<2k6*k?`=s(!T3zVJ=dD6h|HC^X z+hU_)=+u)V35OXC3W#fv3RB-9W0L6`v_{=Xhn-07 zQ3_0Tup1S&6NP0eK^PkKuomn@OPQ7Y-k^Q76Z6joE$=+hNnqtI^YwU~;JXR>25l+k zC~l((#JU^LThE)1y{s^QZ1-}vDARtry-xADzC?ym-bv0YeTgg|Zvo3hnAxh;Z{Hh> z*y?oPe#WhPpKR`ZOObCr!d(jy+?4v(Rg~d_`=hRp_pY^r`Qa=BZ6DstM^z*(tjKT; z%DmZ4PcOQ#VQ}_QXNm7M@m`wf64wxB{&>*Ck>2gF+qLGt6WPVyj=KSf{2_tr*Vbtix1GVr^y;_`&*#g(dz$F4f; z7tD=TsxAhhsJ{+?HBJPS81+)Q;O71xpNqemP>nZ z^gQDG{#`(^{i!VF2`A))g$x_p->t!xKbf-(6lA2D(!W{$4f(8U(d)t!UTryU9(eg{ z?Q~DXxhJYKH7jlsz4w8ytQTil4p(8QneOV%47bxc%acUaFj|r1Sh_kN;GD z?6mzwMv0m$25k|UA6Iow$IkUF-Y<29Rx6zdJDaNTwUw-E>v@#u(BJU2GR5bf_g~7d z=a1&UwsnmCnmNB-{Qk9_%G^MVGhKMcd+=xG{3q>k59Fg;Q(z#WvVZwn)bTcj;j9!^ z&glCU4Z$rz)=inp4a+%q_^$987B+J}ZqmFIruFsA5R@am&g|F;@@=i3Pp&@!1k|ob zan1Y)w#!?B;#wX#7&p4?#lhV!L~Th zAe8Xt_6U1iS`|o>n7|-&ae$Sh*`i+FDJgb&lizMY(Qeiw%4|i1?@wOn?a>tpjc-Gi zsm<9{W~=m&&|&-W=G^wt)q;D6moBuec|GNKXN=r^+B9DpJK}gJagF1s1_M=?>K|RR z{jw#fHB$QHo%iI)D)X_Tk>Tb7`}H$9*BeWI9>2o)aqLS^Q>C!)1>+Ax9@l1Hrs?Ed zl^#3)-UrEDo2%G(MdOAA?ADjeMe#2_$C8)YYI!?^f>#SJrOXQl6hs&&%iqgczXGrM z`po6RwEX3+4=%4B%?(<#HQyfFa@Y9l)kJDrYnA!OtLOikpBry$Yxi;Yoem(ifBmXf z(tbiAsWaw^%JsH4-WLv=vY#h?l}~SY)Hhf1ZK3&5%M+Gk*69{sp8w5v?v`^BPJ6l2 zAuiaj^wS$JoNU{gke<3!r4q zB0buC`Ad@dlX&m(B1-|_b4eDfo3>6iX|AtsbOzsht?bCk&dEGsR;(FHSglBM*WDg# zedTm7vMteK?y1ed66+ipK<>3>yM7Gub?aHvvIJkNH_LwGDO1tO4CjCOb*3&g1vs-zryJ=@OXGRFO5X(#fTJd7@ui`-}6H6j><7nRN~!>cYe zG(6t-YrL-o1OCBU=wAgx15N?x-ckQlg^smokE0MQ|8^_kERw>O=+kpO^cE1YF4{>9 z@>f?7lcL(`2>r}xZc=141Dg~Afg?wmMJqY?h-LV#>SlqhB>3O6Rd)keqggK)d*;xE zaTI6nci!_j4k!xtQ2Cy0t8-RvX8G*L!j6zFig}XcCqCiiD+R?_hA%I4+PbJ&pHWR~ z=nCB4$YhLhVtf#^M+*Yq=5|<2d5*dDp+9#)IcO!)bK`-p;6vw(m7ajD>7|yCmD&Xz zO(s2j$ZU^gma4@}_vxjnlTyrUjqR|Cl-)2u z6!sjKrXPJLY>VYek=)Q_dWJ*XkRn=1Y9}@&aPwST@%7nJvboC}8@4%(J;$u**!LdO z0C_>*T?eI8MWv~iJ~}G8sLJMkWl*ZcViOg6iSj+i2qJ{uV>5vPW4Pc$`7tS;T=y4d zZ~;Ph1VY?C(@H03=rw?i9e2j;N^U6HoYiO|69SIFkZzwMOJ|$d%_p$l(SOgtdRO)W z&zjERH}*e={`b!-N&k8O>(DddoFgG*7{m$C+gPF-3lc@KlL*v=IPPveO)7XK4FqDn zIJ$uYkb%NQL41`WfWZtg9u&n1III>r-<8+O-LljTFlo!r>VGEw{0^_E48a;)ZdC5X zPA!1>%*h-_fHd_tDFvF>_a=ljoY~#Y;NzqDN$bbwGmG7gQSq&txgBlS82CR*)11zB z5lfI1ETE??)E6wuG2u*F3Z2bm3X$&6B@Ikk=p`3s?5_4s+IVxCEh)O;@tj*JuMS!? zgWuS9XHa=uKVV+3y!Z85COa_zxy_1$eRz*EFmjnXJ}D5}Uwt5Cz=S171tB>KuHUq< z>h#&>DAQnES-cRTyT_1q!1TwgNAB10SNwN<4gp}JJe*}DDeB+#fr|<|^T^DvjTdYB7h#w}cv_Z>13s)YF+RY8p5Jj& z`GMcxg2OoLsY)>Ee3ar7V z;zO(7=(p@*kCVaYeQV5kOnP+6K~g5!QtHdwZy(dEfg|hsAvySO{}AvKvt1L(@ru4^ z_2}9L!?k}EL-SWLPSK0O^y^swW|exh@HcMQxb89j!g_6a;mmCpwEH%(BQ>48MPF95XMDI_}+#u=9RR8wj~AmYS_*#tChN> z+N%|@ERvP+>7W>a=Tn#YxSc^z287x|_|OF2e-#Z;x+Qo+M{m3^>BEuo#tk=<>_s(% zAU56L1aWP!`$*zEWiflPxDfsR0`c>UmDQ@ZT3|~jAp81YSqc|@bVU+*-Lagixk8Kt zgcBULAOHzxwi_pIc;az|Tv3OHW0k5Zd; z6iwAw#qQh0J(YL6!}>Z;l$i_8L8SVu)r+DvO5`xwnS#RKCKGx}$}t8QjH2jerkqfB z?cxiNi|(c@_On{Z2oaP|u)1cEr0^h#~X67pK0go$}1=AmKbxy9Ss(}bGnfi&o??Cag zY6Tf3ZYJ$o?`3Jzd8LU)lXZ_T4LwlM6Nd6Ae1?TX4S~tB^t|tco(t88DLFW$wFsdE zezeK?`gl#5*iy||5cgzK&0ciGCgHBPZYn)hiEU4F)@dhu;2k^ro6+>ieoB1J`!3Pv>f`M#Nb&dO;PIL_1#BrCGp)-|2xUZ6 z9dCbL7pknCR5VU+_amvCFYFmktG-mc*{-;j$CjosDYtvzh6d%8GZ|(+&2i$ADSWHc z*QCJ&0bE(>fZ=E5)BLz2fzORD4bE~k`)-v4NVC1c8Tc_SUl!Gp_&IIw4zff#(XhE)W*c!!HtLsA5M`oYuPMcVG!oU72LIOLrA` z$89L}gIMKJUBb6ot-EL$idMe7455e`a`-w|IFqpavP@v*6?v3xy#oJMdTiyk9rNGc zJ_(*4THgC=p9w%10LS9tnp?p~Xt5L$XF4)=Su-vrBtn#ZcUnSqb!m)9_aovvFF4Xc zVBraBcE8wFN#CA<+Y?2ABb{-|)j{Yax^K#p7gFFJK#~=fV&KIyXyk!y&p);#9pvJq z(uKvWbd+7)h&NQY&vGg_qWApAjb|znG8mrAqVU~)18^8inmnrXumiU-TMrLw+%U2#l$_ zsVTrU?O;O-d<;CN%O6Tt03 zKkFRZY4wUAAln94Wph#{sKdQxn4bVp`sLZ#3)Q!M<|GXOURvPbTAVTAf&B6f+-attU(gODE`LToSsoS^hJp|JJLO$~>e~7H&SMS^t5|mrPVwn_iC((f6?`!VZ@U&x$l#vIW zhIvAxv~d*n2(&wDc1%^fn_@kPfpL>#uJJ2*25Ngw9`*_uOvb9{iLmNf-pPHqb=kAp zKKxkawd8xdO-5r#(6Sr9d9c~6M-gmr_Fhxwfk?XQ!1SF1CxG%hZSz~Kx&rnEGg=Ni zOi?{tQ$6=isQ;ZPk`M+);fa2O4M6usYq3r;BTeh(jWl3dV|6OW03a@nt;O zL#|VnzCBY}FORX1zHeh@fg!7?hxMPX@AEf`;&?-x0#7XLs=Kgq zp+dqJg2ud-5EKt+lZF_44@o+=Jm>QF4>g@@`{5B$treGqH(!Z}Yv%0`EaP=3atq*H{@>X31sZ0T{yBP5nO&$U#^k!4NJPyD7WFj0P zlB?S_U{q~C%OVZtYk%bz2bzkq=xXb#{9s!YWtyQDXcQgn1h~4sWOll7madr=1q@p= zzagS0aIhc%4>LuU9yeQ?9#+f&VQL};5z)Ogd?<#@cIf283Q)2PI7pXdZvx&2F`G8x z*1vF1QINqR>MtqBzP<~f_jU*=p*H~LE@2EuEMK}6`~?kVYRE87J4v^x@1;UTX=DTe z+)g6Bc7fldk(OTK$}{+CaeVcDfb*DR4udg|fid%$l38S7V|>&b%UDJNJz)#l*cAKP z-})pG$r=wZ?uZtpF^#7)@53BW`b%##dhAW8VPb-Z>rhK~r-JF)~8OtGC>;tOL( zp0>iUPVj+=3CKp65f#INh5C@7EL7fuM#l9C6G?e?GCm$>eY$Z&F%^-(#3BOA0EiJ2 z;AAm=3J_Z2C$U8&t$OLyHco z_+kjhkcW`+q*{Rp5bEMKuFe0wiO1V2>422Vj%63kiZ_)=fK+}1`ef3X(`q}&E0RZ98AAAqifv3-Le@*)nWz${#79X6XSDAJ>@|p!9Rlw>5C>h>3_tKe zzx3HJC38>!GaCNxaly8HgviJYe9OLqFwW{0AxQpTrC@Ijlgx5q5a3z?kE z`EL5~Dp~NIs~g1=OZQSop}Y|{n~uX#Y|UpVB-+8=#+#b+sN~~VO`E;7xJ*^LI~U=< zN{ar^CDMg}EO14Leqrr+R_WudcuZM;3=jg#BV>vt#0zmC)2UWY{n;RVSGNJ2>rBj!IbrYaH7oc^@U!E`+Pplpwflf z*^l!$jhmGzCg#B;Dwv&@ZL6!PVx$9PV3LlZ6GT8EkR|KcS5u-pds5E>l+Y~|+CxI% zKa|~XUXJfSm5E6Ey)^pgBtaA{>O=gT4I=q8j%Q=3`n9&P>If{x+Ks*m*XJ$Dl@bp? z9=qU=vHX?oY7YslCQM$|1uFD)C#m>h4R2dwet*>+2f&G3cPt7FyPDm zGWBsAnJ=l~yejdnLGfd5Ea7y>tUo_KO035*3G^)bFV8Ge_fsbDU-h9`QZ8xoISwtx zB?PN7a(nk*oY|4o0VEXF&3V5_1}JJ^uH(#}e3|Rw`sMShqx`L6_n=1HPVVRJL-#9} z`pv9?m7czx7x

        wh%HwAYy#TtJQ&IN}9pl9ZS`OO_BSIETcRZHNU04gBCr_Tg2*= z0fD~{)9;z6z4*>x=7L%n z$Yrix3d=<2*H*^(xN0lSfu)Vlq6|?Bk1EOpnV2WM1vI=IRg})a(FG%E!fnR{+{u0S zi1b^Lr`Ds;I)FyaHy>!jVvT)?)tHmGn4s9r@N62cL`V-qpfn z(sVYmc1Top6gGN%!o}()@|SXI)~*SpdjGyT2x(DsW^?1Fgs$ML;JFpWbup? zp^^Y)K^(8@@TYxF5SBDcr``Z1JQu1fLq$CFk2u_;<=`1|HVr% z(075UT2T-NUcEd^T2Cw#jm$G@dZ!mpUsYZh%qSy=b5rB_jjdO-KoF#b-Vn~26o)!v z;GIt_c~+>TvAH0PBLHsm)2*1Tnx(iSp;DHIh%=OEBs-G7D6z>?w-7J8w=k?sB|#Y6 zB*ZA$Iwm!GDVaswG+j0&k3=VXwRBxnhYhd&7YA*rQ3$ULLeLRg_lyiydO;&Yh723h zZ!M1CR>%0TjN8V!mh{e}LmpFZR%f?DmWX2w649?cQ!0j*K+%LffwNP!dypIX3Lhpg68KY}$gs_^D)dI>A6lWDR_oV*tcp zNZ|Lz3jHvV@_}JK&^>}a>ZFLDk#s(0myqg&puErrea5;0l#Hy01tk$UDtEnjWRDhs z{koB4euVHutc81IkFz6h;2W)T@x2yOS5R0>OuN~UsH{@&gs`aGL^+Fo{Y!%GGf)+X zgUoTfXP2slYAm@Z#2qg_0lWsN?V+gIiOoO^B;={=MRwX$h|S-(As{wyH65X16HiP| zxY({M7~=F`fk5Y9dnDgwCy?q6xF<)|_8?mpYP}0!ZRHKZG80wYVfoqVtDpzn{F}jwGN2z?pm*urDmUQYa8H_ zfeb7WPDxXYp131d;L0De=a}*0Cayawd%xJCwQ|wZ8ql|F^4h1&>lcv+h}}{#Q~Rp! zD-VDU&u+|ED-k-v`?mZg!>cJIY=zj7b;%g}W72lIhU%*T@{L|QnMnn~3lfb;rIvBc z6(+W!r#nVB=y@&nEyGXu?X&XZm^q4f;YiKWivsmV*7{H|DIJlW-g84i-y*Xaj*Ky< zeiTGY6&P~}64e{@B0uoo2M`d}MPhA0sX)7AzLd`(csbz7{BFlF-3FVC_s+B zf}J(i^aE5u65J${qQWjrP%d&%>3OlY3{40Qo+lUx=sRMM6Bc~XW78MFiE!)(GqKR< zECf(yN0j-nhHzA=c8CIMrokD*&eGjy}vN zQ4iu1b&i2h@W>Sy@!kt^A0L;1amqatEgEp9&`>FNCrhAfhfkqgc)711$z}Ww0<_dc z2W4Tfcmzrcn+?#LfLjALuzX>qK7unOaA0@FKw&&1EUr3HE-mAcM)w|mjtyjg`qJ^a z81=alWX(bum)q2W%1Q@>Jhv+lQY5U`qXOrufiokV0M91A=7qCk#n(lk{F#Jm0OY+9 zs>BH3v{Ut@nC@;I61DAONn-X@xG<^rO3!^_P>Vaj1C#)Oilo;nR{GgeBLT{#oC9j} zd#Rxd6}KB`M|49C5%(?deOkjqM=lV5SbM2?$9y zzz{SB3t`FS{u5;hFDO1d>;Ud-{v_dK9gciI(u$yJBtG6%@KrSkm1l6$QwacSXNSuOy)`4?OnI7LW(!H?WFk^fU{TKwaNGP#3f`DX zT~xP?mS{Dv2XTuBNPSQ6ig4w=#hs-&=!^hMk(g|v3{`9CCaL$()q9Nw$38Vhg|1nr zF{lAP%z>kEhpeZO@o4^PK=hSd5x9gbvz<_22}ryrk8{FZS}t4ovE`sj#aMLmVX$!f zk+7562`iHM&}|fJjwrXv;SeyayYb!yFrQ2Wz=gxhbU;v6|9g>H|3#%(I@{m+;6^!1 zO0y_Fue{Ih}4lqZYJ!R^FMVse3Q-_`;>5L-I_BX!H&um#Zr;Y74B(GG+2@H!%Q+iCG7|wPxI>b?&jvvL zh=+i_AreeoTxxC3iK^8w+_vdky=Rt(wYFOsM-tW)g!cRHMC=-mdb>w^d-#a6$>ea0 z<_cViku*2Yr2-@fK(d>p%f)ZwiCdbSkr)a{?0 zwJ1uUV0AMQqA>dn%xZ5k&ULtz-Yn=8a{fx|XqNm95$8J6|3E~|!$!~He9N*PCLC5f zGLwY?QDJE=dXjVI;+jW}~lD&lT@lsM?_qN|?b`k?52 z4f>1-4Vj^UQxtcvdZciv1gU+11w_1z28y!(C>GQ2vLisnJa&4D!qc6+!smq7kW`&=B!HdkQ#gZdT=>a zV=s?x%JXq9JdFx@rMGikc0m-9kSSME1k0{5SihFq_2C+7LkA}Cc(IB3aTgp3x1enaq7U=wkdWYT%-g@EepictC@mDLn=w=*hPytb0;Sot zQe{9lSWy~rXGNcDPOS_>l(*foygFNCCjgE{h0<7~nP*Lap9yX^ zm`ffTZkKOO61Kib4_JQ8+%qOXm8M8VpZ8;6ny?TgHGfBr)Dnsny*BJBIJvURtcxgz zJ`XWe!4c70`ab?|oujVP8cCcUz6|$`sc`ofQa>%VZ=4jS(&5w-vA#rMwheoUcpD^p zx_PiFJK*TZTa@J>Lxe>!YsS2TU4XIN>w;*=Gc}cHKtquTf2`=dW@!_oa0?stmPUcY zMU-Pwj94WRBwmZdf@pebHjx0l1Hnd~Oz*j##Y#Y(Rjh{bQy8z;+vz&uR6Cg+;KXrP5XA1|FS=2-pDVb|sxPRt(V<|(u7L9vHg8+Ik>$oOC`jmTwxdHqirD-w zC`hUT%*7jm{OC{+SJn0#3hMrJu>{OvGA~D{mlNEb40ZGeMOY{Vh!Rv^+F!;FLy4Ve z9n?P^X_Z`-Oyw|p6$i&qAW;)VND;lv@IL?CkSP{&Er!go;slkY%j0J&kA(jEv1<@y zOaL;`P6~R`z+yNXl$%&OZ^%6oyl4;@i$mJt`+>LE77_2TsiAIVNc_gD{qjiw!n?Wf zfJ*m(mVOA#CYXEk61c-E_%V4@QmctId1XTc`dLA%b9W4M6E7vh{yB*09QmB!OxuDO z5bTv?!%{$d@bagHKk~3o`H6h;DSKnV6pvX6@yZp0f2J zaB7gv?{nz;K})qrXK*1uh3luwymF&L48W3@y`-0uavP&;W{k2 zQsMv>idA&c6gwG0h(Xx8>*tn{c<4h{J|2>JwMaTx?6Msn%nHsy1EN1)Rs&K1DMr}z z6gj*Y^FZ-)cL74a$S@e~mEx54{?L{mW>fS4$c@N@4yn+~P)we%5n$HXQG z3F9)#&uPA@zsyM*cstqx)i%27F-6MeA}IO3Mjj-mw7+??=~9zU>`9 z-m|Z_IO=+eFKnFTn?@1W@jwcFpFFu}lr+!whlBn{4D#zms`6Vu_KAVtsFCt3?Mmj4 zR-Xa7z(%0INE0!?NSCHEg9I*J>(9T$AXzMuiCyu{6(hINP>B5yYvov>%4saclcnnU zU5V2>eTdd-tGIAWOEKzx^>h_H%TjKFy>_O`1d6K&ec&}Iq7i5E+2m_wVz^>l?uEZt zQLrZ0SHsE-lHM~9LsU&fayH1LouOdeg@97Rd`=|WDKT&E#&-kor%Hz-9L=kd`L%LE z5j_4Jokbe51{CXi8zT-&cMLA5f8OlEK6?_&A6^ZFbOd}*!4-P@yo54-e)7FgB9?71 zOLhPo(J}K*w%h2g#Rc`)@UCKb!?*x_(V+anddSC%Kf^Cs>Oq)=Et8LS|=;C>A9vzzKM4=R^Q&Ry7}_*dYS1zB;h}( zCjAed2BEXlYDPYy%Zgg(lUf#wxPD{we`JvVT=V}=^#A+%|C#7_0svXX%)Zo{m9FgOG9gwz=uc`cJOE0dHIXa@|JAE%bx~VMYq^B5k z+G;Ro0L3eD<-=MIAKmG};m)T;2GsdE*ZI&jmy3K~Deo5jd#^Idr8j?=^eaJdHYVrF zcmRP)mIT80N~;IXP)iK;k$gWr!+hHJaVD_dv$q40-T3R zVnI5llhBB4Q`hm)i*1TW4_U3Sc16Ei{( zw0lTsU}YVP_xoMd(Cjs}+_+a$l$Er94kYRq%;uv%8~(?`^MAShKivNB+g9@5Rr(76 zHA=@)DB9qEDU+i>Ac7v27EQm!KraYWz*0aWr@V?A@dKT}XJw3Je}&Oe4ji=5i>Huv zViM(ebmml^&$Gruh-;9Rmi5zV!U3Eq2J5q}UK3pi+u`Z?)_}d0?iK^RCCl4;3lFod z953z)?#*n5)XmJxTv=b!)|JopP!8QM*TPVv3%b0FH@CA7#w@!zpZ^W}dsuOvH9>CsDkU5Axr1JneCm^<2Q}(zj2>$e(M_;mswPa)a_=q`a1=0 z8L1tKfG(VgCsKOim>6`}f4x)UnH5Epq_mg&Qw9IE|0Sjd!^iK5jpX9Y{grs=-P z&{HJszdBZ^9yJT$wZT3wl>)!$OK24yxs4N&xv`N^OHD*^nJk1g$?E5sbgKxMwt3IR z0*6a&`S!ifx4FHEH7m?G?wA?OuqZ}Sy*B;W_|>q$hN?syuR!h98T_v7+521pf))!c zFxKJgie6vwp;RU@4jQa6IW%BsNCLe>-76!#FRflTI825xppp0aYTZBbs=Ql(z`bc! zqWdcV-sA0E-1O1A{e+Dt-7>VD3gAzFLCqsNzpPIeg&*A%)RLc$Jm6kl z6u)nh*y82E+4cODl~(w{?mhjxp@L8X6(EeC9>d9OaZyMUH9A-wPkpEU8`F-8%mNU6 zbuJkpGf0WkdZS3wT2GL$WT-Mz90eVu<1a=tQTOg9qikRBL*X01anbo7pRzYs)JY2U-upo+Gif+nxNj}K_wu}q& zj2YHhOGN@*R~e;GBRCMQQr4SA#<=4BKgL1AXh;P z-Ds7>tL^Jnc$CsMf3Tz6t>xmaYoVmKAo`Wy%f{Rualmx(a4F$LswLui*FH1sV5^wr zHLvo;RADafH?78;<^-z~n~hPUz{Dcg2criQa?jU5dKe!4G39UK2C~ZU6|euGn+bl{ zG6L7ln%=dT3!-o#ZkQPOL@zrClOZ`)>&!RNd-r9nzsx|$ty31h1sA(MLn=6wzVzRE z`)Kd3S2-#8@rCDq?|({r@pE_IODLwJl`K@W#L=9Tzg{VMcY|T&rZR>PzHNo@YZT?R zAAIq(D^BzKZkmKdDFrHDt-UV~1@%qvuZyIYUi5Ukz|Vx;?~tH!R~Q*W5me?j;WY0M zU@&L&>)S_k4b*kLErJqBKenMnOnn1>#knIb(}qPAgutR3xnTkd#3WBMFmDmb3Xs{+ zC$Slaqc7*69~03~DHdL0@-hzZhhEckNg4FD+$aIiMjou{II!mY=C4nrA@70&tu)JXQ`DoO` zq9tjjOF|}e$lRep9snAv%(P2j6G%n_@0=+oa5D@VssPToo_7;n<~C5R%_?@|i)X6k zOzD_;MtNo51NZ?j_pFR5nC)93JUDkhJegfk+~=;rCpBij&lqra;yc-zkThYZOtzI) zF$wYLQs3IixFDN(0mGqzaD=UKZ*}~p!cKC~iVsi}^L8sX@8K8=7V&teMss!(rS|1G z(~FMRT5H`35X%*|*euwG*+)tVCARmxgS==W*U=4O95(QfEX@Tn%CDkV;G^XtQm4>aGjm(@&f8V<+P=vw#zReZ^5GShhDC1$UgShC})!tLXQ zAL}(vzBZiMYr7|jUz?Sxa~y5(xyy%-QD5_`Uw%Bw%Z!WiNh@?5xp^J?^5fM-DQ;A} zpYWNEnvXs)lxDvslTs^+f$9@sx(ynbcRGIHBf=Q~z9;@<|K6vA?ZUS|gI_*n1`(a1 zOfrnLl8zr=e4}7aBo<4bV8$2qp>Mh!Jc$jrc#ZElgf7g(@f6;qoPnq}*J1M5mjZ9? zV?^zm5|y~oox}ig#QVZm7t`&Z_G|6>+hWKPr__eeH0%+gM_)g1Up|7sBR{-Z(LQU7 zX`sHs<9h3_o?o!WQsXWVTwd}mjKT=x!^aHu=gZ@2J);;wjU;Oya^XPwx`xQ#*k3)zRDSX%{}I($spGzo;BLcP{;kCVCB4UOF~sMt3tF1m>w98SpC0`5y#|kq740XL z6^gz$y%?U(A;^krtKrJ;vsd#A3Ge@y`med!}ebPS>KY~p^nu$(?cTo%}VMdPnA zPq}KF){EiU`F1wyWMD9bq1)x{!%lXuJ@-?836`Bw#(NZN05O0?Sa7(32_$vSDEAiJgBbxh?v8n5PQW5@Ky6mUy(lJj zZD1c9UE%}~@QY9Zrw+A%#0WqRGS);9)$0Tln;;!vne(GQW z$)^vdCo*d@oYY5^OaKyQ{HL(;W(4L>7p#aHI&#^7bH)F!d4&olzSlz3q$e8Z4$tIWeUeU(wphaOGT=2u?RX+z@Jj3f#`yz{ znR$ZI$^@ZpnKyq#%<~RI`#PMHR*niNsFZQ5`ruh%A6Dv6n_9FSkA^0As+PgOW_~fw zS!zTz=Aw2|WU7ixs$}}O9))Rd z+~(}#s#6}WKoejn1O>F|UQ|X3pRe)=Lvs+T^1l?zT`ixGx#z}9sjpQRnXvsxOy$P` z%EIU;(Gx^aESNTIZ)6S`Kr!|}kvqtf%ILZR)O!+&?gsx_5}-(tyrfWlP;j5om z!-vKO7!~No28>vOqc+r;a!$4l2R`Vn;NHn1DoW+6kgTE2sDKPKM#GLxhJ$dw&=tT% zV`Mu@Vls46=iEWgpKXQ^n_qry@@#5mQS@Y{0tI%;xp=^!N@R%+5JO|M;zf!P(X6IT zAJuE^0$Pp3nYi9(H7~aiWHGVP_X8{M_fk~I>a7#%^0M7h3+%v+LnKNHy&5aB8qerh z*Xn-x0o|Q1Iwzl-27xCsapM5M3E<|8CYW@b#T_+I0F7bLTkTM>puB4uKtGN4pz!uh z_g15kcEV~q+epK9L3{Xz2k+puCp3Un;jSHk76n=Pa*4*aLe#7i;%z3O*(;;uib&Fk z(nb##n;1+qFt1$!e|DsSYviHV>ceWjN44P~t}9)`1=9SM044m%$0N-LJdNNZjSNU* z)+zlCsYGC)&LjKR`Cfd@iyHTUNvItohGtjhJXyeNuR8xLwO`c5H71x|6TI}6%iaZ` zSFz0PG$v#h(%FqNq|5RY+zr}&3hc6b6^i~GelGPYS15`3A_sFtt&Frrw_`1+b3(m# zg0DWRS;(|UPS$RHBk@#@?oDFp+X*JLGDvb1CCx@Ej@=o&jY71lhBM+-Zao(PiTz*O;4E>?+~5ACODTFu;G^DNVV^xQh!V zjaJGW=!({2J4MX6;jN=R|u)trDz)iL8Po0;RQgi=kzRyKjBuM2(bV ze;J^{9BeoGM@$(YH_#Qc*7e~qyG?Hx zT*mk;mL=E|A@4o_4(OMF3m)JHcppo1?#L|Vdw+Iv>-X)Y%+wA#v0TT$x^I_xeONz& z?Sgar;LGhnQ`Kfghart`L5IxU7b02BbNf^4Thi+rE}icS$A!L20l1QZxLn}FwM*>F zz|mjshHlzj?>S!8q1M(=$7fEB-T7!eF`V^s&`|v2s71e7;sDrGDXU?GRa4%tN-wz~ zw7=bLV;@pdKeX99)DIiZ6(5jO?P7I!sH-ss8w7z#_&z6~yHDt-x57?uL8vgxjuVQ> zM6g#1*&z<#mIA>94`oLmm>{adL};!@k|4~AVK=K!+xoj;1*Cs5~O3No;a+`c1y8u4Z`}7e(Irx?F7OO8pnnJ zHNXLa2M7s|;WW1zLFqLfb@_%Vo)xoM5)*Rmvpy#cau7J&HMv8ZtkUZe>QJ_C)H2X? zNVRF2aUm(!LJ3gTCh8P#UM`L$BY^|P8`08cQsu0w!Dyr#x!<}-y?#5vEM68kdmTk! z$xt_9(R>qgUcyrM&GZ#U0te=E=7l7mH#3tW9mnLDm8D?3ge08=8uF}1s7i~p%(G3} zSEkD~frp_TcB!;^YxZIb?^!1gK@wvjTG6m1jPql%N8SbPvtLiM*m^lblO?`Ab&`n8 zqusiEd(u#%iFEx-?uTfu*%_JH;DB#SDvfsDUKEzepdgR|krqoeT$=|5vFH&gWEwWe zMt+=bkx+o^%LZ&^G&5LO>G`z$;PA3%vigV%sLkG`9+umTSzv0(5Cd3c=)A;muUD=D zGlGyJ=c-cB4#o@lSDa)$I3~Sz&?~fj2sJh<#JCm^Hu=PN$j0X!DCi` zB^7-JP(#V~H8)R}i#xQ=nt`=fZt^ZgkAFHVzkamTwJ*Q$jLGT*adj^V^Z~NcE0OW@ z@a#MJrY~?B)M`G;ep)&VVvAo5To3-0kh#x>TpNXd}|-tT6{(5PEi^~3BvH-VGH{7GP=wmcAjZrhD- zOJRSzM!1-$lXy}%$JQ3l_o`m0}F%Ec1c7Srv4MSta!z{q73rhK_6Z+~UYJNR%;!_C+E zN;Tm_-IiaA-H(H{TFGp|7Q5wSl#WQYtfR`WHwPU<^vXpyVl~Lj;j{z-&Aq}iA7V85 z?#jrs_Mh7T{g!1oef)JzG*=Tmp_wNlGY4zsHJ^q6tp>!hVv`Fu5TUKNWSfjDLY zK`ke7<4ng-&OoPk(Hlo3_G8K9&eYZM_6Ht`CZt zirTul($(2mztOsiuMMIS&K(%tRPf-p3RVhpR?R3le3{SLZUy zn&Tx>>7{^25p*!qAm`QN2bV>oT9O&S$@Cu7%TF1!Ci3Hp0MJG)jLQOwroHEbVf!?> z&dEW^wY>X;bJ+}|)9GFX^>f)?kL@3kIiHxqAPF-0uGto7lK%OL*yDvsUa>YLkZ8@) zMyJKG+E%cZfk6d}_jtKM(Zxa2cmZ-t&N`QDpLwdG_^bNER(&bO@LD~&R8(6y8m{s1md(Zua%04GUHPn?f)3d75WexK!B%jv9bp|f`C zqr+@{tCe>&PxYru?{%vU&SZx44tV@hM~&#LKhkM7p%h&>dQ`Mvpxb$EaDehT|Gwqa znWw%=#+@kx>2@*3>_#Ai$9-w+*zJ&N-7xaeD=ODOmczF6s$CmbOzD(7LZ*~_e(1hS zQb0?#pB#47i}Jl@#Q0=?n4RtM!~qW(pNq{bM^Y$<6m^ghiV7AQ<{T|Wp6s|5#TWto zX*;MVyR6O^?K|e1-B#ig^^|h9N;iJ7PGyzt{X3x64B!9#Frvov$8X{F>Z(f(`43YkP|! zB=!gh8PZSt5N?7XTvz)Hi#m&|oDDB$9_p-J$_~>heP`wX&}s-`^nc>8-pvct8z0?Pxf5K9!3n|zOt9FS(|CeKz*Mi z)LQhE1LMiK$>`vfN>>8oH!kA^R@)yK52;@^-9d9l?v3vk`8+<}?`zBcK+eX4U9m>j z%sVJGo?Bq}OtE(So}9n+Pa0g%TDxdY+NW7~XrTN2xMcL@!3y89ht#PfnwOrMG69+BYCr0l2h3`*I zzf&v|cP%Shs$K*JPrFFBsd+NWR~Hi!Pv1;f&}ntIbfHU0JOXTtDo#_OBPvaNOJ%Vv zacSjjG|;gN6q`@(3c&LaKVQEw&CxgMw<`QzT#j$E>4~ze#6ed)G*m{%+@)&T-7d2U z+u5{%zrO0PT5=m3wx1JYw-wM_pmE)HSnCLRF(ph14W+y)M{dL~2usSo9lJPZqlltxzj?^_g?%W?E!y0o|)U=ruQs=eT0t`xtKYvLwvU;_r%~`!;sP-fLMFjuG zLn!|#;p_R=)!*;u|24tz+w=L4$NWt&P<~%RFVKUZxRuc4f2fKY(Kt>$=$B+C5Qq&Y zfsrD^Q~2c752!NO!j{;Z*$#^gEZq8mWhOc1qBQz8x7q(nf9Eo9rI752>qxldSf);4 zinsLD3sjRUZDIn<3v%2lUSMH_6iHh2{S#}LXG5F$C5zA*%PWf_e*KVAi_h)hUybr! z2Rxg+z_YM2_ROL;_Qf@s5O<3(=PLCW6-+sm5qxY_I6KVeW4jeB5Q`llekr3%9Dcsb z0W+Pko8wWB#TLK4WQU*!#Y`$k5~@rUQBq{^@_3o>Gy_X$?Q(pRBS&jj)ml60zoBea zfbvfXPk%)KAs{+Zo@;p;kR2&f)}LBb3@3ycLn|w60(Q{jD$eCXoH6h)r#(}wbIfra zmyLXyiI8sUQ3#q7-Dp$eEC!yxU1NkVs z_b~E#GEYdH#&c_b8^qAeRjpe~F)bAk09uj%4J@t(W8=h2!c(jDG zYTAbAk1vmdyQ7x6_ChX!#CgnBO2S_WeD2;+=K!3?@Z&>Q9lQNk_PhWjq^_r;+Lb_W zZw?U8G~xZa2P_okqKobK=S*NaCIHcGBI6-)|D9r<*bYJ`|0;&|HCLWUb0R_2_gcH9 zlnp>p(6SK@=g^RlCL~T1p+y2e@7nB=fBt+!GfrfJqfudFMu*1?+01X0RG@XK3DV=d z`$5-|5L49HG)#^%!UKWxLqnxk*T2#RW zYr_;{!D=%YE0&nE(larPM_w9Z*Y^s8(T#SWkV4jdR8?jt^#tzYDK0<)f~TO;y3eH}{fKOb zoG#nD26myKC`J>A?yUq#4)uu4K4F6l8R?BJn?4bvT*2diyQC)-SywRJ%#xu%K^LCd z%FkmKbPz-II4m~)CwAp3z;TTh;=XeoGN6;LQZ=!aib3vOB&^ef!C*)_*lF2 zUE7_)j8$;Pym+6B?zjG^E;*Vj8&WfKQRdnB=2+hE6Y|!<1C3cqlIHirE%_RIHb5=g6 zwml}#WhhRkAYPPZ^MpCSoYzBn);xL}DGEVnkbjqgLhj1#Ft5%2X{qUwJ$@jH@Jl)s z$QyQNu>`1ItflZR>obMIa-viY$J9-oLLB>GeQK8~zqvxU)UjluzS4&4CZT8pXzRsI zm9ZNF=SFdc841K7V+9{oRE*5vfHHa<6PXg3&_dydfx>-Cu+M6mbyc90lf^IVQoHNF z%PJvn8r|Ljez990d@&pohQ)7c>M4r(P%|2TFk!%IpQjt!QSCB(=Y zEBB92e`sqm0X0f2lofU)fVW&kWFX^(rDCWovf<-v8;pz1T<3xU>NYhiGSKU$_zrINY8CH8W zIhrXIcEAIi>|iWPB8Q{YyKBq?1oRWYrdx{nX8JqxkHjc?-z?H$MRp}Ww*=p?OsEb}Vhy%FbjtY`f4@m+gZpYIr^>3gz|}kx#h5X#r=tKd*Y%<0mjkK1i8CA(8>+ zMrfC#oW@pzYs?3_4qCKcx?uJeTjc+)RS|iVO9JkK`pNt*KbcUM`Kdo5??$dfe^#AQ zOf)SvmJtg;s2erj3m3(LMQplNSqNmXxh9Cjqy=RXAR~~T5D%<6EH*GL%0L&VIy$`>*#A04-m7QM8y5zA?n*wN(;MTkCdJ3{SFYC2s zqJ(Bl4+>IJn>FLLK|(?}U2WZKB2t5ULL$!7_gHmBuz%a4e}^wn0P}wV(f+A0gXn?R zciPJ6HVOxi(Kv#wu=OsVd|(cO4$;O4XkWm$r#yALG*^B#PE{5sFU9EgdC(6>F1?zpkSPcgYNWHkW<)FX}X7HUwZcQkbxjab`50_v1 zRHfWi5Xlt!*uKVlv487~V(Da-$9mHKgUu6`FRn8_w67uneeV)H&KhyQay8DmuWyuW zD_7z6KpKVRG_0!x^&rgpwXA^Db?A(SJLp%6|b1UE~u0 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/c-ifee.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/c-ifee.gif new file mode 100644 index 0000000000000000000000000000000000000000..1319685dddb1756c6181215390525fe5685c3300 GIT binary patch literal 62653 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 ~IIIT>qxWZ$5s4V)Zu9`x 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 N6s`JP@CZQfe*g$*%9;QG literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/c-loop-and-wrapper.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/c-loop-and-wrapper.gif new file mode 100644 index 0000000000000000000000000000000000000000..585ba5357976259ececb3f489b8be48af141b30f GIT binary patch literal 160161 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

        SSjF5I*Gai+_Yg^I#FfLKkBC^RLGB zXR88QJ3^R5|2N(BKf>idMQ{gM0~sgW3ojV-ANK{91(51s4m^lQ117A;Cafa~1xs>) zRS+<32Dmb}k~9viA_mn~fC-DriOH&oDagqwD(T5<=_!h7>1h5xtc%SaDryQ6b7E1l zU{ZEIfw(wy96%EOfOI5WErdbU2T+XWP>+z5G?7rUl+d-+&@vO%iTywLiq9xf($qu6 z*g(a|Ny;QpniMJPd{NiNSIH^P7=<)vW+1UJI?MjII*Q?s#4&b(Ep1sIi{1 zy^4ZA7bc9C{n9CJZxNONJeQvqONcHeN`@mz4Np|F_Rv0UVXEtBEb3sc;Cos;+6HfG zZf*^nM*3#{=qxZRUb}{~@m;GFQ!~8;{ z&PPQBMa4z480DQZ$znGvKEbZUEwWB5_z7yI?2vr|S>fGpo*-3Pe*f8Y?VwzZAey>g zt9sC|iEH`^G-VxHZ5&=?8gu=`+`EKiyPq$0k18|tZ#D=Xw1^ybzu4grKYTVW$2kjG89(W7=5k%Qh8HiU7ySUsHapR-U1N; zswy@^OY(}2Or0clL_s3UQ~J7@TB@%~YM@@WuWE6q8pYIvVrpJx=Wxx_CnL}_E6O@K z$~8OAq3}OXV{$d|OjaDZ#nGbO)1kr3x1H?TM)qA+lYOJ3aAKyaQyj14UoJ@txtii# zniW->=2)9^!dZp38SQe}or~5m{4n5)U%`d*2mvr*tk~P;2+73|qHQgkeFCX7+6BQKh^FDgq-nCa)_; z?WP{F-MCw+b&-qIf(dwdQqf}XchuAJC{5-{U2*(U3%wbl#5a_7^Mvral}jtOc;xda zRd2zw&$W1O<)+Q*aODWwC!4lt{*F-1hd%eK7^@YpFx7^>%D8xJJh(n%@GPBI?F0iG zI`nfNFe%l}jjKJ=>-6p)J8@$QGEouFg+D!+0)y4s-4qMu>kk=gxB<0YQvU9iHgv

        #L|{Cp#-UdgPfRdKB0Hn>G8s)b!%e3L?7q+;eYW~|C|2lpAew; z4FbGj5bwVr0Bke7|Kt>U|Kt>4n<0jlmE~{>d0Fvqq@qvN*;EeX6q6vQ5K*&mcF`BR zHa){at9p6480m;#smh-$#ArEr?b~OtGI{U5n6jDkBRkz9&_ku_)TQ~tEQmxipMYJ} zC|;v>idc4QvS=Ev7oDEEdIjJu*fcJ098+?UnpILv+hraFhmQ`z zF6&$=cDx~#>cBfHO2Z}C-EddIvpySTs?U56-;;EewLN^s6vFL6zA0BrbZiJWcPO@+ z#)q4Li^*hfDOwKTySZ7sj4@qlF}=%Fj931&>iJi#KKOlc*ismkE|?@7@zt2QjCtfP zS+rqKzTq>6#-H|@XMF@+{4 zlVv%}b|v3hldPQ6MU1H0WY6!w0z%3_-Epux$;eJm&aD9V>XIv(zUvnS-xldO0|pMT zfctaj>NC3Aaz@+fqn+DA#&B2h`JQ6V{v5bAS35BHosRU3wvCOq_YL*@Fm-4j{5EwM zn;iMSMHLQQFc}m&g~ftUq>12kAxD}5%S>gam!GYmK&q=tlk3j{EEq*5znv&^wxqJB zH@$wKEWIVWBTrgTS)`?*ukwP53O8hMp(%BEG*4M4z+MSXpHG`ghd?oU&f%fv;&65({_K-=o6=oJhBk)`Uc2(? z9`1$l^iJM0W1_@kiT?QV!d>18V+?~=%b7b5o<{m}hq2Se6lABJCmZ0b<5$#Q2Md$n z>K^zqo;00j{9=MU1KthLrc`CP!?aq&Zz&E!=rq;Ea4wyCR01!}S)B?1bjj$gYn$Dx zP6fOwhtn}s1|YytKC;|!LIiPD%D^1vF|?H8P@)p@AWA+!UW*%;07wbz2pg8=)NhE~ z+{X^0wk)hBEukqb9UC~NeAcY#1H#b$E|T>rQ@AadD|BqBm#crTxXS}~of`7McnlzU z)A{h~xnNnSz%=`^A~WO)(7p828w-eEhVwYRPNqQ{`AEw6 zr1SYWarw}nG*~|RSjoLZbx6;{=%tCI4;AqxrV%x@@{(cwXn$8ODDi*?cVw&$uXEZ` zij)-H9N`>kVvte71zH*V(LPPj|#+*gktf%SR4|rwHfZM1XWa^i5wvt z1#6-o`0p=kjqxOvzh6SKd0obq_Vemc5UZ6Fn!p_i(?ySc_#K9|_w&CPw1%2`Q9xd! zt^d?YGFa$ly-A5ErHwZ*!Nxq{4=)k|Yx~Z_jn{TVfeh7FouGG6kc*ST`}8j}(IPl_ zyPC-K;)eKc!eqXt_Jq5%mRx`v8NaW0`7%nM)C6W9^cT+ArAY+Qhvc&C4(}I5hB=9w z%tg#KWd?2_L`rC`NMk1U^}OHHE@21kJ`DWk#ba9NDRW_GrhK;9hmS$&dU#WcJ$|q2 z*bA-~jfBbR%hHoPbKRbR-%FS*?Z^SrwUS^vG z$pXHBX7m3U3j##;{RM0PVQvcgG5>~XAe#Nif_$Z8Tri%`K>kj=7s!AS;_t8Z3KByW7eN`#qV6`J6Qc^6zIDr@jEWHj}LQ9 zh$ExzpaT)qTfZ&xf-}+fZ)(c_C?onO3o`n~f_z~R-yc|z@1HEl=s&U`K^Yki3&P|7 zWI^iAd$*<5Z!AdD+}(Y*7*N54!0Tqx1vPwpTsgW5M%TsXz=6Fh*M53rBqnU;{MdG9 zYyNfSF`LHq1u><)r!zOK1oOuExT6}elS(XppFC)rlqzdRRM`+FZMc|ho-Qnh-Gi+q z+&=GC;A*(GY{6xnMR&Gwb!nLAw^gkOUVCendqs1v;fmg^Mqr+6N0;-kOYL%3Sb-yO zw>L<_2Cn^&d%}>bSreoAFm}i3=Q}zG2lN8 zaO%E!E7~p$e{Zh-LX+120d4j>d`OsV!-oX8eIED&d;~JjGT?x8W}}H5sLZx^w3jfq zWfTb*UKZZDJ*-huQj<+NNAKy&;L+JuuwDk3-< zPbV3v7Byh)T3*-auhCt0IQn!@)}YY3{6O7wc>*J2Cm$cri8fe05-WFY3z=5t0=FL_ z?C+<(c!viw*W^7c2~Y$%E$prGJU?#D3agx5C2aH#ZeOfyolTB->k&Rz$`#C{^%9z< zn#%lfkf|qZaD%8Y;fszr5h|F9dOXK?gOykDW8f8QsrX*~<+Fza1~7j7m#YH-N+ zvVfSd>HG)dYJC-9;EtR?@*2YCu+k~9dFW2&Tav&p>`P(-IhN1Ruw6+ymI45}1`3ng zn3aO$k)27{z0#rOsfAvv*kCAhlMSB2d}hvPJ%*-dL zXO_KkvDk(ZlJAC`g0#sZogaCk$KuGeWzaqQ1MjI&6doylwJyUMS8nS1dbM1GU{hCa zn#eP8RV4*R5N=6#uHmcH2KPesTgAku&?`PY4*K$W?v4m_!|Ju&9g0>w5S5l1I&!a& zMYgle%gJ`_%8HK*17~J#c53qv)Y;}tW0&vhWIw5UGuruQ@1+TPk~J@aD6>7Q2jHqW zTy}6oRX7UWMr>sR*XuiWc02r%^h*g0Vh<7dBa}{mTj(QO-Nea;+5VI!0yqY|0YA*x zZZx36V6vU4x+G@DPPyIcTAq7xWG8JebDgkAy~s!q4}NS$U|YHKHtpkvudeQvvQy1o zBSOS#x}siPAiTU9cXh5Z@|UE&jE0)|=85Rc>4tZnJcfGLfcGqxW248*nerK1>crA! z(*fH+jXvXoYcG(glS9ywpqEEcf5={U`Y28nqx%OaiD({5&yZzB1sikoAWsYD7h+3_ z_{z%)&Q^-oiq$8l1m_x)rM1(@Az`}NU48xCT|MWmRkiHJ$GK5Rc-iE1-R#WN!lj1! zxyy@Jn*zAPGgnsbs0`;_zqYh`RdizQ$)o4bFi#)90+W~Tx2xSX`SsUPov?qj7H|Cg zQn@?G%6Y$8jL2$UcTA0H(RhjM84$RAm?)5aL`k< zlDmKrxlbNbJ`&U>eqqIZdZPUnkwFwfc$5jR+7>H438=yLU9m55mU6uE#V+EyzUpbz zL)*BPr8>nNe8`ZH+>NG(gpZN71))NXyG}*CS@_U?r`zAu7kvNDHso3(ob*lIveDJLJoisn`FYhkN zmt}BQmwe@ao|=Sy_T_$Se5uaKiz=>?Ho?DqzVztMFP~L__hoB=XBPw8ZuXzGj2PIr zO56FsRmS7lgjhhV$m#QPCsctU8v$6|Ehopf4j%&Ivfg`oCx5A(lMDV`sX#tdYI)Jq z`&U+Yji#;iY=$Z~7O>6P`&%hbt_5noKCc0NLNTu7t*AokyB9-0QIZ{u?xosoAZuYz zzV3jMgNbF3(x7w}q%5rb1f=|=Q5jRHd+3vLSj=rkV`YMRZ9rAh#~075Nw3T5PhyT0 zg8t-qPgSkExyX(B=xq3lhCqJnDYcN+|NAP6M$VEF~jFrek}M>C9r*U^ALSI`opcc|q1P!zm` zbF{n@EVF+bfr10i@`g^1L#D5ZG2EGXVXWl)V6%Ck4;*QZ4cGr*nCZAM`F}*e!4sk7 z9QVuin&fR@vBf=|@1}57NBr4ii5FK1M{Tq5a0B@9Hz&*sLW92=?z)|EJn*#Fj*{yU zQ9g%{#GPaUv8nDU$?+LSPX|*Y>HE{tvlDX56DwF*H96VN5J+QFb4-&#D;KTUH?zL( zY-Lh)*+A8K^S*pHTd$tzzQNI<@zUCnt5+_tQ_ZJ(F85!%bN%l9OGyY(Q7*Ws{8Jv6 zM>4{XpUPwSr)P%mJ$yelx44km%&nj;Drvh|^Au3FX3H#$)3ILY8sZij2}rM^brESO zsqmIua)+|xNvDu!^*nl!mxT0#nMmWp6xLCm0IX;U#0r_<(C#=B-WPrI>>(proDSDC zmnuS^{aHP(nFnrwvTq^Qx*7~PKDKqZf_>YOtr#4K1&CByZ<0u)s5y?U5m_vG{lM#l zILo;m_!i^b!e8LRR>@vwL56V=rg3R~>H(9>2r^Y4f$N}fO3HvDLo zsd<9EOIY7Ij+kJ=d@b33(CSg=sL}i9M*p}<5W?do1i6zZ5pPYC?!A3>*Y?r5&o9}z zFdDi#Y3?fGa=_<@@juaj`_Np4k|(ZAP=Tb!0zx0<$s+O;)hV9IKqy0pVJ=!|So&g;g3*S!Qmjj+G@p&LWBNSoC^>EV%XR@uaBrlmNWK5pKpOcPXTAlL#)eNAEI`6_qqplHxgW*emIP&q3zl z;3PmGH`gyZA1WX%C%~JM6t1eOt|Y+-lU9%tIHs;51<8tm3gPjpYElWn!EkkD^;#u$ zoWQvdfIC-yaA-vOg0d_>TCrn#f8$`o74^Y=Fd?<$scAs?iupZRK5Mv8JZk+8{rMB= zl~-@%eo1|M_x(qW*X~akDh(B5K7YU-inLsJnMjnvUePP{4;VTn$Os8!r>sxXun@lR zXHiqoM0E^w`VK)rh+8J`bSXO&-hkNWi8Rb@4e3!*%b0Y(4Al=Ws&!5mQ0u=`>)KS| zquyAj^74AKN8ZB3esX)kUkZsDpjiNZ^VokvCC63{wm6^{4eV^dK8Dl5fWdG3_4zr? z3fQKA4a(nIlkJ0G^#h!?qb4J4pemNrYJeRE=-cLW6`*`tdtn&tA^y@L+AmJ_U--Y* zNdNYobACk3f<{3@K0vIrA+}5rk!c>pu$e)hvkE?T;+X7tAAlCi!d4%oESIh_b@_n( z?aF|#jEIjPxji`{(b+uCAIT#wt1KrhA}q|Ed_YuIMYW_@MNvH810yY~S}xUq6Rvc( z!lX+GKoK!5_E9G!P92RrbbKIYXt+Od+;PHNTP0*YyPBfN3IH_*8^;2m??E9}$<+fT8V*B?q1zp5@w;^Ok;;b`(Q z+aAv9AHEte?T=#+B#e zw@@}8z|BL>KLZnzl|tpEPfSUTLaYaT=SQg5*udoS)r;xolhdQ%oh{xyfB*JbEa}XL-v&PeEBD1IIARiF6eca)Wy68Y2%u+sLHrm{0Y04V z1#tlgL<|b~F_aOc9D0cDI7ZOW`LFT-M;qAVxNq0KSc2b~Z`TWt=|-Id-MMbx+_~Va zBtl&1xRfY3Y(279IBpk)BMgxJj#?f%WOd}Y%b`ODq7L~|4*A3+g@w6+!azt=RP>Rk z(4)r>$DfRgjyicb`XnV9Fkx|7W`k;hZWLAbNTxo8sT*6YcdWwTM73dfix= zc)8Pw61QUv-}vMMak)0pZB|Kjo-u8%r&~kgX@^gwA3j-h_+(}L33~jAjL5hKD{7Z3 zwau5-0qU7y%yYq++i{7fS-s#y=1lznRaQI|Cy}EdMK==9AV`)d$u_FX=aHm9M`=f} zafz2zNdlP}6P+0w%}Veuj5}PCaJV}0$l1iWij#@wB0TC(9+}otTQ<}Je|71{QkbVR z%IE={IZkU%;P;Dvpf1Xwon<6E&bDRm~Y~Z5j1#Ssk_6ea(4;o%w@MEk7ZRlYv+UDNm)u%jwzLi`7 zUPnCr25ko{_8G{nci1@lLy&lkDrq#A3PDO>9%LPGX?S#z3MuJk*EOtk$LOP})O|aA z;O0x(Vvse!qBd3u6-7`KQqxCWt>Rx~b2sktP5K&e6AoEocLz<$`g|q?^7E%vIF64P z(7f`b%0mcB9`&L;>H>3R5&-jBvws=XS8U@KaMPAbC(Q~fI|b{bw+z~1x~+dzx)P+{ z!@MT_LGtcs>KVV_-*^Y2&p1f0Eqwg>QSxya=P8FZlxD+*di!f44xPs)w~9_Xo*+?PgCjp8N>Q$ zR*~n^B5#2-u^nto6mck_xH&$aVm%FSp#Ushn z18d0JnU`0V>1-?4Tou~@YdW=Pre?LbpLq0B3}OM<79 zbblVH{DVl6TaPqP6^_%7q>XOU@jJ#p29ikWuM%}HwVGk~+l;&tSWl7mpU$UpYwEyK zrDe!=odYX}orMb7LTvy1u6|c5sP!}IoJOJ|06-ux9QsoHT9K;HMKgbxd`&{#&m%R2 zNjjVa;I&nEGnNskpWcqmD?eVQP0Ib$HTr(&l(Q`pxBE=pVU;-le%LkAuN{ObUhmsz zY)o8t>6Md4b8l00Eo>1p4@oEmJMDsGk9d*#V3O4sFN^;2UE3fd`RPVFjP?|TA0C&%vOaKVZZ(+LBYSO0elAgQbHL8%b^O{HwVd|>M8uBRQ&B!RXMYPcJRdM0`n;Yua}sItwl~f>#^O zP@D}6JV>(;sUA|$Muo|XsKX_@N=<+`3NGdKI_mzW-tQ4PLZO@4DylCGVp@Cb59Uv| zMq(FSj4czZTBdQHMrpQJXqIN=B^AA8YpAwME{YkbD7B75jnpL^mzuN4 zMX$X_wZ7e&A*7RAuksVsTDq_+tO#SCuD)cIHI#Oiaz$2EIVOd-bQQMwrDSQt?J{^T zk~OUPL|bMW&_oL|b{Uq*>UVGHhMDq~-QOR;tM#GLq1Zn;uZBzLD?#6C&Y!Rs&Aebg z)23Vl)Cm{e;ZaYdOI}rRcVM3n^w8jH{w$JTVKDhmhEK!FVn< zSFT5T-tY6d@(tDMx1O@BudG6M180>kV0PM61Q3+Tk}AKUwNuSK+T5=)6@%F$wKh=K zpUS5N8LL`WEnx(W@uz?;ajx{|UWf8 zq>DsJO^}%~MR#v?hpoy(JZHk6j{Ov}oayiH&Zr?N{kC`@^Xs7CgiMzWH-qM>bcf8LX5rck77D}eE5YaR> zMP+BRUAyuh9d3Kh{ro*|^kBPOv2@LGYWmCpXKFHT0LqVCS#bmwsY;~hq8&Ba2Ofz{ zI_x}ZhpXZbKqi$=_roR@@zliR_vzOaFC8~|;m_qqfM0j!p2@%Kc|Ox~UO)NsC25K7 z(;tKUrA1W5_-hz3r4eP1G?_Rf$Lnq2x~>_r0u;M6=LXUsX-O!ui+lYbosC~EMzaUe(9)K z?I=^x9__PSw||k7JFTc@Hg8)O988oq{Hq}g1vIaMyfP8wmD_v1Ag}zk>Z=8=`f9?r z=n2U{x&URW29S43b2Tuwsv}a&mZ6VB$HD+<~+X4%{@t3wWr#CwBe*B_vIyb z7qj}#W({y=+8{e?XXJtGY=p@eO=XR;vU=#1Bdq+foT}EWf!5r?vF!Tsy!x?%&VhnK zkc)vtjI;CG2)2?#Jr^fhzR|A!|L@wt-?$R@7Bv)LK$01tBODOfy~iXcH^+3h2mpno zmNB6vrRCK%wRJW0hS27g*4Fa2=CmqSDFhA(o9+Skd`*ksRn-?6CH2!Ywe-&U1)!bL zI&ra-3x+k>W17E`lRZ9BE+8S0&YXSv?9#&3)Rrr+0WK+t{$egAWwZ0UwMBJz>wbLz ze1;+bS~|hW5Q~2HreZ2^E??&#?roJYK#GctdB@=Dgb};Q6OD}9a0zk1XLZ8P-@+1c zDfjKWhFNnv!K3C;cOvUrh7ODzNi#1aMaAGq2IGVwT{^u&Y8C7#CDkRQ@ z>-6p6$x1zw&gDnm9WZA>^#0AzRWUc`B{Kv5XX~;_Z%w&VlCk-X@@gAN8}b@-v_F+= zL_+lm#$ll4GNYNb&e}rxr|FQgf*z6&q#D~QK2>9l1<^$jj%y_0Xo(YwnYIFxPsGL7 z3j^ZaJx_@3??O_DJeH!#Q*agOyyVhh-0%bW$3*M;@||@vwr3Cj>{Wae5=DWDdm?*g z1Vz$nRH}zQO9Yr{=IU%1Cij+Y#HW-)3Zgv{{10FZ*aIp}<#kO+m|d>R^eLuQM7Vca z_CkO+M4CVs_I^S%L#{gX%!s)@m<;QfR_!(~Fz|VDuRJGfM8;B3v8N0Hz&tSGj;pI3 zrHiL^*-EfNbV~CoJ^f8ePsA&M>`kPOCI2pB-63?HQ^_i0YzmZTZbYYxM@zpq?V<7%nQ zH*deQp5cA6vU>XCY4S&W>AJ8U0o&er^#05D7~A4ZLt!4p6CSR+RNd}B)W0wENs?o4 zwgt}%eM8AT|3pauiWP@)uu>BY#s+u{B_tH(xu9C#K$9Q>(@-@vQPtvf;(&x5Ama*A zatD-rC3XCu+5sFGMHo>ebhoqFGdNg%aa_O zwUy*?kwxtn=6A#Mda28D0GFg-?4_l8Ku0xDM-D{Z=-v7h6LqVdWXoM192E8;I=Gk} zc6CfTXcZf6#WpzJ^VDg-L=dS#P_}bq*f}#iT^RfK zWd(UKLJwpe_RBmLlyy2N`$vrC05k`kL1?BsxznBZrS3b#@(yA79- zeyArvu0gZeIZ!l?{8>n`27rnRljgfa066-_T!oDuf4L|XQ=_;Mv+78LBED+cbO+Dn zX$kG|iJ5(7sV}M$`DCR}b&-FUwBlxjFhEa*awF5ILEMZ6K-xSi^4S8PR%riN(MV4{ zo6ZH8)%0Ex$b(a1;C`?<8zyU={WUG`6H!pnTns=<8g2lk_BRUeMp|U>6L(&F&~cfd ziQ{qq?ej!XDz85g26QH{gVUvUMy6|`adiGNNdmt%tiL}(qC#)b2NE5se`^`MhIjYI zb3s{cRXAW=Yqn4-hp)@ra?zQvIg6i2mQw8AnN=o1?W$N3KKTA-b|VBCzPO4gGQJ%% z0pPd*^dx4)bdxE$`#oVsTnnHOy{T9#L(uAVuKCF@Re&rOzSx}XKE1Zf$Ae}Dsgd3R z(81}IN$DiaspIXmQ1F!+A_QY1KPzBDUQ3aRMo-l8YeWgHqe2!9yj+Q_CxMYklo;?M z_Gq|-<$Lr@bTCrKAA&Vmo0W_js!JdbJ>?xs}GeqJ!i%sX5Wp! zpL_7;D)n@TKP*2}O#35{zBE)$5auUsMzohlfRYK2-ul6RF0|Wd23NCp`!G)+R)rw>mq+?1t7XItyGQ zTWw1}-V}jCA(t;n9q+k0QPLtQlq~6=#@3{mnfcTEZ+dFDb(Mr>G-o_~nP=Ui#>1vz zB1X)ZP;nC-grHNd{FDViUWAPedfM$69Q*j>P~>DJ_Z-ZjKZYrI2%SgF3C2B`orIsj zSxOlOEAOaOe;6SOffD_bC zVr6fo#F~9joF+xG=17{tMVaX5^z#}v#J>itps$h(B&isP<2RBDVlMzw08pmda4t~r zB!GgapaUS{1(H-iA`(zN0BA&lR25>Bs7tUW71y8dAyTFqK(xVJ3COugp*jj4*7bnECatv5E7kSQpn-;ph_9y zlXW~e>qKz&p_AQAISEj8%u|pC87i1K1FDWpXML7eKzcxYYcRPhlH3<}u>S;wlNJf4 z-GWiKoSev%kZkH9Dk~(F6_TA!$;hRoR>siJQ%`NPRcd>2YR`EF3#6xGtcNN8*pbzH4ipU2Ye%zcMsr%bv--#Lnm8o&Z&dQX??;fN`hsCJ$tkI6pfL&zqsat( z^B53F4!s~XuZ&()1*s@3E-9)kVF71b+dE)@h$(ST-`;^fqNxbb)tXw}%m%|~rpxoE z&K4%mr&l!2ES9!)bOPc;v%B~16GePs%eBnwOHZFY&%WXd5fntcxRmy?iGlegRnYfS zwjhT7`)aNw3I|{Ye9tApAg;V=Q~S-5Hr5SP3#g|*E=D|<6LK2^co7cRTbflmj?fXT zeDGtx1-E*!4m2!qCSMzu_CXSmXJ|)uDSu7FDp=*n=>~2h-vzC!+l)gM!)Y_=S-f;; z{DYAg%y5j~xNWaKd&02$mAV8F(t8;#_{&ye2zbLicW;2AZ`=u8GOxTq3ivB{l5Uv> zeU%88DQ~A{%IYBJ{9hK{8aak4rmV%nSy`j|htp-V+OU8f`sE3eacxL#5&fgYyKdDZ zqAG?X_7j2RxmtlnI4Rt$feXTTm=4WZ?X6B$Cd|r2B(U(SmPTCJ8ZejEn$%SZN9AnXb=q z_8mh=L@mE7Nysw&pOZne1gg4dp2`?Gd8jM7u!RiCsau(;FS)xrO#Y`8$@_|n0)bQrl*?jS zwPH?TsRJGPn&O> zxAg3}Ou6|UC;!H$6ZZ!{GJX+ZLsWtY$yHt*dg~>&0jSY{+!$U|O0T@4bAD^7B{8zMf5f!@Qz* zEyBP;WC48txkn7~q$Gc(&yz+E%-+TCIPw;U4V&$GkM9y_RCswR?wtR<-LUi;4@I-p za7@8vnHO~vJanOT?b9b$a7m072A>vCol(8~r0)E&21P*GA1Yqq%=I;yd}gan@b%9h zit`>^Mk~9~YW|oRcch-av7*~XR2YGhf@<3^!Cj}J# zJN|wj^2^E#Y(Z}N4!_Ss$DVAOULdDj_KD|lOlsn#M?fY~o?4NXFK~!-qEHHvOEGfM zyx8cfT`mc(?Iq6@o?jQ<0!C(i2-m)V&J^0?jJNzbCo}VXUaf$Q*aP_>?_X>0;O6!T zKI>WE0;E@o{I3)GVd&OR-O0 z&qf-1yv65)C$UkbH8R?`H7J(xG(7kO>KBMY(!lE~8^13L`Gob7cAn7lWTPIGjGlT_ zEc?dJqa%{G1q$tb5W|GeMfY9IfzKExQ`5D~?u~0AsZpd|m-^D=Ag*WErNeZtmR<5u zBO<-RCxs5L@>4DxRe;V(MkCS}?VjnLg?z}4)K)`#PV^i;enrR~nYSRns;VUpce1^5 zR5o|=alN6aA~%Dj6h-Ef5?+%0nTWZOvA?g$$kJ2Q(6+p?>ZatL0V#BMtmB-{K+D=z zPou-3wwrfe+$^|7P1cMwyDj$_5VwuOXr4>IHTXv~RJ@ex^IZMT(8#TQ^CRtkpYD0u zJ(-G6;*T2Luv(cEE@<2BSGF5PfEe((0kN9k*?oIm*4-M?oX2=J5l3117o|I=?D)1zIXVsSOJ#6La` zbzSw~(*Kp|jsG+}P=tDv3x=kde;Vo3q6zmi;2Qy-MjI_@$YJ!-UHYf7#3EavosY}- z)A+_WXCk|#YswUFvg_VnJ%=f3hiPr#$iMM#?mjvLT+KzFg*sA3F{#w%6Z)eFCKy7ICWI;~YUrVep-2Zq zm2N1~#Sj97rlI%VtDz|%YN!H&f)y1VKy0WpU>hBs;oOeTGv|5t+54=$)>-fVaK2~p z;Rfzp*YEn5jb)Ru(Xc?Bh|@P78(Jn@9aqxKfA`(*xz2;(p5cYE>Bm8S7`!_iJ zkrDW_CqO|S`mgO*&IS;&2X;F_lpHYno??gW0X5%$I3l?2{^RIVKNfEI?_JkQ7ES$o z*99GY4&Wi`-|H^*kT$sG`tLIcKcG!F(m!EfX8(6^pxfW^0G{?|C%J~Ocz%3|H~3v5Vo%(fl`^`oJEWN9~RfNfO9`q)_`m2@;X#%iGn0 zl3!gR#Qg>s6<&f{2?~)pz%~H?rQ36aa@4xc&$d(o0q<>``B2(qRdz1GSH$Th1M9I& zk-FRKd!eq-Y++S7L>MCBcAKkOn1K_`CeiRjZkvSLE`VXt4@uR=-VxbU5H8mlsO;yk!WW;m$b~?&@PevKncw1|U zfeWj^SHN!<88|>)r>?{jDS`${oLBea)ZX9I@Vno&P4ur{f5y9-6%`*p*x(z~RQ4>u zi6d=5gdf$~NJm7O)_9^YLc{tq6MZ(`6WEQ2r^%$Rm}QIdDk%WHEhDHNhu#O2bxo8RG8w^;6er@%t!rX3$dSjH0lP zicYCBG|eZBN@{fP&C7X>Ri!daMN~Ov3wo9}Z93+{@W8T!$fq}2T`X>5>VPLHnIvN` z8R&?tArLgmX|Z3GWDYKlr0&^mZTUhmJYrT~#y#~J+9If4iS7D=%t7I#+3$%7uktF} zA%GqyRYa9dx^?T`OyxpokIqBru^C3y=fF9)XvK^1|>`@Y*a3(wh|YTbj(*Q3MxPPEyWIiZ+So6 z(xTI{p)-zh9~y)PrVgDCZNp69+guK{h^-$Bosp9X<8%&wnmW)VGx-WM~2pGB*xgPY8uuF+;j&6WN->9@)1~d)0*72HjlbydLc+cf~7&i+Ap?C265z5nv zOqD$TNqTh^6`w9KiQD95N^PSX(mdLsVlNBRg!+yNHJe&|=SGf*N2m+wIP$N4d3gi? z7SXdG)^0Hj^>maN$WX4y?c5m=MQM|8k*?LRM!gNX`zMo}o5UvYcP|>xYo6hL8<&VY zEt`?2z?aU0UtMP3ELLHl-{Y}j<{(7b{RntdAVKV!iK3gs8lp9ukdLU>jLzA`_ zTtPe}C)RcwFj|BJ#mo#`OvRNY*Wk~S6>zq*qYCeuy_*af`%u(0?Y1#&VeUzC2s&ed z!Zwvl;8k0QO2N%$n!_YtFv3(&xs;#=*x7vPm@bJwAl6>F(%c!3)tc;9{r#a{?uI|PLbUxno#d((4aMYm*^}_QD>Vuww z0qf6tpQJmxPym?WqigHA_gjw3A%6a(UDr6c&#N`# zj^?jS+ADa=d3h$jv^k;Boni;#Y8y84W>m(iQ_Oa73FcpvrFXifj46#aM} z-p*o&vWx{F@vGyKH@DIczNc-zo7gWTpndj!HcGhv^TaE$-t2U3pLo&LDbl&#fLl zU)QN&w6{Mi~2 ziCP~Q0*kNG>u>EYI~(BRJpNjL@Y0joMp7)!eF$pUI`=N>JPd%xlW{McDikZfJt?A{ z(p)|Io5KBXPiKR$SF_&zdgj|@jU9oZV{p4IOHbak;eGA%*qd9%o^>K7Rr79AECmlSj+3T(=XN&Hckm6ZH{D<%KkYQxcwV(Ld{?@!7*kiz*XmNZVz zwT(*y1(G0l1ci_^Mtn+YbRsL+EUgHv*gBeBWuKPr#Ypo=&9cudw#}{wOSiyeY$r~G zdqGoZR<7^4(lAcVsj?cdi3^;16Z3QFg_UPYD*Y2KclmMDkzyL;h<9TXKmMiQcPBAcy@Z!&(5ymzdO51If*}NyEuvejL4vH z60GpbtEns~OfRpAKrhPLebmYkN3?2hh?j$YPcK(qUSD&0xT!L=p*riQSn^6?=V;-@`nsI1&a#2_bKrzM(v>sNRnXgAJ=|S9 z&{s9uUwFB{;>u7hSQpmZ-3c~^HGqontHYhcy`5Kw`-aC;y!f`|lDRQF$X3`PQ4e z4yZWZY*)x+UH}CAbQDzzph^L=5MGCow*#ZWk-QD1V6n-^jLg7 zSG-kq!Dmf#l}m`U1yIZwX0$S;;mFBH%0=HuJ&!Mm?D;PH&Yme@lW51e8G4+))*XX? zz)B$Jbee`@=96c5s5ZNZydD}Z0kFUk~4S7|^=uqLWVV{!{(j@e?&7Rae^mhj$yT2NxoLjLrw*qQw4_UM^yF}Hw**DU2LVLMS{ zHXzJo?V;0XZhOQ5D!$wZ>;OCJaEU%#DFi*&@Hr@sUpqyx;tIj%E+9FGn*|FUKBk?VojH zNY~{?7tCwYAzZzrY}8s#uuM5e<4gE@b>bTF266Au$A%m^p=5il9F6tsI_5`+~nJXoR10fa?wTFYTn z>LwNMk0cAt7ZQ>vXut}mizMJ({n_$-^Ncy6V;tw04gu#Y5mV(qa;wwsVoA6Ayk3VOWD zd})HK#saXiCJ*`y@uBK2E&nx)OIMpj4lQjNMNKvIZx(1gfJ1tii>uF%i^oxJuGIZ5 z`5Hol*s`YtZ3x0DD(wNONpABIy_v#h0MrOb6F7lKWIs>#u3CYvl#h|A;L z3{wEJ1u-3BiB*2A8cV+*F+>SaJGI6q&3;GwO+H`N+G*6_g|Ao`=Na==pvgf^GA0pD zH1Da)l8k@{mMtroC(^IVe%=yKL^Z%W$g>LGQ6eu*9x0z!Hb17ECE*f=`4T^dF{7tq zy;qs?6;y7TSVoDg{|vIY)u!r|KO{)o-mRd22T%%vR%{e9B)6hb`SA7w1ZhR#nU@Up z$?@pjbta^=nKXIvrHab=7G-UzDb*Am)6dq%tMQ8$?dQoVgm~dG@Aiy1=d8R>+a~YL z3{9S?@G$IEGpt--%La~o&|nvHos*8bM~9b>lFZO1WS;l3ub|+Tafz8W$>^wCr#@xle$57r+a8i1_LH-Y-U=kxf%5mzSTSlIW>&QPW+l!HsKdB&E6ajf(h1xI|)}0LZ+3EHGfc*gDN}s z=J4HjNo$7Z8015o^QiKIuf{J{IcF_aH}J^^F-4|rychIClALrsRlbN$r8;-JpCNTn zBxkyhu5h@&AFS9(+_L&&TxT&{qGvEtf2dG>YZulS!AW!3Vv5St z-HR4uGURQ2C92vqqhhkWgg0h|i%D>71r=q&AYjYtrWON@^ls?*2p4yoDG`)fx7aMC zcN7}eQTcNeMN@6xnPSQ~((Jas4NgiZlaLx}tAyOx z>{rIdkEfEa z`G;IGsj=;BwuPuqIf@3^v&Gb~i$z{Hdf>ttKEHR1TH>X7T|u4-!8$K&9&aS@*-&28 zOC5c4-u4gu;s}(jD8bRco_XXjIt+j>0@lk!yp+J_53fw*1g-W^9_Cye(EpU?ZxMY9 zX&&R)*B$;Q<{NRP#qQ$NnLQ6CZ_j@;W{BIRq7Ds^YilhWVW?E(6Qj4f(LNW07>W-a zKJ$c}iha6~HM4mBKV#RYLz*pMOd;|7%x3Cn(qa@3Wfy z_YHL*)depYU|c+Y&yNTaJOGDeu>P)nDJ!oiwg45X$Y`BUD&W+1uAY zP}9^rbg8AJjop=l=M&>=8=SsAb8)DSH9VSmEk~MgP+w|_JNxMI!pMB%LiKz;Ge7^z zQns|bx%uJy%Pa36tv6q+S})DG`Wi2wedy5>73~YOzQmg<>9>)4pP*4tH7AsO;|$s9 zAueQ+MXEOeP=;Xy8p9N&pys)q^Mb-*2G-3PN9MdEZ8?e}J8_4X8 zKjp*#0$~!bpe(n#f;v}DsQ&z`{u_KFMUdb<_F}niu3mw{l$<22LrsU<`F1`8PmSoF z%#?VS(uSW)W9Op#>ymZ0uvN0mMO|!oPYS1W>ptmCVBJ^Wv`@;yciCom;pdBWZ>b-*NcQj!&voS z^X5MW-)&(E?kg}BPMe<(_e(x(_AzF2y6gAkDw~7bq0GY{k3(FI)?kY4c*+&^;B|NS3IHsRcjWo zW?cHc(aZf=tQ-r>AN%4yE2Erz+v8 zjQtT7x<~bsmfT(%#jL%~gUY)W9<3A5tTQfmlA9xjB*ZE*NEs&X>$H+TVwGZBNv}ET zj?U5{ryGCu72JP;FeTj9S@Uqy?q5mIdw*nyXo0VXAI5FqrwfZhUu7T=2poz>HDTy| zAX-;R_STsLa7i5}8sQlW2vy0hitDWdMB?nIi9O4F(lV zlGFFvVl=ES>3~W%PVXxjTr5OIrE?#d4}yk%!IF_%uF&LuaRdA+W7^_exiFQitHl6{ zV95)?5>YP;3Ugje>?-TuxK+d#6t+@93VWCho0-iO(+Yv$V#U2CD&Ga)t%a?qxW|RL zrQ%fZWYY1j4}E9)lhr$--_5+lw1}F$lK|4-kf-KzqEs?3XHyDlXnQR3%r~(U@5I7a zKP29VIerwnZ-*Q3mvy{#ro_|!Px&uZ-aMsAYMSezp+zSFV?Af`-^p>A;Pce51Rv}V zUo;DRqkyklkXV4tT0d)fK^g%X#KYZVd$e@+K5|&|4j8gg!p$`_@oeQBH{U zepyFom$Z%lfG8A+&3&P>=AdLg{>+J2ibar6rfnt8x3-?1t>99U*^mst1SH)9GPIgl3 zV;g%jlrBV`nd#VHt}g%gLpcZt|GQPj;O~d>^Q`!@N9?DJ>p$DR{-+IJ|NAdzJ{}FW z-`~o_x2fl?q%j?5xpAWd|86z7N?^yl%0!U8CTREi$)JQB*FN&?HKceQ14U`5@4|Borh`Elgl_{5~tgHfq-@LVW z!u8JGK*)pThxPYXo;>{pJjp%V0A*6IUT?m6`)>2+LlXoRe%xiV^a# z2=M!xZbj>cB^^2yc_cF2D8b(#D(P@kq=mn)X=n%~z>gAi(mFJheAdr0A^0cSvOWC+ zZCNEIQ^P{tLqZ&*!o8yYMq7#To{7<(XHxupeEdQ}BSJ&{qeJ}?!$YIPLXu8_n9DCQ z>Idlpq1WHF@QKOcpcPmzGF3k&+c1`~KZ#?UnEsP%*_~n9Wcxd$g}7w~yXKtq&IxvA zq?}-+*cbacSJ1rj{XNQkJ?d$}%&^ex5I<(}sjL*=;=thilfmUDBeTOm6c$+$lu#NL z&_)ZY_l@AvV)|)GBea95#YU_OYet?a6QpFNASkoVuC`||ozwEX(pVrXJDU3glsW!Q z$pX?+{qoL*}1>`NH(H z>dK$!tfV}+D=LbC- z8E&j(HrB8k>T){jGrAkIo0{^QJ4&0|tJ+$M20P9Tb)5%2$UnK+Ajr*ni$@2_L2lO2 z^@E#%(5zt?gk}8$eNF#@W>=d=ue9|IgVD2nAT+x=);l^j^uPaK_J8=3;8zqMfG2b7 z{--5LAOtJJ^D+YorrGeXK7{LqDvm8U0(~5Sk^JVWtomCPDs=?$%fq^0;un&Rk+pUl zg8-DX!d`O&?RQ$Kjn>uHgCVxn@)jZC;!HBNlQwbFiT3gJQWHXya)<=HCPOtIL$|Ch z^*p&8|6#NH;6CPwYe?w)6PqC}tu{zCjKjIheRiFrU~~1LWYqJCSgjKm-(K9_xK#)t zp|&DBX9OXVVTgs1!KcI3F4sP{(@YV=edx>lbqr{xfDB4{=AC;VzY1s9{=~_RpzZM} zk)mx@P5}>ct3Nbues$~#veEI#4$oV{=n3S-hX%nNDPAgCc;-~?k&%Jmg7%khP99q9 z_jwC%+P<;JT8~tkoIgvO)tVG7w1Pn;xwZcL&9rYT2mvHs#;$d9xlELBMl~SPB%e)M zkW8CBO-xx{W5r#0RhX+AAt?pOzfDCVV)QvkISGJcA}7y%slb64(k~(S&V41_)*N`T(&q&8VQ$$4 zC9w{_$t9)mz7|b&$@a_q1c1L0KVglKK5W5|Y$d=7G+9+0E*=oixp`7G-50?U&USYd zw5N>Epw61p_FjZ3v~;tDI#PpAi&F5eK6T&e|u$j)j#1u`?B!adJcOmpL;K+#fQ6yYB@s*f zh6tQ&xRVcqo_^eI+RYN8O^sNK!ndpa>b7~qrF4@lM5Jk{a^(dnvbl6IcU3mam#&iq zixDGCD;3w(^$yDZl4$9%`;&ImY#dkO+g#H8T{wF*T% z{rXabb@+fW$?VT;7&P)h>&Mvkz(pn)QCI2ph{(`sLJ1|BdOUg`1t=Jfhua!5g>vbz zk?%A`&LSihSWL6fA4d~?Scn(}hQxfm)D<#3b{VP-og|1|uQLOE%)&?6JW?=bq)9%# z$c*P6dx+0Gu;HVdygVvt7MVRgm-Dgelg2P#K6~H%8feYI9qrokf>Oy+i*@j*1VmB; zd0JU>Y$9Nw0iKx;mRC09Op0x@t>8T2(xplGB7vXhI=y$E%cm<^59_>Ba0j=VVJqJN zIp;$Yvt7z{m83v~tLnV)43m7b275aKTZl|VQ+D;+QwS(LSvcz?(<~k1Unkb^;)ZJ< z3vi^E>lQ$SPwPLEES`DRy1Z;LHyP#{9mc~_AQQ1?qA?vaca`sc-Ki*O@36Y`tU)5Y zcuJ5hq=isw^xr7hqt}sN{cc6laLVdtV3|mDXcF=8r`cP42wEb|!N-NMt&a@R%5L3a(0si8*62_@`c#tWnYzY@=IM_a? z;w+Xa$&jdOkQ$_=)>8F3Qj4il1AsA$sX9O6N>V%@&x$$+fX$m=(BI-1()czThoV); z`@n^tK4J^`M-v3XGMsihmlb$_s_G$`)+D+WJalE?0!b5+$_Ej;RrRPnU(|s%{FGmq zud8FsFP`382!C9fa0ts)4w{;|(%uCjim1%-$`+sQ$bYQEnp>ORi7&fuQPNj@B`olh zud9i2Y;SK+*m0YrM|V43HYV$(il^AP-MIQ5V{g{wYh2*jq%jG&t_J94$d6#*q(FVy zm&)^uxqwOEaKF$Dbv+sbI>IDW9eR1PnVrSwYAt#VHLFG4&e@FlI1G=6>9P*ogJ5Wt z2o|0sbo~D1ja4ScaGXDio(9=PK;>^e;79qwI7UP?ZQ~+)PUQZ1{1?L z_UdRzy?|KSg^W*0GM&GvvW;_3NPd+V$4_hE$0WJIGjxOFh`n#E<(k4E{Dp>!gP*w_ zqBENUJr!OOCm-iB*Y9f%<`qO#u2D-+RRao3@*v|Xo0y46p9J+gS( zS-MZ=BxkV!@60CFeERMOb>+d#wiw8GGE0D@3^-AKi&tNQd{`7!%m`WA#d`#le_{%^ z3#F;@5>-_8-2=CmT=8?u5KBh}cUVuMGPs3YOQj(_Buliza18Xz&hZ!_GW;nfOQ_!* z$ccI^Oh%+$G-jeW+Jl=I8jMuszT_g| zCv@6b5NHw+c5ee_q#YQaG)xaF`3MOHh<_lP1_q`#e4Xdy-&khN6~x0D+dm;@uYB0M z6unR33EXF2CsJf9)pXAyZ6|T!ewqEL)=d+U%x^;@=5{%zZmFU#;8r?O#{DoA0``<^ zM~hCXRrwQQCp-}+S!2iu({%Xzv77Z7B$p>QNY)X8}3+CC#q0Wp=F43;Dq zbbL&*ZlAiRkz=ol@ebBvDc6NVCTY?qYFY{2IUVX!vomm%t1x3e&Huyr*$TBjJ5A|7 zk*WfEVYE0oN~)&H`$#o{q@AhHOopToPi3Km9E?n*zZ8jnpb{HrJ1ZJVG4_Kl(WG<{O~_H(9I zyqheEPr;SB7oL&n3m&x)F|L_1Bxx&S$kz{NX31DT9JCod^VtJjHyKLFPobql_TtSc zW&i@e+e#alZR0Gc0Jkh)O+4HsE~J#5wG6||bFfaXr$>6-?9JGIQw)AoIDTg)_OuV| z&)XR58K0SYx~-0$qCRc!ozRg1(A% zmn!e2q93!$sry3(V`Rf(B)1go2;1l)5;XAxM`(Y(pJOzHvuBEdejx^k(-FV-IR@-U z=kQ^LXN5_Nj#C^%1eec@dLAVLX!C5iT&PX^sf7EEK8D#%J2S#9lKT{#Z0GH53%Kyx zF}Askcx_dfiYqQ_73g(x_{zc-)6nu`m@;^wnMhs#HfN5Cf-XWUH!xj>_A7kq9)UW8 z>j95ZUaq20$wlq1=ZVJ4xP-;}BrdYcmr7WwPuQyOii+YRsLa)&1&d{%F$t?hwcpyK z|3Wt^-?I@2Ip5GOCeM(P5dq{{YrpTe)5p~Ll#9VLpWY_&3mzX7bVgR3Tm4{aNAPMCFe*L&Cp2ALM(TzGZRKBL^RqO&Dtq>@I z=c(io(UPwy@tJLlLmD6a<2p&PJ{Qth zgXxIvYgCYTFd1mOvWdBtO%VZ*3k+-_0n#C#tSthn>j5otb9W$LS>O4{4oD~4zK@(d(_8o*CSsscK?JKyThaFKBg$i^BVPe;ZxkVkIUAF5D1A~RrWqsWQWtl2_W zM@h-t=*3z0is$qK9eo-HyOKXb;Iu=f3ca`7dnG)eQr~nVqY#_-tDi@st$Epeb$q2{ zbkhg3)@NvsuV}MYKn~kS>;x1;`__yBPZ~P*4Yrns_&jR@1z-ULyDMZA7bzQ^zvl`G zm8grqZcy{Mfw^zdr?S2?b{(3dne7S64?Fnk_l&QcU;j3lMA0VPj}OxyLgbV9m6vQ5@A`y8}uCKhnKIDP+0D;$X$yY%tHx% z4MQ_m-z^#4GQRdX=i1B2J%6gVI=|jCnJ9f--TtjB57e<~w`)|$n}zz1iQAIonBHj) zxG0$<7{up5si(pInyf^g+KO_wwgev;QOdwf)H%>5l2}|IEPq_YM8N|}X|2P}J*tlF zBcps1rc5V;$FCaXPUx*qkd2@wVG>Dqbp<^oQXk;Kp>2T30;luCYkJv4dd4|~W#0_52Tspt`y4;j8$NfybSeb}4UoGUe$ z+Sg(v0j~pcjiXw^X3~1+G^K$HyKX?gt1bvTwD(F6CTGSN-2mfoZu?42d!Dv~0h;pS zH^0xD8jGhIi-x6&FXF^gwIzZh7gkmlOzjsQC5t@#E)uf60AJ+EFNvKn7Fq2Qefs^T zeX4A*{Y?iS(U^MR&wAlMMsIyzx%JogTY&81E+L&me!|c*i>RYQ8bUww{{#W zJH|$M{Y#maBs@GMA|Uv5_{qeO;HbcuFu%lz(5SGmGe00+Z1Aa=V0uhY zVscPSd{BIJOjvwu7>M#BQ({TMsfU76^`p}CqjR*QD?y-VdNSQ4h-n+lG)~R|=iAZnVv*cTDX8shtMMr?Ke?4bUgSb33AR{v%C(ED34#>{Q zjQJ^J`w8eO&Yk|3k}W^+KUo~8VXLahD6h)P&Km&LYpKm$IUPOeodZ9~TWNPUC|axN zzEIWOTg|;t(08d|V7TVer5cdJRiuIxu8+yM$mtr)?`^Eh?yAqc(3sWK%=wAqy4%Zs z;JD87pnz?#uk!Lw3fEHiQ^3~H+tcxb!qtNm?&{U1D_1-Ehq>3rIKe65m6PRK2=H30bn-?+;3nGg5 zJH5KqsF-sA=U&uq-b|?#z**f>80&ED4|yUTCI8@p#|d#;MbWN@{Xut_hX8f53ta9Y zMl_4peXEP_p8MX;OBa6Oy6j*Amy0$%(*m(-g!oOd6J4qNkHo&~|7Llk6m9n+dod)9 zg*19;?pYk;o(krs@l*xJ>-M-_|wx{hms% z(ooA>%_9ByR8`95mL-gnG57fA6&Dweo$FUt;(af?un}S1EsqY}cx_&C;xDhz4{3CX z41rDBsO8(|N(dnCUGL`_dimJCGUm4I@6{#?#-&tO2x?VEW&N~1C*(>%o42L=QPd4z z3;B$?Gv}YWup4``A{-&xo@^aB2 z+(%u>`1xOn1;QDG&@Ay2dL>z~YX;bReK`3lYV*xR!|;+o=Y(wIR@+^2-uuVbUDXTa zP&x3Vj=9b3#qK2E%dJvQoyUY7!-!W{vT&XLQZxfjyioNB0JL(qt(E0OSHdjc$+Acd zeD7X%w;dWr+q83&$zUvDq>hq?a(M?;?x?9VpmBmY{Q`p1+S`(%bdB8?t9ENY^*%Q8 zP;oich97&6>v~i{!#{23w6JjA5OWqO*Sk1%>vnpVN~F-+@P?(mw>|H+MQeSHzvpsL zaq#&%`U%MdE-~88Lg(Gy4-gI4ZOoo5n+Vd<9jm~I zHxpVRzrAsJV1=JyhygEIG0HE0e;zD-clTMXjsu~_EwA4FVKSeTWb`8Q-Sgkyc1rrV zV13^{y*xHCc6;cVoI1|WnDgrO!I)>22Yn^*O9kn6OG?Q;h)^8Wb0S0dz?xXofqQD+ zY?KMHQw3l=sc_!WNF(z>vFHKETFX8F?ecvMQsY=)EdBd%QZwG*T)fmv)cZkCb1IRf zF!O;nmb&DRHAe>%GhBfN0KU|GEvfDy2Q$Jbiqlw-@moN1YKAMSwcRgmm zKQ2Y2D*t`Nb3KwF&gR&+qe*iuqnBgUj=}B62%2%K`cdXS=-0Ar)Sc#xTZ)5L{4X*2t`Y%f_9i z)(z$)Lk08}?dMhw)<3A5@ zyXTzzk`CP2xqY#_->WtJ!ZQFzTZQuYf8`@B);@Upd1&Wh_=$l>?JE|?t8VgjzrJ7L zviVd95TK>SUb^A+4$2#v;lJSB;BoJun#<^`KcBmpq^15kQp*3!(Nkgkq|~dbvjDCR z;M?>NgJ}T$fmS@I936n*T>DNX|9S#$OM{8H_I`PO!ObK(_4n9)SKpuR@<42*o4s92 ze9^v$yGp|_gG>bKt-K&D9I#OfqM^13(NIoBNKLHcM5}QJUPyo?p8UW5Cw0MB>=lb;R61Q92{*MA@oI3 zQJcXB+LI;+Tt|e9*cS)xQDr>^i>lq)gpJAanX0h5@tzE=F26h%*yFgt$Cwo*&d1*{ zSL&QDdh^aItct^o1Vxj|c+jg0&n5k&XR9Ir$k1M>)b~~XyVHb~+dzl;<_S#vnoS+sG`s(Hh|7ucU(S5B=QubvDLiZj+?Gv|Y)uqdw4QhL z6>Rqal_l^N`PBUt56V_#pDn56%L|%PQoLcOg5QAe!Q3CsBgo`T5c!W0P|^VYR~^08 z4f+gOfM%buiDF#m%ODGaHb2C2I&fHW_TjitCpSF!!bpvjldU$3S{h^OtSQW3p_mK-wsIADSmPn+Tydg7gD{wjsl=@WKY z;ayzEVE_%nPyY>L7gUdSy1=l!D5rLOs~+X5!u$v!rIEmfw9~XtI}sk5&#YLyX-R;0 z@$o7Hvc=;+gc_G20i}@db^M9fE}|^dz#;%7eHGzD$xx1?31lQV*)zFxW`e8M zT$Fgk5;PmYRx_X{THsfpsD62%-6i12KIX|CdEmQ)){aBS$b;SL%d+JhK3~p0NdlnH z;B(`lE>P1VwFyNiETaxdgDImpa2C~<%f&QvP|aMlmI2^S#poL541VziXnb<6*(qgW zY~>8TCB(;hT-bmkvh+ek1^ZCy+Vg`JzieKUIikdIn7LI;%5*ep)MMC|PE#kOcbZxPi= zN6&~0^YQpv@juYyvEYIfAplJR4$<*}Bq*E*TaG<+embtuBK;=*~M<{Vg`O{7o*dL@0_=ZN42gCg#?_4 zNG;*g(V?#^!S7fNV9)3?@o2Zws|LpthD%u=@_?<*7DzRnV8A@lv(*TUDEUdzAK97xhMRX^fl}=n7(_}G{~`uak`UIFuG=N7JYfh#e?&(FOT>*tJAd`=K{v&Hsde6A zncLD;@4pmM4^ly4!g}av6|$>gTb+GK5FaE?0=h0ekPGpQ4cf7}TAEs;om^zE|T?WX?H& zWPG(Znke2w(wv*?x_RJyM{C=O-r}meloL=ZV5$S*-hLI0ZCpgEG8EOQO8kG6*gT|f zm+y05^=GWMZ>wU&{}9rkS#asd2y3Ym6eyA#8P2GtOTtzjBBZHhD+aAjsqssa($nq@ zGl`Z4j+QSZdlUOW|=7pgb;$moQ8!c_)w0Kr|6quf>W`#c^F(~^e*F>u6@%`{U zNUT4v%z)cFKi0?PqE&$ENyC1Gz3ugw0)L;xv{HuceOJYWDP)Sh8TL+N<+prg5hXTdbV^yo@(2yK44fP=}%b^F) zk2>>Ezqp(ly6C$a15JEfab)vSCc;ENpj)BYd13}yREA;fkl|Q@B!uI}4owd^;IpGF zsfAbD-C4YR0?Cql$Om$o2xl{JZL zdSk9ZjdIl%k$ghuD~ElWOM0~4Gy)nPv{>ih0I&N>9u0wkp328n5@f?R#3>JuS%8YQ zuME1Y1zRQF^8iz_So+ML4o`Is`84q1;8;5uW7m4E$Hlf|ch%$C=}B(jF|`I#S8T?c9x zRqXKv?w#_fCDLtjgWh{$Rd61+ZuLqpL^zK*8w2DEk6%B(m~!hkg&Tnm{#O2sG_MT% z42HFLf=zB>&iRy}a|y1;V9{~aMa5vuuvuYhL_Vv~tEt(S0XyH3*3!hTWnQ?{7|d`o zJr-46bM5lfw2M4E05LgQcD6a-YDeo*=~7-!*!_j;i_K937GvYFBTrvtM|pXqdb-iQ zxP6e{-kAsBFEtZ(=LmL7KU@zClIu7QyCpPUN}^S2H2tby9{3Jhnpicr_PV5}v6HbP z?9O(|UpHo&;6l>w;+t*4EV=FNDrn^%RePyoA8Wf26|IU{ zf!s-`}dZz5wMi@87pcb0ryQg#o9G4=>VelI8aX5ARx^f0bbg(_U7LW)f<&eC7V!v{uP= zbjaIvI^L!H;l$bW28To+Z>~hbzR+E|QRgQ<@r#H5^|1+YEj_4AfMR;mbYQ>VW9MJ^ zgYL?0%c^9Y31})sCXMgFBv?GMuXUys`9=QSgE*`ks;{JH<2FHUE+-TUHZ@Kr4v`2@Il-$!KROsWcmw`7>6u zRRSv+Wp09o^^z3lbYsk`r~5L#3_mtwi>C|K96B^|QakhL!)K*-&|r4Vog#F;V{(a( zo7TtV5&v+_7L)&rz4s1ks)6=)Hz5h3hh9X9fD|bP=|u=V(ve;by+i0#2tD-P6+`b; zI*5SuqNoT6sDP+60TmDw<%{oo?m6eXckX=O%)R%&`_E=?*vw=?X4Yo?)_NWU5_!km zDz?b0=$b7~_P9KRliq>ftH;iH!^=I1AM8GAx0KwvfV?#LAlRn1p7VOZ30oQFBMV3@ zd(CAwa<#72^BTIS^kOBr5ntfx{h2)QQir^Gm@wzZ9`M?!Vgq%RsMs**d-0ILVMw}*NoUGPlnf+RAgOh8zm=I z+f&RNdZF9P`l}_QEK=sLQJ{6`QP5i(7UQmsmsHigB9LR`^;VGz@roOdlBqpybi#I1 zZiPK{d11l=J?5hsy*@Jga!+YSs|o()M4-Ov?Z{$_-8I$KTw6EqMQ0(1#vN_p_EEX2 z9{VY^s6_@{Z9MyxolFUF{&8xc-zh z*-yO&9pS zbq01Tx=jo~&U%Q0i6j0nPYgo2$PGh$5u_x+!X#7#9Qh0ZEHyDi1L86Sla!J@));Ch z{_hM!mkxq(LsVSYSY(RrZv?+G8%=YpA{#(@UPeO6ilGqlw*`5kN4Sd6-s=5V32RRQ zgL{J@a>Ots?sS;P;%kyw%2k@kGF%^Qh?F72j=wfAC5?Q#a<47 zfgYD#zQ}acn$ZR;&qYz-Gn2^r%MoO^C$4V3;P!=^Ld#e+P}f^BGEy9vU*jhLZC+Bv zb^?br|Do^O0|NwjGleJZ#rg#kL}0pIir(Tm%^w> zI9g@qqGiRi$S#ipcP4NF(DuxO@EUap+Y5av0tsuzvs>@usi8n@dMc5>6vdhT) zWqQ#Pfrth~ju)G(^1moAE~T57HOz<*FCk;)8y3p^hDJn=mw>gKh@A`4$xYnNkyvGQ zXefvrFCx3^AF&h<5!Pj76?soz^*2`$|Dfcr1E9QuXwgh0si|*hY-(=# zyY$sjOakG&LII}Xr0D#MR~;oTeYMm9)Iut}hngOY)F7@HI z)a5$R`!D+khhM+lU%#;_i&WX#0rtLM0HhQgtR9zRnb1=*D_v;>qEnh%Gp9X`gwj{s zWQ+T&OBpd+QR%Fo0437EpQYddtWL#rKGJ@G0*T6x1`XgQS0^7;>uLX?g8aTs~f3lSlY678gr4xL?m}0Ee<)vp#B9bEQGaP&O zi5xn1&b5oEa;>8nL`AET+mEHCZywGaw0xX~8_SrTcZ+3l%kw`U)$Tp&0|pdoY-U5- zw-;L;br@~Rc79nIW_|qD`cl`y`@tAWPTl_QuOB8#C4E=qdcLa~mT5gCikFUemmayl zfA+ZV$H7`9r`waec${?8P2E6C~EF_!Xyog zgz?rOB3a;9M`Lt0;n9dqHuP#Vt5c0_5Ooe*6|RjYQKgQCJK2U@s;aR|B0&%a0VUN| za3W9;T;?bEsfIf;1`JnWRLnq?`WUXdOr)WCYp+~blAzWQv+ zH@0de$H+$DQ^5<-o=Qdq917{W0_P%f&x z8};W|(|34C8LW_<$%y+c#gyq`El+7bFt=We0M-pYfk61;*D*vkoBjk(zQ@fb?uQNE zri8`|eWsD)LXV;ao_lP4c^isR84<@gpA$;5s zEo9swXGo;G){-1;03cY9j_^&(e9x0&8Z-D?D6{Hd7MM*RcOc}v=qZ)OiXH5P8hW&N zzNecJo_-t4Qeq3eqzWG-Wjnn5VD&Al$l2zZOa>rFY&?@dj?{F|J`-Z3OcpVb3_rJP z?0+1|)pqUozHAy7k=bio^pg70`FTKMzxT%#iGu;MNb$pAmW%Jt#`wI&zfMVUihX~k z(fsY|OH=RPft+`nAAi^II=J_J-udEp+i5R1{e#oZ>i4~8YIO&He$IDY{5h{>@KyMI zs`pIc=h=_Qz;V+@4=7ifo>~eZn_Y+2VOSEz7{$-5R%uo1rzb4Hrb24{rwO{xBnrvig2OdI?Swa34NCp9^ ze>KP!z%5YTKlq)$Zt#C32>|I;04n&8BtZ^fya~E=iu0jwIpC8AWp zl$B4PUD$|C#1as)CB5kkmG)$p_T&;Y5)?B+idzxY3fyv7K?Of)dB^`$luIl7|7$7N zVu6oK`_f(L_%3b%pC8jB^tt?}tCT*!H zXKo;+Z78GZD33BxGP6>>tE3jBtQo1R8EU2GdPmFOUPZ@ESremvH&9*co|byJmX?pM zNrb-Py*oCpy7sol5uOIVetMV?Jp_2 z!8+C5B-Ya=#n&=6&^j^PDkk)9qPK0Tzin!`U8->yq;{gIGo{e{yL@mX0R>H$`C*$L+R?N#f>Foz-NU;}ltHpz3{B z7Y*(L5xKIQQiG2y?tsLs0(wn<*=3acc9x_5s!k4m)J_^CN0 z*r~=E&elH86f4Q08@io7Ow}0H+sw)ye}0CONr?9}JK5^OvdMYP_WiA*mIEa^tB*Wi zCVhn7eb(Re{qxh*m^|I$wZoN4_jlp{RMF7#@rx3LfuDoBqK^d0o)0|!^+RrSkyr73 zKkBHvvMJ&DlP4D!ER)U;Jm%@T^drQ-kgY{iNuEByeWo)jiQ3MsBE%5O=(-#H9iQzz zMlR`BahLL3HWK{erX?uR?e$Y=StEwtOi~ZgtB-b_PZ~I<52K7kf=ej&CcEZ zzQZxWgZ`rh_k+i$pXv_=&QEp^o&aP*hl5}ikHev_@hgMFR8sPJAPPbSBh*32cVd+F zt`HellK&o2qruIkF-EMS-zNF1|5nkiy>EZ3==T}%#lKbbbHn$4s^}Cx!)JU>mE~5u zrlxhv#7k|d$L*H`maZPpC!#zPUYR*J9xqr0eK}slBnY1@IS{Mp8<*-HJ2-jI}5g9C%7N{Azj7m>|=p* z)7dApi&XSmb=r!U+hISbPg!-tZ8bP;v_;82w~X(1aMjd5`^o4t@lO0pZS%X({a&&g z=Z7PfO|UIBsbM@yKF6qcF%ENeh|&v_sY32$WOII!p`m#1c+vSr|Brdg^v5Tw)y;o? z?s2A{znEeGN1>kwS>u^$D+uw&(wp=3oIsNP{h@XjACqwqLl}fNV(CanxWsa2~?H*51elI5+VJ@E~>P> zr=teF-*Q`09Kl*_y-`AX5z(6!LP3+$Ha~CrwQJjGLeHk{*uNJ{fLFl>Sk36o)Z7Q! zRpQmRb!?#7E+F#~=G)3MZoJ>T*^jEEgFs-(PnP=W<>*R(wQjjZ|UP$Nn z5`xg@%WZEiU^VgW_SZ?%IZ+VvP)Svc5*ahT&ZyiCB(QZ<<8JA|1+RTwZ+BcDV#TYN+@e+`c?|bu zHMh`+H))POZp7wRY9~X0kZQe$ujWzaBU;F&mLR zX&pUZ1!pdpO<0_?HE{^pTPD7F7P^pq&py^gL(AgDoxDd6bsF7j`4iM~PCB}Hgxp?r zb~jyI1=**8Jv@5?SCT&lb_`y&bg|W1ex>dgsJ-I$ilQ}+yXILut|ppR0SjhpfLE?r z#rhVGS$)3Q?)Tz>S3vWn)o;Fy9V5ab*3Q!%qE<@OiNFYx`cH%65dw{QxitfZ3rB)S zPV(N%rr5JyS@kGsUem3u*j10hfVTz|ddl6+uW z{@Xojc{!>VC4n9J$zQBI`&QmV1Iy#6E$!Te;eL52@)|_^WmZIqkHU8?N&s>vVI9WE z3V6~so3aHI^aoydIA`+irM_aVjV7?mX~)eKL4DNI6tn8ySL})-TO*I_fzy5p*a`w zi?snM%gnDtMgv6A*Br)8g;;+|MyWF2M4c!cJU)n|Jzt}IAJEBd^ED;CZ#DA#=%soC zofN|QUH+$e4loWV^aAgY!9o12@4lJ&U0+SN`1z_j;^Q{=$pE@-W7kkakXRVHl@q>zP zpI@(Fq8Q(w8oj^FjD$mEHc3ctqA>AHm>4PK1J{DjppT0NNyy0KpvbcXiC>G67aF0- zd^jf+y|3bW2jWrNL3ehgEKc$yVh2f~8PGTk_+6d^+XCzw0nEIGd*W<#`84XPbToyF zK3_p}qDF*Mxjt8AU@|U-J0OZWH;ReZG6xzMkwL1lK&Da+<#EvmU5%jOCt2z;Owy0l zD2UaPhU=Qe=u6`s8QzgWYuYTuDB$%_(&5F7k=kM~jDGN~V+bi)&J>=2I<|J-gyiJk zb1#5-p2qKAOYlM^H25Vrh#8?OBNdGC_NOuaQXb5C_|}V8#*#*8qfht&qxehc#Dao| zyd`|$Qesgz{&+00L^|neSE4dHsfN{q01GH9NNRGisgibWmQMc2lw6h&-(HZM?wIT> z9ou`FoG_Za>K|_Z$kOtarNX$eZk}|vL}HdhibYJyG%WDdsl>~zltDAKVSG^clFVeB z!rNo3GbWpPM{CAYaP+A}5-ROOTy_65v)9tru33LX+eCcV-IkWyb4hyx(^_#c zu@S?3mAFe~d^Z()_pAeR{_!plFA;-`L@-PKe4RlH)dZVk$U-pWiNR+R7@Cs|U53ol z>X=(28PuOL_D|C#7&8n%Co5Ola(uF7=n>~qx8u0L+g%^C6X7)y-_EqiwwD{r79>|f zN@k0ViA!x~D)(gHs=_I1CM}~tH3iuU?y`O)So~bhHg4ox4|>_ zY}Mk{z~V=F#T|j}J)er7zi}TT$Bmf7$1e)+gRTNIuIRpn2QS{ZHNVNPH?zpct8P?z z%zW~22RvWq#fdF?EsuF3rC}B=nh-2lp#>g94pT>vK=eTa;RjUS(X3RItwNBMi~cOxarEW?k#(2B-$C5}riPzn zLh$Wzzr>6bF=t3B668J?;B?_i7KZ{)k2@qHq4F73%;kQuJAS1j)yN;!>U=c?z5eMc zeu=#`Vv9BD?6u2kwRy5NS{l`*?WuS2bCKJD&iOF&t^m=VF#L}|gDojCbwDx$6Nk!n zs8EBKbNt8p!h+TS9XK>!Je3 zQ<1mj!WUr?WWmJk``+=ef*Tz%3cr6(`a_KslA*$%-)MK;AiKZwwk~${=gb zmTF$e59y0({%Ij|z61QBAg-0QK>LE9STvOw#Xn>TeLP{gU>{}`8`fkR($5|?;M^RZ z(X0f4sUV3r-vM2qK!*CxHYn#jfw0SRw>!E*>+)TDs@sm1+kC2FH;MsKxknPyq*BF? zT*e;des~1iZ4Kl}IS8T?ue&$%Ied=q-YQeX?kDl2uIPyGZ7>Yf^r_YCr{)+q7y>8t zo)d-ncPh%=wwbkU$I+YKtu*KY3i{|M*7DV|(}LxAnKat%$GJ+i$uL zY$e~_nI14&8#uhwZQ3UxUlT(q^tess@ugN@Lzh@@Tr3YERumuSSRbcYKR|jFq>IrH z>QQ323V>VS(3Vz9R!s)0IF|4@o$jHeu3_B|Lm-l2u9Ukxs~Elp`|J0+tXc2a!5Wl3 zvS`9(;0<)v#R*~E89u=fKUiQ?aMyk%cnb~n3rxUnfwc||F>@APQln)R@gA&DudR^? z7(Ng^YKj@XiyL*{3)~+awV@h|;2v{S!K;m0Cv=Z%+?Tmc719CrZPog4+{SZno8| zP6g~tHf~L|-Ji`{@4k&DcpRt(4yLX}XbV=F-VT!&Du=R63WL&etiW?fFjA zGc)xw{gBx~4!PkJ#({ph_uW?CT}F0Y(!Zc3kJ{65uhLIz)K_M#-%?qx?WKRJPFFaY z-T3(I^^DBoD&w1eaW>ZsuklQZS`4B#%RwbeqBf16ElcgT{4Wm-tTTh;UZ%auoci7z zvq08yzs!$t_(*@Cs8fTcxxI9vgyHR+7}i{j*h{?-RSf}q$m1NDT6=Eu&)fvh+tfOq<>q_HNTO5o)f)3( z_P>gM^$K!z$eFhw%A_C;T7*~EY&z?I9|TJ|1HVsDsC?r@CRCV1KKf#%s9Z*^Sf(Ia z-NjFRA+g7$LLBP)c)|1DObYp8hPhqc?Zt+W1q;vFj`PV*i{dtQ_r65;$G20TY`Zu6 zc`~CQrY*uytp8K<`=p{JQ?4bmg(Y*7Z`4&EbS4(}y1Mt*x)=X`P(r<2rn9{6dY?T0 ze(k-IRR5KiXG=JaH?7*5WAUY%P7hCOy%rYA{+xMUs{sfLB+PR#EI9$BNq}A?-G$W= zsCEeO-iHi3WzCOQKbSoH6!>r}@8Knncbu|s-4|gCw}7R_w|6Jsa__w5rFh3L`%dus z`+fEIWA|2D!jr7ZE2Z3gWOpiW_4@d*S0FU%y44|GaHzgIB;BxLKeWoVw@U9i)Ihe< zR(9PqRF%rcM}{4X$?#EF_F=qIiVt098(6>WRppRT!62~Vskz}Dx^c5)gDg#ErMqJ( zW%~Y3wHix}*@wEg9dv~S08@jh>y!M^tV^1zp#|(}lR#NhbrR$si!{}=bp5A~YxSB^#!S{ZwUjCRy{NxPO<;s5Yu=%8xHZsw;#_nI=Qx}+Uu_%)^ZEb=8 zZVb9G{ql_vZ?Il$eBawJ`}4h5*Oq|e)TCY}vw1eV)xfxgDxk%_yWXt40>%f&=b%m|=h@Nq?Hs$0tn&~!|=@(Kgdn}ZXa=9Og zuT&eny$a^VMy-lPj`2 zG3;AP@i&x*GLHMJE(38)x`*k#OkpzaetqBL{k}-c!(f_zFHCQZR{z+qUfSn<+UbiL zPkKaaj>h}@b-cfr9UjS}dJS&$*Y@=`x*t!i^pSh0%!Q?i^Y2^fz!!F-mMCLH6Q78) ze$V9tAk7sOvI8H(28t90zx*0VOdWJpeexzOPHgLOd5JCV#!2*zfeZK3?Y@CT&c%ou zlGJOVNFNOZSvG?EE8ROl47^qPlC12?O1htMhhL2I4 zj2Li?`JDILz>V4&#`_k=Oz)58J{q;Y|0vKZVYC06w#QgF`cEYP=;!93ZO)67+aX^L z#;^^ee)1Q0_bz^1NQ8ReRV!bW?)@eyelEnAF4;a2nLEMWKH>Rl;=%Wc)q}s^Uw!`D z`@{bWC#gBF)750QRb*B<<==6(oXH#Mu8kK+{5=kd{XMRxzlhPDwBd%CzyWNNMKlIN z0(@Ti_ww2A-hW<0EUpIJj~ppbgW)v+6%P5o*T|87e{;?rLQ44YP|c5c98vjuT%~eYX)iZo{$VAoK@Oy>BcC+*_wwH#-Q|YfT2mUl_V>8`&-s76xcfyvX|1va{;Y@< zZan`@E5DV~kcQV^sAH0Le0(d)aAEagutS@aENb&KWt#W~VeON1EsuyN8IKZ!G)M`~ z`^0nD6<0xDQfVBiG&V@>`R`R)8AsxP;?*-S2`#Yke-3n5LGZuUYi2NUoP&sK`Zv>& zC1DUG#yX_zH;J(h3&*X$fewW9-!$hIIaHAeD#s3$`zO=kV&l1fg-76$5I5&deiku7 zZXqeee}y~$#5yVftrozp_ScxrVaRe>8H7+Ly`}|l83O{AY}bhq&tH2sG2($pxDitx z)*E(gV$N(bSOF0$ZZRuCQBy@86{Ls}QcRiqrX9Dm+jR*?ZaE*pTUaScJ5gyDd0EGQ zWn;J0R0Q>0MU?_>ss_ue_{*w?5)Ip0)D)^5WM~$09aajWdrapVg&GgXU)44*wbk{1 z;-PE2D)QW#H^p_3vPQxpmZCTANJ!ifmo=ACv_sMo{o8KhbPl2jqFR<19=ZP$9@$HY z+sjIN$`f5>*Rk?9eH7(&rL@)M?x@S#Xi6FA${1)Vm>EbLtI0Xq-%@c?KpE=D1)~|A z_2m7Or2Ld`sp}e;DC?Lg85>)fsiC}d)!mg;1C%vFl(mRqQ;0Fj-U97pt?6o|ABs`B zMR5$e0uy!!f4p37eW>3ND%AvPa@9F4bHOvFGEF$%cf_1Ee^er&z_V!v%F6tO} zZ45>`$j&gF7)W{D3HCM*@X^Eg7&!PDxP{$uxM%1YU=$Kzjtw^tRlw$J=|$-p#2OpM zTN%Yzn&7R>lO3&6+)ZOW%%h1Bm7fXD-y+7(IyuZLCgg6S*FPy$n0=aWQDeY^wrFBd zb;mfy$STIvDZ$Jk!Q3^`(j(5&7iSUrH>Dy*RJI}iMpUu3aWVg)2Tv_Zuq{t_E-B24 zBDAH~cNSOIKCG{M@;JY>qi$fJw6nkUAJSz_`~UZVUt*v$`k#Rg2u?;QRUrYfS`8v_ z6px63j?I0pXG+7wxrqNM(5d`87x6DjE}QbQBnRQqRmN0Qp)uW$wW@!73jcwUvzOJD zX0m-9W9)ZAMJPve%2SSkU!&t(=7~F}b=K3Jjh3CVjW)upEW1XHa+Iv4@jAtlZZF52 zge;F5*Pr4U1Z`%PoUG&g$Q7!>@~;9VFh=WN%xRX=p0B|6JgeR9+pqoxIU?>)Gw5oHc#F=_*| z3GZXz>io8rKZQpg#{KyyjsgVr8J;Ed_>iVay+raC#V}OWY$OQ{8`=7?-ubi|&wCi1 z>b#2aqn4Zp?8-3wo&1{_s?0rBDNVf)itd!BB>>o5jdAN$xsj6{+Pe< zIQVJ`l_(J^%YQnoBN+?;)_LCwA)oI1FR=m4t8+Pxh8f2ycavu7&IUIG?(mx`w7r*KER-3-hYt z^q+5dD`QH`Tgb&tM3cdP106&{xEIrkv5)t}|9zm7z;XB-MJ9Yi z40MQN5x3YRkMstVTED*1XE__1H!{5y0HY+dUS_9^g&!|gMU!N8S>d6U!Udl@Wh7_l0V&?Q_$w{r(>!a$h<> z?EgA^y7(?dY=p1*{M*bgn_pjMHE#Sqnm4`sTWmwzUixWG(7~+_%Xsco6sUbuc5^_* zPn+9f4X1MXA;$and2jvmfnSHydQbL2O7=;dQm3(~6OBQTi7v++D};tdG}(sm90yM! zfUEN#f4O%M&8k`~J$!W_|Nf18)u+QfU?ji@SB_-JxdKv=9;PoLhChsWF>TufUH}75 zA`UACb<2Y#qxtyYBSIG~WGYwKzv7_{i0zvbBfL-@jwS3RrSNJhIpPWjc5Z}gjQ~4i z8}Y>o!e~bgMg^UGlC5J`S!ktEqBOL=1;HSIF@scTRXG9e@Q%?hLE}9+4^spziWHcO zHXRX8$7}N(=SV#caOhSDrYrD;;sg-r|436r)C$IT`~-w)b?u2o}>K8 z&%HRN`HjXm4+jDQ4-;3&^)e^@u3bvr>etP(qX0671oiR6KqotW*>ZzBe^NCnygZ#Z83zB!K-A^0SD@(wePXqQP>5ohzb^ov)IcqI+5>iQNj zJm}APD}d{{h%r|+4BcFf*4qezX;pp zOq!EE$7^6*d}J+)cK;b$C0YfnyGCwA*kA^$5d?5=;H0qi;thUvc5MVq+p6>`2|SjR z4}T}OZN3tjT72O`0Tgc-Rm&d>=*J})7+<%ir7 zR27D^Q@7XUroX_C&@&$<*|;1vjc?Xy{8+vfg;U`$Mx)L+emvI~DW{VQp$AhSKzgtW zMqOZ#eC-fI!8!#ms(%A_r)L&!;D+Wh$i zamcVjqS0wcABUm}hy>BaPtvRStzxOp= z%33n&R2i{~JjgsFOTBG`A&WPuvoZiExkT*gY0Z>`N^Gf+a1^XEPF+mdC)uAF9#y3- z@e|&?V?w$4y0s*r(fh%!^$+&vxzMk!<(Zlw<)-C~Ut;{4wq#^EC^!L7R)ve?sDiR~t`bYAWyPxS*9m!!*~#HV&X2fjocZ21N@U@nw{Sayg zfRvOU2SwsY3N@mM1nK@Y@<`GLyN`S52EQ)H=$=Wv?At1cER$BXco*@|bSJ9-x77S6 z7TPZBHQ{uc_d4R+2U+VQl7z8qnvtRN!xqO@KYm`4k%ufiWnxFfa~ysbICMHHt54ui zSTUbGS-$+f)ZaZ8Y(l^Fyqaj?@P zTs1t3!AxcvMd6QywP)zU`J=7`Q-FM;aDOslb_}l%o-Ml8o@#!h``L#)Cuv#9G8e^In+w{ z#1|P958#UZ?NpU5F#ndQhZs|sDMjL;4jL@8Gm(bbOgrRHSBbMY!KY8fpq?3H_+cvK zCuAI3QI&%k{HM6876=Uj+%cz5`6fdxCzH-x=8sAybBGowifT95;59lc>Lhp;N3Of& zca<#dy|n*_VDD&s>N`BKeiu?9?H}$*_oztAz~#(S?P}x_B+vo`*yBJ{FSCzFS56i$ z%_J5YVx|h4r_wIWZqCj&kjXVmH0a%=s+of^Vbw|wvyg0wH)XQ#tHVR|?>y}CGCs{K zj1MA=Xx5lT=V4SDa#JrYM5Mw=&hxX;V_FK}0@#F|jf`8(u?heOgpk@nA$bLPd2VO+ z%UEjA3$WLl>@0I_*io8S2B|?e`tS#Y3j^boQ5172s*%ZQZl_Aakz%pBPHzfj(S^AJ zHaLBxz`A#5qG`q}svf|gqLAvoeqLrz_*mk7Wxo4HC&f<^i+d(bKR+sLB7Y#CcfW@r zXZcL7%kRO+)54_-nTVG%53Z;wWkcW&E_uiZP9u=1Av=dZZ6~BB}$Pn zy0vT0jMt%=seQyX0#q}YD5ys;H>KmT;ra&sC@MpJz@&>R3jie7Ph!^xk@kRmD#*@0TH&ZG#M_NNi<>w4d8$0ODWw|{Eoz`rfm3f`hQ{7`D-6B-+8!$!h z#T-?23waSh5#d%{hj}Dj|43e|Os24Hf28f}QQNw>?oF-Y@J_u)jP_UyMHxALZ-;t! z7}%V*0lsEgAfDv(!;R?U_`+O}Y1o+%(vgZGS#yr71}Ie8gS?9~l={ev5nj0LTSp`9 zKPnWVxkVw@3>X~^Rs(9Ut(e+eFH!5bBYb=Z>{u=4$fhfS(tmBJ__|;KLLJmX5=|gy zth9>3#yp$qDOrJ&!F#2i1vUCdhWa~n3xE3h&8qtH3qAiNc(q;9zv+2 zK$Shb_IL z%ER`MA^_ewi?*;HrDMzf;?5E_Q$OQs?&Q*hUueE!xmpRyq*06P?-tp{=J~niFIvnW z9GjQsCeZ)#B|dEroCQLKFM3QdJ*`TJj&tOAQ}CjTjX^r z#te{4H&q6TgaijjV{Jt-hzTh1^Y3(4xHCFN&3o5J z$ku=LZqWU4w!q<_McWw*lz@qy2(errl38N_%?!$%LqN(SNk+RGA{&Al(d6JXs zEPl1qVGS^)TGgFdmD|bF^G=yvyvwv}Rdbd7H-Hm>KgN zANRbg?|JCNtV{ee_o`=mdrrg&_it9t_RMo!d?cZg9RuH;HyEe*;1p?a_u`BxDQ(D9 za_G$N)UA}x3@=I|LAf+y4wIa+ZKn>O2o( zmSMaXYpd*m~t!gXAh@QT^+2=9e_L zVu7w8{d*o=Qm#njG-XVK?rF1B6hyV2?c@vjyeJWOk@Ej_24=DD1|F$Xh0 z_Ip9_T$g-L7$h&nQNGU29>+jQ4@vv<-O2P}Ho{Z}bHGRqPQDShFl#(A-^#RXb&Kr% zs>hS|RHYB$**cd4)8%9gH3HfA!d&>At)+sV)vemTeLZQt%4dVi+ws?D2{UpIKr{t# z(ToIr4r~>!<8LTg-g*)5Pc=M&>&M+DM=iTFPCffI)#%?D_qZ;`iNXR7?rfmw)c`CQ9cIPna%YB>!z#Sp0Guhb9ptA$O%RW3h9+V4f*L3DgQ~n>UpvxLuJ6 zt73WWYW;!7i;Oqo9lyfrb&)NhKbp-KQlV`cVYVxu>zzMz5_c*}!iSuzUw#U2YRrMw z_Y*O)k`BYFHn4siwne=qM%YC6%46<32z*rCy z0f=>nOkClQyP(&rUb>(^sj;1&2sT_ba>C z>4BIjYoX4Gdt{qw3-)pgn&u13S8&Ild*4Uk7JDqIq!&2R(Hu5W2s2gQnoMD@7DpCp zKUl(J0@acP>B9$xR!EDbS6(m#tS5uA4*69T{FPqsEAvD7IULnCRJW=H=8GVUgs1x> z$RZFhu4#>Db5MpkxX>KM(na~Rvfrd#II7IUZ^^57kJ1b--erztA6#{batlQrcHtzY zzcAW-!6&aTiIA&xucK>XtxsbO@XLni4Oci2C(=OLS8e(J7<36dJF8(jk!XQF)^Rz; zNGH#0#XI5S&telI&@%o9xK7Q4@rnH_+x48OvoSe6ivBFzkJ3&_TSr z*^l)}d>T3(ZSAf7{wUy?Tpj=M_(|f8&vfNz$ES#73tGVXNxghaHMsLU%<4pk{J6f` zt5NzK&_8dT_zAf%PX@5bXAUVHl#zX>Kkwa0nJd`l(52GH0&GF&{dKrh8M>*;YWXfs z>ZsAo^ow9Bc*#g&vdP? zF>WyL@cOv?de^kYQXuV`Wgu5nq8fG8&e8U#X~#h&x#6|wG9Wy)LLrT?Z>kVkAI+AaBsyHx(+xS5JP-dP|k zEnMC}p)VS{GLCmble>L1MpDkZLrBN7ogB&~UG1L9XEsJn=1VQk_p}*~M1tSS{xk&H^L2|eRA>bDL`o^e8ia%oL@cW4$N;obrsY;lZK3m) z7L1+Ua}`-A2Ebx#p6jPfTua1meo>`O)XsYH2iqX3#xJ!;Q^qd9?yE{4azr=5=p5d5 zgD=2nn$3v4mT*;1TzqP`@J#o%&GAc7y_Qq>!Le(&$KP=@_Xo+8JI_Q0 zAOL2f6y&Pp$N2zLo1wbzriuIg0Y-Mo5+_Ugwpr7u916A)6D}!d%3zfOc4l*rN3R1{ z^2;7{E<5)~xUp$qaUWzPC{yZYZB_!hOfgYRCRU-l9bHdciYDWvJjgY9`~44?f-%wD zzocf}DQ&dhKcr9NUku{TTbd1yd|+yuBDVk1mS1!aZ=b5d{Dv$2>1*kc14K!%W8UMs z?q|swdFDk+ebF(fjrzzTkX?b4! zbZdCD5W1TknfG%ys5WBGr8sEp=Y00;CkxB^#Xz~0YFcoZSJ0?rvPX59&sd?;3G*Y@ z=#zapl?Pfp=boWwl3$%hE=5kd_i`t^+HX6IKPXUdA0$bT^?1w9J|ppY)i3&n_$V#n zzT>J-md4O}#-NGwn%kN{v-0HO@iU2c9K!#NQA<~Gx~yd3l8 z^_Ool;HJW5^CsFW!wlo*NYGGIMmkr2wvK2W<^oVT zwDV5LCM0Z1Df%cqjX^M$zW-S*@a??W@;{o8RKKaQFzpwx+oBL)0_V@jv+u=|=-~;)7aBR}UIfz{YUL>v}I@zWnO*nE(1pis5$VQW}TuNg)$Q<<}C$Y z5_=25Af}pb2*SWVNuYujfWnoT%MDV*3sCTa?r1bR{u09?9wt{ zdCZQ!IR^)>%yX4(fbTxN9<=4*62>P&SKO-Kffo1zPTTeWS`t+q#0nDBP=AtH@KNL^aKFB)?JS9aB z(z)oDfyi%tG`kzd>N6vGe>{}J`Bw1_=h(pZ%F7e3hJDKm?<6~W-_}d3+JkmpQ?gaA zmHF51-i}%0XX%J`)`LCnm^$-$?J|&7kAai{klZEo zKeY|}Q95GEbmfN7;6X82tau-o`b-4Ek8HgWk=*zG&mYqv{vm^yVnOz!KOG4)3e4ox zzDc6~7!tM#04$D-F&Bc4UUzCuw!P1zEmR7AVch&-X~l+TAU_>mawG5C$ zs_CSIDeH@oci3w#kYjafG`kR;YDVaWn;CUhk)_KDh7 zE{$TuKTSWx=o`QQrbs8)B@EI}zI1cFEY0L8=O3*^!*HtocLldek$B6gPmGbM*vrX_FM3-aiH9;Cr>Q*&#Ay)`sQui2^l24&l=#4 zN&;*uR~hyEDC7m`846MM=EP1N9k?%(V=@QX3KxFUr$?!TR8pG5$J1-e*k5H3Q_2P# zp{i;JpgBck@})}a4Bywe?L{x?E9FufF{=0Qqg_Ri2Dt&;nI^Y~HO+?&3}AbOxfX>= z>{jfT`jtv2hXnrzd+!z0R3Aor?^F^X5Snxdy<1FxJLL%tbrSX} zIu_n@Z18ibs_DoyhBpS(Kv#~fRD57e-kQ`@uFaB#HJiKhE5q24^AT+En)@KeN1)LrcBQA>oiUg-re!E>99J|v3pgaH8zzsKjo-r z=GuA3NphN~GVPjd=Aky|7BW3zWh$Cn=Wt-Gpk3)>n`7VDW)xBBuUP3Lq-E1M?cP7_ z&nh&n($o2wxEU?h8D;*y!2E3=Z+I@}bisJ)oVm}-%G*xU!KO1_uKnK7>U--|i#^5~ zT$$!*rZ{eJ+V& zr&(ndy}@(xsNcm>guW$Kli0{_^eg2qXC^l$Eht3rbXcka0;+sR%7s`Ho&-CtYbDWl zr!Z}vP-Xlft6KSlRk2U?&JZJjf`sho3lz^~6&GbQ)|C^r-xF))oC<>(08NkD?>!|F zRal32BwyQ(Gcn-Vr(GdPGDsd{L{0D7yPHeMve~>ld&xjAg3Odno|au0$enbLNde|S zrjd6PB=6Q&37twF;bE@h;LJ5FAQ$lGOcZmP{4DOAGHa}46pZz(Gn&JC#e~`m--Cby zo$K$j?(qroh=Rq%ew8m4+m3Lfcn;H2hRo+)F5JE+9J6PtUMNm;ggH`` zf+HvB>-LbH#XfGPFKSC6jET`%GRxB8lO%^r0@x_RbXRcpk=otyu@aw=M%yQi_Qu!D z0MK-Rkvfi0iihhy28?KFBpT6ZNS}}>5``F}ziMRRcbrCNhG@~CzBKq{8ieSmRDZ4g zF@l%1F$9en*%c=PFO_%9D9*Hu1&Z{7Vbr7w6bNCz(;ZjgfcAQ0>Xacb%4VBxVI zcYL%=8>KaoGxN9>-il?EK!HRB0AM}tmm-x!qlQ{f5uMu`S56IyDy}&z3xnuu zp76jhDQJ1B;T#z7peRPb^KGm?VcR+;k$Q1M<%;EoZjuiDa#bsB>GP|VTQqeFs$bq2 zuIHT9(G>=9=HseU}aPAGnQD7b3bLac9!t)lwIkx z_~0Db-L(W!g4K)4b+tkXW?QQDEO$QN?OakVIH5F<(&{EBBxOR)In|4wcxoCI28n6~ zB_`M8c|216^WY+^uD1M9al6j=7f}ZnqAnj0G+G)^1nkIXrw2SrumI;ZHMc6@&C zQTn;ZB6ne~6o?JioeL$Ek#;lI>ABY+sH>M*82L(*Q>s=JRIu=<(uvX1Z?gFG^(y%r z*HI~ccz6c(ejqnTi7ZeYi-mnpBR|P1u?m(Yw$qqxM63 zx-7sK_5^n~4S^+`wk}s&(40Qyb4QXdjJPr5>wxQ6+Uwnzzt0^tG^Y>=KyWDyeM`pB zN4>90`pmAG=V(axLEw?;kSH$nPJ%qO3!%!NIFd(F@N#Ig73&(~va1hNdJNBMpHmUlWVL+{cg-qX)h z(5gcG=>s#;+9|cL9IK~NQ1GY-lLyb!67P*_t!Jo#F(u%4b@9<<;vX|)I-gHeE0if< zl~0EwA(%69lvrSh#Mx z3hkx-y-yZIsaNn-TilN1N1O_C6)(}K>KHds-Zs5r{$qNpo9J&v9BErXa2}?bQGo1~ z7itK+#IX$!B4xPR(VQ!@_YNYX^_9(H2;_Ol@V9jkkW#Cap+Uw2mIPB$4tnR-q(aEC zeqBG2LKkw1SRCbM&ggJzZh*)e?)BFdr{2_CzQOI=hXsuB{Iw6v3vIfluO1jmT^%jn z4mCITwJ=`^73{T~8N(ShZpwj__>>%9XW74j06PT7+q~r@Xp{$t+x;{s;PgdzM8fT$ z#OBlVA;=~OKpg5;YZ=t}gry%dvQEHrhQa8Z4f+5@zvS9Z*6o?CRsEbz{hs^E*P3_I zva)vW_?;0vqacK^jRbrA4$F9ctNb<_Ny8U+_EprI>@{`6n~362t^5PWbQiqD3t30` zU)NTQ9HKDmsGnyJC@gi-yHmjN$^G#i4D5gm`2}JA-C+pyKR8u>H#-Bqj6u<3vMCv< z;XHxBk>RiR`TZi|hClOxf`|d0_kl`qxkHs&`0UUGE-0P zMEMzy;7X4=SqK-t`OYOcb7pfUyEw=8>9as z#$a}f94^y_0gOarjgQBg7{;19#G3iXnqP>uxEgDjA8S<`Yuz1dGahTZ6l?b)*8XO- zL0PmF_`pFl&iVK^lcTSCnsILaaqbt7>s=(dcMFoUpVsxzOV65FdKsyH|^A(2uy&wejJfzV={Fw#$7Fe-VHFQKajq_(=92 zRe$57j$e#1bdEN>80UY{nHBM`yH^B|1{7r&xR!EI=D#RR5il5lD>GWh|D$^`X@-Rx zq9ZKOF&13O4m{>|Ha6xaCLvd&eeI6>r|F!^bx16;Ppb5YO!p(!hvhaURd;9j$>(3d zmBm^ze4G`ziJ8|MuHT@v)uxVh5pR!HFrZtvM;iwIacU0yKPQjC>A0duOGSZn5I%a? zmQ9V;%B_QiGIs%%%6MIA3WBqW9fx`Sv#}oWmSXm(# z>;Q*YXSb6nq=J8GTbG4QMEEkT&fDi+yIA%QZL75{6eTSo)g>-n4eB3=s&mR~A04}O zdps#$s9Rd_I)C*A@{qs?b&0mTGJcX>*et`k#&%(7arK{;?yF)LGaE2UNJvnS?dH7~ zuMWO_|KZ(Z%*JXB<`T9>NN!CK#6$0!Z+XvA#MH&^WRS2b%V~v3F>B&JRScTN&UP%( zWrxDRgcKueu^jbt(f}-jFh>nAg5?Xonv=-tZCRq%UNS%$6PU^1aR^WEbS|v z(NMg`0^>4H2e4vzV+04U9tRmaX##K6>uC4&UW;(QA&qe56BCzI0(0E0dG?do^HQ;?Oki^@XYlyuEa~&J{0LMz)-V3S?Qo7g8iZCo?Ib@tfy0HJ2CZ+xuw-Hnb=6am?n2N+N z7UVVLh<<9(s*0@{Nzb-sU_#X1a8&aS8+`cv`*3_Jv#7>BX8$Kl7Q_2nZd=$mK238o z1@h!2S&2zC1`uL(_oz#@rOjIM9E;bYlL1Ty-%9|3*!PuXLTqkjD-Q0w%)!q5!wGp9 zwtY?OP3v}^-uIpDd>mX(GEBbEy!)=bbI=RgcHh5LO=2 z(Gx*U;y#-_iO}5Jzk{|={CxY+{_N*zzSEtbXM`^9sR)W^D1P~ew)OwP2`S3m`iB$p z_5ZMyTFP`WXj_^e4i?$XmA)}-rRTn_{okCB_=gVv2PZ`7$A-0s>BZIf7hRg-iJ$(& zzBm{0`p2dP#Qu<$A!=~(Wwyfogl&=qgSM4@;;+_gUH`nFZ>lbSOr%v@{TQ=TUnX*M zv-vpTm*7;>$6xO$yyrRIC65|)>aKQ3oWJy;efHz;PgMHl->-)IM2)=_gz6{5Z;qMpN`G_hZAx~;K_c5Aq&A5i>Pmb3;|L<3i@AZmcGO$87_# zHsR_v;o7d@@}9~1f$pf_K-RDzwsVXU#bnXI2!()HjqqemlVlg?INP99o#X-~n^bqJ zY%j-DC#M20ze=xw0@v_1pU6(1_yPaK0so{S#y5a*c;m}Xq_-JobUI{H%u@z@vj;u% zMqEg@UGXCU*|!36Cj1K~+zY3CGN=K0lZ>|d00t9@!6L48L>z(u&~~Jinnv^a6B*@c1{PH?AR6eZUh=W< zKL>>crKEz8vbs7dDks#AU-I_58bC-f2a71_im`>EuGPno8k?iMr47`1BY0%SWrVH( z2#gE|{I-l3%U}o?!E?euLre(6gEA4-&eB!qwwKh?#meXtb*0%#+?a;5^cmTEL$KtI zj`~+!4UENh@+P%Mq5#SA!G{&20`bk~uMUenEWk|PL~|RI?>L=b(aO{H!)v9119c_2 z*w!{_IB=RM+1J4FR@vq40An$P^C3BqOODx>pBa%@b|(W4 z7QJ#i0Kiefp^GzGzU?2JoLj9~b6brq}=3qsS9*LO@Fx-A)pW_Y)k58)|Q%N3#hl)Y$F@>PX zscXWzf2%*1{+bJ4$Sir1pkz9+Dy&cId6^{ObO9Jw;6d(hL5b3)P+5Q=4reW3Z3OW9 zImWN8BYq(`Xk-vbsxjHcxc0We(c!Yg`VVkzY30vfA0AC(8(;BSB!MJb|KT*XZc4__ ziv=Wo*5|0>`HmuQWeCOZFa?5)eLc+niw@}ldH)O-ag5KqpgIepBfe9Tp%aa>n?<)Yp7P0ekLd}Ge|+Fl5< zi#%->7iO1m#x*21IXod&*dt9goTL$1WDr?o9Fm5MD`QMCj1k81N@Y-FdPq{i$<&&l z)Uu$|%3xwmROYp)+}dbTZER)dmD=t!U-`T<3OQ#r%3?Ir&RAq5c$LKbGwhTl;211Y zQi5CMWyid%OQo4-Ycqqc6XVI5?)8~I%{eEVb9}nW!n(@O^;Sg;)t?`zzc|=@DJ_$b zM$E|0&qyn;O|Ndtt!_wf=_Pgyl(%$U?`SLP8?GE2t{oa?Oivx;{04IMjjp23)|!Eq zR0h6uxIJ~KGrO;|Xsjo9Y@m3!x8n9_+3nFva$`$lYfJr&_KuFm?tvS1y}ga2!|nZj zZMTOh|NLqm=`I+?zH= z6Ta>~ThNp@YS!Uji;Aw_M`2GE$)A@irvy&r1TqYQq3K!Jf)f$v8)fezkA<+UKeHX_ ze^-5yE?qiLyw42D69Pq2O%B#tl~2a#clG{DO@+)nbH2D*Tbz%N?B85?xm{5w;dUVT zJx!!8G2+E}9d%Kv)+Zr)R52b_CZR|rzF~9KOZ>XCRvXIQlqvz1PTC1%l+;v62y$-{ zVF3rHHwm~zCO_L;s>&o_co;Z`$>_`sutyp2ZKd(lWLR>GXo;Kf@!W{7BM@6lW|;B< zFd11gGYR!6*pVs3F=5-t8JpbxEf}wFa*w}Pc-m(RvG9cDblxOIRna`1FFO(>$lCL z=SM%iJjg(oMi28zc;}K^2d%_9_W{=YhnC#@u9%FeET^+QQ%dWBrhp3i{odTOcRzhQ z<>d-zkf4{3CQk=)2Bk?zllbSj1Q7VtB8ccF5v<=@mnIQc+N`<&8)A)-P+dKHVo~R- zV%idpaaC1oH%%CUpVTWV2s;!vjk+wQnS=}^4Dv6qJIwL-L78#{`8{%><_Ii<>Zjj<>S@X zgiekb0SoSZ9DBq*xQ@Ys`}^lO-n`vOK$WVH$MK0^I`3^eHLIs!BnDx}+!3#+Cn|Ja z;CPZs^8I*HfVr?6&3kVXuJG1qkKl+9SF}0lTHo{B2rDCdgdYglMnExSGlPUl1U;Tl zP;_OF>0EsvT-=eo{cJz0Ri)-pRm&K&eJHaK3HYV8YW!Vplj)C&SVCdhv{L+j>XYB~ z4xD{dxDH45>r^n(+7S!|aDag+o;5`)Men&vzBDeVr;#%qLPO;deHyr<#AoJxCLk*f zB0QyU&9Glu3KlPgNUmyHvAC+r#)RiV_*1#e=Ni!|tt|Q0iFaKqER~Y^rnqkWNH^+) zmG(9^Dg6u}K8<>V1SL!yaa!5VD}E_CZXoD!oI7T6}9w(gET^*(`ULH)V`9Ag5 zX6Q9|7Uc?omCOqvLQ{o#zShlbtjaY--g+~w#7t>3;;Vm$c+?gWfZR9Yld}fpM8g|Q zpUT$jJwcGNxn<*aogDYiy*!)kQmr~;)MHhmae={t`<~INt={g6uW*U& zJs-T882%|dZIV^irVV|+9UAD2C@h^fO~ZrPVN>{1mt&z~!e`8)cpmoX)OTh{oc1D2 zBD5)U(6G&Aq0my-nZ1ElLpQ$Vdja*HpVwNR97XsK%s&u7$CJ1^9=l4p-*Hl%L`kCY ztaD{+i|0!$qDj7-O~ww&{bZOA;*LF20bKf9%Z>U0r!x+fPuA#z$C3>L)0l)o70b@j zWOXHf{ZITpcXP==Ui$Kdteml}(z>BDTIZvEIT7no@ltE*&K33V5zLP%eVcze9r;wI zM+-DheEw2O3Q*&5Q_V1z?J(gGB0xH=VYj0uKiRyp@&64sb2(e?KA6JtJTv%9 zdqfIwvS(suii}LWT#rE5JeGYIHwB~O0-#)9sl%TuvclE2R!Foml9`GVa}Qj`1Afj_ zW$#r|8z28~{7ht}I8xUId@OcrSVS31OwA<^VA45aBU9L`Twm5;Jm+og?_$2=gT*g> zFL%Gansw?FLO^qU-dE(5)9tF)OwG-APucfXJlaz<*{f6F@XhP1dTaYu=jqSIgvGv^ zANSrG{QkMbNRg45>~@R=f6<8cvGsyInfU*Sqz3_tCmGs^m7$FQCKWu8lA4yDkx9(T z&dI%&4uxbxb6`LLu_&i3t1|CDBsvkrSkg4-USuHAI|=`;xRe0;e_(r||3xGg0;7e6 z!5{!8$Iw||ZdnkY20yszFMM#xiQAayln9 zPgpDHUJy3Z{!hpKmp%V)rj@hsWym^hGczpO`^*CY_xf#U$bJ|!F4I48}H$QF5AU)jwQjs=hy6$F@ZdR%cIcalR z?SBc$C^ODrJ84D;J=Q_?vXK^Ju8wn8I~{`hPgkBw&@eSOv9@FQbb zzjbTk&3_cDZ|Zfg^v2Nasw+9!u{kA|i)&BiHk>PHjH~Ei1kW$k_os>S6IJ-LbY<)1 zFrz9mj2eL~KZQz5&GZn>qO+QH_J)i~ffO_IG+UPx$CG6q=H)IPS)PG-|D;O4AY!;h zR*Zdm+{wZVxYAgQ>&ed9;TPK6EW3PN8vKL10)09If>tz@b_`TA{ZlhTav0i~0f@bp zf8{zctdtm)-fqbd(Zrh`4EdZn7EqVw-f%6XvpBq=Ea9KZf|}@|hWLL3^^|w+zfzi* zotaLmDk;w>EYGW~Da$Btscfjus&CJ1=`U++Ex0jUH8|8*onBvEI#Sr%-H=0WxIWaL z+22ueYq+$&si|wAxpDO7z);)JSU)2g-}=vZ-!?YEc%cR`rcnC-46t*_b5kAbObEbV zv*a*G01Sn2hwc^FdiLgH43qXgAD5VB5Q%I0!~P(g5`idUki9<7AcBc($<3U?;5!Dn>K?rAmM) zhjVGbR#d`$M{%9mz7)(^N6;}vz5RtXY8v%ewjOp=bw8jNWId)5{VfzgUf3LyGcNCW zyF?bQZ!-Vo-!!DWUSo@d_Iz2+{c@uR`q6}JCOV~t(d8*nzxQmE_u8!Cle+B%rgOM0NCqoY z8czTxeWj7P=eq;4s46wz@EhX9QzJX2C|(6Rmd5Ot6sV2|Bo7N%ROk3y7SKGtjVlRE zW3)WOb(|PF(NM{Z%JS}@A>Z(zbplB4^NlTVSN-P>_A8u*BDD}A_ec$lGQR)*LKqnTEl-Z5R*9esj@pkRnr%j!|6=gQ5 zG$$0Ct0Htoi<{-`2ILyrJl+h?^8DF$zCp^y`!tXl<5v1w-RhXyqXW^!^7>vJhV-j9XFqkzuTzI?n|j&JqsL6^zS0d6d>> zrpoMtmrotw9#}$4{m%m$$m|~3Quo(EFOZCKb9L`uHI9EQNTT$eIiBOhB5(NZun-63 zY7PH%ORYzT1m`( zG49r1fe@+)Q~Eb4Er>e(>m6fok0bN7o)B)r6NLJ=G}SIsZE6*FII0+M+mFuWKC?8z zlG&%WOf>{iD0zmz=Sl}nY&70E7)&BKfTrW~v`n#Et*3;qGD%K$-PD@I-p&1caKZt@ z0wqmo|1{;go7EBA5N%bL?>B-YzWw6>x7C;*d0$+=Hmgmma%%mtnZy3u1o0pOkUiSj z&SBFMPdmo8d)QzXwKm&Dzr_(nqK$*MDs3uMM3>gUzI{E=op;nLqh)LkOqXZ%$Ye`pFCnL5S^tZX&MFc~n8-0lsz*<9%Ug>oD!M|UobvWa)05su z7QB}}PZvvCLEr5&Y2KR^f5?i5x9n%?T5^v6S^w+=08|jz61_51hXIZHu_87BnF{Ev`;ETsDJ!GCx%Emx8AMQKh|LI zLW2&nC9_?CoB=@CE!4Q2bM8_3^LKo69Zy*|3%NSW+2~PttIlBk?{i`1pFXn%t$ful zk(goY#O4OuZUMux84C8Nm`o6pZpy<{?IXf9tJka`DGEWhTt+TdWXded@{RLtWXko$ zZC)fEC;FfXB^*Mn_)E-S`zw~>ywlLea`v5#zqm`qlLP(NoG=3|GXP>50K8iudd!Er z`^X-EFzZV;u=BAUn1L_toPJ%M3v@1AF<4K^l7-V zvpCN2k~IFako>g{Z+5QNk0FoRolsy9NRBv4T^otR%%q=VnB5U3Xs|G1B}2@|nrYXI zck~-g`JSoOi9soD0T=E^hQ@?^{+>l-_oa`1Zxw0;>T#8lcP>7!GI@h- z&{pO!W7701BhE-B6TNNz#w3c?loL_)@EZm}O?e#~m>Xm(28dOsXny@kV&eNW;7B~a z$%=<;R(wc2GfDx)Ro;VcDsxcREDYkug4@hBr|EnX(QjL&ICZC{EJFeTKN*liq)ngI z0}DN}7;}uVcHb{@CRR_O0~r0#@Z397Kjow(c=gAprg!?UCr zd5EzCQ4wYs0WnDUvXly#@}e)Lqxd75K;MjLC{>(!1EUc zb6)=Z4r^$zP-`FcH342G$sQw;uGx}crAN6aUoQL z)8|{A$FKmjC87MC0c{kgrmJhP#d$Vyqf<(Y?uy9|o9$hF-<%=xxG=V2FU8t1Tjs4! z-#03pO_vMLwega#U2-18t!T=FIS49$7%u78ATL`$MIK_aA@8<@$FY2yep4rm zlDU#FL??}U93JXOma;m()tLRPfhVs-sr6aoK2%S91ooNghG|D7pbZe0jXxVv}_ zl2X&5+UIE$B=m)psXcR^EtVWy?xSpJ&W3LZ?gYm+>djcgIPq+@FZWm@29ZTR8GR#b z@QXKB4A6en1N@lQpZn8nifF<#8gF&54-=!SKunhiTo7YB!b{`Ix2ZnhNd3Btte=>E6F5)*yV$FWkC? z6iCvzdlEjH*;Y3Kv^^Z_n1v-~xN$$Gme<*T$RM@p`g3Az>R5|lgJHbcY190GMqeL2 zHNiB<=bKj*V0$Z_Q?9^T)%nPr0|K^GCYbT?lfWTfV%2UOYATDXg=h+gVgVQq zaYHLnAd-nYUcNDm!7;umV$jidD&~?_UWgdx zfiv;!F+ddU@HdkE4uGgA)ym&dD4f1v7^MbwglaqrQ%75T1g?Yza$QwH!%3HpcJhJ5 z<8TZl)iKiP0e5WtSl3gqW_f&BJUgvuVXA>$FMFP=MZ9_brSJT0eeBFDME>hM zkM2my$|bcMyE>XlAX_+}OQc_?o3X|A7wTDYSbYgM49pW8@kKI3`B0lNp;8gD9l=?NQfG?|> z)?EE*xqLy}f1bbQC7r(l0sul=9AY3&2@vpFyJmb|^do=mm*L8N?SCw(hr^XM+7-qG z?w|a%&B3q){U;eMP{*lL$DLFmTP`1g7l3k3Ffo+Eb!2U(Ga8YxKEJaijuF2J5spOeR)9sJu9V#>-ok z=Rv%hNsX2jjn=;^d4I_ksPKQc1(*h0U}fUN{SG|@z=Q2{b*xwjXSu&y z`FdXU%_bXRvwa@f5!)_tIlE)5t*bY@a`SH2%XJCCc9S#focwpW9;$k$li~dyB1-F$ z+q@$EEq<;+QchEl!Y7Swbxngv3WoroKt^skqE;}dDje!Qt)X9zGMXrTrdK+2vl8vy z+B~eXE(1#p0b=m1P17o~czDci4`!h|>PP&m>lSjqD_tDJKw@o1U zEsp&W<-BQv-1Qa7s+aDcUa~hh%d^tDGb_*~BTYyOQ}sTogap&6fU)V;Mp!EheqkB< z0^CAUn&s;PE2{**p1;3RA?@wOOjD73+9T@i1<-oEp42EQbjf^Y|6FL{zFQNlP<#1l z<<*Faqn?{r)~g>i`$2llG-!nNeN7J1B~YaDyI$q#Gy^~B;|Ip*dhND|s2=MIpd8Ki z01I~y2ZBh*)=Fd$xx9(OwiPBqGAOkA4QIOJ|Xd(C&zAs`I>g z%d>`WUpKqyX1LB+ndMO3_0bH<=&cCE_-ONMxm$8Bw?-C59s0&u#m4^!uFGVmFWw6Cs*aiwx)kn<=+ z!n5aZ=yW8``&P|YD$X=rALt8)n_(-?XX)L&qxW-D53;384K_87p7}$XdEBhLOl3sC znKCGLpB)j&fVB^v^Ic!o-nPO1b`kh<4D*!0?D{as=FZOh8W0t9Jz#1x0JVh~U?dyL z_NUfxs5MI43(5!(i8R|oJzyK{Lot3B&p&6MX16fyHN zIpUX3jYA_FqKkIfYw1011$*t}L8ZkA{o9K4xfNBr7LP;@4pMs)p8Y2o_2B7!-DshQ zjh;3SOu6KugE z)NWc4OQnT21FnTdMbJXuE26+=j!tJQCY5GOY?mGj>(MaJ)bY%8ti?m$ zjieAKz9y&LWhXzIarQ`%RwO$_%(f+W+G`EA*1;n3hG~qF>P~w4LLrE^dO4l7V*K*$ z+j1M9DlK^8oPJnv_J|9aIwzj1*L(5_jx2VR|4e)VIMZ5;bt z<KtL0`#in+0`b_k=*C2^j^Z`c!_dOq;05Wq`= zx7ZwU6^lHt%UnR8N?8(&Z%4cjyjt~?z`CI@`YGUf0ib)Qh#vh?~kc4Kv1WbZ6x%wP2T{B5QX!_@}4jRY7P z05E6|8rg{92bT_siTk@_CJ{2%FNR}ruTNHd@_HPE_`4qP=(snXY^;T^ybJ1y*{>DAU$=B z7()#T;yO7$e{fX~xr*O*G6~~Lm&?b^7a$xBS zks%yM@~`t;2G3WiBHD*j4R7VsRoaKwutyY-#rhuoGGvniJ4Sq5{}*Y z3~j+!;IsPrdI55JD+n_kMWdgv)v8_isI5~HW$O@9Y*lw1|VJDGl+&MdLr zDJNWg%=6({!rQg`sV;|Yv-wxK`5N=!j%z5w3m=41rL10;+Q`)~ttJO&@B5ZIqg^L9 z)>2vht3Ka!eJoiOJ~EWu2v$YPRGneCDIQ&r=h!Lyx$E5#mD+fRnBjcX##EmB8L|mv z9A(Xt91-_s`DFu?!b;U~U*T=jg>x?lik1vW|`8go*F2(8Zx<&b4+(-F-n};8w zWn`X%Fu;;c+A6cDK2$0TKX|A5BWG9%@L&;tY|nQjq@E5qpe;o|A)uyUJe~n3fV`V4 z3f1Du7ddM1`a74Y!MxnRcmO!exrlsa?dL?L(L_HTn#k^PphUQpqhz-%43c})M?q|! ze~2^IAt$&trSf#zIXAbUU$j8drqRW}A72gvY9bSY4eEaL0G7OYq390D$0|ZrANTo^ zByE9&4r^nwjQ(ZI3-;&E3h{OE>g`EF(}YssX!rWQBq+p}DZ%JK$0Va%_+yghe9h!N zO_m(RJ((HojDx$8{IT@7Q6bgxrJDrm5Y{b5+@47KSgk(yz|J-SDYUgWZC$tEPC(Hj}Djm+nj} zo4e|ApiQKw@HbK=G4L{4np)#BtIAP;vj3c^^yFrH8h1c7otTMn^md!! znu7mAluP+~NlU`-hCq(@Mxx&cbo41pv?$COFxHbm2mH>2f5hY&V>dOSSX1pOv%Ik4 z3D9LeCZ}t^*x4{{Z3<$5sBxfI3`qhVVpGKw>5=boG~-yp*(!TD(e^B$r;g3;hM3f^ z4UuXri|1S$5d0nFbhs`0gAb08HuV7SN*wb~^Nbta*+|2<_=4LeHa9>M+NvMZxc3Q( z)e6hdVlo0nYE>3g^-JC4k@(PrNS+Yn1$d#|iKq)H3k%iyL7!b8fHn+S9k-sF$^fmC zmB&z+RHIz5=wEVuIP~sT3Ev~_3wQ``d!^YM4c?Ix%_`S)f$pn^!J^Bpp0Hg2}OpsJVm!5cATq-*JGpRhD;ukw=E zyw@0;)5S`UQy0BfE5JTytY)uM?rpI2=82B6V`7))H(!MBbFhZ1GD;HI8Yki-3u(J-sUc) zke;wj)Qi`T5M!q@uhg+`0>nkyP(@F6SH=Pf$^!J_)Puv#YJXdLfIe1Jhr zV^R2!3S0C23nKefyuQ2QKb9WY8OL_K*PG<4`r1CY_@$lY=Z=-krS*A{Z=Ef-EP5Zt z-UzG?bEI3;4$q7XojUj6W`zEy@Y5xg_y1m`LWDjf%jgwt*KnA;7~apZIP;9(@H^GQ z?@O(K-ZmqhG;47Z%y>o0A-*ZW5(#>J6piDNrQsn}c*N2461X>c($?bUL5stm-Bb}g z=hy^7vNyTsh;ER$$>jfX?c=Q{5DLL@u7OvVssZxYZ@%R5l~-;<2QD3$mvHoQ2|j_B z+$6B7X}uKsgo8jHEd8y%U3Ci@!eyn?1=0SeR zQuBh#0Fpa)SAq&Usvh{tZt-r|R3eM%RRgTPads}_9*%P`Mpr`{uPX~xkJM%sld&nR zLHr!zEKiH!>q#Q@Cfq@Akf8~ia6i7xcs!HOCJ3|x=pCjSk|42_)q0O%-jOvG2*z?o zn&G*#I!wh>A-`EqdU6o?swM=+CWJP|vC&i}AyuATfn@;a($Pur)_hq+f!LaC+E5R@ zaP%)vh7w1Z!q6!yw$fZ$Oi4o-$iSlG4J{YZnNb)fD^4N=pEgU&yhMXXUb^#O0>Mj! zCOn1*^D)KaGd(@Ps7Pq&<0;>L$X63kC?8yY^HwevFIWx@os++b6|zV(wQ4lA@d1Za zjK7_%GQeeCBGn}Bz`Vu=PnZg;v(8Y1O*HT6Kqz=*giz#f=Xm&Rl6D{$wC52 zFf1??Y9HdPm<1k6wW6g< zwwgSULqthhoX1+kLYq8od#`+*MKbWh__UDqY3|)=t>0#FZu4wK-5^DCdRA}NN&pbf zk$D=MCQ8gY^&57aiZ|GwJI&bgVOr{T%azMn?(suSc2Z{cElp%ob3fys%)y-{k>CJm zs&#oP2Cv&IJR;wCDK(1~m~#tDv+jfez_hoAm3}~m_8cUX2Gdal6iBHsM?jC7s#gwK z<|ML_(h^y5sThEZ0%nc`6c7uCsYH;+UH-FoTYT`Tu`Jirpm}=p`B3SP7{H{z`m!Xk zJUPRk+(|03bZfJms~XPPV9V-b-n!oKd*oi(sI5~BA#N^HP(Ve16RraVgtRh~Fqu|p zyHi^P@uHe#Zg9v*@!f<$$FOV3)LdX6uZ2y!lAUS1385Q@X#ui$E)4Y86BQgE6nDr6 z1P~t9Wp0A;2!!r^Rtjq*Gyw~jc1-(xC#5wc!|*YPwbfeMC!#wUAH`Wa$3X z0(jb&2tF+bNFP8hZcJSrO4qo%_+fAH(*w;vV!#sg{u;MrAeQ-_YZ;QHnXsHG!-*_tcB;`QHzB4?wU7RK&Mo#I?Ot*~ac42LKzr&`v5=agUK`B}ah8cH~}Rk~X1 zk81R}Dp%S@u=Ltqll2V}qkGra2;kC%RPWOsGo1~V}rU>}d11M!TczN~3Wg-Y^S41{n9EIQ^mu0IA-2*#GzQmFW%^py1~sjHiC zbu{SV+$@aKm?GF@y}^6Ll2A4A=n#*hk_I@ zhzZC__R;@n@4JJd>b5;kN4kj(G|=QGrzS@QwaGaL$vI~bkW7=aM9Dd40Rc%ulTi$y zs3-;yL@;9d#K;`Q_uV&l-n%t*r{<5Tnl6f>7yF!EXYaMwUTf|C{q|wb2ymj;mS6b( zqsz7k2ARY6>C-3dZ)jSV2V2E&U?)*2Ild^LgDTCr^xiD&);on#>wETSyP07(SL8g8(+5qbE4`>;2db@T zR!SR}&UME(xyRoAc)ah?FZzxubCy#GZQ@0uj zN&9)sg0@S=i@=)M&yTY*oJj0)vIjY7WR29J>FBP9^1Y%LHiJE+z3~W*bP-SKsa)B- zYnsg@n7M(Y1sJJt631C(q;I_SYPi_oKDH;r!tu@JlYhBY*|oL0Nn|)M?bD1_x|FjX7Z&-k zne4p1B%JKNEy;%jx^!I%o!KwFg8}*Mqdb|0Cm$KjqufoIJ*5X;641(Ab`HZ(lhsrn z;%SP%o^~Av7^Td^AMHHlaO{Qyo7LL(V1xO(@)1FP#+pOl8|7!s*oL3+U3PJ-za|@7 zuuD%n>fyPQv2I7MmQEN{S+IFb(@;-U!K*2u9@s(=ilLA{NCd3wnI9Cfys!sQ4fK4x zd}_QA5w5F`mhbpf-}9Md3Q&g%n}6gW(V@(dk5lb-UElc|%T_O}$fKc%T{3qon=7b7E;_TD0k-KQ|^nzy4SQQ^30e3eg$ zl;w(mzL}ZV@sbA_KFRZp#L+b2MW3KsMVwYnhzcQMzfi3N#O#0}xbwL3G~bEiDvTbp zR-1tA9Yn7wNoDxG5Gg8>0WNgW?-L(@y?9=@tVS)44bP zY!!m9ms_D5LJ5=`niu)E+UZfaGWhk1%pa^N@9uUv zO%bkBs@;Tk!%R`@)8f*xh03T@r;VXYCheL&?WHex8HSTjtu18ZAu85reru8plX2&d zbg|tRIm;xK0~jH4@)!|%m(g2gILWaFP42Ira_wafCrsX=eUins!He$0g-q$anJDpm z^CnR5N8o-*HFDk4R^?S0L%vP->{$Le!9jPCC?5|MC%YQxN zoRn*WO4GZUW$foc8sF!~A3OcdkDX47@l*ZMO10v}|IXJoa{I0edEDys~=Y(%ea4aa=E+MlPZ{rcl= z*^|oF$DS`af0Y@4Z;d%J729kg*appHH!eAUJU#Of&pqU-Jaqe5xK=V!d&x0e_M^HY zS>yD_Lh_}vR3EyQh5{}QfeV4kKI{u@Bue>`6h%a&-T6eZ;R@jgo);9)_q=mxU3C2X zDckN?P~JtxEWrM4L(zxhg|`RJNS<_f@)sS=*~ps$1G#5EJs$44m=*dY@a*TUz}C;% zD31h+w=vI0{MaKeKl;r2=5ta4IhHOmJ>ekbPQ+o#DPn4RWcFlaPV2kO&w&b;hPV@x znb|Mra7Pv99ppN#WjV>fI6=Qk5f%KGkz`bPEx7r2P?YdldQ!n%#w417##<+Z?cT^a zinsNxQ6YYxD=#e?h<|0+BdG$j3u~J3A5YXPeq9~KKzG^NPk-uK z_}Zx$Q}pC()~jg0rJg{gowQTY1E;=?d_LBFI;Q;P*Q={qOl zh2`1k*@Lmks7megSFonD^FvjhJYGN&Rj2Y|ka~_v?5OegNT=A8vupFGId*v`icgwq z@%Qg;B4?P+Olig4%!^Zm{|I>dZKbqtdcF45gTBM#`_RLZxQ)`d2T#JUpSAYhiB$`< zGml*9%lo#G5bwnOQ(cl-RZu0z+CHwAB4E+JKRy2K&B#5;4{Rs*9-iLqxsvWx2SZ_| z-Ub~O(j~B`|M0rYJ7g>q_|x?B&4h~d!#5EZi9PXs$vtKFN#P(M5O4GRZS0SGhXV^S zNz2@c zx9Ll9KPFv%F2tmF94gthMhiPX|2#LV9sfg-Y5aM_cB?ePS(@FM=WclX$lY9;-NRAq_0RrG(V%>4KIZV(Khy+aZHXZnC*9Twpl0RI!Ow2{dO;dd z207_%boX|`kJ_l8d50I(#*Lp+-p-RvzL)TWJLDhcKNr>vzRruZP+wxJf zrgJn~QEN@F3f&=dp(AgS>fuXSh=a+(o&i=mS#i>1E zTlA}Y@$!H4K9X0xI~5;rNb|G4{-e`TH+?Jm-TsT>&!VBqCv8t?jN~x4FZhsvq^X*S3t~P{sr2pN6hkvBs zu}5a}^q;!6Ns5XJw3)}U|13X8BTHh#rSHlPU7!BlYfru&4XLpyiFG4+r|VA_41$jY zs*=;-e)KTLN6ie<)fkU-{nKFf_e~bQZB72@eopKGZRFnJ{2$@(e_bdBZ71!{FGG7h z7qb%zDLMP)%#6^{O~BuU5s5Xef1Av&OFSc@+x}q`za`A13v}NM_YjjuBfSulJANtT zA4US&iO?Q!@SiLMl+?PoG{!Dz|50~*;oF;^xq+khGDmg=HegA3l>XsyE#@DpIA*h1 z$Fupy|1F76e=Z&J<#jsiKP30!7V#9bIy`?%3Tcl>NW=jafDrQs=aB*c0Ehtw#JrJ; z0cZtRF_Tae70S@CAdqY%*-bvh=Tu3MVrkef%qCXH2IxGldjvG?-98t|`Qm%;= zws*K+7HEca3lPfq??QVOBpE_=KEmy@W2u#f?R(GvCJzCNguhNoQ~|h;9%BiFtNeP5 zBYZPd_%tBuYA#3x5~66hy-VCN~`RW#bTZ`I(zx9v(9f@IZIk z5YGML{M00S`_y>pvMd^noByz@O@^Nw(a_i)~hLV!mi|PN+S5zV{NT_Rxuqi>sKAUgu*aecpn~ncdZJ=k#P^5;f-S z9xuY!Q7E08S7LTSV`hS$?PpwuiODRI4(EDUyc!~C86?e z=309-&gS}v*hUlmu8K8ar~k&9i}fVPJuDfl)yk)=f|EY8&+LreDI^i1EUZHAqr$h= zMI`D*)B`^HbvAFL(Xbj7=~BVui1#Gp z$Fa>&3X^rzct7D-D;J$+NZmcUrgntMBMP0&Wo8mL-ZP)1{`y`mdqkOHQi`jIjwRs- z5m(QTR6xK|IFQ3n+(8EB2dUNuu(UK@EK0*(JZb(RRpiII`rQ7F-KW;mWgsO12S1CU zWK@QZdI2{_c~iKu!sa%$33#%k(lripjjIGX5=F3_AbY?Z(>{_|JOa;nRyfB?5#bzF zJ9%u&1YOU{E6YAY$rkUUu2hBBz`bP(sy$UXc{A=$*W@pI&v<3Yi0(2L-X-oKvqKrk z03zk;&e@-vR?k`+&PDr3w`Fyx*NjPxyyzO3-`G_i+==!%attZ}6F^A+LyqxlMv1^- z%4nnx4cZ(-?Z8Ou$&3kPWdw0O#r&LALfjy(r<=gnC(aL|d!}VXmgL1A9G85gEcH}H z8k}R`<^TGHI0PNTwsp04M~A8=(SrY`4C4H-HN@|x6(TEG2fGujT-$$3R703?*PShw zQ~!#`g)dk&9JRJ$sDQ`dDX*Lm3_Sx~R+InJ`r8aw)hvYJ00rhum`cQ1;RGb3B7kOK zq)wpD3G+%fAkxPmq_DKSDC(57QXz3TEgGOQ#RQO0jm;vhbSOv&V;>Yk(H920m?1F) zm8zwnM#3+g7N2gJMZshOXhxyPu$#++C@5V+6(a>~(qnn0t>ZR8BaPTe*(+*ui z)EycxFf2Unm;>MalxyQ9XDhZ@c^k9NR~~9H^SBmyn8>Twf0sM{(!-2Lb7fQG!>#A} z!loCjL($tJ1^KE@vvtxlT1O+N5BLLwPH^NRL0^~#_B-bnr zL;Qly_H_5nxXE3 zzV7P&{@U^WlBV9)hLKAnLruM7y_d+NlhgeZ)4#A=|MrXG@Hcca$^QsCnE`|3g8Wu6 zx{}he@`@4>GYd2G`i2^_)E1zqy`!@$`#h!$(|>VbkPjnnF*-Irnu^8ZFM1~l^kqsZ6t12+_|?lW)6W- zYwMcS;UQ)aNQdSXTN)g>C6PwK*Q(8~^(u*4(og1GqN(KV%duYpDQn2HOhzF{wuzFC zDSaZV<19{<-21F4)c$JSvDv<@<~)460eu~mvWOc*%!j;(w;P_OX2wTWblgX?d9Hr^ zsC(Vkq@Jcw#S~5QzDk{GkmF|po~gymeaOI2w3OD6;6v4F#tgsM>By}sBF6SCN zD$ZUh;8KO?($aJwdh zDm0&r8Ph2Mkm?3^H5iNteGq^{Vr9xgifbWX-QWI7RtRNOIj457i8@TnFF$j>OcBt9 z16ZjRee6Y=O>3e7P(T8BR!6)X6n^*!gmpM8oJ&lfhZeDU0TDA@r}Ob50IRicQz}iq z95Vuf%}-*~@po=$Pi&~jf~D83c-PAeW$9Ain8NGJC7DY5^o%+Cxs2}W%3dykO zqwY^?QDZqQ&9qo}!RG4jf}kc?hvM0-AMW2^^YYdAAw$S$0K#1t#(*^p!`$GxZ90G% z6&2MtfI&R%>+1bgzRgiN(ng|6eKp!bn;$`gr!dpxSU3ahzJCTUE{~6_?q0U@X{=;+ z=0REoO^gOsWYzUK8b$`_HR?X!&58xLZK;IGX%y)XTi+D7n9ke@ z&$NANX<}YwmSKqO4W6MQaHx6L8ee`te4;4X;#g|R_gvZVBK}5vIi}BLmZ#3nAakqH zDO7*&OI6^PyBIz*<#vjPz&BQ>Hlp%YPDaf)<8imGZ*Mc;wX86_I~`Q!n)cK09~?Ge zg`x_R7x}~VXVQNH=)r-vKhF)vKGXlQQ`B)y?V#0|$#KK!))k=!+?)^;@+Xu{0|%%ea$G`k=or_4R4Ip};_SVd1GWAdx~|IO>nly8- z;Ut36*~E>efEw$i*PX>Ec5@h~NE^I@$VCtMgRD?2eJr6@~_(Lri(|s%FNyCEz zKx)Gj#l~ad#SoLGAwofaO4`RkYr><6NRxbEisIHL?LRU+fm%(@-ICVDXfbbZQ1HYb z@MN$Fn7A+6z0(a@t97QtwxLmpHoKnt?@L^WoLQ$y;f2 zCSw>heI?&~g403Y5%1)_K_3#mXu@Bqit+^DzcN8tSL(FcRq>?-{=fmHe}klWbag{N zR4NgdVy&9g%h$(3LL4_ZMqlDMB@{@J_^gNP>d{vD7*83$Ro190r@We<$Js;CZ5=*jwrvD|aXJ!75l#zWQ zqY5Wf&l~m@QhP!bzDMJrABUXZ;zM-$p!ot-`=9PQBwSZRGr4$`6J-FI1^UJKk5<&A zvP?nLbu<6s{<^1!ilw*Aa+cY1Ebm}HS;61wRo>CK8l27@TV{jWj&Gx%qjoVl$?+_Z zV=6J-_jzmja#SLG7Z*lU)b#zrVEE2Tn|qdY%d|}dvl+`-!>9F1yrv)i{F#qnP1Gn4 zVrN=iDE4`6Ywja30BM&}>+!>q;4AS1@SdzeT6?FsV*#bZ;mw@1fjzxi9XK4h|E zSlt(+*DFCxeh*jy**K{qSmw{yS8M!p@RN+!)EmMMY?1=$_mLhe|dkB~ObM_sd zD;b|ILmZ_vcw`t5w7@$-wTEOx?(i5HPE;6BwV`+dZHPC`&Wqk<`GnnN7i3KVB!*!; zy~|U}ivV2^qfTa_>wLBV9`SPz%F=P5RY^#spvZ6Bl-aErpsw=`_IB5js6+5lzu@Z% zYj*81m&%m`khrAeID6qsrLU-HVO`f+ku3_-0z3e_u13P?i2dadFPegvX5DD=B z7<5!=-nXUI_PoR=0xfe^r9o?=J zE-4X}mP26lP>Vj#WG23%;o|o3EN%yvlwXf8b29Tc?Vk$Xs4h zn!Wb8OiKE$>@0M^BwgM8#eM8(B3LjAqLWM z&!LW^JqPNsdpat&_flf#OD^hox1tL5468O$T5=0jG2#rAYe_?$X=rJ0`8Bi4twxE& zXFgpkXzR+Xrok3V{xMYp#|yS{wfycpbWu9scMwk%%Y878xZLT=VpmK$;*}8x2uI1O zKN#Jlf@=cE`2yylAejpor+_4bf7cg4lEI@A14u7;T9Y5-F;RB^MS85_o39;S>6pHI2jCh^EYI_`BYy%^5)yU0JESF$1^V6 ztgP&5_?QH9Is!jUURmx}81!{-&)<9BWe_<+@GNR!Xev+DyJ`a!*!5Ronrh(JT~(;)(b{S#p1^HyF9`o}xDi z0~N|MnnC0Ab{i|S0E~2MD&wp(XeMOW7||EL#Y!+Y&lr%|xh$V_1oa@J!kvO_GW8G7LomR5I!$ z-uA!jwfGsDdF%`#6XviJc_2po9%!K}7IpY0z={z$gv1IPCrvr3A6f+GBWu0S)W#Yv z-!Y3dtV=hB%YM34D&dMLNaq6lo2f&dm=3w*urQSi)o{4yub`5B$G2upIiuSUCmEYa zraS^^rVE+kqw{znM1JrzzuaA%7T*P_(nbx2#Nj-^=~_rVPLVBgTR~Yup1sHkbu6ve zoXx!1tCq$^gI-6t-lgtU@m|sVSU(XeXlhP9^UEW!BQa)6b{jjE1Ys;dW#cKFE+mZcvkMKx70{K5G9yX68LX~+ zbkss3_!KcAf(R2(CX#O}%8Q1wceBvAMq(fcPJ$p4;xdm~LZmsX4Ij2lT!dK-&g$tQ zA;w~Ea92Rk{-K2$3{7RA^8(mYd;N0%-Fr3F-&vV0AapbWxIZHRKo|fhCs;+3qd|>8qF^PCDooui?<@8t#Mw4!QyH5JYi3yT2}A7` zQ3ZcCnvtYwV4pKj+nz*DY*$(%!PnyCDX1CPxHyLjk@RQvP{kF0PEYf4&- zAP);OJ`;%mkc?&d70mX`nGpM?mZ%s3tUcB>I0T97Ef8cuqgc9n#`5~&SXg*6N9M|H zT&;q;8*lhscC#GrX`WvTTyK1I^E5y2N-z`#qn?8`T;^tCV!0$lMTfz0atUFWsMzv{ z)u@Qc{2oSd-`QSMBqgjHYhV&|3mW$mzdN&0r#5Sdr8HTMfRgf+1XJMUR)8T;dM|y@04HBXD1iEThvvW$uM>d=KPFP|RN{qiK+D0!;W0t|R$S8AOJKKU! zr&!MAJ^z1flz|3t2~5i^{ult5ivR0{3*-U&*K1b+AIA|L*3ps$X2RPiepSo=Z>&`R zWC~p0&=wMFeqjL&`jBH}b}ASgRd&?1_=g!tM6;Juccx z)Z1^*yjiJnXS|{{AdrCg99NPT3jksDPLFZSG0Qc{<6@~#}> zGx6bP)YsMyIO9WgEq%8fI02hvZn~H-_isMCGMLPo-oo+0%I5aE zhLMqp%k`JXIzYa*vEO`c|1@X*^ILHKRQ_JV{>-1F!0&>!p!3q}z>EKJ+J!KQEC?Tk z5~GbStiL@_33((y_(>HSt&g>WDTpM8r6=R0&ZK9a&9jINVh|8g<40xbFe^w~u_(yV z)wFpDN601fo5ccHE_FG<>UNC=1u0%jA<+@9ifHz5a+a7c+-_c8Tu_h|IjuH!XYKw2 z_p8Qz^D;b8|D<(ODg{0TI@%p7KD_zvi)hq7-LTHvcUG-6_l#T%DDO4f(y&;-u|9*Z zlQHo-=aeo=t7odSW7?%O7+iI=2~02(=egTT0~R&DCLnfq`>uM-nQ0!Lu!8O;D&hvK8tQ}r&ktVN~vbS zVN%iI&phCIzIX%C80aATdS3Lt$;|1(ajWGQkIczQ2wNE~e-{NM%JyL$I3xN?!@KH< zC>-{SuN%afz3TSBxEAl!)6kM~l{AJ=8I!9%dd~Ce*A}zR4bE8vLV=k~2QiMSv`6lr ziehIQox7j@W%QaYa87OEVhg#;j6Y41$!$Ec@X?iAjz!+}BIy*J8(uyWDQ)Ua{wGv7 z0%7mzDNkkUP`XWNMDoOb3D-zC?2|KtYfUYbNy(EG_2SksAM_-|HC(Py@w*47q#!8! z4(((3EJ;ur5%1HvamHckhJl>%!tiX)XxTz(Id>MP9JTx;M+GcdXYSnDwMN<#njbS# z-L-IaE)05(n|vA9*YGeD!ez#hNjO?g$}G1`#5+778g};1N6)s~kN4Ge4ew-au?6(Lo6j9ZioJ4n z#8&R~E(-oW?c(LDi_2Os3Ffz~`~q0(fUp3!-Qv*ziLsCG#r+%4b*2yPv~(T@vi_{Q zNXzAB=BF{D{pNY2GsO*3%>}*={u6zA6%sGHyZ8P80@t)#@0TrpI63)APPQxb(rH zkK_7jq0QF}U%57&db{Zp2jeLi>)$`zQ_w+3120{I?lC^4j-1xV1_qYsG)|-LTM12t zZ5w%;?c&|I7=lhui_)e&Gr;MF-fh1eu)nQUcJj?!k^B(j%bkWEbMu!BUk_)|;8B|9 z+r!Fz%Fi68X}_z_umpX7w~<6c*T9NXS}n_#qNJBm@5 zWbrp3-oC=A`FJ6P%>a%50p)@guHmJYiuSRux$iGkFMsZEQ_qnj=~I`2 z_NRBIL7Kf=xI7cGKwGbEZ07^aVn%!2Ztm zh^|w$MgSIdl5WBC9WUo(z-3c@Jc6o4q4uEX;|#hbm)`H zPW(}XqYr?*!GDJaaG73k<9V>~aiwA{7cz~gUBUCBo&B579!?bgY9&JK!dT5@lNntk zTUPu+otTY=Rmu6IXdCiBM;K>*M;Q4V9MLGo8>~t~04W^7rmBh2vHLcZ5V}(Dpj*-e~ehP i8MPQ!e=V*EZ0%;*wJU literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/c-macro.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/c-macro.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f459489527d346fca66378305077b83a6785b97 GIT binary patch literal 83856 zcmagFcTiJpzx}<_2qi%19YU`{=%E@2y@n!$-aAO>sDPn{-leOd2#AREqKKgif(U{N z*ytjlg1w;p@V=k(ob&$m?#U!GnM|^CP4@L!E8n$@O^q-bUIg#~@D2Fq0JAc%0)k*L z06_sX@^CQ?HU%{nIc-6Vu%Na)kE#-{hK4E}rbAByAoKxdGl0d0Ue%RHQ=djXlupfC zL{CY;n81t;lRKlY;H)oYXD{s*EbkqN_77GG_EQNCwnZ}7NievoF#4)82dT1zo@OyL z)C@63Mj5juSaU>MOBq?3n;YRQt;})07bD#)gMFNme4PWM6BInsH2reTgGh$NV(W9| zR_Ch;#B|5hI`_=Fz}#!$mzonR8qZ(8mEkT!4l*tX#}}B@scNWiEKX}FL2qD$v#_$&4$d_s zmIR&4N+`V=S#>k7An8(SXdT(1r!FohKRdm!rlf7)R((!;OTnEM(m-2TUq@MOPjAPa zmahJed&6yge?OvUaOAcu+T2h|!dCl?on2-M-agAO9{_W6fkB*59v&nJppgaWbwF&g z5MCu=2v`OR5n%yKvqB{4Ig`=@TvyL$QX-igo$bqWweMGT%3;KIUTc$I0m=@KO8Sej~AhLkzjN` zC4`mJ^-xmtk{629RmYyf87bqiiY6ZF*eHD+JzSiXQG}V%IZv!x>K8!Het^l;z}?h8&hm`T_PLPak&@+`VZun)ryy}hQF2OE_N5k@M}sJ;=pw4>hvlO&6yuLNt!}GJ z2sUttwhfE0i-~rOPjXL5^~ulj%cfBe^H5<*uW7tDd}C;&>(0n+03ysG!^^IqCZr{E z%HcH1#9E%9uNV-l931@bZ(sPB!OGCy4yT7VRFX$SKqt=%|A2y+0dGL=?<@XZCIIa* z00G+XGp7xw(z408Hn(3LB_oBEpu=7?6g0PT@QcZg`uhbaTsFU{5`x0RFVW&U)p>2Y z9PRU<#PnqTRcWzBrD2Ke78R&ZRh=R)zw7lK@cA?qshWo?YJ%OeXz^vsbP$pkq35k?yTo9E7h5JffF(-uy0{# zA1`QG{8$#6MtZZ*fHO!ecLzoV807njBbiw75h`7&oD!(S{yq1Wj)mHCijGbh?Pig0 zSs;BLdR%_VkGNz~xu&4-6vfKFb8lmE;fIY}>vFJKy674Z7Er0gU?>_Y< z+bw%-gI`;g(~g zZ*7)^ydUu0U7}@-g%(5U!D8O20$wll^r2@x)9%v;%mL7j_MT)z6n;{KPU32RJGNqd zJ^TGA(pWAcB?lm3nFyi6V_^*k2kC+`t9&#Z`oI}_W)gNSTl9ysjgpse8sE!)wr8QA z9%6DF4xu^;wGj~2;*`<*dIkqLRAdDT50k3%rmWT ztsM|mBXqZ*q46oWHr90R^McJA;WTWCTqIpq?#kCMuM)l;C!QUrJt&Mo7SpopF&U7v zRp_vamzC7z7H~>o-)*d|U9K|{tsBVvC4({v)kJAAUr(BGzEM!YcNKt}P#0*^ zSn}hC*#HpjDdHNFR3Q{}5R;CvpaHH?hdGL=c|1DngrpsP+5uA9@fM>Y%%YawakA35 zLYPK5Qx9Qtq*q0mPx%xiR#iy3Fynk#}U?R#{DHqFW zbA5!sL^AcQvhy_{aH& z;kUcW!RHL%Gv_!`qp1+o5*EDj<9Ie{_pu-!MiM}v*%QuE!AGB)^uu^a5MMT_!X8 z5%ci6RosJxD?dLsVHsQSWV6LO-Y?B2mNH5jEsKqsU#_>gZsRKHpR_P#RXrW_R}&9@ z(l#Vjvmy6JV_{%6>-?8ihU_=m%6Mz!3+1c73~soJLh;G0(GVKL9oKKWlnmX^QLbAz zJjJ8uhk3v1+3U1=b4@QzXnyS|%xm?PG+%z;{I#>b6(EYO=z;l{B^6?pRw)1*WS?V z2hH^h#9!H~s6^g-EJKy`-4x6y)5Ejj)}ad@I+q%uNgcTX78|_JzfWLh zJM!aZHUxitzmH|=EF@cOitzoIG_mR|E}z+4nCPFv=PUUKGn7i2Yg914x~V3du;pt@ z==VAGo_r_QoU!lA&7b_rl@ZeGZ_5bB4?~8;V`24f?qz? zZn>k+_j4}Os=JQs;f|5k&-udq?gmNAw`R;sk1Jj&Tv{jzvh_cA!}a}V(R7Z6563ld(c|5(e6K{^G}Zm|^BI+?x1DUc@6GpXY0|20p7mx2x}>@h;jU{>5E8)u=Vikmxsvr}2qh zcP<8mP&3ZIg1k^28YRC={PpWKz}!!TTOFkE9j($@_m6PR9%N`8tsx8g$40ddvrD2E ze)nP;sCWG$LIxeTdJnFj9+HiTt9U6U_>E)mdiBSUri$7AvjYR4Pen!g4Q^u|4a~;L zACUf)4B7w)kdr*Q;|BQukqlqx_)YLv8AM;Q%D4tXNuy+D(SKMyp2Iz?_d+Vj+b|b3 zOvi0nEGB-U9nPjL6?s3%WoC1#3d*vXE>I{4IQy7ODW2i zOggeK6#-M_Y7~a0c~eKNDzF|Sp+zMq=+jc(n5Eh#$=Tfal-9}BShY=v`sW7Pi0>n_ z+8FU&{{$|D!b@Vxh3H{c8Y}u?uHpGiE(wcrdD88K7{qejrlfZhhUcA_SuPbDQ+7@% zJRhkV?9JWNq$1f*YdJFGblCoiZsl@n@31~IJ;JQcAETFYUYf*kcI185M=^60b+`wN zd?uD7G~?Vjrrv((_gd4EqHiB?#aXoe5_3pEVt=zl{m+`Dm5dJu{ullL-{0_G1iv?? zBz-z;q6OOIHYxfb(0}CD$yzF(tR>=~wbTawt|f7V2KXz#CegJdGEx+boNKQ;SxaRZ z-?XBQaRV-nuu>!V3aqs9(H^FXyYXtacAlm&TDbhiYr zq$r<~JPM*F4%Jbl5ffDs6~jo#Dv8SLoXBwLQ-77Xypl3TTuNO=^R$vUT1go|7y(@R z0MZ)7uMhB<1A=xS5pzJ)fnUy)TgFaE)e$7=56DJBRYL%!7(P{hP7G06%2-;(TvDB& zrEVmm7A&k4d`j0(R4YlTs~@6a7N=$tcOq}Kf`EYgXK9pmq2H`1pVMJ)8H^{P^5WKgk5l$TS$nbPpoZFw2N9)KgTU3+2w4uYj~MEvA{K=9OvJxAJT6Y zdD}L$-Yx$6nfU$_59I5d8|sj9VuKLv&`u-&`kBZVJLH!GB~o^sE>RsPe&!VDb4eCn!mHz3^X9*ugGSqv?u1$%?DWA+7a4CUc<4e~#JW-hOC z|CHOx=OD*+;*AHFFZ8?y3HrBU(6m?pfEw?s1lu>$C-*7$xWkC6ICn5qN|Uxd#j@Tw zpWf-MI#3HRn}0|1{KwDKKaH=7*?TNtT>X21rDUbYv>Lp`&==>OEHY{DMIz;LGy~xN z_}=jOl5q!6D~8Qd=yc+HN zraEh)Ka#6m8ciiGKWkWi*g5r}($o4LjaFz!YKDDtZKhK2`vERNVlu5NUb%on9V==r zqU;9f!n=0!jgB#S0IrEof4)`iMSmx*J%SCtiPK&}sbEJ%G#p z)j7gfGl#yYl;s@VD+kis+LfQX>D!OuQ|KsTtyy%&w|(vQXLO4YJ5$o9`_sZQtadnW zn~3V9i9NylTozv-^jUGz4BF(0msu1WLZg3kkkvnRW6D911X~&&q4!Z!T$?bI9U{)c zE>Cr;jMfLV=u}dmMK(Cb`vJdE2Qf^!zZ&kmWt5g~6X|IBBwR2g8my$q;!r>dLi3w@#(h&9^`j_|M27G|cYR;At< zf&#E2yj@jmR{@SzAvI_OF2=N^S2>B|x^yQ^m~*l~^vec(ZWaD|rVySui9`IRQfO{D zjwJOz)Df<>>^s&}q}4~Pb3LK2s*qE^3i=Yv@v8lWY8^)EXU8KtQv{cF24PIpfBs^l z3&SpriO~mF3SfLNq1lX14V$Npht#)6hOOwfY|3wvG+#}!x!x7WK34m zPK9DY{)@x(XbLO>%?f2A!jrm38NgXw*Laa6ov-r(7sW1(OvLpcWr;g$m6kp5%xFxE zUw4vNfNP`Y8O}~hi&j<}SGNaVwyIziYqr?h89Q^kF0UhZvecY;u!ELn(UbSB2|Iwm z4r;}|0X$spM*(ke0=G99lJxY%3KmnWujA;!rXYSXC#(H*C01%@wOi+arkdSmX%tl&9raS}1vY z!utY+dCnFw$CM^R#a8DJzI#~;g0LXd_6f}v&talNSBf0>8>nqJv#N!sgof&4=-Ij3 zd)RPRiCwsbpL4p5H2qa)TmJ3GeNf-2EYS;dqinalG$iCog%0B#*f1S9NAKty+pVhx z%FY&m;LUo!+|(~0(S$yDWLf zSL8{=Q}sxD6=riZKJ3H?@_vlbTbBkqL`Lv|Jz17OpAF;HZ<^tyJM4mHMj059lg!bv zV%G0O1)Pw2bQ2^+D_H)3^45%9D)*U38EqFQtNcuM?HzZdyZ!5Qwti3z&J?k4UE~`N zI}6_tPHY&Z*C%qYYZHNS{qpwH7OegOKVJ+7TcZ}z0qY(|5|@FfWiAO&bu>s%rrif` zUnbh!jJEz78yjJ7=Y$;!F8pLv=dC-kSQb&=ua*J|;rU;tZKv4i8O; zC(5T@GY~dICEH1>GbP6y97qv3BFs7+K1hx6Eshr8uoR)lOi2!YK+u$1o}H7ECD5p&`ygoUHjl%-LRPH%l4h@%>d zNZ>hQ97M+e5<#`jo=$nPme)UHo?fh?U~k_?fXF@xqH!nMR>6tz<5h@aSr1*Af;rp8 zRfw?bY*txR9ffdYcjbO*5tjJYYW^uyD5D4J0*`Y_u+T!iZuaX~oA ziMB;IR+uV{-I~e%Gku{W@~!d>-^0p>GA-f1tB)VAyeR*3tnjqsOWOqj@kh1FA9y$# zTA%gP#q`v>eVH`-X8k^=cp<6!vx)p^C9WS$@pn?hm%o|+=;GBaJKu4bh+QL{ zK7@O9b2_7f_TrK!p#t9wNN+w0E`Li#ai^RG2YHKma>u7gnHbfGr^qd(bRT+rkT5b5 zwUj2Ls`X2Kn1{;ur)qPvo}Yv6Zab*Nry3B_$n~izjl5?4X%m;&*Phk9c&JZLlAr84|0GJ^XvLYFeme$OCslZpK_O6@dn;*#Ey z)2q*L@ivq1`CIet@TFifIg+{IAW=adc~Ub6&kh-UY=FEFXq|@1Vo#R2H&33|V~J3| z$lsq-{yi(d-{~AXzXK_g=doil8+WP=cM%H^SHx8^pGD};1W_%^0=)q$z}TL{NCk!_ zbDH!yW}0M3JGhDpO{y^em=`}@I46l#a9vNZGgEN!P5Y-@l$7m z1CWVf;P)IT9%Rzs4dbAaMGCpz^>cs@@^?*W#0nMe6B1|-^42D~Hv?hA&6@n33PP+R zqTcE(oY_$o$28sHXFn>D6)1p~*&LpGF9m(z4@AvIB~xt{2PwD5T4h zha5`%LQ0p|O6xWh-szON`BA3B7IV=~wpK~zns@&7OzA4yga^iDf}?ppju2`Jjm#AI zMlVx<1l-1+t`MzXQb=prbLr-%LZuGd*Iin)_O#1}q@&KVuz_I0KYD;Geh;o6ef1#>Jl&wtaDz-aSEI+B( zY*f2aitXR3{RY${yL>*Tsm~u%)Dt$;rPVM30~|D-@CA~p^M<;hshWSP+7pUes822o z3*8t{PuvJGo~V&t=F&Su7cs^7jtWb_u+7FXlx{G2w{wk;GwfD9s`cZXeNA>z}rLun7lgg@K zJ)NgM0?W#!f*PJccBZ=#C2*T@7oRK$5!E9sZV(#XsPHQ6z&JQSxCO{?OI!!+P{$MneU3jRnvwrH=5qhJ)f zxG1}%;AeeB6`bm^7;_-LNDMHS246pA(0DTP3hFir`)q_D70}a(!l@?YRg*$7(^6m4ibdwC zG1{6<(}+e%6ymTgMcazU*h6`si^1!uOz&^B8}5s=_Kkr{s=2qO?6Slg!(AwF8RV>Zfr68E0ZQ-afT^MZ zCltcZMZN90d)uU{|5uCDopha{OZvmAu97X}(i5jW;3l)@wkqzv8B-vg;cf{lw(7LK ze|)XJq1x*ypZmrc_Yp1Zhx@gUIqn2bFz&a*0{lfllZhNV_ z)k+NT*m}atJTJ9-GL{V)P1f*ld!Zz}$4Z#kcX5ys?<;q_@ntx57^YUXnMci=J=B|P zhMGah;@7NxU+rIRpTk8J1I-z6O4AKE-1vE;<#*gjEj?96PEk{v#kAMgvaC60hkX1? z+Dpwp(A)pRbN!H~{^5;1k&VMNcWiBq{9s*vDOC-y-LcSEnzOwZxLH{wYmBvzYT7zG zU!a&{gK1(tY5dS281h#5X8=V6DdNT6wZmv7YuO*1{1-M7cvR@i&vL03R$dlVcpN;U z9#|6Tq|q)BG87~t?-`ddItPL>@83ob@nB9pLt-TF}GvU8b%ua=X)FRXK9o)15b2b$${N(1JpyBSL2feLj z{jJlt^nu-vGYT`(OZ?MdboiGthHt%-&!v&9#u1$42qYzf|4jr6UM6Zxq+bwVmxdp0 zhiilYMHHgq9+Br6GhdVXK7ZuRK}hT>EluKF{sC=O1T>s92fsOYPz-;+TEoQUy(7c; zgT#D96Y>#HLstm@PI9afHdaJ3UaJBkNzA(k_Z?UO=({-@#(8zrJo_;t{3Vf=4Ua`% zo@019r{zX#kB#*wgDCVpYR&c+p2b}(Pxy_BPrD!2Bb%QUa4|Seks=cpP0ozFzi1Uk zlkRwjb3LJ*dY<<)Q!bGqst30m1%hM2pn)f`ATVuLEVpQ!7zz}+i{r3@0HKSil@;leT;NXmsjpF(%lp& zioL&Re=hP@`NcnP?t&^@KRI5~=@hfjAt4qn((k@_bwlB_E6bzf#FtZCMIZab4!K^b z4T~L-UwA08yncr}Ey6MNuyi4CktegvQ?ZhbB@4~+`sm?>1)WzGBhtq@uk@9cOVn1O zXJ2_St}dQhMa&ld7Fc7|U1N7&<4juPzOu$Uw8sBxP4LeeN^o67cU{bVT_R~+>dLyz z(7N2Kb@@N*Xu%C7-3=A@4Yi~V%#{tzp$+X<8@hisu!5WVx|;^>n?^~SCRaAihBhr; zZCd@=#0zfO>TcP)Z#g7w5w2`G4{f==+H$wr?BN!8FS)Jp2iM8HO(VE<`Q!uPK!abkl@RDvswqBLC_naqy$CePU>+|*Dnoobh!hpCsC%g_|83QkYS6;vVym}lx|^pPz_m!G*M&4E85v^~(2Qal zYo}4b#>L5#KzLvhw5*;R&FPo@njVv2|eMIrB-?`LpxWEb&wSU&IU zT>d!ps>^NcjTf-f_J05U`-4{>&auDWNJ8*X`p?YjwBVVZQ(2`*^jn@x+y#g0?Tpc+ z10M?>MHEDd0ufks1+@d>)@<;0umBMx(g*Nk0oZXn*z-GRcp5E>{3v=1@_dKWxcBLz zI|m&2q-6a`)AN(>kgSa7AL_k{F5t}HcSsY24Ed0UsZwVj1krckCo&Mm?{FPhbtM9$HrYT>XAAPC2xV8ER z{J@iGf_RMvfKCw)d5#%lP~Z|bKn3}0yZtM-2LmGod=twQu7IQ*&~M=3U>o{dSf+=C zh)v4jFu;MO(sNle?VV+cr+~o8(3{7^!&&0tYZ6?z@M!w=(W7vt^#cZc$E_D^(A%ef z^>_$gzxVUzJq5xaoD`CNYwjHwgp?_+WRsjd8Of{rHB=kCWq+(I)U#T?_2uA8=-cN)bS*xO-eTCyP{m(1)BZqboY3tUajdsH%G)5Vlm2 z3P5YO!Ac;TFBWuwRq*yckIFI7@5Aus<@0ahtF5wcp2qAv{T{J7b?J^cK*ipOtd`Yx z>!|Z+_DgA_5LZ3hmy@KNE1&l^uAL(*6c@SJb-tFIM*Kk}HA8F9?m_fz4M$5T_)r<`zRT$7J?uc|ryw&>T+DEJo@!i&56PPaf~W z{ATpFp$wv$A4o8H;<1AD%PZ^i#@S$`QY#mM=lbd8^$^;jh|QdiIN4&G*Qi#7u6I*UKc&AA>IaPEx|EMA}ykuX6>Em=q;XSMqLfU%JsObopExZ$STsytzumi@?=3 zHfb>R$APdhIV>N^9rA%BPRY5Gus3!v)w$JHXc> z%m@VP`F$1q<;$DX)?c0|(3xUVXmhv3ppyWdDQbjisk`^+-J^gPdt~r~xS>P81AjP@ zYVh6unEx~C23k1nDeZtCx}vDiO4?#Ab1rq{vubN<`eRSVi#>OBP0h%fHIqzn+$@5{ z`Zgx6<*VlCDD75c( z5`O+!fWxY=r~n~+Q;cVlS@Wa*S+fS#h_Rb`k*uYc_8SbgRRzq}XA0u9t-eQ(j@q_8 zPE|AKl<@o9YTt=8q_Bc`TJfy;hg8Iw=CazAG?M62ElZx10S9S{vw6}JE*ww5dAFxB zAIIM>6Mx+BNF-=HK9AKY-u0xGFN0W zT5&GBv7M5cY0DU3e5xL|Do1%fUcWp1zK;C=4d&`cUHJzHd$@L zfR{8?prw|U^)r>XG(M#Q#cHgf%L;_~`tToOPGUVISkxR`90e4CXRy3SCS-PArP1OB zEEDZGS-f?P$iGRoTQ4lQDm_ zS}Y9(AI|9d$-?PqbBoDJgtd~`x9o2+lg*sGuO!A`@gO7BzfHx)E4m#rD&o+Qo5yAU zhj-}{W%a5X8j$-soSBhek)D?8tFc@LO|-9T+11h)?W8!K&3X%aw0d8YUXMl@!Dg3K zRb-LB25f4Ka^2;-znLE~u(b71gQR0?7>Jab`|N|-JTSai={3)W*apt9(m&)M&z}4t z!sDoEb}{f5(km-h3F!Y20Ns}Dt<}G~AES^^8_88!sSbhnlW2pndFKdgG;@W8BHtFS|+-{KOKadR#c6+eres4&!%*t$%GKDW=r5r5P2D5?RIZ#^^Fzx>EeeY}t@=mv_C3+g(<_hd!EF|BhQ z$gm3x5up%%JWx<{uWk&zB5YE}yNGQTZ%m#uBi5dVp_^4duI1wlsKPXbsp1c?G)?a} zSUutaS|1`g$bOXf)hgMEnd&mXaF3l%~%V zcCadqjbRA6tG$d~Xb{@|$Wm1<0C_|=&hGkT(Mq`7bQ%0Nod4WY0~hX zf>&m5A1@e&0gH)vF_Ma1Eu@yTUb74_4~PGFF}L@?ab%>m1!W*yzhL)>1qY?cH`}RO zrV)&t8xm~~N}@=?l{Z&4!l3;?QL<*g-LYEk65(!7lXW8H=l)r78u8DLMa-`K>m2R& zo8a7U{~h!&a#QbrnP*Z^@g2V(25kLsJDKi~4sH%TcUANN(R8Dj3|_T>3DlSA_c)?Z z?W4-sL5hyO;&fLq=)Eo6-5i9;Y?CDMNNkdiHX0z4Ju%2;7X5nW zWTv;7m55=ccdPlw6YC{c*vS5?bg(kU(@Wscj;|G)Iv^Jcy-amq1me{`7=EvQjg^+Mk?g-dyOSPo6#v zc!H#BfSwh&Y6U5qINrH3(u7SuQ#$BpM-pq#h-pr_o6_jfRl+r2?NZ0W=OlUM&h1Yu zBwj2!$VW#FOX8RVF%x?C0*f>;q+5D&xwZv*Z14bN20cZcbF3>Mcfxp6(_@*_uZGPY z+^eNGfx%#sCgG$7avUK|SW4Tb1e#o$W-66NvooU5ZD>X^WS>r9Vg*)pkWM@Ni~p_Cx#@*!~wnL;lp!%h9HH0;_}JH|M@Z;tvoZQ?r| zk&=BuxU9V}v+*%Gx*aT>DKB*Z{CPVPO#ufE1Gip`XW&g}Gsn}P-xb*;<4mTHZw;FC z8IbZ26J80;JfI2&a~3VectrLh(Q@C(J5O!J}hqP@#JzB`q3D*4}YXTL6X)vDzB zH>ZP?VB!=AT&g@uI0ZB(#E(WshJeDOsNFU;yS_HMpSsxn9#JBTd!^^!Rf2+vom`XY z=ZJ~}t+ZVI5QiwZv5%@*JOEjhH$rJ}R;0gAAweo24$sL6OYq|aqE^doe9|=B9Dpb# zm?yDM1c>BHYFxf^j@kuqzz8JR&g^^k#SfcSdg6=N-vHQzu_%c7mwx+^5?2bQ=7n?t zS3FE_USfuaQyq_tDzxAl$-@fR>*p04T~jc*hBgfY7EKoI+(@`nXAD*CBb{>|uPrQQ zW%3k4-)7sIt)}#WNyUWZ`_tsK6>_H51=Y|)#H;%zhTG3>dd%@j)|9G7p_4Bcb;8*(nb1B zi^8VoZ7p4RLP+d+rin>jP|1J)&Pm~$!2~*>9sf|d5 z9aLoQaB~v?Xm&F9T=KvrkicZ}+f)$u(seZrfSc;lw?%q1N@(YBsj+kEHN3%*2?9yE zc5`HhNj>ipcpgqnEf4FZzfEcLYcqQ+{?%8^*VM+WPNY8Pky=qLhjxRg>g~tUF#C4L zrJnRZEf6*0%cY)Ye_CKBVLbKVTG4lkVq%uc(Ds+lAHIAEt7YeX_3V_p2gPkY&ut@d z`NN|WV!J#1o;3U;ZOBEa?GqKTCm=x9FK+GKO zGZjQp;{u+OU_0qh)HI*bx=N16*3Z05)JrKkQ_1fkBpdCtGPUqn#E@&2htF(rNzpS9 zp@AlTEB zquck9pj8b3?Pf1jX|ijysP>+zoP4|3M5u3r0;Z1gR@rDZ%`=%#0iZgX!+HAa-h^fP z3xBbLtamG}6se;9pQ>`C4nNT_0aHq;QdkcZ5$yi^PBK`S}SY4EkT zR|}b38GLxT*Yg(o=R3l8qIYhtfEG{~h@L#}du8DHHG;j8!Giy<&fNV9&6u|-wKgw# zSwy_MD)sRhfi4j-Afz8oQd;cn%R$AT$29M=d*2m&kwHKI$_qdp-aV#cMp-)CUn#Ix zjJjg=ba{NLAD5Sym5Y0+^5uHM={c6pED3nUH77`O=FWMmCYxg>+3A}t3r6J& zXEu!Hi8w`$T`Tv@c5=V!3?@}8mDp@EiF5{WQ`HJZB3B}FzC6xX5o!Hs0rZ$eiqv!= zQA~BuDQujzF2%`#K(;(DpqR>eT-BoVo=`Fyv9zV}TJ33T7n9cHzCM$Y4|k^}8Yt|{ z)fy&7tt;e;)LSV(VG(VLYk7KpFJk!`+l^N4hyCVpKxX7t!jt`vCK8nBP9CETxe`nC zmrQ+Gm9JUb{C>}UaTdYNXT{_Pw*PRqrzt=E_!^=XOtAC^%41n_O+8NQwkVSmp}to1Vx5XpDf{I@qgZ|JnHOq2NX`_psoh)_k#C&l_PR!9gl`Cd|-euzeEiYU+W0p40SGy zdV(ymINU3cLP!)uE14Q)Y1d7Od%e9yCj}fqfm2197SSoJr)51Q<&(Rui0et;H_T+2 z)@wp$ZY3cb^8Sc{vgmlz634j73i)~?ti?!yJ4i203xa-hcTCCcwLoG+xJVx-?N!#WaMg4ap(*flAPCn8TNCDDMLYYh;5C<5Dib_Et zVw~WUOz}y4_-|^M(HIc%1w?}ZSt3Y<$b}(Fh#8-fH9lz!YMwShoen+;|Nc$>TE;5c zoY%C8IjPV6+a%OCHqke;wzM)av~skz!CTn7yZHQ#+#-#ORR~#XPQ|hwZ90K1T4#q& zI)|PyCEgdV;$lXvFOK6cj(d~Zyhxq)$>Yu`{tD);|M^9?s&FsOUiE64FrS!Ia`~A7nsiKjYw%PId75|0lfoC?4oS2ERcR~u0`Ku7#Q@;e6)8x`)YF@4~lZr1(f06 zsmQ?6>U`mi(Y#K`H~IMizi(%4oegG4_g34*Icv;wNH$@dTGC$(wl{qmYPQx^Muj+M zL0VDU^i>g+U>FU>{W7m=;CQvJ$5~gNc2_&Rpi5=smMZ&eyjpbI@0&YXJ`B7%JXpg% zzP8dQdeT7peZDukmk;)8DdaD^x4g}p9$&WkDmc@T5WwV?peaLL^U!$Rq~j*_cKY-O zklqiXRacPm>nP~ap~$8^0EHd*`HVYb&AHnp*hHbsJ>FbBQk*KD(EYFF5P zyn8c|zVh~s;Tzs1 z9ogVFCPjONL+X45pA~^>NHyXUC`$)APW>=))rrnbhss_r^*49wH{ejV;>M@vMEsHP zkHs87+3}cF>{cA^3&u&bJ}XGi4zDu~f;)2``1=^#)(^-oeeeeAdTIF3x2P;Q*{IQm zX6Jz_{(LaLIM;9akxQ!;eR)v(gv?%R_tW6LoBjXx`gZqjQE6oN+s8OV_B$peZtQo? zsO{}{%^AtQ>t1vSdDpY#f8$;6i`cz)eXAL=@B9Dh_3bp?IDUV7zjyEbor4L!Ht{~* zb21SrOf4c-czQx^a|7?QaBu$y*$P7h`lGjezD~W23dj?GRNwnsHW^AgHa-Wla-|-Q z(Sivz3eZv;J$ey-e8$8hDdGs70A^)##AXuj6U|&M41$4b&=5K{ITER68A`#@p}P-; z&A-0vz|yN4*x(RrnKjBF$;rYmi_#5LFl~s1trEb|jE6871eE1*$Q$VJQ$>xtGNzRm zJ-@y5Am3F2=o_#&20>(BEC6y!P=og7<;r^u-SUQD86gY+``WUw;faw6} ztm4QG|pk@_JM<-Rt za$8*>XBwVzKUB`r!cFb;Qo*Hi z$`P`xmEC9%qJj#QjNjn%kVuiP@SxK3m;m0$!~9}BYLXn51jiA^wCq{zb+CFHMuF;_ zxd7}^)QgwS=oCSNkFlzOAc)YVi2)=4SrKIu3eUVY7bpxtkv66sesr=^lo$j6J9=|d z+?&O1k1BHmB=Db7O!)sYBjaCYaQ+W70Jst}w-Ps-7>}@$7zF$;LbT~X4Cs;Ve+PFvjOQ0|#hgbu>C^NeVhwxa3#1kNK zT3+QgFB8CD6|k%S7fzxMjsNmVEvWwlQRev66H3{HR~v-)*oL=xBzAh9Nj~eI`!Bb= z6B|#^WtA}YUvzmU-#ww1%SmanPw@fdg(!24<_3UbXMSqbSLCT^S^#D&| z3y{u;ubpD$d?Lk6n;Ohvb%Z!yxU-mayyNxcXZPOFEe3&C5Fkv}K8)`8=G1s*Z}}iM zJuUmv@HT?6nA7fN3&U5lY9V=D!jHg4kZ0BZBksMTnr^st-+w9z1PDbs5+L*zdR0U3 z5PFADq)7?AiH06}=pE_37X@oTP(VaPLF|Ach@z;VSUK@~zrFTaYwtbwxj17SF1R6s z0SRHw`ONwJo>U}v>;r#_vAUiQ(fsDP@>UEEp%aL|9GwP<78_1oX^W}J#^p8Y`nIt( z^NO9@e$kr*&jW?qc3*r*rlqrBJPCmVMEV%*?-OIY2hOoBU%dxJpwDV_Cl2CAD?OfG zY~qzj@9^sX!;lAiel4I&oEQdx;H(z`s_ED-%O!^rFJd_G%}W`?IQE!;kiwAxw2|}6 zlxl4JU0?k=!*zMC1ra+ZoXMzg7V^bSazZ|ifH7O?5C^coygzSH<`G*~so_)GLiv?g z6ALgSmP*z%V8OgD*yCKBIAUVOJhlJ{*^8t}Q)h6kSOw=|F)>Haw`TNz9HMuLR`n0z z*pS-Uyz20tMIjK27=8helUG^gC*Yf!#Ffp4B(RQz$y>}+MlcrJz?54wc>eW_DZ`*s(KNea-qxWr0a3ni_ z@yy=@WY0q053yRAl-IV^x;;NwYKm}OZyHjsvvu~A;UDBQPVY=TI2MAKp!M}36lX8Y zJ1!ZanJjZ2c38w*0gqLVNY8ec2#}GN!=Z_@XAZBsl;wc@Hs!BY%$Q3L+&%m;*K%f& zqn4(3^^P=_vUJDnsJ$h&xw~_tXW0>ru=Ba#UKHp$*j`rapMCmwrIxj4(!l|wZ9%fj z6zyr`Gs*wZN2EtaUbKzJx0yX;wkqyT_Rx6g*lgalvYG4@>oSivX$fW`I}OxUmFapt z{1?jf2K<|QZ^zZEwCXbhFaUU1adl6ZN*X_0+BGr%>X?8Km~W?fN7g*T|PM{Zp&ox0`>inl^qjm2AAY^(3*2f8Qy=SLcY!mqt4?(koqW+eK5eV$kU`0LA}vBK~Dhfd+Y4^{*E ze}8=z_wo0)zn=7?!`Btzf4*7^zz8rA#2OEP zK($^4BhDa9!Fu6&=uQ4e95Rfv0qH}VL@EepTF@exB2g2ZGy?sbHKb~(2%ZO*L*)V6 zqkPPO*Cq;|F8u~?l^6Y*Gn;CpaE_e`v$%dd!5QFC0a1P9)3{?7LH8X#fUS5ST&|V+ zp0o%?^21clHVhp19?+OZJ(q<{2obW@VgxN(OX2jU z%qyA*gCUf4o~DM}z)2snMk0i8n7kIr&^L9|VMl2><2P~CrQ9ba`iGp) zSv1GeSdBJ{yeMxiUk(hjV(=V=Jz!=}PBQA@NWC+b$i++s9v*&X=K58M#k{tfO?Ogrp~qA|gSH4mI|H60(Z3kIhzd0eeGou#?-e z;Aus!V8KncN&5ONGm71W4Ao80O%*48xn$ds@)Sh`i@AfL;wF0Rr48{+XNq4zd4kNdDUpD79mg0lnqmwy2@^8~^JhY!h5=eWux#)aH^f zN=M85ZwF&y>W#m%@qg_u{-d?{7mX(O|K3CVfBFb|L&C!&o1U5~%Oz)*o0p#}=k^~B zNp&euS6>eUuujgcZS782H&{(?Uw{9Fp~mL+i_V?h1N4T3nMZ0u1_1(%v|MWI1Yn?R z_ZBO-6^)lw#Ub-eGqYn|cki#Sv#7bgF&1yU{k(O2ZDa2`kF=tT>)R)z?>{Vj`qNi0 zfEcd`eSSUs_aCV#&OOA$*=NO{+)VDX10bl9##F$-)2SScXpG1jvH5c7`>VZXJjFf$ zfVI@K_&(TbUMcpm?%@_&Z59Zpn=-pQmW#7WedLA5JdE;apBXqv!!{a>rt!Hfbo zPM*6?uU9h*+%b=dv#>s%@Ar-r_E$@+a&h5XvJ0#)-q(E5=%d7E z$$V1!a$WOLI{9>yrqnTH?h%2J{eoNl*PQfeT9ar)isMF*!T}M%1-dKOlFE3cXD;_d zNkc1_8xLkpqVChk_%w5P<~YnKt}Y6~C_>4ZbxJ!HTj^b!867ZKj96UtEwU6(^_4y= z{(*}-T}D38IN>s0jEVBiG`L%i%vM`&FKj^f-LBBPs|XESxT3q>O)kMHvOwhAw1kJu z{ZXf#>uBS7>W%jCfKNw(%x=Hxrv&2Of4YsylKnh`tqA!%E7{)jc~17y`_Ff9w`IS~ ztNe?Sv(@uuLFe21FZb{aa{G%0+@bsTO(c5vmn_tG_a6|9wF5|rp zO9sl&i+G0P(TfwXY=`|>F-~^^D5{M z?9{8paae4^A_Ps~Nzq-~Bji=H8lk+?IW0LsPq|gl?r&AxY7m`}e(BNcr#;4Fmq+$mxgSbh?41{~IKAYmm!KItg($9TmT2~%; zr4Z0z&1k*mj=DhBeNU4H26Mr?2E(eR?)UVd_(sT)?q#{NGzLKon3IYI3rzu#v0Nxa z=^j*gKrf^GP*^{8mG(2^mCE&OC`=Lnge1M;s6aBPa<~Tm3&Xgp|MI82&E#Z+Vn%f5 z;uBeW4dA^TJlC8vn1Fylh@aS9TMPuPolkMaE5@gvSv29plPeIP!AtsJ2;obPfk?qe zj<_lO4Nv2#iPE~seRvqU4e

        )wYlanVLXEJoi%|A6_u825?F~t~MU^)Bvk_e3!Q!`Ud|CLlDiaAc+)oEqE zw5K7-gHCaKg~!f0U7yhm$5!WhbLQS3QJF4fc?#CuF%pw2;18Dh`_*B%nf%H#R_Kc>Iem!Fxvl_`5Xw&=@+TZL!$cqKN z=GO#tHr?jSE)1972E9(yvJ)nK)NHYMXeq(=&wfr0i1}wf_n&Gooo(?SWmx227z?_b z{Fh;Y{R^s~Qz|6nl<4(X9s4gP1+y_o!U-(n#;0KYpXC5REfLT<|KG%BI)Q?&H~&vX z03Z9G6#;rx#;d{Uihzd<^FIo-;mNT7RfIM&2s1ECcF+&{r#7Fliah5S@K*vb`8)s1 z+t&P3l9gO*w493nQ2}t?e}!sgzd^O&E1Dr!Pex5!5;7eea$N1w%=|96gcW*_3O!>k z;KRmTlCBY>|0>yMy>scJ05PfWA4%Kx{In;T&QtiSYI~<#{VNTm{ugN=-8nGZl@6ne z`ioKU{+}{Is#jLJUtadC3Z zJeieP4hF*g%?by;K`I^VkMlsu^fYVoXrp znyb^{O`TC{pOytwbGzIsa=n(~M650Xuw{Q#t(}W!OvPxv9RMcQS_F+aF9W2bR|TUN zIRjI{9N2}T#--h^@sH9b?qBqF4YX8#SlPi2pPT1KZ5S-*W!)Z7uT=K+lvq2SdhY^1 zX5a}=Jxw-pV_#C>wh@zh*dng_cPg|{U@U4Yemxa0xYVl9czP}68w3P9&Pnu!=PQF4 z+%+1{jwSL}-AEe-$FqRv_N~D3{Ja}5+?)z&w+335yq<&>6$K!n^sS}f+2g~+7*@D728k+n z;|5x=3984$#6Bnm~VGlb6}{i*cRgR)aF7}93-dRGXx@TOi0JvbxNFLQ2*1c z!|jVshR-@$V$xmuJ>uUUfct+FfZ3ZLQGT=5MLHxrDD}Q>r8ma`b#ky;$A;lQUeSTT!6@&yV+)KK}W+cU$4;*Z!mMqu+;H{YQU(efxNH1fUuK1`|BMSZEb&>$!_| zrg6(rtY*^gnJT8HkYc>|93rC@%(+H>v~ATYjwTDA^=1&F(!~S9&8IL7_|zWw znEzgy*8UIuz|^IU;@;F&6IqYf-0iwNy|vKA`Z#h;d&BU>@5+>BX2dPL}GntiZJb?L}WfBeYF`l|5eOS4JrhjgF$4VALk# zp(jgv5ttN|{VKNlIz?P(Xe1Ry?%?skNm9)AQ@D?U*LO8Q`kZUN6w4to?nxp9iY-o~ zI=>a$<^f^iy_tkaMXc4Nr&P zX6r20Od?#G5dSR=&U-$IvW=D{7AOL!LtXBvhC7Hra=te{W#zr=G~X@AN!3zz%R9tH zEuHeLUP*~ZAqmFP4S2-NuT&0;M6HCSj?8iuJ@GQv?BlKzS=8+fbY>=((8Ru0FpQi{H!%q7bTF5D5dCe67UdV zwC*e+bBM!d;K?zEL3S9)hVI7s*FGeOzCQmK)9W=5`Y+(x|2PI>I1m=-K(A+J{BsOM zXBxo{g8m1iHEhb64G)wcESs?ZFj|GX+%=RpO#wQib;@)=e7;I1sXotigwAM%CyNUP zN44A4gP@2RskJs*7bv=p2|wHLutD#dS^ms+Qwnff(sd|(MD9*kHsU`Tl4c#fnz!)vRV>=M9$@!(@8p}ab+r1X&ku2`Pj?V(; z56`P2W0z*J)4c{X{P3a#TAYh9+Bfr5tOz0PKGOakzHZE9u>gD!zi4L=7AQsnFSDBh z)#TLKvod8(sGM#oShjeeS^_4QAor+1`<==IqV7BAfU;2P06SS#L?fVBVdnkPqija@ zhx7Ok=r3!<5EoxUeNqn9Hf+?R(>o5L$${4bnWQdx%v0ZbW^Vji%2QsDy_72w(o|Zn z{ScHgU;5~ z>mBoLSzTKTDx>qhA%>DKSU|k=Le?`xjI>!Z(p-!(W|AO*P+@0)UddrMcSQ!nSwuV&VFESnU_JQA{hI zNrPp)-4z9h;u(sG)?G*RP*Tsyy*snpgeFSf;?TVRJXrVD+feX9(iY*nrJa>M1bNgQ zl8P|pqd~goHFM_vgdWVlglt|@cO0>CdAl51cWEmQL=i!+VsaVDBH7ebPapvC&;u9t z%4o<7Y*}J1agELIQj~tX4%Xw6VO-=qP{VPaT#(L}onG*LjnaYG00e+dcxA=^gFE=7M4PU-@+sY&*Zo$y z?-@u}KHu@JkG-5WJ}(%W2twC%eE3Y+O9;S(eDS<$uTI^RWa53d#wlh2J{4x-pS*iV z@YjcQtVNKu;}nTZz6fGYIje`MJ+wIb!_B*AX+<^^CQ>cRCl|csJy>KL=8j&#fNwMA zm?>TaAMSn$TUU7I7=P7=C3Wi0=Ur^RJOtKP{?sa6MQQ0lVV29RqRIkfLk2N{qn8>Bu%e(*{ukqV; zK_+;qpf$Nrio%oWP~6y~ITy^ofT#cEQ4nWZ{P8sXl_i?9Vt3GINsXOFm}&-sln{&| z85s1eu;nQOG&a4c)$G-Yxge508=YC{`ewY`5YeFBPuY}hNIjZyg%OEy95V|ol`^qV zvH-#R_BlWGfnG_K>X;}7JnIs_#T=8_BLlMus1h!;rI|~djT=O4%P)XKn8h{A+r)n? z>K;z=&>5|Y1t8Qku}L1{Vt3cyvGE&l8so7(D_ZSGy@8lAg?u;giUcuQSwz|zyIUAN z-4G$H>2Z$*?xZN$vsy%hIWGXyVsK4rYorfb;bJ;=^^(THn8S%j7cK$Ga|hFM(GBloPUAppx#rc&lkFIE>j1uE__(%rkOp@` zZ_*MnT3E6V$X#L%JCY04D zVXRhw5yI$zqwboBpR#=F{jdH8>uMZv7*FQodw_JF2hI0SY)H` zU|5vZ{p>BCdkA4qjj$thup1rOEFUo48i;ExR#Av5*YwDf~Fo+`0Z|Cnl=E4VRs`4$R zM}2NPAr}mus5;*vPOY*T^d7PwyHQ_0Qm=3`DF2VV2AkNYbB0yT6B?A3dSU8ag7(|H zDQ>`Pqbt=yhs$>IwRje8AhAwAB9DXe>M)kte5CyW=6&Vq`a+0pZtWUqRY+IFlp4T= zeHWwuOONZa7I^eS%%JwzW3lG#z=fdr2z5`f0|Wi^)#u9-c3PjnnKYYW=hxyP0)xm& z1M%Z6$1g=2GcmEhQDrqa`$U}bJ<#(@+QX0MAonk`a(Mcmo26gl?z~dFV1F)MVoWRY#M9lMH;%a$hxV-dO*(~rJ355pG{6n zX;eoK8>4l~ys#iLnk~@UCm5V^=AAft#UGt8Vw^k`e^otU?Y>FfYaE-TX_}MiVXSFk z%-J7VqS=0EeMo#YmnCLK03n>(?uZt0LYv-7geo#^52wN!ttk)Um`q$|gso<$EZbKs z?%7+^saSGRBF0|(fNyG8CQ9!G&%99I*kc%aj5N`q*-s-&bpj6M?}HU1X9}GUMuT5j`NB1CEeA zHkl1qw0S~i76P-akmH{$rj*CpK|k5M#JlRMp=u9KF$z}HS4l)r$0pS$S2f7>D zyZqkDuP|i)M65h{vVKsklhsF&&{^gh?n8;w{FG7mB(ROOBHzs)}W^NivU%agY5J zcuQ1f1Lo~YG>(wo%2g#gomBP5CHS{-r5vRO-@Q+{l$y*Ia+j1^Wak<`E+rt{^?A$e zH4DsL%AChboU2M*$IA>KmwED*5_!u{XqNj`mG~!=t5%f<^Ol4>E|-(S7h#amE)}uk zV&2dSv8wX6_6m{jr3WC7bEd`Mhs>D?m6V{$8zAv>N|ijeUdP4pYb0o?OI10Nr2*=j z%v+98FOU(hD(9^>CRYIiyak(;?Z}h4Jdvf!RZT8cm5-%P`cQ4ET)W4sdJjtfA!d@tEA#xmCJg9!L&>4eO`~v*_tgW&AVzfT5s#wZq?t? ztb0>c^$D5$G3Y{@ag7?Z;h5cp@dU*gsp{{Yu1qu~%cgbLT&f>Q zT@dW@g3n$k_*y%tdf`GsEvBpX!$IwSWuD}dN;PTsd6!131kYEG8(4lcJZ5ifL^f;u z2;`fymfg8vI_Ei+(9-$1MNYcm@NLcT_hy|Z4VcI_G{!Ldh1Vdvl%vM#|!W({Z zx_e%(kA-=jarL?y(2CEI(@U)KyWGM%*OXk<=2qQ~WNe@BY$$r$1aYk%^szou5V&( z-8nrcd7I}hQ|EFTmigMtmD&fYx;wIq7IL~5pY(Em@4fw_X5&XiX-VbI6Xt%bywRZ3 ziv;&)m36m|^>3`ET@k~B{u$lm{u$kD|KU4>(dmVqcXnBuYe$~s4!^j11N?8Zhx*_7 z&h}qG?Tml&X=GrKzd1A*7%L3#ComHn|7h7ucx$)?;X1g@%Z^|T=Slqf4Y zG`A|%t*bPY9vgG1Ij*X%p`xX?wV`~dz5MDRrGM7|Z4OztBQgwB9?kuR0m2L1Bg7PWHB-w+Q5$uvUmRy{0Xc)JIoTP%Pl$?s1lu)J} zkEE)as)DS7TAgTv2)a~3NlHStN*L3N0&yuy3$jTnVbocA_1G0f)oJ2L<6dTVepM`* zUr`1FN^IaAZB^)OmB#jR%Bl@*%U4VFG(@V1p*a<#S(rh^z94?t6dr%-%uv5MluKEM zXARJ=qNX~E)Q)kd=x3w#F^))b0|+Q!Zb(=Bx(O%C-2(gB1VP0*id~zivTv8r^Zcsc zp3T2~)5ZqFTBO4NdHHpK`F~znSx`NY_4hdg^MKL+PP?HW!2eCVVNe2)T688iz^Mf0 zKS4ii{LisB|1i1Lh4{6F_%U#-lz^-hx3b!CO&sQL?9C}*IYq28PE1o#=A^c;@+lF` ze+3tr13ZQRza6)r9$45Iz&fB*oOmP%yt4MZ^7K0fZ$Ksxq7*=nkb!H2(qoPIG(tsW z?4=YuMU~xUlOm{I2Csd6?^)50zE!Qn*LdvBy%!KL+7;O$p{%jq=s&k2{+P0 zkdeL!u@q&r6c@A=WptBeCg?DFDGC{iiPM)N=CbnUiaPeHsy516ZmOzo>e^nK+TL=k zq3Y}bno^zDDi->hc7_^mR+=_u+OBq*W;Pmh8h4PN zj$ZJIzhOL%y3XzfUPgLntn^P?8HDK?#_5@zr^oYHnI*a#26>nT*_lPTnn&0X&im?H z2I-m+b!~}8UL-x;SR?afbE8Bv^9U=)Bul$<1iNHAPk(dYAS>T6Lb#7Za;QyYlr=HI zniyf@7iANC-XY+eLvVysa-tpSoJ&-aYjR|C_}_>os}w7nbW1ymy_C(`~F%Z5-3> zU9%nC)16LdIiF5<3C(u%&UOvTbc;%HOU(9+$o5M3C*G+hnefk&hW>6%^-Rt1PEVyH zu6^l<>->u5y6)Pv#`gB!vA(Xc!NJkL8BX+crT_E$^8f#@&}rONNC6ErpbQ|`7>PK* zTOZjiVphvz10DuJ|4X{izin*pLAb^{=`4WcC&S@3%WAVqP3QkX;}*QkE;lXz28G-+t&1?sk`(f769}BbI4C^7@!2 z&TSLt8+FMramy6`F!6nC=GicPLNZYbODRix`3CS3s=WYedc4CNk6mytvh|_2r#JXcke?e+Jc(g)Bwu z&!7IX9B?7>r|LGw?YID$g7-o{#KXaUYapfsu~kC+dBwvu3f6U#-{^`V2@No3ED9$J zJ&|}CFSZi+%KEso2thFeWq{%GR1_e*!|-8rVn^ik$OykM304HwQ%vvWAcCd=7O0BhAOX) zN-v6t-^s3$K7)zatUd>p4$3|i|6SiG4o;QG`XuI?C(p_wELu}izJrOjK(JLwgP+fC zluig7Mdc~YzE?`=NZtt8>0_40QTyjDNQ*g$V`~#UzCAX#I10;KW%?HjR?&lIt(w6t z_x+RH0F(~N{*tK;6HO0Q%A`B2UevXFc_GMQ7qIa7DSKr<$B1_A@J;u}>swteT+p9z z**zMRJ7jMHATdt>)^3iQT;Cw?#HX3Y!3Y!Kf89-- z?Rak_dgXBF&b-P!*(lMlp8s|?(HnUO|D{o7$>{Ihguc)u9Cy<`^kCUJz#|6N5&b*{ zM~o88Tk)$1{rWhtz4z;rkW0H?pOS9NeS78y(I0*0on`s$Z@SR#H#&+*KK?1~SJOpY zk$}kDsvnamQZ!QlY$}!J6!v}dv}m8kD_7Al#9X#)!T0U(BcJ%?8y2=^xJkT7;__8{ z8$h6g`uvWFwF2~E`%XdPRE zqT2~V=Ip?)#pIQ1P`It3Y}Z&O^+X-%sQ zKhJqHfv$_t8I{wbrFgK8eJ_cq{Pdd<4M|tivywTCa7X7pP4X-ZWU31^u=ZZOc^v#H z`360=DQqtt!HH)eP)u3y!YIRM0E&pwmneON$D3d>tu1`f$RY-u{ihrkD2?mN;WVy5 z@ysMnly4bv&1=7r5yZm{!7NfiJpk*bxd~{4dczyh%yyb?t>6UU%6Sva)U{^ur{XAG z?1ToBFgBN^YQ{%#D1};z6_d-JweHfc3jJFqBt^`YdK~tfc%MtIX#KcfmKoh5R<@0eAItzo zKq<#21oNuYchTjXvOShEp{~Lc1lP<_pJg~;`rU@f+bwdd~FH z|Ig$xJ3LJyI0D8t@0}1xWru{38I&0HnOQVI7USKfu2|h0zYY}0Hw=joQRfL#Gt3D@ z$~<(myoq=_knC2(@NmV42@gzv1{bBE@H9x&jF&_s06kE0&X{a~9ka;uIaX3QEuT4< z2h;WCZ_ejVB+`;joV|)wcziwcU1!)kf2{`*(M{@Ya=4a|=NXQ?cN{t3l`s8sO)LsR zPM;i3&aK&0yTW^v)1EY3yCrb#?fvfy@z-nXzRYi({1STa9Lq?9=nBZZHau!_*hKsM`_}>d%AB;#eL`FAKB_ufN5mxjqcB zi|JGy-&!ABh^f^-z8jLI{hXN`hrTMv^PcAa`QS;y^sV9E+=?@gcM}tC|2g=we~IEP z@iTb-i|Rm7^5sKs>!fF2Ja0{1^7+#mo{XN#5Td)R#VbP3&uHEmVGan3k*WI^tz9p0iOGcB7B67l~Hmu%k8{%?`W)pOp=Y}1bPT(gX7_=k* z=Sv7_KN?tLK>zH`>&A)0_wyYeYAKI--tJGcfA1&r^YMd)yivE_-SEPn&ki(V{eQ4g zp9x@%P}wthlwVQ)SwF0V%dENoQqd4zA2MbNr11P1N=!f1jP< z_$<;gauts&oV(k<^yMMb@9ir=KRz^iV!FexiQ3I3IG(Ft8O&>wi|91>G@7iS$)54w zY#9s_kE*&!g&lEKMgWQry;)6&M)#z;p!zQw*#db0_G~Gtegem@v~z9y?Jmh@{7=;! z7$?4TQr$2<_a^Jy&Z83pi|1ta&V5op|197<{fFC7A#9aey;D)!-M6xj(Lac`{yt*; z+x`R#2?z(&c5a1rU{J|KlR7-vkpM*E)Nbshu!yB*aS^zj3A`F8euVXttrX^Csc6Gg zaY`z1DOGL^tiW?lQ6mlPmu5hR5U8t3WZ3Xc+Z;cZ{_u;f^GznwI=GSQa()fig=c~= z;OGJCB#hF#IFH=rU`lL;RBMLdYDUCihPOs$ltX5~3@m6YGkY-;Ny(}|?WOEsXVq$_ zb6Pd}2xc32%zv-}%1A`cm89yD83%E?+$jpipWv?`sMQ0v+%|iQQ3^rKL3cXi(Xs3o z`q|~qs+AqtwHiP@56}>=-yG<7Yt+F5=Hz|aIWEwtj}oqW$!e$r&P>g&nL(vEz-N@; zeq_Yl7uV^)z%$E^MO$+7Xs5}UoE4LtTY-exvAmJ(JZ~U>Mk#+e-s$S0LDI4loyMCk zmREDkziu<=YcrH-4Vm`}!TSK-L1JpN-_`qp9-sS7I>-SZB z$!g&d4;A7Gp9ZVDxnHcv*4pXz_*yN*-CFWLhE^Q=+M9tvy>zYo*>4D|5+kpPP1H7}a@g=&_RF z`6NU259Q@cilJlWAYA!@ zUwLLl`I&L6$+dFQ;2+XA2+r~KOQfh04|j)W03Cf0$Nx!c@(q&95jym0_nc zTKR-~Y?N2*X?1mEpT4Hg8*Lg6S%gM1&Qj?t;r)xJwUCW=muxY?s=Tg^1uFi$mm39l zw7I3#gZzD!s~z+Mf;Fn0%FF4Jl(Y7eW;~zWDZUni9cz8p78A3Si1HST;1=^IErhNX z8?9DbvsOpOLhEWx=0_SWw}Qh(QT=b!hTgR9Uu>;=&>C5(M&t|j$!P=Z&vZqdxz&8; zgPPO*i=m;SAyc>19%qKcT?`rXSB;)Kb5}G}eTTAqu^k-O{@}amqw>H+QPZi zNn4JjkdjnTyIT29c(h~qn&YYO7sJ0i4*#;ER_)rp$rWCa*g=jW!AnUPPJjPIRmm*9 zzF;TucC|}pk&(9|7`gRCOI5EiMh2Tjd@EO*{?R7uWT22`pwu2MHygd{tM2+X-o)rV^ZgCGq2cTyL z5d2DsiY#QBCfFi(bg0 zIFm91==7E`f#NjcC+R0}QqZ_w_w#%!BHjOO;2YDVe0%9un+V{j~xw>%+3#-UjmGDWYgk{Y3}{=m=d8`)*2&v;DCKtt z1Z8tYd$I>4C*Q2*)x|4Z;K`Bd(Q_T8H|=?m2NeI-37(Lf+C9+M8mO^`JZxUUj%5Br zlM^2#`$8NN4WCI*RJxegPALi85_&&1gP68GTX2sj|2<{;(P7&;n$tO$bE-ojaXu+~ z`bM0)hAKY3 zV4#vaw)bjNhH7_u)NYr#$BvT<#>(Ct^FRCcPEV~1c?}SJQ$cnq zH&(0+o-NP%ULG-Cxls*&nNhZ6K}&GCo1ih|Uif z?pz#wd*{;kMV`!1_T7nK!u|T}``55noD61YVRbd>hyLwe_>kGWRwuE zJ7rX-7hCtO^ZN0Iswgo8W)D7U#}q`p@RGOwm8Mg|-i7VX`uC;{8;lnWp8G!F^;^+w zFh6nE^7#dV-11HQvg5T2F1r`rJYELxm=J%fF$FIUyz)CMcfv-k$=QQw^O3w$OX z-k;`fdrnpK=|I-EfgE-9YkN#h__Ee7#&SNhY1F2VyW0{vwyAKo52^K-1^4yr8aQbLkWFb-e}slnHCXEChAr?>8=nE>d+rsU(?LGVI!L;aYC`$!szyU2Gtn>> zBAso(&~LY&u?K|=06w(+*>Wuv)d}lmN|KI+!21c)RVEKKAdmafoj+Bzd|>e`j7aBa zD`ZcHeF?+Y$3Xy`c zFV*e7q_afaSkX5#*FQf15MAE6Sj+&2#Tt&t0%Oc=_0yHe1}8O2;igIl+#D)1@G5!b z>=2Sw3g>JOv$S_m%~{Jc4+9IYXwR&m+fzN3Ys`PFP+Ah5)}9Ak^R*yM6|4Ssz1+8B=CC$@pl zUwfW0sx;jN#7Yz&+hv}r-62b*RnkotwAgwekxEA zm4kQ)Pl z!twKrcd6?|N@zD;X$AnZzL~LNW!)R-=GMi>zq)AHG(b*aGnk&WuSx$t&1J$~MYlqYm&Q1{ z3bDsLv^}rs@Q7~JI#_NG6I&K1il-Qq+LCo08hi>zZIf{;lqa(IM=&k49zNZR#ntQ{uF>q_d z;LQGZJN=-&+UeMjGD%zXCYzWEEzQM4KOZ4t_2{1Is@F4a3YU1L1Xty^%>b@S+dm;| zs7d6zxVgEPeMZxAKI=Ql>}*6Yi`J7_&&cbi ztD56bBBpd2?g&dvter>cW_DQ`qQnwRX^}z z@v#wcecg27I?pY|i^hck7R?C3wMG}6b!bElMbs)G$G-1#SaQeYCX@ysBu@h}w6qFz zT)hUm@1)v$=8ahL~5kh^+~2gk2e6V8j9!`0n3SII)(gWFc99b1j1pP69C44RjKDk{@tl z3u@8@wM9YIDt=h|3*b>Ps}Oc8KQ3oU?}~Qan}EsU?9~vzZuYm*Ig^ zM5ujzqimtc-FUyEj2BQm?2O4A1M6eT1$fL+hp&|MMnScGCZeU&I)BH$JJI38edBKT zgD&qu^vYoQLC+bRcZ{n$j$`5>>^I}np}~Ynsak^U<4G8Ix%m8Cjxgs0HG_+B5uPQR zis;cbgtD0wEuJ*!Yx6Z%gRvtR1lE`h)&(qn4BWBeSz&}x_3yUH6zv2nquCLLYsbPt7qw9??h_!;|HIsyzeD}Ef86g`Fve__?8{iPg(eB1jD62o6VVW|HVe0fLbm<1HTh*pA*7E~(#l_W+vkYCc~-^X!ai@c~=kFJT%Fi$90eepZ@ACU^AS zmS4O6-45r_qBY%wVbss9aVZnPqV0~iuqWG8Ub>TXo}*9kwHv-iUcY@9VQc_p`Fvb? zAjR4BEPF>-828z6FCOJ3XmI-u>!`x!oXVF+Rm@eVdpxLe*%s4{L6O5r$$MnSyeiv$ zmR)J_mf9~E-ECo;+ouCL&Mh2K*cdqaEI3J9^i}dYOaLH233v#AP?%}a}ldx2uD6A*d{fn4VxwjA}5ZXsMsf<$&Y-nlidjk|X4?FY%lherZ}5r^>u zH;M&El#B4;&DMjT_{9&NyL=<8uxvi~o7V_uDdzqS>)sFkg^{niKl9jA#lCpSCAONL zYh~X8c&6sK&%v-8kz8)dNO#lgGV|Y<(Fwby74DdgH%E<)ddeDkKbbjL@srjl9>epJ zlN+~#7n^zb=KQ&Kl{;KOlv%pC(D=N=f3bqiFK?9hv z=vczsBHM|8e3KlhW2W&ww=VBZHEIy#wGZQQu*`Gxe4ypbqR68eT*Dw>amaCGiS{9 z<(*UIW`*@SRMc3-y`oA2T;0jM>iD=ez4KM7`LP+n>-FY!I)x_?e~yK*K;^%3HyZ!S z-3UM-f1*_Y=fOV_8!%i0io<@l-Ak~mi3>}KsA@{HftB`PpS_N}vYO)IgZs4rlp%mM z|6OA*ZUJ!H0phlRfX82D_6~r8D_CX^D4zn90>LJG9fARPH7uNpHdsgxw$XcN5Wp(>KRxu;x(1-*1FWA1(=O*-6%36H z42>;J9c;kXc|(sNx1b z)>_}!eXX;np}C{IrKhX@cQCE8^{-S~@BhEUFaICLZ@}D*2`8wJUZ??}0NBz=FE;=n zIAMSe%@kD=-0#s-ng6~R zGZj#=2Q_+Dmo+2J&wSl~{c)XBi{CTnTq;6rFIDS|6C)lYW~@F>(`r?G+D>^r{%o8t zE=7PHxkZ&!XC$ed$*T9!Osh)db^Ww3kmreZDYcKCxMJDa?3IULWB(B%Gl&44uUS&e zSgz6o%EGd68ciQJ9M(tm-HJH%=59ym$5PAkyJEt8wett{8|yJbNTh(b6*YcIU3((R z$wmA9^0Vm{e}P#lBmw98s%J+YU7f;U#|m1CF6I*vDrddx*_jnxXWHjhKEBvHWth9y zP5zw`HR6_y0YvWH0G!u+nhLn%AS5D=obnW8RWll+XSU8Pz6_TSYZ4ScLoIiT)plZC z_PE_dznq{Y6C+c=EAOx9U!CV~X(M~ant&VGY?+0;E()LeU*W0t)b%_UODCWqVgL|{R`wvS zaU;`)PAK!I()myP^}di}k75mA^6;vB6M*<*2_q#>e%Qg+%stTAs&Cvlfd4)dEATa# zW+eJ9GC>L0m0~KzYgDsvde?yJ9!i%)a(!sFgiO;A@`{RHJW)dVjk8$)lubf0rJ`|p z1X5Xdazgv){Szf91d(`_oyrG9@tEQuF!h58ZchZvV|G7wY~Pl&+kI$_dEf5EhxKPO zdaF6lDFQouIRIjLnfU_qpttQ=gj}CjWeAMCQ5vvEdz-%W1HxbT(zSZ0lv6Le++8cpKozMQ@&8)5nL4gq*5m+SgPmzIm=hD7Rpm)p31X?jjt@+tEw% zfu7BEqO)rVGB8oN^Sn9>Q0yWRVcrJVmb;pQYr8RV^C<0OuFO|ZvWhk!o4JJ3X0QXp^5coblOiIbg@HVUzo>?^3Ow!K^ zyCp5YHa2?5`_=i1jUgcd31KxB3w2+7E+>xQG`u>ghlra*faM0gF#Y;!g7(KcnaR z7st(4WXyr|H|WZQKJBRP>(lK4>eA!~`TFEWp$Pu0HBY@=0n?-hJ6#77 zQ#EhM+jcvDX)!{m&_)tLgfvcp2ZKi# zjY(V#cWj-&(CS^dHkQa{x+=-;OoYp+yA!v%_-j$`zNEX)+vy&rk7!JM&5ABrkofZb z_7^U;rDR&e_;sr!aMB|WfYaC$W+ zKu^naz-dIDzzIKj{@{3|j@DG3@k=>HE2_n*sE5UitJRg~j>aNX6Dqx>l^;5}oc6B3 zQgCs*X?2PE%wt&umL8nSaCiC`i*Q~HtyvRFGt|-Jx_#K7Df>#Y=ics_$1&lzD(|J} z=rCZO%oVx&nL%f&!wM^?4fzLi7EgZumQy`HBweliA!f4sIXXj9mgU+X6OZGKqbA(K zrce_7JIA-OBFv+$^hV>Fp7Tt0jC3PLGNZR%TfwD=^^SbY9mU3qscUqOA3fY}>687I zkp1IlMbT~3>8*E~lbsW1Css-~x84)6UCiVos}&;Ki>B6HQ-yA;qDU$HU&jepVEbRA zwC#V7((KCrOw$THFhxPwpP5>nk4<|Q`vGxb1ra51tX7eNfs?hAjEao3Drn^aM{H2Z z1BTbZDf>@;T~+aSejOaQwGV+4w>~&=0|NShpa~%K*U&9u2M*nU^zVrqz28Pik@P#o zt`rC+*FmKoXwm~?>)`Y)t?4JN_1oeL=G1qYhJd5Dys58>W1z~>a83O%Eu+W-q@X{O z`0wQUU&A<&1zqiBcHd4?7t7}=0qPbo^GWVe8eKk)a|Sj(c97L_Xuy{dk&o9 zz0FSq8rp%gd>A;$8|#C!JQztoZ|~-5?(2W#G}-d3yTgSb+mL8$a;R<41qVMcfd0>P z@9lT?p8-E2CQR}~3OMHL{59$SiKid2O|c`z{xj+S6HgC18h83cCKyi-bxk{WJU;S7 zYPd({dH1+KEyJlcMAcuqxR9xN`N`;R=-NJ<#M{i5Cncg+A5!($ zHkgwM(8rzb>K0T?cL(LVy89o z9pWHC7N=ypS~=@6G$d&V=0DiobR$<=O!&EW;b7vE=#}}4$AsxdyRRI2nl36OL^Tq> zgfg&{hCvLf7cV`G zGq4ajdpzWAu$raqJ*6Nr_Z>pd8=*n5D_)zT`;O)d&t9)h+M{C5x4LpM3c5BplnA?s zOC@$=h9JU=GgHRoV?F>8($4*Q1jbQ9A3KNQqZ#jO)|4bAyi~?9dUDmmPe-#wqziPs z_O1^$%fA&u5@ty$F!#WA7wXFl_o%`RB*#o%aLRx8Fo`}(O51J5CO^ojB()ZwGaTvK z`ju%g%4!fdSDTvLbBsuZ=tU$PC*?LHJ-H!G+y;rT^&DbJup+%Aa9{TGd29G#&u`}J z($~$T34*-J8nw-6xKb-T5!c#aTD8*~Zph;vcqje~r$(bV<`$!@sXQra5vsX)f89u@ zSM2+I(QA2^z1lptlKBKb^g5eeIQj_tq!9NS?hVY7_ro^1ACB{g-6OhKYZ0umlDP}ADx+(3=_H^Ni>ETB_%DcU^j|iy+U)zmf04M2&B7(%+jg5xD zcPDv&J~A2j#PTt)xIFee;X$&F&{clNO>}>~A<8nJz&pHPP>^(TxAST&kE3c9F+wB5 znQjI!^5{&(vD;I(=o05}rZPK=B$3C6lY#?OgB~O^{yZ}_5EaS8B^;~o&Vq1xEyf3% zs>V5S#s>_tu*Q5c)pGhcpNdOl?9;JAwrf}QMHiDf3`Zmxkv{AWBq%$SL`4$;6(EJ^ z@+|_6%CNz+bpY%h`382^b24f7itW5Qgr0 zze*{<1>ZT6d#v(`=E`M6oa_;@s*<||@PbfO^ak7h z^Lmp}Q=z5Ng7Mnl@9a#T|G82IplgU6=FGSPUi1mkVts*eW|G!wIWA_ApsDvD&3V;^ z`+kkF#`uG*sMSh5`nsvfWo37n{HyY8*DD>zr!H2lUIXO|mZ!`grXZySJ=5j)t&=$> z)WWLY-ix>PH-A(ie5PD`S;07`E18a2t06sJ42_F@IPr!(u}oNTZyFI$#nH-pnep7= zQd9+%1GPR@dkk+n*B|z|Smze#<20(p(^9+Efa&!;we>dkR;v`uc|&oZ+rE5Zl3#gm zho!C(As&^mSRaw8uX&+``Ej#^=9jozSkUf_VYkn=kUiuIxm-WBZCLbSaD)x zo%5cnyENek5mE*7pP%FlY6N}`t<-)tQM8(Zz5hA<=112WBn%T&6w3`79(DMKeO?~a z-!;w4`Lfv&gCawA&sr=LCdqL*6rGN_NICI&@ppv%%V~(x0(4Iy(hA`X;lou5s!27$ zB&pcGuBQfG3jkXUG>+HjCI8uc!4Sc?q=P+;*oWqLDcRtr-x2nsvBN6rep?%~L>OrV zeW5EZ-?=zZNfU3T#on}Ua~~DFKXuWYP&ITfPnME6c*jDvIj>wtU179l{OA)^n}bFA z9EPSl{6^rDgUD`_i+sQka@UA>8WrH5FApvvwa^6=GoExs@=yv|Dj7cSzb`r6ivGM( zX0U5f?=D~OjR-&}i8~#Xe%BAt^s{n=IoOAQ#DXKO`X|bLk3p6k`Uj6ohw(|NRQiKuM zRr15D7uV}8t_1jV%@PdosmWd2%O>dPN3R=NJKYsg2Ln>zoS#P#4J0;Y%RTcfZ{^Oq zL#G9J<1sIWG%l|{`*K0x^|NOFjvlToTla)k3H8O>qT-Zz3nvX1++Ot?cdfqSH$Osz zc3wn`>S9D9y&$Ks765qrWiP6~=hTp=Y{ zbznnHlS7N*KGCsuPS_6=^!XHYBqDJWkDaDrqG}S)Ehaw&Qj#~4vUX~c!pE?ixYXQ~ zPB+xMnb$(N?}CerH+*1jg;f2$-&bJ-{_c64D1>?E;IsDO#X4s6hl74-ZbO! zSo-*MVzp-K9TFRzg?YkY%cf#2JFqXAY}+)%3w+8C8cIqMcA=3?3qX#^r&^|9#u|a8 zv22G9?21$N_oD30jZ9=};wB;MZA2DCA$55p>+4u5+YEL+CHtpl^7ckH#4Od;l(w3Z z!_k?;bt!R$jI}JnR+FJsL~K6}dSxNu2M(K9MEkhoggL>)`qR-0V=1H}>^*??0g-Fd zfz`T`cldf-Wkl`~g+!<!KQLns43`H7~a)|Im*-tIk}5A32UG`P!WqEw5)XLL!o5Iw`A;k$-Si#=AE>MzNJrm z!M}=&N|D$_g{rSQiiqH8gl3abZX_U%#ks^xOC%wVlOY7f)E~rh`zL34h=44M z(^4K&jR&M~h|-0t+c?_PLY5ATbDDzWSb*ZXu5~V6BP&)Jbe4?=%8ZEY9zA>{}`dLCe~tq5v99UAVBh z7Q0Enwx!i|A#1sgVPnkU*P?2#ch%nbS=*#lcVwgf!R5L=9d+oXI)-BXkYD{+ZT-og zZ1)u#+RYmjJL(?ICalntACci6S{Moyp|`}n$S z@1!>gZz4pa8~3_gp=)73kTKOv?3G4LCk>KBxb~$nOHsSACVni!}C+Y;SWr(&w<5n;n#opuMl9M!VS|x^ugxlg8*Q6u{+l|nMABY*CQ_&wd=G-`}-P&1~9HYf%n2vo*L9*{q5wo|L zgYEhLJy$!h4;HeN8+-0=_B`Nff3&B)KB70gxHnfGGe5`qoU8AZMc=#b?CQF{Edut( z0t!b%EaA|mjqEQ7*fmN@jz#YaAeSwpmz~Kea2#{|C+7ye`O7pq)CmjE=x5(b8tr1B zw;0?y1C}4T_%jCNGrC3Q2P8xX`v`-(&kZiQq!EiTiV7)uIz!%?*i{;epMYFrp!O5; z_!SzNb(jIaUPC&f-2zih1oqP7sFYm-A5aEFAiEL$9bX&|42DJz*Ax#1c3}IM5X(

        RmPwx7f-O78Nx4tHvoZG2S#>~TQvauFXOmb+1$RUt||IuxU1 zNl=P5-r*_0Xr#0s)1DWPbrx@79M7stdKm6Z{`V1{3~X%uR~Pwra0Afax(JvI_D2)} zFlG=59YEIVKhnq+EOM(95=;R5ql>8MS%Hd(zUoF(EpyPg@OzpQwgXD8{~8zmfHiF} z@+%(DkN*!|(=ht|IM=a=0Uzi3WGSOtI~UH>13hF$dIVExM!8=fp0dxBSRLNqxyyR5vT@?=$3S`8;7GaG_UHarAA!kZ0~v5-@p z7drVhb!Fg7{K}!W_O5}!>h9E@hBHl9Td#Et-8waLy>_(kX3M1TQ6&I*3XX9Y43f@y z{sKPsVCMYP{&#{T8kpCQyEOsk-9N>js^J2cZ zTH*%DS>N?=wKfJ_Y^j?gKfZ+}kg zWyX-(`6JxL2tVI;ZzR3)P--0(4;Vc z$1lw|(VtG~Jk)*9OQOWthHiaO)2*c239AZjy6>vpRDWDhv_}%XsUndU_H0kuZNtdjJ3h@mYv3ShGh&`f z%uFL+uVbc3X#ISqS>#Te-CMpYX11kzQ^#y;og9rrpH3;5Z4-Zro-oc4o$x>!FuNG~ zd*j6e@IY%jx!MA}bBx?tI7G^?-EqPR=RXG;?V~$_@3u|jS)86{sHp>o^^(duNYr*T z2OmR_4kEFRobfhDh=iveJj2-4Q$RX5-iEJ573hCBt1|}iPbKPmdZ#>MQdOOQ2D ziUn}dy%-*JB7WetR%FOK4nSlYlm56UXl(=M#GU z`qZ4zK5NIf2)kiA-Ihx~IYS*A$6ys_ARa0z#&fR9afI*!e0*P+?LL$O6K!D~lf9ng&$|@^i5fQ`?Qj&HeL@3l&H*UmH$o zssenmtX3#WGNg7wk~{V)oJ^d85-HVuC1O!Q#!UdHatmp}YE;N1o}<1+F`@R2>FbRM zYF6QpJC2QUabbgoaRGLw@J92DDGtudg9x{5RGo7tYs)r=sdYI|&_sR9#j#2W zEFK!)4RLE{B*JmoC@zyed+HIO!GJ6Z5<{`@w}CC@oJAolsQJ?HMQfN*&Y!zjT5xlb zG5$_*y;RA{YBBm(>Wl@92Y(GM{(;r^n@_MXx>z6+{1cPlXU6@193~!^VPL!VU7Vu-ISo>l$!?4K_WIAgiyD7Apg(>DYguba&34hP{U) zTiXvFJASAW=oa@jAK7{TWG18#uqNsDoaCj-P89n7my!3S7U@cmB>Du;IbX z$UeAn>(L|^VeS|ewaHGtXX@4KVF+G7@cIGI!|sJeJ6;aGH9~TR%B?;p-89?>5%GnS#Ek&Qf0I{&N*Y|$llP;2) z7BgK0fuvMUHdZg@6Pq9A@b-VHE!{464T~rWJm+R0wyGXDG!g-S*$B;ss0IB9DIead zV$upIN1-iU^5mR|$u+lnGgN_GaLs#%8IF>$Jd$Uku$>e>RDi+uTz;&6e6`JJo$R0- z!=A%|qfDtk;ny0K5oc(+F9ZQ1nCo35On?|IJIaxERJfYtl! zZAPu+CA6_CCuN_fh);fgGtlJrNWR14x9i+1V&`mx`D> zMfy4O*o&fHfWEf|X(yFO} zl*b@&e*8;_A9#1mX>RIZ>{yXGuO zp%Y=^*5wm)0am7qypO;|X1fwrOBi*HXS)3$UFijHbMfIR;l>&o@4mqLOdJW4&W-;5 zPZZ9}L690=EUpv=_^^0{grw?R!bIr{iiQC_5sD8>p$*CFM2$`Fg?Jx-gDXc%-G3;b zf1NR`i%1b~R`r2rL-A|*ms}4cf<|{y2`tdi%l{@Ig~J_#+V{sV#prLXtc!JOT^WRB z>^)I{8QIsKB{c^8+0`UK^TL$mpz9x^Tva-i^n|t)w$2mc@@E2%5b6jSzO}-Z>_QDM zXg3FtEWrAj3MqS2?%EYivAX(44M#>Q31QrORs*O@pNw$7@)EtaxeZoVDUSJ7;ldi#>uD6JT4XcGC zTobr*MN^RUGT|3Wpe#%bfHJ5x?yd%6)GX8GvecEdFsaU;=cL2HNB<^Z19H-T05Fh8 z(0K32&l)8_q3d=(se1K z&L%w>rgios-#t=Hz#+kv@Zf<}UN`Az| zkCN-4!_6a@#a@1}D`9hJ!H)2NTSFTk;O}2bUX@c6j38b2S8DO)Vd z)Hv;tXQCky#y6)n&As|0N3G>t7G(V8#~0~AQ@P_*fXW`{2;eM=-pG^BCA!8)#W8OD2fni7!iJOht3D3=e%hpt zvh#Qhuzu;RV&^S*f;-T=Dr$d=B19areJtUY5#`EbH4X$qAEfn2%XQGyM`K?#d-|`A zZM47MQ~PR-MXKdk*&WWGUh%Vt$;C(fRX*&oIE8i5I(VOw$F!E-H9DAz>XY+4i2CS- zX6G%rwLcoFyJ-Ib*g9L*FeL2Jo1t5r1DATSYjN$28CQR_{mb0gDRUW_$&~==#>}3f z=Lxfl%|#dX*0n+*&9hSJlu@_!Y1P1$J zM0Fefc(K1jz7Q+f3}5LoY5qFFL!xKacK&)C;p2}JJ@7n|vkwfhclGi!%9G25)ZXhp z0*cI2V#fmtGl@i*6|L3@6q^TpzRPD07RF=O%cb3`?>Ku8*fp2t`5=E0wdmm%y@3QE zNcAIsD}?WWxeFIC&~xzNZ^BNcMUVenXRx+xKjUC8YJuy`*`bPnQ(&a^r#TB--X)b>cSiu~D|MY%Ir^RX-6F5X~ZYZwm2 z{&pFC7(-3pS96m-Nk`w1k8tWzL*1oyS**01br^oAxzd@cEr(>_50Q}{y&}!nq7B4F z9l33kszcdx1CZSt+#D_+wQISG;+o^fU_Z8BDvG&DS&BO_rKpM4j@c1~Ib)_I~YkvG0^D1D-yy zP4u>UF_KY)kbRVZ4?>$)4v^?PtYLY#Ley0@u0et@_=AaFY5u0rvu=Y!pzS%}W)cn} zaWlwz;=xdHO@i(lR*Td>Huhm|CnODC0hFCMYK0Y)q!fOa`@F|(6%S~cx^Gr?{G8_w zlU>M5tTHro1bGCTR*z%qgv$QVEw+n_jg1{25E*!Q`gX3FL~A+WuaGV6#0mHJ1wT*v z*uJ&=rH~X2r+p{LC!r$bXKV6MQMwHYuURBlnEEYaC)ts``i-!X65abX65uWc_d3~g ziJS8XtItcV-&wd!DXDQ!5qfoJ zWX4Qyy{5Pg&{HX4!c!dVMRP@}K8@@<*1g$^K31})rUXO#w6X<408hTKQQ#;$AUhd* z6WbsuU2pFrl7F915sdNl@H!$_M`v6WN0p!I#}9d#RAG6+O?$nMEHp5T#G7<;FoKRO z)1qn&guT^^3fbWM7=?4EjOD?)9y?zp;LWtggq?S%1F}=;VTy-$o{nu0UVStwPh%E7 zH&a|seDvddLY9Sn%(PbF%?kz*pOU=WH;7h_v|dzvYjJC_?988mk8NUnFQf!s5gF94 zA)OTQw#X@)e3SpvI}?hc-9qR3D&Xl#GV%2j3%38@OWTN((wSW_GM|$e{OxeoAUmzz416-4gF$ z_B5P-^#}T_`L@Qb{ioxeZ(gBswSG1a+-Vq}S~hAM@%l*hy12MH;jPO|sZHnXtBnc7 z=?8$4t!)I^AYJ3zklT22%ZkEhxeh}QAjMxKi$WW6*4|x)I%>nTew46&TOAo)Y%9^f z-~J-x+vB%CzVpY|6=L&F))}NPT{-5K#mk0?AFmO79`~zPJ^jJM)IsL`gj@W3r@t!9 zX(baOf%j`Fl!j@Z>+Me{F9p9&%kz(le+))1eb=e}*R0vIFU+EM$$Kmu?+`pQF7#!U zH+tWFF@DXitnT&uJJ&wUELjnM09U;=W&NI4Ziy!)(@V?CpWS(Xx*Mu$FUg3D00Y!ThParZ^(XZ|&%2Y(D2HGB@s z&pdbLUQE}YOI}Qj{`F(FVg1|-$E?>wGT&FWpUJ%bBlM;C^dF^_+TXdh4UgX{eSUH0 z;+OA#*6F_<-F9w7_1)2}A7yZ#JrZ*K6Dw3weIm2ISM309#`fy7Y`QU>+c+rOtS?n* z?5dRE&*?vorbwT0pkJ_BGux-yvOkSx%kjA{+tSlla|T9t?io#+{FM1&lnW7Y@cJyX zV`&yan(tM)9+6q0W;>0>a-h>W_u#zS+jzE2uD<~nTb*!rlxI54i^$Jf)s9PROQRAt zG1_w1&TyBZa=wPg2OT3^u+H5yh7I9It_;c#8_T#`E4&kN$` z1o8Pd^P|4-1ULD{=$rAPn+k76c1%w5D+$0aW}6}a(ivbt96$i)OY?LFEpV0&BY_C$ z5;^2N%&8nAV-tm4#$LAE52U(yE6A||fCo37!m?I@4yZAd!W zysc)BxN7gg7I9@yTV;PYzw_A9uFkgZzK$bjPMnd{cg`>9ZaE{}*DF17df@2kffL~O z{Fi?g=nV1zN(|B&sP;0zNR-z>-#zZ+z?fI|0{8f%UOui`InGqF)(QkG`>7i{B$!sb z+t_k%6bYeWnF>;y6=iXTW=gxvC~@%wgT;n)YuaKf8yYDuK+VwF#+q(Ix7kA#>tM?1 z7BmBs8VdQK0#w!9NDFIdK?al#I^)c#fJ9%;BB*OlxTe#7S0q7-hPVk|MNp1C(fztrk^2*3-F*r((I3ID>Yn5ph>h#mDp;b7V0t zq*WM^#0e-;6!XkJAs8H!5qN}OG+ej6G`LA*JbM}K16X~&J2CsT6@#GqaFGj~MJ0d= z7%TnlWakf*##Um)X$9@Hbn~)Xw{^LmT!fVpc#hs~bc>iW$IWGKNo8T_g4pfl>D%*G z=hTPf)TdXs7e!kaZ()E(R$fus*i?M{kmyuz`H9}z)}F%$`g%|Ix1T)Id;H9ap83=1 z`JbH5zdW*k^B<9uAW?-0hZ~IT#jc5^7*Dq2ZyPUdyGauRh9TXTJ0#iJJET`z8Sjo$ zC&N=Cc1cEM`YWSyayonknVqAb(hQLsy%sD*bqxPRLbDHlN2pBgzzKmkL;2}9~=#riUI zMN|`CTa%($pDI3!(Z_{N8S&1mU$M;{bus;#vAQr+1pUiNf~$Y zpfSAIxQ4JmMo^mX(KLP?(tM8wY8`A@7-021EG?v3Bz6HCl57X(?k2YcMOo+asP0D? zp&BB-Zl;?u;!5_Yw3H>4aNH`{!R)iSvKk(}Z*BnX?Z&#vjEy6CW}DI|ct zLEY7GF1U5byel_zs_mv(#L+K%)HxSKp1T+E#`zc@-?uvlWLN>qzI_jRB{Q`K`c##) z14$m5@}DadR;S;Q)zq?9f88-+^~s*-9Crtay<*X;t%{Y;jNV{v*5F_BHJ9*k6}(=2TTeD$osqWp4S<)VxBtI?!od6R^A#f)AbCe0A8hwgvJVvbMsS~0ps#wr4Hpem|t=EG61uDwy#)}|ySZ=``0MbRsLd$==Pjbm!O z*p!kBQP8)hVT45)07R~imXNv)6{nn=))?vxQPrnoHlr3P9rBFqTIYcxSQ;JOk!5U5 zCBnpKGAk_2jCFNsM4*IYE!fq0Q8)XcrIiJxIbL_Mna=&SXUGtoioPYiT?HMXgp$#- zdQ~Sa)s4>0G4g~)05gY5bjT?4V?pHbt0ErUi;gGAHMtg`wnRh_rZf(OX&Y%dl}1D` z${Ja|f$7~(&TQ3v@Yg$AzXx6$%uQ57n^|LxTE#)*9=hkm*J)p~QysenJBg^P|gPf2&S zsH+fcC&orRpL-JSK*v9z%4*&Yqf!qI zmFRZi6_=enjHQ>21W>a-S|1OhtF}4q0VZhVxM%@J>Q-0!5Z;;8f8o=M2m3Fc&B~e* z3PODC$GUbN<@`buk{4=*Fz~j`qX{4iuL_D6;W}g(lm?%dBZ8N2L6JyTgM*?(2W{lS zDy{`xq7l`?$Y2SmOLR0a0i}snpfpk56|@h45S;;{H=yMYp?Cv2E5SWn5R(XS<(8UV zf{xi*N4m>`3Q@-)83f{O>^3i176mTbvU5v!`MEZ0!A&4oU*Y%KEO1*E+tM(`hPJ`R zBFw>IvmO1vuFV1$W`WRyyJz}xr^JN~Ss)z0pi4}4aY=CV0@aCWUcTV=D^R1j*>}sr z0<2{J_)NbD5Rw34`m}gjC^J*@EK2e7gO0tLZ={EflF*j3!5pzNe|1sS0^8S4cg z+yJhQ;svbX{=^gnYvjpuH;hzEb|1MF2XhJf`h6j@K zc!KRzYr%K&4FQ;SX5MBR;0MPdN`U_z;u?FBlh1qdk#2%@gxtc zV-8om{;YstxRNPzxqVb^M_RUyjBhO!`4m1irK^Zjnb~pPUxrh2a$V_Dc?0aGaX6OU z+J#0lL{x}6Pl6H1F{qGwmE{9;o_IHnec3o#{1!&A+Zc)}uv>(k5Y&dsb)|Jzi5Drv zg&li1$?|k2tdcZB%{cU+WWCfm%BXy?R@5_Dby8CumtXzE07{Y^ie4}Z{g5N6=glf%|ygR9nx~^T~2fWp4Gw0#{V#=`gciK}g*MO4(<%ThV>ST=Ql@z}e9=AR(1w1~4wSxd)uq?`MQ z;|;+4)4pofxve`%%Q{lgJt?#8%DBGI4V}Oye!0-XhfTh>$xX?HM}9_CqkeV&m`FbtixhLK zau2QRP#@5^56IY1$r-XqIoM;lBxO)FgM%@CWWgksOd#_$fdSVO>-BRsVR+F1sIfQ+6tN?{}xT@rb_ zJ)9|WJk2fo0Z{ST+44(j-HWygo3!5qjX9ouBFY?Urs$53O`x!bXS)!nhVHQ_mOmEb zYw51IpNUz);o{pJUDST*=(Paw?OXjjxu5@cYHOIbW|w}#BiCYOC%L*VDby1LLasTF6oIj~dqzj5&& zNCsEJao*_O8H3%Uof6tSVvOxsvgP~!pbs-cs>^d0n`}>wxwH#PieNgBekNiiz#K3R z27jT+f0Vs&orUDPfZ&7K_LuU1-kK)>OsNZSJZQeNAl?6$<~v|E1W|af`qi+ z`h3uBXCdW*$!Up9swTbT@&qQSNPCL&K&7hEp#ypSsnkLUn54l)6izRmPP;+t9(NxF` zyUYdx45;$52_(strGAN+K10}`H3kQ#O6U(;m^E`zG!jN9*BqgCqL9@#ryp2D^2M8{ zQ))zTl297d50$RA@qt4-|jKJ~_Ec`&q zC0O$5P;J4w4x+yrbe90DwRyrMV=Gvg{dR}|%^*N02+#&%!Rui;D{sN60kmD<1x0~Q z3i%=b;H1Ed5dJ@+p3i@CFzPPPD`4;ds`l5&C_i$3WaQd@_3W@>-`zv1fZ}RFb_#=K zy?%7y;2jHj{A)xG*}ehEL#Yz9d3Z!pJOGhZrBFyDie`RhimXa09*ZNC@i!qbH85yZ znL>q(Dj6@&QE97?C6EQ*Mu<`>`(M$>dX-M+%holxH69gF~_@WNbtDWex1v zBFeRj#uBpjLjnbNeO(8Eq+P3|eLu4x4Rq&$%&gj(FeE5&{uA2!_Sr_Unk{mW^jK$$ z&%om7E`rm*UiLz7V*-%pHLL$Q*_$uXe@azBc`B$x1=Xhua#Qet{yUZFKZ!^|f#`xL z^#8NqbN-laFaQ$CSP{Y#B#j5EHw+=?kEvm#J@uSaMIe9Zn$gvQeNVQ8DTwMjBi?J! z2_Td;%9+esv50_I#1K?8Rg^NbkZRh>%34|^k~%DW7lBl&UR;Wa--4_msVG2%BrH0M z*sd-B5UN@o2ZY+V9RO5z-~L@{nrK%D^l+amdh*Kt!j0}hesPO~er$qAr=pAP>8LB>2=Nrw zg*FkC*cc;VzXUa)nr5DV4Q8i6 zP(ibxmjRy*P%>l2NVRv*ScuK}O!ZSQ1NL?cdKr*p4fb;hj#ePO8WhNYO&gf0ehXy4 zwhR=%fSMPO2MyAn1)!KEEM-B=!u`eJ`rk-RKVOQ4xeOCOP{fP?^dK$ulLqZf1ho@h zojd$$`|)cJt!fVLxOjk`C^T+9^PK$WOx89*_Kr}+wOSujw?-$fO7`Bw%>kfDBmx0X zf+DG3Sk=pfC4LY9-ptMa)7ayjPuzM+{RQtt4NqLJBmwcE~5{pp=A(F#D_A zsC*}8h%>%iyqet1E7ZI}zS+lxWp9D?gz)HJq;6*`Ucil;-3H+1@v!O^SBV+B34r#W z|D)HWv>Qi^@8ES&?ww!?<->x!$H%D9EVvIgVY#T)Hd%zuu!v9s&g8zM%5nszjs3Zo z(6k}Fw>883wFh$?^}W|Ql;1Lr#Ba=G2aJ#YErxzi8|KAYKMDV)NH|#b zfK-35>{+5bZ+-+a{C`$H4&YQ_Ua9r7^7&2R2kH7?{R5_?1%CcQ!2|N}LHhmQ4T-{+ zZv}byV8H{@?0*+LAgLaVC$Q`R8TBAxexdT=Ezsr{v{GStKZ_rbGygBFe}2yPnE2;K z%)N}NwBh>6nf>!IB(tt{zZCr_cy-oJFoqZ;k@m+Osaw}2W^IVu zlw;)rK`Mf3CI!?g5172Dj9UO?Vl-*iO?34&_AnJ{lQ~&6zF-#&OSQ4HweHiC1v?s= zon4 zqrzQ#2%c%5onchwA@`=~DX0e@<_x8a10_?7a<=YNhl|oj_nbzn6JiN|UZY17)X?}T z7Mo%ms**JwEsW5e<)=M7jZxxi;Ez^xdW zo1U~Uu+6K{d|1%eaecq%Dfc+_Bh4#&0?%i;oeX#ybZDbpy<6?7#Xv*Yi{QGi(^2C` zRF!-rHt*g901)@f2w~#e>AbwdY~jn)q}6?uk6sT4%}otl{53tV1k@LP3K{$jww%9_uD`jtzm;R8jbp5%V~YKf5YONZE`AZ-A%#n5g4N-| z;BZk0`(S9m!S%r{>o*(>+W=0<7hcZ4|BaXx>lJa3by3?@{GOanuq zsq|Ildo_!`GDEwe*`g&+&6Vi}Dku(4efe@fq@d;Uq{{JSooG=Mi%#%{e+1VID4pGC z+SYu<0e2Vh2cJ88umqc!@(1+;n$!{oVG;FC6XK!w< z%3NE!FHF=bVC@FFihJ5l>_f_;l=4uEpo_{*=59|=$xy&d>`TwMsY<|H?L8z!$UK~u zK|#*dS~*p^$V@Oc_e0*lhruNtjP)*?j(?qd$^T-}WEzUw0f)SEFgsT?kZTkysV0yY qAfBJO{n_t0GyLZ`8_Wmotm>GTz=$cphEDKB8-~F+QukZKW-#2srx%o45X3orhp0)Pcd#$6Rr!BAGXbs*6egJ=eU}jb@7=Z9x zfekyK&A*#>FQCD0d$sDbW~LIPzb|i872}^Rsh1O3vhWux#Zor==8YZAfyE= zQd$BjCC$TQ%1e&t>lHgUNau%ECc% zQ8aSq9CG}ZR!Bmgm zP47m8o-~7gE=vDes6KZ=GVe)u33v1`}rGN2N??| zn6Pk|mPwf=YnfUZn#TE?`skR!qRnitTO^2CqHkJK=3A;?wn}icqVl%F-La;xx6v2A zQ5SRLwv26|q+Nu*T~NB6Q^`%P+x9w5_Lia!-nSi6qa0$&9h^-tZb_JcCXBPLlenH! zew>p`qm!bGvqiK^T9Qjll1rMRYm&5^zMWg3oO`2|XJeTsM%v3u-YeVFiwWyx*X*Th z<(>Gzn@9gvWBe`cW}oXyzAvu()@S=FI{V*l@psS;$gv1exfxjE8kprCSQ`-NofgQ_ z92n*mEQk-r=Lc(thS0@?R2SSSvky!2zt?F_KyVJ-mh#>hIQ?b2k(P@71O%UciEeA}2S8X+8`6%bn6211?@nZSFPw!u~*G-h6W5_x6JL;#Zbh9tt9PMbBsWYk4zpwwe zaqfY2yVvsQ;|FgaVfvFf4W2YDwtLJp-W+@K@ZD3t_0jtVPn(yYhaP@f9((#|y5T&jWw%lL$e%zCi&H z+K~tWWEU(U34Q@&9JB%72C*ed6=g9Tr6j8Y#?s{)anQ(BhXmogK|;hQl1T!+13_(& z`qI4ad_3eJp(;)3czZnq4ZE~~*JSeC$kY{V*vK-J-Py=C(Y~~qV`1sJnQQIVu$gBU zva^|wiNCZ};F9O*cIRqoL#_Ik-lto|@VPqGv7Hqg#=p*QcGj^7zZ2>Z|j-J~hCr9F1h@N6->N} z{;!7Oc7?kH+x9q~!R?K&E;v3EFuCKWrH)MWNKn$i_|crm| zck1?QrQSx6ik}c;nSD=I6NQ>j)>7rZoUG$@#D8w&So!|kEO2lBS&Y41y70DCM>gcX zYeFf@60fcIFGpYQC7+KEc4dB4g$&zUe~>-&dF~kX^~>+C1kx*~`vc6kPY*_f9-V%B zE%){Ga8l>WpQBl;D_8dB%Si4X`=!0{uYO+^_pGcj;kM=OrI)@h5>k^5uAc0s#QpxT zH+0+b>+#1&=VzxszMh{0l;r@aE&-B+6Mw)+2ru>d{bEmJ)pR1qm?n&@uR-c!pAx;Wt88qtRFd6(SPKiisgu zZ0HJ@XuNq#nIXbWu7sj?XhHOR%Y9zh?xc&Ooqxp_sBu%-0p{1d*E+)7>Us3Z^qCfo zgAB?{^;q`_b(u=UNoUtseg;QJ#Jz(s<`?55M zEakw1@$QabsHxB+ZJkaY#*S}#<;*=H45tDZO37Kfo(l7FNXr+4FXL}hOjSBwB0^fwAtm`bTD%ZA> zJB`3VcoIT4LJqq}UOOIV5K(z~l$A}q1in*w3>x+Tw( zbV01j)RZQDdK4g18Sz^uD3=i~D8vG({e_+cM+wxsY$GbiGL)exya~+yg|Cj^C()6d zUKmU?;;cj1!oE}N zW6JBdkCC-I?0ez`sTb!BH98AE_pBGE~aisttEZoN3oWC8Th=bXr?6joVjnc<$R_8zOb%d|ylA6&3 ztuntR1wqlwQ8Fh&Wmq)rESJi1izCj5QjrB2fs(-6seIelf{}0^ldeRuH#5$7bcKZs zIPGpY^HRJ67I?SWZB7vQE$d?G4$~K{v!<(}! z<<6KHiwyv<>t;fmHdnPCZxq1&U2Bs)K2_JMa!%!I7W?M?WYl8NVnF;oPp*H?Q|Ny% za?vQ|@c{P!FoK}ErmNmssg;Z%W77;haLPy}p%L7(KByu9lq|PQlGONLWg*D|!ha%M zUl(4v2SortG}38fdpjfkf z;}4J2{ZO>FN4d3qpqZn&-?>vB!(8y8O>dn>@rCE)M^9p;0U#d6!V-S6EAiD{7t9I} zJ>T-#Mf~^$UO=_94Q6z8KKVVn3glQ=2%^p?(c`jrU8CaIKEAQCEm98UWgV6->#4Q3 z>SySLdzb`lGBt$!o~k8)#Q2{NaJIMmB@2S84I6rDKCU9=>}jJ|%#{v5(JecPerZv3C$e47bh9p1nwps?i zvRR{HQh*vj3Dz7HJ@IoJDB|GudS5tIJ5k1|cTwApdecgJ?3;m0ExjaJl7+J2Eaf;7 zN+=w@&>&5~!X$Fv@OysSp5mh5pTu60b%ZZkCu$rTX=$eRVr=UK}u&ev>%Q*3Edh7QV&XzCCmhXF41GEqTH&yFNslAvS#}$ zUkm_-wJb;_nbl}Yz@gionU4PJU?{pi%frY%uJuY}>|Vx3!mAup*{Q*_x2d2j+0V~Q z#RH55M41~cer5l-0+$|F?)V}sv$i9VM0dTCA^b$MhSWmh6*t+b7N<^@tBwVY$95&v z6%4wTz?I_ysBz}lwN3%3Orfl63O(1=5s49zzcVB- zfOd!UwrDbW91RV!2sGn*0d2q50XpfCw`^Gk@{<5fh?xIE)R}1BAjVlVGg=#&6IvNn z%i0RHJ(I==Qb9etYQh2-geS>#Z@to@1oyJg`8ukV_an%~J=SAl_9`6W$qX-P--9H| zA=nZvcs&KO4S6r|p*c{nnx30#I5k^NG!L_lrapy$b@*jG)I?M9l7KhzTo4VZFHCf* zXBa}vlX;-phR}4r_o<{kOThKkMk!_VG^JHkO020NZcVA_sv2HmDjRspRr7iyxQwjfc+Q7DjOQePINR zfIZJ-z#p^d=9-~j5Ot0`N#2CWm<7UO=~eP-fOpnKBTaf{{)Aj^$z!)oHfF%jKz4~m z3SPDL5YV8{Mg?eHXdvVYg)Ul+r~7O``nEt_vsz3`%g}%Z=gHkL9IeeHhM-xO6!xGy z9wvmKU{N&mt&Tz^LFa-tu4`p-!GWVkk6&2;3`wt>#Ke=U&+P_BMaRAk^H2KmjZr2l zRXvoZTQB_Bmpz#Y!0(}WSG13KBTzjpTO?|D9|%E8z|K&{?(GxmJAMl$nfEJHNhinP z^fVMBAEw*aEqz-ja7WV=*SE*1Wcm^_fsmYrrq8QqIlZZmr8rDTrDr`Jj0>VU1SgZJ zUoM9@w754nP9IHIsDFmAA+Ekir_Z7NMDj=_sqd`wi(f%*Q+(vR9D|}n4)%7763SUx z_#W==;xsJkjTIBypEUOA@)&eZdCDz61Aq>zwr{7cB&tMVwwoFAT$qPcTv!w^Fqj+8 z+qx97_y#aYDOATluKGc{=M680(wD18w~>@v$|BMO&Y`nUmQSvz>TaliWvfJxDOLI{ zwb|SQqd*&lHQI8?CWn_t#7HS!To#us+0nWUdN;`_SP;78o0=~UTZXvD^j3bctaf&B z#CoIOC-)L$UmmxVJF32(YhG}}p8dg5xQ|5hJ{;hS79Oyjs4sooOawj59Y}U(Wr&5E z!NlL7<*CYh$!hDwD17^{Cu{2XGru^2L8G)n1A^vKy}JC1Np7Y7+2NyrXG)FN?A4yB z79 z9>#1&!~sw;3NCmb|Aq;^`lqvf{Vy~m3wCa3(Ib%_FhY?uU-ba+!@@41Ula5PprjZQ z8~B(5B{)#nxl%CdawurRqxb5aV@mi84xkfVq>a0kA=lYbirN6`M?KIG!GhFLuGu&; z%Y8p1xR$<+HiZKf)G-IqM=}XKP#UDTBXERe=DRVr*;I!{*2mOPzbe>*H+km@uiobX zu-`LHY<~MMOzReiCo{rtyfmew18WmJqqUH7og~t9BNSByXe2!fSKis5Qsg`3ce9?j zpV~^MK!O%|Y^G)rY{PD{oNb>qitsM@HSz7$4hcpeFR(KtX7*xid0522M`y~9iTwZ+k+7O8Qan5e1o4&Xc_mF%LNO4S|F- zF^4QaJ5iO~L`ZxP`(SpwFPOv(VDWQIfGFTF036LG%z#R56}M`K#z_EpGHrCowu zqX_m0#J|FhOBw115?}B0uuLUt`OdhA=AQ5xya*^&3MyGZZwY`pua!^ImBxk& zC`iAMIKeut&u@on4=bm)qum%>ST(fX_@s{(aRv;_IqSXguMPaRN4d=>A~2zNAeBzB z%v510LZ;UhSaNt;q5S;OM5J3#27O0XZb!AE4;lP#YyCT^-@6bXO8>8*yqMIHK-Aw! z9fbuzlziIKy0jGYAir5$l8AhT788FLr|f@ zm^$D>S#~dIcv8UtHJc}P+kOPN+xyUQ76gG``##%s^3x2l6?3!2((DHNyH zg&-JbP{M)jQ6mtFRS<{h%4lP2;E0ev7EMl;~xGW*lFk7}r~IJYcs=YY1;%>IEk49M;FoXpm*$1SWP zH>UdNV$?KgJh}sBYQ-+V@wDyddOWH)Br25>I3Icbb|o~bx2`|(p^r)G-cl-+kaRp=J9#M3V1v?k-^G}T@6$|BsOcZUL+kushN*5)>jblD_TvOEVX@uMgvrne&CEp zK3%VpI9Nbi-m7G>Q1SOH^q15&9-adblHv~y^EKgKif9D%**q`vrBF1OEobt;+VGKS z78Z?y>x?7GkUYa|)Em$~uFeyU1kW7bAp>S>uP{gYiWWsqvDBta1no0JAw%AzmPRVR z+dY$PavUGlGEnrVL0ATpIe|W7H?{9#%?`m8H3hnY7}K2V-ECaAx;t90gTktRF1;uM z`(c?qx#V1WO*d_ZP!3eRhO$GGt7;UKJ=g*M4q|kQM2ECsza_{5r9Cb;(>4TFr9y*w zWoOimV#pC%36$_1#4tZ__X#Y5IhcPE5MpVK4PF1^Vm|BSLdXvjlJ1QyyG8bdUgHLC zfXT~eJ!mRPrPr&>Ug%6%(0ZPU1hax+9gLVXJCoPRTMKq)d>WRfBc8d6H}LJ6zi~aX zYx6(4l=>fCntcHt%74H^YKB$TQ;v;`jnPX=PDzSRO-aZ|&diEQ&&|my%qUL1kIyfv zD5)x~DbG!-D9ll2V-rlz5d;8w!L*c)C!KlOs!!V! zZaL1eQZE|{f%8u#FO{*9J4Ei`2682oxP_OxJ^e9Q7#Ny!p)&L0%hj1>D@MJCfFxN6 zsx!%q?79tG8?{!I0s9q{p#d0P9!N}dd_URveW6PKT{APpg5mk>8h|r8HmMBSwVCU< z_xp^qL&#J>|3ApXk&HeE-z6hdK3Fm1Yw zg^_imGq@y^KwI^!9Ts(Co)U2N(|HF9Mr(|FF5Lphl0r`)BT~M>JSMd6Vflaz6vw{EA4 z{ms*%dWm9wv?&0E1K8kRweqplW|I(K(N&QhU&wlxesY?rWkOBe5T{}*qAoCNBx+f2QJiP zxh+f;^d)Y0NQ=oaPy&fn1H$(=4J7oWt$~>yk+*0{geIVV-q+z9bDYI+1)!J^u`oPC zbNFi?h%14-^-`-3h8T_PTGgo)pr%9o4*wZz|8|wK|LH0aC<2KEsR3|$UIyLCGF9*y z(~<6URpnqZ12dF>Bvkyf|GjL;f^pG}0wb^K_O;a*p+sG?J;_7l%hy**5Fb zr%U@D(3U_f0QW8TU;hqSecR$xyuEbQnJ^T821a2TW!UAs0t~*m0OeTbn?n|y2Z{_R zE$L?+2jF(gEfQ+orJ?)Jvt1yREKKykB&%P><%+OzfR#|?^cd+5+5dLy@diLXWa5;g zn~sMDdB!|Wvpp(TPP%OREUO$uBLU-BIwv_p5K?po`ACr{%z#+bZ8D)I&f{Z@;}FM7 z#(yy|&|eT`Uu@CC`89I&r<8pdtag|U zAg#`X^G+thc+`(*gKguOMla@pyRRf6yuSW?R02^0L|O<5SE!RZ?fW)n7TUYov~jn0 zwvAa|`}ME<0}U#>VgSUDq^+-=bzGs}Nh;mWV55q;5G)bnn4btP4Y zqII%>JW0MK%0jbqe#eR`h1rJUGU|V@A^#T}00SW4RRw4A3?%|UuKnm3Qkw-OY@qB> zjw8d2Z?6^kd|J>H?j&eY@Og*k)MX42C3UG@(-G^kxTd2?$sZSDC!vBSDevrWE+`g= z-t72UaDf-%tJ{|NzbQTIJ%G#$N#jh;H( zAi{uAG*H)4*|fc z#Xtek?abThZAT^U?k&KekHh-aV zx%s`#MqaB3RE0N3uU+u(PNLJpzfSwgM8~S$BnAM1s1unu7ps!QeY@Q#%Z1B50oYZL z)?j;i74XpZUinl_8Z%4XNd(EW=` zk94RQ)kwvqKt|o5P$PD}8;hL{d2!CGmd(*!WKwxI{wu&BpS2&qub;Dg_&Fo7(EmaA zTCLIJK%W?=_oKDr3*{4M>bB4~c9xYp?>#)v(bU#IwS3x6jiQH)<|#ENEDWlSgkajR z_pU|&LimNK*rVPjcK5P!dsA=yJFz03k|DSd#0>jBjH3x_e@C4fmg>@Qnsg9Lb*%W} z`@h8RpAtB0p^LSTpGD#6>O4jqU4wD{JV|G-iGVgaQnCc)BbtX*yUro}AuW2db6rac zItNe*iPqmpDrO-g0O|o6uV^;3H0jbqK3hBGK%lr3zt?2_TI5{YbBPGuyi_&>VorGKtfbvoz<3anaGgteOmMdK(YAQKCdv~8ZKbK%nx&a zEl6g^K)4<`@Ug@P4dm_PY6`rTR;^rr#W>#kFX#7Z>&t78wdRO=O+rV$?`zaXiqpac zf<}lmz<+M-6IcjDV15csDv%>&6_MUW&?0>pyPzF87$lC_U3+W}R7jNH?%c}KS=3Z) zNWN|JwUOa=S9YOGwkq9H@pP}o`0p$I)T)&Jx*UQyvwlW*s08pw7CNOtXZqe>`#)Fp z?~1?wf3E63KA&H?D(GSzZ8u`V1B&`bqNug<4knREk>480T<<5-Q%~k#HFNF-coZ8A zPf)yiS;~gw3}#4^2f?!4#EIB^_vyHCTO>fd zOKdG-1z6BvT5-D|rh4ykl{kmr7Ih_SeT^c#S@F zU-+uVCE`)k14v|zQMq*3)~t~t4SGO4ZS&NlW<`4_|@PeVcy~VWx zo;Pc~C||MGkxox8F=-?0nw@X{qiOv%y@jJH3+eU)zj&9ty5hzU<7UOE+#II9t=}g| zz6aMxFh`BWPXqBo+fAaM!X!o(2dPR)#;^*nJ`zQo&b!9(>Xxxd54{JP{W{HQpxse4 z#!(fdlpCyWLItIveP_mwv<@z>=iD*sR0zBo1lW^9VBb!~m)8#JvR5OX3Efkze7KL?Hh>G-V+oU0<4nR=y)=Y;R&{KGIF6kMJF&~M;q16pf%-O8W zM-yss9wy%s^rr=+lkzXWG9jp&PG4HFx-&0Vs~!lh$#P*9BRBIs6d>oqsObI5w?w(! zsJoLFFK1h!a#QoN)~H_mCA%_9*2}jaTsxm{Fl=ACF7hA&j3!+8s?T;G1P&&@dq_2S zc~3uww{fz8aJSJ@YxuH@Xlwu0GXj*t<$=$W1<7}}Ftfbu%^d^U?AM!>`KS7y?KNL$ zZ}P|sUzI|@@xoVKx{6ahn7;5;&#H^Byig`k?Drm$E4B2H9H#8|6E1iA_5V@7)tXC3 zV|XygL0ahlg8hzY8;+a)*8YfajMcXup1Qp@FA=HmZ)4KTOoz{@-!@6zlzZBJIAQ!< zNorE_H-FF@Eun~+DMpdc()xy~VluN7?Mg?p)=~_?^LAG{g5P4;kAfFmNbMfK*3IWU zUhujz9`erSCDo7FfQdgxi$A`+>sU6cBY)@nT>k6$)0zL!(O=mKx$wsR&mH?qN5BOg z{l^U8)lY@DmTTci8O4v}{vDL;I|@vzRO6{N;`b!lFnVdi+>NITd_YXG{B2(hmKJMt zpPfTGN1@%xAO>zEXlOILZCXZ|BQBuWo`BSggVG-6f?yI(Wqxq^dI){1mq(Pc444ood-Ws3SNZo5KyOClpmJEe{S?T*#@&Kg<}u9G)f+E@+`k&}Bb?T9 zCnP{I;LdVx)kksbM7yK?$AA{IB>Q#-0q^gM_x zU?+R{<1o<7|AP3_&uZZ{<%r_$Yb5`SxeBxrZv4SdIcP2!*QP`M$ZFMG%G>?$Ipe*%4 zz7iXKqD~Gy0~VDP_IXbu^3-oOGM z77KGFZtjLa1z#01-$NnlT}rNcONNg^?*?FE7?4^+P_`pL(CGz6uPxedW4ch8A$3M) z{w9i5w$AJ`4qI^b&aZu&2bsr0Gayg1xEn(GzPisbWMFwz^X=tF0>-`owtWA6zXe|i z3vzznVL%WR1emZkOpgee`iXPwK{g%(OjciphWcD5!Lm?9v9Y~^!!0i08pplk&Tzu! zvxWO%_16PNUS%$!m7Hgi=!$1zRrX~*;V5N2+=*y0^G^&lr1T_Lu7_*x!^O0(secf; z5R0s^f1AgDyvG05>E}P8od17bBVSCmupDYZK5Ih*4?q)x^bYt8aU7n<^7v7!ROW)j z+(Rw5+G`~1pRV)4t~k87JO6qkXc6M65`MDR6`22(tEqwi!L`6f3p4T1lSU&C)_Jcb zD3Ei@KqT5{xN-ekjWZu!Q~KVf+rsxmhB6se5O6{wT2R~9H}7?nmUm?zlM+g0V0rqs zZT)qokkkviX)ljAx$N9G^S?@`_%!If-Oy`7kl+x|sT&=~QZdEa4PY8BCIFIq5g

        A32C{eIDl9ifvZ!9aI;J7CC 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 F*gA<_&O-`yJcK$!poo@08 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/py-class-def.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/py-class-def.gif new file mode 100644 index 0000000000000000000000000000000000000000..9df3fded7013438e40c9ceee5212d130cc7ed09b GIT binary patch literal 88862 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/py-for-inline-cmpl.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/py-for-inline-cmpl.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb18fbbd9e54b663461e908ae9f1ead80c68e289 GIT binary patch literal 84005 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/py-optional-ph.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/py-optional-ph.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0418b034c6eea406298cc7158119dae98884ee5 GIT binary patch literal 72018 zcmbTdS5#A7`0l&X6GBPoozOdkDxJ_fhTbuBkRnY)MM&tKP(=l#3kpb;B4Vi0o2XO; zL;*hwDk>_%@%zsHpEJ%GW8dsttc#2_*Tr0OjoCcZKS;`rRmy=)id#rZ5s;2z zmoZV5F=>_&7LhkmmWQg!TWiU~ZRIsR zYp9F}S7sSkmSRwihMx(MJmbQq7A2-0B&%+ssc|M;Ln>5LMO-V=SW6V7lPRj}p{{FX zsOuP@YaXJD&D7=E*HvO7TreRhsq49D>ihfYGjSPQaWp_P8D=XR#qb(un49PrnwqjOz7_D)NZF9T8m@ z8GYeWG`2X}#O%^&=cPc$D-ScSIC)*IAjLIZhzq+FXMOhCh}X4RoA{gO5;}bna_z~Z z=g5y#DQo8_qt_{3y%dq~#Dt7Q?#QIvyp+iF)XKUve$R}Wl#Fz0M(4wfT$fDi*i6Zh zO!3+*&)&R7z5I{23KAO&LLU|ghZolL7Csm+5vSZxj=tG+tE`}{Ed28A_KM1zF4f-? zYg!-FT%^|Cy>jyJ>#+epNO#=Qclh&{CDrYId#T)5Fe^t6jfuKIpyNO=|CH zsp{=*delAesBD0Cw`;I(V6fxSP#<;p+<#{u5IjX&8`;|#=n;(+*H-TPx5dEnY?E0 zwG)LBc6Z$;+UusS<9#N}%sT34ZmC7RTc7B-Gk2SiM8{{|*|1P!S}5f)+1dE?4zb3( z+`Q}VvwO}R=Qk$1?!CBA8qVaic+j-c5r~EpG)S`K2WpTW737Z(>z%P#jDg{2E<6E2 zj%VqQueWaAB7YXs$&MsL5Z974mZ^fYok|83mso_n0DC$6=;4nG3-iI=dv=rPFKt(0LxZ)3 zK%PYkoyh6q*x#9$O@_sLOr*^*Ne?rq8u3%arz?popoR;80+i3IMnumw1+e&$v^0 z4cop<%06RU@+#-YpOl*Hus`FN%xfR&gcB|Z-XQ5ogRc_{k0i}*8-%Kd8_JIQE+!J9 zuoDj8D*D$(;AmE1I?!ty)>33ukvAfpNu6dSJ1ns!;w{K+J1ybDDMXL|%=Lh|;2KiN zGPRr4j$TrKr#Iks0(=sa5YmSVh?cQgeS6D&V>4YYp@~4PFNwUEEZrAP0*enUW4#O+ z2Tth>l>tTtIEK;}6WJb_Pf}ZWdmU0Eq(*Q3ona;)JPqZVAG~|A@DMY4FCWCS9C)Gk+b^DC zi2Yu^sYC+*7Xf_nJO-NuH^q?&Z(iEe5`<{^<6|k~dPyM1&gv`-ysWK_f42k}B!HDV z9l=f_iDnnf=zVEy5*Fmq2}R7*ORmv=W(r$3?Z@*O^-pE#{Mzy*pT{0u4guI~MJPrB z5>JRGLbisR>=?Hn?4z#1dJ>o$qetzsfG9#cdO=0Faht&Q<6Gpk5{Io4Fp_ynNO{5> zX!&&nOquz-3}D>9J#)FR@ohu#smweo{77(Q5`t|qVK(KKQ(fWItN8IU_$NcpW{RQS z(K_qX^9p+1d_u5;Xs$H{8FJZ-63nT5Mx1Pc(QG_emo=`2Ni8- zp!384haI=8mlq=v15T2T*Bcr>XfF+_*eC?wv}6 z1+6=UW_;~^l)&*0#|T6$oHECZWVZ%oAy+SO7E1uZ(c{Bj{nh@Q;Uj1twPEg;c!0Cj z8`XwPvZGI8W#3$Ly+W3<&TmWB;eAEjF&%{U`DJ-D4RZ{aiuI)fnY6%HziSW3%Ipw! zfqABcqrEI$k|1l}yuoQEh+f?t0VKTNVnSrl)Dy3o zZRY2~$#2^jIuen{(b8HaO_!hYOmZXyzFdtb>1Eo@OH!U3CK0Y|B0qs@SdmL9e1~a- z4?$-+T!E*zr6Tl%d*91mY^{7#)L;6ZBDslDwM`blsOYcNqw}8gkr;C6Y)8fY1`u3daQFxb zg+yRdE*=v2Wm9(&kwN$4kqdVJ^Vu5fO zubpki05v1qpZjOkn?xH(e*$a9&tp2OyDEN6@9HSLn~zo?{C%fm0vgoPV(z$1M4)KOhdyh+c`xF>6sXW^B9p0od+HixTe2dyvxioe0_>pv}AQhK-1MfBb?z=vR4<~`UvriLMOL2^sxJ8JsbPKhzq(-BJ!Y)n; zz8t{Q{akP1?fbo9UWq!F>?JLUrogOA&9qKY&0iSHED$@F9{;g2l#km=;SVewPQ5Y$ zDXm*!M2_6Ms;@wC$|iL<`U0y~YpIWdC72+D5pJ2!89b80sNIbW^59&yg$KmEu^Y5^Vo7X3)O>0W$ZG2yMg2B?rrLq%NK$kZELzNyR z4if`K>^CM;E%Ugr$cAJgeBHPgT}0_Eme1qzp zkeFmgdV~A7jXxICV)a<|_Lr~_{XeS8LCgF*S7uMD;D^vGUOWw(rRc5m>E&U1Q_5^D zF%EXfI@UYp<+o^@?sVGcU_!p|LQMK^@8v2-W*q5*|fGIj%u&u zfz?ra6wU%XnTN>9S=)V%)?q?7yF2t1dCBnohT@ThBAW{v6zKWUnfUTl=P1+s=U6%C z2u&&ByYMH~(~nofVfR#PzXc00u~}XNAcS=!u7*Vu=6$Jxg{I94joqM539aI$V!pku~jYu z3mS?;!8Cz&u}l0f01Of2_r(r`JL5c${xynMA@WGo#SIiBf@pvX3~fvUys9lIUgSHe z5^v?1;#1M``dD0674_B*1;%+-KaiZUmG|O>tXJY2HK^oRaa{ z&S`q-1_XBFGn+Ay1VG;~ooC3k>YLZvnKO|`;?YM*g`9xka9YOKw99I8000p|re%Ci z^4muH5J8D-7f}bY9d8ry$P`DCw}w&b?eqXm(@dSfG=0Q?uHrdbBM_h;i za}r=TE~0D5X;DeqBjIRQf*L2DG{q@~K1wz-#WK`VUwDy=F(B4}_;E04M$Fn(g5F&M z-0%e%K=Qs%M2_h3#vhpL86xV4C`+gpS|PE;#1U*pg=bKK2@Szhh!nuai5o`w8y1KL z=|wi=XGwsCgi*P8D(tcYGQ(g}0s#RFj0v6Bbt$+KULcntuyLnIMcvA>xG;f6W&{;} zP{Ra&hBS%NU7M%d6aqCm=N;a0<9{CGz*Qvi^OBocq2=YY=^pAFXQtKCbz75?EoU~! zJjA^ok?uri8xC8D5@!wvd+%xwlTn@owW1+ZHx<>r&Hls|eI*0rXKM}#7bS1A2aqIq zk`=CP2CQr&bXq}74aLl@cnJwik~sZ+QY^-WoQ){8kSHBMrL4p0EhKN&8rm36~}_7(QCrFjJ^D+OZg(gJf=0@ zy#ZumhIkZt3&2!#zJO$a=@aznEQ=}@&C00}7#=cIgdp?cYkAMUcuHF4TgeiJw(_!! z3cY9)yODV{PB(0#Bpd}ay6Az)S??q(2Ma0_yl?mR-Wr;q&Nr}I9>v@XkQb`F!E&?M zV2ho}7r{eqWMLQd`UT8e;+> z=tw|Z2hdLT0SJ|d$jV%9ET^f4RnBPvK)^ujg3kM0f$OC39;RN_2$HwjiNAh$2fPJI z!$8v;?#OQDR|@%gjj0y(iF-nTif`I3Wc9LlcgRu=49wt&a4#mo`hvT6FE~`(&~SC> zY%qVf7Zif0nXtUoqRirTkd(XsgRwa%?rN{?kqr=Wn83Y63{JbrjE&aa7^*jc#V5 zNeY-c=K~J-jZR*UEMf2);P*Yo{BD6yh-4ZtnQ+H_RMHA^UZTc2%j9rPl zL7jA7)pSc8ePWnko=(eRHNmJ>lr(~4r`>C|ntWo{OPTU-bmmT^U`LaXZg_=#Paa$y&In{TiC5hUtqSn zf7M3GFgVDB-rE)^JGBt~;r#H<^M_r(A9ggR@vllpxM7y3`g%t|i_*Z-T3PfLvFMlq z8k!ibYCt!ps)Bs%Kdzd@*(r3rGM+Sl<9U8=MA7JGdiAMDW}7Swj_I9hC8}&A^?_5l%A4I|21Ki{v51VL}^(ZS{Ro)S$D8vJRD7w8FjavJgYTv&0Wi7{r>%9cK_@# zpJNO&Mk&7#8V;UF4w>?8;(S{oyb}au^(QMX&U7uMMY0SC>T#}HVk7MY;e+xb1m=&v zB{!62S0@x#-p^zR&tc8yI3R#0%#$Wr@>Q=wC$VX@1Q0edbQ?N@8!n-^WA@$WkO~~2 z=1!^4v!#&>oaLgz0$;`$L{ewk@96KHY4>nQ1Rs@`b1)OAra4dCo+1?vsy!2N|B42va3qhgl!78 zI6prp=x?_1y?kpUBI~mxmAl1zf{~~YQLq**i4b)unD@|!$>y??gv0`)#7^C>78k@b zao>zt1_E{9+6ce^d*T42{7QSG# z(b+B384xkEQ`Y^~q3v>0_qUSyDGT9NQUlhDz}ZB&&uSr36ty`c$JMFFr%Wd+iIEgJ z%xN)l-!T#u8I)MMsjq9`&1z!mXY3YlXcqm=MYlU|=_}39$TGnwShw5rwrQ4#ahhbU zcCzt#sDYxPfvO0dW$|RpX=Y5a$(3aDYfzy^Ut^I_?8Q&!X@}ofE%fA@gdzlt3hm9( z)6ATv&8j%ejW3u(uswhB?Q_Jpj2HmQD1sybWR|LA2I=S2 zExboO^f}hi^14LIu%jrJvvQM`1hjTasfKX2x;@Iwkpjqc;$Ae8AMZ2$#2Qa}o|lV1 zrA&ZKb_KaO2Z(`$H?07PNf*q;dk~@PWJx7qNkKl{u#I;Sg!wG4GjzNzUwkKvWewQ1 zO2fT|3q&tYaM9{G@S3t9kxe0)7v)NKGC%W9&tK=wllPf*Pj?7*N+PA5UjkPS)%B!g z@x>o62q$TDhZP?`^&+fghYJ|9E|dQWUT*W7tM}j`oI-F$??O&kcG>X?ih;4UvS74W zF->Y>KT5J_-FCrfLSZ>TP)1Vc*V3Y20GVxYl>9T_`%$R?IKY%qx>#Z|X%%9L)RBR} z%TtPxfi$fi;?IXtUgu@kfP?YBWz3+p=EoCUmdIzi!Nfvu!=U{}Z}SBRN(Rc4LI(Zn zffepXONtgbH7K?}1GCIIiq~q|bBJD^nWG(SYzDg6+iTes65;Pt~c<1II`VN}nWB zJFhRG8;LdEtL?B!+I4KC2Use2>fi_5+^6^ZGod0ZQc8vWQ%oueAssqum)GwD2XGPc*3$y>&pu9+hMs@0 zT=dJ8P~^_lk8HVb-+$C}GXGK|DrM@8A`8fIHFG*gCX;&veq`3Llg6klWNGOT3TQf2 zvR0H|f6JzMg&WrbdI1i9z!@m8G&-m*dnFlw@9n)Yh&|J>plC1#-OdER+e={;)yH_l z5)VUj+*fen`^&!98E}-SrykuNHt|AK9L{X<&1N#k%TF%qyyVSn*T208u=qtiP* zCXLNQWX0N#vU+V)Y}%9SP?FSe?-U3qzs&#DZ%j4oLcKQ-_utczbGMhE@)eA#a zc23`7S;3@t-qox?#bYQf^L$$GbJ2oB2uP&~VT9^;qGR*e)3G`kVwgf+r5L^`GY$CkwlBiOEwQ zX%0=9tBEOZhcZwBB-V;KrssvbGE_=1{VC4dIg&)n_cm?RtE8g_JftPX{$P#`LdgXe zd9dv1(F?-&u9ceDro>tzpc=xgW|3;h9hVKcOVE7UVYH1l#huAron+oiH#YF7UmgYN z(aR=Rp*`aM2}tdMNiM!V<@jqb1Qmoszcr;jx_vl$0iXf?#%*9aS4`3?*IREwgtb}3 zFe(0;?!T{ur_{|GlVj#ROxwE(Ae^}K#(2W@SYIs`LrdK=m}xWrWh%EAV;Vwh3*7zU z(Wecjhz`p2w;D=@8#&fF!SA^N-qyzpMPQbi1(+CJ6)fKlp+-~be*Z;qrFl~4reW9ekFX~5MLK`;XK z>iP4Xt|HOMdtNu$dx-V5k`Lq_^#xcY)v!M&*!p0C_%5qx z2=52!W>#`Pr8B(VuMBY9^(*l@u0PKk4)uf{6ghO_pv?yX6@US7ND`Y#d>NDMXmL%YKF#WO2j&q-N(ARAFdAI7DHu|DFysY(EEis4oH{OH< zB!xS>HW#-w`fZ(uY&s=w#Ykt=y(4ISNqUuD&D8Cl35EXiY$C78CV%?NXu~Z zO$;0PToD>dmG6W?t_7y=nDT0zf}Ls7i{X|U^yGhR3Mu&;YraWSVpq+)Ver#% zG9*2!Xui4w#*LTd!>rJ7bA=u?AY)5Y8*mcqc}{cx_QLLVkO-B~Q(i<%O(^qA;qF!X z38p1Lv`DJwgv7V8DfG{Ox&M(JVFHium0n-pQMorc<6Oa?{=}l`(=4mvhS53u5B;wV z?>RkvAZY#eeJe<5ecM3hogSZ@O}>WtAef&EWJ$^|h5~{v)=f}`kA<)FG#AlOHA-V< ze%54BpKhP&NLEa2#)?nh{ z3icq~jT@XLvt#pW>s>d0?K};XjAK;3vK&Hv#OybB)lGIbC=O`-==2GORKw*S54}cf z&NtWWtzNu;uNWucDv% zytz+TCWXc$N2jZA-oN|t)0PYQ>@5z(OvNQVXJ}=0EWT|iHN7*S`XK3YI2Q%%2<5CH zwF(ZeMRPlu(p5#+J-rPPi-}-5dqyr0w!wHw$gj9W^vRX}mmjI#zBZ5KRM-%QE+0xm-Ws0gfi;oEEA8@O8Y`EmDvD*9S(+jwPI6GFp0}dD0 zbK=X__4mPB=;RRITXWF(!{jsC!YKcV^_w26LGmd(&>>*|bR_3N6LI649OAXt*3tdE zKVMMXe_q<%)@YD{Z>Mqn;Uql260UmKWn)3_&1i`>d`J4j*Y`Y?ZvwzW zZSJW@UoVsYxDB!|W&W`!EXW#?v@a^W`yf8@`t~gbk;9?W)h#Z5-+ZAZ)Kxn2aghFP z7Y>A}K@TTW!(CNL`oY4!Hq|ARXxtztYdY76?p{as2`9b7uiNU`54n{I79vQ)w3>~}iH7Nnmf=kGoD?P6-}V87?TDh$qsBl>G^9a2Et3@i zqchcs(!iMic4xMorn)&aUMU?)PBNt3ZIe>1d?-jE8@bqzx%L~?lPMY!$$|T|q$Y^w zVxsn9(L=BlglOa#ZIrMzcG2DV{Z)prL*sEgptd>cdkEnU2V~}x-q{$b(;kLd)`G&H z_$HfBdlC&>BN$VRA1 zli^fNNIt%|iNDI6KT5dcxUnq+TW&_?Q7g6#q!hY02>eD`m`{NvExMIyk7UfB#95AK zTei91Qw~r02mwn0B@W|>#3IW%Wg6u7qt@f;uD(R+hNSb9W^=kGH+|e_T^T+?xiX~z?8!+;O`n$rj zuX$$|b~4{CS+9@GTwCFI8`694cxLOJb)*8BPJ?-ibuMw)+PTg8)I4XHl(`*T{VHAT zM+n2$PKNhT>pS$;Hh=r5zUWWcR?Ep6P%9!-g$Re;h0+pa3y zPsy^*na$3pSw{BxgMeRa+SU2AYYnNAvC9eHo@YFAF4T4@dSi2+nq-NC#T+?@r7Wk* zt`s%9++J^vt0d<~|m>9-hL)pq7^MCN0l{GLo}2aM68c zW8I<7>FPCjI1O%0aKAm{KCA7q=Z!V)bqtW7{IpCu;>!bbBN9UuD?uie9(N~Y(S6|N8K*!h6+Ska_ z*Er1AB;MCF*VnAV*Sy8oV!+pO*4OH#uk}aYvnRepMn4;VKU+CJI~_lJYd;51KgTdX zr+7c-TtAlzKi3vNw*f!*SwD}Lex4uw&Yk#?82!EY{k`S@Bj!v$Eext)p{AEXd;>Ei2#`)jZ?{-*Ay!_oXsd42Az)p znNk^W$Uy3r9vR@0!D%%{><|i-`BwXHJlzsDjS|szD}k7_22dpqL-s<-)MI{qk+rMO z6HwE!C|B#~&b$5Mio?$wi{gvYkE37T?Hi8C{S#~U8HckTrE<}R6(WUXZ`?%E;ElFM|x{p!esg&jtew2S~n)W{r<*= z&)Iw)O;5Vrfn(B83QiFISCaluWRBRVT;Tr}%Kp0$@^|6i?)HBt^AGBfqY?)sAeb24k+?1W zR7QdS(uzh245~r@rWH+cs4;5T{aRnMd`J7YsN#k%LF5w!yAyq(VuS zJw&o_M2u*nC;4w$aj~Y|(!Biq@HtSm-ruz1FXmnSTh3VjRw98kayvi({ATj`?S;H> zUHzNpXWmSDzA-fkeEpT}4Rm zM=+fv>yc)>0-20hZcBSq@rMHRv+?+zN=WD={b&VE2H;<{gP@>o0cwD5E9J^h4Afua zNlQh-rDf-WBp=THg>jCw#`%7(dC7yl!zp7QrDgvrtE7T(J7FlAfoH zqbmN`dwov(_@IVSu%Ce-;G^rXLv?ygsjs0+G6WkVo>I=(q;iKPLQQx*9ht$bA&%u# zu%6jdi!*u>wHYVlf@qOTfmKkY(rt3Uzn{!}8cl3Uu6(Kf$?2P;^PPt4s4((c}Ho@P%7I8Etm=lGn? z{&;(ah}Z|hpux??+Q!^5)u%Jh-M%g`L&i*6f=DPj&4Cq?-DRY&Mp4e?>} zIZU!VYD(5>ANEd#>lO9yB^kTehD4ps`rY7jp@!=yDpBg|d!Jd}6OmS95zz0_N?oLI z;^nuXvjtDkc>2X~nq{Y$Ys(#Z zi@%WColggshtF!i?u?q#`HcIDFxNnKk{K62obT#@&a{pzxCt2OtUPJVw>+~{TVSrV zT04|XSTc()gYU{*>(`XoR`M@NT{F>H9L&XY4Fj|Iip6(T{n40e!0#ya)pkVgzGQCv z$=|AOlSqie>${yC(MGkp+sdQEn6EAyOmerujg-Ok1ky51;tgVhuaa=zO`m~?OTB)r zN~VitnQ~f7gD+SS=vdA>3)`0J8+(|>o=_=UM|y;+ULW4?07i0BK{>=%pA7^x;Wt<8 zf&`8^f&;<#`Sr_N+w!oMxa8-yf>fixq!7Av0vr2a@~~EZ&dEGb`Vx-n`vBnq;|cis z>x}M%>d>ERoAPDXb0eIwJTA3Hp!f);INusNRBVd2(B-nRpTkT)|9Ro{B?<$FZf-j^S@_4JYit^F~gd~I#$(y~2s2!-$bP@te?0Z2GJnKXpnS|m2_QM7S zc1{|6EJ`T>^NIf(Q2e!jIrmC~4^O^ZDxWf#4%ME-A&gDusZ9h_;^*Q|$Tacg7pG9l zH0fIOVH)4W0{|LmZq9XxfY3Vg{7iRIYs)68f8#}Rp7R1%BuqrG4NRBlDXg~w%=h(>k2&XNl z>b%@fcIP9DShVk&i$#`k1?Dg}*a)mZg_gs3h1uc`USEI_u@Qk^~m zV+TIQ!Z(19R3GrY9uqAj7SiQt!1T)brsnd(ZT7)KHOBc7Eg`O3=u@mYSnC;TNWz{h zB%yzUnR5h9nHLt~B>`Y6U?)z~Z15EQ+Z8`A+~nG48mEW*E(rv<4hai@_BD}g!P?U{ zj@L$fxNZ`q-AsPc_f!<|jWyhBIe!s&b zQQ2m9iT53bw9h<2ys|@eao2Qw8#jg~Rxu3c-KRowG*eJZd<4ST(Q}w9Pl^3he zQ~NHp985dV)fPzqeuo7A{9w!yzt40AUKF227I<+)*6Wm1J{^39cS{mz%Cu3`zgtuK zA*DRu3o5fXjB7C#?J3Rm8{eL9r;YNqFpr*V73Os_-6MFu7v3L<9DCf=7Vfny%=a7O zqay_7CtV36sz z{6B3V)#DNy2ErhM^UwJUW4|W+>$+TrvGmvbAY6A(ZBsvwDU7-Q^qJBee>wG{hgx#< ztX0DqBshDWZl5=pZV447m0Kuq=H7=@YH^4vE08wz;32);NE5njF!%h?PkyrX4>(|= z+&Vd^j10_x?6jg?IQ2|49X7b%lf~nIe1G*KyK1lGAT2$J5h!7C=9jBSK4VxH80l)E zz_x)qnX|CS<>AT7k(~?K-TgvyCTdcGPEt|^TzrOO+}rz1blEPz^q2Nr|JJkZX19W$ z5GQnQRmmuqov?(KAQOLLcWZ;Mg3fMw>x^NQpb>%tMK@LApI`n3QL9G`C^7_u^W19rsE#U+1laBE+z zt^HtU`twe4)9IqLx*4y2;()mFPclQN&^gEgw0BYDhha#Nsw&OfSxNy79@B9X)@{2) zx?p@YGRAhll6j^^`3PVXXJeG#jNKvwk4c`%2VTs@5I7Mv+rji3N49vuY_ncmkY3&zOD zMUdqAw3&JOi6N*jTy$<*w&au+&%BA4!=a}aVIRQKJ$Sg^0euM(QcV7P1tKwW4meOP zEkl~9eh0~TKTFve@$jcrp0?L;Fz{?sm$QfrI4NojB^{ms~#(aYR9>VGOETt zq)NSC5){_skQ$885W*M*U@KpQAXQ?S^X(vHVMRd!uub+s8kR_auR06&q+|Govvgxr zl=X#J^+YCmux8aFV%VG&WZtj6^K2C2-~w|8h}uPQZ(0aSRb&m=Vtc3%^m0!|t&PfF z#rt&}I~&V&w4C?c2DABw&qfH~UttD?^Wz2ivr;_XVnrEn0+J{Jt^>Z$dYD7Kf^QN0 z-v{#{dVCDg6Sz+exfy~Wn?PPv8~bl(EVFt(&MWUnAlpwhQG=gc>Ju!QD=a`O|7Wox zD@p8^z#=wvwiv-2r=P_YUd1_8EP?r1q-d-(y273S={+ znAw$1BuRKG5e6)Wn|9PQ05GY6kQ+92f5(Q5s^25M8YU~`ls?j9l)PqcVk6$gWwiOt z-*cv@j#I0kqxWPA+kG<+_U$s%FMXMwe9-&^IAPW*5Jhv=l@la={T10B@H8f7?+V`7~{M;|%9 zNJk@O}oP1a$dGDLkXT$n{6Eb90G3x01Ekp41Uztk( zuT16oD^rvHlc|^YRWa@;YGO84yy*+Q>Xc;!0m9J9I-D@qnU3aSI08-Z7HD-?GO9tp z(#!E9D{Z*Op*`86kF)_G2DLN9q~pNX&11~#!3x0dwZ1Nk`hD<)9J8h_XoJX7emYa? z^Th@WC8wMDpJ`m)T()MSCl0FrlBt>2ntf9^!&(Hx(pNZd8%)7xvwavff6d>?)|soa zA?yBCm3hX$8w`B)0AGNHx;x#Grw#+pyM+a(zzCurjtcY0tqvXF>ua*7z@X5R?8}zT zA>Zqb6*q{5=2A0(g>)#zmt{ol+`Nb6mYVEGuHHw1Sf&gB}?WnNKWe;dw_(ae>0zAq^5z>UXD=4Otjn_*r zZA5matA&U;Q8xw||p_$)LfWTa0ql^~Pq<9gF3`DimDR%lMrRt-mh)!J&t-?0AqI z^}dE11EzgC!sf!VwLJPtI%?9sq9?GiF{kjiL0Istlv@s zq(n`@UCdqRJ0W-C&Ej|fB&f}P1ZvI{sK=&bGp?i%fisrc1l9D=Le!{nF21ynU;Z|M zoT*`6?@8Y=Yw85s)j!adW6~&jQmD3_DKK!=;bD^rd}-{y|CNc zMI!NJucqln-egd5o{>Rgl5dWU;8x6h*-dN5N>l5wj;@B)$CVA>OV=6u)jpUX0Z%>- zeNMcvB+QFEO3|s^9qfHW1B%1BIymdZVfG?)`BRHvINomd8LK(uC`pl~kUPNGK+x5m zq8B@q*4e=!&N}ib0j78ZhQ*n-4vH!u&Uf1U){WcOf;PHMpPbjS*7=oU7r* zgj7*FTpFK)9=I0&fex4#1U`K$HjGk30``^J5u_x{jq)HXfyVo5^diOVI8#!v5Z2^l zy(q?+l81lGJY$HG1Wa>uZPjnQ%QOtt;37c!rf&BTDD+(B=Bxhu*N^9)3bDDgcp3Wf z)w1pm@Ce>FJw%J%-V}dWpHIK2i0Awni2$$|vabjWd7M>5pGf;!$2Nqx_8eG&cqKg-uANsfPqBK~7w z?7wD|*Ix#v{*M_2;xug~=}~}V$wLk@`7unh%rII%-+P1)eT+r6w*IftS=1s)zd!)e zkX+ebGjSb-h@mIaZs%mGMXeq5=|JT&Pi*pbp_&7#vM!_p-xJgi=C_2~U z(b~sWmq~>p8NGRam{v%3RP)+viL(WK++QgAem@R3TAt+H*3f^Hzyx)t9+>52XV{&_ z@iLS5zP!?|kndgciw&Mc#k8i2TdNwEwucrr>}f{eQSf3#J>TX6Q2MB>n%mn61l?d3%;? zobZ>6L+awL;NF8ICOM|jgBk68Vqhifhb22JM$V=o>x<7m3{OF}GP(hPPiE2bOzidq zf`kDg11dIZ+Y5DH-Z-QIY-Kfbij&iJ9y%+Qf_9j}=^Bjg@6G>*kVk(B`Mk;o0RHt| zZoMNmVobR3rwx-@ze|q&Fs2=bzJ0(RALhAx7+8~8iol(eg` z2sba~o`^QEl4?}0v68Zsuy4=<(^n3vmwtSmr}^zDX-*L`QT0yeXKjbreYl#>oKDDd z11a5od?bPERWkRS`j7Wd@AiD<0-oGFLavh$kYsY$J&1N&&P7!KWBIoPrBXafrsqR^ z&5fwEd zp-BrJ6zNSwr6@%#^j;N|riP~A2?$n1ggdC`-sj%exStpIyJw8+6J%s%WzBUQ^Ec;T zg6+1>mEyJ)=zc$KJ5aVuH!X3$^RMl@RMqT)KyMysPElpEG?*1WLJl4VhIv=1vRV8} z*L?e@V&#wofbad`O~lcx>=5OFi&?~bin}d}P)R$UrI^(zp#JP{!R+%a!_Doxx4+3z zR;G*r_}Gw}Oh7Vsnk2+NY+d^co@mAdc_s3i$==&+;M6p&l-1W)yqRzT4X=JaYpCgy z?Q@V0+(lKm)x@ZFFG)cC9=&R~r7CM}n58DEd;GZe)OgoX>br{|@gEOX-z8u476uF0(s7f=nWF8y*jCynBSLM}Qmc#IcUsu# zcVZq9ObC2mY-qXA)_7W^0knfF{^<@2vzdguP`7T^&Fi5+?2hRrC=33k`!u7rW2HpmKl9I zxH*|;h)!13%3#EzA>-imP1-K`c#t=qwsZS%W{-hML3wh{whN9|R0K{^f>Hh5S&zzY zUzSCV?{N-a4cvLj2KZ`I8wR8m;8ofrUQbqR*P)%=-{J}5p);OJ1Xl=-bu^m=ui zh-7PbP>8$TX1gJjO(^~m#+?v09V?SeVX*__-fr7bR*}~$Mhb1FK#;ltl06l;w1d{^=c6UyzOj6QNvN+_`PS*H`N2{E+ z(z&C+4tl+@!?DNC<@1>J6~yR1C|-c@@-XxMw|NR z38TTR9BTcjwrspWp&$d>IbGAGEjro1b=JfRv`i_JGQr_;90@wkP{E~V{!C2U@$f8p zrXVC3^cI1m6{6r3=CQmHJ>(0^ixvzK2Cb*jgG|{*>*bCtfDNOC z6Wrp!1R4ie|9%12&*RH|VGVGrWkv7eVlL^+UritxlvsK15(rk_%)fN; z`P1~OiDITNmc8OWHbcvj@i~Q2k)0gYZM#$aAiST1%WA%=fz-{M1Oo*j4#ywPlYhJ< z=R*~~L{;ISe@~(&p~X6ceblc43;kF|71O^9ERK=xcbOWC^Xo>=Ti1!`k(h03>`Xja zC31^B{}fm#og4%YG>ThhiZX*8O+R~>rBDkjR#u;jn-)W3Ic`3zTQRF}Yz$d%6^^~Z zrd49ZckDr}{T=^IJ#cHlOyJuPLXdOc zzkU*sZnZb`wJeh@z5@(%|K`3_3UIGle+}Zi6-?>X%Cxu6RJclM|1Qla#iiig(WG?= z3jgvxv9&J+(!4%a`M}~lFHoGXXxGcE&C2Kw9M_nBw=Oy#pYp)K>dpGbflEv6v*z%n zx8LW!t-E$cw20J5RatsG^69&w9?+mx4-^;BV2KgW?W>SF`}4L%I@4M8iDGYds3Y1J ziT+~#IqdynolVNKM5)EvcT5^zdWgdU7TbNiCO1G|1OPm;1$8d8B^RkW7*ximdi8S- zSz~Ounos2-^*O7zE}?W>Z%A`7S?4>xF)8f_p2%w{3Crp<_WViLA+Atk;H7pnGA3SZ zWh*mPq{j8U0P5sk1~Q%g1#zw*-_>taf(0yTjipb?G`5s%Uoo;A&HwxcF+$2mrEFF- zCK(`W1}ZPUGW|SsF5*RIYNnMeoxxJ*@dJLGLiX*KONkKV+}h4G29q$XI>H+5v#u{W}py=0opg?3EU(w^gGSQu4iF zA2PT5%>vKBHeU=7$DrXA#v1Ns4IPU3#0EX3u!kSJGWa{Vv?0Ni34uJ5H~5#Rp%S9J(Hq$|!NV z?mg|I@LUhql7vp2omiVW(~MZ#XIZB!u8g&Let|#Aetfvhc%;Ge20i)FM_GAhw2#n1 zgyu1`BA?5jW=_9Be`~#Z(DrFSS1x~YB}}Y`IkxCUi7&Nq?3<8%Q}F3963_XNlMh3;WdZlFdk&RX4kCX(R9UBVa-%;O zYFcl5K8c~HBPUshy}Rdq#B7BD6YeoqsN-TFsV=qlEJ)x?>Ynqt#TS}xedba(8ee7K zUwPY|64^ZV`qoV&jw?A)4of=9Jo`7(KZd@uDUr^;+a$a?IPF$x8@G}7BkaSA8}Vn< zUVmQyl$n3qZOpdr^^K>`iB)bokrs`5+YVWm&Yt_~#fxc@ZFNr1{9!~CE1J{W)m@T-t^u+(}VPVvKfpCw!( zt?Mqb_(jd>@o~XX|3anc5;Fx=UI_LR{K&eGycmA#G6@fCIZXG3t zww2dLlvXE?fnZ$44WtFl4(>%NFW{JV=RIv@wog5{v{)k(uII27rPDr5vXknDA z2Ce7cSZsH67ny6QP872u^`m6{hRV?4*NuqB-*ydDa-no!-euWn|2C7`H z?5mw9jtMmJD{;<;d0h(>I>w&O|8Q;9hP6<&Bz42$nEme`p6NF!;rtJV2Re=+;;Ar(h+nE?}7Tw)j=ptF0s z&Cs{JsCS)@1swHp3)@~~MAwJwDfccMagY{=Cuq46S?q~mO6;Q{?^f`T5e+8RWi9^xU-8ObFE z^tl|YJ2Q>m;7-6ua5sX-A;hu+ovYF_bRqNgWARtzt7bss+H>Qd=`F$xXay4)dN2%& zg9@Dp*3=A1h?<*i(U1G&4Y_~*VBd$jd79O6cf0CN{QgB3VF#C9lo>K8d1W4Hf1Xp~Up7YgvelKQPBMQx z2K;>Bvyj%wPBWvw_PD$gla8OzJ->F6tu)~VW`QNK_$CRUDStItj&pf7xuU0@_#o3z zZdW*7hCE*qiyGd_98=imYLDSHlaZ$dPw-6wOcJixcPLm8riWXWmyAc5A>Hw))3pmd zP_VfwjxFU7U3&Cg7*xtCGfPF6vMMDr+!L-}M|4OK&9QTupI{Pm_=8WwvNy6yjIr;M z6`54q`WI&GHOetT@cou_A9F?E<3K|ZR-p&SEYlezRa8s>a=9L70h0Y(XFH|F+#844 z==Q{|5c!&An~E*u3A_N=@neF*&@x3IyMEEi7u~N(wU=@Xz6m+~vV&UurFum&>rnJ8 zFZq}8T&JVAdqvV^>S={Cmn%E?Q=$ZE`k09Fy84-6!&vDHuH&o-<|~4+Lef`Rs^P~Z zP^SE{#gteEj`m5sj&4xqUz)q?pN7?Tx0aY>Z?rEAYpQ%~v{Y{h5~4q*VYM~xFOwfQ zVKzZUmuCDvZBx;uyp+hJxBM#>4doQtspyi`hOf#P{D8_XU3B?3yY#72!QwWt*ZI(7 zO8HUEif#HYbO|9YS)#)#taot@@f%%=k?&GEM3>S>HR(xbR);_7n)Iih6-giGE#Z=C z9^KlQc2>H7h%Q-9?J8|Vy!a1vDgHOQG>_)_YA8p8?GoxMxNN=`YFzbCy9&IWYFJuE z2zLy=xLM7jP4N~R*bo+2bC17~>;d?h+zb3tcS;>*jaP`)KfA5k_f3Wq$B71*P~CLG zgDYvw3Fha-KAFB3tB=l(ctY0&gi-s4?HVs;C-(B%b@QyT65F`{@e z-oFH22e|BWbwKsNLEJ(F z>Ge_C>8z8aMK)rQ;9F?<$8qyQ@zw~Z5blAjf z=xj!kfgi1JnL*Gd-BALziKowmMu07`FnN-(QWXV56qKZeO5oue)A90blFyEd0e2Vj z+NCyGnDx5xcMn&NwQrds54ie`)KXF*O7dyP-@nyQ&%jwtis9 zFgh+gAYwH|kCD6WN{<6SnuXQ%%A(xdk3-;A+`{RBrmNpkE`NEXHoq6<9~y_A+}IuT zTV=0Y$M(7<(bPhaCxS+7i8I&nz#cZIMB3^F=9Bo0RM58IIgLK;nu+F-kHS3slwj=> z2}Q@or?{%_7^?^&5tmh&=r`Jpm5m6!m&akcoXXGWwh6RT(Izg2*(F@bZIhbQ?yV!2 z$tSAb57WCUqvS9+{iYxG;OL`|lCnnAGnPx_$=KZw|b&bE9 z*DBa?;Tl7nW0`Zyh~YDol{n4JA;DC~IHU>SX;)>LSz*B4vb_w(I>A=wgCGE|UA&f5 zdwwWXROMtBOY#jW!t}r~fNVGW5lV;>{}uVOeF4hg2!T==HRY5422;Zmi- z#aiE5xv#$cMKFzjZ9}-R-T6f@VR!jcN59c>eN%ccxS$M+`a>{zj2Jwi5=>SSaRT2K zmex!D%Gshz&1V8iPdoA(RKn(tEMP`yJ`iaZ@wXoy5=_LACg}Q^x|fd?4hg0X2P~Cf zlB5z$yHtXy-3fSU^Xa;uyH!gfPjH`mqV5grBTDo8tQW;tix?BmMck$mOgJy?-VUWJ zN>qZWKkTtZ^qFZY!E}^LFgbg*&r=De!J{+>44EHM3si)O>o>yWwg0$nNV$@dP4`+< znN-8*GSkBXToBRyE_Ywopiz-trHsX3>B2^j6N89bp)h^?mhR}wLx$;T!y&`e9U}@c z3}#$W@oSVJ_n;c<+`osb9I!?sRigK-qW1v^Hk(N%UCW-xOaW{cw!np)Ot3A64~8&_ zCTnUQI=fiwM;$Y&<(wP~&Cv(UkLmyj(x=cyGFAc5rqIY?0C}AFO(B}xMOP&|NuzF2 zkObXnEB%}>KtBv@14zv@2#4FmrJ$r}6Qst-4ne;$rY*S#RE){p|rZHFM8z1K^L7GGK5rTu7-mZwd;)Fj+i6;TuP6udD6cumAtZrXb3%W5--;lL+w$c z9doBwwxaKMr>DWtt=rI`aPT`V;1XgIrC54Vfv&U^+>d3N#=%OWI6}5r!SaA0(&7~d zFY7bprY?(eIvWIIhj~VC)ydL^lislt60PTynFu?5fDAlQC&cU^Sg}*}0z=aP zuydNqFlFW@vvqRNbtKnhdLwjsbIziVlyc8;q3mo#C8$=h3K?-B4ZSVeyN&AH=0ZuH ze9#f75yO^!mY4e$a%h{Zv7Mf;%SW@uLVKXiyP zX4DC&n2ww=he zv1WI=fO2NZ4R^|uvB@=GLwY3U*bR_*CUW@XQ40y|QuPUO7xMA{B$>`oU(-)GN$IZkTWUYj_Q_8;<_199?hPvz+K7>3QHcUT z;C?{jj0>AKb|;w74TApO!Tm~MI8eX&{|CcGO-!^G8D53RdqPA1RsF2sjn70L&)GAv zqV(iIAZ&npSINi?l|A-q|MaDy6zRk2XN3x5n32Q7^*k2ej(qwvuam1Y-x=ld=AvE= z+WQl!R=?Fe{8NQ(KCI$cHZ>LDRCID_aKll)L)fW-tedeqR?}bWa}T@&=LjO*4-9Vj zBHq48>;u)oqs*P~ZdKY(3q=qLfJYs(lnNe0Iqg4&)^iIQmsf%&XN=b0HlE{CF;i1L z(Y>B?)E59F#Y0-AWpq=*Gs7>tThC}+zW>+uQdKH>iL8CqFD3axM`(P{rM?4F(oM~i zpD>vXG8a%<;a9`Fbsv@)(kov1p5sKq^S6F|0u+!36n}$Uu%iXPK`!K>VJ%BFtVzEN zYmNvd6kkOgf?Vg{{0(yD`+a0VQ{S%>sUX)fl-Kv)AlLIlkV}gSauvD$ z8{}H1+SHSOgItC`s>2UKE@bgxJm7dt_(!7(cSrkYsXE`eR9%#%@dw{ufsry{!})#l zaKF$%k>`xcx5}R-tK7m8tV55}WAU`_wi?H@_gaMcw0ArF)~M!mnU8ia7bRJ1{Ns|P z*6vQ1rFt^2RqxT1-tbYad}kqK25ozZsPh-yg>6wY%~E$RJoMW*tmnO~Ol zBD404U3$AT_RO**aHXJ8QI-{GFN$zRyT_ALFIq8w`n*2jlNSC>YS<C@U5t6JanT&lww=;*`L^SI@}9|LoXfeEAKS! zZQq!?F*j#roPfhZ`BTAm_Z!pX(La`sHvhL9y}F&!xLKz-7cnh^%!gbb?z%%)aOL$G zBRg8%!M4lSPle_k$1a>^g^_80OiOD@Y~O3T4K{kAf^5F&B`{Tt1Y-KqLS>4hzngH< zLyM)}s+IB2P(Sl?36m1$H;MkaDQ$I9EF|3;)V7t5K}nci{_FJh5U5a$dos~=FCku( zt)0A3++l8^iZ?u%WoxU26`LRYMJw>O=LvY12%@WvW5mBh9MbMJWao!63h+8-B~0 zBdRkVb15%RDuVHNy1{dK?8n3qr6pDpPG3*wtW2O@x`0i&Cxmkg`gp~QH)@ftyrDie zm~@u7*8Lj#8P|HzU0BYD!7VhDVr^T!8v9a1MbmG9-Z?0Mszu;-snMcm>^r zOM6HFg~ga*a2V89m!fw^iR@>8-bx;QYJ4`4+YXG*k-+mt+tJYPkYgT5Pp=366r5%q zS-=2R1chD#qh2&eRdmJjS*3<@2WLDc?s1}lSSx=n&YeaVJZ`BShQ5R76}tD?%+kcu zcoR_!TD-%+);}&-SvR8jll$It7%G2NirR1nx)%2JFP81p?xz=J=r7V{at}!yfyCF# zMeVVGK#si%peUdLj71N9Htf{wSaG;-<~|iACdvpKagg!iPAwNx5PofvV7ksM$><$` z{<@jfbUS;w)Uc!b7CiDZ1Eu71{8JHYQ`bPvH&qx?u}#S_7aW)iqw#&fpabC?h^j1* zX?>^@*O1dJvqChW8DMZqFzD^{{u%Op*#A%F75N+Hat1E`1Lh)AgCqdQdT7IVqJBKX zd6_L^4F2gq&OuP-;BEN@G%Kdca1{dp53|=G)uO`pkg4Y&44c~cSY~kx0_-he?n5L- zAMGs1Pj5%7tV-_AA8x=RF&B|Hbp8bGP&eG4{|VZS zf#svaE!D#TWD(m&ombN3L>$Yfugkq{5dPM%#mNhoW>YdT}B;t|FydgG^?~l^4 zB9y*X{70Qf+{2nP|WL%EstDa8i zjIWjDcmmfup({fp5N9izk0o$9q+{~r^gHeA-DBvzexsjR4o66jr3G3jIAp6)H+XY2 zc#5HqmzE6THW3r%LFzFe&#?qW4S?du+0$w~NZ46Fc&&OI(+M2R<|Onqe5Cwcyhh$$(2zmlJ2mpP`Jyy(H$v#dYSv=GyKFV$J4CVWM@^|T!dx==tD3N zb4TNP>t~Kf->Tz#9;(fMvN@{$YRcqHebUMKkn>&WV=YXIC)mk8x6u+-Q9gLo}L;A1aBkme&`{VCUmOxBbDSWDfQ1aLkSRHzxI8cIRO{ zzP;#Qz(rpgnjSvMRV+fv;520VUH5?XqB6?GLjBZpeinHX&ldM&q6Gnar#hd`JbB?~ z_ir`cvaOO*{+-jwGH?&(9vmznw zPysx;z;lt^%!SH48yxJ~Mp_oFUEJHbC2aTg%K}Y3pDeJIE&M#CS>wd=0L$w1s@9R5 z;b80EK=Q#aBKayGP|*K*9jzKV^tL_qh;=&x$D#AxOKD}DXjlZz8x;4)w9k5kiT;PQ zCDOA&E^TQ27k^wRxVC%-{~9A0UG)s|x2mNbs#*_@s%n;L{{W8jsFPf0$wUU*-276Rx?JEp zOWOT{;@`Zn&LLoY;X^hRFxC_M1sFqC`nxH)J_GH$|sor}6g?cb_`MCFVXk9OC*?^~L{7 z(6pXp&`<@fE>QRhGL%7qI=XGO<5t2BN4Mx%5>7GdI^1b1@F8_{E12TeZFxL=uYE{@ zGWPfACR`v2Ub8;l^?P!|Q3cI`DrhQu-NYn_G`T@S$4ZyH1Gm91Es7Melf&5U@NW(Lr6O?)8z!!fAJ@Nqo_OOz?1nu<2U!;Gig-N z{2jk}a*-lVP2PMA3jMxpu}P**Z2_z>*Ap#mzqD-o%EKu3@2^$J6Ng%s2e=+;*?OU6 z169kK@0GpGw1B>6gK)U?eO`=7Lp&OrogE+Gp;-+b-4Y-$GYiliwBESPGz9C_n#KAU`=^@>|~7y{& zd%-**sclD}DMS~y`74eqD12L;gUP2}G+JhYaN$;`%wEYYnaD1IK61bK!--@|B$&}@ zGHpq{Wq>&{bNIqaE(?#J3U|HZ&G7;tb6 zf~^$dnx?(^wIq$;tIsIEGzf+gM3N$eafzAzGD;?llJW%N$@RCK-xmh9oJ9DB=xMuS zh|HnnBfN4uMp~T&yxXe&xzFLw)JG%zB}Y>6z6~|J=zjE+j5|O>jr;#%f7!J^n)*BV z*1?iwWa-rE#A3s!>~BI1ddeFdJKkw=R}8O}gTv!QD0El*^=eOICsf-P(&V!i&^gt* zqGXRmaKEm;JsFUsJOp2r=+`nz8Rw08%gip}#XF555#Xx#HK;S$v6MuEJW^f*)Q9F` z){rqm|7H@lSKxd!(}~e%GlEUN0OR<&;WIFe!XC>}sdO{%FN@4taWCFBad(Uw<(0Z* zEJrG)5plGe3N9-E2AsBL2Jn{MY-babOkB+{r?HU`wK9mxV2d9YnhS;Ra!p{*>~)g29osI9Un{C zzJHMxZCVn*_gx&EL-=Tq0f7@?34r>4PBl;755+{0jQ{v=kfsM4T&o?{ie(EYllo_H| zuv9gg(Jnr>LpZI_R(os?O04LOEa`>BK(f|`-hEiCzVIW*{(#Snr>0|c@9PvKUYZUM z;{1{&d>4ZM8kNJ=;_a-xPj!7 zhh3U1W7gTuQy{agFK4DIh$?{F8Ai56?Bl@MWD@UOkl!#)in`X&-d)dRLQ6MIvs<9N z8Oce!iAVG?Yfo{pc)M}bly|7@mp3NMG!&FEYaay{v(e6OXEF)HWMV7A ztvp}=t#W16SUih@pcQSw2zBy@ix>!A4Go0yMP8MFjH)I-R5rc=z2nKO-GZU%C|2{y ze`XHxb_eN#ypaTmPeG%l>cvx}TgPLcRHq{{`aNP09y^YDI7ke9P0AXriD@^~*+%!M zeO*@+l?~RWOw?FBcqpwK#dyh5YYoGIgB)Gktu!%><%;BK z(EI}pO2V}x^l#7}%}wZv`PeQ%yCQ1fiIe+f`|9 znr3kA&Me6~1C-j_;N~$$d%a4ZoUodP<}>JkLhjLRvu5+0+VI`2lo!z`egEoRsSiVy zv>ygQSF;E_eUDbHmoRD&E^-H0ca{6xV0S7Devl6At;f?($@npnF3NZM-VS$Ve+nO6 zlHpad(uY_E$nV0m(!;TD>_4s-0#}FmXO$m-i^5PbU>FdjI^RFx8JETk6Y}n#SV#o` zTFd|mfi9NZH(iH5Z(1BKQA^iY7ZXxdwhNI6=MBVF7cptzk%0~2Gcb9PWa31b(V ziq*MOi5O}M&;yz9>_odf*yyc4`%Z{$%hn@1!G3C%Z||&-Qyr3p)#&{TNdV?$VHjP^ z@nNwihjD2{Gw;*n2t37*B(u{H5P!`{sIeSLc-M4~@otD#3BoNpWr;A4@F<=}RD-R*b$iWJG{I_wA%2l)ZY_B(5H&E8+{t{T^^ zV}SWJs|xyoQe2s?R*j$SWkE-wTT!CZ?1iPiJt8)_iwA707J$*fvhVSx!AUd5oy-o8 z8@3rX?s2DG6PnTao_5oy&(`72mof*9^e->mpH6>y z>5+T$^|XpW@YmU-lAnrmp>A)RX3xG%nVOG$H^TAy;y3*fwl`PkLRcv=oTDrYapF%t zO?gXiw&*74P!G9Hx7?3f$&pUI@HXzuXe&kGlk2CsB8}Hy1|xDezx63z<^9-Sqrv}= z8W{+1?jMhH=>Mh^{*hAP`~BcK2Z;P_OVNL(D>*E@1WCBUiZLV@Qgc02VIt8miS;~U zJ^?GJ4@0oawwN?5<6ugYwRn7;SASOEN@%|hn|$C zg~;e#KLVH-02Eir4qCqwsoPMe%T3&|;1>PJMLE3Aq+wMio%`d}3mfkRo3Ez5aIvh3 zpZYd>0m(*wb9%GmU5dC8mtEmyM)dSaiys{hSxSZXk(84^krE3Rf5aN2(F{{BJxFx> zV&iTEQ^gS(H5miFAn9UN4~O=%Y$z)M>bcc8{tXlRw0k#~t#ngT{KmTcQ88KJTjlpwJgFrqBGsAmk+KlrCCj0G`L0$=B)NNto#nYc7_eG(Z@(vN3CQt*SCR~GVMSlBtcoXVx3<dhz7Ls^msbbWm-tcbz&S4++JX0u4#c@-9ImT#U! zw;-tfzi0Mm?=O{m7V1QL>%lcPev0PlP>nnk0&#~SuJDYLPM>=fVgV-VGU14iM(uqt);4v!m5)p{J0n)c^d`=g-8W8EOI+g0c&gL)Y z?t8cUAdmSHaoBIwU6omy+|9)Wy)tC-O@kQI&ce(4=+$Cd?p<7gNSvZEJ%a*wby=j4 zeM))EE~es0s6rj1&JIS!mrM2=<6NKQ-EMuOyi3>7 zOyH+%X8m_#ze-twYqTJ#cJykLzCa`3ttEXn#>*5Grb#qoM`4J`l8}qiHWn=3ZJq4_ ziSf<0ox!BJM-8t;@8A&1By>BIAe$V(sJYc{NkfMOL8Z~x<(|;xMzVXOEM;tZQcpf& zIfV&$wEcvmif#L;ka%~!CHu+G6IKF$?%H4BA93nq`4Zk0Jv8GZa75Aj#_Fz5HPD+*8sDgMqLg0@~7 z&b9>v?n%0?Qvbf1A9f$#SPhQVfgxy^c=P_nmo=0RWJ*91kUk^R1=i!G1W9bM;NT5m z2qFqK#4RNTr=dK$l~G}qrw}l^PQ~;RkN*_8Xp?ZZgm9dt%;<7%oh1IAI}Ota)nvy5 zK8l)1N~qv0B6LbU2++mN(D{96`tlNUXTBZ}IbVyW&|^a;{NCYQ1Kw>jyDo?hZm+ z@m3efPJhB9uqnY9#tE8^>p?HFUqXT#0!mDv*m1gm%Z@LNGFS_j$7#Y>skxTTZRDE72 z@~9AwhFMysP*2Go%Pl>nyDoLXYvH!sQ~947w}Fu>)ZlwBFB!P!V)1|sedh1ecp2QE zCzCdKlhi=_uJ+NPS<*%IN>t$=sK8s-@dv+vH+@?d%ZGcvOUt}MsHJ6%V~;9lPJab> zM64koo?;9%M4vtg+x;TSoF05}m~p#<#_HhFx1Rm+2>qT*F3qj()Aum&d}2Modu|*#;lR%Pypz+NfQ((35XRJb0nku%SJz$)7xZXrVgQb>;OaFGlmls}Fxf8xba^~wuY4Tbq!Cf-z zEae|%JSnFC6dWL&=|~p^qMb*Y?KX`+-3CiQ1Wa+095*q#==D%KS>$-x^{LgPTmyOr zuRRjwBNh!+6<#@9BxO9W4)GbX!s`^)rCj!gP|u)+XoL<%yjODTrhSeci*FRkOJ|}S0Q5SU8Y5_Y@3|Msb z8_JE+$nl49Dui0ca@h|Op0xJs`IFUR$rv2>@=U{C2f$xLM8XLK#m_8EG*%^iGJj?1 zxaPG%RhRhx71b!_`(7Q#Z`Z^u-q7Wr=>j;z5;L3zDA_-zThKoDi^%>zbyufmFWbOD(5e9{5%Nuic9ej#- zST|l5x|rOnf>|awJ=RTSO2q9OeH!IS7UOCC=%qy$(Bve!T&Pl#Zy=;*b(JkkdcS44 z9yQpJsr0!-1y=F9yRGzsi*3Jz?0aiJJR7J{dd>8>U6EID2QGHMpHC`UgA5lWpNtcL1+EbNaJo9S@)oS8`yWxad>qLlH8Gb zdx=HbbDjQZdF46P*CzdXumTUGbj3%m2xr$iQkT8 zVB-2pN;D*zhEwBT>%zR@TsT^P;OJjA&4OP=ktWG&$^KHd0=q5F%8m7mcKb)$fmCDV zFtSTK6i{ULWguBY7vO&F0=kaDr#rAQ)lWJNAgVF^JRXpey%*d+K5m47zV$6UBPp}{ zGQ^6Sd;QE2(T7SD-wk}rXgQ9{7*<|2EHrx=o6{|b7?(Y7cq=VPf`Y6jok3F`H1Mbs z`KEB|T5LCl7$x-MTKuzgmhlJ^>=uqmvO_9QK2@cy^_^;Oxo|68z;-dqfQ_p;eOlavA zW=fQa0BBf?R7HBNs)|P*wrQFhuf%j{1X9a$G!GE}YR{PxA(>j_QJ?oQ=bzP{P-bf< zB%3{2G2y&BLi|1G5v(dGgt`6|-jUcd%oUkNlE|DcYa|!_Z-4l=e z^wGNZBFsx-i8t|TfZ6Fjf|%3dFltNR51sRPkqUhVsEDXuR4_ zQmf@uRL+azi0WMS6J(-kf+wwNG+#PMkNTzU`FSP*-C~;ab+N83u}%Pu({$`fRazq; zb`+%TSRL!R8tYyiciJS*7e*AA03?c`&Y|&9QSq`AumlzbVQ9Pt-zG?rIOi;>fOA0K;it`x~Y6Yz3rM}PedOn@Hxs$rZ zmBwxD5aA&BF)D2*FKsu0bvYpzTnDJs0bn&U7)`EvkVeg+z+1^^79iq2ph1DMtU=jK z(^*;}*{Ss^##3vTtG`4i|C)5_6ne=>uo7Pno8>o909~M1?{vg_3&fg6i?Yy58bz>_rLVB@F!KhiQ3Dy+wDUFW+A%CbeFE6kRI1emNUo zdNr*C?sU1cIR8#s>1c83fc51XP)+YGd7xYNa=nb>dg=9N#bsj)rF49m^s!P_Yx#s5eIwXJov&0>}An=&E-DEUO|Kr!=4W+|<7(T= zR1v0sD`*7#K2Q2mOuH&~4Vm>O|AWhw{aCfoF02TmUZy{HPwcCkrp;zBT<7wQPhKqo zv(9B7S5Ll#K*RiFx{5@NLoPr##q?WNY#%8mJe%$={?^nJD)(9@q>$wbK**;a{kmmZ zJBJi0y6yA4Mc5QjpJcTOncutj%^r?h=92dS|Aux4 zqk{QaNBp0Hugg!opS8p%q~u%mL${2P(J-S$%4m|bxh(Zu}^&(%%2p!U?A1& zZfdDJQ$&6=O10zC(V;s_#>~uJw&%KpyPVs0?3&Fn#4rGlF#_TNe$wdsvZVJia!v@; zo4|@pj_>43?Y6tzRarIPYmK$gHVPFqAwF<)JeHJa`TIk$*%^g*K9v8;Kq5M1A~+TE zD%z3A3@RH|a?J~jWwDSGR6Q^;LMBk-In5-cgX$*}GUZ*OR@qo>=@>Q(MG-+FB}GKH zZeTd4QLdYY17xHkiF0--TLm;OoiuHfD1UI(;o{KUtIGizYeTs=fO=NP>7_ZjU4I|{Ids6&%+|F zu`+?+L15;L!k>tA$P8ii`hKA#?B@;M(M%yk0*A66AIQ<(Ke|qY1%2&ZdhZv6iYrx- zE7l6WQZpc-FWT4g=D!ysJdGFgSp^EI7Q)jmS?C-f4A_o8#HC-vzm;6)S zSvt&`Fe}$J*`2gwmG-=_7(9fe9$t!GeWiMky9WgqMIj2g&OBrFh6Sy?Fy-VeW5XYT zd7d6aH!oeaS09~3N*v~OR!=rQ6d?chVjN)^ILxLDOdTE#s;Z)0q0SA#+^?_sfn6B) ze0a@`YTUiGPo^Lx$UJHY=o!z`6X{qSox(*pEBpX;;HTeWhBkEAFZNIr3N zvIaQee!3&6#OwBH(WBQ_H7)jB!I{dK`sW`AK4MoJfQ%Q)96t8Cs_`7ygYzH(4tTJS zyxeP|IT*RTj z&!pMl=#hiQcdvea&{J}}JY=EK{8TH=$v?-D|F@L$`^b+DTm`>90JRN3P$J-YW1>Cy z<$3qiS9Bn^B*DfcC*MRQ7V5gwnADxk149j?!hOLjJzE<%jzKWtxlDWtw`i()2Kqkx z@~us;J^{E$8zMIOzCeX>PK26&|xw$B+*SV_pbp@AAFYcv^e3x+d*(+L`N5tUiaH2Us(-!Xelsj19L23299 z@=ZP{J@e_`=G?YUngA76f>yUvd4h7WQ*}>>D&KqXr00NkHP!d3dIv+@PUcC-!hn>_ znmSXa9SzG=uEMb#$q3nXNvD{n;1ObyQDT4G7F>c|*^5HtsOa}dpqlHTIgV8$&|s>$ zk!%rG%L}!Z1KGF2OXJ!?S+b;tl+?wOoNcy4`}9^Ai8O6P&P4m`UjnA%EfvrH zJYh60PXJ(5o%e=fzrxQ>SwZ}XiN<(xVYUK_xC*A|#(gVSWdi_{e1I~{acddai#1?Q z#Ivb9IjEGaekro__|sm=Z`3A%JTz9X$~=;!zwA)LM~b=B@XT=6m%2G4Rc(AJKaXO# zKFTYs#fbvUlz%+va5zn}W!RnmGlA2iP6jcH#eP`g#ZJ!sRW=CSx;b^&poM6fK1>p3*cq}6vW9e~J3H1Mk8n}jv^aQ7#{rVT97Y+% z6bjobnlYV5xIL^$lkOZ&AKZVoRswzN?2%0y)fOnP-P8GDA030oXdH3nfg)>Ybj{oT z539^#!s?Z+c_+-=7S)+%wB{N?gx;A*%z~oH9vhPFpuKQ9VynJGN^)2-!UM`4LCVat zkraf1lEos$+*}REtsqjvv4tz|EEPa=lufx$^_YKSHE?0rVeW*z2W0BmvX9gz#NO@k z`g0>n>DxP{L^G&0u-*BJc23X_%AF(rH_@px^ej^xnVO)aqzdTpsS4Mwq@YSGu%Su> zKxQ~qv9C?!Yj2ReT^M6$$*Pu#Aq_~=_$LJbY)Q~x@ku-8mLX1p*<>ZC^HkPe zEm<5cliC};-S7R`*}c(2LJfd$ILz$3NUio!YZXXsO`GP%&`oeQ%T$f1ys)uVl)2=> zvtGMvNBf6Sx&rQ(Q>&X&y8zKx#t(~I<0(q_``^)#;B{C~^_8jN0J$Z3jKLI-XdBb~ z{Y(Rwv(9RfrgZgf8bya;3Q2dDw~*mrVZ*`j4aRYzp=SDEVe|=%R?};>0d41q;7h4L zLn&W;VM7I4q#Ih#Ys+t*b(0OT`aSkjy%ue*8F0-v4V$2I7dY_p=8LAMPbWCTZABim zApV;94qxo_%Qph`;&S4>xXeVC&03nk4UVSZ{Crg*<{={{gtkbKFIT=h#16OQL~Ns( z;&4GGwg)-HdMb0`F1g%6*XgFA&`JL!!;l8P40i7{DHJj^xqC(x4M!0mF(hX_p1jJ; zlhRq%HaH_@ygr!GrdzWxm~JcZ3$zzSuus znSPkB10TgqR7~>O8yRA@r(P#i_F@=?+`J%MRqL#Jo*RB4h$!%sfYfV&qm9Q##d+u= z##>W;-^1i2523o$yC4|v%nI}n{i#2lm`)n`aBqGzQEfFiO-;v7{HxvvcN!1(o|_3r z$Do5G4K=9$yqg*>9hbsyDzX2xq~Llly=ZR|4jqreHdsJ;B#CZmbc=2H0Ew=j>BBD6 zbHEsL-9#U8*Mdfe z0%h!BS7$u?CVq6$ni{`o^5rAZwC@L=ik+$dM8Kp<=ZQH!=ucdzSjLayb^1lSRFLwu zB`Wv#*)X-M^3uIZH9nR*xv=a7Wh3GoFF|^%v1-dUdHPLk+xN3WLwUo`#+FWV5#k5J zToOvA1LyGc*1?FxZxa*VbF`Wfr^8}AD7$faGspGr!pD)7XEtXCqZ-Jm7=)A`;~*d8rB%4BC!dLoMWk%|yn z0D%DMp_VP$8Y8;dDtHEl;|y7eobJBbKbquDe>@?_`LcudoyHbBt6(V<5qcVly|@2 z8B)8bbOVAj>G|cMGZzy8`Q}g$Q%o^YYf@6q<(q;h9dRa2=*AS@86 zT$U6Uxk;>IsL5v)HYgFwO@-VE-4{fRH%U#N?F_N5jW_eRAQf2nhw(|JUf}kzacfBc ztC{9rz&O-xw^;kumo;xfE^6~){h5~7Z3>V~uuWoKq|Rd#da#AFr^0H_TZK8Fs1=N> zbcmV9#uX*-wfOck(61VGZYRM?e+Z=VzyA1@t;%DdG zUeYa?s+le=Dc9h{mOR4cD&>%B`|Pio-@>3x9vSz8?3?Ka|6Iv*obhe*i0<$(e_AWp zqmzEMC(|%5Zh?q$z3ZkyV0$^LK1W6Jgl5rDX^ovIaW{>ZBeXAqG*XXXqz9KvsFzgO zf&F>dyH_*MjcHC2IC+B5!zTRl+}uV~v_T&B;WEUV5Btq0gPpwpt4bPCFo)MO2ih8M zOVXO7%8$Wql8X)o5|KPd@9sUEcC)dmd(p{aV=KLzO_q# z;R@#2E_K{L{N|-Y_!Pp63>Xr%90ZLI<#8ccDX;H)3JL;=Z0v_d&Xb}5A)?lpq+D*I zf3j{7Td!whJSQ_OJgPX#Q#XI_Mb0QnKz}{J&NvwRoh_GL@Y>mP`3sUkWJq6q2Au-B zK7^;#fNw>Z8d$(>Ypr@+;A$==i0J0HUX1*JC55WLao1wxovTPD+|&W?D3}btR)0w^ z`{HwcS<*yGMRSuzk6TcOyizC~TaSNxF{*DpOp_PQQo$_IF)RWn3J1uM+0|=8u6}@I z<^YMl>?93yor_#8Oh`8FO1;^Y{^1x8DQF+z%4!-XNdo{j(9jKDB$?5|RO%fsk2c{! z);G(^7#~q*|U{sh_J>n>wdw+}+!A9`+aJ=i0Ncl%a zVLMONcSvwZPEJU=n4Xb&F)fRplbc6VC@9F*=L1Sh719+rN;%j{lk|B3KK+||fI@-- z>`sb3l+WIw5#ZF*16iV$p1uNCSx?K;ZoYz(_Vza)G+oKk?;c6Hd8Gsjpb9Qy^-?%X zp>2TP$x8}+diM3%wEXWs^1r=G%uJ2{Z*1;={+CewpmYOPdk_E~B(J2MN2o+cJW5z2 zRK-csBn68wCFu|;>;O!eT^MQiS{@1r-2{e@mOU(788$RsXIwQnyL`CaOq+w5dRV)x zSJ!-LRvQ|b-u_LKK;2t7#W(t(hWDsLbO)ce6kF4cho?~Y-kZzazNr&=0|l>C{G0>B zo7fnPovoICKp_KyEzWh$@w`_f(_ft4E2oDrLAR`IgbOAR0F8M?OY|Yt-18_66cNXs z%LY|8k}i^vc^VHBDedZ^-)$d(A=-amyYEhge&9cO@o!NIg5n!v#KYM5h0gvmZ*%=J zZ-a-eh>f>9J-ReOM}PW0yaLQ3(P&*Ky# zgSvrz+LD?jqeox`;u#xxi#$a8Iw^G2SNkIqbht8Xkm zF_I$XnytRCDl^3M#4`Y9S1KuYC+bs#!I|n|iTba8O|g(01H?@Y0Hp*$4-r`4+}iK1 z^_P1)*xa$ySb--nV5BU;Kh?JX85B{?H=Jf+klZGRtR;h6FE8^zM=qw&mM6>f$pktV z-x?BsJWoQ$%`TS!V^`m(ZL*VX@n|2nlEagGb$8PzYf49Xj+o+ zit#a7-D~*?O77D7YiZ}0emO5Yf6LXGmhyeZ1$%!CoITL3p?_rSFXam~!u#^ALK@as zjXAX?JdxZxgPud(?w}`}jDBaWIHiB`cuxGVEpui0gX4t~+(X!@h##&;Eh}YlcAY!B za?pJka;a_*zVL3e^Ou8~Wo*7P#q7d2c$LBa5~+K}jC{~o|5Aj`-1`@$ z3V^M2J>-Txna|S#q6~OUuFZKQbc$RybpJ-gt@(lXgS8#0Zg`ZmMW7pBYp|X90n1`H za6KTa=LFQ7Kmd~c$Q;L!EGNL|J{T6mi*nsqV6=$S*tVnz$w~!iAm!(HeVe5@3w@62 z2Z6}9S-3i3K222HTImZ}=6=Y&^)$qAVy_AOv8%??i91FTKHNNy1&jcuTm(QA_Z+pt z0XjrpAHPlri9oe!o{rRdIA&?XqV5i4sgvk!DIgJg5f%^2F_l%CjE~3NQoC6({%Yc$ z*tIc#^H39^>Ao3L;H;zlWCXB2P}tt7bTgTUoNTxvVHTe$8PZ>$E_<@){){H|Tnfd? zNNFTjt;aTqi^{Y(?3~MeY`9RgPOa9)}=6>Mxc zJl!y+=AhP1BM*yXbdr7sRosI&XNprh)8O5A>oOl&geG-RywMcymQm>hUk>X(EK!!W z1$QVAdAh9r(I(e7r!ZLcaWy_>PMlzeVr4KDcyk{+B1-eBH)n|^`{mNBEfctcUTkmX zaLH20|4deo15{(Z22dGP;ad1M=KYkDGYW4Fk_;cTCQlcI0OWPR01!DXUSXNeL$_Z@w<;%!f$KFaUvEteYF( zb4E2ka3kOrHD(&#Ef^{5HZCT2Be{i-)xTxM?3R96}+`^%_nM`=rI{RPtcNR*yd2@Mw5&Ao)uYyMXeL zGWB&@oqdtV`~%`r|rpOF-xm_@UOZP~s)8XfcOm!*Mm=;j*I;mcI4*xH!@+lB9PyYup|D6{;X`1}I zy5RQ#{m7q88U*gzNuq;CO<2pQ0Tcmf`={};6RPOG=&eAP1~MVx$h&Lbrn)n9g{vnP zhGzQ^uC91S2LELMj~&kxc5iF6cBZ zzI^k-&vFMBoqjgg5+N`Rc|SJHb4Z4*I|qct2#2w83H4kB`${kw9AEgC*G7Y=d3eH& zB>MAPPe;wYDhH{~)Tcbi%^crCu4e#5lvMb*hjQ8I{O5YrV2JK?FWWuaW&;iu3p&WB z^oD^G`ts(H0q0-amy*yt>gN^<0@?$5t6mfeaJlNa@APBVD4u_^_UigF8s`0a7-PQ{ zLFCZb2QY&OCgc$hrR!InOs3ZJnCcs&5fes2Q%z|9JzK5`xPxGf%efkJR`v-VUpNGi zomU%BVa}`dL4b!$ay)`i#5j|@{*52lK|FQ-Nwsdr--tJb%|&985_7DSn=)l~)lcC! zg`oP`?D57iNC=l{xS8Y!18^F%*^q1luxd=Kn4Dn{w~|JaMwwJojqU9M+~~>(pUQJv zJ6H$Z#k!lvMvRiK*Vh{R23Ao4bY?i#_$OV+F*fXcQV{Y)0L9y=hOj+MHQtF|)2QiHlVW5BY@JV(R7yrn^iOWJ`r5%7SV zM?RwT+z;LK42$cPo;=66S~@#)eOU4g)>ZNHgeIZlEXd$z|mEq;OH%?=5;r(#2+z(185xe4?W! zxRLHN9Fu1Px7S#bxE+L}nMWCH^R$)hLR@0+LgA3bqo7@g>p9ME&F!&g%UcR-Kx6Mr zo}FiffA5S?XgNIuflq*)Tz1R6H$Iet8%ryc>=x12h&AaHrA{BA{#1}-7(9{*(w z`)kHB^avbphAXuJ7`apYR#AzLm{WrAsBdsP(ag-5h5ej*>i7&NAaF!GgoAL`JXJ9i0RwQ#Fc9{Hz5*fJe4is1C=|e3{VT{fxe&k#y)qbN{%RpVk5i zUo*p~Fo7MHjeoq9G~L&h56T1%P63AU)A?f`6!+w+FRKNGT$K**vCHi_Q5YGm{?4XF^2e?WraaEhd|vis?zE6%KlZii7aD zbe!T2hWQ4%#@WG+NF|A6&dF$&qD+Is2Qwn&_Q&LWv@QP!xRCvJ+>hAVSLN^d0P0gu z8(4xgDYa*rE^1Bq!D=R#7K)4X#f_UyVOB%l=KvB82!LHCnPw?7g0n`#6@i!3Nz45w(uUvvFE-MIjM53 z3*INqAHu|{;Jy3tD!<^WT83dcVy$(>t7vA>zZJvHb$R2OTAW1`1tvM~?x?6#zrk4E3q{+}t^S`-Jl@_V)8E)EIr_)sy zO*zOX*8YgTt9+nbOuf(K;&F~Qcg=Q+TTJl!p>&Lg>jPdU6^S8e2QBB%(fIU~6!X2P z$NDQF4uKvwc}#5pE+ra9L@)7pK2)hdg_X_sM@SG7HP2fAW`TUW`ZXdY%PHe2-q9%a zUF3WlLj4T6J}9w$uJza_t;4piJZhwY)$7|{1?+_~*$}`>gS_Bvcz$!VxUT4teA22B zTc9BDXp$zoB|>kv;{=BBq`zjb@*fo1(^+QBZcycD*#5~(!l+;A2gC8#?ymEw4ScJ! zi(rWZC<)3PyE{1%fXRu5crdAOUp5aIbZ0R)_{NE?ifs zHTL>1G=&NcMISp44?=1Hbd%8aq6A{_E;5x0ZSO$SFbGZeDkDf2cA*I_lqzm=ef|Fx zn*4X53AGDNQX+B7co3Q@=G=K)xT?E%pb7S22bwT()BlC0;a|`M&@|cKx|XoR^Fn?> z)6jX~Yq?wTLW(WocQQKz3DP z{|nAP+*qTUZ1huL)3SQJqjxM9$Nc13pn|W_Lk$pN9Q8{iO6pW$bvWTxT<=l_dLUrHi?#mYD_>5t zVzp*1x+`mEPF;WzOEx7MawV>L__8yfNWPBmb;HDpjUDdL zVcQRohe7;5H zux(hOQ|bx;%!C~67p6kwr?3u6_9EHxZCt?(8a|8)35Dg9(=FPXz6e%&?d6UJt-IL) zL5}IEb-pn8a_c$&Pe(7W_R zyNp5wwuO#DZ%dbWV>Xv2N&BxJQ*j**d;`Tn^(HC>=ZRLTl=x-=l8m|@31TMs-0;hK z)&Cf;=-fOc6B#yLBya&-JCS~kSI7JgpHmwzO!{kL20M-kO5(G~)kAw)9i0!lbaez0fqmDnKGsRz=aA)eGwgDiQjuam^-@-1 zLs{!b%fJOjVe`{{oX1dZ&56A=)pC$e*Ha?XU}@<^LHa)9i$EM9MMNbaMTk4y%V&d+ z(kdf4HsatkI-Q56&tm)pVSIz8W80@YO9l>Qgasscr=Sl!%JO7K-^tx`OT|)dLX}jW zd%XCXef8r~H|#<4=@OV1V!sIY7dPmygY;eH@$EliFRBsHW(VzXELk#&TZ|8-_(CcX zIvICE`{e76c!pM+!iOPo3x7exR`8iSReu~s;}azB-tv18z=?=5fd+f^Mi!eUw8PS? zo&*S}V>UI1ju?PBWarh>UFVqvR{hd@#?-{M6kN3LcBa_ZxzyRYU?v2k>gs5VQE7&2 zx1`Apq32s&_3JZhPFQ?x0Jynla z@nNPeVOJpD1=<~fnDl!Z-1#v=^GcCh0I=L$U-1NqkOFNr+|My`0%bv?XT!Q>$>JvQ zBB)&R_GAn`cTLc_y1x)C_W^%DUv*v9kx3tb^Hj9wD=Kh^9>nnsR*6}0jLu{pG6-?T zA&JG|SDh<8GNvYSB&#e7#P65=(Tx??(uHl>BNm5(U)`6^Iyo`YdC^@?`u;e0SSP0A z&-T*!^gO?^cdG)=et_Pdb~yv~eZ}^#fmzu+<9L3p(wFlz1PW(&h(T37Om6$p<#iF> zOB_fP4iv1lE;bHjZ5qCn!R4!k{1JCW_^-dXdns>IjXN$5)a3D9MevbHlgI1BHwJi= zqH{m>W$(03Mx2d$aVKiM>% z0C6}?5iFc^H~edU+A;crYW2|B?`Tx7Y>7q>+3?3&ljAwTeKo`9ISwUt$E;IaEaU4T z2qKKp`C(AKuk%A?^d}8CP3?oqsulj@rwBiqA3;Ml51))|W?uXCmtc z)GL&rZb3DP3j_`hg(1SURYeL%WRG^#d-K=Ot#dCws9g{etThwfO}fq+?o)ny zxwb)7+AR1drD^iAWI|%VO?@@}$&0~i=Dy9^liaM-D1Ti=vqa~*L1pwtkVxyRA3riG zwwBcTN*3Su-nKkjD@il@%&_6Pr+{E(!%9|raHXG2p0hvUKE_jR{JFFPYgR0_`BJuR zpd(wq@gYahJqVFc+-$+;rfN60+n8ACa0&W~QJ%!N)Z;j*F`}GiIamlefPf9EcfI@} zU{R8a7*u=Ru%6s27a^}^{N22ySJo)t<4_1RpwYH2)KKr9h{x?~Z-uX1p=)f(_{Eo&82;9zdKmm&~b*mG$G4*8ju$u0NiH&wo$%QkU80v5?f& z{(~IQgc$i$b~=ggA7kb2?x^EG&q>G5q6S5vQUN%G4h#blZ2(39v$JJLOv0mfNN681 z2`3~75YrE7X~5u-fC>w{OBHvSA|RN*0ETt^X;i*e00||0@E$t1xi;Hz4?#q-SAAYz z#eb27BlYrv-=$y$z(D@Rc)x4dKU>1SW^z6JCU2?|JEtU3Jgo|L($w{piQouOvjk@~ z&y{5|r6UQ+%@J8dXH6w=VPxYb#=_eA;B4Mq1G%bmJ*9Fnx0O^Qj}2ZkP7(XvPPhAW zT>*bCr~j+kBW7bmieldJ&E!Bx`7jE->Mw0O2^iC|&eyk&sw{9n~o%%P0n0#vU2ma$50x;f~ zaJpc8?$nXTkxO+)*f`vM<9`6lp@T+~N^AfG1&&IuI#t9j$hO- z`w;SbK$y>aUTm>ciS97)*`&9|!S9_kUGYcH_#U9Dvo|2>h!}#ZW>KkA>9PFiLyh&t zK=@Ik2q+Ucx9(k77G)ylHkB5D0oV4BlKIq4RsQsmcG_}mxCUmS#0KpuC@Sjl*;Jt`==kkZ! z=}T&npQ!8H4{5@1GoETmQeA?ckKLBj|A1Gi*7B7i>^%^ns>hyKC?8bf?f&vmXgiy zk^n)@a~GfFphDOV*`T5vrIoSJ*7QAXcGdcR1wqo0^RT)n=hh0i&;)>qavtb9;hO5+ zE+~cFqbGVUG-?TG`KQBU_no)_z7xm(`%dh%Ung$y$cEHkuh{L;%|{(e;mvSR3v6!j zi#LWs_|mnHsjd^e5 zLVu!)oK2Y?H_z}5(G;;gx;tVtmhYtf!sxN~0@b6=hxWc)91>Mf30x)dU8O>V@*7}m z3*dEv?NEVctjfN(9XONLcVnFwz2zdiF9y`xiyNOA6TG{o-)LeDVPm_Dpa?cB*q?N% z{ZZ7OCY)jVk%m6Tc;32`=BmCY{HE=Q{oj|2&W#0I!BM8lWY(S2A%C*lqDFW^%1^p* zZ^k>c>>*OyINUe3`&s1O_H4u0dp9KH1ID5r8Ea!i8m%xUh_?r}@ml^yx;fAYC?6e% zz#9q_nIhqSSmQ|)BHp;!5L}8zh`=Fd_ub;lv-=aQkvsX5m6#=Rd1pB?9TI^}nU0Ez+*URJyEEaT^B zM7Gg-X_2pf>jH0};m=GMNOyOb`=-Q!f0ygHQ%i8$_HW=w1Q}P)4%x7md3U!BjWtlxHR(Z zyk*Z37@?w2zlFe>zl5~lpu*}H_#rh?SvviZU3|c!=z*5 zSNaV!wnxaNo3$LH7}7T1_?0cYdB>iw^Z{vS4z6WUc992Y>JznkTlJyAfy`$$iX|<_ zhSV;c2(6nse6_hdK6y4KMkUM)dU_} z-z|8z@Z;@#*C*`l2L%RH2;rTunaX!hNoM_~5NADeacN4Xh{ZayJQY;+xL;m*PIi4p z)V@&Z-(v^Yz=}5>0eZ=3g8hu&Djn`C2XHQwwCz9I3 z^9(bug6BCO2Vn4e1Mcg7oc1pUfm*UL0xgZaK}l(kWEwA+)X8wocUBL!(ZV+61Q*+~ zqnD)i*oRDuuskeP`bKK@8{iTiOb=RbyW&jGcP4T(xQUN9RiXaX-8`-<0ze-D^C4O# zrb@!mOs#?Qa&e7M@mP`wd8RVXz>mw=`%TEEDyWp2;#(?;j}%DfqEQlTNGNk&nv9PV z^s`Np;0hD$ro~Xr_z zVNGVh`SVPk{PfrT`hTh2={ocktgK??G0PM??O*D`N+ zeA}Uo|DjiKDh{BU#Q)FmLS}nn0vi}!h+xG#Z&NEaVjUXY{>%)__sk{N1+$$`Cd0sE z$_+6c5*wN$IffkETjF->M|Jq1XcY`E-Rf(%vzyYJnwxOY!c;9iJ|c(bq99E8d?fmIOFz=0cMNLj};w%_SxHZv{ZLCN6(3y(F zP~(l6+?B5Yl6(gZe6HvRBeb2}@{+e^rn4^vs4QR+mNXq)^sa=53;;cNJuGL7FrCL; z2Wfga;LX66e@BvuBuXo=7~l()1$N(^G{`VW$Z*;fWw#e}im%3Q_@zVD)99SWEP7g5 z@svaic-SB`KW_qK1o}CIO>Rd{I5e!kumr;_D_D#wej%a@AYWCJS7-XYE~#NI+BxnF zUc=^GKi~L`3j2NI{#7tRA`pD~O`4zAr9}l{Wwuf>`<1UAJiZ=MT6CO9+(vQHuNQ;; zQq0ZpKl|#cOj4-%G^M`L519SxH)HdQfl?gBs2L1k2jJ*sSmv0Ar(d||;ntCIv&9a7 z!~TJF(_$|3V5Y>6rK&-GAXSbDL~>osg3?TT!WwCR$KrUZ!NS+!tsZEy$-eI#RE`_< z9pI0oAxi`hS=52y0#@)umVxl={a)<~o6kArNR5VBGg@FBeGVxLIenvaXzTE75Hfb3Ec0EEzbmw@;Lsf;or@FEB)dP|b7j1X~0h!Zqnu0AA^6u!g`Z{ADiVpMntp07li3 zO>mKwecH;OUBF-H89&MNPct>yh2NLdG18ZV+GX;;k44O72}I`)M{O}{+!9F1yUXf` zNvoZy>*SacK!o9GT@of-RJCcN&jwWknZ5-kH393?s)34yO()BY{DTkdi>FyFi5NaI z72LnWx92CytG;yaq_~vl!)G)r0&gB3j^$R9*f*l%@EjB1l=9{|99Wo&qV0 zUU>Dj5O&M|gR)3e)C2Hgd6UkIflL2TmVDo4h5tKcp=L*n{7=e)pnf6#gbv>!Zg1^S zmNBbc$}*Vt4`rcW-mLybS@2i3%y%iv!yU@P_|m8J=%GCD4`s=!Q7EY0r7SA{rYwsf zW$A+MP!_xG;#0Qn?E{*Lu%_aD|E4S>zbMPlt=3)2BDx9ys&MryGEg%6+JYBMsb24o zkZ~EEAEFO+-rV@2W|PrsZ4}*o>Dnj&*Ps^+&E8TmAgdO#3;zUr&)Epr*V`U%+5rWM3 zi%Su^qLoyyKD=Zi^4x`43H0m-Qm;uAk0n2|dr@x}Vv3Oqb}}k&xG14~LTgKq$Rk~W zo){k3Z^L7aOrpb}5Jn_VE!rqkg06_TrqbynqQ3~icoM2axZ2s&wpf-N!QJAZK`Hfl zdC*)2&&cVT<4)7rt^LAVW ze~OgH^%qtgZ=OZVO8-)w5AK{1fA}|TLH*l<^j}q|Ekkhs2JifxDywX`ak@yWs^9Kb z*Sq&QvJJUMy>F%`N1B=qv!>-o^GKK#V5Is4rDocQ8S1J9qt_dz?aK)EmEJ)9e^epL zK()m2se$=bh0#L%^T2s({bJvZ!L{8bEax2o&=5=@R(a56E}i7VYbm(h$Ly!-xjWw0 zbK%d~D0`@0@7$yXfz$1lRea?*MRw*ku_xW!!0JBIx4^+CNdcHBn=#)6tF7|&j(h0r zz99yi&~7ShAx;CPvOGWDs4JYKoP1DgiIT-HL-*~zBlRS%KN8r+p4{aotF!9K43N{n z6yv7v4|%*s@?Sd|bxya6%3W7KjWuGabd(wMWy(20)*!!$331m$8twxU6RyQ>z6-jZ zQBE?Smch0^e`&C(Dm#^JBH;@cNKCGAPrdwyn2-fezf6{%BEsZB-)9Rdzm!-magPG@ z;#mWRizhm0}_HtCl4;YfBKowiYy#CGcBGo<8 zCkoc9+O&Tbne_l40?07<@dGbwh^NX^3uB>N%;J=oAJKr#1(;g65>6mP{q^DYi@44<%DA$L%Jrv11@75&Q!I^s=h}dp3Nln5FA~3-9q{J_d({ zHY%9YHy*Wexe0o`p5x3{mG*@|Ad`yLVR<~?Q(lZnJK6))L@|Nmx3oUm?8-%1@n`(Ktr-*S<>iQbFq zZK(C9H+N*e^JxdEj^%U^E0FKSnSryq1w&T$-(B3eA)&+L>e2mjMF)?JzUWJBjl|hK z^1Z$8K~s02n;7kb^O-yPDqrq)3fua(X7mmG?b`QWE#-ez|is@Dc<{Cc&#S;W)=%D1&!SuE_5#eF*`Q$d3@6L?bi z2Pi9uP-J+1G6bNqhAQK&h6nVXnbxEdTXeGu0oCB)GORI5ogs zOn2+K$vGui3NYAOH^y%sEq$Z)+g#bObX2Y|@i_YJDvymGkfs*(IaFdB6*X9}_% z;yp^=&}t%*-v-okRdQJg`RmgZ1MWsG2}>B9@KlQ4DK916$dY(>lmi)>XWTb>zbsu? zSKX1i!RP6i^EpYqk_J$&l_h~pn`&`GMSbv+$Kf>lSe?ZvoXDr;JT6`@Ya)lv7}1mp z*f&HAdwv1kxX0FqLG0SXsW7qKUlX~YcfbA!bmi2bRQy&r?OweGTvyYwz(o;J&<85= z!!%*57VPKQ?Cd~!K;e`TR1XzKlW9(yeG$38)CZI^kAZTg^NoP~c$_XD)6*&}MW}Ym5@yWk{!=ICcEC?bo@wqb*NC>C)#@ZSHlu6PJgZc)07Ayxykg z7g;Y>!p9mzMI)8%)b>e_Bz!!{_iGg0rNi6*=T}FB1DsJhPV?2fZ~EH5zPeBfHGaQH zy2vppzr=K5mnc3RLLwc>Zbi$K_sgWSfvdBD7By;;&5+nWx~@y_ofz<*z9lvMgGDx8 z%z&D605!@ca5P) zR_XS)^b>7Vr^@Nc1oJwPxi_cu1ppP14zNzF2t%yQEYtT!1%--(&u=I72=#>Q5%9C5 z{IVWe;JtU%s!2zQ*`>TJE@;}YTj1!vG0=89VMg%W(jc3{gG50s4>S#$!c{U+M-Ipy z&aaH|N1Pb}AiGf`ad0BOE2oxm8p4{%R^y(N^R_8zZo=*>lVR9JzA*G8<^y9X;u*W& zWJ(Bl@V}`k_l{=X`x<}%%n=Ou$eI-V8vNj>p56G7Ly-<|kTQVWasl|XqL<$R#+fO2 zD3IBB%{`S?$T-2p4EjCfZ57EfLHl=QdKMJY`LAFS_5+R^Rqcv}PdiWte|@9U!M%_i zu=_7clH-j9zr9r=Y>crJd_n*~?wrn)rr%nJDk@y9MLs9;p z>fSmk$_8BbekOpSW`>mRE@=it7`nSbkuCuV0}*iOhM`-B6cCjTF+f5DBm@HmrNaaS z1VK2@puYRvd!O}v-#Xt~XPxsuv-szkxt{C3@9TF#)QkRcb&FA*S(&Gw$NPtYKb{)) z=2aD+EtW|Mk{WheTO|)dt(0$4Pv&T1lZ^t;`0GGsnd$nGYJB7Q0_Xocw(-PQ5lV2$ z_J8c)Ssr1UyEN78OQ!)}y6j5F8dNgI&YIgTAAT_H>^eFBZGe=YWS3I1z1|r}V7UE$ zQ9ky3x^QuOgHZF=0X(Tl$!)MbLdk;rX%e5&n=Sq8H8z5+Z)qS=cuM-+`EDAV+DmDAep)z|#R(ayBsz>uZc@w*;8SW=%-*j?*{0--+p)W27b4F@c8`t|nL;rm>*1JzZ|1 zB6k0c@r9pwyHS+|Y-6H;i=$ooX}_J23?1^=6_lU-=>$t%Wn!%ZM}!-|wz3uX9O@uX z!eBs+%RIJnhG|~8r2-zHl`|{{tz3UfzR&&Vg$ujKR_=)C<=Ax35~7SjEBELhD>oV` zRHFvYuR$wU_t(mmL?nS$Zuqa28zWAi1Ac;54jTlo_Cq=T7b~~n90;M;8B;q+Uh$8W z+j40+30k=)zo*aiVF6Ew)8`Iw`V3?Q&%OOKeZE1QK9^~U;2#43n@kt%h-l^3Zwd5( z(`V!4V=IR_8b_BLG=o;o@JP0RaCm0baldZ8nDwzE34j)$IyQ zxm4Yn4sLR2Q|;U-+yqE*vV~YFcot~o001&4jq+_!>Wonoz#NEEDZV4^Q5j5mcsA|o zK;dsI*8p0%kUv&V7t~WDFD~59pn9RvVzt8I?u{NUH5H~ABoFnc=RYtzD$mBg z$e_@;E#rzbaZPGv7~#nwy=gI1T@*WVA`&1E&Rvit(B&$To$8k&IJL*CejHD?lx;{2 z#vQ&mava6O@D1D&2#nT9J3(Ia8QanjB5cE@PI1>gnN2a2(h=X;zBqo9%_}8?QNE7=<2^7e$kz^HGCyTlcBV?nM5F zJ{o@5dL&yA0o_^2mn0pGqf)9L%ofYc_?5^cteZhDD_>Co@JfdJPvZ5MuS{fu`9uCE zbrN7P1cVa8cX9R}L>-{z=jdHEDOXQtJ?Y`bWag%m$!P>OYX|bHAs}ZseDQN?V82fA z$LVKHw?=O&pBkjErmGw;*UjQ!SHcUM<(L`>u)Q@G9;&uB@n`F>`eYfWKqg;5MPEJD zLp-VXikHa9s8=%1li1 zcb0}uz4o`-m%Y0(s$I0PcTJM%LuNZtly-0hWzdqQH#D>JKp9gTW0`9e&O{-!IdNMcDotb?gQGGGjwo4fP6 ztc7R0t>*g89l2$}2o6~+KrXaMsY#wOKPhzY4P8-4ms z$f-Owz1%x2UCl2^nU*7Hyg%id%rLs$!#zi5il{9xdZU#O@#Z4x?+giJ3iqGbkNF^; ze?MpbT_U^DTv-I3_>5f5rB{7VUKSvIm!ON#9^{!T0tfbElKJmiYuNf2P!|J(MeEkF z1sd!;IuM>>szmj9!|`RU&X>C8G31H7rlSUDAC8fdH!Pqe$k!H7?4CHSj;=!=)Yz~Y zzt}6T7sF-|3@#}(?CuxIpOHeTdZc6PB)B&Q;?#HfPa>;4q_K1?UyndE7Yq#qGCi==SSt#nKcE)-isL?mLm~M5S}N&vGBN2%Gn}jb}GRFfFv&J z0cy6l-RZuPkSnxYB$#>#IW$`;(J=W<%Z)NNlzK+sGf~}r`b^4OT`sPyd<^gpP^IWM zxD+{q0qJ_dz7{KZVmjRbd6E_-2^F}G0O2s`ew44!^Hkht^DFt*1J!DqAs#N{m!!Q# zW19(QuLn_N2^HW=az;gr*#=IiR-*;F&9xW;6CgSu(GSc}M4Owa>e;v_*PPcMmx ziP(~y+67evt7$6543X}FAPqD{bM<=@)nxb^g3BgkN{0FKs-74WGXeQX3U=w93Bon% znrL^L8i{AZ8TnLPykKT?zcKh0cIzzGH+uVJ_&gupIP2klGB?fPd6+I8rEg05P+R# zS09G;mBKI9+H2`z6U*5WB(b*^Y)Sbjx&(q5x9b`;eH3rMwZ<#Sspt3AJs4xm=W9r~ zky!A_N%_>_lamCj)! zVYX*b!kYPTx$ynF+?6485V0;&%7J?k--m<}DkvT@(ysaS6uocDeqFoLa_+K*p6I*# z3grSB_hQItanoW>WX4_fbn*|JslGWus;O4?-xj^9L8asM86xF=h(N!$|E=L#XTtH8G6}wWuiVs@xXcRZHT0Rz)Jcp!zHO40_C*E zKu%K_Ui|w6r{gQ>+{bLo66toscCG7~c~tW(S@}l}N8}arUiTM7-tCQ$uRRf1CsakR z7K|eHf^SmutYW`i9U~ELzKQbl!rs36T*^Nz|GL z4Tr%J{So`h=e<7fPW3H&$ldQV`WohW?Ze8~w$_Iw{%%d3GeGr59joBb50A0&itBwlgo=*wo=mFZbolii9odcRDCUsq0j>zLHr{2oMBvMP1r=U^N1 zdx2=@vgtXDc!A1x z^=sX)e_g6f{`F8QT%l5<_DBEznJ-w+&e<7`tK}B&Kdz>oswnuiKKiQg#l+1FG^K?4GTC zxM>!2ZD!@hkIvE7Z;>kDw_!*AoScVE!4g4lOfK)u>gZOX?*psRDUT0G6;;c~%OWQBEkegtb&cZI{`>{wu$OU1M*-OoK2sYA2B*Y>g9|YtLU5!QI?7cXb+s}g z!7WBGY)?VTd&x=WCB~zXHiQhvg>k3f4K!wq5(tS}m5q|Mi4uAfC4t}-*}WvT8zpNS z9iSGe-|Ats>>>XqTE&ZAm(=yMwyVibw6<3?L#`Whs~blZckiVbQv}PuVI{7>?f)m_ z>+$g!Dfl;kqr$(4H|~V)=ws$$05<>}a)Fg--5;XZjU|<)+G!Tj;;RFLqU*xingD%ocm44K@CDa{bu08sIN}{jKh`S_delyq-dPd`)da~9j;*OUC?;> z(TyXH$3+Lh-^Y3XO^Qux-F!4Wp}`qu8@6}!9I_4oERx_U5;)iC@=T9h(Tq6IBO^qt zYPH(~q+R19DpPN`@QBox%Um&hKd-!xVf-3z3qUXd1Il}nK>#^T7kWP2DMvRyk-n_j z^}0a=I92()=&BcRn7xr2&byiK6052o;u5UR(a0@MxtoQPo(U&&%pTdsROY+cBX9t- ze{~wau26Kz6-?X`U%tqQ_ez>Ui6V~l-Fg-ZGkfuMNy54J#XtsR-4z+a}Pw3Sa^}Am!d#;$|7)&0pGI zTn2eUuipaV9iKOSB-9{irwkpftAFM&$IsdY@LBs`DMSQV;9g+e)({zk(T(1A>8}20 zX;1kx!cMM+B}hN0Q1oZ!cK2K)5CUli6FBCrGYcU5SIGcTq(pAI49=K0MrN8m>UBRY z0HS7k^6uzI+3akJ8@$QxRsd45@5H7SZ+F?ip1PvPAD+o z37HRT_qR5(lCNO^SVc-2YrG%xjbbGT7OjL`!hZIOP2+=K4|0kogIas6;#<~qGgW8O z#jY||fX#>+u<#3G3+nrnf5526CqTq6@_$A0!pWi7_WC(>2#P}!sCW8%Imug!jo~~U z;kG(P&`4sjsHG<-B6%U2KOHblpb29STCA4Vh#$Pkep(&KP8ov~$QnRxH)^IDT${~* z9q56}ZYY}3+n~~^>M?-kWvRQ`q%Yz(Gv;$j{!*n5kbIxrVRqZk2m)}0eS9VU@|MZ7 ziq@AH$z>gE(221v#AR*>AX9j$yn@$rw3`LeTMSvfF!6{Iju=*3%{nKG;G8Als%Dm> zKr%Ru2ua>{dlY6dPBJ!6XaDHwm@=uPv$3?_q>532hF5>olrfy@H0c9o`X_$)25_v|u@4%;+Lk8K}=iqZ=|I%P-EWSDI3w(b0UMG;f z92@yT3aUn?`OF>WC=(LJ<|E#Wd*Pe0EoW+-_#8`l?yaorS%11^cWyZguejH^{7VC5 zP}DAL{tVBiR;s-6=B}QXxObn60f{eDxtkF^*BI5cIgHB{FEkH7w*?o@#(JP-7n>o8 z6j;!SIdjW4%dmN}+f{}=W(n`WvR3KVeHHED?^?C}3=X}6MX*>e^H=1asZw}<{c+^- zXlMsbqi$I6+&0d72KeaV5dS{cA*<8MdF{d(@fddn_tq(Q2S|WN;W-P-4RUTom}Y-X z&8}}>uMY^(9w-6M$gNp&Es?yyA`;~@)dj^bni86x!Rs1%8E!K-=2v=K8Ism`!O3Y;Es+(VYg57^2LcMq&x&7eAKjlkQkmK;t@pnE8 z{A9r&rtfivil{HFyAB}JS0j#^MH#VPUq(bxNKhUt^U?p^BW!%Uu3~To4I zRlEF^Lp7}VO+;NmY12RvT08Eu7=hb!6s5l}>fFUCe0ge&3O&Z{YV}XJ_c2nVYUf02 zd$%z(3%Z?$EjS&qKkZ&*@#D^=>zQ~pmnxH)M#FY7tE20>Iox&YG9Q@Jtg(aMi1n9nY%1+Z6I=X6+?!WJw zFe=^U{0Bu5T7|7GAWN;TKzUg*O}3<3vK zJAy%ADMxKmu>li|{O*MHRS-`>b?H_eFG^{3V4+%h9&Lowj5nc-rE}`(Vw`bt&O}`_7s>F|K@##{O$MlL_^0V?BrWMdTEz4P{P>|G= zCeqQu_W&pHKEt z5pG$k$KzyYS|@OvT%8vv`t=F#h(a+VZ@j?ku#YJ+#r>>XWyPD6DCG|+W0dzt1_BXM zX%R9@QG2r=(}S2>aIDMvEK z%Jw?v-vLa%O&r|U!B~eQF-1I*mPADI3K5aKLcfu`DP`K_`}$I8P`Z?k)iE`>VVVo05F=32d$uzhlv;VY{bZkpT?X zvF}Uv!x`sK%|=3_=GJklRA>@ATNfYz=OhnZLeXF}IA?9KfIgPSDw|jSZZz7M0^Yi^ z=PGKRi1i+*Y%=sMquY$0lsNi)BIVRU023kWM1`!{{pZdu-mC5X4@S1B<%P$>6f6r= z*$9b^Qu6>G8p{tQZIFWAgEOyUAyfegjRnvY8eBJdPpNvGE;n87*z65i^`2`3)EImq zJE~7DiIdcftrNkbZ0+1@w2E@nrzfKu-%b|XG)P)ikH^RhBQMsu=nuBXQ@3T(#QqK| zpEx0%)Tm}i2ccxkfzIMI>UlYHbzj!*W;7HU4#=`UduFX(gY0$R;EopKL$3%@?sLP? zgxTKl-L~E%E80tu2#}012Qb4+;V6Q$NQ<_9icn0l;})eqTPsykm-P8UJ6&;ZFRC^< zK{t^zQ*gFzLj>G&N+PiDvEiPOB5c*R@v>Ue1g=I==FxG2DJp;!+fU5_bTa%HVq6H@68v2CNF4emJ>u$rvYYFXRMT01z8xD&xpQV9d1;5R`YzC95u*P%Re}q63%u$*L3cgI!Nk>>!_7wFC9SOr6wP(-s0NqFcXX_E#ZvYjsH%Q z5PlF%_K*icPO~bcQOg7MsD8@cUk|4aGN_ED;({q7(@_0RF|WiH8Qim$EQE;A4xS62 zw>uui_WXByr_*-AUhJ8@${e01JOr?f<)>zQz$={kF_SzVlyXk$>NH4A>3W{KxOxwEmt6ax zdL4!RXvkGovcgkJOG$97q#bg|Ru{@dj=nlPq}O%zquTlRSZL2{;#qo^H)-Zm-WucW z+(6nzDNjK33R4dgVQje#uogUbHL>~Doy>bwtU~IM+YWqnej*TU-tLj0nm+r_pNgww zKE%njdA+dF0W6Rvo^FM(Wn_fBSOXZXR)X?OAsw;9$*Y}}R2Z$Ve~XB8p4t*?K1 z{d^CfRct}Ph5Q0y91gh0Dactw4>LHgXvcMzLZ}PFH!^#agkeYcXfZr@@~KG=KzfWq zgH$|*9p$7ccPo;_um=x6h+N`W+_F898Kc9cVH8pN?0GEydr8s3n#?qpaBDZxej=2a z4yP8if)}B(gt84`u~7V6TVr%Mg&sIpC4d)|NZRJ#DbH+Y~Kd{DCdXB zmme>5>e%l{_p@gPkm>n$L;Wl(=SvzmmW{;Na`74hK9_IvXHc2g4Lo803dDZs+LIna zN1=iyu8~es{kXsK@Qa~IIBd9urSUw1^};g*bCD_MoGEZbdd8Z%t;2(3zl${3HwCqU zftMg(@v;ecq>(tyvhE8Vsq02YY~M=xS$P5~VPQzA2CFbLm{zzpD;Tk;qb|{+_Bfte zo6D3NgzQSH{0C%rOvGz8Y;OhEFzE$&1#vGr@mVq`H-tB~p@W)n3vH+eT&GS064w_| z&6y}kI%dWM$qg*2!WKYkiipre@YqHl21FkK){ibn@n122iB$)C99y@d4$;wbD`6Wg zRD)e2cI7&lb$1^c0X0dL4T2yF8>5Y|{*;Y$M8x$Ibi&DE6}e;iELp@uVrR&rgL{?Z z$~nAYVhV2hp;8Hxfl#mNIA0FkD6?VBd-_Rz{Tteru2HHH1A%74xpCN0u{a5TNOGV$WkPFC`s1g zjN0sx+4SY>Y(%s!mwt*QKLiJPVUenrpZ4jE>!tQomPp9wcxh}aT1qZfmK)l^6}{L7 z(BdTb0+NxDDnzs{V9tTQ_JE*s`vtqaWc1Px{10?SIT`+hg2Ni#z~DDp*Hi}n=9C18 z)|HIT)UkeXbOKNzBR39|=eY>5n9AI3!-rZs!%|c4?q0A9>N$+0jnMNfC$u*}7w9N4wco z%P3u(WR9ndzs6Oc91dp;aBl5%@`~h3eEt|sX#f0aUaa&1Hl#%c5+|IOa5cPGJ1BII zp7g(=b@y7loK_%LGJrEKqX4ofDui=7OcS05Ja=fPd5NSC^o%KR{#Rh zuiXL<=AyGjPjjT$ne!RpnOWJWOaWYK0yf%O43|+pUcj00o{br(dRk@hOL6=4EWchf z=9I)s5xP%CFbv*pU?6y|hk)cpiib{m8C9AQ9S&FRQ;1qKqGo^V&g*KHtoO?5R3#;V z63xyT+$(O9IAdRc>uu|uS-gD5i|lBs*V&JxNT|jLDePc|N7ueSpQ<_;X!*NGh^z~7D%y#|k?x}m>2PiOqe zSGkjOuX-QQgj(12dX$e;;{$uy>6zSMB;7{+*6xv)whBG?^`fZwhF8l+qzh(U$i4U~ z-LU*CU`MIy$NWrM!`#@4%qV{;jCn*eJ3hnfP;n9tkW~Pa_Bx>70UOEand114iL=FR zCKx`9LDJ&WeCcIfA}xKsreFH099f3KKG zoK^e7-;)N3vlYuU$e=^=-^AGrP9kyEB!?;UH*q#o4NO)Y6KAjRxP36%7S`pAIP6+5 zkmBqvAEv^8IU<0>SwbwY4had((r@A{`>~I){7EFv;xj2aHw#S~kBPGnkBPGY&|RZV z%rF3MPL5#gl0a;ZT{pVd->y4mJ)bj3BPIH4Gm8$y9rf7J%oJv+x%&o>63bhWs(WG+ zX8cQGwk9gurpeEt&@Mb>%YJ*$$W=P94(95Eog|b5hj$W}+V3=Zj6M!bVJ?jKCRA3; zJ4|10F^k|-%%Z$~IISM3@wh=ayNJcR5Gx70MGTh@XRSY3D*jO?Mt!RZr+V9#WptuK zR{7YZjP&oOfF7kk+jmNB)uo;~A*NXYpsnlxqvwt@N1tsxzTaKQkO@0APa~;e0mqH| zA%DyR0ctY&-mx4XBEJ~71$4)! z3d%w|+(+z_G*2qePdlU8;{_dQ7Jl&I8BYl<|uNu+)*`TwY#RolZQC7b`m#UV9ki33*FOT6qm#TgcVe; zqMP-kMe;UP86BCIx=#uQAcvbKUUs@0L;hWtoNX);$}|ho@15aJz~g}7Z(QaBG5pH) zSr)>Q-lWcNUmv~I$cbLPVCi7Sb+O$AP4>1_5Ri0Sg5N*PnAcF*(FRRWead zrDj~vuJ#p;;B>VIW$nC?BJ?U={iYV5J0E9sHY~-o*1Z`L_kv$v8krtVyBjcSa z0$#fY61jc#Ah(Y&X2F9Kv52&ZT3*VC*vYzT4|2%_Xt@St({u#RGpepb(mL)KmrY3` z$VEP;ODa*a4Zn#$@agBz@TnA;0@<^z9VC7btSrc$U3C(fFi)iiJQ1;~N!_ocPlHt& zyQ3E_;-lh)MhJFr?0+Ko&GGQzp{AsI#`*;{WbR!Pv=MLmRr-?}>2qZG%jUD z$$5RSt{Q=F7{@}i^A^u6X`6@QXAa^o0N7=QoU8cWBccV69xo!&k(g$A@8Rv=HEZ2; zU?diCXiiD5N$k5}5sE?pe%Zq6Rm`N&-Crg+93Au9_am0m9|-~@b7}5ab=uMOLgCzt z1_fslA;Xy52_?KO->dI+JM7N@(kJH*J$|SP2Sig-#Mm?r(@33+9JP`O=!)*Iv!VHv zGf_J>D8_Jt@0<8L%<#Lc-bIBfK^AZBJIS|?HnpQk4*jj~XJ*0!syQT$QGDj+B|8)z zfC^p%IV-?Xg?l5XzrpG|V$XO}zMnhu;4Z!;JMzJ_GZh%OI2YmT`s#3?pSv}%Ei~vJ zuZAXu>mhq$-Wh2T*8=|AYO@7;VQ*9U;Os^RQ3IM_MwS2Eo`}8h$i?9l_ZT*>=Yl*k zdViQn#}$G%K@tDEPXb{E|2j9QKfQbWY4$u0r%l|*Ae$}`^>i_RlKQFf% zu!)oSx4j=C>1D(LtS6V6shO=AMDQ;CpE=&)?&=3DX8p~A^pLGNXyA)w zxWo3GnzRz1?=4pT7Ci8xD^it#`S_l*dy;!`fcIAM`T_JMl45s4)6x=>>xkxfvNEc& z%fyR6?$gR={PI1IBJyXnyF3M=t4rtyc%f4R{4~ z6rfieJi?r0Xj}o{kW?fXr%>_AWfSIi(@iESYhVymWe8!Zr+Bby0m|HTa0Vc`=<-G7 zYdtTUJf$unC1AZ`p&Xv$n5mAZV+PB!)+2`ish~0#rP#q>@F#U8z|_^~ zvHT?uXg5<4QUYwpLN%$J7CoafHQ-{V#BqnmLm8a~6>ldMvOr>yniy|zH8(tWqEKUd`Qm+m>F8MI$_lm2*R5hzd+T5*X+;EmQgI%a z_-ywhdFo(br*cqlNGoZVFHGxX-F?=DPA(LO`QLW6Sc}Ke$1E}gp{o@{0B`J za1GORj!#P<7w_ou{^62el@@h$N^!jlIc}4d7j1(z4w}@+UwTUdkXJw9*qgnfr7hLq z0m0JE1v9UkMt2-f$C&h(&yd_5V_FsD(K9{VoKJ5Of(0m?pVOvoQwDFg;E?1SDYUj7 zTOp*^-X;@Vj&MzN?iFOwdjSOnr1LlpuQWzly{`6MGxaOt?q{{R2VnqKrikGJKuSQ& z(+j22&JA zj5-o-A{kR-2SR3%b77zG+jfhdh#;uNU&t)(qzDfe1CL!TFQ)RBw>ui?q4J=;1nCwB? z*!4$4`vueGrZ5!m3flZDif)BHJFEH*UF#K}VWejQeQS}vObha6xyLU*i6Rg)iTVr! zb`hs&zangk{1XwEn=RaJ3G4a^Fo$ zG-W*T3M%MUHCB_yW%5FF8V}2B_#2UsxdhXXe<%un;4}Z1=u%VU!c(NQt=Fkw9SU|v zhC%VJX7_PGP)5v}oSPp<%BV#~T2d;f4`DQ5TG#o52V4ET#}n=MbGM_Xzq)TeMUb=0 zU&#_!iaRA_+pMPceY*MbmAieS?p8_~>mg zuAb2KoBxJQDxd_qn03*X^o#~x-j-m5nvYl#32!rr0ZSs8qE-GFv75x|4~Hnek~w{e zP^Z!%$sPa}PffL9({&x}HT|E1W>4=ZppmCG+y8=Qb$5yTB{iO4l}q0L9W>k0h*a)F z^Ntp80_Cuae{?C%5zYSSU%Ev7SC@kSlP=}k{M99Zs7r)@>C)Ix@%otJiX^>kHWW~j zgcES9Eir|v|F&Peru<9m3npNnWALaJXupPt_RBZ`+#p3tcR&2WQQB_1<(Jr;;T{3A>QDgl_muQK)MCnvo)lE|5EUAcRo59 zOI!je(N2L&AgALc(60Nk=>xet5&$XYC^%gyrNSeFKFn&4W^9uxO9NnFf(~A zXV}Bm_3+qvsaS=}2^GXIs70F(xI6;_+-?xFO0y{{vmmpKoT0{i#195X^XN%_`htQ( z<$QMn4}BTBgA(?mI7pc^xuXq1#;oj3a=MsuSfSxx#;nct>wg)uUZde~$p;*1pN|={ z|7eZjBRjSm{Vbk?4YN+{(kvFce!$Tp3#TvPBH@aqZp|$loDy^OwW`@Idz!-e@ z%ueUTnXl;21M&RY=A<^Ul(Hm06Lrxsk00zVhz;((d+u1B3!&)6NqOtiRmIm2QZI&1 z6@j`G(NpJ6&>`y5AyJpyh`I!H>;^u$A|CsXF3}KmX<%--LK*c$Q@~g^Qngm&bd}vn zz=&#wEh(oaTudWWS9X$?l?xdDqT!=7M9<*vsWnz-s%G1pY{C+NpWNVOHN>RBbs^v7tY}P<1D@qx}n05y}18(3?UQa34KR_6NmVSf0ZmGf5MMvfAlZy(#@nU9q_`=a^ z%u&T%md&PJfPgfPb1^wdrO2v8c8@+mmrNv^atVujs)~9@#yMNf{O%yK*B223ucuES zd2VIk@tOBBVaomeR}1AO!YIe}N%I0yjab(tY9JonFG(?XlyT*>mPr1%8U<67tb+Zh z;D72c)T+Z{DTKrkz)mEnKxV%c2<@=3TCTgyL{y+YP=OG?6(~+zJP_D#KA-h7g90k{ zL|brc4a>;<3XnFsj47#_XF&MWXaz*eT!4HQ?nRtT#7|H6 ziY#V9U+of~f{!Q&?&0yq1m7#8;z2R5m!rnB3Br2<@5X;w_Ged2g|XpyTNj(9g#%zI z!}br~TUKE8oS!pZ$cL;X(4H%7%&p?^z;wOOF}UiEd)5!J840+=`{H7v?TmEJCpWfseic%gj4~x*WYP?v}ENZTM>Pp4zn+8G` z*TBfkLVWtGmvy2Jp(O@1^tS1z3g2*jf@48^+~9oh;te|`noGAG3vm~OQdt&0y%%hfo%G8c{||(ffrbcSO}WWR zhMeL}Bt-eS9#XM378{$lGn!(#V$-0rVMh}u(lc-nW^~+0IQ^u;wS7yMtfn=a&aj2n znP7~u`G(&PrWs7ZFK%QY0kDJwKv*to0`b#%)X;>Si?nAb)sA_rGPXn>>uA_^%LHC! z<7Lw*2Jc&@7f=0?ZdQfFU$y{CNl`%q+rD67iWDdPbJmpsu%*#l)BvHZNr@X`(V8b7%P#U|?>T)( zu)W)rA(F@@@Fi#28lNYT`tvbHaeb*iPSuaWG@g*WB$8Rn#Av1z=CiJDW+AJ8=e{of z^wx|IJL;)6zA8TJWS3RnY<)7*U$BJur9cxdKFRO*%yT>r+Q*moVxlbaLnwx`xF zEuZ%J`cWY6aA0;gVuV*=sVxWGUFk7lcHbMU$7Ty`FcF|ohDpLpGIkL zHm$1Py8EaIcx#&a?IRpC0mOJINllw$MsX;}Xl2vhW9u@h`c$LZnL@kTohmSG2AuZI z5)h}~w6_EfF@(fKYUV*szLJ1583L99SCOjJ&wYY)&{PC6zcoWh7eHoI_d>UbYYH79 zzfc#fRkrC_-KpWquO@lkYN^{{Ti()CP>0B9eMMxnj&8qVGcWWFMq-BGP1`3l@+xC% z5X0*r>b2iiT|?bnq1i#R;Ip)^YmG-^BHPxQ;51A4535X65p~?C^o4B}8}GG7(62Re zxypc`)(k}#$}}v6%z`C@(zT$B_b*O<##pAue|3T-@!do5HNah&=9;ZLK1JwCKKuk? z@z=T@K0B-NgYU&=`6uMr+6sJT;$r&tmq{$I-taG%psB@2hPvG`XLsI`IUW5x#4bLx zVfLGx{7Y;7=P;H9jIR>Q$p6z}ELcV!Ps)iv0~z2$dML^9AfJX?Clw+5^Zaqj>4e4a z!=*e?*4jGV-(}?X&3og#+IW&{B2)oEPOvPPv&h*&S$++I@g@Bd{T7iYY>G)()eQ3trv(uKP zLv7(}`Zs*7SX(T~S$BKz>u!q~)GT3_(LbB8j)$b5elxlfZ8Eb5+FRGs(jWd@((P!w zkWllLXHtyEd6sbBOhCu$FUatcH15kMX3vPjz1^K}-)5=r9t{*uoeNAKx>Bg(XnOnc zaiCOi1`L!!&FvrGkng*%0`S2TLG1vl-5V{8^v_e}cGWw&QV`oBS>e0=!~g zPf#5i4jhj-@V=E{0aLGH_xEL3<#7kIMx|;90eGL^qhT*RhC=rD`A@ez$n~LsmYx1r ztO!Wt56WY|;1}NeBFF!su2T{wTpfFLg?n)*pB%z#u6|lcw(|Ee4-XVeoQc!1%TvN7 z-E(ZC_$+hJ+<23jM{-x#MkZ!e*EAJD9Sx{|+J&W*!#5BanM}UC?A#}W6aTPQaU3jk z`SFY_3}v&zM?NnpM3n;wS1J5tBGvCt?>w(SsS)yyv8#X6+)^&J0%fb{D`w0|{B<9e z6kZc#=L^T=wbw&gg`Ft)>Qs+;U!{(dAn$9D?2b9w?pj&WlFKQEYnFi_=L^XEV6p8K zBpKg2*7|!SfYzkT*1$B?bWyIQaoVBDlH1v?Upv+Ki*oZ|{d?sd*m6w-(;6(X;)%#-5NyIrPd>Ks zn{Qxd{PnWwPFeNRkH>iz8fHp$cXB6huTeuYda)~Emtw_3Sx4Ww0ol4+pjL}$a&zHFHhAgCc0=!d6Z$@fo0Z-lc^|0d}!@rl`!M_ zvY!N&F*WnqHv}P+UFh2K@0AaGC2f`2e!H8m$>t&zb4C-TmcXMW*-DY@ma#7$yw`Fxj-S-A7;57c7u<*TnwwVAL3Wj=ejAe zU43X+YnD^^vebY3wvCmKMPG+m2gyd*IK`OlJ+GH{UE~O&;h(e?2CdqCeN4mRYH_k_Cb2vi+&{E>nzzR}+_bgp`_# z?{nr(FuqeNrG7CC&B5CHRPxbATI{qd&(WI!N06y&Gd$kxh)Lw*?(Xo)h6tl>4O&RB z=ic*Oiq=#dN`Kp!*JrpSk;go&&E1syJPcb5wMJrH&S z%>p}jsE8CAGU0!<;l?E<$EOk7aIp-JdPdhaImZs@)DYUmw9HBB zxUeb$1|ZcnkT6q5I)KSUo=M4xg%MzN1h|6`Jiu8VkQ5L2A`cssS5;mZ%p`XAQ*=0h&hUmPQ&uMrItwm$-~`4NN=@ zO^n0LP)PF|mgZ*7<|14cm7*4+}<-CMzlZtDFxod2ktA?OENy|OK)x+7vGqBoIAjr$v z%sVZ^TOM;EO%~T-?-Pyk9Z>OYaq|uF^Yf4KbI$bRH1)3x2ypWWWbg=zZweBM3pP>- z2{j98at}#X3%#!yT96#-?hsb)7Djdp%PtNRRt+!8j&RM7IByVnFYsch7Jf7qA7mU= z>=l*o7ey?MQp<~WHH{hch`H_>+f){7loA)45YKv_Anub;<(EJ%P4F;J9CuB;@0VD7 zDKR!T(U+XWVV8W}C%Fli(q)%A?oE7vBlh6Z2IJClE~HPkrVDwJZu*g0Vn~xY8IzS6 zzM+}r#hDQmS-ibjqOrLp^||i3c?sqDv5oosjroCLR~z!K=2{f9_!X}Xl!&F3R<)Lf z#gxrWl}QGcx0hCAH&w)!R+e^FhR0rSC08{h-n`R!Gdh9NRY%FYT|>^UTdt_P?pV)$ zvHo37J+-%SKACHbcZ~yu- z{o?D%*3XllKTrOgeA)l=`}FkmpZSGP8LW*Q9SrnrjT9Bo5YT^*j-fDq;1rPiFF5`S z699P%2qO7R+bJU?B%6%qbbHNM7E09ohG|FbL>{+N=B~ckt-VOz&OOAxW4c)fPY- zfZ6CN?E5un{mFtq=GB(>-(}FFcAOVbwDu_g%v&+?O-z5BH*mB>iU+I5q3^@ko60}X z`RP^B68(+ZATxj?ZIu!DWP9h}UbSGilfW95$+qnTM@UY-&*PNk&-jeL<3w+R?-BJ> zUwKfTaIldhyIn9a^s58G+ss>sEs!;Ul$1L@K`!yov+Tah6+2(CK}S^9I8 zgd#Vji&Jr^bn%-+kX`gc{@54Mu(;q!qE0(ZM4zByOP1XgRx8Yv)8u}auWW6EMTH~_ zo5<7*vY5(H2WvnE;DseD>cY-}5nt%w!VM4dy20GJ0#P$ zT#jv!Hp^jtc72zbpWbkpJ}@J_S%&B3rZlybKB%6jC;dZf^ciK}S(%^(r~10r@nMVZ zYy>+KskYYioI6xxG_>ie4hl`Da;iHDN$o5*G4GGg#_ebb~@*7)tI7q#bIX8OYk6|TrW zvzaAST}!Q{q+Bkur>)7dF>(V){HfZRyZFmpr1x4JqufUBnrJAr$NYoI*QivW4cD{CGbROimpH4|APdVL#K^c5)vmbcO^i=rKBs8y? zGEWmz^e0-mJB8C>m6REx6pDjU#Q4ZQbGU!1g)7Y_B9`av_4!`<=qu(CDmSp#ZAWyZ ziSJ{KB&M7dC~pA~}4d0C9Qg>wzFv_R?9K zbAFtL3+xXIvn?AB^ry)5cpvSy#rO5712AieFbA4#9@!xZ37eepm8O5gXO2z-+QST6 z3ZYOK9(0x>N$87yW`NLzQzNWcT%DIjUE1144fv zsC<+k+>2cYEZW~A__)WV|CZhxq!oC#A`PXRgYUvE&u}Cnp^e%ag)Hf_s3>&W%c6ZF z|7IWhG+G8;pk2gn0Sg2}n)F{!3A#{}V<{rc^rzDHmJ`9v!cHOfS#^AWxyQJ(7s?EK z6Z`14gxH%*N1huVWV}a?7xbDp%j`oiwsSMA9c$E0FsSSDWQ#od$hYA=hiG-t7bJMs zZCO=ZvNr7ldtwEj#}oHvSFs*FW?buuKotdn!aBJ`u(+ssDE-V7I^&ZK&}DF$N%iEa zrJ)VE!xu6Kb%;&%1r!b7*l2pxS zHEc|_MJUYG0Wm2QS3t*uUslslWBl76yhk+Q6-qMm>>8XoKtnPyoApiRkl2TE9q55I zr||4Mrfn|TN4oY@gYa^ek7R>0)*Xt>lU3o(D)}4jRzx?vh_a9m%E1K3b2ILs_J(7**LiWsVDkL4x;Ldba+;5eX zI~`Z&9>Y5?@Uf{_5KbjswoGq``_3bXYaCOw%<7-B+dfAL+{u#@xBl?$=$+ME=u@AR z#qJZqy|;xU&oFw-YF{%I446M|=nPS+-M#gU=U*(|qncQKu&+9KM&(qg0AI9htLme1tr>CY@huz zQ#u(ubNET6g;QN}4U^6X7cmi*A@0d;#FfzUG0&}p=c<#Y*hUAL4FHRTidbR~2vhHv z@}jf74GW^k*>E;8T0hmBpZ)Xxq#7-XbLm&u?)UbDv8kwAEpnN3lFdeY-{_rQaC8^a zJrlau!J5rrpGZdX0Zk$k8K!TEEsW67v_zW_>v!`COr(mry?5`k;C@K(-f|)Y(GNs<-fOTzw8)c4^I}tmOcy} zTjBjVqx*3*dVH`xTX$iWcJR9+t7+1##x*2oEE!&voj|<+LTs?zVpX4tKfEQFQu%&- zrGNv8^d;|8r+qFXDu~twacmjRH)&9?4}26bjsuj+)1`}S!3tP~T|a4zKZ342iZPpL z{GG_62fjk2^TQ>ai2_2t+Egqc6lqcIN*c0CiFcRM&tCfk(hXSgzy+hMF=YSP$eXg=!$i^wBbz*D`TC zL2?Vh-vTaw(?1WMgq5|&$80&##&v#w2Rs4#EG$I0DC1}uHIGp!jiyU~#?E$XFU(aW z%x8BYMis=n29B>M{tC#c2-cI?K{Yr?2cZEOn#v}dMjQdIfP;v}A-T~IM;b&Gt%$=?|KPfFl3A#&Uh$sXE+UffC>3fA@QiV_nXfk{sXh4&h zh2V!r^zK5a98_ot?&{GIaLAq2Dxt@RCuU(m4~4loP`DyPJ>B&z;h!Qm{cViFS5~R0 zats)+B=oU}U9Ct|>#68@Rx$BuR92Cc*-v#JMTvkS$(VGp_|tSr0!aV5D@uDePvsks z08_l;?`VSt_SiLxgfPk9jLK;x98?M0N)?T+i_8HAdRUl6J1md_=S73#I-%?ffM;~7 z16slf1xh?99>*lc78RRa0@Z@y#55N(`-?8ps7nZbvJf=f&YTVDdrhglI!a2p8J_y$ zLXx7?CE5-hK!Z`p=FuSc4(*uN)`=^_f^B}R%BIHu&pUJ2|=Lvvc$r& z$qikN!uV_=NUxi}OoIin29xl+VhEBhdhaNFN|o++ySx-Fuh3)I%_?tPDnG`GE-RAz ztgpvjoBr}CpN8$N@ZKv33bbUD{#1dt^5aWt0}Je_qh zD2_;1zAwEps#=7Fw4~EH;#}KM^ge))cf&3CAu#SMcd&a_76-XNp>HK3yBkU$Ht?Zj zYRUmQQi-$UxzzYggI%}S?k~WD_koUTFZ?Cw0uGpfj9XIu{DUux3ptHK%B4*x z@}d5e9|t8LYGenCFc-$@55L+}7lOa1>Ed#w$@>t6LmN6%Y5niFWp-NoPB0z&P(-`v z`yAbmq9|n}l8_4BmVw!0(Igb8uBArM-cSeE(zaKpG)bf<+nTphtVPysr2Q0+-`xdd z+o8XJcK^E#ODrfY)Vtd3t#pOki3RaxDM24VsiBRGgw;Oi)ny?&X3MkCK*(&Fc9LA$7>4;>7>VDfdG7(UKpcoIei5Hx8FA!T@$n*=4-`? zAJetgtf*d$G0FM}y8@(BDVJ=wV`N48G8n{Suw1bui}d@#PzoSIlV0P4}9pzc_qI#bvtKT7@~j%Wx9-D_M9&DD+}s8FHj>&+EA9< zCQ-ePVl96$xyXUkwfeU7Bx|IygO0~17Z%6yv!mHcs9Xbqd;{&yv;w}o#R844Z(k*OSTPDi-(e07hI^ztL&ISx~e_G5#Kp z9?%e*%grbCXiR%v)SOiU8-LBX7%~F|#Xj>ha~vE+Nz7hU1$iyhlNTV}Ng&Zp#|ofC zJ-O1ai9Ve~x6!F6f>y`^K=unNItu{4bo?sH=J-&nBCqzTgW7*^PYJ-XcJ z+_QYT=lSiZE@Q!i`M`W5&QM3~69AD&r`WD?w0=I7eH@73f>=R>TtYhc=w}wS53h4& zydEMCHh#5u*k?OjpEF#*_n>fg*ogMzEV@f2kLCNdhlW2NQ&9_$J9pOQkejEL0^7X& z1%4)S_Zphlbd1ulS14Gv{8K@1a?D4J&=<9DSb{I2tzzLW@}B40h1q_6z51uzc@)=50O2 z?EXA;_=8*>dmM%xkPMX$<);tV$z^PL9R0(c-F`)Q>#58N5He7AKGqN+gXG2Am!`Zp z6X7fXdZzyd%M2yma-NpVdxF*)miYDLie+cCJAH)E^@6<=shceQ!bWoZM%7k)Wq)Li z#wQcy1+s8cSP|0|6^(Ktuza6IR3yi!gVSCt-6@v-z>=lklL8ku!JgWiTyk8h%)90~ zv*{VhZv)gfYDyfhcSvSOm&DN;jwHS%8U3;p*KVD!loqmb+J5<8@7vA?@jc=D<157iO=sm#&uH0 zU%byk=7(OcX`kZsHZP(y7}l6>IFwv9gt1tNebzzM`QOZmHTYS0;(zGc7eVkC! zX8wk$4`5dPa7eNG37)rbe`N?+2=jGq5*;AldBM2XE!Vtx`nU2v~_vGxl?bAqFJjFC*s*{ zes9>+m^figgohI#5HTw%dY>Tyl^y2DJ37&XH z2z+|w4QQBtxWn_-Q@Q|^TOP{$H+;5Eo_#s^`ep3&tI^H1a<(<=xu}D9jQjZaF)bs2 zd5BXMd#HL5qGk(x%RsUk0O@hB;X1Z-97<*nzNKd(Lyto#QJ|dwr1k>Kr@xkNOQV>` z#@geKsX_!Zx+#}4D;P}%tzA7pB95c32HpB`@r3>?){4M<06iN+wADq z;$LK?9&l5xeNazfXAiLBZm{E1A$AAJyBcvZv|wtU(y5g?)UBA9Y&t@{^?vFhGicDp zk*tQxC-_*KVLqFe2VJEiba0|p!A;HAH&qHW?_Vqw|K@w~;@sO1S$b(Km{V;2XB0fK zkiOUg9Tar!_FE5_>A9NoPS>NXlz3|g5Zi;NUw$#M0%)9IQ{ggaq``_!-HtdPuWq}r zJEjThWToQt@f_W!2TG<^w<^D9Socg6GNbt5H?JSAr2!;54mfci7;pDu`6ITEm3}|r zLMM>D``tWGFK>!fXP;)mfF$vWhi>dVS-b5gCxAs#7PhQzAO!sj+02WwNldeSzT!EL zxGdVN$VmmCLi&fm0|_v209o~3CX>AkMcar2s^S2GE$y)h)h zhcR7gk@WIWwm;bbhuNKfS{5bVGIcr%ap1gdUrOMpppR~aui0zC5Vq7UQ@y>G-rG(w z%G}9$8d1TFhzD3_&HK?-AmP87LE7p+KW|g#897mgr5zUHXKI%iRDU0Br$cBIOYhyH zwt9k0hwGq{Kl(3gQe<=6)0WRleiZYx_LJ~Ld|UtLN3!x{zI0O&s7(Kk$azKrKw@W< z*&MsZ`Lwp2#X=i1fiTwyl=nykWdQ8a-w~T#5Jf3|r_?sGG`cRL(6+>Pd1@o;SZkec zN2A%uAFQ~?x__XKcj$)~P7RpE&mI1Ionb44)E^C2ZZa7=vaf+WbuG5ipO^AU=Y4i0 zOth4?#nGz}j`BGypFcBL%!F?)E?@<-W9Bu#BrDZG(vP}rl+GQN%whFaYGh&GOlMJ| zysbqJJ}>r^9_vj(Rr29y3zZ7pf(Yy$XS%J*UiFNA6_GYTQwkr+cD?SLu^I{8sma5e ziLrPZi?I|)Twh2pV!rz1(pzoT8mPqOKY%MPooU|gr8IM)XsLxIs@v0F_D&9<&v5hJ zYKVq%c1B#O<~{#1kLvhzme`Fa5|wdJb9~E3W{=a982s{xd_~2e?RyLFbLDfBtP>Zo ztYc#NTnck;FX0SQr!@T!gdRoV+ibOu^+Ls|k0`9DKj@i6v^cJfd$oKFN?T zNTfd)EO8_Ru%g&t)VqQ^njgD9isCZl6(mB3E-_sC9W^alo;=l8np>97R?Dq1`C2SAywTKwXMpW(5`rUhus~xXq)iy zXNxpRd1X*6|Hiw^0()COO@{9pkLzn59}2v*-`0dm6h^k+wsE~anY-Hl9%XR5+W9@= zetQLogG_)h(+p0vQDoZ;QA2maH(Yi=z|{=ZU2~Z2ej0~w!8w_uQ9fSQvF>K;G_8D( zH=)jgu!=Ob7A#C817$FT#6hL{e1Zy(4FBaTgP>F_Y(>&Yt^g0_D13=r{Glp9z82Ak z!(~Ek(|GDxU?MACoNtbd)hF!=!Vli^eX3|n%CWl|F6#&RLgnQ6Ygb5;^Aw^>Fx6{h zlIY_$7Ue%SH8r*`D$e(R;QeIkgz~sBd&6H+=h)1a94)L3(UZ1HFn4UUFTL&GARYG9 z*lyCktgAji{uF8P@ZHn0fsKH3DaRJ&7$|s5ED&=g!O~yCp>ph*IQr(XWw7yLIfxRd zawowm{4~&^>Q!r_@_!i=vcrvau^^4P1nbyFhnpY$gS6fpTN5T7st@afbUr26ByTy~ z`n3^s{?D-u5$;HVhzIL2CE8|4IMy%(1RL<5*k&6$*0MDO8_6fyZ$4tkc2Ald#u4-`o_dR<1dUwp9zSJx%ta;$G8`msgK0uC3)=yx(vM9 zjJ!1T%WI$PGPo{&F<~yr`&*;S(8nQ#i$)9}3GFnx!-k6~pOP;8e(o}Cw080GpI;Y% zpIk5tL%lRa_!^jvdxRknPvZZLLz=jbGJ1@Qp=!clXI zi!L@8p?6kyd*sj8Dj&u}$(!+%$swvpR{mW@-669b^9|w*%vDd;JM@opOKP)fjh&ONU>A{bZ?V zEAFn#JHd%QF#0hju372MuCJuWi)A~Qlyi-Nz)Sa+i;eO3?xaM72MsLsr7G3LMQnLz zoqgK6_DwV&bCnQl!1>zkN2A_Bwn?|g>O(k8mNH}z(N)JgFx}g_Ji=gtt9u*cJ$0%U z4x%$rA7z`z9ctEhvXpEsZ=}w<}t*fM_d=OCpxS!X_2~Ptb4?A)s3jndFY&vp<%>9T58K5R-@4Z@L2YG%xw(i@2O&10kRY7ioj){k1{uvltTKzqV4D70kWuTdML6xnvyB$ z3iiciU1kG|{!_^x5ln@OqSHZ8gqJ#4d{*tEEnIo+fr_Yxk_Y)zQXMi^+yybDSq+ev z1`x|teF-~oXS7Zz0YUi)_aS7(){zO>S=hZX6Dlck1#x*HD>6GXGMlU`cTZ1l+<E&FeSJ{9JV|Nf1|qGcmDRzZ z*^og45?np=>^fOi9WbL}v>9~4>KS&y;1_noe1~vlT-o4w$C^@_Cjh^f48W)`JqBG7 zDdp(t3=ZmO92Gj@Z%HD|=6E1HkN^`m@oX@e{}o(booL$E->prQfp)KXkn}~*gT^t@ z6=Z#Mx*4G8bqK%v@Ax{abZXoOwxf|RQZmJ{P`7#|4_cb;k);QogyDvmWs~LiMlr4= z@uQJAN@k|vY{(IW2bV5N0O?6}hY(5PE3g1Ogy#svL>RTfrt9J%C|3w>1;$AM+4N~% zY|oTMr3(_kqHCZe|E%yMNQtsisaRLQw6)33u&0zhB;#R}1>@rZGIRJ)y=`V)J|c3B z%p8yzNkKfnZH{nMP68ga#Ev8U5l(xb8~)-ux3 z?25obKm;%k0pK)cVMVD2)6!UuhWM)BsQt7HM^JfU4Il-uNP)n?z^qs%Vx!2r&hxF$^P6X}9$p&fv|?dt~XO)AWClwQY%*p+#-4r#cfI{@h?O zERk7gl>b#GX#pNDl%$i@RypZ)RM{yX{vZo z#lln#NkT>pUi7!-tbp?Uf}5^^(7=PBzIk(Qh?+Y1@5gyzf>nsrb94nnj2nzbWt0`e z)wxMpD-el_c|n3c03%5fz+qk_0rhmXc56Hpszyi`oVJ!g+wxm1z~sB&{9O}TU|s@| z9tr93P-3{E96h7#Q<25aWbd-`=${`=#>Y(d;R$$JRbCbclX-jvB5B3!6fuZM?8{0r zReQ}gQJ1`uJ%qT3C(qR(;&;rn_Og<22sducI<^@R6{X-K2#Em3b;F2`g6DKIONt7)VuTzSDw)-waKk`_o*@-C$N+@0A7GxiQnhpf1* z$YpS0ZDfTUWj9_T@GtK&dHgeZ_iqxN>v?_%LY+WFo083uM259RU2#~+H}ZKxy5t7j zo|vHmkhDxSOmP~rC2$j0NZ8!t$)P2TD8h6n4MQ!qb5-`3c9Q*_A=9IeK=Mu25+i^*#LuhsrJ(`%X$USul%Vh3m#(#+VRvK_kdYyC zlo@9W=R|}1*Woxk#4*JM_UXKel7`hnMoHJI+Jd9N$7KemOxvR;u}Np#P~?~+Y`v$O zKOPp3eu5Y$>ru$HB?vubGGBmB%2-D*-p#@SW>^1~(0<`J)1%1tj7xZI;u;(dfAlRy zuYyBVbjSn7jlGD=0I*a3rT}K5BV+;GeRD!Kn8^1U)2KrPc_O^Hi8trS65OE0aZKz& zX73*P^I$%xbry_zb)I3kbFL$T+i`ZoowH}o^2mqZBg=+cckLHk%`_W+G%_s)8#_BY za&IbR1tPGY;r&~6tRZdwQ->xgLsH7=6un}l_si3(lq^gEM`97Cw5Rfn+9p&uj*u?1 z0?WLi9ZZC1QGL$(LB$F)a@bz0AW1j95Eon_?*r0^5SkzrV}(z1UV(eBr710p@^riH zU2##YT2}f6w?7(%h%0?fQI7V5g|BEA-0N{{Y3`e&_@Hhp z8a(_sCt5)D>&>D~vaNbnZ8FXRwSwr*@cozCJtHb=Wp&$Nmdn@#KTQG&W#m|pLHnTL zx)JtBUwagBsoTd3NtAJfL)Spj-!j=(!2FG{_+iahO6Hj}%EGE1-AuzNJwBJun97ci z#OA+5NEr|(eQjU?<9m9ivOh3te>=?aOBqRn`&ASAuK&K)MhpirLtRkof{Edw-a?sZ zBJ83RLOYv;T<{+etM@PA#|Z@ToWn}!nW3-(Ri#&Co~;4jY$CDS{!B1jQi8ZV zi-~=1)NiCqII{$DO_y*cCp~{>vtmTi2_{N-@UuNjYlANKSUrn3=93$}h=Y;=>k^Ix7Ik~>`nrEW@aa91~5B|~y1J6gOA z#;dw`w80+)-a18gx4{Dwkxy+b8JGO*iX+@yTt5P-(79sQ`|!XNV8*fViO+l({pDVU ztNZs?ZQWPx>_zPvy!Ry5K>W975!hfcb)wpSCg*m?tn<4U;k`oJU#Sf6a=j)dr!k(-})yp>RTC-M3HnJ1`;Nv{Uj z>A(N2{03Z1Xdl}JQHbI8w?FPYDiv3YT=^JG zfNBO~8BYUDUhglH)II~SkN#PJGm8FFoU7!)ZK!!;J$Z|Qdt)Ia8UYr1j0ssGlAmMj z0T9>}#Ji0#7W%iCk4S7E+{}c-fry}IFcd9F0S@1lb%o=gs>El6Q){dP+2>#VOZ+uXY-LJo zel^25UH9^+e;-(DIxZfIxIlyGBR?o?cNkvyW*mgDY6sca!i`rV#-T?qXFJSo9$K91 z8oo_dJ|ue)!0b}{{93eF({6$k!iGyx6Z_UxNEP;bvv%-);Tt=DRkx47|E)UYbQN-K z_rt)x{>Z*FJ{1>kyU@U8E4Q}?2@5BVX!0fX6^fYaYm4w?zXO(RlaUl4#yjHrotLrm z9hPXKOz?eg%boi=5!``U(b%Wck?9ETmupF%2!g~IwXRUP&^QSoD%Bff>Oi*mDbkc2 z*9P>@VFs3dhOWUvrXtRN+(u)e)!Q&rfb?;$<86Nb=;ID_dDm$KH3NYiO zWeOrnJzl$-P`rw%TffoeWcW)eBJ9oAlGS(;ndCu1ZTheB5{GXNQE)e zdkQ%dBHxTB*0qU#Cq5E;Xs6;PF<9^%0=v(>7|8hCl-o3KQaizSBf`-;m^LU}HfyEW z+@t!fd5)X^uAqe2Wzp~Ndk^>cmd%nx45B;E8}H#4BmZijP+u&(7UuVw^k}yUCWve? z%pZNd`~(fsEq#u<*FHAK>{J4KNM9{wkjG-o-g%bW@AsOZ)&d$lDSU_OTm@%FU*p&8 z&fXvA57Vwm<6o_~gvyie54O^x=kT{e?=CplsZmV7Er?3Kt9T^(Wk(5hUUgG>LHC*K z*Fu@L8^z2;ymQ~|Eghb-+gqC{?3&w9kjGC-jB*lA9qnx@j~(M*&_Fy@qR8Oq%Fal1 zmD^4-D-FW0i+-hfwUU+ByRK&4;)0^>K8^n5`!VfSHZ0d$p}eDRoZ<{|kGIO{oE*PAHg3fEEcUUCsOro)_M z%p9iPImKdZXz$V*c&%=R8;9*gFojXM<$K>aQ(J+SxGT=v8a!suf+^69hY!+b^hH(VwYOsn>vuB>WiK-NFUFIF(+E4_Xlap_&+ zIbDu-(Jl&e3SSe888Hb-1EGpD6_FjguOhjk6dwYR{15dE)zxZGRBOvi_skFfdn> zwVg1=v@RQZBT8|Hy6&4`#O(A;^!UrsDN5?CL|8^PM)9aV4ZV@-kz~3&{NrA`$_SFbnMvcX5Mc0ao}lorU(ip=fXCS& zLAm=KV+?hSU$eW4aJg4e#IYKwQCZnGdN`I$t}krv4Tc z8rU=tpzkPrZfnH5L^Ta%d?>>F?ma>$yYrV>#x-31rGV|T zR@`adYr%A!LTexknvam5^o-ln&eO6U#torM!KT91j3uGrPgV9nMh(ZE6(~?6`h}il z_O~75Un^OnKN04(+0iAz(PuQnF?28Gz))j#h}=c#`KY3<8(VxqWA;2_UhpUmam*G% z$<>hXbdlq$vIz2%*_9-7hiloMMwP9*CGQjJC?B*X_1Rh$G8L8G`4dO!;-=?+Ht2I( z4(=G02Iq&U)>nVqyCwFixeKf*Mw( z59hW3=12E*6hwen6!*dGwmqF?_x6wqw_nUf_jFa>*$YxR`*Pl1wd-F`P^iQ0mrI?T zP-U7d?$7n*m8U&DJwx)5F}Gj6`P$Pv{6`*7l70P-wYP6lN1>|d_Ulc>-uv?@kueA3 zz?6M&$G>V&HRbl3Ptm;ttA7*-W3sCUMZJStI_DA>Z?Asu>>c`?a*iNONjrYpJN#ql zT@n3Bq~L}`cnkDP}UOY2%Uh(b7?a!D4#kbxShpqb zGNegM_5wec0MJt*P3IigKvcC7@A%X5U4<9@rn-m!_FX%AZ2b#lUFBLf{x|=MQViSc z(}IjbfR>iK%r#D8?618bN!k9z>c7fV1Njejmw6Uu8g^r>m@4U}0mcj|3t>1qM7!hV zQhQlkqskqU#O>?PhX1OxljQe&NR>beK$Zs=dumIst=xscrQ3wUre}pz9zP#PRkx;l zJib21ywWp_Km7yfhFxDC*H!CZyz@D(>ns=?eAZ+XT)8K+#uTE(Q60G7NG+^mC8T3v z?`aWxy1*i6JHBn^Pf)zl;JY)I)yIbzgEV5qcoO3tC^22{SB<7!H8VRz!$vle24 zJdOm+3-+TvCN48vRiE`!IILXsyszc0r!Z=g>-@nC758MEqhJk*!;S*b_T?7i4!G`> z*%YP@Ti@#f9mTdUufnz5}*> z|RZ5r_<5lM{t$Rp`vjj7&PMGPXX zt;d1l2e0J-t;Bos5cC=dIqSi{DvV|ab3F29iWC;+tQD3hhYteq!ne^JG!cbzAQ*es zN@QE5yyyw;E`O~=q=;lod9(b56C<2tfrzxGps36;xx)<9TIp5eE>rfR^8SnD%F5`6 z?~^%PIh>a{%0$lns6A)wvZuEu^j8GK>30rJtCn}Zb&saNTc@PE&M8utcJDPjTSVDg zRMnZHtVr{fUiaGtl-&JP3q&>a1-CIYIGU*0R;StMCtfD1J-L1uP&@aqPG|L0bW3<0 z*b_bfV;%io6btu%?o(MxSFa}^rY}*iuOMciT5q5$W@ub*Xf0;sTyNwpW*k^=94TfJ zUvH8sW=gI%Ef6y+t2e6_`*(yfZxgfVskaywvz)BAoENitUT?K3X1!H!{aMWBN4?Eo zF=LRQlap%AW=SXpv_y(6$aaVGK zYe9ff(00M7ab_m)k!+!6QT0FU8K_sIs&Mscs_n_iCsyhp{|pEtPu5cdW*deci> z=x@02dDD|M(3dw5r?`dF4D>nKyr943YcAp2+2HFd5fIuK5ZLIIxaA*zx)qqZ6-?gp zN#6=6Y7B1M3MmT=y&mY-85rKv7_J)_VJs1`wH5w(%R|5rjeK$uZigR!j1RSp3Y?7^ zHjVC|j_xsy>70%^k-%Fw;q4`(+?%3&C8I-|qN62a5}RVuC1Z1&Vx5~3ytfkqgAyaR z6XS!DQn!=HLCFQ%$z_s>t4)dTC6hihC4H4lK50q@OQq0LQ?{DYK5wV}2ulCEoemEs zo!KFAN~K#<)9s~5?o^VmR7NN@!qI7e_Xivr3oiOIM^emlib_lXpvMLrSZgD}6(%LU$`BLn1pq`UQA$)QBU9=ekDQA1AYjc?tI#2$IEpmVTwLgEonP zK*Ogi?1+VeEW)OH2Wc>~{LpCe+v6f4SKXJ4-4b@u)@t#a+(zsZ1zw#uwRu=wolCeN z+>eQW?^ifZK~z^(?pSQK?ld9jT0Ugsu~&L)jfN%&Yn?5RSnTrBXG+#ardz;Zlxgvj z6a*qNp}TOq_VyDfWG|Ove+|-lYp+q(jL<&eyxCI|{S;tQ2)P+w#?Sj$TabFJ z!IVY4HPLBnWiC{{jNs~Qiy6oH*x%agyqUVtvZGjUR>k2}ax`*g^J8qzcf)X(90W>; zkMcCsMPh_a6n>71oE(2cy!!cv)%P!u^QP1>^~9|k zb(x8u8}&aLp7~Ehm;a-o35DAfzm~^n=)U7R-R_fzK#3aj?GyFJ@)%*k?E6H~aWGgF zH_lBNW#CaX3`U~tHm1o438$)uS6+2`1q+A~UbLqv#bZgGRmPJdk27^&)N}=iF{)7p zTKSAl4y!n`Q~EpBp9i)S)W7|U9mM6{>}_)x$xUg0&!rU-d^LSYv$pKHKkJ}`m!>3_ zZFExpBXNmuUuts`>8kGZ$hp-(nLQuR7W3m>59cRr;sA_?_JYPdQ zC!gFzFRj#cO>CXvRyN~G?^48Y4P0~=lbCLScnUD`38H?TZ0k*wyN!hK6vlt*?cq2V z=u{>|BxlDT=n|`9?ZzL3zUb$#T*8hci5%PF3U>GI@maOBI3z?>0Cypu4sJkn9cTcKp0Eh=(=i>JkQ$~ z`+<@DBw3387`HjqAq#)@+14bF_`lLz{6D_2%g5@q3;qAa-gJ~-+CSg;&#FiH5<#3M z|GMS@eG4XDAuKk*F2I0S-a?lW(p6(oE-qTX*KB|_MBgETUVWdUL9Q9feifQ*lNtC| z!uXMlZE$nKFSVq46ytnsK=)Se9G0dNsgZl}OMAOCo`L9knUV@9R|T|Ivj^8@UUBmR zEeg)%to7mC6J`9!0k2U)iG*T7Qgr)FD_t71qKM;-utS<+{F;n#_H&UeHHkDTROd@A;Tv~v3|#vni;-~?9v9~)iZAIl7@&?7;a|6e@$ z3>{~N>9v~iY_6e>#p$;H#gomhp051y_#Zs^bnsybU02{tfojal8@pEj;mK~bjONOc zkE@Nma>Y)bY}(Z+hn=x{StR*Cc=Dfw*8htq2QMb-JnZ?0C#&~9x@pnd_GW-^_~9R( z{KeBV6vAK}hHrl{>X*f#4e#w(pG+0C_=hKVZq8IF-Q|nVS8^RE8x*IMHkAiGxo}~m zM%npZg<-xRX@m3WzhsKGLAuuUs!z_*gT{0SW0f{f{2-r3i*flYi&t`Y`d`m!gANr=wtKA?_&65Xdo&8|30`Ag_>x8%I8sai0oNA(0HCEva<#v>o z==XSw@JH+FoYJ)3h-sI(Wwkh*q>lG1XYJO(XW8yDK1d;qJbf~xw|6!#bLg(GRJNXX zdtMHS)2jAXj7+z0zP-@ybb&!U#5t=3F!<6sNd2p?ot0RnrS_4lw+aef1IA=ZmEwx0 zjkLK=)m!^>3M|vi^gf*uWA6#_%B2~wsObcC78MUo{tbZODFnslL05JhfCG;rtbscW z87V0VA=OE+hcWP*;?VWqh2nBi1gJQubrz?YfhTihu1gONU><}eaH*IRL!OETiu4Z& zzo*xX31zRhj^KUhRSO~yM4D!_J9R)~Jh20i6>Bk-0TUHBnNSXVxXv_Zj5}HBUOn42 z<6h@N6tbmj**LwWXT9eey!ZOcz$1Mj&CdBxHs-&cuvnSBk^r5kT;6!R-?xoc$v-gm zFGz;U5c{E0WrYK;w4yF`z6<|zsp}JWR8Y^i&OfS*nCtD_(q@H4)RwXb8zkIaa;mpv zy37?x@%kNYTVX^5-75Ame7ovC2BLKL)P3G)Avw9S`Kt5J!`TIsIE&eXXL1I$z)yOe zmhaTHYf&4fsw+3nPw;qk^yXf^5($1LuJ%b;{W)!t!0FOksWu{vdbM+n`5tw)t3Flf zALdiG$#ZU<{8N40PB$(*j~vxXQcW*2I(8btV?+un`*~a7W5F1y@J7^H=si`P#bkEE zo{{ri(?6fI*$Mh9r$;pBR!u|rtLM{-(!EYq@ozBaz`PRIPL*AxJaPRiv&2pSN1DAm z0Caj`=_Xx!CsWSmrW!a%lFokp$R2Q#wBEyT0f}!&cUe^Bh5Jf5R%sTD+%z?~q(JQy zNVxF<*I8vUy2I85*O*#~Jt``7;;LfizRm z(|MLf5mKo$O!K|HnOw!Q8@V%GOY&p><{EQmS#q|EoTsJ-1g2NTLpvlCeva12e+{vT z@kqlzdrNfZb~^shH|=%iw52HU99{>@$8nsa-vKzGRAx!SeR#`fL}Y-^{23>51LIFu zHJ7?$!CWX7)vn{G^J7L5AJr_4CoSO8S;6zVo*ZmOP&omB0ek_QzqSKk)KI?e^Hi@b z4knxFg*L}0S&VNP8^)Um1QCWb4BIj#8sk#Bnjpv?8Ib-EjrSThQJ6%BdS}LSXtE$$ zow+cr?L>}aG$8)s=iFxsZ38vQw#Y02GEUL z)h@i_4k^aY)rwV(LdxlmSyx`yv`E)!*N!LVec-NB^lP&5Qan*I?<}M^K4AIxI%X28v!d-K5AHzJSa>|0S_3<~R3H8VRlm04tj-bTjyO8of>?3!h~r z%K3)3D@jPWG+EqA(%P=V`K7rg$@jIftDj1V{%s7=8gO~o3~5mgQLs7Z{z`H6YC}z; z`SEx?XIY{I=@R`sPAjBj@BNX(!gYi8{e3=R`$Lu0Tnre=lY4_5m%MQ=f!C69i%_EGD9~4RoVk}MY>Mm7 zUgoduy*kK!ldejH$7^+x2868jp}{*$cwTU_Iv$uD1`I+K_+(qOZRq2c%m+rJ<#{q0 zWz$W_{6lmpI_uE)AfRZ_hegk<1Exp;q@=IBl#J(_WYYEU1KjoWtRw3M)*{`5;{PmC zEe;a7?=KE1oDIp?Wi8>~6|qN-N0n;_AAm)-_QVa(jfs|jT0tkw9aEVfG?LxOk+20d zv#DD)<35RUBINe6+wH+wNG)tUIjIJ~;mi2s9ruG5-c=yH6La1=4!k7SH~ z-~d%Q?3UACt`>U4CJkU{^Efjjd%;tb0eNEtO4}e#H#1>Kh!G5vBPyWEa_y~BoiG=;bBxv6hop6Y7KQ+xtv4~mn?u!`F{;-jg60F_hS`E-w1_nr)Y3R)_5MuhEOzuTM*|vUm@eS|dGgQl_t_?*8SNhyM|BSxS!0 z^p+tA=#JTCUnzu{ZB}hNUNuWfzTw`^yK>w`=h42M|LOL?56>t^XnsZkIo9QZ%ZYEq zXs{O@UVxFPKK7$0;x`%b*8Cjset|$kT+Ii&EhUwvfN1hyO5f%&iq~V(4qT&_r!$AefpW}$2BD$#PJ!&VI zE0Y*^N#MMET%1rUkEp9*5r2F+F<$>mtWQ$BwY*^k6{1yx3Z}ps-*Bh9@O&d7X`Kn3 zw8LXooLD3GL@>mhkfhoge+b`LPa$EJ3BOWeNxK2a6m?h2)6-b0k{41XghO?aDg}$P zWJf?qi-|w_(V196@GJ5HL;_$23^*)N?C~48az| zkDuA##L<-oiRpE-kcLJj$VNKARQb!BnEjg$ zzTeAQge!b%M6KWv+9q5*^lY2P9F}~}wtr4oQI2YV&b8f~U3`E&KzGg`%@3e#$E*&>S?wVFqm{J5dos9`b&4t&8QB<pA_$>1#W_wxgimpwQ%L$gs=HQ&au1Hs=|`)k<*=)B4w6fn z_aRYVv`wfMzq|N8_7|6bMW6*sY6NYK`~8%2%ZN8i?sVt2u=lgt(yl#-EDfi*JSxt! z1C|XmaSyrWp9n2eUA%1%D4%pQw9~U-K^?4#E|O&+%CaU7C2v zU)0UZS%*5zjMdO#$Cz*tvg7$mIT^2#@3WUfr#Kn(dU7?clLWc{)zLb%JQJ(IB*cZm z&!6Z=+A-nsAqC2ZG3`0tIcj~tc>N=+iRc4}3frGH+{)!XUU!zW-buUO4I;zaeKm;_ zdZDMDF;(vkZTQ#-4Gk#0I?pX#o2YRvPO-n?Mmi65o|{Ih@bzyj7m|Md(wO*0(`q#k zFmIq7lI#VDjCj)!>t6715NX;5<9tfYh)M|sHl3cY^GxUUwyu8xP9;2Ox}Dy5EH0H; zg$UCVEe50+EjFvhl*v$x8CgL}|P4YBNtRF4(rZM$bJkOm(fznp( zP(QJVvT$S6e7QfN-F=y+^^RNTPP^(x2T@If!t~G`DN}u! zUucFLOpiEyTJ^GX`>oI13^j;_j4ZiS!0eHX#T~x~+Z2b@s)Ll|V}H1r?mQp%FgM1J zD7^zK2tDi=Liz*~0A`Br`I6g0_kGFNr}!l+z69MMT&5z5Kl&1qbnSmiQEH~`;Mg9p zT2C1e_H9P|VCH)K*9@+}!rpgPq9svozagpw(^eCXp+F>s(B&7UhaW*2O~J;#pkt&T zEU+NwD>a=drG>Qe(guVrrB{Uw%$e{Koxs1?FSsH{4RR zX|z+HS8(6g4A?iDlplfA4+*@_k&j<4ijA{i*8r%d4pc84?nAI5yEO=Txb@}0)}PiZ|3dGJeAFb+_ISsEz?JlzRL z6%Z6pRdRr_fc09kKU=E!mTp&{4fhwA6=bduOc$VIiLd6~WIXV7T4 zDfLbk=>9%<1%Z$zWmAIT_vlEUDR4MVMa8j?G6kED<9+Sw{t*QIwh87KLxQE?Lk^)s z5;D9>;|MpSUENXUzeuPWfD;fqt_= z={@DV`yvzV9uqCUl$Glze0y?gnG@FllRk`aW%8t0_+$`W^pnT)&liyhR)t7ZV=U#{GH^W6zrSHr+OFg5-0EopykSJ<{jqe|F95SxV`%q1?m! z_BO$u`?EFmCv2bB_R2JP@JQ3SSKt$mSeTBB6Gy5hhF(vIK7Qdthq*8f8(u;I4-kZS zNo_r4IN-Qf9P(v{;(Az7U~l?*$Ndc5bdVV^5g3r1$$ZdN;ZT@xH z3y-A8oCrehM>4{K&M`#E6QpyLiAbqqpA$CFK@<>$L?fn$b0wm73Otr+SxbPJ6TP3?+N3|5&Atv+{*0zo0w2B&(*qu3 zSH6vTFL?t!8*evjqr^KFJbTsHy8ZoZAZs@F*j&-Mxy1On60}d5N@p$aSf$FmHrr&r zK5L#9nA?JW_pX)e+4osm)-_D9zj)Owny44EIah@);JXgqIW~{Le`xwU-AMr%)1hmd z{=VJ%-PfbTfeXE0u0he+9^&kW1Nx1cg-3-SUOfK5rhty-&i$BF<=!iHC`2nu%qs&w zd_*ETX>dq^L>CEBr-n^qkseia{ zl`9@URwhWt{z$Gyd;7#^uio6U;<+nz>EG&K{?DOeGRp*X)+XjLFHhDsrfS>DQ0l8y zM?LTDuZgO*swnPn4rtZP?C|3#`mgge<}YFkPC;?j{-o(Hf8JqN=KCzkC`NhLW*n51BFXA`j`AJZ%#G#s-3Gmb=)(Knu=IjvaV zR8}*Xtu$G+Em7AtU`#oEK3=XQ{0}1J{KcW#EKAI+#QCdJz1?lYB%zaQ&dn$9ogI#P zz3kF*M*m+&i01kf?5r6yg1HEDfTIP>;qKmz&}yOiyz7L`{KT3JqC&Mj;3z~;Ac7r}VzRre?t6wjySXa0o$c>h>iIa?t9 zbJa3FH@4^V=+?%|-Qx|aTfY{6?tK6Fw8GP9mu0-mPqJ@>K#CMemC!v4$Wf7f6PibO zl^2>qZT*zEx7;3Ngw|fBn_!G=Q7WJQja_P#_$PsFhH1(>HX4EOi?;&mzb1=@Te^*m z_|A7Zr0lyx)GQ@Zq}wbfej~@#z_IFp;YJsaO*u_jYMr_8{SHSVu_FgBEss2bXxOUd z^KP`uTWvFKYb!O!`GJ(NJYnI-R>`85&wgdMPN?lJx7!;%HsO|+sj%6y;&hTu7r-*N zWubN#UrR%Ui^ntujgAa!p0JZcZa0wA21vDXF!(+Bv#xtdqW&oVB+;;`h`8HV@s z)oZd}^ICzAHl#_MOej^6^9rx8Ynd-dkzMNXzvKGl0W~&A$NIsGRM8i%?#ZOp&k51l zzdk2rt@Z@o&m90C#_~1OZ@ntN(PCTO;>yf&Jlg@rJCU$nx6a__eg{6@{U_w}*i?^V1x? zw1&Rl(S`P6kwFjGrIFLO&)@DD@Oao4v$dsR7(HciZNc`lAXV&l$x_9?m_I);@c$PP zr5qw6ga1pEZuY?O194+^JM*|(X2 z`2*lAd$MZy$6rMG5_N>up9urP`DLvc4_l^O z+k{?)`JD2vd=%c zLsl97iW5<_VXwI~?aygz+>?=P0krQYaC9ntH-dw@&ILnIuBsQ?z#`a=hp|yGYT9X1 z`n6H-am~e-9EBGyxLp5orgPZ4k6wu_>AHmA7x9E*SN$(5k64004#DJ`DF0De{Z45I zcL}I}@TrpU8wsC7qoDF4O{IKCIs`>Qv4GbNiFPw_eki4}*GEE{>=J7HBGEy+$+ z5K%A;{*VOMp^9qQVOiwkoOTZLa;Sq)#=YIYQV4zMK!8F;#>sdFx@O@`ojodE>YlMd z2Ph3#5%qNN)Gt08c=0edfPB|iqHR{Q1Q1%P-Qlt5_+WAqlt!4f8)R_A-;;Wl`tS@t z71NoUk4PzucYWP`anpMN41^QMs-hKan0gcNRWuk34<6~Y3$yHRPu(EEi4z?tl(far zObMW-!^7_A*lhJ{BW)27>UnJ@d3XXId=l8bzzd2uUd;N1x3oLPbnyk5T5zAiku5;o z%-PKp7}uTcZJ%ZAdTrL&J z|H)un_+O9+2mT+B*xkA{((?a$j>(rHqSmHxHSd9R9J}?;)BiljqL2S>X`$ZI^W|+y zZ2#AD?3{LIb-Y+7w5Q`j-kILC|M47$NsiW7>WiKJ|9Fn?@c-vIK9yiKcw^GK^R8RH z@{8ue^i5ZC9Pis>cZ;whBab|h)t`Bt^-8n(DBW*@&bN@%u+wzj2X8g(>@QjH`VJel>`B61Mdp@>+bS*NG<&hc3|6hj_YuEk%yl zCoWc-o$=dBkxGqvkgcjBHiQ)N>5Ze1wPcUJ&++Lzglh%LM{8ke1qG?aG22elN`oD_ zR9NX3_S=aPm$s8mJeUYK{%m081%5d>z}J=N^}BVB~8 z*i}2XMe?v?-Q6~EWpSV30#B_6Ay1DlUJ2zVYMjJsMiA9Tgv__=1Udpzk=d$2*v(1u z1ggrsACr5fbI1^580_SulIa+1I{2?=D zDOo4#a-nR|T)no>XB=K@d+g?a0Hhhq#cr;rfX9C2M7wD*CR-=oRjCs^&MUChHYYc7kV>J&hSsO5%Sj= zpj_++Sx|fg<9SnMJ(y|QhU6eY5DZwcMYzllDYJ-p-X1|>bA%iVK&9Rl!s9OxEw0om z+%+APe&NhXD{i_{`dZrfg>N_VSF?a$b&>i#pQN)P11B(}gVFO8fTyU>&6dz{TDpT+ z#&5dXO-+Rp<|kijp(wUDA_`Z^xN(Q!e3SgH*JmfStJD@$B;F3rYg+=7cOO8xeXtGq z=qb+dU>~@RLj!t#KaI#Rc37So##(QocXdx{J6?aTg~vfpQ2CrvZAW;@&yy0w!W7!2 zo%p5Cm;ZL4g6z{ho~yg{`5?01Z#?KTCYl)(wgG9&gFKK!h7GU@CY3c(1C~`OCXD z`;|EE0;a2^>#*lo=bJWAOQjv=z_@YKTak>>ofN4#DSK_cATDuBcO1^O zlg^>iqgDG5x+sg6jysz0dT%6PbR%0Z&Nqlq1>3G2t`5begD4V!Sp?VVQKK}QFh#d=pR(0QK1XA3I-%TI z)R!DhBYghUva7s}oMqlNG&M{hZR#FTCzoCjF+i%tWC1#e+g@Rl=V3r^F^DTKrb*Q(eKF za!oK}kkh0t#^Jr5G5GU>ganCy3Dl4T#FxHgac2s#f*2?7>=S=aUeO`DAv0QC*d>SVruVWaLfhINJ@O z%nmLl9W_Kne`BI2f)!A4@e?%fZw&Mp4W$MZ{=_W|CMURYv=>guQAd)@tzE^#!si_E z;!(-Xa(3k2EXvVWL)o$*wyYe0APuBTgXq#$LTM{fGe#@2_&$jZXUrcPc|}7zBo_Z3hcfFl&b_21@qMr`N$EFVr0G!J2Fqx zA;VxUAGQTBRNyBG79@d<%@M}lxd4ss0zE3gG?FBQEp*Z?bapFru_|O&0wq}(BSxXR z0|<*Pbn7lWvk&$Zym{(Ep$HIY%3X+MVf^DCUgD0CkKp+RRpq5T=L1Kp)3zLxj60z&}^|4N;mkOF_VTO5kFL_)yi6`pSn z@DKa9iDQ7J?uzxuDtt-R*T@3#LvbISLvarVB>)D~c+K~38UTWOXvU3WB@Ry2Jk)S- z70MS|#cf^nsi{h@r^euSKF55C_y&LntDQ)bNFoBH1FFcJ#zHI%#X-4`1jZ1GqPj~i z7T=PryaqS{H>T%n{l2Z!TzgEf-gmqv2>=pgA|BBIe8IdXO^1QhT1dn#4I)AW=Tkz2 zaEyb8tC7~6#uTFOBNoiw=@y78@qPy;wph%~ZU%d~*VBZW@Oo%>CRl{bX(<5!Isika z(Cpw^z3DPG5&VFKTXsMIiQu?q+$#V=G9G3@q8iXm5Ak@SwYYxeH6{Z-&;-P@FrL4Q za}=9~-0vRKMF(T~i}cEN1RM17ZUIRgQEzd=tz3n{fRHvEJWkFO1h0g0EqUJ|%{4VI z7L<&a^^X?}2HahrZz(qBs-VKXasiV873+XzvrP<)z$vnbuAxIu_=bV#h6|NACIdag zKz|@{nmS2-VVt=Qhv1-V{g-1DXC(L=1sAB=C|-Qez4#(b;IyN;lV7W-1( zX~OMi)(=3HO*~kHNWVy4nuNz6fcD z^2+`J$Vb;=Dy76JoWc^-A`*!AtcP*P)*Dt8zufViFNJ~*f8nPQflZxXdkQY;cX#U7 z7iREgC3XM$4cn<|a-YBjGYim%9raYXB19L58v0mp4~PNm>qps<0OAC&%5O|{U|8#) zE{ah1!#|IYu}dCVs1?hfMi5wF846%$3^x_b;mpMK(f~VNkd1Aa@i_FJ4WJLmRY-rN zF~v!v0N4(->y;>8#lt83@xa<+<~s)dH$8>M3vjxBTsk3^4iulqaeS-i10Z*Ygcq<+ zFqGC8AjI!gw5$!sgb7zMv!HFF6SdAzFDu7nz+Yhbw;dmfRv}YO0Oc&)7!&v85jach zp_m?mvkJAT1klvS+F=R2^iFHxK@E>#gE>w^vlikgu4D?AzmHKOA~fKrSeh=I1qz?X z*#o#sqhSPBbYKDCq5`1DPjw=Quor@{0a5O7f+G)Yb?^nMdooz4w4+L zTs8DD^|`SMj|rW-Kpd+|uni8Ls+DyIIPKruX}xLeCLO6nt*dU26FUbK~IlB4YI4!cC_4qSLwx(_=s|$%?4ezC z;+I=@=l6GAq2E5d*YWQ!=8WX3{cGR8(SCQ`U0v(QS#7ua6CXKt{9Cra)sS1Spu;kC(TK8=MeR-)5LA`M4|8MV|Smk);xSKp2vrfsfAIdjI|c zpAI|K>XqIrX(>quK7O+qy9tqvA*1YtTm|8Y+2Z`Pr&T&Nif<=B*=MvFaNj;%_e|%M z;*~fyXuLTA?~`M+jo-2ixH8Q5?QToUxFS7fUuTjwDt2NypLEiA=!o{c69^zZcx?Ul zS-YsB!sQr{xyl=B9lf;Jl^_fDSLX{ zM?A&3l<#=P1)CFU!7OY_KGWA2Oe~ia`P#8cWiI-V%Opf3i1d zbKOjBzT0=VSy6RRQDd@Y)G5%gYb{;qS#$lB&@k1XB})_6_xJ4EjJdDgv;V-TqAI-1 zGd>iN%9d@ocpgtbT@EJ4gG!Yz4O-%#z?%y+E%CrfTZTxh=~0Q$lUyqH%DA6;kKk;z zhe;HHl2=Ak#LXPsmuJyK?375MH7~|TT&JIDO#R)7T5tFKU?<-~fBszgjhkdf zmd@Jjr*QDmOW3xoPp>_XYFL47l_sWm>+_E$jjdz_ivVn9cn$`hX?{FX<7@Zf0ESZA zda-P`w;qA{caVWNVfUu>i3Nfly8*7$rnaK?(~#r|M#-+2neZO=3zh6Cckl1xz@!S-<_H^psA!F6jTjIN~m3oaV#<5D@%4kO+g?URcixe7 zZV5Ubi`V^o*rxC8m057_uCQi%jX_Tcx_tQ1F9=^2%?iny`3^qybMLA6BcM`WM177D zxR!9+=gtYoLGDYDQZKIfX+Dy_7e($l+g87vf91dnu|R_&A?gYH*FnG#IznfP4svBA z3R_|s5(Pu~JFfTm9{CS|#VP^8FNcKv;ZzbYA#MLKi_164K@28NdZ$k)y^uDxKRg8S zt)ok(Yh~54y17mpR04oqWDQMiw2JLB_wNRz-oCAz^DX^~A1FiIQ*d_n1>SgA`5xZZ zz?_r6C^*@3{4<|vT-N0&Z^WZ@fpWMXQbZ@-=38ZwFoOuSGOh9cim1jSAX(N_FSHHi zg!xm3j(K-K#9n6r2?;5_!0VgN&uyYDS=5@8 z2&kn>s>)N%2ep(h`G~izLvQ|>2nFdF<5!tbX(|~jQUDbiIkcC$2B3^8OC2CMbU5`B zPY`7QQ#qbktLhhg!PLGkij)9zCZNKm%Wk)%pIi*=w7Rh*BeW!QWPUpH46nM#*+z_eXT%3adu9D~pBBdL6; zJKPhRl|^<0ds>AGo|S{O{sz22=hs!o0j%gXwmu{PFoKwVhMF3^A|lJvotvp-z<8Mv z0pKg^=Q&HK0v-h4(`Bm#oYhfah##Rmm3ZqRci8qzyl_VF)xK>`kn56YnBTC}jqIo1j`mYk z9vA0RmR$!GsIg2-Q-Hf#zOOW)MSo7neJptG#vMgy|CwaT;ZU&5C7Rj?3&lZgrnWJIotwmtrS z{OV;4fDbncSwcHaQ9smUnm8T<)8wWEP(U*l;%C864jUi1GZU&uSOmwxT9{HZ9$JTT z2fuX?>g4P&n_IsQr7}z2P#a4Wmh6|geBg!l8r{=N$5E;~yoGz2{eoS)IgMumns`@r zBz<{4k~qyN5Nk8*lEKh(ags5sA_@Z{rWP2T_^=N&ms=(p0~AGXS!DOClkH3cwIzY3 zN=|_Y3n72ST?V>}F4+~2zDZF$U~pwY{LeqsykOx!w&WTa3^?5;)+QABzy6Byb5xWh<2&+PCF+fJ|rtJ9kbex&IpDTc^hXF;OZmj zBsLuyPK5ao4=s%d-SaXNa;lwFNHzmmh=tNwm=!84gy2Q0rxt9;%u%7U$+n_SF)Tla zg=%CF7Irk*Hltmh!5~{qaT{)9{67hgZpR*%l8Kl->M*KhL8IDqnxicFy+3oR?_oww z1gZ$gp9~G96X-hBoSvLTYj zX&_I05}#XASVQ0u2cD0N$mkOYiLdSg`x&B;lmH)@a~ihMDQS^9)K<0yGMu9F_f#}B zLiL$Ewi64^r-(iN4BgqmT%#dHhLD;Jh@msOgaFZ?QGeA_OH4Q|gJH43kWf~{Bq_Zf z9(tN&K*Iv3^o0!!uE5j2BSJmP}`m_JBFgN$%MRRed zALvKkbfKEX|1C=Jf9jfjmBYY+C*LLIXdD#Ag7%V1wHFglh8{hMHx|+*O)+zGb`b+( zd7&w{+*-LZD4_jU$8XE247k~=>?hZ~J<>-?ab}@f1j?7#7v!TYkzSP%;;Z?ZiRa{7If0DYt`2aBlM=-!Qw!K;OBkTPT+ppQ)Q{ z22zItV|I%T6K=-b@;@-f(kgFtQlT7+DMtJ;;A{Dxt1kU%3M~aIekE|7Z{@6;K3}46 ztc`#&dFv9GjA~(^?+T)GNU(M6xsqc2(y*`=g3=w3P=k+XwN;7HZ;Ww?BCW~gdbm}~ zm?*nZIiSJSJ)jaY3wdD0GffA6b>Zot10gifqez}i5+D~_Hltp)&Oo8)xf#_+0xNf1 zuwha+@0JDU_k40M5pY)q`>O4th}N~s5r8SSy2QI+4siw;&jN%JOk_DtR}ks=VPvFF zv_{o`sbVhU)b-?B=MuDxhcAye@Chs-Ggy_pK0cXLh|aPnD76xLEz_m-`s}K^`+jAZ ziE+4tkH%s!I4Z-iiI>L0lrxcRdcNpTlPH+_aGcjUPTG1pwwDN%XJiT(tADKw+i>9W z!=b`hp`+L^3v1YGir)s{)b-V?22mC-r&_}J(9SMae^{6oQ|O;0^m``%pwziNPAN7u z?!CkPc|2xsO;8nYxk;(D+A2w}OK26O8Ev4!U!@lSZZ`gTu|!*aLat^m0_wnVeA?!P zCNRc2S;Cpip8$Yg2)OynR*6041^ZftAd?vM3=XfO7M5HsvVhmJSZaD>PcZFr<3+W7 z%(GvBy)h(;1Q0x*-xJkDj^kQQgU>K!X#nV+pA5%}m_|PurCxy4l4)%0WV6r}SZE%= z9(=Blyi8b&2N@BK^!z}AaxqCw?VeuuPPd|Cr|z&xrW8QcM>>2I=JAROQ)gw2@^)Ud z;T@(Sv^8aWsW1aNWOB5b*5><#g|T5GCTOUPU=BI+D}j$fE2p`uBW5i}OBGL9 z`*Q$k_-{NP*#H=*5;{ajDzg9@Q*IgRjhJA#s|HUW6$~LFCMr)XN~wUR+Ipy^>x{lI zZFD^p%s7eI56taq;$1#!%d3H{dIR{;2B<&T$R;r?Pp4dN49GvE*4Wf$8c{&JC#XlL)SOq&(0Q__H2882 zDwYBXCy{;KZpM9kNN!DUmuoa4fcJ-+Gyz9?gNLl{hWIle2km?nM2K<-Fv=KdOM&e5 zI}(3&|8&rY%DdnDO~iPM%Tx}N{@P{M20hIl zJnyVn6Fbryx7-WM7(E%FsRrUq%v3s|)#|#IBaoq-d`^eW0)W&&t>HY=RB%=@4^9Ap zsRY)p`>)hJVG|R-Fp*FeMx6x2&_T~NC!p&MW{zAdI{=|fi6#SE5D65-Jl=Ky;9JjI ztBYEY!S)d!tYz3@=-@A>s+TvsPEnjAPk0|;n5{cdjVX{o7UZTGwt@!GTp!weY2-fz zc3kl`CnXv2#yC`)LO#KR+o0eb9>tP7+}=D>l^p9U!qZa_89GBd9J1C6m7znSvS@b- z$a8XtO|hHCg3Wg@&HzN_6!@t!FXX)rxD_crO}cxhnz{C9lgg#a7D6pyF{2rJxJH9U zFsH+a-mTElZB|RHX@aG;R1-z&7YSo>T@MsZheX%D(0~1lWx*zBS_B}%h~bKZ^tFJ5 z+o)1KymfXGl!wU4puTy|>eHw~2{Qr8i9E<{@q1Xw_h8gA56`16`7x&IRl5qmjJMnE zZx8yf80w4stqNi=50mt7;bCb=Uka%I%C8f0uK)zCMf4a6wVaS986)?BWTsYN?WHLL zDUctVYDZPiQL~!zx#uUQIImG)kFfGEJ5{@tpcx`(iTB$XYZKuTm6kJirx~%JMYFMB zK_=Bq4TZY<&CE;Mi9=#m=oN|WfHuIHy-vT*5qHmn-LE@F4vpLv#9u%Pib z_W5`kkGP2FBFGVa)Ha~l!dk%=XupA7Ok_2DyBY=IiYOnA=i{zKP@y`}q$et&OV>gtAN#_^J?RaSu+y2U9i*>=_Vsw$YZR=hh)oQpnuWGTPFK{hwqp_HZ!h_J7IZ z$}RnhZR;mna8F*_scnZBYxd$h&h|f=ukE;208F0j7*_yJvUe!rzwGV<|ARq9xBTIW zQsbni|G1@DGG z!3(kWXyW^M7$8#yVlE9nWJYEH}CUZ6A1vv z;_v*ESV<)+wFj@TVnfr(F^AE%kJ_rG}#OxgU!!gYL3Zv~RBS4MF!L-re zo)^F0#QqnZ_Vz>!vttjMZyjJ5fM-VAnOcDH+P_~a{;fUvH=6^U#{63{`bYNs_xVuW z70ceMV2_*y7hZU22>rlyE@|K+gykF5W&TFLfK-w*(=xuf_W<45ld z9AusM-1%efAAgL3X5rDR_UP4r9QBkEHJj>O`P z3%K^;1BV%()a-%rYbPsL*}WF&rYDGG<@pz|rtzCw#pzx)F-~^L&8HjgCPo9{mQ-=x z(leE$g#7vie+h@S3qSQZ;%#tF1;OG_RfWS#Q`I+j9gGwm$9?SBweOv-Lbk8rlN?F= zskenQ0g;5%-x9}=uvi!b+F3*QGe$j`XZ(EOrs=w$A zJ7$!9g0iFoco(OZX~_}$qSShiernCgOTLbQD&4C_YaD*XF4Z}YO}&IeJ~+j3hzXi= zaX$;=42U-fT;zRa<3X|W6**!rZvs@O)w;r}9$H3&z5?v6t0xZOdwflUu=udv5tNy! zvWdC`BmqCSdW3^M_KmV}m{4RH_{J%5SAGsID z-TU;AIJ%@k91oX!IG|7}EET1z=f{~k&89&*sTatsE9Hixx#R7i$nhG@W12sZYB6~h zWh2APRW{F#eA!Hi)0H0=O+XPxj(LB#o`+{Smd%AJ5+xeuItGC1=*PiA1m z-KkA}&g5@zFIw;haIVdCF7mdYOpI0-i&xIr zo%ySwoXyL`ZYb}L6I49#HVfC@mBf1_T6F*EF0>E^K{93=4oblu{;O-87dkG8ojsMc zOUaXrane=v@8g{d$MJ%~bCG1|vkfXx!T*II1Vg(bX<5O05ZYKy=d-RBZaxstJSbbtzj3Cr^2K)@lfeGl>_NVk-Wlt| z9rFlyebYV_P((D0Z1tFqpU@b)s9N(Ax=sO)1 z1+XwV#BP@6z)`Rm0PsM4o$-;E3WpJJ7DR?$55tIhu8EN?X$PrE?-#TZGH-lgs*$*f z2V!hzM!`B2A1$?wZ{Cs0y|ApDO1;Ee`8=194YkybJ zM^X4y6Wk5_2NNB9>i>Y#9D@mCBRzCK8@;Yk!|F*BLLv>a+>*I5MCD3{RualRT@XOB zX%GG=FeMyF>gv9BQ;)Qr={wf8OT4o>=QYl%I8X6be&CDyW-rnu`%gOBt$K{+40RlR zbbZY_;>6yG{2w{W=OY^Te0JygQwIIbbSL@ukVpO}C;DIff`oWV5S?+pGYxIs;MasH zHO@I=G1cX9f5tfH_?h>kJga5>MLNmLqw|ON50st~&#~nNN?1~XkScepi?8zm!0=@x z9*a8aznG#VyXouw+QTLlWT zw0{y8;ZnTM1u_0S_7_!MjaY;%zH2t?1b=hToT@~4da!;Ax4cE6XOx=VKN{Tk{Cc$q z{~9Ok8re8BEY!?Q#XwOlEt5Rqt(?vsCd}eaOZygqpC)=_Qy5doljev+j<8&`iolVLp^1Eqc5I4PaS#ka&Th! z_2iqGl&P_ou{B9U1#jotViyzD6xk?~O$dkLucuM}>uKQse_Wk^FF5*t5AoOPe15qE z+rCeQ@=prI+zo6Hk#C=}~YXVta#5oau%MgEX?zs!oSu`}GV- z^Mv=n3yXe=^sWQ1P4kh`YI8j`oH6bT2I98S$^){*uJPK=KA*`0$_7HQFN_)#R2-eI zioP$sI;mDSmEvmDQZmFQWOM)M+#JUSoAQLwZud}i9$r-vtA|ukcd4HR8rSw`P@N|X zyRxp^_xSC3=y;`bNAA>w$o+cu61-KqUtaYzTOr->6!vZnBpkYr(j-^`ei`q!ZTDm$ z#5mb$1ox=!j!2U+?~RqW&pmArV$}wYN@9l;bz^`~S-G{H$;QC>1AF<%*ef^5%n!iK zsHEWY*H&UHn!{DkXq zv?KdT|4_-J@xu|Awf%$wc0O9umm&zEl(p8gn> zEG4pYqc;BbGtd4EtNYo;Hpbb1QyFRs?Tpa>gUT=`H!E&ZMUhw0Eds8kbJF=NOM~6= zvcC%^vX}a^^p#XtmD*HKp1qCK*+&;fYHpGO6rRxiV7vWq*wzqRZi%c|i3%Nf-xhZZ z6bx8Yn(n*tIz3G1HO=)&@u|c4b8x}^0+mNBas`R>3nTZ(CI&@UzOXT$p6|})*{fbk zX}cg|v$5jzHM-+XUvQfP>`K(De?$+zBT}!wUK*R#vEY{}u>Uj#oAUDSpc{h0YDdPi zJtCYPbQh5UXouC;4;IWq6QoWZHP#|>D_vR~zxLtfjFxdWmlB~pls0S>o{4k zP{5rZl z8$=yj0o+<>-x%`1p6Z< z$e@(!EixG%%A=uj;9VlGGkIAy?_dJ_cu^$qL#=7NAfW9!b>-Qcg9lcec79CsuD=Ub zV?Lp1{{=+)J(~jl#e~@!LIxBDN=ngBmJRLe4vWG_o-m-(-fP1-5O^{ZOYda64cq!Z ztf5APz&Z07gGkgb*3jySI&-Xc+xa;*ePaRs_08*a;%ozYKSNOQUs&TiQmGSS zX2&Up!LKU6=B!i`-dK$&{(!JuYA z-<$F1CRa-YmljZ>Ihb#jO)+Z2X49^&8{xM#vEd{h*{yTm&GN<7;?kY(hNi*~3l_3s z3Jt!84pA4=9G@Fng-83?Ea@YhGb47|8iFHN>w zYkwrM{pFzZqw}|GC8K7TAv%=WSA8+R<{0hJ!IynsQ^#PIMYX4n3M_CGF?KWvwCu^6 zySAM5eZ8op^6I%YDMI6Fd#r=rmEh}CK6%K8>Pp`a)+W2a1?Lw|V6mY@$k4$3V)<}E zqDJ4RZt)XI5%G3lv5(CrkSwCuuySV44FMp;EFUr`41UTW=~ z7;t`e)PtC+jFz0H_Kwc3?w;sB3;XW~^7da>hlROM_WEnuiWoNW@1sDQ7+CGiLUEa@T_1k;? z>75u3t2>(ev>8IRcg*hc?aO)4m*yN&>-D^JQYc{Fq51ghDHK6v(V^|y$5M`WU3Yn0QO(B-NwPtq6a1#KMNo_(xV7`vpPf9NJj z5?OLQkyfiCk}=c8N&8glYGmmgk>mH0JE1&8k@3jON%)oh!xHD5cn%k<`1hm_nMsPL z1h&W@-qVA?27HuE(f93pxK`YIYTkO}K}5e?9*xQ}aZ@;;;!SLkZ}D)i@{xIswXwPM zVn+k>D6Imp%dCfQ5jforxP!RbfN|vO_&%L@#0QDQFx0>ium2f+|2EM5e>2ekZ3^S> z=zA|DOZGBZpCX`pLYB${f}|n|M=cF`ON}GZ*!Wz*X{~|VYFG_boTm_u*s>G94Ogaz z7%mp+q0FZuMTs;&mh{~!rxW#jERVqrM#C> z_qA%D=%HwIJHqB?pTQ2CJ>|OID@TBX9O~`ZnG3c*HU&KsGVcVjp)LI-$CQ4&%sU{i zJxsiE?K=S2{ElDd%!^suG<0v2&58V(>rlkd;rM^Jz26_!ZR99&P=kA zvj5d@P^(u`?>TJAU-S}orI~|(dMIk(o>%gVs-or+4pLkHq zAkUkuQ)M0?=qr(GiF>E=b^GPz2TJ5+fcAQ#f+g~Lx3-jxl$;^u=C@DHG=0}Hg^zRL zNu0+kR$*_ixbSU@1s9q{zi47}gyzp`ub{8i!~bC8e+Q2JY(xF=Z%6*qzr`k}q^70E z05h_(Z?hd-PD(yCxhU;UdU0WSZeB*sJz8xY?T;_}y=D4!r9WPYO`pNJz5Z_zJXliC zm_c*yjK+X8WSQvBFqD9zktjQC(xiy*Nh!HJhmN}i+)*;9;0?taPBwfD*`NAJ_xA6d zTyKK zKgXb2%%Q4&CLXL8P);7&_dZK}{<##rR9(1L&SS0engOt8acb}0|@o?C< z++1Ivf<7iHvl5{!enMa9=J}Z zu(+@@N>R)p*I-F2G)i!fzy@1hC=!51xYLeeGZ%4>V09W(ofwaIsZ- zONUnqoP*}5ch*mvJgNu8=RhWyAu(Yo&9z%S(KDw@vC;@tsjI??*~V85Myb;wk>^gz zAKwtlkTBRgKJL2fO6`{}b`lhGyKf&*r<70J;H`blw{z4GX^_i9Zr-p?JAT4q|zKhdBQIU#>qME44uCCPr!f z-YEV)5d!E1Bm#JUla>GOxc|j5kQpf4O>-)gWO1tsM=C9*7%aTG+vQ1( zurLI@v)_9hgHE`G7_7hi)EOIoEY-Fy+)ujWF#sOM?zpd?(**LsN2z*AXIsmba!lpP zF^;X5;~}Mm0+;f_0lv-8MrQ9V9={Tks1`O+@A1ePq!u0Y*{|dP)N}k;^{LGK)~lE! zf_sb`Y4{RYGi~MJrE{-)w&~f88AE#?Ujo@YTd_eKk=@fbk4y#(P2P=;6H=Laf-FN4Z;}1eHE6*eRy!Rfcy@1E7Kc0?0SYObM*D zFHdt>Gz>5FZPg-)V^6C^hB5~VHx&Zi!|2l3ZcKfpxw!fPtsDlc8Bp`aguH8zaHK*gq%KakWoil5QE!`|U~8yRC2SdmFZX^gL0u%+ji!HrN|C88&#* zCVtrOD6e3Ml0b z5RR5TVrbGt?vIE@f-){jRUQ+&vO(`64A26|>-x4d`E>kiWdL!AOa*s&~tY`2h<;dzN`Apl*!uszvCG9Iw> z)FT%Qc}7DVUz<+5+FHaZ(I3I)M2@=^&PW~rxB^mWh!k@184%{9nt{`C?TI?dzT9^` z@YA`+6gov-Y(q)vEP6PHSxXt(orI7*u%zpjyhE^c&-%f2Wy9kM+lVM1^IYN1{ zlTL)9;I;^cQNS)39rk?t^lunZT}f}MtVN~6U&JZ7hWBOkLopyoAd%S)jlzfdWZ6D1 zeO_#kD(CnYamr795_K?)GYpzw;8!_zkJuTz=M)=8RA$AscAjc=_hjsa4}U2zXdPo46Hy9oYQ&(7Qygxfc)rmV>F%1;-UkG|0 zNCo2TpP`N=<(ssyVMJFrmhshIv-ASm)u%lst&K|`o}O8@eG$8-#e*`A@3`{e$l`SG zeXn4|lOn5BJ)d@q$zyQZ6@rJqg zaa~$^MF%rJmN=2PJIX&KYKX}cUm00t;vwova{_V4Wh!P;T=|(~9!AK@6Y#FLPT>%d zPfuqu9Q-{-&(c))p`@xwhY=a767wH(yc?Q$%|MIfguq2W*r!-hQ^jn4&~;@BAOLXx zSBVMyG;g-z^=wgmO?C!Ac*9M~DfX!6{2dKDE34!)*0J+t)a%iyP|9(JUD>tB%FmUU zQY(U6pfIcFb5(sMThtD&q%3Gt@#^!!y(g0ssj)ezm+~|=y-^O$R;z^nq@A4nm->7w zJ^)w*NBz<;;pV0IfDy@+Qze!x|FvoElj|^Gv0>qB?R<~?JqNXyUY8!Ne7gIsZF_Cu z+hYJsfk}t#_GY%j_f;`FkSdGJPK>_7QWu|%_fogug{q|<(SXIJC)g;3<)>1a-pjqR zWmU_43J({T`*BYcRtA*EyjPy7&Q`4qYOF7=4B=sltHUREUtE1|u&;Xcg|W())e(Ze z;`dQYn~UFH+Fq#s{>mZX%l9!h)5qHQ`OJ%KO0%-+wF&QsU)J6bC*>aA#ZG#yPx^QM zEP@8Dv%ajqBf|~^R$SS=gLeQ))oi?vSNXc}fdh}-oJq6sIrj1Tg_@=~`cwp*Vgr~H@->fp}CRB=k5UKLHkN_O$#x1BBKlY^SF z<&4Y71D!MXSUcO_k{+wD07U&t_32xz~Xi4KDUYjMf)c`F{!g7Cf%LA#K(1>_7P zl**OR{!cq7Si=(4OIZlL6U(`~wWxZd*}RuVFGx0Q0QVJN*2+%P;X>oOC1*7aWs&5G(@y@BTDJ@aO}0_^TKZ1As9XLgqw9UDbM9)jp*VD zA!pC;88LvW0PKdqYWlm(NL>fWg`6e;u!g9^M_IjEE|W!Zh`x+F0GYw6v6h<-fw&|! zYF(PM<{J>L@f8;cAR4LRliGAkiK5gl;EoT{Gsy9q^FHzVeF?!t7cPO zrz?A%bhJ}!sy}((wb${qjoV0s?{OYoNf@k!8R-OQltX8+=u#KA# zHw>Ptwxkwvj^rXtcke!A9n0fG;}vAK8$j;x%xUQyEcwbYe*-N1DD}Ezmv4`9F^9?A z)j%CW*eked$`U%MF6_DQ7{l5Eu@O%t$Hl7c+XoFTiktCyU*rdfBasVs{XjLvu zF;AE`{2<%(^BeR|NYo>r;l~f)^YKyYo%*Y_d$)-C3h_&c!LkoUCKVesXS8PGpE}?E zMmThQsy#8#@>rF_Wc02}-b*tw5Bqv(`j;!5IQf3OskCJsKWH~{`xCb2bx4ZBlf4;q zln0G2aX5NN^F#<)b(mAs-4>|O_yi>dXJD3;7~v}uv5v}GScKrBZfgkioh+U=yupCu zG7u?>e^mRx4GVU3jM+;v>q@f?(S2pkxr;QpfR6qlKgL#1Gg*4#@i@+}CPS~LupC^X$zScbDN8mOj-zc_anjhy zSNm%@xJ8u$>>7bc7s^THT-24To@{Zqa6M@{Em9f~uqVqAx=Q#A-K8-NKZxmi%~C?C z;-Yr@7*L?NZBD7xb`;hYtfc3ArMOGIN65H`g&D~qPr;U}6JZD?uv_1-HG zUIhYX0y#2FTi9LRWTQDc9L*+nJ|7|wZR1UKcV~jw+~e*vm=`T7fa*oWIA?c3Z!|(L z_`$q!-rILB`e2~VYmfjIz(>J}O996zu!L&nxDmxf)&~SO1l$Op#W%yCH<;i=x`@lL z9t(@|AwisQFds66h=qsCpxklL02)l632|Y91>Lx808le(Tma3R`RW|5LF*+Ba)A&$ zb|v^wMlg2OxRQ#vS#LSDYNhUGHEMaQ@4IXMZkrVfdY$3Bjz_PP(2G=r>r0+Gf^YAG zgf${*m4O;0+?rFh9>ZRqb9b9j4&fWu5s)PcJl9|mxp;kf(wS%vvc(LA6Nu#;u(=4w z12pIs#lr|ey#P@AMK&9=4HM9WbBbdE)bYrXPA&yJVAGl+a?HJT7y`qj2yDdESi=v} zkK{kbccv%$3`%qdKf4ji;5>f0s=V# z7@WnlSW&C^MMnIz3iJ{^-mfTUSXO&zR2yOAYT9L0LE;|!=(~#J@+0!}Kj2v=X!p>$ zjRZ)Lm#BrOiHmr0Uj!1_jQ- zdo5Csoa6}T%YchBqLwP>9vpSL8UV=BCF#0ZBvM zBEkA;Ttos#3+-Y@8Pbjjdq(uiWDOm9KvJX=viR=kl^iC1j`p^TnTGv>ac!`A$n>RKF;boSBHmP9b;eR;?8ra1G3mQdG7fYk^dFg2e+fr0Vxdud281AL`{ zdzpjldqpM)SGwz!i1?XbkUyR@VNMzcRIO^uQsTa_f0bRemp+0wCsn`*G2HCmjH}-N zxiGQ}xpxzw6>+^%=5*jy*n6!wGqOhy+~Mw#5@9yvZ#c>w!pVmG2?`J*{sr-Og*V24 z0dFO6I^q0&Vg0Bvp@w+p3$|vTOUz@T&3ac|0Gt#``XV{yP9RULAnd;WRjD=i1zZNl zHAsCAN{5}PVM}xfiM6qwLiBOa8ygT!62uY^eC0=3Z7*Wx2zu)YcLIgy7x0g0)n|or z7%dlDDwnT6FK1Iuh~UXGB6DRS&=+!7*$6P4>lWT*h;R$J`)tMMJk64G(-j<&B$|LZ zl82f<1O$l=BLj5-OG08K9EkoIADDjO`Gg4XCoWDJq^1(pSloF6R9K3zys(}V)F2&;W7rS{CT6xk0>6( zr%Ov&4zWK>PA~9KJbCuRtj(_Sz*-;d(7B)E4JHY**KNhZ{iZqGGG{)XIJv`iaZ?tgTN+SQR-JLgQ7ie%9fX@)H zV3#%Lb*sjFks7*ZU>l*vl6hy&vspa8xgG;O9ptIlclMrr!EUX45A0?8aXnv8T_>`A z^BP(=0MgaM%SQ0s2rTXX3=Ic7+OO60(#vai-1XhbC=%6ckr>nL-quP6`vV?%sI^tG z-t-7Mah;^K^=+KVgFF^VLzIF&lH7o@VXvTMAh=@?%vVAmqg{Ezg%NO`{*CoJ8{d}d&I{5biap4T&*g1n z%UjSP(ok+T*6)el4KvwCg14WDh~FW{+ZfQE`$T%Na5tWhWcdZvDYE*WaBM#H6z#oi z)GOSDa={0$e=1wVxy%!M*#N)2d`LgS?Wd&M-5eDY8)$H@OBlURM4T@47HOl05E)&;iOyp&I-z6)TtL1(|;lQ zAg=hJS6$s|0P!=w5Ph?K0cb$7K=OrYbBU{`s?mGW==8ej*t;|M8W1z>lnOA?eUP7wZu zH^q3DmPoJ;c04~VNBg+T7tF0?4BH%+UzInweMG#qb3}L=- z)$X%@AbSd5p=4W55UsPB)N#nCrfe-4hci3jbE(z0?U|2wH^V|l9J{nn5yf?iMyjrbwTf=hmBG1;BKwq&RIf)fOS$-U_=vsM*U<^p{n>Fs7a)**{ULkXB;&^VBE-`N+8tD7Qk z21B?DXuIw#q22o;e@Icaro1QoF^2$x2ZlYqCR%{|W)|YFf5hdpFdu7=e+7vHq!`ef znU5DJ-do_o&4bdO^eE8*rh2T0Wl)6W9< zegI~02PI`Y%x+-egw?sg=OgxALQ0#Ks4f+pyhL$ha}7TGpidF6mewgdAf@6zxf62v z`_Rk&%%t|p1)1>cGPhZ~}KYr!-8-7`rl~1onW{1wT`rLao#U1ym`FqQo3Aq_-#n%O} z-Hk_N&P{D!Tb+M-@4~yCnl8uN>jUQwbBegd=8O%z`%rH6VAx<6Q_||Jyup!hjGtlk zd|N0=e2lxK^w`|ll#kMC@$*lP%~D1Sbjp=)JC{W~9XuhRgyzI2@VW0|J{dR4cy z+@Y}2JS#j|_k|Ky9IVFl#`o_w#IPgLd2upzqo)b4k2Rc*lvwV`Ar__k+j-uN5J-nT z<8pm-ar1o!KdFgdg^$#~XZ`IJEiH~r7n0B?$G{KiDrW;M*xP#}emiU1;H~fL=fXjM zupPgfZP4sg{a^hI|20()=T+VyhIPgXN^_TFVI+H^h4+$H=X{Akl&m;j^(py$4+U-8 z+`0kK1|;xc2L0gE?IGs>cndz0~Zgece3nIGW#wbXkoWC8L$4pzaWxw){H;<9|1-+{kFXq z^8jb?Rb^5Sx1)Fns>jp?AAMEk4$EJ;WkTkm@T)dkcq`HBb!71(W3FUy(EiF}U)$Z& zhp2__R|OutR@7$Jhm?PPHx_vz>cR)G+z{pL-T}ClHpjPXnQwv$a7;Qdr?#^nn(23+ zTNJujA8PfsYxbo;)x{MUdVc>?Ja5%Ci+8{jTE+lplP~>^+6$(hpf#*y7A2KWYv7jB zJZ>%Nw4l&=Tjfmhu((r!YQrlqTP48wNH66Ol%I|d#RDLX!+nQdTHYU!#gfxRw4mv$ zXb8fC2GG$(Seq0jUd{O10zFaP%vR-Vy= zN~;PeTKJ@3ns~I!UnQ*jPWllM}F}Ve+W?`@;BruS+=-41wcjh;kNuwX_Tn zeg>6OLgg?`m9bl%d9MA~Fn=HqkCDn&^k8XZ0C=CM34&L4j7{GPrS&E+WReq0< zyIJlhB&96Q%ym;UfW7g@M#{dAmdbdVW(`v=>Jvl|r(?yz+gGLxWl(ew97DuNY6}vX zfW0ke#D^1PmY#Fj#t5F&N`j{IiXPD3(V5Z2b9aIa_wKAZX^?<4X#aI%3Fx-VT)Nk>r*9+F;?KxLxi?pQuB>YK>}jr5!dlXmte`IIVIQ=K zhZ@dTJi%}|`_^gkJdD@fPobOv&ilkb$csw3vi!-Hl%*ENq5Tj9d+*3PG=N=zu^T{gAV_4aPBm z($1T;KxlVlHz&Ny=f{U+qHhXb;Le6Pkb^%Umn?Xv1jmO>rt;G0W%VVIVuh^(M*BWB ztKWlwFXDC$tuM>}Dq%g#+NC;7#2H>kF^|ijX zjYyF?h(jEIw%~0dHtk_@xhhS*(yt>$I0Vw_H&U6)(uRvE|Lg>Sfmqsyp**4LUnMM4 zK2BWFbl-lbtinFI3t3q0j<(YmA9SAKy4|7UbY?!J*jdD|;dO8>88}Zw-PaNbB490D zeKFcK;)QRKPS45>B;eu)`itNUMWm%0mxkuU5wAr3gFjbw_F9I?MaqsBUkrml5nx0%CqiDcZ zhbEJ6;ghao;;E3A>|)NS7Qa&d{PuQ9cxQAjNk(r5o~V>P z#e9W=kz@tY{f3oc(fqkDI%wZ51(-gNFMIE7OxRs_{r*NwmpGCK+s>DP zGcJ%*D95y$IQP7Vt+VK5`174663b+f&1=sa?C2NIOUcV+FwAt%KB{USmF84e)`tlg z$Uh>b$i1*zZ`SKK(rP?S31e1>Lp_lv-Q>^Kojj?K+%4j!omHmyrBvv8qe^_~z8NctYm=~L~}Lg}70jFTM5rYdgs6QL%l=n;zS?M*=q z0R#KG?UcqwTNdmh>VEF*cBWE6i5aFaA%A^f_QWMADUVkv5#s~A*`q4^3`*}8?M_I4 zbh)Mg2nZ?JXEJYO|Kmm0;A)A<@@Z5M9!%waP_BRcv)N%HIPBEbO7mwPdM!U*nol20 zXyD4pJkk9M(te~W;Mqb!<0~5synz;Fvgjm2~yNQap+Lq)b3aI?ma-Gj_X_3dd)Qe)RX)1_GZ?e~I1jXf%ZONlqOKVZ>K zPxVcgQ*Lk1$g<3u`fLW5Gg`Jk;*y#ME|{+5yxIPwI@B~6Fu0PxwLObRHxEadt`>>> zoHH3-1xa*zWd?$9TP1tmhj^9QwbAe zgKG^fKfjQYTHel1t%0PrzIMtym|7oPZ`=C$jf`$(=p?Llh@8lm6$By#hBkWCca|tg ztuy<~Hv0~qT~Z#d|D=Tn%V>mfQqhm*^v!;}xV^JlZuaQ2&Cqq3?auE}2Zhl(T3Zuu zcGen)9(@fM+M3$RU!&qV3=X}&aQs4-$RhrPddAT9Cw125a8ldqqr#whd)ANfp%dym zwKvNN??jBwoM3shnFW`mvGxrF^lfr#2Qxo#{4nrn({4kjufp#9OuQ0- zFl3er8DdL@3gSAjTyCW|k>h0U4KhadW^I}35gi;%m0STp$ohwfj)!cQA*eLOG`};C zZKzCOsElfep2cCYjayVE+y8K^8N^ zO{asj#8FOgr1w)*1=TQMDxwFET4AE=Fk${1QQMh_qk^s{WP?X+P;UV@8<^m6LUaU6 zmH#7teh&H6edKI z4k6-^#UT-IRpMFXcnkBWpP2~RjF1{i2$hm3GKUBwA~zZ6bt2M_5%MWI@pE95uxjEa zTXqNTn&^Hr9nUTW1})$b5Jo&JE6hTRn=L^8fEf>&P5>>%2AabU6S%a@xf|$UZyZAG z80Ulm9|O-;x=k*o!Ccs?x8n)CXZS`KP%{SnR3OZohGfyW8`ydQ0RYZJO)xVmwB3MD zaX$9BEMNbHWOjp2zaTXADc>s<%oI7+n-62V!Cl|;@Yd}0zI z!$k;J$AtG#(M)$_(r}2=v5X30#)Wx=^Jd1jO-AtCt~mYqZfl;SDS7z#N% z^k!}PuHGywAg3%L7XJ_J^z@VBD7Mrm9gCrpAg2hZ)9ol9JUDL?&6o{-2S-+BBlYRv zqaKkN(ZPww`1)blcVut%!=WZ;!spjx-;!Z27-$nUr=&1_D*E=>YX%<2;LnCpqgdoO z4BA>1y@ElrhEY|_P(LDai-BGxvRfF2QR7&y1y%A3!@Nmi-uP?OkrnP6Ss6eV&N^IP zP-AA)Xl8ihP39ABb6ZqDEUFqn?T1D7jtAw8qZTpfMF0#2;EFs3d`w4;0Fc!*WK34@ z6pgDIfb60azAcLZdKL;!guN5I?LLPR6fTmLOW2P<_S1?Idbt@CWIvTU35$A5Phsv( z=G#m-*~FdGSnOWT$tGFXDnzoCzw76VGa8XfILII^XoLmw*~wFMG>i3rbhKBvoWLBYovCQ;aet zwaVV8!f4^*ST&6Q=LEC;H?L-e$m*e3So9K!dyRo!!k~AUcUvb=b(E-Y%)E6bH*5Ir zBt8)g$Bi))A0evRJ&`S+(JXps5+3C(lplC3@n^ZqxDEF$8sse&HNOJTpcEDm0iJ}L zEC9DV15`#1VrzbbNbnegoBcKv$S|U17y>N>2=)d|k)dD=Ern9Z;Q?v_AXPCm!|X5) zLr5hjcl@IldVp zmmUdP)SF}q#B1%!pE`56gC~L0~g=b1!%;L#!!4o0RtM!fMRLT zE*wGu4}QQvrjua>BF)A2&H4Bk%^MIsIz)m9i@p0GVXM(yzLACJcDVMix9kp4s8vSmu*f48YxvPJ6Rott{gaMf zVq~z&3U&f-zGK4BOtyyu9LE_;;lqc?U?Ci3Kn3-8GeUyp?`8yY?T#UW-EqKydAza! z5N|@xgQ3L)IFx&6#Dg7e9ZI%Vu004SaDBOFv%ZmmhIHX=M zs(-7`-OSF-)58BR%I-WG>NkG;{$Mu4n6YKwvWuETQADz@W8XE_?2WQ#89P}*_M)*b zp&^7+V+~oe??c(58YL;q+|%dt`Tmys-2dE%f3M?x-p8Cd=enNP<7I?}BxyIHj~;)& z(j16~zehvUF%WGS+bb-{+$)aoppQkN8H3K&!cuDkprc^HARd&Xle7bXN2Y@-DR}xg zVvpfanMv5A7690r1incCJ7a*3$j2W@U@as#oCMYefWrx;$+o=_PX-*v60-)f@1Kyk6fjq8Vg|l>2=dOulEI!Z$2Zo-ZLGHAx=?m{ssnwtf0%3 zj{;;8nTiy^U_pQq3ib*GtKE9qf z0KFFgd~G1M4m0?H1kDSBI6~?DUiaRnVinZ7feidxH(-*KVK1InF-8L3rC|V^)Bpop z0Lx(XrOs);R%*jN{T%`?LxClU;5NYmZ9%%r`IQ(X#1F=lj|Evu!dp~le1~I$eFi&- zK;<#W(?Z5LEby`p^I(<s1ssWz~xzzObFo9Peic zrlh|QB4w14z_Nfj+6+c%6xcAaB6n#;6AI4;fW5HU-v*)WGRQ#`P@g!Ujs8q`V>2*q zbIEd19|bNds=SGZQ&9bZ=*F^wd8uTkK@5;kk8iAp583CB7$64$ke5u^)o_MURhZrb zcn=DwLMSaD03V@-ZgPH^I7JkYXzR%EK_ZTDG*d_crzRnoh7 ziErOGVL$L4?|Bd}Fda1{_)_xdg<1HU(2>981-Wol=V>DbNA;F>$=`O7WV+G6*~K?) z#4LvX2aa^qpNlYvK4}Ycx(}!rOWnaU&|xe8EiYgNf6EI9rJczg4?unn14#lhFyGrz zpZ*1xr(ROQWm?-Y`1`6K3ZdU6jn*yBBX#Q572p2oX(c*ePoa)Kkv#$UdG|$Lf9$)p zkz@7MXsje1MduO0(n6$tgpFGyKxHK#DM>=@-^1fj;Cq75ydiKVA+x!9gF5(!dT#ne z5=kO4_+p`>RXvj1zuelhWfYqoap|w0F*sujJ$$BdJwvW$$kT!{a1zIra`z4!v)M-?|`1Q*e zG3EYlMmh>y{N{1vD3inS2kGCxJx4Z<6~C=fX5f=M9bwuKe*o-c@%1E^hG{#3T2O($ z6_Tpo%->Hq@jYF_o$lgK7YXFv!DpiY+EOb(L)KxBZn= zVUVw=MV*Yj?_A75DLXyN(V}UH+>zodEV%bsC11+R=J?MYo>BB5Ib zXVaQ1az;7faXqCLbI)6x^l67i7S3MrnqK6(C(dz&&|z}y-di^>A#~|rFxwlvs5S{N(Tlf`v!Pc!L$y7pw;6;&pL)zFBg!rv2hUdt%#sf5~vm{MF-x$H514 z@1BNNW%P1dn;7@XfLa(o`2I8oiN`&@F~i|^X5m~m0+$*VhU_H$>!{R)do2kv5bb;Mdc9&E#i|H7@9hjz2XciZnmgA2e0D$G=F< z`hhxcJaDz13t2wkb*Wkbs9*C7`Y4s}eNIC_zGuHIQ;MQ44|9^R75m;)Ud5nh)0Hs$ zO&+BxD>$#_qJl_^wa!VpnKK0|VuqEa50tw5=WcA4$}ai&Wu}!Hg7R|xQ340=Zm{MX zr&GaCT>gDLI|6r4Z#*o#d)<01U6amB%^`H>)k7k4LY3210LUfyZ31PyC*C3}$~Vmd zw-=miFKEjlxh$(b^PI`26mG_Bc`?2q?D$4TQShlFh|RY)WrO+ZY=+`H3Fl>TZA<=( z5<=#77dM{zs@~An;R^ct`!?S;iX!I5W?bf$E}gpgL60DO7gm3#K=8*|kITWNm&xvP zI2_w-$~J=btPYo{+C3WvZt!7;4hJ$`%5&^3++d&lSUVrnTpLV}r>Si!kvms@UUVII ziy*)AfIbgTqPd}(x>JYNc=<))cW{Uky`%ia&PSGxt~V@NbnoocqBtp#Cr0}<_CHMY zt|WK57&u>sXJv()W%PW;XMTu$Kd8BYZo5$eaon?YekjgMGZiqqqPD3JSU0gD;L4Qd zR`YqW^~#Fqpg>G{K=8#b=&ko_8VuK_D-AiWDL&a>mD;3)}mgUC`E>@Uo{OJ-JCV@@rxhih1V?z@(k zgLF(pX`z5|(x*{s?2YNM7kD!-F0Yn8<@(5MZ`wc8b*81;r%d?FUY`IziSD7@CmxG1 zBGX1JvnC@Rc3PZ$rAszSf7J!h2H@ldVyislR%tS!3+KgOH}w#5TboKQcEi86n)na?hWHM- za{8u3)0_3LsHjcgr6`HCW@QTH8YcPd--jDr?*HyPOC-@#YMr@*(>rfTv_ALK)i5{W z1O-iZ7TztoRJbG8>Fj+2c%rn*2xE*9*Y-=mF-hHZ;wikU}Zj@&Vy?(8-J1y8D z_HkPO+7-paYs_(7oHtoMDDC^5jqH!%qn*=I((Ffs5uB59P<={&E+TW8)U^z+B`8;k zCG(#mH55gKuER26BJ|Guvaht1+*akp&h{i3?VGTz3IgPj&K#CdBBSgtRtH8BO@gYf zPgoQkt-cf2E30l<7ZZA#MS5}fOdYFjDY#)LQP?KQYk8|iD-cg7<8_oI!#{@8Nhtv! zphVDF%cRJDa|(yM6oVu`62GF~OMuUwli|nXnm^rrR6JOI(uJotQE+F}MCLpu3PPO# z-S7b@BlORhuKEcbU&mn-eZ&vANe8a^ZOpR!$1eC4UPq=L=sKL7%Wlg_!x((n&ClzX z;80#`Rl&e6$H^Rjvnjexg>X~G&4YVN`3B4Bvs5p~bG8#>(MoGghM&x|Vswx(9FZtm zo>t*o+qiQ3d{Dv#GMeTZmQLb6ek}aQtCdr=_%j#AMiGqtF*gM@A1@M6J#6G$DSjcw z51jn+lt z+e<1{C~(gd>OI4%v-E6Q$IMxH?x|{%pL$7G^=vwnqBnZfxfRe19x~BsMnDn`e=rU( z+sf3GB~Ex`uluG)DrU5f_)s?KlF8VO+eBJ#0x|e~-o#k|ODm0umvw^Kr{mj$gYOzC z!9)n>CIc8rdKQ19TO|-zGZM?KkJ0I4jv&WQ)zQ#jK%T+IVPfT#ih=prgW@b$TclsE zf6eDkZr+9jVNM~I&8hQ=Zl&klQ&vGiv)!I_DNME2$!Jw|q)@<|yOE78wosvV8^)Jx;=$s{neDm59@tOf>K5N&8&kx4VzlrW%TxQF#iD_GVGi9L+Z;IyTPfkl8eI&?zS!#fhXS$Zsj#q z={5`5)JqK}|AfowW7vqZ?U&LsGd#RW>2jADQL57q24^+7iT!8UqZ)4Ki#W5Ds@|_Z z-vw`Rj(v#LT2wx&s&D>A%Q-^on-}U%Ykv897sQh>2a2rs*rh!eY6QO6pSWOmY5g4a z>Q5ck^_=B6a6NpQlpFUa zQkH+T&}weI;OjuUetcCV*jFcV$nKF6Rq(_*dfFEGaWr7mrS>cTRjcvDgns32MIg`m4?KgGfhO?jq@eNqpeC}0dee33GSSYFzPHQxq@?- zz#P(zQR&rZliHrM+4%0+$q*|(GneJHcJ$4YZJ=vzS?oK{F&r^0z^btNI9ilDE}(Ylf>>h@CzEX zKMSC9?SMCzy3Q`D8>)9RJ>VO@chi_x!$excG)&E1mF`;-U;P3|d#icknuhfg4I4QP z1(y>3y#%(aESe%LVvXH#*f_gI4a-(V{fjp)D++rQ2l&j`|ICD~FoJ+sY zKDf9?yF_~Mi&OUE<-KJm&=LxI)uGqH2(p-^ZXW2pJ=S}>sAqAg*ZE10 zxUYv+1=%Tp?Kr{j!u0!7^!vT_FO~FFa1Op_(;d>+8~LP8z^JthiMH_?RIv>TPwG#I z7);e_uyN9`1slw!7|i(_%+(q!bPO+)4bS)wN2*3Oaz=^m4^tumhTH&}k4lE0^bOa6 zG~88}#exmDQbxAIXt!$(cRCDrhemdfA!6xj+e%$qPhh(#h2*g8@6yTNc+aSs1tT?vWJhKSsLR^ z<>M?zUtt6A4jc0=8S{TJ7C12$Trxh#2B;SN5GetGYMY4Kn~3>*5S;=@q?$+;nn=}| zoGbhg*=i!Q^g*KI!)($A>0uK|c2jsdOj>k87&u|6Xi6ahCS-d}xACoZO% z%DPTm9yYzOWTLWeDiz)(r7=-Wn7DZI;cBm`M!>|?byKzMiR*=?JmGp5o|#>E1k-Dt zWGioKB2Kb?nFK)1jZYGc+09Lrr)-8Mb$^!uBR z&3)M|?xb39^I3YrXLJI_t(vFYzF2sqn!Ep;WGJ5ss+;lgvAi{G?$B%*5;tWYFykFC z9ng!$oLKm|PWx!g+DxItr=~r8tX#iLIX6!^`b<$CXjt8yvPfy32~V93E}Xq9Y8f3j zo4PccVm|BAY?UNG=VD-KY&OpHb2hQiGIZT4BFuUHcJisOaK9A^~Es?RvaJ8 z?K7V)bTzkRH+HBqe_L*D(Y%l&KSStUbnmrpd_7NGUyKZ}tB-o+ToB1ymkKh(9sdkj1;e~SfMH2hMSb$}q>uiDfT=17A#-A4B z!!yg}^DAGhyUiVzPVAn_%+AKyY=D;Y%jdqyFRk-ge+*yhNnH*#zcmB0nPaz}g0J+k zFYn4M-Ys7lcy0Zl-0ra1I_G3oTyC~Ib#bNKfef-*?On)dcKFiVHDkZB{bjjfeQxh$ zIy%mhJ_7UY^$cVL^J8gY(|-E&3x=+5{?C-v+E2@$%Jzd(Q^(Er@3O7WFkud+NQbUV z^er|c;fvtJ!8x2p@HrG$%^L}%f;U1iYbhk#nOkRMYfjZpQ$#T zuG4E%b3LMVdv%T?Mb=xxt4Vy8{9jio>7rKk!!`_JE3w%No1m4A6AVIZ75>#q_zY&D z(CNJ4$GEB4IGK;7bsss!oR(iZ9kEZVreS(dY|o3i+!S*nEjjoOe?(M#>aBA+m3L-# zupc#dW8Dmf$DR2Cf~wc4!ZuHD6vI&{(xSU0*d= z(OO<(zP!wM#>x8ir?VrUzE8O_IJkg(m$=TjF7mn1Zp;YgIGazqcr`m)@_)SZb;GsZ zRdw3Ys@ZLu@1w}|+ZqS1w@=($#WpymKf?N4?!_-SXS)QP-Ul%==-ka*A5Mje{-jQO2lF0hU;_cZ!99uFG?@3BvrUJ{KUKt zAcgVUB=~Olf#>djb?>bEgzMXUTW(2|S@QU@{2;=X!oHR5<{{;_z5RLv=i?CHcl%tQ zd&$N|`Q_Vu*Vi6uuBM;)l(Fm>@#b@Bs@k)u&4fU=_e=IcX&ZUqt^D{!fj(!ymg(m5 z+w*+0r3appEsojC?mA44b}gInIooMWw;C)k0EhX=qT8Xq3n`i&D}_6v4qNZz+}yu< zs#dsFYOKw^zc|$U zRDX4ws`uOgV`R_UK9~7;VZ*DB$?ItN>*DhK!WZ99@gG;FeN>oi*QUMGtJjC;xh?F}mHVNm;J0sx zr+#O??R9?np6BW$`OEKZ?_E~JcM667`-^P5-F17fz>myEcbi--Kf(8c(p-=gYf%=< z>esQR*Kfy+c*Ba%%CoIL`ILhTzlZ4!0adVTTE5WHN!D-(PP1ykO{=?@elZ?oP zSn;XM=U9{M2einjS)JdOQ6UeXh7>#xdCURerWURmk^9db(MNEZs3t63V4h-N9@tP)qVC)Mx0L(PJ1?35z{jeZ`F;uN?k_%ItBZEp zLecR}Sa7ZhxPd#gLPf3r&I<-ILgcJa1YOt|B78h(4l;&o+KSIxO(>d3xQ|V+493wB z;8e6K?+3}3$$u@U)xISBByLG=nY zMh6Gf9E)C{Kq9OXu5WQ-1VM&L;S5;hQr!&5!i$Q{MTvg%@iBTI5BY!`Q3}yqs z6mU$55gv)=4J?si5@2(7N-fGXNhMN@4TnsO2B7n7OW}K?FnNaGkqQ)HMgRy;S51Vtrausnpg<&WEck!cUg?zuF}RdL zZgJkH!AI@BOYnBTB#WfEkQ~ls4Us=b`Ek389SOdl4%5XqjsBkg@$X+0@1;$Du+Ux| znFyiagM;^igp%=!KU>4||6QY^cCHn0{}UvLOh*$8fTBW^E=)Y^2>bi2??RbdYlF8S zEB(;W-AU!I89~S@;&7tZ4E`R%{gaV-< z;<`VB^D`h4!GNc$5O>1lXi|9oc5eLWsU;VH0wP97k`qFMPd?n5`T^0&|L2L*E`;hP zc!y}a=EZrOKAV8@GhX547p2vpw_5_+z0>jQZ;Z;Rl(Rx*fK_? zJmb_Nm5?+1gdah7mKt3bbDC{_kW|$p_p)S;5{y4aMT!{}@%|vGy$ol0yBbU?Z6|4HlNvU2ENnX+K|!Sd_yU(46YT;HRF1JD1?m{2#krNjWfjxneWzWA{(P2gsl zbcpQwv!nBmYZJVLUq!m8q#PZ+`$}W;=&8YrOM-auR{#XRKKIV3uX_j@DOg{7|H`-J zH<5IR^I)|9R_DR%|p{Mk|jz+2}<8PoTyJ+~8QWSaA6Vk^~9Ls8ARUBsu z`j?0OC(yn_&GP@T+n~b$6(vq>0*MX*W{p4!qEx#e*VZ~NuA+)FHLFs9f`WMAP6@n~ zN0>zKhnfs}y`sz;msDGxK|LjIqq>4{wh;>MHT3V)s>}_^-8y zR?Y3lOjm%~BbLLD!}l;xSNGDXRKRqN>kAU`{gb1_K{Qfcs={ z11Khvj#e;?{LQiZ|E(xh3_n)5_jz&P5vJ!UtAO{ccGDI({VXC=Ztg|(L?yaZ_iute z^~{R(G=+20X}pAAAXdZ!D>+x|K2c-;zNK#ACDz(ETRWq3<~d^zSYhXd$Vw|ULFcE^ zaE{FgpwjH)L&ve=prj2x9zXnCcitth<)OA0t8HmJnmM(S;{(5ZP%+v({Wn3ktO3N)s{_tgtN)}Z zAj{LlHm`b*$|x$oI{HQa_%c2NHpK~YwX18taCns6m_O+y&@W=~Bx0PiQ{A7Ngxnjkmr{xOvj zn-|4fseM*UxT@8upDQ)5xHs9k@XS(*!sYExk7nbl0B2HrGIa$LW20eWHNk$gnJK-{ zaU43wV6%j8W;9Twnjo@>83&W7Zv?qCIZBikJ<9R?TrICWMvSS7WhU0tKcRHR*aOsZ zS4*olYIf=wL=Q0HdWYOQj7{;LJ9)bo2X-2VzW+%_+=> z)eSOYlX2Rq>Yrb3RWP`=-go4g(-O*mR@=TmttYJhK*LNG$ezJ-q4C48*Eb@NmDASp zRLp$34RmD}8vvQfHg@69PJT>8+^%i#Vt%-@XuRi;vePG$+hP6A!Jxxfi!8N^>=t_` z{Q?8I&_@I_eyY7UqVTOZ4<|e-y+0P)ma?Ftc|o75C~;gK2T&CydDqp;R7J@Tgr_P> zUVP{Kto}a~CG0zyUyJ@TKEIZNH|u^a|1U-9kQB?|d$^h?{y&ORy4LxB6s6zmdAI9- zZ#@6ngm&3_f8qi;mWg=6x+ijw&Ac40vk@PVJL}Hr@2$$`r+@w`O23iblxD#G%pJDM<3<=`9u2-YUja+7f&wx_fliF|*%%)be`xOOMZh8)c~BnT9+ie(D@M^S

        @G()F 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 Xe3zCQqfeSMJ~%@3f!kxGdej;Ke8fup literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/600x/py-try.gif b/vim-plugins/bundle/xptemplate/readme-img/600x/py-try.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1f5794079e10ba6c9b2b0a48bd700b36afafd8b GIT binary patch literal 57909 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

        Y|3^0WVK2FP3CqP9vG#=gjC^VZ{fi)JC{IDEN} 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-box.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-box.gif new file mode 100644 index 0000000000000000000000000000000000000000..49a546131b856075bfdcdb509872f06f95078246 GIT binary patch literal 71186 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≦_=sA{ouKFk% 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-catrom.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-catrom.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c32fe76f731c4346f37918dc04ed6f18e34524f GIT binary patch literal 84369 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%0A{(FidL zU&(E@le@LH%?P`gnoG@fE>m?6xQj;=;Qvrj`l$e!Qmd)rn%_M1PE2iV?>-MT+O110 ztKhy`rvCp@s4mED+NYwF+H=7Y8>d-#uRd^D zrb}InTGp}$yEwY1esmFEJ0g2@tXZ6DDNT2N70g}SEZF?AS-jb~xuLAZthsq~rI{kz z(m92gl0{87x5$mO(AHYsa+iK~ZXI7KO4SC}yCR=Vf%~TRohqo7`(;ym&Xq0WfGRR8Tu zVk9i*=>BKV)dJ!_}U0@v}>hR1YbC%xIq%-ZqHLw-`+$d$^2l%pQifsy{hS8`i+Pi!Sy$HTN(B)b@2 z#f__5PHg;5g*}$(ajEd_mGY<}@#z8%Tq;bz_RjSiU{743@nLuziAQlLc!(jw!$Rjf z<)hy7lbtdxrE2&Rf2bv{I6y9UX|Zb{!F3GPr{l}<*T>6Wkt<|3r>Rhoc0gn?6-E|Z zQ36?tkX<6uS^DO&^!5YE`<109KbO*7S3ZX*_a-g#ykFj5TUp~@ozhywb+Ag9NRJDM z``SqUX2wFb!+i6N{KWVej{7deEJy*`KPxP?!@u~KuMPz}s(~?~*O5!>`xu_F$$$2^ zYr6e16*F2Jjv=Fx+5r3*exxWCp36f3Y~Iq|RKGDzSI7RVlRM6Iy&-gnwr(BSwa%Om zpqMLu@-O|)+a⪚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 z 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 Q{%0N0A5`?;{!Fd^1@7DiDF6Tf literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-lanczos2.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-lanczos2.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c14a99db27101af8896013be5a95b5a9b208251 GIT binary patch literal 84959 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%0DL`HVg%mlzc1i>gU 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-lanczos3.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-lanczos3.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c6acffdf8e3b3dc06ee37954a142e07645d95a5 GIT binary patch literal 92698 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≺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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-mitchell.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-mitchell.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c3f1e95385fef790b12d45b184951749078f4be GIT binary patch literal 83761 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 J)2~1NKL8U%^g{pu literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-mix.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-mix.gif new file mode 100644 index 0000000000000000000000000000000000000000..b73c0b778eaf161f2169985525c007524a055139 GIT binary patch literal 75852 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 UTonGS`M)RWe=Y(4_L-{x1*c?!FaQ7m literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/b-sample.gif b/vim-plugins/bundle/xptemplate/readme-img/samples/b-sample.gif new file mode 100644 index 0000000000000000000000000000000000000000..49a546131b856075bfdcdb509872f06f95078246 GIT binary patch literal 71186 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≦_=sA{ouKFk% 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/bundle/xptemplate/readme-img/samples/x.md b/vim-plugins/bundle/xptemplate/readme-img/samples/x.md new file mode 100644 index 0000000..133c55b --- /dev/null +++ b/vim-plugins/bundle/xptemplate/readme-img/samples/x.md @@ -0,0 +1,14 @@ +## b-box.gif +![](b-box.gif) +## b-catrom.gif +![](b-catrom.gif) +## b-lanczos2.gif +![](b-lanczos2.gif) +## b-lanczos3.gif +![](b-lanczos3.gif) +## b-mitchell.gif +![](b-mitchell.gif) +## b-mix.gif +![](b-mix.gif) +## b-sample.gif +![](b-sample.gif) diff --git a/vim-plugins/bundle/xptemplate/resource/xptLogo.gif b/vim-plugins/bundle/xptemplate/resource/xptLogo.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d1e548d92cbe99fc696de46611ff335f55800ee GIT binary patch literal 6780 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 + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + XPTemplate + + + + + + T + + diff --git a/vim-plugins/bundle/xptemplate/syntax/xpt.vim b/vim-plugins/bundle/xptemplate/syntax/xpt.vim new file mode 100644 index 0000000..9575df8 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/syntax/xpt.vim @@ -0,0 +1,231 @@ +fun! s:GetMark() + + let cur = [ line( '.' ), col( '.' ) ] + + + call cursor( 0, 0 ) + let lnr = search( '^XPTemplate .*mark=..', 'c' ) + + if lnr == 0 + call cursor ( cur ) + return ['`', '^', '`^'] + endif + + let line = getline( lnr ) + + let marks = matchstr( line, '\Vmark=\zs\.\.' ) + + call cursor ( cur ) + return [ marks[0:0], marks[1:1], marks ] + +endfunction + +let s:m = s:GetMark() + +let s:escaped = '\%(\\\\\)\*\\' +let s:nonEscaped = + \ '\%(' + \ . '\%(\[^\\]\|\^\)' + \ . '\%(\\\\\)\*' + \ . '\)' + \ . '\@<=' + +let s:lr_chars = escape(s:m[2], '\]-^') + +let s:l = s:nonEscaped . s:m[0] +let s:r = s:nonEscaped . s:m[1] +let s:lr = s:nonEscaped . '\[' . s:lr_chars . ']' +let s:lq = '\%(' . s:l . '\)' +let s:rq = '\%(' . s:r . '\)' + +let s:non_lr_chars = '\[^' . s:lr_chars . ']' + +let s:l_escaped = s:escaped . s:m[0] +let s:r_escaped = s:escaped . s:m[1] +let s:lr_escaped = s:escaped . '\[' . s:lr_chars . ']' + +let s:non_mark_any = '\%(' . s:lr_escaped . '\|' . s:non_lr_chars . '\)\*' + + +setlocal foldmethod=syntax + + +syntax keyword XPTemplateSnippetKey XPTemplate nextgroup=XPTfileMeta skipwhite + +syntax region XPTfileMeta start=/./ end=/$/ contained +syntax match XPTfileMetaPair /\w\+=\S*/ containedin=XPTfileMeta + +" meta data values +syntax match XPTfileMetaValue_mark /=\S\{2}/ containedin=XPTfileMetaPair +syntax match XPTfileMetaValue_priority /=\%(all\|spec\|like\|lang\|sub\|personal\)\?\%([+-]\d*\)\?/ containedin=XPTfileMetaPair + +" meta data keys +syntax keyword XPTfileMetaKey_priority prio[rity] containedin=XPTfileMetaPair nextgroup=XPTfileMetaValue_priority +syntax keyword XPTfileMetaKey_mark mark containedin=XPTfileMetaPair nextgroup=XPTfileMetaValue_mark + + +" ================================== +" XPTvar command to define variables +" ================================== +syntax match XptVarValue /.*$/ containedin=XptVarBody +syntax region XptVarBody matchgroup=XptVarName start=/\$\w\+/ end=/$/ keepend skipwhite nextgroup=XptVarValue +syntax keyword XPTSnippetVar XPTvar nextgroup=XptVarBody skipwhite + + +" ================== +" XPTinclude command +" ================== +syntax match XptSnippetIncludeItemDir /\%(\w\+\/\)\+/ containedin=XptSnippetIncludeItem +syntax match XptSnippetIncludeItemFile /[a-zA-Z0-9_.*]\+\s*$/ containedin=XptSnippetIncludeItem +syntax match XptSnippetIncludeItem /[a-zA-Z0-9_.]\+\/.*/ containedin=XptSnippetIncludeBody +syntax region XptSnippetIncludeBody start=/^\s*\\/ end=/^\ze\s*[^\\ ]/ keepend skipwhite +syntax keyword XptSnippetInclude XPTinclude nextgroup=XptSnippetIncludeBody skipnl skipwhite +syntax keyword XptSnippetInclude XPTembed nextgroup=XptSnippetIncludeBody skipnl skipwhite + + + +" TODO escaping +syntax match XPTvariable /\$\w\+/ containedin=XPTmeta_value,XPTmeta_simpleHint,XPTxset_value +syntax match XPTvariable_quote /{\$\w\+}/ containedin=XPTmeta_value,XPTmeta_simpleHint,XPTxset_value + +" TODO escaping, quoted +syntax region XPTfunction start=/\w\+(/ end=/)/ containedin=XPTmeta_value,XPTmeta_simpleHint,XPTxset_value + + +exe 'syntax match XPTitemPost /\V' . s:non_mark_any . s:rq . '\{1,2}/ contains=XPTmark contained containedin=XPTsnippetBody' +" XPTitemB for distinguish coherent item +exe 'syntax match XPTitemB /\V' . s:l . '\_.\{-}' . s:r . '/ contains=XPTmark containedin=XPTsnippetBody nextgroup=XPTitemPost,XPTitem' +exe 'syntax match XPTitem /\V' . s:l . '\_.\{-}' . s:r . '/ contains=XPTmark containedin=XPTsnippetBody nextgroup=XPTitemPost,XPTitemB' +exe 'syntax match XPTinclusion /\VInclude:\zs\.\{-}\ze' . s:r . '/ contained containedin=XPTitem,XPTitemB' +exe 'syntax match XPTinclusion /\V:\zs\.\{-}\ze:' . s:r . '/ contained containedin=XPTitem,XPTitemB' +exe 'syntax match XPTcursor /\V' . s:l . 'cursor' . s:r . '/ contained containedin=XPTitem,XPTitemB' +exe 'syntax match XPTvariable /\V' . '$\w\+' . '/ contained containedin=XPTitem,XPTitemB' +exe 'syntax match XPTvariable_quote /\V{' . '$\w\+' . '}/ contained containedin=XPTitem,XPTitemB' +exe 'syntax match XPTmark /\V' . s:r . '/ contains=XPTmark containedin=XPTitem,XPTitemB' + +" the end pattern is weird. +" \%(^$)^XPT\s does not work. +syntax match XPTxset /^XSET\s\+\%(\w\|[.?*]\)\+\([|.]\%(pre\|def\|post\|ontype\)\)\?=.*/ containedin=XPTsnippetBody +syntax region XPTxsetm start=/^XSETm\s\+/ end=/XSETm END$/ containedin=XPTsnippetBody fold +syntax keyword XPTkeyword_XSET XSET containedin=XPTxset nextgroup=XPTxset_name1,XPTxset_name2,XPTxset_name3 skipwhite transparent +" priorities are low to high +syntax match XPTxset_value /.*/ containedin=XPTxset transparent +syntax match XPTxset_eq /=/ containedin=XPTxset nextgroup=XPTxset_value transparent +syntax match XPTxset_type /[|.]\%(pre\|def\|post\|ontype\)\|\ze=/ containedin=XPTxset nextgroup=XPTxset_eq transparent +syntax match XPTxset_name3 /\%(\w\|\.\)*/ containedin=XPTxset nextgroup=XPTxset_type transparent +syntax match XPTxset_name2 /\%(\w\|\.\)*\ze\./ containedin=XPTxset nextgroup=XPTxset_type transparent +syntax match XPTxset_name1 /\%(\w\|\.\)*\ze|/ containedin=XPTxset nextgroup=XPTxset_type transparent + +syntax keyword XPTkeyword_XPT XPT nextgroup=XPTsnippetName skipwhite +syntax match XPTsnippetTitle /.*$/ contained nextgroup=XPTsnippetBody,XPTkeyword_XPT skipwhite skipnl skipempty +syntax match XPTsnippetName /\S\+/ contained nextgroup=XPTmeta,XPTmetaAlias,XPTsnippetTitle,XPTsnippetBody skipwhite skipempty +syntax match XPTend /\.\.XPT/ contained containedin=XPTsnippetBody +syntax match XPTnotKey /\\XPT/ contained containedin=XPTsnippetBody + + +" escaped white space or non-space +syntax match XPTmeta /\w\(\\\s\|\S\)\+/ containedin=XPTsnippetTitle nextgroup=XPTmeta,XPTmetaAlias,XPTmeta_simpleHint skipwhite skipnl skipempty + +syntax match XPTmeta_simpleHint /\V\(\\\*\)\1"\.\*/ contained containedin=XPTsnippetTitle + +syntax match XPTmetaAlias /alias=\S\+/ nextgroup=XPTmeta,XPTsnippetBody,XPTkeyword_XPT skipwhite skipnl skipempty +syntax match XPTmetaAlias_name /\S\+\ze=/ contained containedin=XPTmetaAlias +syntax match XPTmetaAlias_value /=\zs\S\+/ contained containedin=XPTmetaAlias + +syntax match XPTmeta_name /\w\+\ze=\?/ containedin=XPTmeta nextgroup=XPTmeta_value +syntax keyword XPTmeta_name_key hint alias synonym hidden wrap wraponly abbr syn contained containedin=XPTmeta_name +syntax match XPTmeta_value /=\zs\(\\\s\|\S\)*/ containedin=XPTmeta + +syntax region XPTsnippetBody start=/^/ end=/\ze\%(^$\n\)*\%$\|\ze\%(^$\n\)*XPT\s\|^\.\.XPT\|\ze\(^".*\n\|^\s*\n\)*\(^XPT\s\|\%$\|^".*\%$\|^\s*\%$\)/ contained containedin=XPTsnippetTitle contains=XPTxset excludenl fold + +syntax match XPThintMark /\V \zs**\ze / contained containedin=vimLineComment +syntax match vimLineComment /^".*$/ containedin=XPTregion contains=@vimCommentGroup,vimCommentString,vimCommentTitle + + +syntax match XPTbadIndent /^\( \)*\zs \{1,3}\ze\%(\S\|$\)/ contained containedin=XPTsnippetBody +syntax match XPTbadIndent /^\s*\zs\t/ contained containedin=XPTsnippetBody + + + + + +" syntax keyword TemplateKey XSETm indent hint syn priority containedin=XPTsnippetTitle + + + + +" ======================= +" Xpt snippets definition +" ======================= +syntax region XPTregion start=/^/ end=/\%$/ contained contains=XPTsnippetTitle + + +hi def link XPTfileMetaPair Normal +hi def link XPTfileMetaKey_priority Identifier +hi def link XPTfileMetaValue_priority Constant +hi def link XPTfileMetaKey_mark Identifier +hi def link XPTfileMetaValue_mark Constant + +hi def link XptVarBody Error +hi def link XptVarName Constant +hi def link XptVarValue Normal + +hi def link XptSnippetIncludeItemFile String +hi def link XptSnippetIncludeItemDir Directory +hi def link XptSnippetIncludeItem Directory +hi def link XptSnippetIncludeBody Normal +hi def link XptSnippetInclude Statement + + +hi def link XPTsnippetTitle Statement +hi def link XPTsnippetName Label +hi def link XPTmeta Normal +hi def link XPTmeta_name Error +hi def link XPTmeta_name_key Identifier +hi def link XPTmeta_value String +hi def link XPTmetaAlias_name XPTmeta_name_key +hi def link XPTmetaAlias_value XPTsnippetName +hi def link XPTmeta_simpleHint Comment +hi def link XPTsnippetBody Normal +hi def link XPTcomment Comment +hi def link XPT_END Folded +hi def link XPTxset Comment +hi def link XPTxsetm Comment +" hi def link XPTxset_name1 Function +" hi def link XPTxset_name2 Function +" hi def link XPTxset_name3 Function +hi def link XPTxset_type Constant +hi def link XPTxset_eq Operator +hi def link XPTxset_value Normal +hi def link XPTregion SpecialKey +hi def link XPTitem CursorLine +if has('gui_running') + hi def link XPTitemB CursorColumn +else + hi def link XPTitemB XPTitem +endif +hi def link XPTinclusion XPTsnippetName +" hi def link XPTcursor TabLineSel +hi def link XPTcursor StatusLine +hi def link XPTitemPost WildMenu +hi def link XPTvariable Constant +hi def link XPTvariable_quote Constant +hi def link XPTfunction Function + +hi def link XPTbadIndent Error + +" not implemented +hi def link XPTmark NonText +hi def link TemplateKey Title + +hi def link XPThintMark Label + +hi def link XPTemplateSnippetKey Statement +hi def link XPTSnippetVar Statement +hi def link XPTkeyword_XPT Statement +" hi def link XPTkeyword_XSET Comment +" hi def link XPTkeyword_XSET Preproc +hi def link XPTkeyword_hint Statement + + +" vim: set ts=8 sw=4 sts=4: diff --git a/vim-plugins/bundle/xptemplate/syntax/xptlog.vim b/vim-plugins/bundle/xptemplate/syntax/xptlog.vim new file mode 100644 index 0000000..c1b16d6 --- /dev/null +++ b/vim-plugins/bundle/xptemplate/syntax/xptlog.vim @@ -0,0 +1,9 @@ +syn match xptlogStack /^\w\+:::.*/ contains=xptlogFunctionName,xptlogLevel +syn match xptlogLevel /^\w\+\ze:::/ contained +syn match xptlogFunctionName /[^:.]\+\ze\%(\.\.\|$\)/ contained contains=xptlogFunctionSID +syn match xptlogFunctionSID /\d\+_/ + +hi def link xptlogStack Statement +hi def link xptlogLevel Label +hi def link xptlogFunctionName Function +hi def link xptlogFunctionSID Title diff --git a/vim-plugins/bundle/xptemplate/xpt-err b/vim-plugins/bundle/xptemplate/xpt-err new file mode 100644 index 0000000..27bb21e --- /dev/null +++ b/vim-plugins/bundle/xptemplate/xpt-err @@ -0,0 +1,14 @@ +vim nginx.conf +press ' +Messages maintainer: Bram Moolenaar +Error detected while processing function XPTtgr..XPTemplateStart..156_DoStart..156_RenderSnippet..156_BuildSnippet..156_BuildPlaceHolders..156_NextLeftM +ark: +line 40: +E121: Undefined variable: content +Error detected while processing function XPTtgr..XPTemplateStart..156_DoStart..156_RenderSnippet..156_BuildSnippet..156_BuildPlaceHolders..156_NextLeftM +ark: +line 40: +E116: Invalid arguments for function len( content ) / 2 ) +Error detected while processing function XPTtgr..XPTemplateStart..156_DoStart..156_RenderSnippet..156_BuildSnippet..156_BuildPlaceHolders..156_NextLeftM +ark: +line 40: diff --git a/vim-plugins/colors/mayansmoke.vim b/vim-plugins/colors/mayansmoke.vim new file mode 100644 index 0000000..6d146f8 --- /dev/null +++ b/vim-plugins/colors/mayansmoke.vim @@ -0,0 +1,343 @@ +" ============================================================================= +" +" File: mayansmoke.vim +" Description: Vim color scheme file +" Maintainer: Jeet Sukumaran (GUI colors); Clayton Parker (cterm colors) +" +" ============================================================================= + +" Initialization and Setup {{{1 +" ============================================================================= +set background=light +highlight clear +if exists("syntax_on") + syntax reset +endif +let colors_name = "mayansmoke" +" }}} + +" Normal Color {{{1 +" ============================================================================= +hi Normal gui=NONE guifg=Black guibg=#F4F4E8 +" }}} + +" Highlight Groups {{{1 +" ============================================================================= +" Groups (see ':help highlight-groups'): +" ColorColumn highlight to use with ':set colorcolumn' +" Cursor the character under the cursor +" CursorIM like Cursor, but used when in IME mode |CursorIM| +" CursorColumn the screen column that the cursor is in when 'cursorcolumn' is set +" CursorLine the screen line that the cursor is in when 'cursorline' is set +" Directory directory names (and other special names in listings) +" DiffAdd diff mode: Added line |diff.txt| +" DiffChange diff mode: Changed line |diff.txt| +" DiffDelete diff mode: Deleted line |diff.txt| +" DiffText diff mode: Changed text within a changed line |diff.txt| +" ErrorMsg error messages on the command line +" VertSplit the column separating vertically split windows +" Folded line used for closed folds +" FoldColumn 'foldcolumn' +" SignColumn column where |signs| are displayed +" IncSearch 'incsearch' highlighting; also used for the text replaced with ":s///c" +" LineNr Line number for ":number" and ":#" commands, and when 'number' option is set. +" MatchParen The character under the cursor or just before it, if it is a paired bracket, and its match. |pi_paren.txt| +" ModeMsg 'showmode' message (e.g., "-- INSERT --") +" MoreMsg |more-prompt| +" NonText '~' and '@' at the end of the window, etc. +" Normal normal text +" Pmenu Popup menu: normal item. +" PmenuSel Popup menu: selected item. +" PmenuSbar Popup menu: scrollbar. +" PmenuThumb Popup menu: Thumb of the scrollbar. +" Question |hit-enter| prompt and yes/no questions +" Search Last search pattern highlighting (see 'hlsearch'). +" SpecialKey Meta and special keys listed with ":map", text that is displayed differently from what it really is (such as tabs, spaces in listchars etc.). +" SpellBad Word that is not recognized by the spellchecker. |spell| +" SpellCap Word that should start with a capital. |spell| +" SpellLocal Word that is recognized by the spellchecker as one that is +" SpellRare Word that is recognized by the spellchecker as one that is hardly ever used. |spell| +" StatusLine status line of current window +" StatusLineNC status lines of not-current windows +" TabLine tab pages line, not active tab page label +" TabLineFill tab pages line, where there are no labels +" TabLineSel tab pages line, active tab page label +" Title titles for output from ":set all", ":autocmd" etc. +" Visual Visual mode selection +" VisualNOS Visual mode selection when vim is "Not Owning the Selection". +" WarningMsg warning messages +" WildMenu current match in 'wildmenu' completion +hi ColorColumn guifg=NONE guibg=#EEEEDD +hi Cursor guifg=bg guibg=fg gui=NONE +if hlexists('MayanSmokeCursorLine') + hi link CursorColumn MayanSmokeCursorLine + hi link CursorLine MayanSmokeCursorLine +elseif exists('g:mayansmoke_cursor_line_visibility') && g:mayansmoke_cursor_line_visibility >= 2 + hi CursorColumn guifg=NONE guibg=NavajoWhite gui=NONE + hi CursorLine guifg=NONE guibg=NavajoWhite gui=NONE +elseif exists('g:mayansmoke_cursor_line_visibility') && g:mayansmoke_cursor_line_visibility >= 1 + hi CursorColumn guifg=NONE guibg=white gui=NONE + hi CursorLine guifg=NONE guibg=white gui=NONE +else + hi CursorColumn guifg=NONE guibg=#FFFDD0 gui=NONE + hi CursorLine guifg=NONE guibg=#FFFDD0 gui=NONE +endif +hi CursorIM guifg=bg guibg=fg gui=NONE +hi lCursor guifg=bg guibg=fg gui=NONE +hi DiffAdd guifg=NONE guibg=SeaGreen1 gui=NONE +hi DiffChange guifg=NONE guibg=LightSkyBlue1 gui=NONE +hi DiffDelete guifg=NONE guibg=LightCoral gui=NONE +hi DiffText guifg=black guibg=LightCyan1 gui=NONE +hi Directory guifg=#1600FF guibg=bg gui=NONE +hi ErrorMsg guifg=Red2 guibg=NONE gui=NONE +hi FoldColumn guifg=SteelBlue4 guibg=LightYellow2 gui=bold +hi Folded guifg=SteelBlue4 guibg=Gainsboro gui=italic +if hlexists('MayanSmokeSearch') + hi link IncSearch MayanSmokeSearch + hi link Search MayanSmokeSearch +elseif exists('g:mayansmoke_search_visibility') && g:mayansmoke_search_visibility >= 4 + hi IncSearch guifg=white guibg=red gui=NONE + hi Search guifg=white guibg=red gui=NONE +elseif exists('g:mayansmoke_search_visibility') && g:mayansmoke_search_visibility == 3 + hi IncSearch guifg=black guibg=gold gui=NONE + hi Search guifg=black guibg=gold gui=NONE +elseif exists('g:mayansmoke_search_visibility') && g:mayansmoke_search_visibility == 2 + hi IncSearch guifg=white guibg=darkorange gui=NONE + hi Search guifg=white guibg=darkorange gui=NONE +elseif exists('g:mayansmoke_search_visibility') && g:mayansmoke_search_visibility == 0 + hi IncSearch guifg=black guibg=tan gui=NONE + hi Search guifg=black guibg=tan gui=NONE +else + hi IncSearch guifg=black guibg=khaki gui=NONE + hi Search guifg=black guibg=khaki gui=NONE +endif +hi LineNr guifg=#666677 guibg=#cccfbf gui=NONE +hi MatchParen guifg=black guibg=LemonChiffon3 gui=bold +hi ModeMsg guifg=White guibg=tomato1 gui=bold +hi MoreMsg guifg=SeaGreen4 guibg=bg gui=bold +hi NonText guifg=LightCyan3 guibg=bg gui=bold + +hi Pmenu guifg=Orange4 guibg=LightYellow3 gui=NONE +hi PmenuSel guifg=ivory2 guibg=NavajoWhite4 gui=bold +hi PmenuSbar guifg=White guibg=#999666 gui=NONE +hi PmenuThumb guifg=White guibg=#7B7939 gui=NONE + +hi Question guifg=Chartreuse4 guibg=bg gui=bold +hi SignColumn guifg=white guibg=LightYellow3 gui=NONE +if hlexists('MayanSmokeSpecialKey') + hi link SpecialKey MayanSmokeSpecialKey +elseif exists('g:mayansmoke_special_key_visibility') && g:mayansmoke_special_key_visibility >= 2 + hi SpecialKey guifg=black guibg=NavajoWhite gui=NONE +elseif exists('g:mayansmoke_special_key_visibility') && g:mayansmoke_special_key_visibility == 0 + hi SpecialKey guifg=bisque3 guibg=NONE gui=NONE +else + hi SpecialKey guifg=white guibg=ivory3 gui=NONE +endif +hi SpellBad guisp=Firebrick2 gui=undercurl +hi SpellCap guisp=Blue gui=undercurl +hi SpellLocal guisp=DarkCyan gui=undercurl +hi SpellRare guisp=Magenta gui=undercurl +hi StatusLine guifg=#FFFEEE guibg=#557788 gui=NONE +" hi StatusLineNC guifg=#EAE6E2 guibg=LightSteelBlue3 gui=italic +hi StatusLineNC guifg=#F4F4EE guibg=#99aabb gui=italic +hi TabLine guifg=fg guibg=LightGrey gui=underline +hi TabLineFill guifg=fg guibg=bg gui=reverse +hi TabLineSel guifg=fg guibg=bg gui=bold +hi Title guifg=DeepSkyBlue3 guibg=bg gui=bold +hi VertSplit guifg=#99aabb guibg=#99aabb +hi Visual guifg=white guibg=DeepSkyBlue1 gui=NONE +hi WarningMsg guifg=Firebrick2 guibg=bg gui=NONE +hi WildMenu guifg=Black guibg=SkyBlue gui=NONE +" }}} + +" 256-Color Terminal Colors, by Clayton Parker {{{1 +" ============================================================================= +hi Normal cterm=NONE ctermfg=16 ctermbg=255 +hi Comment ctermfg=110 +hi Constant ctermfg=214 + hi String ctermfg=30 + hi Boolean ctermfg=88 +hi Identifier ctermfg=160 +hi Function ctermfg=132 +hi Statement ctermfg=21 +hi Keyword ctermfg=45 +hi PreProc ctermfg=27 +hi Type ctermfg=147 +hi Special ctermfg=64 +hi Ignore ctermfg=255 +hi Error ctermfg=196 ctermbg=255 term=none +hi Todo ctermfg=136 ctermbg=255 cterm=NONE +hi VimError ctermfg=160 ctermbg=16 +hi VimCommentTitle ctermfg=110 +hi qfLineNr ctermfg=16 ctermbg=46 cterm=NONE +hi pythonDecorator ctermfg=208 ctermbg=255 cterm=NONE +hi Cursor ctermfg=255 ctermbg=16 cterm=NONE +hi CursorColumn ctermfg=NONE ctermbg=255 cterm=NONE +hi CursorIM ctermfg=255 ctermbg=16 cterm=NONE +hi CursorLine ctermfg=NONE ctermbg=254 cterm=NONE +hi lCursor ctermfg=255 ctermbg=16 cterm=NONE +hi DiffAdd ctermfg=16 ctermbg=48 cterm=NONE +hi DiffChange ctermfg=16 ctermbg=153 cterm=NONE +hi DiffDelete ctermfg=16 ctermbg=203 cterm=NONE +hi DiffText ctermfg=16 ctermbg=226 cterm=NONE +hi Directory ctermfg=21 ctermbg=255 cterm=NONE +hi ErrorMsg ctermfg=160 ctermbg=NONE cterm=NONE +hi FoldColumn ctermfg=24 ctermbg=252 cterm=NONE +hi Folded ctermfg=24 ctermbg=252 cterm=NONE +hi IncSearch ctermfg=255 ctermbg=160 cterm=NONE +hi LineNr ctermfg=253 ctermbg=110 cterm=NONE +hi NonText ctermfg=110 ctermbg=255 cterm=NONE +hi Pmenu ctermfg=fg ctermbg=195 cterm=NONE +hi PmenuSbar ctermfg=255 ctermbg=153 cterm=NONE +hi PmenuSel ctermfg=255 ctermbg=21 cterm=NONE +hi PmenuThumb ctermfg=111 ctermbg=255 cterm=NONE +hi SignColumn ctermfg=110 ctermbg=254 cterm=NONE +hi Search ctermfg=255 ctermbg=160 cterm=NONE +hi SpecialKey ctermfg=255 ctermbg=144 cterm=NONE +hi SpellBad ctermfg=16 ctermbg=229 cterm=NONE +hi SpellCap ctermfg=16 ctermbg=231 cterm=NONE +hi SpellLocal ctermfg=16 ctermbg=231 cterm=NONE +hi SpellRare ctermfg=16 ctermbg=226 cterm=NONE +hi StatusLine ctermfg=255 ctermbg=24 cterm=NONE +hi StatusLineNC ctermfg=253 ctermbg=110 cterm=NONE +hi Title ctermfg=75 ctermbg=255 cterm=NONE +hi VertSplit ctermfg=255 ctermbg=24 cterm=NONE +hi Visual ctermfg=255 ctermbg=153 cterm=NONE +hi WildMenu ctermfg=16 ctermbg=117 cterm=NONE + +" 1}}} + +" Syntax {{{1 +" ============================================================================= + +" General {{{2 +" ----------------------------------------------------------------------------- +" Groups ('*' = major; see 'help group-name'): +" *Comment any comment +" *Constant any constant +" String a string constant: "this is a string" +" Character a character constant: 'c', '\n' +" Number a number constant: 234, 0xff +" Boolean a boolean constant: TRUE, false +" Float a floating point constant: 2.3e10 +" *Identifier any variable name +" Function function name (also: methods for classes) +" *Statement any statement +" Conditional if, then, else, endif, switch, etc. +" Repeat for, do, while, etc. +" Label case, default, etc. +" Operator "sizeof", "+", "*", etc. +" Keyword any other keyword +" Exception try, catch, throw +" *PreProc generic Preprocessor +" Include preprocessor #include +" Define preprocessor #define +" Macro same as Define +" PreCondit preprocessor #if, #else, #endif, etc. +" *Type int, long, char, etc. +" StorageClass static, register, volatile, etc. +" Structure struct, union, enum, etc. +" Typedef A typedef +" *Special any special symbol +" SpecialChar special character in a constant +" Tag you can use CTRL-] on this +" Delimiter character that needs attention +" SpecialComment special things inside a comment +" Debug debugging statements +" *Error any erroneous construct +" *Todo anything that needs extra attention +" hi Comment guifg=#A2B5CD guibg=NONE gui=italic +hi Comment guifg=#96AAC2 guibg=NONE gui=italic +hi Constant guifg=DarkOrange guibg=NONE gui=NONE + hi String guifg=Aquamarine4 guibg=NONE gui=NONE + hi Boolean guifg=IndianRed4 guibg=NONE gui=NONE +hi Identifier guifg=brown3 guibg=NONE gui=NONE +hi Function guifg=VioletRed4 guibg=NONE gui=NONE +hi Statement guifg=blue1 guibg=NONE gui=NONE +hi Keyword guifg=DodgerBlue guibg=NONE gui=NONE +hi PreProc guifg=blue1 guibg=NONE gui=NONE +hi Type guifg=LightSlateBlue guibg=NONE gui=NONE +hi Special guifg=DarkOliveGreen4 guibg=NONE gui=NONE +hi Ignore guifg=bg guibg=NONE gui=NONE +hi Error guifg=Red guibg=NONE gui=underline +hi Todo guifg=tan4 guibg=NONE gui=underline +" 2}}} + +" Vim {{{2 +" ----------------------------------------------------------------------------- +hi VimError guifg=red guibg=Black gui=bold +hi VimCommentTitle guifg=DarkSlateGray4 guibg=bg gui=bold,italic +" 2}}} + +" QuickFix {{{2 +" ----------------------------------------------------------------------------- + +" syn match qfFileName "^[^|]*" nextgroup=qfSeparator +" syn match qfSeparator "|" nextgroup=qfLineNr contained +" syn match qfLineNr "[^|]*" contained contains=qfError +" syn match qfError "error" contained +hi qfFileName guifg=LightSkyBlue4 guibg=NONE gui=italic +hi qfLineNr guifg=coral guibg=NONE gui=bold +hi qfError guifg=red guibg=NONE gui=bold +" 2}}} + +" Python {{{2 +" ----------------------------------------------------------------------------- +hi pythonDecorator guifg=orange3 guibg=NONE gui=bold +hi link pythonDecoratorFunction pythonDecorator +" 2}}} + +" Diff {{{2 +" ----------------------------------------------------------------------------- +hi diffOldFile guifg=#006666 guibg=NONE gui=NONE +hi diffNewFile guifg=#0088FF guibg=NONE gui=bold +hi diffFile guifg=#0000FF guibg=NONE gui=NONE +hi link diffOnly Constant +hi link diffIdentical Constant +hi link diffDiffer Constant +hi link diffBDiffer Constant +hi link diffIsA Constant +hi link diffNoEOL Constant +hi link diffCommon Constant +hi diffRemoved guifg=#BB0000 guibg=NONE gui=NONE +hi diffChanged guifg=DarkSeaGreen guibg=NONE gui=NONE +hi diffAdded guifg=#00AA00 guibg=NONE gui=NONE +hi diffLine guifg=thistle4 guibg=NONE gui=italic +hi link diffSubname diffLine +hi link diffComment Comment +" 2}}} + +" PHP (contributed by Ryan Kulla) {{{2 +" ----------------------------------------------------------------------------- +" Ryan Kulla's addition for PHP syntax highlighting (for regular/terminal vim) +hi phpConditional ctermfg=21 cterm=NONE guifg=black +hi phpIdentifier ctermfg=0 cterm=NONE guifg=black +hi phpOperator ctermfg=black cterm=NONE guifg=black +hi phpRegion ctermfg=132 cterm=NONE guifg=VioletRed4 +hi phpComparison ctermfg=black cterm=NONE guifg=black +hi phpType ctermfg=darkgreen cterm=NONE guifg=darkgreen +hi phpParent ctermfg=black cterm=NONE guifg=black +hi phpMethodsVar ctermfg=132 cterm=NONE guifg=VioletRed4 +hi phpStatement ctermfg=21 cterm=NONE guifg=blue +hi phpStorageClass ctermfg=21 cterm=NONE guifg=blue +hi phpStringSingle ctermfg=30 cterm=NONE guifg=Aquamarine4 +hi phpStringDouble ctermfg=30 cterm=NONE guifg=Aquamarine4 +hi phpFunctions ctermfg=21 cterm=NONE guifg=blue +hi phpSpecialFunction ctermfg=21 cterm=NONE guifg=blue +hi phpRepeat ctermfg=21 cterm=NONE guifg=blue +hi phpNumber ctermfg=214 cterm=bold guifg=brown +hi phpTodo ctermfg=red cterm=bold guifg=red gui=bold +hi phpDefine ctermfg=21 cterm=NONE guifg=blue +hi phpConstant ctermfg=21 cterm=NONE guifg=black +hi phpCoreConstant ctermfg=21 cterm=NONE guifg=black +hi phpMemberSelector ctermfg=black cterm=NONE guifg=black +hi phpLabel ctermfg=21 cterm=NONE guifg=blue +hi phpStructure ctermfg=black cterm=NONE guifg=black +hi phpRelation ctermfg=black cterm=NONE guifg=black +hi phpEnvVar ctermfg=black cterm=NONE guifg=black +hi phpIntVar ctermfg=0 cterm=bold guifg=black gui=bold +hi phpBoolean ctermfg=58 cterm=NONE guifg=brown +" 2}}} + +" 1}}} + diff --git a/vim-plugins/colors/wombat256mod.vim b/vim-plugins/colors/wombat256mod.vim new file mode 100644 index 0000000..1137eb8 --- /dev/null +++ b/vim-plugins/colors/wombat256mod.vim @@ -0,0 +1,96 @@ +" Vim color file +" Original Maintainer: Lars H. Nielsen (dengmao@gmail.com) +" Last Change: 2010-07-23 +" +" Modified version of wombat for 256-color terminals by +" David Liang (bmdavll@gmail.com) +" based on version by +" Danila Bespalov (danila.bespalov@gmail.com) + +set background=dark + +if version > 580 + hi clear + if exists("syntax_on") + syntax reset + endif +endif + +let colors_name = "wombat256mod" + + +" General colors +hi Normal ctermfg=252 ctermbg=234 cterm=none guifg=#e3e0d7 guibg=#242424 gui=none +hi Cursor ctermfg=234 ctermbg=228 cterm=none guifg=#242424 guibg=#eae788 gui=none +hi Visual ctermfg=251 ctermbg=239 cterm=none guifg=#c3c6ca guibg=#554d4b gui=none +hi VisualNOS ctermfg=251 ctermbg=236 cterm=none guifg=#c3c6ca guibg=#303030 gui=none +hi Search ctermfg=177 ctermbg=241 cterm=none guifg=#d787ff guibg=#636066 gui=none +hi Folded ctermfg=103 ctermbg=237 cterm=none guifg=#a0a8b0 guibg=#3a4046 gui=none +hi Title ctermfg=230 cterm=bold guifg=#ffffd7 gui=bold +hi StatusLine ctermfg=230 ctermbg=238 cterm=none guifg=#ffffd7 guibg=#444444 gui=italic +hi VertSplit ctermfg=238 ctermbg=238 cterm=none guifg=#444444 guibg=#444444 gui=none +hi StatusLineNC ctermfg=241 ctermbg=238 cterm=none guifg=#857b6f guibg=#444444 gui=none +hi LineNr ctermfg=241 ctermbg=232 cterm=none guifg=#857b6f guibg=#080808 gui=none +hi SpecialKey ctermfg=241 ctermbg=235 cterm=none guifg=#626262 guibg=#2b2b2b gui=none +hi WarningMsg ctermfg=203 guifg=#ff5f55 +hi ErrorMsg ctermfg=196 ctermbg=236 cterm=bold guifg=#ff2026 guibg=#3a3a3a gui=bold + +" Vim >= 7.0 specific colors +if version >= 700 +hi CursorLine ctermbg=236 cterm=none guibg=#32322f +hi MatchParen ctermfg=228 ctermbg=101 cterm=bold guifg=#eae788 guibg=#857b6f gui=bold +hi Pmenu ctermfg=230 ctermbg=238 guifg=#ffffd7 guibg=#444444 +hi PmenuSel ctermfg=232 ctermbg=192 guifg=#080808 guibg=#cae982 +endif + +" Diff highlighting +hi DiffAdd ctermbg=17 guibg=#2a0d6a +hi DiffDelete ctermfg=234 ctermbg=60 cterm=none guifg=#242424 guibg=#3e3969 gui=none +hi DiffText ctermbg=53 cterm=none guibg=#73186e gui=none +hi DiffChange ctermbg=237 guibg=#382a37 + +"hi CursorIM +"hi Directory +"hi IncSearch +"hi Menu +"hi ModeMsg +"hi MoreMsg +"hi PmenuSbar +"hi PmenuThumb +"hi Question +"hi Scrollbar +"hi SignColumn +"hi SpellBad +"hi SpellCap +"hi SpellLocal +"hi SpellRare +"hi TabLine +"hi TabLineFill +"hi TabLineSel +"hi Tooltip +"hi User1 +"hi User9 +"hi WildMenu + + +" Syntax highlighting +hi Keyword ctermfg=111 cterm=none guifg=#88b8f6 gui=none +hi Statement ctermfg=111 cterm=none guifg=#88b8f6 gui=none +hi Constant ctermfg=173 cterm=none guifg=#e5786d gui=none +hi Number ctermfg=173 cterm=none guifg=#e5786d gui=none +hi PreProc ctermfg=173 cterm=none guifg=#e5786d gui=none +hi Function ctermfg=192 cterm=none guifg=#cae982 gui=none +hi Identifier ctermfg=192 cterm=none guifg=#cae982 gui=none +hi Type ctermfg=186 cterm=none guifg=#d4d987 gui=none +hi Special ctermfg=229 cterm=none guifg=#eadead gui=none +hi String ctermfg=113 cterm=none guifg=#95e454 gui=italic +hi Comment ctermfg=246 cterm=none guifg=#9c998e gui=italic +hi Todo ctermfg=101 cterm=none guifg=#857b6f gui=italic + + +" Links +hi! link FoldColumn Folded +hi! link CursorColumn CursorLine +hi! link NonText LineNr + +" vim:set ts=4 sw=4 noet: diff --git a/vim-plugins/filetype.vim b/vim-plugins/filetype.vim new file mode 100644 index 0000000..1e90db3 --- /dev/null +++ b/vim-plugins/filetype.vim @@ -0,0 +1,7 @@ +au BufRead,BufNewFile *.inc,*.ihtml,*.tpl,*.class set filetype=php + \ | let Comment="" +au BufRead,BufNewFile *.py,*.sh,*.pl,*.tcl let Comment="#" | let EndComment="" +au BufRead,BufNewFile *.js set filetype=html | let Comment="//" | let EndComment="" +au BufRead,BufNewFile *.cc,*.php,*.cxx let Comment="//" | let EndComment="" +au BufRead,BufNewFile *.c,*.h let Comment="/*" | let EndComment="*/" +au BufRead,BufNewFile *.html let Comment="{#" | let EndComment="%}" | set filetype=htmldjango diff --git a/vim-plugins/ftplugin/.python_editing.vim.un~ b/vim-plugins/ftplugin/.python_editing.vim.un~ new file mode 100644 index 0000000000000000000000000000000000000000..b8d4494635a43226e2381f16a3ea53c397828ea4 GIT binary patch literal 5082 zcmeI0J4*vW5XaYeYND|a8@p^Fh=quSg^9*TtSsXzXdymwn!-c{OAEh)V5zm%Hew?u zh@#*JuoA@1Lh#Y){3pAYjnQ&JVFxa=J9EeG&2MLRFEfSpgX!XU=}|b?V~BVkJuxElsnR|c1*fu_`8KogTB`Q^2eWP+n)Le4_q_TXmE5cP&(CV?jk z4}`q~WIo+t30pcBv`5WC5r!TE@=~d?C}@DxU`z=B!}}aGBQjQ+ z1TDtUB4tFV?mGO)=6F%>-YJ<>$bhKPm<{mhXM{s$M8-;!ke&aUX9^LJppE{8}* z!@4F!7vB-(XjDG?hNTcawkT+T6rPW$4S?|Te(3UwB4Jes+T~Bs0FFyx_#sm%h30Vu zlLI~=;}02!3?Z>8gzSou)mIJ}z*UPZ8SY*{)ND)&+2u;35fHmg`nrEMvkV6gWK1ox zN|phU{;L4913oUC=(sFH6l@A1doz(CTYk&3l-kS848z=j56`eTWI7VIG$DIuWL~*2 RhM~uRd;qDk^zS|$eE}3(zK#F@ literal 0 HcmV?d00001 diff --git a/vim-plugins/ftplugin/instant-markdown.vim b/vim-plugins/ftplugin/instant-markdown.vim new file mode 100644 index 0000000..c34c1a6 --- /dev/null +++ b/vim-plugins/ftplugin/instant-markdown.vim @@ -0,0 +1,188 @@ +" # Configuration +if !exists('g:instant_markdown_slow') + let g:instant_markdown_slow = 0 +endif + +if !exists('g:instant_markdown_autostart') + let g:instant_markdown_autostart = 1 +endif + +if !exists('g:instant_markdown_open_to_the_world') + let g:instant_markdown_open_to_the_world = 0 +endif + +if !exists('g:instant_markdown_allow_unsafe_content') + let g:instant_markdown_allow_unsafe_content = 0 +endif + +if !exists('g:instant_markdown_allow_external_content') + let g:instant_markdown_allow_external_content = 1 +endif + +" # Utility Functions +" Simple system wrapper that ignores empty second args +function! s:system(cmd, stdin) + if strlen(a:stdin) == 0 + call system(a:cmd) + else + call system(a:cmd, a:stdin) + endif +endfu + +" Wrapper function to automatically execute the command asynchronously and +" redirect output in a cross-platform way. Note that stdin must be passed as a +" List of lines. +function! s:systemasync(cmd, stdinLines) + if has('win32') || has('win64') + call s:winasync(a:cmd, a:stdinLines) + else + let cmd = a:cmd . '&>/dev/null &' + call s:system(cmd, join(a:stdinLines, "\n")) + endif +endfu + +" Executes a system command asynchronously on Windows. The List stdinLines will +" be concatenated and passed as stdin to the command. If the List is empty, +" stdin will also be empty. +function! s:winasync(cmd, stdinLines) + " To execute a command asynchronously on windows, the script must use the + " "!start" command. However, stdin can't be passed to this command like + " system(). Instead, the lines are saved to a file and then piped into the + " command. + if len(a:stdinLines) + let tmpfile = tempname() + call writefile(a:stdinLines, tmpfile) + let command = 'type ' . tmpfile . ' | ' . a:cmd + else + let command = a:cmd + endif + exec 'silent !start /b cmd /c ' . command . ' > NUL' +endfu + +function! s:refreshView() + let bufnr = expand('') + call s:systemasync("curl -X PUT -T - http://localhost:8090", + \ s:bufGetLines(bufnr)) +endfu + +function! s:startDaemon(initialMDLines) + let env = '' + if g:instant_markdown_open_to_the_world + let env .= 'INSTANT_MARKDOWN_OPEN_TO_THE_WORLD=1 ' + endif + if g:instant_markdown_allow_unsafe_content + let env .= 'INSTANT_MARKDOWN_ALLOW_UNSAFE_CONTENT=1 ' + endif + if !g:instant_markdown_allow_external_content + let env .= 'INSTANT_MARKDOWN_BLOCK_EXTERNAL=1 ' + endif + + call s:systemasync('instant-markdown-d', a:initialMDLines) +endfu + +function! s:initDict() + if !exists('s:buffers') + let s:buffers = {} + endif +endfu + +function! s:pushBuffer(bufnr) + call s:initDict() + let s:buffers[a:bufnr] = 1 +endfu + +function! s:popBuffer(bufnr) + call s:initDict() + call remove(s:buffers, a:bufnr) +endfu + +function! s:killDaemon() + call s:systemasync("curl -s -X DELETE http://localhost:8090", []) +endfu + +function! s:bufGetLines(bufnr) + return getbufline(a:bufnr, 1, "$") +endfu + +" I really, really hope there's a better way to do this. +fu! s:myBufNr() + return str2nr(expand('')) +endfu + +" # Functions called by autocmds +" +" ## push a new Markdown buffer into the system. +" +" 1. Track it so we know when to garbage collect the daemon +" 2. Start daemon if we're on the first MD buffer. +" 3. Initialize changedtickLast, possibly needlessly(?) +fu! s:pushMarkdown() + let bufnr = s:myBufNr() + call s:initDict() + if len(s:buffers) == 0 + call s:startDaemon(s:bufGetLines(bufnr)) + endif + call s:pushBuffer(bufnr) + let b:changedtickLast = b:changedtick +endfu + +" ## pop a Markdown buffer +" +" 1. Pop the buffer reference +" 2. Garbage collection +" * daemon +" * autocmds +fu! s:popMarkdown() + let bufnr = s:myBufNr() + silent au! instant-markdown * + call s:popBuffer(bufnr) + if len(s:buffers) == 0 + call s:killDaemon() + endif +endfu + +" ## Refresh if there's something new worth showing +" +" 'All things in moderation' +fu! s:temperedRefresh() + if !exists('b:changedtickLast') + let b:changedtickLast = b:changedtick + elseif b:changedtickLast != b:changedtick + let b:changedtickLast = b:changedtick + call s:refreshView() + endif +endfu + +fu! s:previewMarkdown() + call s:startDaemon(getline(1, '$')) + aug instant-markdown + if g:instant_markdown_slow + au CursorHold,BufWrite,InsertLeave call s:temperedRefresh() + else + au CursorHold,CursorHoldI,CursorMoved,CursorMovedI call s:temperedRefresh() + endif + au BufWinLeave call s:cleanUp() + aug END +endfu + +fu! s:cleanUp() + call s:killDaemon() + au! instant-markdown * +endfu + +if g:instant_markdown_autostart + " # Define the autocmds " + aug instant-markdown + au! * + au BufEnter call s:refreshView() + if g:instant_markdown_slow + au CursorHold,BufWrite,InsertLeave call s:temperedRefresh() + else + au CursorHold,CursorHoldI,CursorMoved,CursorMovedI call s:temperedRefresh() + endif + au BufWinLeave call s:popMarkdown() + au BufwinEnter call s:pushMarkdown() + aug END +else + command! -buffer InstantMarkdownPreview call s:previewMarkdown() +endif diff --git a/vim-plugins/ftplugin/python_editing.vim b/vim-plugins/ftplugin/python_editing.vim new file mode 100644 index 0000000..eabcc98 --- /dev/null +++ b/vim-plugins/ftplugin/python_editing.vim @@ -0,0 +1,91 @@ +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +finish +endif +let b:did_ftplugin = 1 + +map :w:!/usr/bin/env python % +map gd /def + +set foldmethod=indent +set foldexpr=PythonFoldExpr(v:lnum) +set foldtext=PythonFoldText() + +map f za +map F :call ToggleFold() +let b:folded = 1 + +function! ToggleFold() + if( b:folded == 0 ) + exec "normal! zM" + let b:folded = 1 + else + exec "normal! zR" + let b:folded = 0 + endif +endfunction + +function! PythonFoldText() + + let size = 1 + v:foldend - v:foldstart + if size < 10 + let size = " " . size + endif + if size < 100 + let size = " " . size + endif + if size < 1000 + let size = " " . size + endif + + if match(getline(v:foldstart), '"""') >= 0 + let text = substitute(getline(v:foldstart), '"""', '', 'g' ) . ' ' + elseif match(getline(v:foldstart), "'''") >= 0 + let text = substitute(getline(v:foldstart), "'''", '', 'g' ) . ' ' + else + let text = getline(v:foldstart) + endif + + return size . ' lines:'. text . ' ' + +endfunction + +function! PythonFoldExpr(lnum) + + if indent( nextnonblank(a:lnum) ) == 0 + return 0 + endif + + if getline(a:lnum-1) =~ '^\(class\|def\)\s' + return 1 + endif + + if getline(a:lnum) =~ '^\s*$' + return "=" + endif + + if indent(a:lnum) == 0 + return 0 + endif + + return '=' + +endfunction + +" In case folding breaks down +function! ReFold() + set foldmethod=expr + set foldexpr=0 + set foldnestmax=1 + set foldmethod=expr + set foldexpr=PythonFoldExpr(v:lnum) + set foldtext=PythonFoldText() + echo +endfunction + +"inoremap ; : +"inoremap : ; + +" Django template completion +let g:htmldjangocomplete_html_flavour = 'html401s' +au FileType htmldjango set omnifunc=htmldjangocomplete#CompleteDjango diff --git a/vim-plugins/templates/.skeleton.py.un~ b/vim-plugins/templates/.skeleton.py.un~ new file mode 100644 index 0000000000000000000000000000000000000000..52d281e355d9d352b6a3f7172ad15318faac4b96 GIT binary patch literal 3253 zcmeH}&ubGw6vuays8}o>L?}pWC}LAl5U~hKL8*7OA!0r3Y=}t>G`k^b1dpD?Kftqi z_2gCj4?Ot?2%bdnt~agkGnqHt#ncw5bOj%o%$xUP=FNQHyq&w<-it!#j7rif(n4uy zA$o1WS~yp!pbZ1_9<5M$+}Z!J$_ciFa@vex;aPT4cv=f*zgakf;OmS;n++O%8g%2< zXfR9%(KTxV#GZDLpvR8JG-tb=sxe8k*ES|TQ@@?|qvd7C%p22db`xXfulf+wcRQ%O zM5gp)L-w9ty!6E87g`b$e~4T|c9en5FYC{!07RsFC3cj(IeYcnPdj4JnBk|~ z{MyRq7kV5NhB3fMai;|iI4lk^c7&IQ>YoOVT^%%V#Gt^zPXKN%%mT;J6EuY!euu)K zCSzQ|GcOT=MOmk5JZN{SF@+(b9CSuWREwKY|MBL-G%>@zX%5zFi%~2x`P~?8rYpVv zM(yJHg<*T6vmlyZjTiHEgr)LzWd9{B!A3bso20%TaRf*;tvPhNJ~AQouwWD_t%+Py z#D==dpTC^D*!@j4F=)*2N8Do6Bg@P4qm)f+^lVh~@i_TNI@Tod&P~cBSDq}UcstSw zrWyaoQIF*hd$6-#XzAgPxp~0R@`7X8;uvmUZLKsoWL~BIiK6=aH%Ec9$ny|!$YQTj&3%pdcRj~JJ4j-EjTwHzXK40&_P%oTK%g*4S^fO#C&facdH?_b literal 0 HcmV?d00001 diff --git a/vim-plugins/templates/.skeleton.sh.un~ b/vim-plugins/templates/.skeleton.sh.un~ new file mode 100644 index 0000000000000000000000000000000000000000..f55788ab0ea566a2a7dd9531bceaa44aedea3903 GIT binary patch literal 982 zcmWH`%$*;a=aT=Ffr)Wd^Sb0?KC15*`!dxmHZ{Eb^y#g%iC;vc_NIJV$h;wqfq{V; zh>-y!ki!HO0MRha5Xlm}ngt}w$Pj-4Ndc4z6b4B_!G9pYFd8N~*lD;g2D3wf(XkR7 z9SjU#CD0rS_5fHE#Ve+b;D|#J1L_3DFi4CGWC}Rq&{cpWh5{H8?gmEODri2!h$65D MFhm(l8=tQN0F*>3asU7T literal 0 HcmV?d00001 diff --git a/vim-plugins/templates/skeleton.py b/vim-plugins/templates/skeleton.py new file mode 100644 index 0000000..cd9ac48 --- /dev/null +++ b/vim-plugins/templates/skeleton.py @@ -0,0 +1,6 @@ +def main(): + pass + + +if __name__ == "__main__": + main() diff --git a/vim-plugins/templates/skeleton.sh b/vim-plugins/templates/skeleton.sh new file mode 100644 index 0000000..7a693aa --- /dev/null +++ b/vim-plugins/templates/skeleton.sh @@ -0,0 +1,3 @@ +#!/bin/bash + + diff --git a/vim-plugins/tmp/%home%viktor%code%python%odin-proj%dev%webapp%Odin%README.md.swp b/vim-plugins/tmp/%home%viktor%code%python%odin-proj%dev%webapp%Odin%README.md.swp new file mode 100644 index 0000000000000000000000000000000000000000..c5c6582d33fff9d502eefedfddd10ad6e3fa7d09 GIT binary patch literal 12288 zcmeHNOK%)S5N-ns4sXE?38@?>N-Sk(oCHO|2%(L=A(pbXWE&%hAnu*%-EDhjdNSR! z>lG4@1DrYJ0{j3TLMYteMs9F|3kQ(k1h?D}5}e@c9`AZ>Ige{lTmCeUuCDs(>#AO@ zwp+97i%mKg%rg8v!Pv1sH(u3~H`!m0GS-t@MiqA8_J4P4_f};XMk*FzJ}_OCg({X= zEicq&7>i!m7cHLW;WA!^D~vk|26?SuPKuYgzJ&I**KT|0M}ojHBVwfgjtDSGP3 zm+w5!TX+S$0$u^HfLFjP;1%!+cm=!y{~HBNKEd8bHuvphbbjYLvG2O`=r3LYuYgy; zE8rFI3U~#)0$u^HfLFjP;1%!++=B{m{Jj3#A$w*f+p6-~-?_;1}fdGw>tu18@WQ z7Wf+Y68IeW40r`t2bO?YfPh1Q)no!-z`qaPgNy4adj-4#UIDLwSKyWkY;0_>qoi_? zQP-qNq(edY^%qZmh+GwBj#=M`o)3b9BO$zo)$}y2*;{*u z`=#Zz#vIi%@RO;q;i)Y|;%>UUCnyzKiDtTJ)2OZ zGQ%bKI_8CFl`@G*nt&Qy4~T16alI;FRj%Vml`Wqmg>#Mm5Ys)2F))woAspys;|7X zY9~69V{5S3c7ob0EjcR&rwGzQC1i?1f`%0*S0uZPU^?fhw2^9LQ#yKLpG3K)+SQro zDOUKm;!%;((a65Y#2z-Il8AA}v_q-F@{BKfj~9}+5}~P!lc*xoHs0Q7!5~cnYVs{X zy2Nx_RKqIRQy-eNsw$?-vkqLsV=@S6MWm`{qbuk<$`g^a<4b*Mx~_bOWcO(oId>Fu z!=W+?vJf!}R`Nun&1@(a_29Hx%5+^$Ems*kb)`kolMyH$ob4VqYh4i4!f4wyHeq{w zS44*F`Xnmi3A&{x5|z6)LJPVPSjA;zq{^nMW^SoI7RuFbl8}1}HnqxFgnpDE%kp$I zTI*B>OqW<=o}1l~8rQl^MQs4~8BP{&>d}Iq4ro;vu&hG4hRUE6m}{%QdtH&)yTr(B zm6gQ7q~ zw3IU16g&^Ghl2ckA>5uwx+@@&jtYs)vB8u^CejST@d<(EX`Y~?tz$>5#HwaI6>OBk z!6jicDMSQSQ9Z6Img^;)*m9K-w@X%ul*@cqcRS~5DGOm&S%-F44$QV;w=;6p;jA`> zpA_q|FeOT6oSI9aIv`GGg0sOXyRAFf7`r@m`Mle3R}D9%e*MHyd+64ax)#Ym6`k-R zkG57-+w^%M+r18` zET0rftOKdAS;rj_+Rq4c?DVY7tTsL!?Y8sT2h}4Ui*$fOBs+us2gTG9&j0`b literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%etc%apt%sources.list b/vim-plugins/tmp/undo/%etc%apt%sources.list new file mode 100644 index 0000000000000000000000000000000000000000..306afdf9f47654335523a6bb9e6fb949a6696bf6 GIT binary patch literal 4231 zcmWH`%$*;a=aT=Ffhp$Rb*&w_iSG(51T9}&-qa|oJm;;S<{|5kyVDH?7P^WvFff2H z2#7%_21X#w31x$57-ooc)%d{zl4W6tzW`Oh1f@X~ND5{M!+#(Eiy$c&GE9(920e&$ z$!-Qm2Lr=b37~65ffyG2AP@K`E2N|*=@u6yD?}$2C1=FcND zm*?f=C#LA7HiDxZWG*uh z!vHAyLH2^dXq3Z3f>tyz%3G16Tm)zlEciiD;|7dy>P0pva#@kQ0*ZJze>Ad@LWU+x zU}SfIBby15zd=FI4#c2HM~JY&M4&ko6iFa479a)zkS-7(3`Qdj7810gBVEG%0)ym05eRBpS%EmC`3e*Yv;@G8#%JVw1*fXGemlX=CXifSsCIlKov7VX%GdH0`XZvoc}-o76EaF8UXoZ&;wv} zaDbzOk>RTZ(6z95sAUZBz5&Lxc4~L)>&NOdG+`22%&~ASlW}SP&#I8f~CZ zpd|oC8z(s0n6XEjAUN8TFyjq5tAQK{%9n7l(Ria}oPo>+##;`w^aE!%P|&jgF{tLJ^Z)<= literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%etc%fstab b/vim-plugins/tmp/undo/%etc%fstab new file mode 100644 index 0000000000000000000000000000000000000000..475c6583a157a35988d366481ec56fc59b67af98 GIT binary patch literal 1544 zcmWH`%$*;a=aT=FfobjJn`fM)J|;K0u62J^PwK^A8`D=XFfi}{ zv5vBSN@|&YaY~XQr-FWNUI{0sLS9K)F_210O-n4zDJfO}0s|0X2-5?k8G)D?h(Q2E z!!Sdnvx+(kNS28q{sKrA2$&!gm;_0IEe7%a0|D45u+$JEKt37tAkta+HaI#M7`{pX zUCWK+Vvq+&iht8aaFl}d!Qvid94LB0Q3?j5Q3?wQTG7BLy$g;~M#`hq02-ypITYk> kQ1pVLR0zZwjZ#o3&=LR(O*Lqti8YsM6JJOJWAynd05XYR3IG5A literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%etc%hosts b/vim-plugins/tmp/undo/%etc%hosts new file mode 100644 index 0000000000000000000000000000000000000000..ebea1872346460b148599eda9a3cbfb4d83f5d8a GIT binary patch literal 5873 zcmeI0J8M)y6vt;DdF}cDAz-6!AtDw-X5*TKR6#dgqHfHEF)WLSNQBMRY_JIlgb48) zh>aFjn$E()(hneMY{f$H69fwjo&ULWW(RWxMMf0nEO*bjb00JJ|GQ@%H(BmJU0k`8 zeiFs@_S@5sHXposwe#e}nWgFH?+RykAHS@8EslVd(#_+re z-Fe?C<7icM_Us8o>)~){g!jK0qY^IopFE!ApEo`GQ4o%T*gtMs>!dd^J-~rd(bytz zILfr~n1EPC0E^%<9m4(V*)Mwpu9$&y(xXa?2uR9a6M*Xw??*(eL@2KpuWb;bQijM$ zZz}BPmS4)?0BXQ%79etO8gt7NCQPW46-D6688|1ssjd&sFJ*85HRv@85P4{f;5=c% zggQyD6S#qVa5Xhmm+Hc#R8lomEx9r;7n-f4*_xl3Ys!n4=WNFbY(riXfizmoN_IV?5cr(Oq6kSLMyLn*))iEPf@NoxnJ3D}w`KcU~M1J!OJ~ zI=Qz*SVe}_Nsroo3Js9_St$UzD$7t##0HbEQe=i*UQAvTPKrzWRly&=z!Ni{x^ zlZ>`U1vSod6B5x#5lZ|O)5*p;qBxvS@mB{%B%;6408+dOWHA|8iBMj*OY4Mj0y6iFGv-%VNCKajuTp+hGfey$4D*ft@|{a5pBh`A GUwjAhn7&g0 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%etc%init%docker.conf b/vim-plugins/tmp/undo/%etc%init%docker.conf new file mode 100644 index 0000000000000000000000000000000000000000..08bdb8b024162c637d8791d493519765a18af8bd GIT binary patch literal 1447 zcmWH`%$*;a=aT=FfvJj1=4s?3!_V=HUM`=<#^SZzsOqoD+6FtG>4D;gMc3!sG{IM;zP4J`OUnMw^BbB;mo!L~}exeCFVpnT^M5)u%c ST2z)=q+nrSU;vEF=c@oRVM>eu literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%etc%inputrc b/vim-plugins/tmp/undo/%etc%inputrc new file mode 100644 index 0000000000000000000000000000000000000000..197a570de66083543d258b900bda5690f67024d3 GIT binary patch literal 2301 zcmWH`%$*;a=aT=Ffr(kwI3R4>yQ8^N)%^~LEszSj75q&=`eExXvrefq9z|;z7#N&^ z7zA7(6ayoWW`(jrGz>FDI{95-0m(8m#9x3aV1m*h3M2(HjNv~JfJKlL3>hZKCxaeD zI)0rBjt&NfuM$Al!h;^mJ7Ku@zzdZU|=u@ zVo?Pk2u{sQam_1J@Nx8WSMYI;*8)nI0x<|M0x>g~1))J~Fh9~WK$it1%gPXc0jhur zN`okn6wDBY|3Cm1K~gYem>{1FdJyU9{}&t`OblNofUY$GVlyBHMKZ_(*dyAs5gd0Q z1+Yj4G8sVeI2w1Lke~|yW+g3f+%e;bJ7sK{6dHHPc@E@SP&|&t9bMuLWC<|tbfCo` N)_f;|J?fsX0su+cNoN26 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.bash_aliases b/vim-plugins/tmp/undo/%home%viktor%.bash_aliases new file mode 100644 index 0000000000000000000000000000000000000000..99d110387018217d919baacdceec9db8794390be GIT binary patch literal 4868 zcmeH~O^ehp7{@#7_pXK(j5EX%q|$+Q;zI8|04*U1{)KliSU)|NHi zFFUN1IWqH))(^70#^~_h6fu*3-Ux@6Xo2G;l+euzPZ*wt4K1hi>NjGD0mY{>E<8AnU0==ds}S-Fzt4 zUE9fJfOj3Cqz#hL-_giGd!@FVWFQWc!J|S3nUFpK{X-ob97QVt#M{OMp@v2QhC}Kt zk^&ZoDPUA6zdJ|KVDdjfFVgNuaNa2R z^U#Tf^1v%wpDAt!BMUq$+6 zWox(8l@sshCT|2&)q4VGtxjwWMYyC+ zBZ@Cfia0K5_k-evl41_=cMQR-I#W>@JgduB!;rjDs}aLjCPQ%3?nimESctUf;+T%v zgKnx4H_lvIkcq352JLj_rL}8X?j4=n&$`oQqEpmX1_t)i z45)w+$Yp{GfoK?Jh;$12#{!aNWQf0jqyWkU3WKDe;6D&BFvEC5jE4JSFuNNV9e=>l z!NBlU0?nad4}e8cykgo2jyM!CpiWQ>!^OZ62j`)gJJ`8H!rj1#`wPuS@Q8ys988-w HK3@d@k&!KM literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.bashrc b/vim-plugins/tmp/undo/%home%viktor%.bashrc new file mode 100644 index 0000000000000000000000000000000000000000..3d6c5d9c1fc91c106b73f61947bb653a45fc3f52 GIT binary patch literal 1251 zcmWH`%$*;a=aT=Ffhkk``IT_4H~Hq7(xS;f?m958`?GGz=0|T28L1~ zR?19Mh*nTiNzTv7FN!ZH%Fit*QBtr~s7x(Zh_zNI$wo^!j;YY-_$mPu z1Zi*pVo;2;0CBDY5CjAp+N!Hmr=%ujCg#N_XB6efC5%94p4y!NI^MF03;iuqM#14G&QF<6-b+tVll`jE1+=@Bbd@M z!G5s<8e;>*AisbjgNPJt+K7@UfttVx5~SM=h(RGTnkYemKvNLutTzXoC>a>Q5eW)< gcOZsEBnv2Qz-2suGG#yviX?WBOm=#@Y2))%0KUzCLI3~& literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.config%plasma-locale-settings.sh b/vim-plugins/tmp/undo/%home%viktor%.config%plasma-locale-settings.sh new file mode 100644 index 0000000000000000000000000000000000000000..a9291efc7a03bf49ca9755b741ab8b1f17ddbac6 GIT binary patch literal 1903 zcmWH`%$*;a=aT=Ff$3Sr#2c-;3wg5ccAN3C1)NxQK01Z-+`LICeypkQ#01qD7#P@q zSTwbwAit1!9m`ev79uxN1lR%C=CCumpMHeiW zf*cBpN^tfDaYi#AC=_T3fYCPt9DU4?=mX^(7y#ug?4>L;>mg@5kS18p6##KY;|>%G dv;@Gon+2`Mzy&9I+=(G&Jwy$uWZL+A6#&F!T<`z@ literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.inputrc b/vim-plugins/tmp/undo/%home%viktor%.inputrc new file mode 100644 index 0000000000000000000000000000000000000000..bbac3d04ff4aac9d74c321cb19501d3978bc8eda GIT binary patch literal 541 zcmWH`%$*;a=aT=FfywFI6G!e(EFXJ~3r}8}wQmmFv-xYbnQSdq%U=Id{Nrg!1_lO3 zAO-_dEWC5`l8R9R1wV)CZDX7?gAYfodRWM|DFz*j)2Lq$y0W>;bSSidReJYy7*ZuM2CVO)j)0iKoB=)!9m>J`&YQC zAP(Xph>IvLf*|NrpC@VHs4-+YP`H;qP3|uA-n>8Fd+)knZJwp`6NM)&R4kn|4u6_! z4lN#ASV$qaiJG!%z()^lhJ3IZa*aI6u!9|n zA)_GE!0_6SVOIr14}v5X7JMX4rgA&`6hTHorh(v{NU#T!>5!X+hQ|VoRQ$ODmlKls zY9QB$mN;A4p>Q$^G7UKI{c!es;rtaQ;nfQ666`FbDx?q;dAET1BEp=(RCADt4 zcj9#qr3xt{BGqub4~uzPxswh0S3-FsD<&uXCRx(#V?!kBd;RF>u&AR?j)OddChCC84g9isx3+Le#M zf*2U+H=rX-Y%B<|fK&+~b*38|f^DUSI{oE38;RdD53KP+or!Shm~o z{`?TiTM=7yaFSIEIHzp&ZX|A*?fr4K*m^Jq+YxQlXxbu%21r@F5eoonuNJ98>TOBN zPJ)K841cN^$MHzOL`c>G(11IOiWDw(AxUAl%{ci*(N=q;hI_1N3zomqEZ>838f}xr zd8qHYKG^)0N&gDlai7Jg;G72KL;Ig(f!ThJ{C4IbZz7Xww#yTP^7I39oN~w0ElA^_ zd`_Wa4|JYY(=8cfcj!USZuLlo{l(GIm#*F~8KH^=Fkc zNIJgc9t-I4U`9>phDS_>UtGhB(+7_lhf?{r=h9>HWt$cy&HE;m_|I-JBwt|@o` literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.profile b/vim-plugins/tmp/undo/%home%viktor%.profile new file mode 100644 index 0000000000000000000000000000000000000000..6d449c0ae7d9921f777549613a410769e5d5d840 GIT binary patch literal 1430 zcmWH`%$*;a=aT=Ff$7Vt0M_Mg+=j=r&(u3xiYwd;=bF4G>sEihd24#|cli(o1_lWr z1_4P3#lQ%pnW1bD4Z{qPZuz%aAhPinpbD6vG>8I8iNW~)fdDK56BtS~$R~pyL^^#r z362g%hOeMFga!m;EEz}8UyDoc!YqQ0*yEnF`zIg v65(Q_5eEt>S^{9ixkBqGa16rWTtvK3@d@p;$(R literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.tmux%.tmux.conf b/vim-plugins/tmp/undo/%home%viktor%.tmux%.tmux.conf new file mode 100644 index 0000000000000000000000000000000000000000..f652dda90acdbf3b44597a2b29ad84047f9dd24a GIT binary patch literal 952 zcmWH`%$*;a=aT=Ff$7v?K4$l9`GQ+s>zTZN+z#FONvBB2ivRrTQ`+~Q8?gOnU|=z0 zfB;S?%?PBKpllEg!wiv5pZZxKvhf#?6hN5_ASsw34F7=uECQ1qN;KY<^sm2IgkcL1%qiLIGVt05FZLa@i`hzu+X464UDEfXs&@r6D;^aQNxy+ NoRP0!Y})vI6#$ZpE8qYC literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.tmux.conf b/vim-plugins/tmp/undo/%home%viktor%.tmux.conf new file mode 100644 index 0000000000000000000000000000000000000000..f490bf5d26ad3400cde2fbfe88d50e22764d2e54 GIT binary patch literal 5855 zcmeI0J!}+56vx-c8S+sE5CKF+*%+UTff!_@5T&s|v4T&L2nJckiq?B`cZ2tKPrGw> zIFTZubdjKmlp+m%8X78;RH>2*DHNfhLrC4-(S7|qvv_k z^np#}g)ZMV*C_4BTb|#%RfpH4_vL-#P%|Y8NVXF1IhnV|QLA+MW)(WSJpac>8i(g? z9vbVg#-Q&OK;SWVLxaOT7Y!i32OXxtm7?@(KW_paAm=kbN2W;~-v_ZFSyitJs8}|DyZJUX|Sr(b3_@ho8 zm+du8(}$XNEvLPY1RHdKt{Z+P6yqJ%6766RDXv7?lW`ESEKG%n`Kh@xVG<=N`5rK? znF`b(9rjm4nN3tgsoBfcCRM>v<7@?V7(h^Q2s@%HYO9q)>NlXDp zwuD$xr923g97?s3%c%1(o;%dVhAitxQt=VpNT|AQNzKO8A%e;DgRbL0W2wmGSE6{% z=SuR0vb@B~@mEJk66wiC642GJYFS+PD7E+E2gARUs@!c3O7U!W#qjR?l zJGvcL61v(rI?N`lc)&2>>wm>5$ZB{lCw#*Y%&;O`1JB~Y-DPOg@^6*Iu>LZJ8iT_u4sX zKDakNo3NDYGhnd}0^HUe^vqU<@*o}ic+yugiE&!&r=l&dv!tKTkSnMktQ~+ewui8KG-SZYk_FvemVERR4 zs^`n)%P_e!2?GJLh8#(&b2-mkO?G77tr4pn}nV9@HF*l*%AWcQAI92g#j#Q&<>-b;R7$}vp zwIpg$+wYe9D`R@8Fr-%sXRz=eEsK$8D;|lsqq^)g^b^~4HtnypJD+s$LSnVye=)=S z#;BVFJvoD{$#O(0J6&Z$HbfL9qgB5V4k&{y_CEdbHk;+A*~xyIgeRjUXa&R0jK5-D ZfUGjzmd?)V)WX@R=9V-)cjL)VF94FUv?u@o literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.tmux.conf.local b/vim-plugins/tmp/undo/%home%viktor%.tmux.conf.local new file mode 100644 index 0000000000000000000000000000000000000000..0cafaadd92904b49c521beb968e2804879aba153 GIT binary patch literal 26031 zcmeI5Pi$OA9mn^jPDs;0{tv2?vchmK* zwfmgJtx_-?xgaDE7lb%KrS<|y9N~hHIB?(qhaR|5ArRa^ApVu__ct?de_pTGuFIex z%}CGl+xK>NW`Cdg&YOR4e6_Xw?YYk7?wh4Ozxd7TOK<%6vF3N)IQx~!vsb_O?84;S zsj1Ub&%HML)T_sScB@oM-d8G>j$dna7R-yLm-SmOW$8+zlbQ6gdHgY4e-PL2!;#>4 z1_uLUf0SxhzVPV@UcFqZ|B_b`_Si`N;!<*#fBhDMe3d`({}l5_-tnO}z4r%#qg49K zaqW8KoIfC`Y&u=KurB0yxgZ4_6qCJ(B}8)G6QN>|`=O9aEV&7lkQ6-uR{-Hv2aa;n z?*_yOPI)h|S)1OsPr&Udz!mN%xM%xWZqg;Q(#sZGx6E|fFcp(GTYYnVwV#{$W}~x| z_095{f5&34yKLt3UOT;J@~*WSjx`0U%K*41`}_}#BK4jK71yTE{8m@5h3k>vK&1Mt z7byj*&jVtz-)A#|^PUJ51KgV$+`Cjl18@ZpUUiD2+Vr~tF*)Er9l?1|go**~_X6%N zTf5#3_uu0ZBe)aNcuhOz`SiN!XYFi0FIupUAZ4e?f@X5m=Qk4co(L7!W-ir);DjYu zxE=`(q^Hk%=}~rt)L;W*a=*`J1m`^wDh9aE3Ah6m9Q%Pj48RpYc*!Y_YNJRYRtbQZ zyw};K2+n&VR9u^x`?-KSXu%y*2@%}7uQNZ}%(C{}$_woAw-(cWGi$d^`f-!y=AtQA zUS965_Op7UvsPbhHs6%x!>`iEdn=%*1jMxNxYiM>+Yml#|KP<>bz(P*|C;y?Mmto`vQuXUBG>cSNwb zHv7u=rJ$6hpp^a%og%TKy>M>@J@BEiPS<82DcuYu#Yip~so^gMIXk&f8BOl!mf#4g z=(@osM1nhvBT9}=2pRy+Hulbp26tpD!I2Xt0E<9|QE-JjLL0T&FCLewvbsZVw_HU@ zP7kQuaT2%CUmQA7o(W=t+ezW}uy7l=9;pq+yb2)9g9AsgakYdGfS42@BRKDtP%*%r z5^z%%oUZ!@;0hqjh6BfQCseioQKnR-xe~!C&+NjK1w?N8Ol&MFl5him#Rj-_0e8-V za}%Qpkr3Q@JDOqoEA3XE-o#R+?oE^4z#RH#c*bztv2Sict@DODwy2@G`B#dz-;CG`5`$shveMs z_F6A>J9(q+#LH50Qe_;3g{lZVidT7N7v_$rer+7pCq=xQsY0yP>c*OS6IzP(l*%ffs5)^PT8#~&EYBg>48`A`YI0JE&i6M`$HBthm-v95*LBnc67B| z9coE$)jQ(%N`-J{=mTSVRQSv}`OLiOWH*bx_f|=`raJ40GdLeJnHUK@tTIM=plm}FnfFAfxHkKz2`w^+h1x1aHe#uSp8+JPM^wH@F_Kdb z32SagZu3$J500Q*n@+L_h-7Xzr4FCtS832SbLOf@JyF%o*e$`$F6w1g-!?}jPxQiznqL(dtBuV5Fd=@sJ0LIw;~3_s5s@1z$U=`LGExLE2_%E z{RDSHKSiACP3DRxiYdD%RW?CWX2|5Bz<9G$o(W=N55GrL2TtaqeL^H?HwbKQ+#v7@ zHVAYAr1&oQ4g$2;1;KaOs&7Y?r&6C@ z(8zTuT(rcBQ${*t%Tsweh>3^4>@dp*1z+i2q=F~Ti={+qzPx&?KHu#u*0BPuZlC_D z_p-c!ou>5TKNs`fYUXOxL--PICwCYJS#q}sj><@nGBSlHf`-~BuKZObdCD@S>p2J} zLuec}6Bzys`xlh~<-D0KXP)!5rHj>tY_YN0&Z~|sS+bD$K+a4+LS*Yb5h@1TzX{uu zmaQA5mi|6To_-rBiB1P%n4ue*v|*<-G&YR;&zPQA>m`}!}VR^ctkiRXuIrW zJ4P(MF2Vs=*mO1i$Bn`x!HwF?C+#kK`zy&c=bK#hQIrHBVX;OE8Tu8Z*@D^ M*?;B2`tM%*4-2;k9RL6T literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.vimrc b/vim-plugins/tmp/undo/%home%viktor%.vimrc new file mode 100644 index 0000000000000000000000000000000000000000..56ddc169c38c10ea5846ee9940a53ca459340cba GIT binary patch literal 14914 zcmeI3+m94Q6vn67<-Q9n2ndSy4tPUg5{WN_U~mBecZpeaaSRD*XPVs!Gt--%9?%#_ zyv3l2{sl@DF^Y=BL=%ni$@`PfMuIO!V|?`${k~IG-8H+4grpKps@-wuH@&^oR41m{JYH)r_Wy5`SI7U{5JpCqo#8w=EnN%pwE;Zn&wz=k1SU?QkFnJHoc*2zhxKC|x zuUii)z~w-AR4a~Zn`fO3h{0Kt_uz~tTv>qo%mxS72j{T8g9jGiOzGRKh6YEqEnr?J zKn&i*KD$ugRcfcWGXVFcfa_OdoIzy3Eh>jmH%mIv@mK?+$`)dquPX(3M6Hrnn(@T- z*}{`rJmxm5%uaRxkCz45Tm=kT3Et8tQ)#QC?qr&Drv=+VVB6WQkH=A6)1%ZDnR~&4 zq&!nZ>gidYxsKgyqW6=~o3H5Q!okxxgbjp96kM%UA4Yz=l@A||pU6h0qV{B5-?XpY ziPLN}2H;J5l3KSjnsl;oW7ugl<90S2o`{-FT))x2ex#drl5}s~b?lq5zkglVO1|IB)VEo$-V#3v_CZ^bhD%SDpi5HMHiaH(B%RssW;CZh(0YPJ6|f z0l2SbXfAjU2;RjLXK0RPN>dsg^)_VH3>f9OpD0;QakmR}-^@fuM8GHLg0kjBc`di< z0cJU0FEPt8Zg#=xTbmPlL6O)jPSny0s}5i$oXRZoU7_U}C%fQu>1v$Tm&4IU(hj3$ zW3t`C5+Y2d<21^WG^{1Uu7pmlCWjx`^f>}$Ltx{7=!|Wm+SoDXc6g2bxFyy|K05OkO^J23c z<7PLH{9CEOp+6L{<>0iwIIHKx@dj+1C~|hssU=^gcuaJH(}c-kD*75!lfwt`v@xLK zyo35$*G|&76-|fR@dIByPIq*|ZQbd5l*QXe#&>9jWVQyINoFA+Q82!bG;VQa!SIAN zu8DkXhGvFHENiVw5E;%>$zw8}aAkq%Nx`(FSclmQ=-zdhttZxq;5;l>Y-ZgTuuciA zr9H6JdDhTnf??PNatPzl<=-PKH#zul@$gkKUQLdc8W|ik zpldn^yI5~ha(W6lQf=iWkIqmBp0ah@fkemIjrg!*2SgWT9Q-&x@p`@qWTeu(F@Dr zQ}R;|QN5tgN1$J6NtqFxhCW`Wl(zPi6zzfWpBu)i6Z^)-M@$Hy$>Xx2;=zdS#Pd$- z36-oDaRL*ggAvzV#IgDYBYwH=k0Qd-_9|{SVQz^C&mW}0^htx^|337@bFV45u?y&l I=>FyWU#huy?*IS* literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.virtualenvs%django%bin%activate b/vim-plugins/tmp/undo/%home%viktor%.virtualenvs%django%bin%activate new file mode 100644 index 0000000000000000000000000000000000000000..ac84e777aa82e1f3138d802e76e3993f00a533f3 GIT binary patch literal 1517 zcmWH`%$*;a=aT=Ffypi2iAU|?FX6_W71_1k37*MI)5MLF7l$MS3NiA)$^w@veShwo3X%`S~UKdS#hKC8dcusd;6^`YBn7dFlB|K&9G1%m>8GPz*g3q*KHd7Dgb0i6Q<1NB{~zLLdNA1TsVj#Q6^d3@{mxz)%8%!QHUv0EHWfEeH+3 zG8h{e9hafe@l^sSs0GA2Kn#j@kOzp3decUDY%&40fdD8bK}NvcFdCbnV4(oOLlS5P zuGm}xj!gyztg)$#nvt<)VrWdFr(RI3!tEc8NeW_-D6PPJxeOeWjKsub9gdiMz6t=l CXlEh- literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.virtualenvs%reqs.txt b/vim-plugins/tmp/undo/%home%viktor%.virtualenvs%reqs.txt new file mode 100644 index 0000000000000000000000000000000000000000..0f75110deea2ce668dbdf65862e65e73ac38adff GIT binary patch literal 545 zcmWH`%$*;a=aT=Ffyw=oVVAF$!EODm$%wTQVT&u~zz@P)f z$bb>Z0bvk;vBCUEr#NF4h)Dbeh&&1jQw$dT4+L;yP?QY;4%oYc-JQVbFoH(MR|%+N kVGak;Vu=MMx)q59nTdJ2nRzLx6}GkpdM4(kjn7vB0Oxljwg3PC literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%.virtualenvs%venv.sh b/vim-plugins/tmp/undo/%home%viktor%.virtualenvs%venv.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f719235b8b993983d6f9ff55a32a48daa640ad9 GIT binary patch literal 3149 zcmeH~ze~eV5XWEARI$}TG$2k9#X&GxtczP|-5iw`5wUhi!L(pO#6jp^AUGGgIJt?7 z;Naw}lUqm8t&@x3kNaM78W*<*3hzrV*W63fm-}${UN#z0Z@pP+Jt}*-@^I#sCf<5$ z^Wl5nnqGRoxy!oU=(XHGJ-J;tR7#DJ^R z-`cCM6gtcegBdar7=qg*0)`v1pi{){@;7eoH#dUj|6~VNPHJ}G_*H|3T`DtLz7o5u zG&?CJsX3LD7_guoML-5jBM2Bw$bwE0rfbGz#jR1Q2ABj9kf7^{fQ#`UU=T@Kba_HF zU_^F|2&o4iY)nv94!R((YceuQQGq9G9YPR50y4Kk0}my@ z6cvl;i|_iVPZBjez=MhU;=jN@V0&v~#<=&ayVQ$YS zXJ+oq>|DO^#cc8Q@Lr<1_5R%lZ=b#M^1}DGznZwY|A*<{FMd7Nf9vLt>9#Mui~G70 ziNre9<8$fhnc3mV(W$w!)5Dp}==6Lhm>GX#YRIou%Kn9X(J!r4m&0N|eYqJMP;H`$ z{{RK8)I@OpPHzi79ZbyM#ivxTkraHiCJPU#@P8#M{?B&THg~T7s%>t%b6*d}K6#Tl zni79?(r&M)U4x>nn7h1GE_sV#b|qIHxXxzyKt}_A=_T3FnMovUwPf}!n^(DTU>#H#t0Yy1|?bS_jk!A?fr~KcTpAjzbh| z7SejaT1O)-xpRfH8ML}2*B*5P3toq)9;Au_OLymyL$MS81nC=}vfr_~pM)QN?Hm0@ zOx8i^Ni{wQx+_Z+5W8Jc`;67P>&Hl3L-Kvb_^J{|OyyLv^V`TwkQr?-or7418XYv{g47ABz}V@MVDtds#f@nvg8zAi39n8yHdwmD zrV5DNF8ST!)82{557~$G5x+-VVM6IyH8KeD8w*(H=5;DER=TA22dkZo)Z|)H)Q(na zi=ju)a>{hS*-I{*Ht%YAm+~vsP+r*r+F`0)W{d!hAJREQ6BTPskpB1tBfb(L%F{MM z?D9Nw`a5@KeCV2=3YU|GwdB>xvY9c!>xdd2EU_^c=O>Y{)dmy4oMb=q=2jef+975P zk*Z!RFP8x7IefzuAmXtDKU8pV5*Ax6!A&q+|G$Xw~pOL-v^ZJD?t?v6EJjvC<9Z(p7z2<(p(?Pn#cC0p+PN0Wsd%!Kuht=@MLx z;Rd1D>r?@!Ubn>R52(r+5mMb)HpQbBud5%&vXes;Y?k2s?Heq2Dw2a1UOHc= zivHGr?qg1t9&MxxY~$a)I8PlK8-4mgRS$a(HuijJ%Rk>roid{O9t|cQm^7AU>`qi7 zVXLLdVl#`TBGGqfM-{5LEaB w<*-nyVzHb}#nVXrHU*v>;#se|14lvFnL-aPUSQcHk*wT-T@p+q)(1|y%je;K^naOhdjlx8R{9D8p0#owDI{W0E)~rX8-^I literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%Software_Development%python%techfest%TechFest%techfest%config%settings%base.py b/vim-plugins/tmp/undo/%home%viktor%Software_Development%python%techfest%TechFest%techfest%config%settings%base.py new file mode 100644 index 0000000000000000000000000000000000000000..4fab25b15748858f73cb04ff87530756469c1623 GIT binary patch literal 577 zcmWH`%$*;a=aT=FfyswCkY>3}N^W1Yo03)eH=;5@;<4308xAL5g}3jHaGacyur_e3bwiTMooPkAkBc Q6cyrFqg-9bwDI{W0C68L1poj5 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%auto%update_vim_and_zsh.sh b/vim-plugins/tmp/undo/%home%viktor%auto%update_vim_and_zsh.sh new file mode 100755 index 0000000000000000000000000000000000000000..b48f81f5af323506b52c6a7b0a5286ef4aecd81c GIT binary patch literal 7758 zcmeI%&ubGw6bJBa8XK)YQW1Y)k%zT*Hnb~VC|Jl{x zV*9g`TR(SXi&KAQ;O zipZGAimvM3nFV^9`XHhQCJ}}n4VP)wgOghBl7^Ey=^_xLE?W(UzNbD2Zq0J_coBAN8A0`uqeh=j?N?zD_VMHxzxJw!iP$QHQK-^7<=cnCp z=zr>i;5JM+@Sx#Hz>U#fMR{%Cr^5ABsifJ!gnfzx2*IXMVfB2ogl#s*Y(u>#7uYak zgiUQ?yHKyUf~E=@w^X>)ou3y*ux+Q50O|knbmR3yx|P%)Zf% zuiTEpIYG}m0PQfk13Wn|*gfwo0h^mJmrI#H0#@`E0TvzYv>KG~@RNWb)VR-9ua>r` zxvVzan`V7#op2@a`qZFg?!F)hHI7V8Mk1+_ZaMD6&9$SO)PCQwDBQ5)J z2~H56Kt)D~QAjd~@JSru$vDF3iD+CBv{2*>uE^ zBpIakK5mu$mluJ0KALk8U4SxVaaE8lv>1d$gJeIjY+>+1dxjTUZ)@*(r&qtc`~_c< BKu!Pv literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%bobi-rd-links b/vim-plugins/tmp/undo/%home%viktor%bobi-rd-links new file mode 100644 index 0000000000000000000000000000000000000000..b2fd3b4de40e33e6eb0f0ab0823a7cdfba745fe9 GIT binary patch literal 8011 zcmeI1%}>*C7{?3Z8~B16BPTC1Za}w=y^s(y*b8jHHn#4C%Q8mSc9gbTw-u%bP4w)+ zv+-&?=pW!e;oUQO*2J^^p3;|xCGH?Lk)*%S_35|WFHfJ(@B6T{CGqerE60@+YCN$l zzkBlL>x+f&Kf3q0PrT8OkZjud;F>)|%3b3~}s=E8pHvwnI zsoH1rf^l;XJ2(ZKF@BLjU9yfY*xtU2|2gmK?uSVO2Sxpy8A{Z+0Yg1=D@)G}aG+r{ z0Fh{8lQ4?`?##D9y&&U4DC6 zAdrLUIM6PmoB$%xJjbD$xEK;}cQ81N$Z;H2EpPzp3d#&1+8{m0p~|=t5^xVNINbak za5fOg!E_vGS5Zy?k!YUdP)%G63Ah;y4kH>34nSQ)nE^x_q~|zP8COCA?jZ(;o1X*D z1_C*ljsxvF$_XG6&2t>8iHqSdIE-jCH~?k*^f$8uh&D*iaV|15rY7JXVaMU-=YX?; zz;{f?fi`8#aryxeiRL*D)x^bc7#v148XSPSfieS#Hb~ELs4}jE1e_l`4mUpsoDBqW zFdYXPeqII;iRL*DYUKVH28R)i1_z*Sp#%Y<4bpQQs*Eck0T;rK!_ChDX9Iy8OvizC z8|4HLZR{R6RGGgC?MmXRlDK3|M!;1tIO{)`0nm6(2~)t4qrf%R#02ixl+f*}+VbL} zw9u?KxIINVSZFAR-x2%V0L zBkiCwpQYJWvRt6063a%9s`LRl-4{9C$0U22>SN-XQ16H`KPRljiaBMezozuk%zVnP z1=sW8uAEC`^}Qw+j`ZrOWTMG3(N3d~(R1lykq$+xm0qIOj|R$prkZ9#Ttv|Oax4_j zv=qKBMz+`4jhf!wQF{?FRIO`~Myf2X&9|8polnrY>}q?psKz!M0fF95v_8$Yj#6vK`)REm^XohOdOA|+ z2%S{B+s;bqVmls8YzrIu0lSx~6{7l9AeiBng#EBAtrz+7sv4J>x)j<{g~~=M+Zgz3 Q>3k!wsf+q)um1M_Hw)ImDF6Tf literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%dot_files%setup-vim.sh b/vim-plugins/tmp/undo/%home%viktor%code%dot_files%setup-vim.sh new file mode 100755 index 0000000000000000000000000000000000000000..8981ded1aff10ec9cc611619a0ddea33f04bd35e GIT binary patch literal 581 zcmWH`%$*;a=aT=FfyqF6pWaHAzw)->;o21!eiTL+`!Vp&s@VVhuro_afq5qb1A{OS z%jcFUq~w>xr)B1(7VDQ~=IR#Yl%{9q6)V)~>jAkyCHz1v2*iw7Fi?nrAu`cdmIWdk ze*r9lN`RzbhA{jG0{JpcM^_TSIVG zV}iu3B+w#hAcn;)KO}CG6AMa`GZNvk2Fs1iP>cD&$h|kOUe4iVzqO zgE4@yW&w^hMo6rQ03|?@uvim;#u`e=3(mVBqe0mVq!JWq(D+Tv$pPhDaPce-(F_&R zOH5AAFU>0fOUa^273U{sCgvb3(8HrZub?QuEHfpws8}yOvm~Q52_rQD-2-+MC{@A3 zU^F#>f`tNroPyw?3N#NnHJN}@6SRECNKM9A>T&F;38E4uHK7QhrY2M=EU5{P0<5X& G`6>WrL%5j$ literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%Odin%env.example b/vim-plugins/tmp/undo/%home%viktor%code%python%Odin%env.example new file mode 100644 index 0000000000000000000000000000000000000000..93978ba5473c7e02647cb96e7e96a493c26e3e24 GIT binary patch literal 2560 zcmWH`%$*;a=aT=Ffk|Rwc*XC=7CH5l8~45&J*zOkRPW#TFd<=K!bz{)sVko|Ffb?p zv5SkBqo2Efe6Xu?kZVZ1w`-(rWssI(jgDtshIffWioRWthGArIqC=s%t6{QrRFGM` zPegQKe2~7TPF_t>q=|X5ss+#-E+7^HViq7~1!52Y(J;&q8MmgHg%K#i%n*M8Bnt!} zNstf-fHcAkVfYUOa2c@l5F%hc8q`h(Mn?lUIv5zfN&sET3B=q$tN_Fy4^Smtm^Ol= z8Wgq202J+@sCESjjz%>o6le*6QQZX1d03;`6|)FXC%p`S#x=+zOi#As>ZXm)R{;RCU9hbH literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%Odin%odin%dashboard%views.py b/vim-plugins/tmp/undo/%home%viktor%code%python%Odin%odin%dashboard%views.py new file mode 100644 index 0000000000000000000000000000000000000000..7ea0fb86f4ac87390eb0235471a6a6ba3f7beffa GIT binary patch literal 1083 zcmWH`%$*;a=aT=Ffhmc_*@ko3`~$Iiub=wNDsvSm%A0Yf+b*?d(W9sZ91EQp7#O&L z*g82UvA9^lC9yaoDL=6&#WOD@wIVDtwOqp|KRq)qD7COOvnVyiH?tx$Pe&mnHMbxq zu_P6wK+_7SoePL1ftU#kW(0~cM8=(7!2)8jFvMQ~2|xi@637N=gc-u{9|#y=GBA|` zMT1;M3K%Tz#_MKybTBh~l>n;b1Y%G!0AY{^)Nv*U)TlRYM2StHPH;?uj2MkgP-xHv RM8=(53eH@Nl*Z=sRRE(lU55Yw literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%models.py b/vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%models.py new file mode 100644 index 0000000000000000000000000000000000000000..c219bc75b9eb05ef639af48776d7c963d3e9d6f6 GIT binary patch literal 1119 zcmWH`%$*;a=aT=FfvLxv<4OQmTE1ZVeJd5|^>-IW-#L8un!|^czoJj?@UN?9U|?Va zVmk#ONXbu5%gjktuvN&-Pf5)w)^h{$+%i*hQZz~na`F>X;!E;v)q$!?b5rw5iuF|^ z^;L8ARa4Y8p{CdXX+|Js0%8yV(J;&q8C1#50+Efs0G3851aU!9Ag6!~VfYUOU=a{! zpaIM~#JU6IlR*z6gDU=lql1y*s|3)stU$~Tbv4KX6s8E%MsOsf2L&i7L6NKvvS~Du jL7_lP0L*h-&^!l^WSD)Rs4*ly+k;AmVs%Z^#^&!cv=C8$%-#J-vgnGbl2pfp|1BL4iP1 z052$^ITJlHb#X;zSZ1nDad9zf(F{%xpo|TQK@b3CReoTRUXWN)l3J8ktYE7UZQA&J F6#!>FZM^^h literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%views.py b/vim-plugins/tmp/undo/%home%viktor%code%python%minimal-django-file-upload-example%src%for_django_1-9%myproject%myproject%myapp%views.py new file mode 100644 index 0000000000000000000000000000000000000000..4c17e5adbdbb63c8abb5a25578abe243caa268e8 GIT binary patch literal 4648 zcmeH~PfG$p7{(|6q?MPXqNKw}7rlffAru`7Jw#9;DM|;a++ZQobfbbGI`;?q1f9Bc z?E~};qEpu(u<%fxqGP?!=-@`86)6_`z_a7d$nNa>+jr*OsG2&9Yy{JJW^(V`4;CZm zg}}r9Q)trf3-<(EF=wXt)^U9oJkBmL#yHuTRMz;qn$tX4Wphi(Y2I<_?IPRBZRAce zgjSlx!+S*wM(r$dgHe*T)QBU72FMniy^+MFaPrrLCuw=b!@Gw9hnc40bub3kZuA+chbS~s#Pv#WwN~dks^hAD3oJll z5tagEV@;LOXn0FtUj5(zgUrbwTcsu{ueAUr>mm9nAOc+L?V%#S|8KgS>&gwVfbo z(yHJa2qM@Bg0;>!cay9k?SX;&U^2V2NtoT=&FU}3DgtB7ls(~Aj&BQB;)FnC|8#c4(*hd8-6jW$gujfl?kLtx5PAqON>u8 zsU_gjZ=F6d5Rw}wasoXN%b*hy!zu(RBDT!LlGBN0_&vcibKa|h4^1yIWCwtN#tNay XN(AKz+8RSkO^3Gd7aGvzd+)cu!iISU literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%docker-compose.yml b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..5a90a9f19fd571312dbbb872d8b0d924f2521132 GIT binary patch literal 36556 zcmeI5-ESR76~Nu3P2!{AUMA>b0%lk>zn0nZbhXz z(RlXm-PxUcesj*8otfR7IDO`;#}}p-e><>lWyhE9yJq*tw(R=Gr?ws&I`)P6eNTUW z=$1b|`PmI`{pyP!8hd?UU|^S|nU<5W*7W4D$*IZNna=T}k4=m$Ev}q>Zh3y?#TUj8 z9$cI|y)eFXYGvi+#pSvC?JM0qA}6|5(v6ZXk@Tn}gxu0V`{d@YU&^gJgkoabg8AN1&2KOWQ0b8B~ zkFC{G3-refM2uj&%nC{l(kmog&c2KhE%Z~`o!2)h#!G^eMD3^_0pm`Oajf;!le5Pj zIyy7knVy=600HK07MOtEBq;+#34N7z=VuR;?QpYP5s2OFa8SNi8;ckXn^hL195c+0 zY=>x}pCTB4=`mtGV7yWi821C{>>_@+$vWE;{$cAvdcI@G+3i=zXwmwzG-%3gGCGd6e0bsZltHXkRGz$ z^g=^I5jAKvj*34BqtB@ONw;urLH%ks)H4?YwGBDI)^3id1>Ca(M-%Ue2-C`@ zw*J%{_(fqo673qc+Ih#H2KUVR9pTJHg!MnXU88!;57y_SFr2UMiO_(g!?qkH0zgWt zgUqp#+yOrM(oKEpO`^gVBPe)qh$-@f+Cu)R*ww)nH)o_%#x zM*lNmz2I46W~d(_1{>>Y*hOD`%A7R}w{wOl@a4obq#SFZguaR}T`V*8vDOs@raILQ zopiqxy)e{tbwsQzL}?nk`JAIDw9roxif27VbBZ`jEc0?tQ6bt9be}ef05rdv37~-9 zCn-Zj34IlT_(=~D)idfqZ&wY`j?iE?S|ZSHkYoZ-#wc3s$d-r}`Y8hOa|&@|2!3s> zk8Z9Sq8*_@O@s)vovxYy#Zq&p=#Ff-g_1hq4?Z@mcuOvn3Tb%AM}X7-~^ z87582iRj~W6kT#c5Z!Kf-WXOB91H*{z_2U;S=U)uw3L<(J~cTz`}C7XrzdQwy&QS7 zp(am9PEU27n0$O@f(dsyXsGg_hh<6Pgc)}s_O*6&Q)Rj1volBa%+VRpb~F-}9HCut z2K}YEPevsTq()o%{iwF3&7m!!dK27v)p}xojK#-byU7Yl4pNq=Qi1FeP(l-_f$d*r_ zau{Q3=`lx><}z*2hEtue{q4?Q{;Bw)`{Z`g)K5RCL$wyIj?0d2x2f{=wT63s;oRxv z#f3BT3uh^2yES*u<)o-qjwvlOPhoXc0G`6DrN!m5D_r3Qe+hZ+?#P{Y93JP7t%jpz z>C+*SBeXiA{@hWcji%yTn&0*nD~qm*?jbURkq+-mj=+!mac;FUGnCLoJSV^HnSI)+a6w+uemySNk9KdIJKu5-gt>3)J7%k zk2QrTQ>-dEsxnRVm?uq2c^#*T=h<%OYj@rZw>8%UiZ;7#Cb)L2q8%X-3Fo!LOTkXG zRG8jkSCkyysb-n6(@Za$Nt04|Eyj;}Hw!f48KA9`wA)*1t2JyNQ@~mXcijOTSQWp* z_f|NhYvPwaR==Ej{K*lTseO_Nou~ z>bCHGLiuhBeRJ7wU+qjZ`RW_p&b7G0@qi=~7!x&ffqdJ85}HVvt7=tF2v^;1cis-K z&$>2nMfJ?V6J`@R7iV(pTY77oiUZg|Nn`920cN^vHcZt??|+ge?~vCkJj- z!@RC&m;j^)zAAavWR^SAuCh9d`8uC}+uQ zznxNg-mC-hhYE3f@Wm7`yQMR&xl$@xB=GKVl?5y?b=^zuSe<5i*{lQe$KE3UH<;-S zvk@ln?sWA8EN9%wz6=vBG>|$lf1)t250*)fTFUh^^-anJvFtKXO2a4S2C??j1Gi0^oXQ~B_Xsg&XwQ&gf^N= z(xjY-Z5F>E=OpR2{6{C@S)Gy4rpgXv#&hiX-7y*-aDDSl79K$RQAsAW1dhwyhiRlq zUZ&58KjP_srCay$L_PYqEv>xr?BddMhcECy??jUavKJZv4TFiNJWPTTnn=>5oP=(~ zqH>(GZi~r(O`(qllc$wfH^PnDK@WY^*5Zm z@J6&T7M8lARlQH?mZ?~v)aTsd>s3B^RZnB>Oe&^rjP{nalY1J}(m;|Xucv(iga3ni;s*+{wNxGR+!*{TNV4y|fqN95Pv9ks|<>s^x4s8McX zQ8T?}Nt1E{rkN@h@vPh8+t`M9Ab~dHZytPWxDY#!x7?&7*zS>J0@6WA`99b*(j>2g zahqb?8DbDvGo@%43k!43W1OBUKm^*ouATtJOSRaSZ4oUrkU9`|cv~cfC$2Dv1%L0{ zs``4njfnRIpc{9U1uM^+4YMz!L<qM@!XuvH$g0Ok;EUWBGG)&xa&Hbbc?2#VHPJ7BN>fCoBo`Tu?Tz%o0qJZqS zoo0I3Br-LNV_QQT$o5SJDDa-y&t*pGfxICu?t+%#HyR9Ge9x>~cs)EZO63%A12Z`;}}Ijg>gYQN-Ea4$Qu z-$n}!1d=*FAi3W@Vf)*izptp@-Wqyf^D~S~(FFE+t9Nt@hCdrw@)|%B+#D{Hrjkb} vOe=lO<-aTVi0^~3c}Apoy&^126MWN?$0nyHXJRoeH2zkpe3jjk_tW30Q+|}0(*c@UQYqvIzu QI=)JvITq{z)5hnk01VF|s{jB1 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..d8ef3c67145d9fc6669ff91077076aeb5c267c9d GIT binary patch literal 37033 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Odin%config%settings%base.py b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%Odin%config%settings%base.py new file mode 100644 index 0000000000000000000000000000000000000000..d2f69bf3c6ca6d5ef84cdda941dc0d37d34e3c89 GIT binary patch literal 24275 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 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%entrypoint.sh b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%deploy%webapp%entrypoint.sh new file mode 100644 index 0000000000000000000000000000000000000000..4ca67017427639f2aeecd3e43adb5e3bec28e5aa GIT binary patch literal 6813 zcmeI$L2DC16bJBWnzTl(?Mb{jG*lvLsbC6%$6nMNL|P#ilXNr1NV1XL1bb}1g5b%6 z7xCaH@F4amhzGw!@!+{A7S#8DJFlH=Q}7blkqk^{GrLRY%`b0uvX9!`*BjwlZ(rp; z>>YfszL~2&{}jBsv-NsZLRy zr;37Bs;V`LSMxZVSM{$rOC^^y{1>NCx%{D`rsb1o?NJn29(S$&>ySB=I=Ey9nx~cr zU)g0M9J>hMIwE5tFG97^xeX%Cd?BLWE)k}_U@K2N!=V@9a7Y$T`ly==5OF6Lui<7S ziY&La`r$Pf4pWcy5%m~OdO0KuHv~mj0~P1_8n59Hd*%zl-D0?@WKk3%ftxkkCeVwE zR!ejwE?oY9tdD+ZH3~0TE0<`=<4UxYWfDbULNb8~+Z8oQD$K$-ORZ7(>8^%pCfP-< zST67|jU5y?!NuRn374Ifu{Fdsv@rx17CPD7pUgGMGXNExamgKL(dRXs87Vbj2mY)FW%oQ9a%m%C>?-vT%UHRZ?&c z&$Ti-yoSSzgv=L$yO)N;a|(k8-0hOSyQMb=?M_Q?HQSx|x_&x{`#LhwAk_UQMhCra zw;8sU^*VisP0$Nly5H^^>kChJCSVQUHL4R|Ou|?T`94VdA~D5x{a<}`FVgKWh)gp! z?4GERbNvQ96h*++_7OE-NHEnKnaW0UN63VUK%EVE@ku|yhS P>cvvt3sfq*-`@QNpb-Jh literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%docker-compose.yml b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..e5c05e7c97d978e719e0a89e8a74be89a3a59836 GIT binary patch literal 1940 zcmWH`%$*;a=aT=Ff$8Ngg~sxnRg68g^6Nwr8Nyn0mzeJDRa&lh{!JTe`LYBC1_n7G z7FU3R%-qEER4avo{Nj@IqSRub6e~y?h#7&H1&BcaM8hycWWpM07LY6}L;MAhED$h3 zC@=|wT zs*=I95gd^q)yzN)1E5F+sZjD8bQ$p%eWw6P?Uny@qsv_(Fh6!S^{7+t^r3Q3nUsPftG>tBP<$KkfTvo zp*%Gyv7kWTKP59y-%7u@C>hLz=1An+2y!zhT4Ck$XjFnigr)$grUU0TQ1G(>F)S)^ L)uN`2&sPBevusxk literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..8360e301351f4aee42df7440d14d2fd828bad89d GIT binary patch literal 7800 zcmeI1&ui3B5XZAW?2l;G7Sys{0zDKDalLr4;3}*Ksk*SRmAz{>cZ9%=F}PG499$1*IyHXs7^j>? zkEXx@6flbbB9Jq@B;v#^QE38qi@~KkgF7)*x>mVP=W zj-^fpieX^rWzbl0!&JfuuM1)R(2KEE>-7)jwr!8XlU0ivCL()K*oZzPOO{w6@>?ke z2I;U!gRT`>A0hhXM+Da+LXJ?|+>OXtc7Xzi>0y)z`mnmiZ#Uw%QmhTqVL=C7E3&?- z^(GYr?qs=g!>G+K8g<8Atj*0CPIKCxbrn2JamZ&ITm*PIoQqY|9aMOkAb2?i&z!M$ z0SLDo1uP|i34r7HodARvq7;h0!61O+y8|>#v*x->4cokLOE`kwF`vC4D{l%3O`l_; zIV75SrrFotU&?ZayI~P5{3Fc?!&0I4|IlH7~2=h{xHV8Ks=$`6~ed) zeT#U(l=V%@;{N>$Wv@~|ca%CSG)t`ZSW?OtH%IXQ7yoW zCnhku6kN3Pst7a|DDi-JWs?LSc_UIGd{6!O1fAfMuNwYm5nnj)EK8j=UVGnz8fB;b fnBaOOIpAV6TRukt9s^RLM?bTZl``#czrOkl>M2si literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..b74755eb87fbfd2ec624fb89b0e109fac7c70062 GIT binary patch literal 1030 zcmWH`%$*;a=aT=FfoavPKUND9&GtU2jFVsUq2t|cM%}MfunZ3ykw(1^wcpWPJ=_(?)QVqI(==-nMfuj@@ooql1 Ni&Csv*R=8ZDge;xORxX{ literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%README.md b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%README.md new file mode 100644 index 0000000000000000000000000000000000000000..d482120ed72e03a4a5b89f7f933128a7cc436ee0 GIT binary patch literal 18485 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 W30}0x)mBWskh5yuovxR@y!rw4wl#AA literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%deploy%dev%docker-compose.yml b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%deploy%dev%docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..6a1ce1fdc8258c34a594583e1322d2b6379f2efc GIT binary patch literal 565 zcmWH`%$*;a=aT=Ff$7VF-og{z{TWitSxs3TpH+IFuKzvl(0&VV7W?g!-d6r*U|^5~ zVo?PsNGi?DNwHEWPfbcJC;&?ELop+e24N6@vBCVvgdH3#AQlrt`~|QyDgly$8N%=% s2;jz`svG<~uy+T$Gl9{;4vmhl5Rx~`Cm>@X`6!f6H1;Px_C;~+ZtegZ1 zgQ9CRCxJqO8UP-WK*Qh(AIKJi86KJNW*aysu^R vgDPJl2O7wwgaC4Y6H+^1^1vntC$tFyjzd^&25Q5AqX9(}6tlqG`g|1t=!an{ literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%docker-compose.yml b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..35a0e40cc6fc9de2b4a4e553e285b31014cd80f2 GIT binary patch literal 4233 zcmeI0O-tNR6o%u>I8Ifpy3qO^6a=9&0d+RPr3%tTR~3SSsgqa-r;}kEKMGwKTy@dk z;NE4Si*CA9m;Ql5U5NXZg1FK1p4>Byq995@AupUcH}@mCIS=RF+?g+a+w7)*?aO|5;p}kW>&%~>+3ySOnx+ks_2?mG_2K;F#JGu{VQOq4 zgBr+Qa4GO8^R;E4tftVK(Uy)?hlKKQXzC^F$HgUyYjE-0gg1Hevg{vojH5yO_ljoQ zL)J$I(0GB-5NkcF=Zr0P`F*8gymg9Y!!*{b1uo`&hKUhLG7-SOR2IXOs6^&1`{yac z)B>1o^rQ|lf!QuFmp6(f$JBEQ8!)9pvjRe7`w;5l97GhN6k+?z*b)IYguatZCqqWH z3O0DoQt82f6huI4BohHB;Ac@0Lqrs!lw}{BGsNWW5VK*3j#pT7t1HElYwC_$DS4j^ z$K5oh>(z=W7^XwB24663MP1AkQHWBOeVAsZssBt7eh7&(1aQL zf>*A&+qG-!slo_sau&f@AZ=DY&OJorF{($BZi3UFButl-E&KN+V@wAaF#s7PU!`}S zC;3|k H{@MN&Ew!`; literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%odin%templates%authentication%login.html b/vim-plugins/tmp/undo/%home%viktor%code%python%odin-proj%dev%webapp%Odin%odin%templates%authentication%login.html new file mode 100644 index 0000000000000000000000000000000000000000..e9ab1c7fbecbc53d9a73a6ffef17431dcb70bfd5 GIT binary patch literal 1021 zcmWH`%$*;a=aT=Ffk|%4Tb&I1ghE@7HYb+)xP_K;j2D~ketqt1SN)yaa}ydF7#Qq; zm`OnaNOFQ$I4~nnoFOt{r6voA#ljGO0VDtgU`Zewq?rRsGyDev2AB*~;eb(GB-#x3 z1&R9TsvI62%nV;8fHs314T?ihjDi9l7^`q`PypCN#rYHz5|MyuBT8ff6@eoXWCF-U nFc?&k2})+9fWeXo@wz!OLEtPnZ!wY&o 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 S4KJvqezNa9{lkCz%l`pr&R9|a literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%projects%techfest%TechFest%techfest%asd b/vim-plugins/tmp/undo/%home%viktor%code%python%projects%techfest%TechFest%techfest%asd new file mode 100644 index 0000000000000000000000000000000000000000..12ec51d21c2e81f299a8ff9a5378be1c18bd6add GIT binary patch literal 952 zcmWH`%$*;a=aT=Ffoa3Nl!~&YtjfQbkFVtHb`(2u(VXe4xAXy-cWe9X4@}c$U|?Vb zVh}*4nIJ+8AR2}lBE8;DU;(LOWQf0jqyWkU8vrwe;Xe>CFvFyV7!CKuV0Je!I{LuT z!NBlU0?nad512NBqY2$Jp!fudv4Zq~qX}IFNMa~}A>nRdH1$Js4c2I4ODs+SBGbm_ Fs{mlrD~$jE literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%projects%techfest%TechFest%techfest%manage.py b/vim-plugins/tmp/undo/%home%viktor%code%python%projects%techfest%TechFest%techfest%manage.py new file mode 100755 index 0000000000000000000000000000000000000000..b37c87bb96113338ab5e2cde2400dc47ce232a55 GIT binary patch literal 946 zcmWH`%$*;a=aT=Ff$2k>>kT)tF4h#6eVN|zeS6&hJU4v)N27t|+oZ|}6`pbi1_oIm z1_3z;#lQ%pnSdBZgVGigX1tJ=M0V)QU1oA;rFvA%B0|8hBs&GIlbXO8`49F*g z9>Al6f#ItJ(6ykTM~*`V(?)PKp?d}t7%+9C(M0oT21ZjgIM*;DqDdZVD>!OQ8=tQN E0Ojl{(EtDd literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%code%python%refactorer%readme b/vim-plugins/tmp/undo/%home%viktor%code%python%refactorer%readme new file mode 100644 index 0000000000000000000000000000000000000000..d8d61d2c5c996a40b7527220172cf7a5a8400f7b GIT binary patch literal 567 zcmWH`%$*;a=aT=Ffys>PUf|rk(*;5czlQ&|EIXX;aCFrbZC17|n+ku-n)tGhfq{Vq zh(Q2GGXmKl3<5AVm>=oceSrnUVq%ED0G382V2Z(_|AByk8CAiM;eow7*j)>Zj`Psy e_$mQ(EOKCjJpdMELh=Se6iE;g*QSlnR{;QH=p&W@ literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockercoins%docker-compose.logging.yml b/vim-plugins/tmp/undo/%home%viktor%docker%dockercoins%docker-compose.logging.yml new file mode 100644 index 0000000000000000000000000000000000000000..51d020e1d8ff7c18bef1fffe4b51bfaaaecde551 GIT binary patch literal 1699 zcmWH`%$*;a=aT=FfvKo2+xc;ncW^v#YUL&AIGb5)i(aa>uCn>Tz`&pn z#K?dd$N^yxfU&{+NY{cw7Dk{b6GQw3ur!1K34s7e5et|FB>n>d155@cI8^8%;cj4b z6hNcns{}A)LBY=o4PkIBDJYmW!Xt_aDg#mllI4N&M_L~#Rc z;)U7nMGa_z2F0f60!@GwMr4HxG`WNHA_Gv;A1#-VLxiSmU~*3aCwE3j Oaz`(h7)%?VuL1y^I&-lA literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..068d6ebb449bb36ef626d91d4d0f3283d1e1c326 GIT binary patch literal 11213 zcmeI2OK2295QZlYjmEe};}bzg6eIz&i$MrJ4q_Y-jRrN6Q8a8eqgj)EI6Dz@N)%t9 z;6Xfj@T?~f3W5(1PvXU!ClLhkEa*u@>#ymW?JSab>0qEMbb7j`vr|*wR(Dr-PUH&@ z`iniKFHU{O^?|#6-@6X&zVq~S>cP~VGxs(*uR8X=@ISo0|M}$I?T+Itrm|w+kv`vz zg51d2pc1+1N|+;U1C<3->Zq)vvRc)+UPZ<6y;~m}akteOd=CXleO&Qx+(KdbO~M~3 ziuqJ0Z}C4H?R%4-7>DEhSX*N#zrc>mj0x9ZD*|L_uYiIv&5PHCwKXy??DoB>UpgiU zGYPdAo@g8KiV7S+aa+B%^l3xef>T~GR{7rLW*wZ40^hv0qy2~7a=z^5i% zT}4hviEa2(@ZJiAB?m8<6e8EFlY{F;c+BAOQrAkz0n|e2N;Uc!6(Vzj+GR+>q!UWk4orMN3 zm=uEcQiq0k5y9ZtK6A3*W;*$&8ie4-yP4`!z*bhJmZx%xxr%tcW}Z#)WS2}?^hogB zI15iTl!6+zHkVU@fG8;16dv9%F1~kdk|{2#Qj~{+;=iTvfX0VK>Q4a_dox?nwnHnt zU{ZYV`eTOJ97B|CG082aYxSfMpm5^1Qke&cxX($11*g1Xtn$5^@nJ)2HTnQez_m_a z$Yf;w2~7Io9}r^Q%3`sJCrs7Jk+@13B;NRWYF?9b^fk%|;6lGGXj??^f=Thc+YS$j zEpcSY5f278%xjzfa*P)S7sm5pPzZ`qr8Bw|DUy1i!DRergxxrUC+0+mr7Tg>sj^y@Eg#0ZIfU0@0qQi&u=+G*S^I@^Vix}waPzo=Y6yLk?PA8}*dT~hBZkg2uT5<=|TB#sMK$4f_{gxbg z!>CYl7wY7M6F;;D5p=)j9{DXS0-A=ygEk(|U`;zFgMp-^gcDvGPrN`*$F z(P&h@5?5|C66Qbq=By}aR!H7IJ2!dz=JxIVfBR-{zPffaSDUEckvDsM^Agk6%EtNh z{n=`1JZ@ctL%XMkdsD9`+tI)b5p^Rrm)9HBdTq=E!vT*wI67@EafXmJD4HC6%A?As zg)7Xmyd=pdrV2WKW634;#DB{8C4XK~_`EMTh~j>}TUhUNba4nJW7VDoNf4&d9RY}{ zJjPali5ff|tocPr>h2|BEUrl@W6)BhTaEWOiE4}1<8ocI+nvPVJY he~WA+NWJIu=FlwhzH`Xbk<4=xwt5Ab_akHv&36K6a(4g# literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%esx-vpn%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%esx-vpn%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..694224210a95847668d854da19994d27decac3fb GIT binary patch literal 24419 zcmeI4?QbJT9mjpwYkTdr_fSe(?x8ma?Lo;UYbUulX@rEGI1d+J?AVE)KmtEC-m|lI zyt}?QLV_X?mC8R*(W(+ctyK5}puDS8A;BBq6%r2u=~^BnKuGYmFyHZvGj^Q4+9pcZXf;VqtoxbcIJm? z-}>39#joey{pYRN)McN~cZzOj5^Kw(W)q|A6b+|rI|eO$kZ#B6_5j@ibb}!kn=hOC z@;{Cpp(Q7MU->0IrFM*NM_I1(LwwBaztq^FM8RQ7yREpNE1gY6OAN;m-+!Lzt0-&0 z)t4D2@O()69LP|{jA1$y%@sA4(nC@2Y-;Ua43n>esq1<)gd+lyhv|k8gaH@Im}x}9 z6ROf|D)r1>h~!8D7W9z9fUK)QjY+sgRZ20Pmoef02=^mBGna^6CvL&D9QVb*_=ta; zhZi_Kf^TyJL-9l3q2?x9bYG{p<0g7RV0lz(36N<_l0(#HDW(fv;T6T8@#cEjAr;4I z*e@E!y6KFVb)(g=$Z(9*8)b`ThfT|N^0nHCT_Kk*lR}=RyFcQQ3B)I)W&yuOE;&SP zmLh+aA%CDVHjz6@U^qT=eU>=&24MqCj85}RAbwfVY}RHm78REIB(nTMtQhhwx@gk9XlMxRbu>v!`(VaxlWT}Wusmq zLt6v1JWXhg$k)h-v0LXo^*s0;)^c2biP2)W<#43iDCM2hX$}PhxJJW=hTeRJx&~RLf6iL8OM*V*NjgDs~{Qll=9eiVZj>uY08{WP8WD?pn z0_gdT#}4n0(EmJ!qjE#v1Yvyw`-gg@0QcPYM*E|;21sQXgBNjjxmO(_mkZ=^Qt||(1G!A2Ov?pcP-#>y zKlYN#cez}cM5Ny3gcgeA86{aN zlwZg~L5xBuVzw&|p$xhl+b4ElenM)|8JY+3Nt9{q@PbOC*nh>aAKO_5lCj5teZZ+< zpVUE_UA*$PK>^(*3{71naU46FO8;CAb}_}xRwH#-H66{!ZWE$sfEKYu-v|0sJpuU-O3-R9ZImrKkFPe%x^&!auh+e`BA^-+ZVK z;A~jWn+Y-Cs{eWHYXQIuDvb)@oGbvu9@b~Ec8f{bkR$+)Q~d2adT>2YH(_9|ISX$n zPbue%{hSf#Sab#F=kJI!k6Ex|9W+g0;0oa|zB*>%5|u_-5}Bo#j}a^{NG$tqS)!db zX9!l$O0@(}Fl43~3Qwp?DZ@*Q;lsTHFZ@5m<9QE;0wIuH#1FUuCt{kdVQ7THEvizA z@CAnOcn2ZQW;k_o`T+0n=rvQb35`G1J(DCsd^r z+Z!@AL=1+TBJQ4(;%?8G8Xkc__gSf;z=~rr(G0#A6Pqu1K{5MxbLi zFX@<*JfkE_(Y?#iJ+?D@fWec9xu^Tk;bCpOyo=KVtzoHRAPIW<*=5No>avvHZw3V( z`aSfRgVwFstJl~c&JfH-q&k8pE``{@S4W`a86{cD@OO;ij?M^P093J68z^8(f29oM{ZWO6b1QsdKMJFc{pKapk=z z2ns{Di$iwH^vF}VMpfGXmRPtR2$*$WmnKRm=OeG+)o4vSPeRnfW6Rt5nLxWZ8o};t zXeAUzacE_>kf{`E^-}z$e0Hs!t}O-@THB+|XmmDhj%F8fmBL!0opHv;*8R1)h`YL! zA9Jkql9^kIEv}>&nq%qp)uBkJmRgUjM{lfV?8O@k*PH3qwW2$}6;Eyia)y~H))uOP za&{|TF#|>+&|H~c^2ftfYu0QPCg(P{R+bC)b$6l`3#B%TYi=?%lT0+PI>qqNa<0CV zN=G+ugzaV5U5Vtk-0@Pjnk>XOZmvdh<>caI#@bBOQgflXsmNs9om(%|hUO6)=sI~kgrA8+I~6XEU6 zXt0&8SysueWtOf@&CDdW-IkMXtOe)&<)9mm21g726*{?HS=?F)CECTw_V`vZF<+h8 zo~qPeN)?w$vtD<;*fOh5y~zVez(NdSUJUQ9LY|opAmIsBDSaFESLI;{Tn_}y2EHsV zST34*$E;gdNW1QmV%{R9xU@ec%R T&Aa38d+?X?PTwoue}3nGg>D>j literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%postgres%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%postgres%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..fac1462338fdd9945c5e13e53fd96030baddaa19 GIT binary patch literal 2353 zcmWH`%$*;a=aT=Ffr;DgPVd~^Gxn4%PLvG#oB682R_OU>txYe2w8Pf^(1>$lU|?VY zVg*;fFogjB;1Ks9*Wma7$Kc>_{~#AzrGmub;`02W6eXY@fSd{K)?i{z$8ctgu&oH5P*$@2@E9~?u)_f=t#Gt@4?Z*!0=T9&7oiq zm^Ol=3B(4)EewF748#`$34o(%NO%|IS~M^u+zre%63Eeno@3;(XH9s{gvKIB8z?8k z04N4WV-Xe_G^f#H5jjIKK%)pG1}iv04gy6NNK65UM>85I5NHa3QKXBW(LhlE!l06Z zU>yjJM&w)uaxf@LLD8rO;*6G;pirPC07j!Rw3Pv_)?fu6EE@H(mzRj945FRm;$*9& JWZL+A6#!*xac%$r literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%postgres%docker-compose.yml b/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%postgres%docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..66b948a31d5349410416aa0d65da164123c06c29 GIT binary patch literal 10371 zcmeI2O=}cE5QZlvF`wqcY(6xXaXsX;5EM}skFqxp5)xR1h|x7Jnrz6fLC{NnfG4kF z5Ck!Z9{mFzO^kX^4ifYx9=r)!Z%x0w&Flstp~XNK^mNbcbWcw`sp_hp%#;__rWY?& zcB3Ot-d=q-J+*WH*Ym>ci_F9K*oNDauqa9g5dYy&+By#k`A!%?FC9CBX#MQ}6-l zgcf{?0DR@z8Pwk{rArC`l3!e2xISOX$4ixJZGO2_&DBabZr>_ZYX&3xNf#9$1nz(_ z(TC@wV0`Uj1i}s}#5hWh24jjIX>pe99_UdcUTdNE#-&HYA-yruTdFMAs`>cB2ro<*JF%WXo zK)}ULt*|Y`c3m4|q(~b(Memr~E5y{?0b?^TW$u6>dd%}s zfigU5APa3ARIDatAhfY<0s&cV3)yc$h9M+t!xoZd)M=AJ>r9Pv1;AcB!wBHw zo&b~@IY@0aX|&3H6#&(?0R5prJL=gyyeEO4u%?<0M3pGU=j}965IiP@0=if(ac^+G zP=Z$}7Cu~5qFsMoE+>o)f)I8}DWHcx0F*!sO7JQ|Y)*-FC&XY-6c|p%+F)Zg0aX3G zS!!Uk{X?YVXl6f6Xp-85F|a+uwxFvjI4=io2ANV<%@zNB2 zk6lYlN2VvO?U|e-%g~f*K7bu}<_4HZLDc92Ku0rPnigPhVu0zS@pJ<~Zmii46C??8 z!_Fi@m62+QXB@@&X$r|THO2mfB)uS3GsH9FmZZrkvUYcy1VL;>N=6C_IlX> literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%redis%Dockerfile b/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%redis%Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..273ffa49406ad0e61ba34fd7e1d890a09dd60d95 GIT binary patch literal 523 zcmWH`%$*;a=aT=Ffhmz;jrFTTFE~rBvb*;!lwo8KTFtNVCtubzqVo1mmaHfS1_ovz zMh1*P4hVw)j1A^Tx=n0ifr!LkfXJheFvVcO|3H9YG>Y;;%mI6M5W5fTG+=ZzLZjoW O1e#;P9x!cuz6t<>o*iKT literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%techfest%config%settings%base.py b/vim-plugins/tmp/undo/%home%viktor%docker%dockerfile-tut%techfest%config%settings%base.py new file mode 100644 index 0000000000000000000000000000000000000000..9601fd253a470ebb5cec97ad50a0dbb5a8df95f2 GIT binary patch literal 579 zcmWH`%$*;a=aT=FfywfdUyp3Puq)60Osy9M3_Dd{ZHzj^`?_(NOEc?Z{bx-K42-%A z3=A>~P@wMN9~`1?rJ$aZpPZPJkzZV*t^<^>1Y$uTW`trO1!sfA7$V&+&SHVc#$Nyl zpaGB+%n*kEKmgW`rf5L8OeES0_AZHf=&l?X9W$ZP@l^t7dj$|zLE{?a0le{T+W34G E0F!SpX8-^I literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%q b/vim-plugins/tmp/undo/%home%viktor%q new file mode 100644 index 0000000000000000000000000000000000000000..332baf9152132d47ace6e07485d4e674db7d9103 GIT binary patch literal 560 zcmWH`%$*;a=aT=FfoXP;>50AatC!FJ@g{Myvj4RIw_4c!|E8=hoXXOk+Ts+zz`!5~ z#4x}FWH4gEVEIVLj}0s!Stf?~3t$mc0we`D>^~5IjY3s3GVGP}x8CyO{)bh8u@1&f8XC$OC!9_(FfcF! zF$l0gCS6p4iy^ii^1$* zV00V@M+XDLR|zzSf<0i`2#zKY8y3ePWuPbniLrq=;Ak2W-UYc94Gal)1Ec9YzGz}k z%1^0OsIG;^7ASULIT7StP|U$I*=THmf`pa;7+V*RV+)pfK+ynBZqR4~@nMA|$UUGa z8;vGVNYDkqqlpnx_JN`X6dmZ%gq)K=4g;xyi;d|3P0Hf&|w8a3fqF}iRmRmR! hfFLO`IUD2%unJi52Z|_oegezDavVqoniHR|0s!IfN%{Z) literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%todo.txt b/vim-plugins/tmp/undo/%home%viktor%todo.txt new file mode 100644 index 0000000000000000000000000000000000000000..14494ef77031da39bdf1e89ca98dbe33eba5949f GIT binary patch literal 1414 zcmWH`%$*;a=aT=FfvL3P&Z?i@cUJb59i4E{ji+Prw%%~>iIX1w_?hhfk1dmhfq{V; zh(Q2GGa|7;Vld1Q86RxH0+MB7h`#`&K!6ECfk}`Q2!p|YAb=YQ6C5fu+!uq{!I5zp zR^aGhWcVt9=1{N)OdG+`1Y*PD7NiUmWpF+?nudgTK~6^lL&Dv_T%!e!CI(0}q30L| zXfz>7cy j^osHeQVWXmvr>~w^c9lxb5qlb@^kGKG&D^cpRWP{NHIaX literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%venv.sh b/vim-plugins/tmp/undo/%home%viktor%venv.sh new file mode 100755 index 0000000000000000000000000000000000000000..974c82b408e44cf1d7528f1723e469f0203f665a GIT binary patch literal 551 zcmWH`%$*;a=aT=Ffypf5+7eM0;lJ~J)iVCwWt1{`vHv`)=$zbNu6HN(AJwX0U|`?{ zVi4eiPz;Pf8XbeBBE8-Quz+Nk7~(HL6(dt1DVSjl|A7E(46=%WVzUA*W+B0HQq+=Q mEOnK_ql1y*s|3(!P|zdCAwrZNYB4B+*b<9VfXKA*`6>XI%_F}6 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%venvs%install-reqs.sh b/vim-plugins/tmp/undo/%home%viktor%venvs%install-reqs.sh new file mode 100755 index 0000000000000000000000000000000000000000..a9be5db3a6336afea0873017e21e9bc0e24e13ce GIT binary patch literal 5569 zcmeI0&ubGw6vwAYY}3?Q&{nOd5m#CTyB@3_#Dm3~6;B2#1xb?)S={c1>^7)~Q2zk` z0!6$Edh*miK@jxf-GlfS1P==OzHjGkcEGEc0Ux}5n|U+I%zX0R{Ah-|FYm-RlCP=~ zRlUu+7awe1Z~l1ks(SJE+k^LC?mm6~=G5rYyU(A#E2WN*E^3l~*wfa;|DGqQSr&taK+%C{I8`vcbH|7ro0fMTa0LGj7WUkn8B65W?WB@ z;fv?aoc4FZ*xzZTJ!ubXD1+*uQaPH;kRqZL2cq>8D0M`ZT<9lJ-e$^`oZd8bx=xBL zf{C9;!VTKJLi^2hhS@v&Xd~k#KZd;0}rsu3%me!Kk`n{$R=J0-ZO?b zlf%Oz1sqt=ZFu4VR$1x*3ovVZJejdv^X0Mr60vMC2-_OKsVQE8}35~X@9Xb5$msv`l}`^i-6 z_DaYsN`c3p=^;S}>pmh^HY*<((X^d2%ZLzWA~=cT;9itDy(MuaH(J+Vn0g@K2r2GY zqy&4AhPh37R9vPkq{-f(9q1?i8Wj%OR0(plo6yxL-IMC`YuSVBs_rCIdKP;eoaC>0 ot9+{Wy85wBgN|NF{cTkA{grc6(LVQ6L9LU-0og*<_rJaV4eT7umH+?% literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%home%viktor%viktor b/vim-plugins/tmp/undo/%home%viktor%viktor new file mode 100644 index 0000000000000000000000000000000000000000..d628ea4b1946e2ce5d2e7cf799dc002853f2716d GIT binary patch literal 1233 zcmWH`%$*;a=aT=Ffyv?6)tJoxpB?A_ntLwqzk!{bs`Kl_`dfu86P-L|n^y-gFfd2~ zvAThRmV%bPA&6Aa&&bbB)i2A;F3B&_Pb@9T*GZ`ufsO>{qlVwM$VHc(twiciFuXkntD*@aR80vLNXTSY!;vx8>+Zz H3 literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%mnt%home%viktor%auto-commit.sh b/vim-plugins/tmp/undo/%mnt%home%viktor%auto-commit.sh new file mode 100755 index 0000000000000000000000000000000000000000..f6661ea2b03fee6dfccffd5d3ba313f011d2b01d GIT binary patch literal 691 zcmWH`%$*;a=aT=Ffyqbx^|M$3t@Am1b=IzaSF|G5?%#xsxm#l=NY9G1Q(>oxtdDgGR?!37}({fS3h{L1_f!0h*)})5hnk0PTxl(EtDd literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%tmp%crontab.LH6Lsq%crontab b/vim-plugins/tmp/undo/%tmp%crontab.LH6Lsq%crontab new file mode 100644 index 0000000000000000000000000000000000000000..f9d6bafdd4788544bf91414c317d22ff371d25b3 GIT binary patch literal 603 zcmWH`%$*;a=aT=Ffk`=h`TB_>g-I0#75U-Gb6>vWUb3uXt+R4vM9n!?mV12+3=9%L ztf8fEsGtRfb^3{=CHeZL1u2Oosqtl*x$%j4De+as8G6MTQ1#3}nh}bD6r2qbV~9-j zO=W?|#$NylpaGB+$Wo9Y4F7=utR2J|Y5?rr!R}~abfiF|<0~lG#gQBg@&M6sZ`$~L F6#!|gIF-y!ki!BM0MRha5E--HodqPz$Pj-4s(=YfgD8-c7>xfP2*4sRfuTf$d@|?(FghH- z(ZRs*RRZW*c+i7fZrTWrB9KRzL3}6xMHf82N23T9EVQD5QRIjmMev{pSqP3a6cK2o zfg%Z(0YM5u5eQc|8fl;)p(OxDniF!Qf$|kB_`wAOG@6j}705lHD1#S=qtOHk5?TUa zG`T@*BXCX<0a^wt0zuKlq^tlI7Xq?Dav*>#&IjZRfJIToxq)K5Sj0JiVq8e#j>-y& zc_|7hiIocZX$s}3so4q|Df#7^3i(9}rNyZV>RRdwnRyB&8L2={T4riaO0j}Q8ctiNpDDv6$UUwf8op{EUNXM<^XyYeLu{ZH2z7#Jjg zSld8BOF>KD5JW2I=jN5@XXNLm>X&6^m*f}eCzh7v>n7*t=4O`Y6=y)T@BnE>AZ7t# z5CG9I%n+IAsm%hCWnzfG0Fng)CI|&4K~mx{{(m3<8wC>>N;JqPgB}2*LkJul3=CgE z(G3rJkjpVeOdG+G2J#v+NCgytA`qk-6!Q$Dkp>C{S^{9CiQ$SgP}Go;XQ43)ia}U@ z1vwoQyPy~aC*si<1qBH$0We0D@x`bHaw%K~E_U@x3sMqGQsc`qbK?{9QsS$MGk`@f wG&+$pC&=BPs0BqQCx|l|ouE*lB>+aJ7POMXC__OxN()+{LaSB$5&C=;0LznZWdHyG literal 0 HcmV?d00001 diff --git a/vim-plugins/tmp/undo/%tmp%zsh5bn4yf b/vim-plugins/tmp/undo/%tmp%zsh5bn4yf new file mode 100644 index 0000000000000000000000000000000000000000..a35e743ef26b269ddfea2b09ab3365ec170463b8 GIT binary patch literal 1019 zcmWH`%$*;a=aT=FfoVtZ-Jbm&zB{;`-53|1opzk#%cJ93V!QW$P@C}3>Vfzk1_lO3 zApVhDT9l)po>5X#P;8~IpPZkPs+X0Ynw6NYmzz~ z-~6h~oSZ~`Q#}I(jR-?SYXzUoywVDV3JbG%GZRe($AW^K)bP|K@5~Z?Q)6>IV>1N} zZ;udPA0369%?O zM;(^R5t`>f5ygh&CQu}TA`V$&=LS!j_ly5W5phIQqbZuCqFqc2f10Q2P-s@^Bu^gpvVM8AP