From a18096a81a6dd26b8ae0232e55c5cee1db83d0a8 Mon Sep 17 00:00:00 2001 From: Dominus Vilicus Date: Sun, 20 Sep 2020 21:52:40 +0930 Subject: [PATCH] Revert "Update Changes" --- .eslintignore | 1 + .eslintrc.js | 78 +- .github/ISSUE_TEMPLATE.md | 5 +- .github/ISSUE_TEMPLATE/feature_request.md | 5 - .github/PULL_REQUEST_TEMPLATE.md | 11 +- .github/workflows/ci.yml | 9 +- CHANGELOG.md | 65 +- CONTRIBUTING.md | 5 +- README.md | 23 +- package-lock.json | 1293 ++++------------- package.json | 17 +- rollup.config.js | 20 +- site/README.md | 44 +- ...-11-26-frameworks-without-the-framework.md | 2 +- ...per-towards-the-ideal-web-app-framework.md | 8 +- .../2019-04-16-svelte-for-new-developers.md | 4 +- .../blog/2020-07-17-svelte-and-typescript.md | 141 -- site/content/docs/02-template-syntax.md | 31 +- site/content/docs/03-run-time.md | 8 +- .../05-bindings/05-file-inputs/App.svelte | 37 - .../05-bindings/05-file-inputs/meta.json | 3 - .../App.svelte | 0 .../meta.json | 0 .../App.svelte | 0 .../meta.json | 0 .../App.svelte | 9 +- .../meta.json | 0 .../App.svelte | 4 +- .../meta.json | 0 .../App.svelte | 0 .../meta.json | 0 .../{11-bind-this => 10-bind-this}/App.svelte | 2 +- .../{11-bind-this => 10-bind-this}/meta.json | 0 .../App.svelte | 0 .../Keypad.svelte | 0 .../meta.json | 0 site/content/faq/100-im-new-to-svelte.md | 2 +- .../faq/200-are-there-any-video-courses.md | 6 +- site/content/faq/300-is-svelte-dev-down.md | 5 + .../400-how-can-i-get-syntax-highlighting.md | 4 +- .../450-how-do-i-document-my-components.md | 32 - .../faq/500-what-about-typescript-support.md | 19 +- .../01-svelte-self/text.md | 4 +- site/package-lock.json | 602 ++++---- site/package.json | 30 +- site/rollup.config.js | 25 +- site/scripts/copy-workers.js | 4 - .../components/Repl/InputOutputToggle.svelte | 2 +- site/src/components/Repl/ReplWidget.svelte | 3 - site/src/routes/_layout.svelte | 1 - site/src/routes/blog/[slug].svelte | 9 - site/src/routes/blog/rss.xml.js | 16 +- site/src/routes/docs/_sections.js | 2 +- .../[id]/_components/AppControls/index.svelte | 2 - site/src/routes/repl/[id]/index.svelte | 5 +- site/src/routes/repl/embed.svelte | 2 - .../tutorial/[slug]/_TableOfContents.svelte | 4 +- site/src/utils/highlight.js | 1 - .../examples/thumbnails/file-inputs.jpg | Bin 2751 -> 0 bytes site/static/media/svelte-ts.png | Bin 189664 -> 0 bytes src/compiler/compile/Component.ts | 97 +- src/compiler/compile/css/Stylesheet.ts | 2 +- src/compiler/compile/index.ts | 4 +- src/compiler/compile/nodes/Binding.ts | 9 +- src/compiler/compile/nodes/EachBlock.ts | 1 - src/compiler/compile/nodes/Element.ts | 48 +- src/compiler/compile/nodes/Text.ts | 2 +- src/compiler/compile/nodes/shared/Context.ts | 8 +- .../compile/nodes/shared/Expression.ts | 52 +- src/compiler/compile/render_dom/Block.ts | 50 +- src/compiler/compile/render_dom/Renderer.ts | 31 +- src/compiler/compile/render_dom/index.ts | 38 +- .../compile/render_dom/wrappers/AwaitBlock.ts | 14 +- .../compile/render_dom/wrappers/EachBlock.ts | 31 +- .../render_dom/wrappers/Element/Attribute.ts | 234 ++- .../render_dom/wrappers/Element/Binding.ts | 149 +- .../wrappers/Element/SpreadAttribute.ts | 3 - .../Element/handle_select_value_binding.ts | 16 - .../render_dom/wrappers/Element/index.ts | 305 ++-- .../compile/render_dom/wrappers/IfBlock.ts | 2 +- .../wrappers/InlineComponent/index.ts | 25 +- .../render_dom/wrappers/RawMustacheTag.ts | 8 +- .../compile/render_dom/wrappers/Slot.ts | 28 +- .../compile/render_dom/wrappers/Window.ts | 4 +- .../render_dom/wrappers/shared/bind_this.ts | 84 +- .../wrappers/shared/get_slot_definition.ts | 4 +- .../shared/mark_each_block_bindings.ts | 26 - .../compile/render_ssr/handlers/Slot.ts | 4 +- src/compiler/compile/render_ssr/index.ts | 45 +- src/compiler/compile/utils/compare_node.ts | 19 - .../compile/utils/flatten_reference.ts | 21 +- src/compiler/compile/utils/hash.ts | 1 - src/compiler/compile/utils/replace_object.ts | 14 - .../compile/utils/reserved_keywords.ts | 2 +- .../utils/string_to_member_expression.ts | 17 - src/compiler/compile/utils/stringify.ts | 2 +- src/compiler/interfaces.ts | 4 +- src/compiler/parse/index.ts | 9 +- src/compiler/parse/read/script.ts | 2 +- src/compiler/parse/read/style.ts | 11 +- src/compiler/parse/state/mustache.ts | 16 +- src/compiler/parse/state/tag.ts | 35 +- src/compiler/parse/state/text.ts | 2 +- src/compiler/parse/utils/entities.ts | 2 +- src/compiler/parse/utils/html.ts | 6 +- src/compiler/preprocess/index.ts | 10 +- src/compiler/utils/fuzzymatch.ts | 4 +- src/compiler/utils/names.ts | 2 +- src/compiler/utils/namespaces.ts | 2 +- src/runtime/animate/index.ts | 6 +- src/runtime/internal/Component.ts | 27 +- src/runtime/internal/await_block.ts | 3 - src/runtime/internal/dev.ts | 2 +- src/runtime/internal/dom.ts | 54 +- src/runtime/internal/keyed_each.ts | 2 +- src/runtime/internal/lifecycle.ts | 10 +- src/runtime/internal/utils.ts | 12 - src/runtime/motion/tweened.ts | 10 +- src/runtime/store/index.ts | 4 +- src/runtime/transition/index.ts | 56 +- test/css/index.js | 3 +- test/css/samples/empty-class/_config.js | 2 +- .../global-with-unused-descendant/_config.js | 2 +- .../expected.html | 4 +- .../input.svelte | 6 +- .../_config.js | 2 +- .../unused-selector-leading/_config.js | 4 +- .../unused-selector-string-concat/_config.js | 44 +- .../unused-selector-ternary-bailed/_config.js | 2 +- .../unused-selector-ternary-concat/_config.js | 12 +- .../unused-selector-ternary-nested/_config.js | 12 +- .../unused-selector-ternary/_config.js | 2 +- test/css/samples/unused-selector/_config.js | 2 +- test/custom-elements/index.js | 15 +- test/helpers.js | 1 - .../samples/dynamic-text-nil/_config.js | 4 +- test/hydration/samples/element-ref/_config.js | 2 +- test/js/index.js | 6 +- .../action-custom-event-handler/expected.js | 13 +- test/js/samples/action/expected.js | 11 +- test/js/samples/bind-online/expected.js | 18 +- test/js/samples/bind-open/expected.js | 17 +- test/js/samples/bind-width-height/expected.js | 2 +- .../bindings-readonly-order/expected.js | 19 +- .../capture-inject-dev-only/expected.js | 11 +- .../samples/capture-inject-state/expected.js | 7 +- .../expected.js | 2 +- .../component-static-array/expected.js | 3 +- .../component-static-immutable/expected.js | 3 +- .../component-static-immutable2/expected.js | 3 +- .../samples/component-static-var/expected.js | 17 +- test/js/samples/component-static/expected.js | 3 +- .../expected.js | 11 +- .../samples/computed-collapsed-if/expected.js | 2 +- test/js/samples/data-attribute/expected.js | 2 +- test/js/samples/debug-empty/expected.js | 7 +- .../debug-foo-bar-baz-things/expected.js | 7 +- test/js/samples/debug-foo/expected.js | 7 +- test/js/samples/debug-hoisted/expected.js | 4 +- .../samples/debug-no-dependencies/expected.js | 4 +- test/js/samples/debug-ssr-foo/expected.js | 2 +- .../samples/deconflict-builtins/expected.js | 2 +- .../js/samples/deconflict-globals/expected.js | 2 +- .../expected.js | 7 +- .../samples/dont-invalidate-this/expected.js | 11 +- test/js/samples/dynamic-import/expected.js | 3 +- .../each-block-array-literal/expected.js | 2 +- .../each-block-changed-check/expected.js | 6 +- .../each-block-keyed-animated/expected.js | 2 +- test/js/samples/each-block-keyed/expected.js | 2 +- .../samples/event-handler-dynamic/expected.js | 23 +- .../event-handler-no-passive/expected.js | 11 +- test/js/samples/event-modifiers/expected.js | 21 +- .../js/samples/if-block-no-update/expected.js | 2 +- test/js/samples/if-block-simple/expected.js | 2 +- test/js/samples/initial-context/expected.js | 59 - test/js/samples/initial-context/input.svelte | 7 - .../expected.js | 2 +- .../inline-style-optimized-url/expected.js | 2 +- .../inline-style-optimized/expected.js | 2 +- .../inline-style-unoptimized/expected.js | 2 +- test/js/samples/input-files/expected.js | 13 +- .../input-no-initial-value/expected.js | 17 +- test/js/samples/input-range/expected.js | 19 +- test/js/samples/input-value/expected.js | 11 +- .../input-without-blowback-guard/expected.js | 13 +- .../expected.js | 11 +- .../expected.js | 11 +- .../expected.js | 11 +- .../expected.js | 11 +- test/js/samples/loop-protect/_config.js | 4 +- test/js/samples/loop-protect/expected.js | 8 +- test/js/samples/media-bindings/expected.js | 38 +- .../non-imported-component/expected.js | 6 +- test/js/samples/optional-chaining/expected.js | 189 --- .../js/samples/optional-chaining/input.svelte | 31 - .../expected.js | 2 +- .../expected.js | 2 +- .../samples/select-dynamic-value/expected.js | 28 +- .../samples/src-attribute-check/expected.js | 2 +- .../samples/ssr-no-oncreate-etc/expected.js | 2 +- .../samples/ssr-preserve-comments/expected.js | 2 +- test/js/samples/title/expected.js | 2 +- test/js/samples/transition-local/expected.js | 2 +- .../transition-repeated-outro/expected.js | 2 +- .../use-elements-as-anchors/expected.js | 2 +- test/js/samples/video-bindings/expected.js | 19 +- .../samples/window-binding-online/expected.js | 18 +- .../samples/window-binding-scroll/expected.js | 23 +- test/parser/index.js | 10 +- .../samples/action-with-call/output.json | 3 +- test/parser/samples/animation/output.json | 6 +- test/parser/samples/await-catch/output.json | 9 +- .../samples/await-then-catch/output.json | 15 +- .../parser/samples/dynamic-import/output.json | 18 +- .../samples/each-block-else/output.json | 6 +- .../samples/each-block-indexed/output.json | 6 +- .../samples/each-block-keyed/output.json | 9 +- test/parser/samples/each-block/output.json | 6 +- .../error.json | 10 - .../input.svelte | 3 - .../error.json | 10 - .../input.svelte | 5 - .../error.json | 10 - .../input.svelte | 3 - .../no-error-if-before-closing/output.json | 12 +- .../samples/unusual-identifier/output.json | 6 +- test/preprocess/samples/comments/_config.js | 6 +- .../samples/script-self-closing/_config.js | 12 - .../samples/script-self-closing/input.svelte | 1 - .../samples/script-self-closing/output.svelte | 1 - .../samples/style-self-closing/_config.js | 12 - .../samples/style-self-closing/input.svelte | 3 - .../samples/style-self-closing/output.svelte | 3 - test/runtime/index.js | 4 +- .../samples/$$rest-without-props/_config.js | 2 +- test/runtime/samples/$$rest/_config.js | 2 +- test/runtime/samples/$$slot/A.svelte | 31 - test/runtime/samples/$$slot/_config.js | 18 - test/runtime/samples/$$slot/main.svelte | 23 - .../_config.js | 2 +- .../action-ternary-template/_config.js | 4 +- test/runtime/samples/action-this/_config.js | 2 +- .../apply-directives-in-order-2/_config.js | 6 +- .../apply-directives-in-order/_config.js | 2 +- .../attribute-boolean-false/_config.js | 2 +- .../samples/attribute-boolean-true/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../samples/attribute-false/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../runtime/samples/attribute-null/_config.js | 2 +- .../attribute-prefer-expression/_config.js | 4 +- .../samples/attribute-undefined/_config.js | 2 +- .../await-with-update-2/Component.svelte | 7 - .../samples/await-with-update-2/_config.js | 64 - .../samples/await-with-update-2/main.svelte | 16 - .../await-with-update/Component.svelte | 5 - .../samples/await-with-update/_config.js | 60 - .../samples/await-with-update/main.svelte | 16 - .../samples/await-without-catch/_config.js | 44 - .../samples/await-without-catch/main.svelte | 9 - .../_config.js | 2 +- .../binding-contenteditable-html/_config.js | 4 +- .../_config.js | 2 +- .../binding-contenteditable-text/_config.js | 4 +- .../_config.js | 4 +- .../_config.js | 10 +- .../_config.js | 81 -- .../main.svelte | 19 - .../binding-input-group-each-1/_config.js | 275 ---- .../binding-input-group-each-1/main.svelte | 15 - .../binding-input-group-each-2/_config.js | 59 - .../binding-input-group-each-2/main.svelte | 17 - .../binding-input-group-each-3/_config.js | 275 ---- .../binding-input-group-each-3/main.svelte | 15 - .../binding-input-group-each-4/_config.js | 153 -- .../binding-input-group-each-4/main.svelte | 33 - .../binding-input-group-each-5/_config.js | 160 -- .../binding-input-group-each-5/main.svelte | 24 - .../binding-input-group-each-6/_config.js | 87 -- .../binding-input-group-each-6/main.svelte | 22 - .../samples/binding-input-number-2/_config.js | 2 +- .../samples/binding-input-number/_config.js | 4 +- .../_config.js | 2 +- .../binding-input-range-change/_config.js | 4 +- .../samples/binding-input-range/_config.js | 4 +- .../_config.js | 4 +- .../_config.js | 2 +- .../binding-input-text-contextual/_config.js | 4 +- .../_config.js | 6 +- .../_config.js | 6 +- .../_config.js | 6 +- .../_config.js | 8 +- .../_config.js | 6 +- .../binding-input-text-deep/_config.js | 6 +- .../binding-input-text-undefined/_config.js | 2 +- .../samples/binding-input-text/_config.js | 4 +- .../binding-select-initial-value/_config.js | 4 +- .../samples/binding-select-late-2/_config.js | 34 - .../samples/binding-select-late-2/main.svelte | 12 - .../samples/binding-select-late-3/_config.js | 34 - .../samples/binding-select-late-3/main.svelte | 12 - .../binding-select-optgroup/_config.js | 2 +- .../runtime/samples/binding-select/_config.js | 4 +- .../samples/binding-store-deep/_config.js | 2 +- test/runtime/samples/binding-store/_config.js | 2 +- .../samples/binding-textarea/_config.js | 4 +- .../_config.js | 53 - .../main.svelte | 17 - .../samples/bitmask-overflow-2/_config.js | 2 +- .../samples/bitmask-overflow-3/_config.js | 2 +- .../bitmask-overflow-slot-2/_config.js | 2 +- .../class-with-spread-and-bind/_config.js | 4 +- .../samples/component-binding-deep/_config.js | 2 +- .../component-binding-store/Input.svelte | 5 - .../component-binding-store/_config.js | 61 - .../component-binding-store/main.svelte | 18 - .../_config.js | 15 - .../main.svelte | 6 - .../component-event-not-stale/_config.js | 4 +- .../component-events-console/_config.js | 2 +- .../component-namespace/Tooltip.svelte | 1 - .../samples/component-namespace/Widget.svelte | 5 - .../samples/component-namespace/_config.js | 3 - .../samples/component-namespace/main.svelte | 8 - .../component-shorthand-import/_config.js | 2 +- .../component-slot-fallback-3/_config.js | 2 +- .../component-slot-fallback-4/_config.js | 2 +- .../component-slot-let-in-slot/_config.js | 2 +- .../component-slot-nested-if/_config.js | 2 +- .../samples/deconflict-builtins-2/_config.js | 2 +- .../dev-warning-missing-data-each/_config.js | 12 +- .../runtime/samples/document-event/_config.js | 2 +- .../each-block-array-literal/_config.js | 2 +- .../_config.js | 2 +- .../each-block-destructured-array/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 4 +- .../_config.js | 2 +- .../each-block-destructured-object/_config.js | 2 +- .../each-block-else-mount-or-intro/_config.js | 2 +- .../samples/each-block-in-if-block/_config.js | 2 +- .../Component.svelte | 5 - .../_config.js | 21 - .../main.svelte | 17 - .../samples/each-block-keyed-empty/_config.js | 2 +- .../each-block-keyed-non-prop/_config.js | 2 +- .../_config.js | 2 +- .../samples/each-block-keyed-shift/_config.js | 2 +- .../each-block-keyed-siblings/_config.js | 4 +- .../each-block-keyed-static/_config.js | 2 +- .../each-block-scope-shadow-bind-2/_config.js | 23 - .../main.svelte | 10 - .../each-block-scope-shadow-bind-3/_config.js | 105 -- .../main.svelte | 14 - .../each-block-scope-shadow-bind-4/_config.js | 64 - .../main.svelte | 14 - .../each-block-scope-shadow-bind/_config.js | 23 - .../each-block-scope-shadow-bind/main.svelte | 10 - .../each-block-scope-shadow-self/_config.js | 2 +- .../each-blocks-assignment-2/_config.js | 20 - .../each-blocks-assignment-2/main.svelte | 12 - .../samples/each-blocks-assignment/_config.js | 97 -- .../each-blocks-assignment/main.svelte | 13 - test/runtime/samples/empty-dom/_config.js | 2 +- .../samples/empty-style-block/_config.js | 2 +- .../escape-template-literals/_config.js | 2 +- .../samples/event-handler-async/_config.js | 2 +- .../event-handler-dynamic-2/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../event-handler-dynamic-hash/_config.js | 2 +- .../event-handler-dynamic-invalid/_config.js | 2 +- .../_config.js | 2 +- .../samples/event-handler-dynamic/_config.js | 2 +- .../event-handler-each-this/_config.js | 2 +- .../event-handler-modifier-self/_config.js | 2 +- .../_config.js | 12 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 4 +- .../samples/if-block-else-in-each/_config.js | 4 +- .../if-block-else-partial-outro/_config.js | 4 +- .../_config.js | 2 +- .../_config.js | 2 +- .../samples/initial-state-assign/_config.js | 2 +- .../innerhtml-with-comments/_config.js | 8 - .../innerhtml-with-comments/main.svelte | 5 - .../_config.js | 6 +- .../loop-protect-generator-opt-out/_config.js | 4 +- .../loop-protect-inner-function/_config.js | 2 +- test/runtime/samples/loop-protect/_config.js | 2 +- .../nested-transition-detach-each/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../samples/noscript-removal/_config.js | 2 +- .../paren-wrapped-expressions/_config.js | 2 +- test/runtime/samples/prop-exports/_config.js | 2 +- .../Comp.svelte | 6 - .../_config.js | 30 - .../main.svelte | 8 - .../samples/props-reactive-slot/Comp.svelte | 1 - .../samples/props-reactive-slot/_config.js | 21 - .../samples/props-reactive-slot/main.svelte | 13 - .../raw-mustache-as-root/RawMustache.svelte | 5 - .../samples/raw-mustache-as-root/_config.js | 33 - .../samples/raw-mustache-as-root/main.svelte | 17 - .../raw-mustache-inside-head/_config.js | 16 - .../raw-mustache-inside-head/main.svelte | 16 - .../raw-mustache-inside-slot/Component.svelte | 2 - .../raw-mustache-inside-slot/_config.js | 33 - .../raw-mustache-inside-slot/main.svelte | 17 - .../samples/raw-mustaches-td-tr/_config.js | 18 - .../samples/raw-mustaches-td-tr/main.svelte | 12 - .../_config.js | 27 - .../main.svelte | 10 - .../reactive-import-statement/_config.js | 2 +- .../reactive-value-assign-property/_config.js | 5 - .../main.svelte | 6 - .../self-reference-component/_config.js | 2 +- .../samples/set-undefined-attr/_config.js | 2 +- .../samples/sigil-component-prop/_config.js | 2 +- .../slot-if-block-update-no-anchor/_config.js | 2 +- .../samples/spread-component-2/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 8 +- .../spread-component-dynamic/_config.js | 8 +- .../_config.js | 2 +- .../samples/spread-each-component/_config.js | 2 +- .../samples/spread-each-element/_config.js | 2 +- .../samples/spread-element-boolean/_config.js | 2 +- .../_config.js | 39 - .../main.svelte | 12 - .../_config.js | 12 - .../main.svelte | 5 - .../InputOne.svelte | 18 - .../InputTwo.svelte | 19 - .../spread-element-input-value/_config.js | 62 - .../spread-element-input-value/main.svelte | 9 - .../spread-element-input-value/utils.js | 6 - .../_config.js | 2 +- .../spread-element-multiple/_config.js | 8 +- .../_config.js | 2 +- .../store-each-binding-deep/_config.js | 14 - .../store-each-binding-deep/main.svelte | 11 - .../samples/store-imports-hoisted/_config.js | 7 - .../samples/store-imports-hoisted/foo.js | 3 - .../samples/store-imports-hoisted/main.svelte | 7 - .../samples/store-resubscribe-b/_config.js | 2 +- .../store-resubscribe-export/_config.js | 8 +- .../store-resubscribe-observable/_config.js | 2 +- .../samples/store-shadow-scope/_config.js | 3 - .../samples/store-shadow-scope/main.svelte | 9 - .../_config.js | 3 - .../main.svelte | 9 - .../svg-tspan-preserve-space/_config.js | 2 +- .../this-in-function-expressions/_config.js | 10 - .../this-in-function-expressions/main.svelte | 2 - .../_config.js | 2 +- .../transition-css-duration/_config.js | 2 +- .../samples/transition-css-iframe/_config.js | 2 +- .../transition-css-in-out-in/_config.js | 2 +- .../_config.js | 2 +- .../transition-js-aborted-outro/_config.js | 4 +- .../transition-js-deferred-b/_config.js | 2 +- .../samples/transition-js-deferred/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 54 - .../main.svelte | 27 - .../_config.js | 22 - .../main.svelte | 18 - .../_config.js | 20 - .../main.svelte | 18 - .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../transition-js-local-and-global/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../transition-js-local-nested-if/_config.js | 2 +- .../samples/transition-js-local/_config.js | 2 +- .../_config.js | 2 +- .../_config.js | 2 +- .../transition-js-nested-each/_config.js | 2 +- .../transition-js-nested-if/_config.js | 2 +- .../_config.js | 2 +- .../transition-js-parameterised/_config.js | 2 +- .../unchanged-expression-escape/_config.js | 2 +- .../unchanged-expression-xss/_config.js | 2 +- .../samples/whitespace-list/_config.js | 2 +- .../window-bind-scroll-update/_config.js | 2 +- .../window-binding-scroll-store/_config.js | 10 +- .../samples/window-event-custom/_config.js | 2 +- test/server-side-rendering/index.js | 4 +- test/validator/index.js | 2 +- .../errors.json | 17 - .../input.svelte | 6 - .../input.svelte | 6 - .../warnings.json | 32 - .../a11y-media-has-caption/input.svelte | 4 - .../a11y-media-has-caption/warnings.json | 32 - test/vars/samples/assumed-global/_config.js | 2 +- .../vars/samples/duplicate-globals/_config.js | 2 +- .../duplicate-non-hoistable/_config.js | 2 +- test/vars/samples/duplicate-vars/_config.js | 2 +- .../vars/samples/implicit-reactive/_config.js | 2 +- .../samples/referenced-from-script/_config.js | 32 +- .../samples/template-references/_config.js | 10 +- test/vars/samples/undeclared/_config.js | 2 +- 517 files changed, 2001 insertions(+), 7064 deletions(-) delete mode 100644 site/content/blog/2020-07-17-svelte-and-typescript.md delete mode 100644 site/content/examples/05-bindings/05-file-inputs/App.svelte delete mode 100644 site/content/examples/05-bindings/05-file-inputs/meta.json rename site/content/examples/05-bindings/{06-select-bindings => 05-select-bindings}/App.svelte (100%) rename site/content/examples/05-bindings/{06-select-bindings => 05-select-bindings}/meta.json (100%) rename site/content/examples/05-bindings/{07-multiple-select-bindings => 06-multiple-select-bindings}/App.svelte (100%) rename site/content/examples/05-bindings/{07-multiple-select-bindings => 06-multiple-select-bindings}/meta.json (100%) rename site/content/examples/05-bindings/{08-each-block-bindings => 07-each-block-bindings}/App.svelte (89%) rename site/content/examples/05-bindings/{08-each-block-bindings => 07-each-block-bindings}/meta.json (100%) rename site/content/examples/05-bindings/{09-media-elements => 08-media-elements}/App.svelte (95%) rename site/content/examples/05-bindings/{09-media-elements => 08-media-elements}/meta.json (100%) rename site/content/examples/05-bindings/{10-dimensions => 09-dimensions}/App.svelte (100%) rename site/content/examples/05-bindings/{10-dimensions => 09-dimensions}/meta.json (100%) rename site/content/examples/05-bindings/{11-bind-this => 10-bind-this}/App.svelte (99%) rename site/content/examples/05-bindings/{11-bind-this => 10-bind-this}/meta.json (100%) rename site/content/examples/05-bindings/{12-component-bindings => 11-component-bindings}/App.svelte (100%) rename site/content/examples/05-bindings/{12-component-bindings => 11-component-bindings}/Keypad.svelte (100%) rename site/content/examples/05-bindings/{12-component-bindings => 11-component-bindings}/meta.json (100%) create mode 100644 site/content/faq/300-is-svelte-dev-down.md delete mode 100644 site/content/faq/450-how-do-i-document-my-components.md delete mode 100644 site/scripts/copy-workers.js delete mode 100644 site/static/examples/thumbnails/file-inputs.jpg delete mode 100644 site/static/media/svelte-ts.png delete mode 100644 src/compiler/compile/render_dom/wrappers/Element/SpreadAttribute.ts delete mode 100644 src/compiler/compile/render_dom/wrappers/Element/handle_select_value_binding.ts delete mode 100644 src/compiler/compile/render_dom/wrappers/shared/mark_each_block_bindings.ts delete mode 100644 src/compiler/compile/utils/compare_node.ts delete mode 100644 src/compiler/compile/utils/replace_object.ts delete mode 100644 src/compiler/compile/utils/string_to_member_expression.ts delete mode 100644 test/js/samples/initial-context/expected.js delete mode 100644 test/js/samples/initial-context/input.svelte delete mode 100644 test/js/samples/optional-chaining/expected.js delete mode 100644 test/js/samples/optional-chaining/input.svelte delete mode 100644 test/parser/samples/error-css-global-without-selector/error.json delete mode 100644 test/parser/samples/error-css-global-without-selector/input.svelte delete mode 100644 test/parser/samples/error-unmatched-closing-tag-autoclose-2/error.json delete mode 100644 test/parser/samples/error-unmatched-closing-tag-autoclose-2/input.svelte delete mode 100644 test/parser/samples/error-unmatched-closing-tag-autoclose/error.json delete mode 100644 test/parser/samples/error-unmatched-closing-tag-autoclose/input.svelte delete mode 100644 test/preprocess/samples/script-self-closing/_config.js delete mode 100644 test/preprocess/samples/script-self-closing/input.svelte delete mode 100644 test/preprocess/samples/script-self-closing/output.svelte delete mode 100644 test/preprocess/samples/style-self-closing/_config.js delete mode 100644 test/preprocess/samples/style-self-closing/input.svelte delete mode 100644 test/preprocess/samples/style-self-closing/output.svelte delete mode 100644 test/runtime/samples/$$slot/A.svelte delete mode 100644 test/runtime/samples/$$slot/_config.js delete mode 100644 test/runtime/samples/$$slot/main.svelte delete mode 100644 test/runtime/samples/await-with-update-2/Component.svelte delete mode 100644 test/runtime/samples/await-with-update-2/_config.js delete mode 100644 test/runtime/samples/await-with-update-2/main.svelte delete mode 100644 test/runtime/samples/await-with-update/Component.svelte delete mode 100644 test/runtime/samples/await-with-update/_config.js delete mode 100644 test/runtime/samples/await-with-update/main.svelte delete mode 100644 test/runtime/samples/await-without-catch/_config.js delete mode 100644 test/runtime/samples/await-without-catch/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-duplicate-value/_config.js delete mode 100644 test/runtime/samples/binding-input-group-duplicate-value/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-each-1/_config.js delete mode 100644 test/runtime/samples/binding-input-group-each-1/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-each-2/_config.js delete mode 100644 test/runtime/samples/binding-input-group-each-2/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-each-3/_config.js delete mode 100644 test/runtime/samples/binding-input-group-each-3/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-each-4/_config.js delete mode 100644 test/runtime/samples/binding-input-group-each-4/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-each-5/_config.js delete mode 100644 test/runtime/samples/binding-input-group-each-5/main.svelte delete mode 100644 test/runtime/samples/binding-input-group-each-6/_config.js delete mode 100644 test/runtime/samples/binding-input-group-each-6/main.svelte delete mode 100644 test/runtime/samples/binding-select-late-2/_config.js delete mode 100644 test/runtime/samples/binding-select-late-2/main.svelte delete mode 100644 test/runtime/samples/binding-select-late-3/_config.js delete mode 100644 test/runtime/samples/binding-select-late-3/main.svelte delete mode 100644 test/runtime/samples/binding-this-each-block-property-2/_config.js delete mode 100644 test/runtime/samples/binding-this-each-block-property-2/main.svelte delete mode 100644 test/runtime/samples/component-binding-store/Input.svelte delete mode 100644 test/runtime/samples/component-binding-store/_config.js delete mode 100644 test/runtime/samples/component-binding-store/main.svelte delete mode 100644 test/runtime/samples/component-event-handler-contenteditable/_config.js delete mode 100644 test/runtime/samples/component-event-handler-contenteditable/main.svelte delete mode 100644 test/runtime/samples/component-namespace/Tooltip.svelte delete mode 100644 test/runtime/samples/component-namespace/Widget.svelte delete mode 100644 test/runtime/samples/component-namespace/_config.js delete mode 100644 test/runtime/samples/component-namespace/main.svelte delete mode 100644 test/runtime/samples/each-block-keyed-component-action/Component.svelte delete mode 100644 test/runtime/samples/each-block-keyed-component-action/_config.js delete mode 100644 test/runtime/samples/each-block-keyed-component-action/main.svelte delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind-2/_config.js delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind-2/main.svelte delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind-3/_config.js delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind-3/main.svelte delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind-4/_config.js delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind-4/main.svelte delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind/_config.js delete mode 100644 test/runtime/samples/each-block-scope-shadow-bind/main.svelte delete mode 100644 test/runtime/samples/each-blocks-assignment-2/_config.js delete mode 100644 test/runtime/samples/each-blocks-assignment-2/main.svelte delete mode 100644 test/runtime/samples/each-blocks-assignment/_config.js delete mode 100644 test/runtime/samples/each-blocks-assignment/main.svelte delete mode 100644 test/runtime/samples/innerhtml-with-comments/_config.js delete mode 100644 test/runtime/samples/innerhtml-with-comments/main.svelte delete mode 100644 test/runtime/samples/props-reactive-only-with-change/Comp.svelte delete mode 100644 test/runtime/samples/props-reactive-only-with-change/_config.js delete mode 100644 test/runtime/samples/props-reactive-only-with-change/main.svelte delete mode 100644 test/runtime/samples/props-reactive-slot/Comp.svelte delete mode 100644 test/runtime/samples/props-reactive-slot/_config.js delete mode 100644 test/runtime/samples/props-reactive-slot/main.svelte delete mode 100644 test/runtime/samples/raw-mustache-as-root/RawMustache.svelte delete mode 100644 test/runtime/samples/raw-mustache-as-root/_config.js delete mode 100644 test/runtime/samples/raw-mustache-as-root/main.svelte delete mode 100644 test/runtime/samples/raw-mustache-inside-head/_config.js delete mode 100644 test/runtime/samples/raw-mustache-inside-head/main.svelte delete mode 100644 test/runtime/samples/raw-mustache-inside-slot/Component.svelte delete mode 100644 test/runtime/samples/raw-mustache-inside-slot/_config.js delete mode 100644 test/runtime/samples/raw-mustache-inside-slot/main.svelte delete mode 100644 test/runtime/samples/raw-mustaches-td-tr/_config.js delete mode 100644 test/runtime/samples/raw-mustaches-td-tr/main.svelte delete mode 100644 test/runtime/samples/reactive-function-called-reassigned/_config.js delete mode 100644 test/runtime/samples/reactive-function-called-reassigned/main.svelte delete mode 100644 test/runtime/samples/reactive-value-assign-property/_config.js delete mode 100644 test/runtime/samples/reactive-value-assign-property/main.svelte delete mode 100644 test/runtime/samples/spread-element-input-select-multiple/_config.js delete mode 100644 test/runtime/samples/spread-element-input-select-multiple/main.svelte delete mode 100644 test/runtime/samples/spread-element-input-value-undefined/_config.js delete mode 100644 test/runtime/samples/spread-element-input-value-undefined/main.svelte delete mode 100644 test/runtime/samples/spread-element-input-value/InputOne.svelte delete mode 100644 test/runtime/samples/spread-element-input-value/InputTwo.svelte delete mode 100644 test/runtime/samples/spread-element-input-value/_config.js delete mode 100644 test/runtime/samples/spread-element-input-value/main.svelte delete mode 100644 test/runtime/samples/spread-element-input-value/utils.js delete mode 100644 test/runtime/samples/store-each-binding-deep/_config.js delete mode 100644 test/runtime/samples/store-each-binding-deep/main.svelte delete mode 100644 test/runtime/samples/store-imports-hoisted/_config.js delete mode 100644 test/runtime/samples/store-imports-hoisted/foo.js delete mode 100644 test/runtime/samples/store-imports-hoisted/main.svelte delete mode 100644 test/runtime/samples/store-shadow-scope/_config.js delete mode 100644 test/runtime/samples/store-shadow-scope/main.svelte delete mode 100644 test/runtime/samples/store-template-expression-scope/_config.js delete mode 100644 test/runtime/samples/store-template-expression-scope/main.svelte delete mode 100644 test/runtime/samples/this-in-function-expressions/_config.js delete mode 100644 test/runtime/samples/this-in-function-expressions/main.svelte delete mode 100644 test/runtime/samples/transition-js-each-else-block-intro-outro/_config.js delete mode 100644 test/runtime/samples/transition-js-each-else-block-intro-outro/main.svelte delete mode 100644 test/runtime/samples/transition-js-each-else-block-intro/_config.js delete mode 100644 test/runtime/samples/transition-js-each-else-block-intro/main.svelte delete mode 100644 test/runtime/samples/transition-js-each-else-block-outro/_config.js delete mode 100644 test/runtime/samples/transition-js-each-else-block-outro/main.svelte delete mode 100644 test/validator/samples/a11y-contenteditable-element-without-child/errors.json delete mode 100644 test/validator/samples/a11y-contenteditable-element-without-child/input.svelte delete mode 100644 test/validator/samples/a11y-label-has-associated-control/input.svelte delete mode 100644 test/validator/samples/a11y-label-has-associated-control/warnings.json delete mode 100644 test/validator/samples/a11y-media-has-caption/input.svelte delete mode 100644 test/validator/samples/a11y-media-has-caption/warnings.json diff --git a/.eslintignore b/.eslintignore index d123c10530..b5cb03ae6e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,6 +2,7 @@ **/expected.js _output test/*/samples/*/output.js +node_modules # automatically generated internal_exports.ts diff --git a/.eslintrc.js b/.eslintrc.js index a093de610b..946a157e40 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,65 @@ module.exports = { root: true, - extends: '@sveltejs', + rules: { + indent: 'off', + 'no-unused-vars': 'off', + semi: [2, 'always'], + 'keyword-spacing': [2, { before: true, after: true }], + 'space-before-blocks': [2, 'always'], + 'no-mixed-spaces-and-tabs': [2, 'smart-tabs'], + 'no-cond-assign': 0, + 'object-shorthand': [2, 'always'], + 'no-const-assign': 2, + 'no-class-assign': 2, + 'no-this-before-super': 2, + 'no-var': 2, + 'no-unreachable': 2, + 'valid-typeof': 2, + 'quote-props': [2, 'as-needed'], + 'one-var': [2, 'never'], + 'prefer-arrow-callback': 2, + 'prefer-const': [2, { destructuring: 'all' }], + 'arrow-spacing': 2, + 'no-inner-declarations': 0, + 'require-atomic-updates': 'off', + '@typescript-eslint/indent': 'off', + '@typescript-eslint/camelcase': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/array-type': ['error', 'array-simple'], + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/explicit-member-accessibility': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_' + } + ], + '@typescript-eslint/no-object-literal-type-assertion': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/prefer-interface': 'off' + }, + globals: { + globalThis: false + }, + env: { + es6: true, + browser: true, + node: true, + mocha: true + }, + extends: [ + 'eslint:recommended', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', + 'plugin:@typescript-eslint/recommended' + ], + parserOptions: { + ecmaVersion: 9, + sourceType: 'module' + }, + plugins: ['svelte3'], settings: { 'import/core-modules': [ 'svelte', @@ -10,5 +69,20 @@ module.exports = { 'estree' ], 'svelte3/compiler': require('./compiler') - } + }, + overrides: [ + { + files: ['*.js'], + rules: { + '@typescript-eslint/no-var-requires': 'off' + } + }, + { + files: ['*.svelte'], + processor: 'svelte3/svelte3', + rules: { + '@typescript-eslint/indent': 'off' + } + } + ] }; diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 7daff3f1ab..6871094f5c 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -8,13 +8,10 @@ the issue. One way we prioritize issues is by the number of :+1: reactions on their descriptions. Please DO NOT add `+1` or :+1: comments. ### Feature requests and proposals - We're excited to hear how we can make Svelte better. Please add as much detail -as you can on your use case. To propose an implementation of a large feature or -change, please create an [RFC](https://github.com/sveltejs/rfcs). +as you can on your use case. ### Bugs - If you're filing an issue about a bug please include as much information as you can including the following. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 923bfdb50c..e533c21c96 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -7,11 +7,6 @@ assignees: '' --- - - **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. For example: I'm always frustrated when [...] diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index d14a0f9fe4..1e77e0337a 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,7 +1,8 @@ -### Before submitting the PR, please make sure you do the following -- [ ] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs -- [ ] This message body should clearly illustrate what problems it solves. -- [ ] Ideally, include a test that fails without this PR but passes with it. + +### Before submitting the PR, please make sure you do the following +- [ ] It's really useful if your PR relates to an outstanding issue, so please reference it in your PR, or create an explanatory one for discussion. In many cases features are absent for a reason. +- [ ] This message body should clearly illustrate what problems it solves. If there are related issues, remember to reference them. +- [ ] Ideally, include a test that fails without this PR but passes with it. PRs will only be merged once they pass CI. (Remember to `npm run lint`!) ### Tests -- [ ] Run the tests with `npm test` and lint the project with `npm run lint` +- [ ] Run the tests tests with `npm test` or `yarn test`) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e04386fcc..457ddb3bab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,12 +3,12 @@ on: [push, pull_request] jobs: Tests: runs-on: ${{ matrix.os }} - timeout-minutes: 10 strategy: matrix: node-version: [8, 10, 12, 14] os: [ubuntu-latest, windows-latest, macOS-latest] steps: + - run: git config --global core.autocrlf false - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: @@ -19,17 +19,12 @@ jobs: CI: true Lint: runs-on: ubuntu-latest - timeout-minutes: 2 steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 - run: 'npm i && npm run lint' Unit: - runs-on: ${{ matrix.os }} - timeout-minutes: 5 - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ccfeff273..2fd3d96fbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,72 +2,11 @@ ## Unreleased -* Expose object of which slots have received content in `$$slots` ([#2106](https://github.com/sveltejs/svelte/issues/2106)) -* Re-throw an unhandled rejection when an `{#await}` block with no `{:catch}` gets a rejection ([#5129](https://github.com/sveltejs/svelte/issues/5129)) -* Add types to `createEventDispatcher` ([#5211](https://github.com/sveltejs/svelte/issues/5211)) -* In SSR mode, do not automatically declare variables for reactive assignments to member expressions ([#5247](https://github.com/sveltejs/svelte/issues/5247)) -* Include selector in message of `unused-css-selector` warning ([#5252](https://github.com/sveltejs/svelte/issues/5252)) -* Fix using ``s in child `{#await}`/`{#each}` contexts ([#5255](https://github.com/sveltejs/svelte/issues/5255)) -* Fix using `` in `{:catch}` ([#5259](https://github.com/sveltejs/svelte/issues/5259)) -* Fix setting one-way bound `` `value` to `undefined` when it has spread attributes ([#5270](https://github.com/sveltejs/svelte/issues/5270)) -* Fix deep two-way bindings inside an `{#each}` involving a store ([#5286](https://github.com/sveltejs/svelte/issues/5286)) - -## 3.24.1 - -* Prevent duplicate invalidation with certain two-way component bindings ([#3180](https://github.com/sveltejs/svelte/issues/3180), [#5117](https://github.com/sveltejs/svelte/issues/5117), [#5144](https://github.com/sveltejs/svelte/issues/5144)) -* Fix reactivity when passing `$$props` to a `` ([#3364](https://github.com/sveltejs/svelte/issues/3364)) -* Fix transitions on `{#each}` `{:else}` ([#4970](https://github.com/sveltejs/svelte/issues/4970)) -* Fix unneeded invalidation of `$$props` and `$$restProps` ([#4993](https://github.com/sveltejs/svelte/issues/4993), [#5118](https://github.com/sveltejs/svelte/issues/5118)) -* Provide better compiler error message when mismatched tags are due to autoclosing of tags ([#5049](https://github.com/sveltejs/svelte/issues/5049)) -* Add `a11y-label-has-associated-control` warning ([#5074](https://github.com/sveltejs/svelte/pull/5074)) -* Add `a11y-media-has-caption` warning ([#5075](https://github.com/sveltejs/svelte/pull/5075)) -* Fix `bind:group` when using contextual reference ([#5174](https://github.com/sveltejs/svelte/issues/5174)) - -## 3.24.0 - -* Support nullish coalescing (`??`) and optional chaining (`?.`) operators ([#1972](https://github.com/sveltejs/svelte/issues/1972)) -* Support `import.meta` ([#4379](https://github.com/sveltejs/svelte/issues/4379)) -* Fix only setting `` values when they're changed when there are spread attributes ([#4418](https://github.com/sveltejs/svelte/issues/4418)) -* Fix placement of `{@html}` when used at the root of a slot, at the root of a component, or in `` ([#5012](https://github.com/sveltejs/svelte/issues/5012), [#5071](https://github.com/sveltejs/svelte/pull/5071)) -* Fix certain handling of two-way bound `contenteditable` elements ([#5018](https://github.com/sveltejs/svelte/issues/5018)) -* Fix handling of `import`ed value that is used as a store and is also mutated ([#5019](https://github.com/sveltejs/svelte/issues/5019)) -* Do not display `a11y-missing-content` warning on elements with `contenteditable` bindings ([#5020](https://github.com/sveltejs/svelte/issues/5020)) -* Fix handling of `this` in inline function expressions in the template ([#5033](https://github.com/sveltejs/svelte/issues/5033)) -* Fix collapsing HTML with static content ([#5040](https://github.com/sveltejs/svelte/issues/5040)) -* Prevent use of `$store` at compile time when top-level `store` has been shadowed ([#5048](https://github.com/sveltejs/svelte/issues/5048)) -* Update ` - - - - -{#if files} -

Selected files:

- {#each Array.from(files) as file} -

{file.name} ({file.size} bytes)

- {/each} -{/if} diff --git a/site/content/examples/05-bindings/05-file-inputs/meta.json b/site/content/examples/05-bindings/05-file-inputs/meta.json deleted file mode 100644 index 92d0587e87..0000000000 --- a/site/content/examples/05-bindings/05-file-inputs/meta.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "title": "File inputs" -} diff --git a/site/content/examples/05-bindings/06-select-bindings/App.svelte b/site/content/examples/05-bindings/05-select-bindings/App.svelte similarity index 100% rename from site/content/examples/05-bindings/06-select-bindings/App.svelte rename to site/content/examples/05-bindings/05-select-bindings/App.svelte diff --git a/site/content/examples/05-bindings/06-select-bindings/meta.json b/site/content/examples/05-bindings/05-select-bindings/meta.json similarity index 100% rename from site/content/examples/05-bindings/06-select-bindings/meta.json rename to site/content/examples/05-bindings/05-select-bindings/meta.json diff --git a/site/content/examples/05-bindings/07-multiple-select-bindings/App.svelte b/site/content/examples/05-bindings/06-multiple-select-bindings/App.svelte similarity index 100% rename from site/content/examples/05-bindings/07-multiple-select-bindings/App.svelte rename to site/content/examples/05-bindings/06-multiple-select-bindings/App.svelte diff --git a/site/content/examples/05-bindings/07-multiple-select-bindings/meta.json b/site/content/examples/05-bindings/06-multiple-select-bindings/meta.json similarity index 100% rename from site/content/examples/05-bindings/07-multiple-select-bindings/meta.json rename to site/content/examples/05-bindings/06-multiple-select-bindings/meta.json diff --git a/site/content/examples/05-bindings/08-each-block-bindings/App.svelte b/site/content/examples/05-bindings/07-each-block-bindings/App.svelte similarity index 89% rename from site/content/examples/05-bindings/08-each-block-bindings/App.svelte rename to site/content/examples/05-bindings/07-each-block-bindings/App.svelte index 4d3d75420c..ff91612ec5 100644 --- a/site/content/examples/05-bindings/08-each-block-bindings/App.svelte +++ b/site/content/examples/05-bindings/07-each-block-bindings/App.svelte @@ -16,10 +16,16 @@ $: remaining = todos.filter(t => !t.done).length; + +

Todos

{#each todos as todo} -
+
{/each} diff --git a/site/content/examples/05-bindings/08-each-block-bindings/meta.json b/site/content/examples/05-bindings/07-each-block-bindings/meta.json similarity index 100% rename from site/content/examples/05-bindings/08-each-block-bindings/meta.json rename to site/content/examples/05-bindings/07-each-block-bindings/meta.json diff --git a/site/content/examples/05-bindings/09-media-elements/App.svelte b/site/content/examples/05-bindings/08-media-elements/App.svelte similarity index 95% rename from site/content/examples/05-bindings/09-media-elements/App.svelte rename to site/content/examples/05-bindings/08-media-elements/App.svelte index 7a071dbe49..469e9e12eb 100644 --- a/site/content/examples/05-bindings/09-media-elements/App.svelte +++ b/site/content/examples/05-bindings/08-media-elements/App.svelte @@ -109,8 +109,8 @@
- + diff --git a/site/src/utils/highlight.js b/site/src/utils/highlight.js index 124af2e6be..d9e4fe5ec8 100644 --- a/site/src/utils/highlight.js +++ b/site/src/utils/highlight.js @@ -1,7 +1,6 @@ import { langs } from '@sveltejs/site-kit/utils/markdown.js'; import PrismJS from 'prismjs'; import 'prismjs/components/prism-bash'; -import 'prismjs/components/prism-diff'; import 'prism-svelte'; export function highlight(source, lang) { diff --git a/site/static/examples/thumbnails/file-inputs.jpg b/site/static/examples/thumbnails/file-inputs.jpg deleted file mode 100644 index d302633f6b6fd370594d1d116dfb0b6a8adbd436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2751 zcmdT^XH?S(690z)O7jRIz*3Z@iBUkMgie+sC`DRm2`WtzB=jnRaCdMhf}*epxPS>I z2@s@{grdvAVp!>+1Oieep$SrS6#MnSvAAz*NI3O+Etq}T-cqjMkzJb_4Q~U7v zF#kAAK%n1mBp`@{gbYkZOIB9P&s^W!@BhZ(O8{~l=mC1bAPB$*0f8Z)!+!&E00;ns zjsScGm|s8;#CPn-X(0}Pz+gZ?h+l{gEcBlM5Z{p-A}9g<_5$oXCs$Mop>$AEN!RDt z#qfV*Kd-HOFQu)lg3vR!@QsYBf3V6q8W;kY0sCM3 z`70~J(r_{%N^+Y`*5Q$|Vzz^n0$h*lNo$U5t$|+9Vk+{mVyV52#tdYzrZ;(!4fcsx zyQ(=LCz2NwACo+eVYu`*2>!UpF7ht<6Ox418eOh%xx8pMEDVC-^enhC)ghQ94gBXB zb}|MK6qvNF-eu>O1zkotXQXCH_DMf?uUHW9O4KKMrFD8=b}^^E<)RrK#arNzmB_TQ z;K%Kk=r;M4w5QBPC+Mkk=%8y;(|zG`U9Z=~;PkAybn>Iqzb}^`1^vnXs>%l=H+?oW zk`4iuaNEqGzO9YDFR)3tFJHt-8Fe<0shr*apqoT67$n)FxQ}G30 zUD-bFu1z;_>L~^f6`B$-vLC*Dy1_+*$~jj59n>Q$Kaqvi*bhbVpy9 zAw7Pc{C9)d2vY;utXofhkQCL>Nqp7h>71qS4JO7moMlB9aK>3PyD3kIth^u-smFoC zLkXff{deFrcLVm6eE#eX9r%93TeWw2mK9N_KchxP%leS-h0~0Z2k>)pYX6$#l?SyY z7O2(fV9s(Vg~_GO-WqtVX8NSp2pYP6jLlAqjaC3%e6-Xr^Fj zpf|#-N{D|?p=5kIKn7payx>*+#Lf2M`^oi2ciFxrq(Lv|^d)u^d0cz! z)$f(UU0Im0)D_w3qR8@Q-vkfyYFg6~wgYURy4P~Grnt1dF&4RiHb;&U?IEs!y4C~`8c_l zC5t00)GA5-d4;VzRe{I%2ubkDtOanyCN_ZCtJ;Jp)0WS?ROy)$r0W#^paLm{-)`>; zEiW4z8@C+asm%;l(@s|RSiOubpj(k9RWSu0M_856dIFa5p&3Y;81xPoK^ z#`Ah?&Er|)IFG?MonGY5;sFt9jx2tN3g-op)mMD&RI2P2O>sG&j*bvYqLA<3;*4Hd zvZMtY(yROX<75&0Co9_O5T@3zoc^}E6ezXdrWjymd8^V*f4%uN1^1LTK|D|W>~2~T zeZEt{_*|NlvT`PAv{7H_G@wX#+DdIAJjB&cUhu4WFmI-Krqh1{%beIJ8r&OPi#9~X z&YPJ&QcTKR!4f?7Yh(_A%=$y17|nafNS7+F9Y%ThG@{@=Jw!i=OXZYB@;@WOU&<5@ zA#}=jRfdGxGGrMhMf=yXjLn{c2@Py+wdA?dGOH0QCT$AS$}92a`++exrbXYU@GX;i zbLrMpnG9u=dm0J~puq#b|M{;H{1WcPIu+5<)71;}3xbC+l@`Q=-rgsuX5CaCZ)FOc zG;i7om1{#rz?v)LI6Uy9>Na%uhNFBco;QuSoxE^1)NPY7a_n35?dHts5(D8$R%^%( msK;%(dOntP;!jWJ+ZMOFDq$@GdEnsBhx|I_Usy3aocI;?`dRb< diff --git a/site/static/media/svelte-ts.png b/site/static/media/svelte-ts.png deleted file mode 100644 index ed562822c3ce0dd85b32f6c792e70fce8e319687..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189664 zcmaI7by!r_xt1i zo;*pOy?54{nKia%R(>hSiK8MBB0)hxp-M`KC_zEN)Ivc)iy**3uH@UnIYPbPE0Pou zRB_ck>wbp{x!6nkQq(vEU-l02{r?ve8zlK0DA0;f6{Zev8#qUr>7c|JH(9J|K^~}`LnLMGpjhZ@O~#%Jpm0<(@-JT-~CS9}n`YBxSBWMNwG=&^*2Vjn||DK*k*x z`Duf=nP0OkL5$po{8BupsqQCQxH;GMPPZt;llNKYcjMgZ&&8H4L|EU6uO0g*vkRgo z?e|rL3df%0ds6@0{R?`puWx}*eNM?f{dySY6hO%rpa;J3dF88&Sv4!s#A!0z5-XSU z#PCaFpYNGd?G9vZKZC%V%sni#@d#7E^{G0a0%c>W!-V0Y1$v#@iTl!lr$OP0PsK!%y3ujcl$7dsv z$QD0LHaiKM(SDGgOrQ|#Jp^Y@0#9n7gOmapO(?5eH9fg{wdBUZ@GIORwy+ z^{ouO+?w)yDpJ&)I?Vbn{kogdr^9YH zT&L*Eh$1YFpC~eKo33Ua@*rxg> z)xb57&I|XF>FV`24DE4*ar{i#N4{O?tXUYwH}!w3p`H(u57#k7*I%PFr4tCrIKcMe>>A$4ovmqCbp`yeN+2^3SV1vW6t$JsAVY3jy9pFbU zm&M5r-b)vhm5%2kqyL(s>o;KO;5h&&_vm$+2PRsv`b`uK%&#c*4zm66ig@2?5uKod zDXEXyneWq){C+X!gJJdoC3TFi;j@nC=d`5uL25@yc||lhRZp2aBNjfu+~(=?@!~I9 z&$TzR|MDWQoDk!L%wtr6h6biT-={k1BA(02u4sPaz9h1_kIZ-;YV5O9w%La><$egA zyGxuHW$TV`6jf@q;<56Z)Z+-rTC7TrY|SODpEkvsP2FM|P<&Ij}tmpP2`7g!* z9-0XPH)xN;z%9T&z%j;WZRhfkF=YS;P&RiYziBPDfX%A>HbsraL1Og0#FP~i;1&a-iGlx z+XIZsy*hf%{e(D(JH1;|IZoF(TjW;yl*avmF0wYLAu4C+JbQnlJ1ESo5we za3n-7lr{TM0h`+oabS@wFX!GaFw1}OZV7Q^xyL!)kUr))>3o@${_J9i|rTXg_Dq${8~f(AiZImbZVGy3b3ut^DJ; zb?3j~?bB-uc#QB~AqSfyn%ED)od2rw<0qlt(#Mf>OMGO<8rw7 zsk9r~GNq?Ia9J~f-M8e;9YuAZ!M>Z@b>7dr`I{RD|BgYYjFhhl0zwSWf1go&)9-)> z*DAkh&qa;FJiImOX#MVITIg2@&PYmYAd(x`$m7{Hm2dt@ZkkAd3teKQFm^mrQfdaw51A`&=m>g_szB=HUgCU^B04e?j)kavG~WAv_>d@8=l+O)9P z9<#8%Vw$Dld?vhJd4!M9J7&nEtK7dColCi8B>HQs+hQ3p!} zldD6{hYlk_(y_xRjWhDuYABbayiVs1{Lr$-YrNAC<%GrQ)7yY7l$#jY zyvqFmtZ3-cvV2=#+dCaR?7)}6ds;R_DGvtLfjiLYtc|~JYivLC+ERk`D=$F`{@Qns&_uW1H@4vz#+GD0y zdtC2qrx`=PT;Ejs=%7%KPa z^J0@*{C4-I_qgScCh*^H+=t)FEW@ucg}931F8~I2T34*`qX}j|LBl!vWbzIKO{}vsx*+iP9b}nhhM^`zz-t+Nb;Rjg&z(Rcm|Cb;pZ>zH{IA6$LERO8F=s zd`%=U=J0S7#d2t#RmP-4dUCR1n6}ViO8W5FuYY}+d>7xt2fK^^P83dY*H)))Te-ZS(AHhcEv%o&fEU*qU~X2_YV5WrJ^BCq?}=Yf8X(!xtNIw#VhD` zQbk8+9Qde*A*zV|f3FbDmX?;eJaIG{8XBS5n<0RYr#&4muQ7shWR@6tdxKCeiNrgZ zAi7ouxohgYl_M4G+WaySz!=pUV=wIffNwRi*`GYdjkS-=R#TgT0fdIyP6uNtZw@*x z(?O_2*(x)ei2pa2sA7EKZ`Rhwov`hehO1%9ED$FK2|F9M^buvadD5?CYhj-nRHFFm zC~#c#bJVp3VosTC!0Ip-^6zo(8%b%SS?zw}#G|BUL)6N=5`+7gV+lL0sk0BRN#GLj)i4b)+(4=>joWjXev9gRro$?_*E})3*YO}`5S&_?y zwQM%z{}!T-h<#ZLVx*#j;W|zo+!XcDQdOPrcIA`vQU8C1C8|hBL{w5(X!`Zm$fYqS zOM}cL4u!W~WG;P5@BJNMk@CqyV$2$G6)652^Lr|Gg4L68fy!C9_qPzW#@~^bq3nCl zwd>zMu!plz@Q*qY2mAf5qfd=Z5tHUMomrV!rYg>hc+ry9jTDXx{+LIhj5fWZ>7l3~ zPV~@#OSxFE89a161vIMn(WOT^G2a#N`G>IMnF3@Tr)kkS0jh1gs(oE;HGxZ2{PG(?J4_7SscQ zsBEWzU<>dbx-8wf5Hx&-zaP)a)DQ>#zUu>wY6P!b&avj4h0~`y{5g2oAN4s=)=Ck7 z7Yl`$D>~D42a$%JzCby_`}KJ`UowtQv8=p2TnS;JuhqJBca)*6T$H1Pl$_kZvh(@- z$nbEEu|9A~{ky_n{$N+cg@vIBxXZP%<(p$O)xd}w*4u3H=+i$wKa(iGF`tnDE*Vc% zu75j(L$}=M&nS;HW3O_8F$caP7$r)49?T+>^jxY&6pTT+>8A-RoZi!2r>14hDmTZC zG0Dr0j76|I0un%{YLatuLiQ4Zrg&-#6hg7Nnic{Rd$*u%#mZ~pl{ zgntQdM9uA7%K3xQ67Ttj)s~IZJ&GoD7xYxSbJxH?+qF)_PWe@Wiy}5BX3x2rk zhDLLJ=rW%sEAPwV_qflG^ZToh#nJl+UNFtQJyf6m;Ms6m3FTfOyao=9;vole;{R&U zVRjh_ERU8z__F?6L5SsE2|)*gIdO<+0OxyFcvZb`xFY$ziA=Owo|gI^O@$y=|Y4}>v3VeSL|t3SLT&Ia(@bA z=cC^jxpWC$my5l_g0QeK#6Opt03q~;P4Aa;xX%VvwSk;fUiy=+8b_N;Acw& ze$OoBBDsPHBF>qnO>gP>`T6$4Jn^X5?#Y9ILn&$LJk|*=fA8mGO059u5Y2SCyq^6(Xagh}v^pb7E9&Psp*Xf)4tr$>gZfD-X1pXzkIpG?l+ zUwS{fGP0VEW$XF8CSrI)5aU%sVa$tJ~adb64W$|g+ z$FOZ+mB$_f2V0HnTh3!BX=Qv+R{4tUF(Q|=g_?7=cL=>;nEp_RjD4{pVXiXL&eR54 zX@A&yx+4Fwn_exe<{m_;p=z}uCw_8@nBD2V!Y*Qiz+pusk_FO;v*szyeBArVbB{&# zckv>0NTj6Y@s2NA{94+b|8M0&FvyRB0p8tuVAAfdONPuazUQk=vyfoe9xV`}F6f0B zLXEDfR-rWjd$!q?1sl)U1;Vu4;nh7hK&#vzO`6T*_h{C3-40C8D`{*@gmMt;#@$(c z*z`f0%)yF$+E3C$=!Ubdfa=A7;gaX;gE*6^9AT&Z1a+lZVKzFHpAQ=zQI*X*NbgB$ zX_4Qfhq*whsH*m~A$pi%OpWoX>gh#!Tv_=|1a2a^z+xbOP4-h?6$f~UY{g15{G19D zsew@|*AUe6y2AoT%-Q1HN!JWU1DN)lWw>ngux>5kEevt#9u_3& zl3n#8GfuU;-4<6@N8g{Xil6)c6O73gRka0j&CJ=#tMGec$sG*23m+1%NtSw^(I(fA z;vUx%HndAHYqe{NUHPXh!$K}W)C?oHbC{0(HNa0!HO(eV%R=K}$PJ7;tu{p7Ze2D1 z#Q1JxBtO^y?0^!{JjD-Yr*kD(B-{=GzSIg|@%=c_5sq#(+MMZwE7pH3>d=L@zuvF@ z0l!?%CenZ7TITX?uC-a`*+BmKn29K~NBZR{+9~{46K=A2;cA?7vwA27fS$|*?4>Qx zZ!#Sxyyt0q1HXKNs##Le)TGwaXM6CcZ2V;0@JIV9#4p=SVAfh7wC};{W;Y7xeg_Tz zp?g;@OE&{B*K5h z9sxhIkw~|DCi6tmIU11(#OBkcHj`3oYm%uj(aixd8!IPU4UXZ=JX-}nYQBZ>&H>e; z`Y);rm&t>sYR6ZHzZ0qpcp?<;ykXY3H=-IY_WUV)GL$&mXh%kIM$DeD4tO$zsIPIC zEUG9ol9?&N$`_h&%1<0~L;vIQPaLL+7(Wqeh(g=>YL8bs9f*BRFdpW8d9V-_N!>>Uclx&k;typy=vC8AM;J?(yFpMks9Y4wP-`+k{?(cewS@hVU9BZhj8uUi^ z7-TXefo)ZoNv06F>R>bc*eUX1ZXvXv7=`ePh;A8MDcF34=U=<8Z{$9~U~M}!Q@VQe z?4lfwjgO1={s`FG*4;*gwV$|c6=I-8@D`9r^KCOHF)=Yoj(hmAplN15L5o%X>(+pO z>8le=c4g%U%UkZQmkZwe->EDnNbQ%=P9G2V9h-RnF`A_yh5g5UUc6M9rN@g^{2Y* zf21AvPs;a|STLEeJs2gro0vOuYhX7pcN?dDxz4Pv_-2D|ofH!@Zvz_tSdy3Z@UV;j)M0ukiV-J>XKngX8v_ zWWH?L1T6E-hR0@IsIoj<`$V&S@zlIR-}O~LE|SM!LXM;A)-*CXL+H|84tfUSd}Fjx}qr%5t*fJ0s=-%M_ncC zKVjI{^h!(5p}vz2z>l5Y>^NRNvVI)3M0aZx&6^=(Yxa*=MC<@*B2WfUF4)TXX$eDi zQ3YP7=5|&1x|Dxz%s!=~XKHlKFU=9AYbTwAk(6Fy4V?z)g6RSvvKy`Z@S4@p=2npx zzQg5xkm6xU7_WjpAo}f7w2d}A#!5njLUgK4D|*|oSWbP}mf9L3u2#NZ8yUm8vGw9S zP&fp${AZ`+)JBS1d0zs+Y+?$|p~|gg6Ak5-i_t|lmlQbRIQRh{3QADzn<$0-<~x6U zW9k4NIw&a8-|mZJ-URTPEm%^j3|Wd_3)%~L)i!b+8|01lg=>;pfeb$;03LEK=&oq~tmF8c<1#IH-W_4Q!U?U)s4nt{WXAD! zg&lPc_KKNspy9>CNG_F?*ngUc*jnFC-ZZjGi{m$oQR747(uKHX%T59`5-OWkLE@(t zu$t6t(6?yGINvQs^iYa-iU`+7XLDOpuLE(uxc4A6z;OuwXCTlS7p!y+i`4RHH>bI6 zf*1eP{Fn}4Wz_^6=TV6Fg?<*P7SvZ1eg9NieAakefKp#Yl2o~=THHQUMACOhag47X ztG1VJ{pCNSQ5h4aq9haqcptRPmU~TcSF%wzsDXFypU4W%gsL>g=44vL6GytVUH2HZ zUEEb7v^5IOOPdL28>bv;ElUl|Q8=c;5S1~{cNqohDS4yL)9xjiY!INsmeqIrLD=QdYm)cP@!E-veGN4^rxL2jZRB$VF%NQY@aoD;)V{b>OdM(_!S;SDK_f ze<(@)xaO3p8*8(Yke<@mwmDw&ew5P}P3O^!V)*?(BPwv*IJGn2a5T^?UP`4%AK4ZV ziyP_mS$L8bQ2zo$`>bqil6TC@WG}b1E}p&<(kO6}?aB~-(nRSbj8NS;&`nJZLTy;j z0M0Fq@5_kNSOxtLodDG_<4|-uNwuj0sL^26)CjyA0KhM0VH;Fl(*@~%(pxz>+UR^& zRE_tb^08S~W=U)~%Bf$N>&rx{_?c*j%8r|c@t>haqzvJ9-;-BJbKXs5#W|WChGpr)f9aN2-poR?n+jdG>UN?-E%ismi@+NplrGx7@ynYPPP1}G+J`uydmQsWq`ftCmwt=EA*`1k^8qa)$KkqIE##I2=TNs( zL1ATd9g@-o%c06UCry`D10D>6Af8pAm* zv^rnnaL@p&;J-Q=tpq8+r4B|W|GbH{SIZ-?BR8SsP#QFBh$K;0wy;ip*3#9p9OKTTe4fxB`oHhD&HF$Jiz6s-%Ta-Kg@SM5(f(!)~ zxC?r1z5l7nK^toPMxg6Cnc9?84hC7SGD0S%luNI+T&!G9VKuXIbey%>>|C#WYiMt` zGMmh7AmX%HsxL1uUs_p7JzwbXcsN_A_~!ga-`;+DB7@gVT3Xuq`HzKVYT>KPb&o&1 z^Wg+Zo6lRPY+nMcy48;#^Ujt=MtL1sdD&D*Kx=vHjJYE1Ps-CkHAY8R4Teq0oLJfe zAkuGz4fQHrYvJtdLO1wu*&e$hSuLFkk`UzY)ksh;TVY@CA*BVA4O8hn;;kKtx2B zAbk;vO;dl(SUj97i92PV{NSGg&QLCzRc(5??--2RDZ6}|U)1xlF6&YYpkriYL?L8D z2>w7KBqfD}zx#AYCSA>QJko`u(a; zmpS;qu|rtrBqY}!TQQWoS6jjr3Y<*L5Lj%qb8}d)1b{%ERvYaEvZ-v- z0klXmcPI0GM7HgM*XBKbu*79$f4A2N$jEV`bm0Kt$I(Rk-9tR_%ta1VLbfepyKdii zRy$_*^BgfTF-P-dcmp!_do6Ohx*yv+I;IPx@#f&<1)e^;-=9g=NP#k^3!1*q)9^tG zRa{=rY#Uw=I_2M*B5$`kyyV9Qa!Cu5o zQ_`f2pv5OO)+|HRa#0#o&Gu9{MplTs_@%l&QIo1oZ+49AtR#h)QyhNA$#b?oJ4CX` zXtLeih}B5wV^Nvj0cVCs8LHX&ZlgKt>h@+}Bw*j6@8%J0x|hg>u!oGlLpL+oL2gk9{~?6&nf{1zCs`{w5sw=uY>3r2_b^3f{a zjJjlX={?;cba9ihLAbZ{1(Q7g_R`>ZWjrET#S$|#jNL3ijar`Mi#(MFPAELIFTvY6 zYM^B!@tC)JlG9O`u&1g-e&i?2%*?#`j`22yyxKsgWS>x)oBN()3rP#2hX!WTM{5*XdK5t&*4Fg~;Kjf6@>1ikO^Oc4$Sy1_%eR*Q`*ZrLxzrJ9! zUC1VXOEJAp@9^<@mv6AYzgvQgjEu?i(QYh_Giu^%#7BPj-{KBuOU$5Mz}wf$jSj^w zZ?9y0b*V$nOfJ+ZH?IHgOXhtB(LK1X!TTnI9Yv-;6CzrItF<10J<;`T&bZc zxobvmoRU$AcQMkkTwy?8+3jb+EIcYZT=a4;?0trL$*`hj+ao*4TUI&P$D> z^7SW*EO}eb3*&2_5zvmOF00Wp9kD#`uNtq++|yAi85uuyFSID=qHM)Ab~yC|Inn!W zo9=ZaC{??bOn=kc#qNEv58rzsy)9R(*}@3EmThJZ4z&r)Etta%qgqM}PB@ekv$}D2 z`giws^&035Fy%KlNFqNher*zY3vOJY-T%bszq9lY4tDaj^~GDa01FBnab93Jd9%Sa z1pk5n(v|ZR!jL9DmUup^nm~|jzf%_odTv0(G zo43YpcM$a;P^ZNq&?|{iZ*ZnSy1_e=D59*a?7(m5Au}eXM^tM1vF>O$*;TfJt0puo z%zmdIvGoRqFVyk=bb?M%>33&#HmPuiTkq?@7&Z4B4KuSMnyUEA{rUbAbJpi{}r@ulOdnEPW)$ivsk)`jhb?AJ<{M)IGfIM{IjBS{Ak^Jh;A<7hnD z&{KOXU!YmDBxFYu3u}~(Nyvnj2P6{Q3|~-&j!G$Lj|9!!DBXL-)nhz~!X|S(a`Qbr zitOPX81;3^&b*rT3yrN^``=NE}hL4?{QdJdqi`iF6FESc^ z9qOE-uA)2Sk1Bc%kHeEEXQP7QaiP7qdHN&vNW8`Fg5+@hU~Rd)SZ;uSVJjm-K%53s zG4MT$%j~TSD|kc-=55mDYRxP9P|a38TajsN``zR#r68r61;KX&N_0peHY7B3$IaZF ziZZgvW_@QQAt*18TpC$EgQvg@*{;FvdS}4(ykT*w+CZ498s-|(L>YqgZMql7Gx^iX zv`&_CMZ=<_qoII6U}OXdZ(>=33^_a^z@dH2zBo$xogR3Au}$K;DeFd~p$`((;mW&^ z%C2e4b{J!4vAB&sB)p}+5r!WB&IRYjBWU5+OXJkXM?bF2`|Lfa+)+aO5BpSxtQ-Cj znz0d{Ac^?E#zFR;t>A^SmD!2hFFy4O+nMR!dt1_G3n;@@@!Vl(RJV)c^AE^$%~{Dj z=CSDIU+RW?XJS!(2B2lNa%5fEaDCda8_h{@19xh3_3&*g5EZd&jOBC${HL-Nj+%Me zYSNi_=tAWx;=|dF{`@*G0g`|D1E6dnA+EQiN{qN*_w(^oW>HpjVNyqT;yvqvB*)8X2HIi&NCZcY*DnTU+X zpbzm7>HPwb9-yaKjU{rH_1^Co^d+~%R{w@tzcN3EIxSj7EG-wCUt@E0`6ONMTWfcE zb9T4SBbRj1c4kVPJexf6ZfcR4^@Y$}Ul#rI>af~R7llQF?W|rsFk=@0B6UY!js)7V zu#X-?FP@PlP!7ppd#4Uj<{xksF@+}S zd8ddo;~9QP+yK449``FvXJ{IxSG`0qMM>F0D&q&*y>P@>RWVh}d#~$jYfhAjNG}7; zpiHN#W5?M|gbd$Y&$u>BwIN78qoK4^@r@I79aVm{tzEB}Csr&ymcg4OJ8q@?($D=8 zA&ytNL?=~}t)*0aLTlyx2e2W}Oj7cUreiQu*Bu1TGh{bh6nY&j6&@*t@l>>`Ra`xy z(;SX(mEll*RaO?(40|fT z_Ebmczr?a^{FEgTZGiJxMzB%NqMEK$LWxzu1~t(=PhcXT!s`S-n-MHl#T|k7w5Be>FJ0#w(YB#K`IqU zn+g^9`UeZ9ei7MTTJKk$u+{7H9lBkZ&9xPFAIwUC-}}TZyetZSev%)7b73XTuE&NA zAE-zy6L1>sZk>cBT%pfEJ6S8IRHmZ+4c*)8McIz*`*0s@-UtXe88&lgODt5Vq>!YS zn|`R0IaD4B^|f_UuJ956;y=AtHzNp6ih{4yYyI^jtm*652lXLuYmAlLPofoSB&oYM z$7QM6Vv1*an*a>5d291@2_FCC%!*HOK5gg)0|mu?v^FLiaK!qzJXn7bw|SE8evo3; z?4NT$>)E)w+Nn-jWRW*>3GT1SH6XCWv9{~}`xbf=hO5Z!> zb2Y&=nC={FSug#8nrTaCjJ<`6n!B0Glo_tCc!p#3s!Mvc(c1q0Op{`ESi7I|>ZPh0 zu9=aTdNs)NSgQ)eY2T zUY)}!4ams>cp&E*@z#fvfGbFO+^-v1vWK%z4z5BpCzyF(H#E`TkWR#ei4}KB?w<3R z2BrAD!>$&&>#e*U9Zg>a5ar-;T}{^BO^{FMpu+d`&T0*MX)gVI&R=|%x(9V%KfGJGWDE34}UBUggsRup6Wf{ zr`T9bUE4#=llbWQHZ#DORPrmb(4PHRIy-b@$k9^zP-Bz`X{#lztVZrCq}&cz7Q&y| zit+uXfVV;I=K~EeR{H&3lrAIP(q(Js1clN}TqRyz=x}H9n2RLSFE}ea&*=1Ep7^sh zSI9R4ZtO;~K;Ivy-#LWWIK66#bUW{|O~jmu)&#klR{SOQgE^`_bTl=&tzw*6NJw6q zN-9xevR-zE%O0Z!{zlCJvV|7MLwpO;oe!=I-W+5{nJM~YrG5n-tz3!e>ES=2;aRYx zf4;(hAoi`XlN;ot*$z=3MP8|xT^p>uM0rz%S4;Giwe^`wbJWk|1K`bcD8 z9F(kg)7f}I*=fn)CY%qca^x^vFMP9AZ3-(q7uc0X&Vb^gSyn0S?zh*GS7b|eVBeIQ ziJ~cZu`t5r)k4b`kTXAr=~DJ#5&E5bE2X$rn(r;q5dEDi*&h>1t58a40OCmojryCOgi|IQItzCO#7+Z?)m&>Z&fB5nD1Kl z&-XXQqT$CwP=qdSHJ@~vCd?`j0P7aLd=H5(oOrol?j2vdaTcF5S zU6!Np8Qkr7YGToZFUQvEaycN^F%eoQYb>0x>T6zALyNL8=RUbdtoh zFmxCB)GAF2Y8FU2?EI-)dq|MkdGULc0V)T16#0ppFIe7}b6o|yCjL<3`5x-tnk!(d z8j6pl9Lur1Q==NO=)Nd>C`7I~Cewc=mxZV9hzj}$TbkP$u`4lmZ6{SvynE7#?AWTo zhu3Gr<73P6)BmcD9Gy-x<~2OsDJxQqg2X$Ek$7sYW84hMGPR0a<Et^8JKjo zcG{KOgB+@y?kA}{mfGxi?3;IU*$gFJN;K3?Dgx~TL3Ja7ZdFJP zkxEKerGFeLr~#oyW10-MtUq<-LgY>9{_ggzMt6ZC=3fy$Mw|vG0L#VfEtu;n8b90i zC2ypbjo{sfSkFg3%zQii%>{D1^DON_E}B@}h!R>3>e$?#dLmb7iA|8hTV#bE6gotU zicGrv1?MeTDyxd1Uxu-V*Z;tZgoPC~hZ4|rM=eT6Fv)6R-fSN6DGs>?X-HLQ{T+qW zeR7ORjfRtb7_Cw6T9jb2p=#Kw8KZV{^aa)MaxYFf`1OUgSm%tZ&ng5F>x-R?OfpsK zuVKs~5nzTodvf^_L}5hY24$HY9+kff7d1~%F;I(HXi{5!RZoaQ&xvjN*cZcJ^e4zM zcxH->Bis-Z|6~JS(VqTj?u5Oal|=gZkR@l%GwYP|?x^!=Gv_;dQqXe;eb`yXrBl<%|iwl*7=-z9n zu*Pm(PXX0=2vfj~fuJ!fAbm?d>#FCX`5JVM6=}WikG$r+Bs}dPfm8#mJrW# z0roX;$0?Ag5^(BAK@L{Uc!~Ce`le{~231sy)L2-pHOCbA=ZQt^h{!bCHLpezW>Tx6 zx4eWQd|#A)-?HB5`-D#RHNj1dFfcGMeQ9};X$wEC!>mNQxvd2;&4)?F;nu+*s(7N} zC{qgPgUV7Arz}!p@HthCeTKF6YHI7Aj-dUUS|niceCWKK?~(J5f8(r8&$&>zy9qj5 z?Mz+GDJ@Sw`U(sFcmoMWm)u~=D>Xvc_i+2VV2ASNYHVJ$OW0(4bJ3CM(U2qj$k`Xh zuV$;8Sj=_~w&CG`-?x5iWLAglGl|uHb-_vv-L6O`r%6@~ju~D`^7(b^(*GpeM;r44 zWUVpI=PRN;QjB$2@6qrY`xyqXdH$YnGdTUYZ)C6gNn05^zTeS-lh@y1d10%^|H<3^ zSI#5D(glU#b?o^@?|?D~VoQE>q=$vT_hNGC<_#+J&~;XBJ;)6CA$O2{-AE;0IHam3 zDJdDg%!F$?ymC?XqB7hDGotFO|K+aW^YaTkVT1+SbyT6EWxWW7M0B~D2&|$NMIhOh zCEM2m5tLjVx>c{!bzVkOIlkfHxQw-q4oA-O8_(F`jSODL$uTG4M6<3#4=oU&G*IFT zR=uc*C#x(TwyKHy6HEI|S4kjp=bb1vVK6`#ycEY|n=Y78-f+RFD*KGv9Liuxzgfgc z;zHE1IMI;q^46JWCT`zJ^t=Xt1!85~J{EuT%@jpu=H>|W(=)g#MAHkl-S|;;3QTxs zK1T!!Q|IcyXsEBYWl_lr^Az zPphs|hBgK*&z0y+J;8mOzf)b7R#(G=Jncl8WDx7y;5F0#uy z&1`y-iamNNrZ}{gc<&O^dNrtUk!ifeLbFBX2?{B+Ac zvizp9Vg2q3$@iGlf7s8L8ck36vMjvt3n5Z5%Snc+6*UPSY=RoMymfvkgYc%hQVdQ) zIRgGPn}EVEe050*C_^7zS7_}T(PKTCA@~FhIZR?KM{eQ+1^Ut)k8MK@tarm~`o4Hs z?x|_*Kk|#3ZrY&Mic(99 zxIF}6Ixz!9x2VcNr}w0Sw6S6{pzt*kb%zZ%84;1@<>oAoLpAA*I(jlsAvi@&;#rxJ++Oq~ChUABY7h zLqb9zz7GQ)?PGt9(U1a{(~*KAyQ&PmlQPP~GWFoYTI zb8gBH0vzn0NC{*kK6E%AaWKE*17P2&zmGD#OrS$SaGz}K`2GnsK9LVyS{bGVs{_?t z^QR42(G{%=(Oo~%#}L$wraxO`A2(NucU3j`bvlkZz7w^o>q492p<<_bRDo~olQ%bl zho4~xHKA>3$jElo(CJv+Opz$xKxj_BAt4B`sy6#Zc!uK`F)bA*Nrc27iqgZ8f;~5S zpX7T3#SIE@9yp68OJR2l;_r;L#|QYA%QPCMrcC``+hYwzj|0fzOr_2XuBY?MeDle9($>gmlED|`g^eRMuK$}=V&St7Vp&D`q@MXn zwl)2meXeFC+J(!-ZI+a~@ly|#Na&F^gF1x8-HTiME2y2VUbo``z9p$4w9UNh48GB6 z#03$XAH6Bs0!zW$MvP>mEN|Ev_LVQ;p}+paR)}AD@=a1ITE)l>9#YfD4Zx%FNnSGV zF}#;vS+(vVoPlB2ms;kKs>O0jc*Os*rF?9rLA2*l(#~f2k&gmHkvNAu)?#UcB6;|= z%k7=`+YJq|Kf&@wn6DEd4(9)?PEC3P+pr$WA){UNq$1b|q$VkfTVU&Ew@p3%s~&84 zyp+r{|6-&}V@dnj8xTPP`?71g3qQ0%H_kNqzf{@@Dya#ASstF`v97I(aFzP1LKp^N zhP9HqxO8t~Cc;1hgwRg2>?Z+PH^g#;UAUfNhT#^LKYCdh`JUwSv5E}vP`9-6v239l zk>}AdVxqk6)W-B2F5iGKLLv|Z(3F3NA{0C_UVr#NN8gw0V9f6GQPp15 zI}bDzWkH27TFg?`K^i92qo9;AFuqpNMeQR%VJFZY>bEP{lW;gmPqaC6EqTSX%Lig<&ZEb;cSJr(zcs>NfIdQ~_`@3> za@2(4V2ux_?!(ZQkXRMfj4X?<3&iaRx zMPO6UDj8wsG`?+7nPy0K7$xvK2Qk3Sd!h_0NCV>hFL!t#F2kRt4UI%JrEU@!`8-Ee zN($+G{YCE+@_0adnz$wqxDFCsjwt6?+X) z&LKx?M;^waTSuglwZ81v2;8BncT8VcjsnCMzCwKIT~bt@>RsGWj7)}emg1-Xbp~tJ zs(XwXlRji0yDCgC<4b>bYBeP=jwS~bd}l+Qn(7-r&N2SOEkI!91^SSR4-EWObSb>M z$!M6kR)aOUb~sTH`akL_5%v_8A_~TAi0(=@v^4T;sw!1Q?nsyFa0MITdN%aTiOQX# zuPMlEs|ayoB}D-8J@*_CXaf*c9iFCEyZIsk>=2{9UYV`tIu950|l&m9`l8jQHD;9 z@ZZ*%!~n~O?<<@@KS<@nDqPRsmrrM1_B~z(GkZIaWv~K&g-EDR8kTR`)5|MI9{*w(=^1-?2G38{Ndez!@rP|7 zns@Ee+9~TKzi&+p) zRZPTT)t$<2Y4=H^;XBU##X7PP%F6uaX4I-}7s>kiy18ma5#Vy827dJcFp&HI@N|yh zb%fj7Z-d58W2;eP+ivV8JGSklvDKupZQD*7+qP}K({ujkooj#Id-lwO^{jQ@zqOaR zmEBI*H_^cpkZn+ZHDtDH*%2M zy;{>2+RIPax_>2pz?g&Z9qr#x$?SZLAkVQ4>!qfr`RmidmHc7*uDn+gh@J0&J*HE~ zLYWwR_3$3_+W(V3%4c(Sj?cF@vS0VGN#590uCTNg2aS{?^DVL6!MEZ_bLBF%Jq|q- z7F81^v87NFqP&I7`b>}meNX(URMf+?9xrW1l{;*@fKJ6qTeB`ICq;_V4(1r6@sJoL zkpy}hhlIWPLhHTFA%b%N$Kf;`pF8blBxwT6V$q^P-f6Ss$jZe6|*R(sBGGu zKO>IPZq~dSwD^{a+-d`^EJMKz%4~qAsAWdoMkI2-fen7~@RZ{qfQZ}&P9?4{XN`h@ zR{4u~GP4Z<4x1(PPnmQk$ZtD43K#?g1X!H*WY^c%mw-WG=YtzaE{X$16RMiN50Fec z*H`gqf_@+=cbR2qY`lFuSBk~&&GXM=wSbu@t^4$GXJb0&0AUSi*N2Y$W9@dp$hbRQ z@iTsaPdQ(b5!XdkAc*#yXI>RCCd+8O8{EW#m1-Zcwk+I>z3%68bb8=Rg~18RT7&#% zR(yWx3}F%1Fq^^_n52{yYNkcx8q91T#$( z+wxVajj9sM>fI4%JO>A3qCehNdeRiq!Vb1t47@&MzNIR zF?Bpq`uqEf6!T$$s+jN1!NiVTj%+#?3DcN@^XX!@N4pkNsoTSrt9RdvkgioSp9n1N z*E}sAUuK2UOT#s>!`o+gvQrHxp6!?|9l#aA&qS!b#&eliJhFMNq4QN;Oy2VE;FDKp zmN^3b;{(3GiLe+co#$r)$oOhN3!-`;Y9#*Ow;>iQBpOzT!XzoljZRr#6Bf}Se#c$% zp%9R)mFNdIa6k9_bJ%32m--%57T_Hkq)cU0o|LG63j5UnYNv~ON?l~Ek!8uWbJ6(a zPmHzyK&S-qPYCCu=&W}GT?8@MK>BxNMg@LnbCW?4;IYm$`SI(HL zI03gvre8T@}OvWK9QGn;ow17IX{% zXRGO23+oVI0En>L8TeO}?E-XWg3Aq7;ee>lUdK*GLPElA_cN&^p6rSH*_}cXk5ib| z<@K-6uJVib#Y%;Xgm&$}OH@j?N9a36HafiAc-v$_jUj2o5!?R^kICZ$R{EKO{$ILr zex$PX7iM}>59|ZR7|deJxe}FLz>qjqtn^J{xz3DqxlAE9D5NHKhtuQUvJG%Q$?K)c zz!`Qv{Y1XM0HiU$y?Oxuo^CYY`P`o1|HvDyNj8?CS~t6uG2Cbmb!hcTK$TwV51B(hy^g(nq*5vv+7QFL0qWM5u2H0ePuZh`CNB|!YY7viTU}qs2%_q!t5@4SC(SG= zgS;J}=T4qCpZ}URDLV!8Vi^tI_WUd3jz$9Mw6Cb+nTa5GnBR2TEg>ft3zdWil!L)L zgLbuC^sYbfpg5u2d~gPR{+WrRtQ-hJo}RF>{<9E>DS%LIbdj*Ro zgjq_!lI0pH_4KC2j~5SAifHI^1WP`F-eHWoX7AIj8gyWm+TVY&T%DMz7(;$}2$q|f zU&QTzh}zy#LE;UT!;p^dMiW4l8~nwy;DsC{`-=LG@3FPf+7shS@dXK2OtjjndA8^c zoh)7)bcYjKRM(Z|P4v{fR0TN$2^08JBWY~hb-0kK=Av+CHkLBRWaYuJsq+sSg3&PG zKNNAF2ApcPH~T-}3Hh{m7+RZ~vsFq}IXoX30J#(K^b5%2j5RM0ND={(fE<^Lb#$G* z1gQ7-cUSo&#H6@%QcUucAwED5hk|qpY_z?AK{XKF&e=IZ(Kj=YXR*bJX1+{=w8CRL zPm+iy$}jBovKJ{NGE#J*LK_7S5B?9M!2n=q77p<{JT$c%2X=ZAR@Se;KnWtFq=W`e zvX}<^`hCy^Z=qMs_IqJiFMxHW7rOB)2F7+@C|X1T>f66G$Kgwj(MXla1VKjJ*&k`+ zbWR5`33v;6F$H4<*p9-6XhfuquiTLUgWA@rQEPI1Mpl~X)yImGMMib#}(rQ~DKBWs{TD;@h8AW9%6*wF<4j9^nfkFA|_Q1tuoH7*wf<2|&<7$ zG5ji-nyteI8hyilGu3oRvqPQe0m z^SR%3QGb^oBeds|>FvDHC^PJ%mDHZMR&SyaoAMsbfjnJ2r*y2g9+jt+3bn+*5#+A z;Sq~Pr15#-q_W$5(VImgOv9uHjY65DY&l+SixS(McJG9Rh3T@TUS*Xbz04is{kin6 z!n70n8=I6A0{GHGS$Yxixk6GTe*@8={>S?pk%oqb(Cuug8dAWUaX@&RaTp`)=XyGn z7h+KnW#xEv=m!tLNV<7^JnSIfAx{SF3&^{EA>gw83J4DFU06^Pu_Pxa7ZmF5=gZ5_ zhdG*Sb8~=241M&w|dIt&+53l(l&xC~Tw?&W(E8BxJ&wKzM;l z(=H9+l4s-}6Pm8Zw+$E?l7Ph+W)Xu{ptDbhGa?*J+YzjmN*>nKllg3D7(3VV@Tv_= z8@S);>5+h~6)6&jbvsGLm9Jo@@7Dxr>>qoybI`iP;tkEb+;Q0I zEw`&Yhn(vfMz|<+`#>aau6C=le#fF;CvzZWv*Xe4*KrQ|h=*@0o9!db!)_FYm`gQA zaNFD4hK}U@Ii?T)8(m^oG~_{>dHT5BQWWI%lVJLfw2j=GJ`$mt7SgdsL3d#bLrheW z#RD?+mNjT}QiAl9;7UVYh8)Qx<#{X)u?LBRf2R22@B2A_P<&GsgSD@%_8QY7uFdl_ zpQNqoK@HDaZS(s?XyR_4)I8Op-@+xdWN z7`%Tr#qFX?;?1~R5QuMxch;>Q+b=PRGi1-Spf;u_s38+PSLIrNE;q(;cz7cHj-!jG zs?n@FgY9Y2(FzGaL33@XrnlC9uhn`he>Ht%kSXpl%>ZP=VV}h)V4g@Cr75wo#)Pm* z0TrMxFP0!6`n-@w4~060+8gvK7x8BbYnRKob?IB-pf`fvLnb^;4ikS&Mv)PVH9{vu z2ju}fXN`KxRZ47H8m(a{EU9)9>YyV#Y!LtZBe>f7IvfaBhu7-%#`Sto@_GmChTf~tpLqtyL%S)-9 zC$W7Y@MIV-9iU(-(|&V*&lVZ zm;QlG%YfJGB|Qv8x6>c!H|hquzqftT5YBqB=JGx1ywy=Oj77=*ib$6Ev zv5MD7P~93eD4dS;S0UxSD$-`g)xVc#yr(`67Qty99CKMd^zSs%*Vi4QJcZsL9!A~e9!I2 zg`embQ!>;jkNw)p4mNK(Tl0N&l~QB#Iahsz>76FmD(VxC~q^btG1Kf8dlA zx)`tfZ5Lo=$JXxKzK#GhfWYY7$wb#b4KKRN%PFvsiZwuI%k;bsjj@DvCdZhWq*OxB zi_jO=XOv1Nk>-QFuF>uLy98Md!U_HLz7vCtPyA5HP=?)~vtO3pFF`6LE{4nbtM?{$ zq31)LK`}lv`1dx6ihg#1ob=Vb*u^hh5!uEKxdK?lD#a)%yT8gxJr_y#)LRGFB9l_x z!!JtdrSU)ieEPo^O`I3OI`*gWi;%bKTlg#Jj%GO1e9ZnRcvN*G%5>#J!Uv-MEi8x9o33-{OTy`-09y{8S>8QCCYgzL8Bn1lg7Q7Ee3LV zlq1)UiB9OhPm88_p_-AJPHj_JZWh%s@joRw8t8k*InN3r)x9Pe8gybZ!?$xtB!B~C zR;Uh?*iVhbdS`nni@9QY3?a8asmT<}ZSH)sBG$1lM^r+Fb2d1e5jWB2nK+8PNNOcGLpvG(rm&-Yx&!D{&?F!g|{irkiyE(nA zrB+1v)Yj{GLD#UP^g#9=;g;s=g{!*!^$@y*SU+R=BqLsCG$x{@z=qs>_u34u9SU5m z(>IvDmabzz2M=$-#Xj9#lY)ek=SS2)Aa@L_vTlQJ!Bi6UKsH0woLT+If5GTI_!1@h zf<0%HhFP{T@YKhp;VDgiK%HME@vV&P-w_vB2$JGyIe$_Gl5537Q~#v$DS==vC6T$~ z|B|Sjmxq<2Vj@DIDw1#-qgh*`9xFFrvXpAbt!Pd46l<>lrC#rNOqBFzh?eFkQqjBE z)NmFVleGA+q&lMmx@EQZ)QfHTaZn2AF2?-@hZfSUVZw~C)T;c|lGYNX)y98Lq7p%x zpXrY=o0T2B8oV5wQRUu5hH;l3hbyS}B}i8a^@yZo&+W zs%2Po(XR>Wc?~93u5RvvzD^mZVjYi0|`YxZ{SHx^~`=RC}Px(5t6}}#L$-%d(&#N^#u#{lNa+=kbogxELEdNaS~Cd z3ERmRGi02L+ZksO!N@T&-~0y)2@=JQ?A0`8gN(||%+wAgU+Q!v@ys|0ZSY?g-t2Ng z?z9VyS)r(f^YrK>hETO$#>dmVVyx&t_jAI-{77Z9LY=+lahgjjyzw9{*gmO9U5tRoYA_b!TX?KF|Ny9vZN!|pAal2&R< z8)YF(ZhYSi=<@B$;z6it1SX5Boh-aYXi9K|;*Zg03b=VWz<3gSsoJ0H4fEUTb#j}D zNxBy4zFFjlzPZSooRpU$2;-^OIuW=~_6OVhm@WbFDN_D%XhXMYhc5q6Og_SZ_ z1jZMc60#e{JRJ>fNH9h|{2PI5fi7K_1?4TOI~+*BV;Wb&VY+v^cRoXeDn2ZrLH5Uy z@pJbeVayT1z?2&ymf^i&dA$iL^iA`-PrnsleVepo`*?$VK0vt&mxB6pK&cycUJrLy zb^Tlt#cmRv5=ld-8d+F1TyjFDazQmZy_zEaq|{F|;-UAIN|5I0j=u-<=ow{k`icV%m2C5;9KuqAUplY-Kuv-l4@IIdgy-&vL zrFH}nq$ZG5#+gn>`#j0fmFCS3(vpGK1gX*Ucg$xE)Xae zq!Q5iB(M~Ie0V7FR;3l+Ug`+DZmRf;b$j^o_+Vk9j}`dYUkCJw^TU$Kky@IR`4-eD zw_@k{4+s1Nre>&9SFqF`s-pQiZ+uWSSnWP?R4VjlAgFxKt|0R zZSo9nKE-y!~eCD+h^ESb!ly?IN;n!NiO_10}$oE+UO zPs)mmnOVd&_Sk_%Nl#^>fJNEEy1IL<`;P^OjnWpsZ&Oj!sp7r~>dcQpb862`jAMls zjPD!I>}}%n&}<%1ruYBxy~<_qgx=iTPC3+`I1MDSW&MKNi`fjjYiOkBTm2ZRj}blh$*;c4 zSfKy>Y3%%Bt<_}V9LUX`edDaCs2K2vLfWRTt*yNRi~?9}(FD9i1IJf%Q51i`k?TIHbL=&)6ZX;Ut#_h^R8yy}9d1rc^_nM0 z?$Z3yCIx?25MDPn=IpKVQ-`-Ei@w6c!@~%?>EsshkTv;yc*Do#P!7`%@7d+6WfEk6 z+NAh|0i;TR;M4gG;EGh&*MD6oo-^7@!RNTOd46u4mX_9+H8wFZ*xfC- zH_^CeJ-EMbd^_{_*z_Ka?Hn8&ytiTS`_ISw{{H^9^WTqz`T6;r%z}af^r(O6^Fu11 ztKnAP1OASV>q2iI~VCdxtzCz$>rLfMYt21Iig5lW~*-f|RC_J;mj-hEr#5GZq}MqAO5kVZ)W{C?Tkc zrEj)Dvz!bkQi}S|Z{ymhT+Xggy!*j^ed3if)#1GwEb2e74>vONzYmT|r%cIS-atXU z#3$1@;)_><85UX`!|5^<+Yc}4PruCT!^Q?ewV%pWrO#%Lly4xeT(#y;>OuYb3f`o# z5<^Fhzjv-ekXX8c_whnSAa?CJ9jB9Om&$&5chcXvliiW=w((>eCLcs+M&)#fuGW#c%#sz^(7$JMV+ zg8u@3KBox>0XCa?&7B_g=*efQs9nEp*<&yYutJ7~ zY10y^S56X{27py=NR(Oq1N4Tmz|Br`` zKdj>t|6T?IE0eka#A5_kf*HUxRKo#A zZk6r#%g2Cgw$!?5>x-3QD#h;I=p2Hbxa`Dxj4-04(VE>L{v6-SsXzMFdmJdGfQz-k zMSx$ZEzPzErg+VH$q18)M0}_>Y_gU0t`fM5_GJLArGZDHaC~hY-|KZUUmnNS-U;r# zL*O_?Y+kX zq!4GlK*NwI#5ypb;uCzWy^#1{8I1Z!l35{|<1e^NnTL~W_I_YDPRiN?hUIp{g0>jZ z=6Hk+v}Vj0B&KU%yw`Oh^$V=cT9`gjwH(VXWqZnV5V&sonseo3ZI;!JmvmvRndU~` zs#yz$knhTnd=cO`@ftoR9Y}ls@mYKy%OqYaiP=P!i{jh2v2e51HDESObC?hMUrFf| zeBuTdU4DoWOfHiEuzyCUwE@K8*SIG;E)M-bj{QQy0cuD*eOIrHnsC&hLfif?d1#*N z_1|yIoUzX9;IV^1iQu;u@UAquHj8qjuEzzSZ};Ii0AF1xPzuBQt0$bNV02$A*burO65rIkPtRB4EOQ4xQ0E}L zo`WC~#;BOwGKYG(v5?vHjOG$u+VL3WQa@gn1#zXIXj8xd2Bi0KFs8O+>_e-I$qw_p z+8xwekNc-vIm5CJ$K&F{nkeHX6?WC_bO>lk!{nN~^3j^%2a{}PEh6n;2)`J-f$#^vG*6eMedXONZ7T&%^Vw)bcwK_Nbv!=0 zw6a69BYq%b^t}CcT6!)tEjcy&nS>ntIvWdec{eeE#BRl^(ab_B>w;cPhmum@^j;$b zhbG=Tq?svRw&|pz6bNV3hYwfN6Rz|!Uv_g31B6Gon2e?jSw^5-QnLW{XvSv z^nhZ&)e*Go`^!0+nG?q_!AA9hXbX38wqw_kHv@`<+Qa+1*^tsg!&UpayH|S33hwc9 z;C*#AQTqe*bxB2g>UBk2u2ZknI;((Izk`Lxz;I|?{hKW3B!g(-32LH&U9EhKm(k9{yy#7SviEH*I5V31|QjHe7xmhDC zB+EI=tY#=bV%eo>cQKOxNI#wb%H9)S)#xH!JGEE(G!W?rRlC8vcrAtsjRg5as%=^{s!m!WpnzqDhxM>8>K0HhbJp2atqfaA zWF5$TS|vOOVGy~u3wY>P_o=NA71?q$EGsEj+5}bYN&0$A!e0`aBj9k1wBMff5le() zytP((?zC1(jLdTT!!c`(-RKzo>YVBlp9Zu}lK(c+W#}lqP;Y4Mt@ShgeI3*sSnUfl z*G)mmX>L!=<~OxC8hbb{@HtXqBdROq_@OW0H2yPl7Zx|fImSkvDby_g%wqBhJI)7) z(rI01I-dl4)sHN|ahY}FD9hToBjAimOTBaH2V411q_to4f}R<3f5hY&)C^GnH;|}` z!utHd#P&XjvKKL0k1TXZTjEJ)Nx)7s;Xy48M{EdMa^yAGz7|WZvr8TU<8^4jw$n~& zViQ{Eu?-iDFeC$x8-W6P`MOi=<<4XpsIeziy@;hjB9yGZnyQBm#Im!gaF+D(U!#Go;amPvCQ7t=rS1h&_MOlHy(S-#R-l>bX$HZ-3ps*6kGYZ7K_cd}{xcAX z5F8tVHm~QDE+I$7_>_A7B7PQuabXYP>0|gE+(PnDUvDuSC#M#W|Fe%?AHjl@co)qR zcMA2A=VV!pZ?$Ysm@lt`^Do|>b`_wqvePd8G2#27uqy5hsC<@w|Z zN@6*|>z)+tXR4tRN7iGY84kM@)P4F+P1CtLf$F}{eb@N0fndyuYJ{#^faEOG`hNDt zwqm){L3b64EP|0m58#uZ_EVLRgEh5Cd}za(%>u4X6vB(_f0QA^Y3JcL$sSd46k=&4 z1^1)nYq-N{O$-Pn)d(_Te~JGBK}=3_EYuves4_g`47N7>^EHO3)RG0FJYD)|8E>MCSgno$j_pb2QpQr|`1aN^V>FTI|Mu zB&#ve@s1Mr7`L0X@KKbY{W?yr@PbWsjkgoVl56VWw>A*Npb zTdewZ)S5n>fZ;tpBjzL>I+m&{Un)Fa{G34QD`F-j=a;Us=t?*MV9 zh|a2(X}vu{4~7#LMuI2d+ZJ7aj2u?pJIG84F)Mj7QYXiY*@8u_y4S8wjbdE2NlB~gV5($M zZPV+8Y2*8$z!Q{)_s&swk*=X*1ZZ0r#%QxX9rf-N=Z~s3@BaAWX487sP@!PhYY*2Q z|5v7X?+cZ7ldNsKV`V@0_K1xJ_Ski6u>A-xH8ejR4SMWHwF`l~B8J9`57&<%V&>g6 z=HGE5e<-QNl;IC?Fc|eQ9CQ&*N-PGj1k};{Klx=55oy3kjk^so_l`O~tMMOL9P3=T zC1(_*V)wkID;@k$aVjnG__A(t-X54Ef(-G!1vo~Xgpl6Sey8=zdf)7}XJZ7oQ0T0F zM9_Xjf7e4NB<2jEW%?>vvHi39l}7YJbnZ1HH@2G~aNh=oV0M; zZ2dIMBklP}(HVGnY?6Dt38xQQENd8oD=+T8r6u31JM}np@UWN+B_u|5o3zjwic4V) z42E#xa>cO4?6|h@9u^iN+u)m;SvRPPf`a57YQ6YT(=*kbmbW~nn>YMQ$B8ez2iwXx1C zLxekpF9(H3q05iG;XhPE>V07$tx(0!qbH6*y>1wn5&1F1a9Sp~PMqF)oLulZL`aCR z@{EgVGUV4CL!|KD(`EeT!N43U-T2GUZ{qy)V}3 z_&FS6jUvfIjZhoAGp3c>7kR&}&tH0EQ? z=|TcFP8r{pfTp%4b?J{hEcP>WzOi*{#WLyKCs=(4QuKH39tAS$`f;Kte)ImG4`Lrr_1*Zu+ns@fh z7oGAcyxq&?^Zm{+ptss|C6><_gTF6FQZ|MM zJrYDN=KFN3m(_?sb=GSsoHeQyTA_e1R~JYSQ0jE>xIdgn0yJWDK**Q>YYwP-o?CM` z9V-L50YcziQEJqXjR376Y^h^@tHOTgdSE{1OdI!W%g^y|&w0mL{`X z^;J&e9P=AKoVw$Im*OKMhV5p%rpusU#_K?srmHO%`Fv+IzS6b4^kWO2kvpW0PzJO7 z;jPRGZ{KihoUwOnk7FgnS<_E}*L}|ri61u_8Nn+-ferI(P*X~!(jOLEjvlt2{~HmC z$$eR!=!x&(Gv22{7_=~J8l&CFi3CkX`Z$HE8?I!kiA-M65RO!n9W&z{V2nLl>VTfw zAjgGVH5m>KIsha~Wm~S(NdV+edZ%*5vr!-fKS7oW5dG5k1Cy_mw(jN^i_YIh}@5(m3c)>y3*EU?*(H$n4|_bNeKnKs{mNRf!Y2TGs3OaFkkQK1F-me5-oDXUnmr zIG9EXb(!IwkeKQ(i>dXOEfv6_RZnb01u}Pv=_`iCa!;N~c6E>9yQ;aF?-}9?O@v!- z*GB8Kfp2(SqfV&&Oi+O{xqM#xX4AJyIGAnL3TpZRqlrJ>ipTc zp3X3;h}qJCQG1(ngj)KhE(9kXPw5MEQJ9X?f4)7Ex%B2Df%c1Oc0k+re4sjJF&m8O zaBipbojKaC?flckdVUwIoIX|rYNQH^bjOEre-MDk{#zTO#Am}7{d1nS_cqifhXDe- z+W<_3cvHOvq2+TU?;DI%LU{-wRo@cuB>%H&2*E!~Umfxn@S3y*&{7*EoMGU%RYo?u zS`BbsH`93<(?!vJUIUr@ZCpeWvG@=Xh65-s$$e{Q&Psj57&#%PxQfy?briHp z?sRzKfRVlZdai?Z1}k@X#JfSypTLtRma%rmh~6umHBM#dC3MHF$7$$!$ZYp}$m~e& zN#*_T&HE8u;EGms_Emf|!N1s{)a!kn4ol_`BS(n#2yni=eO=yJCvbG)AaF()A+a>MHZ|Ga4j@f@Pr^T{4sD9tB>BxG91{O>eJN?bplx~k%AZCY=2 zIiZVq+XuqyK{riIQj*_luJ~y$9OVB69Rh$7Ik}P>2f%Xp1A=5Eu&REUigDCQaSq2t zqP79LfWC$bCH{k{{@ekZqd}uxh6Tui!Gz?*aPk7f3*%`zwE+0LvP!5DM%0!So1??3 z<(fXZXRFg?qamb2_iqCLjkelmgD*_ogh)n{aC-pPW>#PIN;q~a^jn6&6%n+M^Jk&2 zqGecDPo6{EDd0pQxl6&eioo*vpO9#&nqecS7CF2rPZ;v9{TJ)!HX|jz#Y28XkGEhB zlEsDWU^}V%^I32v5%Tq&W=^;J;%{{$me?z*jIlsP|L*JF*7j< zdM4I&H%wKv*At$&-a?QpyI>k-US$jU>SI6_ z4Z-YCvfLd`fzK5D=xwsw!76bAa)E-~p8Cbb#X*!`>GWD0kNg1nJuJ}NhP6bw7|?|P z{Zv=ncnFj$LHPgbCHH`-8OUNI)2Nm~!)U-O)rtS_W(1J~^e1)n7kt#~-WG-6eh7Oz zFmUZoaA~CGX%krdrVqD2n6lDHW4rgVG_hV7dLPRalNmoGx<&+WMeA|d_z(eYV)}gN_YT?%<`;2 zLMn`GmBmpYLPN^=3b;MYnB5@+O;;MekN^L8JEZj;)#q){Y}thIY>>{-EO2z7epJux zd^S#W^7mu-1FaXwEeaj(LQPiWn?U^i843#Acg?!25GR22i;hZqpt6Vt5R0_Y(;Q8S zPa&v-(1ME9t4Tz~JdkMaB`d!pU|Fj-SZe%lr2y7?-AoKh)wle|{|txnq-u5UeWF#d zYkC6{ArSW+1oVlfG7n#^^`2?&A~DX(73_C(6zOl4HnT-2z(Woyt!ROLdU{&y@Zxs9 zSRb?ETd6Y>_B{a_=mh+ssb~TNmJwa1hxK-k+8;#7zwmutub@y-QEl($)N(zau1Cj! z?z8V`zyuHmrk&r+5xkr3wd?f1nf53yWL>7j@o&!gB9dNB>x9XFz+m0))LH0tDe@OZ z)AI3RHP!bRr%sNTv=k&)$6%;T*i>JHEqD0J=ZL_tm`)N&p^U&IwE-u@-d4mKLUJ+2 z&#%C+v|BPt+^T3j?*YJdx(H`ljn??qoo~+jbBa&(iwRhFuH)&Xg)+%PQ>Q@QsuvPd zOTf+opaXM6qCo8Dace`~15y7L(A{Hig0ilVoZYml3xR0(4-ICd!~m+;-CrlJIK~4@ z#a3r47PD!He&6LGf9|;fBw{=%LOQm~jadNhKn!dWv3eDf?`eHP#emx?_1nxi#-L^w z)+4t-AnT0SmFG9k^Pvg-4^O$}i!wm+o&^|$Lcsp5J|SX0cKsSYb{R2V7*_mztr*9? zQ$=isXTjpZs^=jYA<6w2aSdd!J5!ghVN)H+q|zMryU=JwN_||P0Y?@l&+Vk}Kk_Z3 z`>mW-IbdJSpueLG6<*P8N$@7gE5S38%@#X?G5M4D7?*xED^#N8hI=Mlx5blTiCBVxhh5a{>h+*IQBid-p-v;aCO!+~7*TDxi z>xf4nG(0i(#w|jWTR5y%hqZ#Vnd3U-8o#%B!F=bT;>K4DsPXkv1%W`mRu1;|$dGkT zDRAn3U5TQ1wSvT^2jl6U8u{$wX1632J)TcO`8=eLibu|^$%Jx&STp`b_Ity`)!}z- zAe*8pZD4Ii!S5MOW(Lv}yG`y8qFEeP)nnN3A6BnGKg+AL#*J;))3sK1g)|E6AFfn(^I2sFKWpgrUhE!= z5G){#<~dH1NF*pzSg_)OXG-bMG%W7f<6|F zB5v%~jiIk6)}mWD+KucV!$u_F8LATedMqRdMLxjj0!pOQJ~S%eAv|=-$xtf8Wio_r zuhob7uGoY1g3V^BKD6QsA|R&ge6?S`SgxmOR}#{4Kgx%M2^g(qcfHiz-%xr2I}*)a zCPX`Vez=gUgk@zXO%t!*!c*bK*wetgCo|yJn}wqtL^b;kV9lkrZW*gS=2M$<0gNz<`rEFpF5k zLI^W&OnR;H9XrUqy-WD-e}?d*+MU1Bfo(A=Hc@=K0crZsIcj567)1bM)my<~cd`C~ z;*obZ#Wy?Rm4K@0ewc0H5-70mxD7_(la7Vnz<8(?duHHO`dQ7ntiCog+{DV;Dz?(x zaHIEMu)h;_CE#`?d{}YnH300ra_h*0fQPst8IN8(nbT88W7T=huj?>)Qap;UK zU&nIAn!g$_*Wszz25YBN_NI1MN=No162jn(@1eKn%Zy&=2Zszb?a_I(Zv+;ossreD zTIF@Fj=a+5DO^D}oq(QbY_U`4R;t;z$DQcM+N<%PK)#ob@YiwFk+pEx{;_Kf;F*9zK@eej?mq;nCF~PU*BMYo3A=j==n1P;V`e6 z)owUqod7iDT*3x6`K0|Sz}qzi?30hRd9FFjwh`tPmS}?Un<>D!n9zb_6}w0Cwe@;W zGxfzCjVsvi&m>j}zNrc!)5{Lxq@8;x%yNSEfVF#5HvhC7)(1#a{Eub|Z?qy~MeAAl z#7`zfo6Z4Ygh|LEBd`P5>`e_g$%7$P_VTBuL2+P!f|J;72nIJFUW7XnT{}#ta=;Gq z2KqT^HEJNxC}ebX(2=??ZDGd}GU0@?ln9hxIdwB8!SvoPU6*X2?+g1S$L)Z9HU#58 z+lZhK72R9#o7qb>oQ9yZiRuL{hN-7Jk?qOzK$O31>#mNwpIE0>8(O{2D}e^Ez7)jd zw8=i^==5D0QEAP>q3QglniauFdaTLk1@Gdd%nlavb9XZ-B6eJ-g#`yfJY53HJ23S{ zd{s)JV*Rx|KjO$?=6Ek^J74-=)Tc@G9$U!bh zpx_k@*;IuI-;es0Kzs#d-q)hA4;xlm3K`)5Y`dkD@36gy4|7~)i8t0MWRfsj+bMdY z$3bP?xGsAi?L63uB;Urh0n(e;Y-vftI~<|d)hZUnd8>+ixgC!CgaI$lUo_3 zjm%49O2{&Bp9IQ9%Ac=%Goal}Ojyq_d2Wn1=HZKgyMvx03*=rG#d2_desc612Q@Er z=O3IqJ&QEtCGNBG|xFLm02+_PPP}&ATWD* z4ji!JroyYg2k;q;stoOLOr&`2j&CvJtjzp6F zE4l8Zu%Finrb@?XF{a=$)hZ!6C2SxsMOmxk(tS4Qkczgbe%Cer8^lFACAG-!9Ti+< zdD>!7dy9&zuipeqR#QP6FsA}Vf0G2U9YKO!x^8y)UWT)`%f;(V+7vNDsEOd;9-7yzDUgOH2p!I)lYq?<)MJ0G{GqR z8JxDS=%R+g++^y}iiI$^0jaY=uMVN_I2N*ec!}EZv$SGW)(={vNy|ZpoE0pRub92| z8y+P0UnxPrqJ4-WG$k6!iVh0fazPVKuvGw&t`aMU{)p}AeC#oUvB@4(c?5CL!+)lP z2z=270`{^V#06Zn0-oF5 z5RwO?cKX@2o(9)hFwzKHm3!+|#@Rf>Q>6cN-Teb>D{yh}! z3U$E*yrr`)e%#|F6A|0Wd3UPKzK7`?Ky%s(?v-Duo|hhl`#nx7PHq2K?qx z@JmV?aABet#D8VA_Do9J=1isca`h?yA6s7mR8`xqEhXJ8C5?0_9nun#(j|>_v+3>< zX{8bA?(UKn1f;uDy8nmw)AxMm%s<17IO7O=@3o$F-&c}UB`QIhBSuucH#CjVqP1L= z?R3BMh1VyaGW#!0e|!6-=X#I`SD$2Jv%~2K!jI$iL5Ko}zO%L0jDbBR7V~$mG~=RF zjiSS{iw)tlp^KBTRvR^9hJKF&~#~wX?f}FmEtX!saU`EZaY5fFYjEI?0zEdFLLm?8^1kkVN2MZpLGfq z#P-&rKXkk_9Zo4rlE@S$d4ZJAN}q-geQqc+7TFQD6RgWvFd|a5$rH%Gt|Nk8Eh0j$ zI20~b`g4Hm(MiQWm$OqTez9qc*lXO93xKd7FS+E+Aukd-_HivaPr1_{VRY;kHk4ro=E~4v zO!Nt>Qa5&@msurcxpiD7L-4TaS6 z@jP2HC`XcHR4s=0@(dV}y_6&Vc5Z;A*^ruvT3@8-n2^Kd97Sn`hUWadkM*V z9P?-?ve?VolQ7Z8ML@R$sLP8!z~o1E4#Mvw@m=vAe9QI7F4)WNBy?YvD``m8iPuVs zfj8SX(}ZDTlS*f#nJ|O7!Smx&tXr5?i)6H~IJ1YOmS-J*pA%!KrFaK=6!C0N)O=XSpg>mTqPb}e=ep28$ zJv+)1r!2+GMu~oLqB(Uj8-VKOTD8%`?nIR~%guF#+DrBJxhi?M6XVlr^W1bk)N+|Z zixi*8kaezr7xTl}w8NWaVXAmz5mWqFl(cH7)JAXd$Qh(zg##EdD^8g$PfM1=vq_*u z{o`uUT|&YY&9GsGIbrqlazfN;L%>IXpfSgz>52frI1LMiJ}w8HegpA1~Te*mDC!`e3x$9ehj~i~w%SIgG{-YH%CAsc><>>n05U2NijCop%$x zSrX{>@!O}(GFhy1Qte3#yw(_OnJK&3waMSUTP>CbtR$?6DdPPLf5F5@oGC?Bo|XgW zBloF;Ijf)!zOL4t><3Jl z6ZUHTP<8m!hEZ`NVZ*6I)(C3+aM@;sJgNMxiTkhXhrSrfm>ORbiu#q;7`!hBB(8p3 zX-*V;3^pf3OlsxF4V3s7Tr1mQVHKl&+Xk_QNMXW-MDHQAcB#b6f8wO)QQ@Degt!? zPg)?>lr3%_1QuM4uz5L0Htx8{W+Hm6XQD>ZeuYS}lx#Lz7e_5M_i_gAR1D#6f=C+J zk9N z)Czl*sy*VjHjv?!u$65KR;1npjPJMi_iQ_7d#r!9b;nY``SbZbQYCiVLQvUn!BV{! z>&p`T{pvC3>xjoZ_P12RwFxAGFz0j8b9dHT$ zf}+;l{a?KXN(hekxKWySspswoH_d)p{k>e4jUJ!`p5EouosuP;8{${Im)aUOAVfL! zfmF#wB-NMwUrv&S!sM0B0zZ`rAq7B4NRcQ`J|eGv`<89osoiuoiWh`=erS)Ne_pt$ zZ~pH5_h$-xD4@rtx?e~^;Dgnl5|j@x%@w-2IP3*#LGZ>?-|A`6>_xl>Lc@o;kR+8-T>;Uqu&&Dw>$X>S)r6XL zc8&0zEZ@cQv7pp{H4OOwpdPwGHD4poPQiCZ=s0gC-4pougkgs?Jyq&mo&uCyF7{)G z+V(J$f6%Hw{6dc;dULot3t7Ky2gc#T#Zw8r2fC4;90@10=TR6ti4lbd9+)ms$!`vG zN?=Mwlg!UFml9|NS1NbOJg}?3RIT2bkgzN{B@IaOM@Ip&^~85dz(>Z$6Y0U@967>6 zANm?KN0M;nq8`PCUx*a9U_zvGavmahJ9dE)DmV0fbxsvGVkP3a2sL%C!FI~w^3X`9 zUpj63`Z>XJM6}R7_cz&OKbp6npOgN%W}&lxtN`k{{C;(mnqBT=-iguG>!k{Qhc9+f zy!uHRiDfN3gp-H_)Dk!6nSm50K>u$6IT_+YW-@RxON%^av3#Fa_?8d5?DK+(&j4XS z{4bgD7|>iiQO%d!<^HDh4ssu5Wv0Obe~tiM$G7~c^+%bZJjH-tJhkhgEZ~y@8~ryn zH#^tuGr1oDP%Lb0yR4V_V+1;%T{@7{TLZ=n(Y2?uJz+1H+N^95J?v`H(K&l`+T zU!4L2+uCOmp{JO<#Bz}4t4C!31goQ!V;-T>YL@eW#vMevbRj=3)8H%QpM9FvY&zP9 zC}xZ;X5+a((Cr*+q7PRfbiuS)$cA<29dbHLy)<~C(QBBEz+3GJITdLqvzV3uum2GT zjbqUhq`E%pHthdIjQ|VH{YAZw9k-B+W~s%(<#>k7_Wf;@;~w9d2&-8`3zJ@A1bQoz zf8jOh>s~yqOOJyJ9N8NI5=@LPu(P2Ax^6ii%!O7}y?j@!iK|s(`QpbSH6bD4^C!Iu zzYv$(t!MA@27obqy7DA6Yx)DT36uRt?+h`DP@cTMUIi5tiZD&AFn z?$B#uWWcfDajN;#TQHqEH?FNpuSNJg^Dc?ci8yHff<7?wjpb|^QZV{nd)T74NU6-d z?2Jf_9lGS)81p$HYHi|ESyq#w#!A?qXCO~SRnl7Z z9u2`ncb~?(iH`EavF4|84*kab2lZ}NtO=(GK|fCNh$Zutk*qUaoPFZ?nOxC6i%=ofXulVb<6MV0k zN=$~K_xQ5P$-*U7xo!FZ-R9$Zvhk>tQE!6S(NP7bp_oz%w)#`3l4tfNgsA&HadRrT zRlh}+vbSf4qe>qM&N4dL7+UTKH~~cn26=W==cIGtSTCp*1e=Mm_z`V+Q`AqVl&ENF z4EsOlB(WdDf2GMG;K{Ct+Bj0@$bLF2w$iphlBb%B_(M8gwAKakn(yVqzOM1l-EOuL{J67~m^fF!kPYf%0lwmu+4wh9dbN@W5CD3x?e0RW&3b$bX#uCllJVM z8?I>3Kl##pxE7)Erj3+QMPz)uQ&PFf{cM1%?EP8R>g?q`_Jr9eQYV?$7m=TfGG5*1 zs5m*ShAXpMT&Hq0zUWW=lU}(p9v&`M!|kdvw*7Qz{c6cwFS>M%d!k6NA)oH!I~8S+ z9*k~euvhu;TDWM&5kXNu>WjnYt26agSJ0ofbqoy2x+$>#oJAP0j|4T%+DL>MhbWv= z+?Qkt`u9=~kCI3I(gzGl*c*v0eJbLRfM1#82pkhI4%3B}yvvE1b;%vETD9cXH~Y^* zwJzYIf3bvDdx0KVJ}>vIMt>dKcDO;xM?|*8vaHkm=V+zr$j4wjaV87qI6#QCuO1&! zzmmud&y27`P)SHE}kO-|bnqoPo3y#K8dr z;qtw&u9`;hIh08sw+pl*PwJ^NFD_ee@k4VGzbm`o-Knz2aW{S$ki7hJQ0&jv_5ugN{3;IiYZ8+Cq1BjAh#E;DYr|NU)Qt=VrNZJJD+T~Y_D@mP$F}Tec z>ruR137jSA8mr8275npPjUigecV_M3>NHzpPDOsttjdKv(Gm4;%Gdg4>g*_a9k+Zy zN2+0W815T+c}ajEMpJuE`D6wG9Yj_Lt_k46lLXwIFLP8dV3#9qJeQC!mj*7#b=TI3 zg9Ny(4bFW=!j)ZAc&ukfov4f0t61;2WLi;-;~(|py&;8u z$X~6G-K5@1>BF=Q0YY|ql7rC)n6A(L3r8hCB!h>B{d8x>M{YeNP+Zt2$2^HVd90dB z=kV~kx12++sP*q}uPy-rPiK^Gb@JjJn{Z`vSF*m$V@gXb9YYe1?)n%KbmcI`6n^mD&jrUYXdj2w+a`}+M z;tW{RF5BnT1Bvs@hI77*U7%(-Q6vt|WiWSyp#IVO(dy@uO-SOU zzctGkpkd>4H1WVHvr}=X2#Dt&Z(%UM5pM%2a&`Xt;BvDCw?MG-tF^Ji3yz{Pgum1J zKcmP0VuYQ^Wr!R;WM`0PlX*Ittq*hFG<_L4{hF%E#npMjz@>^k7a$7M>QO+|TH3&S6*2bejMc78i8gYE3|J{yWH6T1&HedHc-*I)m^e)&=Be_0M8D^DyNrR7wtVw% zWZy74&R_rBDW53R#2;Jofyobj@kp%yXN(FH6EAoaZIyKmP|6hAn5eo6Mf1}9$bq+* zc;!Mr@qa1ICV>htI4ag!>pVi?W>Y03GTq+)q`x@yxiYwgq zrhpHY6^poZ;EePHy}LBBW+*8aeS(yb^$Q&e+`vrDd`s;KbC^&3P$_5;q%YCcTrP=@ z#q;!zS+BWf{XQF4C}6D1tX1e1n%}(75s$yiG`*Ee6=wC;1@oFBB!FCixg*J&-@ikl zTo#Vs@yru)`B@Qidkqe%zYExhh(GVJ0!CQyy%O=Ye2NHis50#)1#!d>h3lyR312?0 zpy0*HTu4q;RIpQ1`Al@~l<3v(bvD4B0`i;?j4o*FT`L1yGu0N$h4a|`0tXTXL+7?R z@o>a)cuvFa+nbBg6O;IqY%jLsa4Q?C%tJ<`P4Ip4>%ExP5xsH?miH<)tfriaa* z2&?_e-z5#`e8NN@#_r%&sx9^W?2`CgNPi5I2$$1C7b&mId8btvOh&*lj9Oe8_A*_xoMKWe z+rf=xU0Yw?%AML=;mdIq#Pj)>8yjN24bVlc&9>TSnyx5)nbp3HkYO>OiZGrzNea>S zN|A!_lOk#Sv(Slj?w}s66pyToOZKk(#55c&5hhw_{W=>6xoF{10MLNwl`hd0R?tOj z)W|{09vZ*%J`92TgO;Vs=EqsgjgDcMqhH$fukQ*BQJ

P@1^Bn^gEKHcv&v?s-m6IN>JJcz5r*H1Lw@vEVn8`4lx!hlU!8plxN z0z8==Bs;n$l-^jm;PT_{WPQwQIQuwrPG2MN(@eb*>wtu_j}BKRQS9ZZRYNi<&*8A8 zKfSTNLb(`ohX-U8XU=oMz~el+KgsPd@$z>~=~&|!ryyVHF{f2tMH!)f z1J_KKyD1is)-OH9&@IK^-rnxs(NNBj#to8|TUgv<`*?EgVzfq)XrfpN{zLzVx}r_$ zOY4K^y4`9;y37)meJ?hg0#7XV?!r8mztM8;FZj9Zwvurq-uuBw zq6H0WoaeKpB9PX?tDV(DE91-drasi;zX+A8Yud#4voce3B1Qj7uHKtMSTUlIPArW` zZ@Fa=yq%tMb9>yUCtVHQm@VEYg=y&nnlL6lJ`haLoqr!63bi3B-Y=By zg2iV|Lw$$>{rx#BzFR;~HfbcZ+?nWf2!D>H78VWVz#l?>-cAs1eW)+sDMZkc+lDA| zTmVep9?QylPg@+%x5wc@26Zn;m0yx(a?qA9LZXfxJ52ekUgnIiYQ^^ib(+TIjIpi) zT?vCv<>&^cuYZW+;0hW_tkXx8q5MT9Y|CBcQ|p~_gv2V1$cJG|C?uJF-IPTSffhYg zbYw2oo>4g&JDXNl^~Oe)PyB*$vcqaC-4eIEH*$1|Za7@ddSPSu!|jx@4WCI7hq$sW zI++MgbWHaIQX+1yN7_?2AEJb6-gUzbO_AJmpqQ1%h)fs#j6a^EZp{$R@r11Rq9Jtn zHZms#)3RK{Ww-44vX;v3`vgB7lBk#s#`oTeKuxB8y!tL3+zCm)s4S4_G&04HR`fW( zV@Zw77R0CjM%Gg?qyjmVeH}0!&j284yZ?Oovsc$^Fc8xjrC+WnIZO6lH*1L&Nr0<4BV9ml#j2FUowS~hbi)4D9@d%P z-S+-@$f_deE3#MLjaP@Z_m|MQ%N!lVPt7WPMO2ee-DOsOZWlvZY)@P-o!1^lo0nCI z`{Xv7$6^}{e-110mug=lT))&pXILhGM;GJ2$n~!4)#2!k?}8qTX0dRhTO+Hx)zj;j zI*}@T-wQ_C-pUu+oqRF4s7!jr50iJKb_6rw zzb5t1c2*R3UqgAy<5LnV&YF69l79KP4qJZqbwyErkY4Nq)S$_0IYYk&^z;K5>jb|& z3+)6p>N2YczHkyj4}x$!rj;|`d2#guP0gMAjvYEB%zJr?nXoiNI^p5G69NmrD~re1 z+w!|y_rEM>YL&JftJjzd91wHh^{#$$m^^~meOV`%aD$Wn3Q=V54>yTNH@HFzQ=YDC zWbA-=$`SXUWjJ5KsLPTgavN?QK~Spt@6u`qVdmmcC=xWeLT%e}3NDh1)Z9`i&Qd8*?{Kbx$f2?!%ae_}DGWF<2wmn0Nv`H`Yi3r#8i5C+eoTG$*a1RKAN2 zZeHkDV+Gxs-_|eidk8&9o?5w(eyV;RT$D{LWNtFi7UjveZS0&ymFJ{Yd+So9%?;!9 zxrQaqr`~B^dctawbYSxiR$c^a=7JQOWh%}#cMj~Q@E{@;(ZTrF-#r6L^yLq?$k`Rg zwVwuY$q@n~>g0RGF^)neFVjAxOV0c-WD8)!D*R}iTIb&_I|x_kp0sTuL9F?eLU(}b zy-72dil{Oj$Nq_#jZg@|8!0J$K`c}PB%F@KbQm@B57Wopd$0JF`s~}#e%9bDjr8Vs zMTj%7Z6?sZM{lN8z-azb(wWvNl~h~uwByvG{;B9pamVjczT*bzWd9ycr2J4_%lY&u z)>i|@`pPEHMhfG32EQKTl)v0bgUP0KF(@gj`FUaR73sp=cF9uve&fBY#!MV}q`y{i zu3Gf(K?4Cef$kPvRqR0H-b|cq9a)4y9@X4i^4qcsULjFFFKrF%&54;FmfkAdSIOCX zD89??1u686!)*KwtRC0n+;jX#Pd!eL8gcw+?%0zrY{+iWsi>(|gdW^sbkos`cWXO5 z)#gHJ1>Me*o}bR7ma<0J3?)>nS2{5rKCpVz2c6faP_qc(k9b{EAa$OKbBx`j99$mG zm;QF!Ql83w%^k#e+hAFP^-IE@c(~822*A zA$EQNkC#HZYONkH$f_(I$A~j?D+0Iokd$~z6wrvir|>H7$FS%FE4Te#AoFB3L?tn#(N(O!=}NNAi1@FnY=Vhvo1%G@ zunQIeQ<9m9g`gW+$KJjLnX&u@lZa=F@B=l8-3yd2@|1YP&swx}VYn`|Lk9SY+KO7~ z1lb1d98BngoU|fdHOegaDWXfDCWW7_X=~pcyf*Xkl>DI}WGJ+w!X4q{E-hh(kJ@qd zmMbVgc0-z;zv78c(^b_aexOGh=tz!L@9?<(q#G=>c^4uSZ=0C6x3<1jJ=^4#PrA6Z z3%R}UOnfaowqqFoQc$@1m_CMy03pfGcC|;n+3gi}%U=*-zA=c}Mx})sACK``W;EpM zc%7r?4vQ|}@T-1$%f@`yA2a{$q(gFTmMhf#qDn#jjr_-M{Set_!Gz9c%_hf0C1wp# zvoy5{=v`aku`hR$VGWKwE&+z0j8gCYa6esbf&YM1g5<&!zyNi>2Ltxs?$8W-!*cZJ zM7c;(h@?hwOsEX-=#r$XA343p+|BXC8HXP5UcHX)AsQ=OJ~!m4C^`5IUn1o4qN(71 zT2IsPti%yXqdf!0y;A8o-NMUgJ{4Z+sPF3mzm1Ls{AZQf0TP&2?P-NjO|9c$)J0+8 z=;BQpmq5QvGZ{|f46FUrOM79;fO?lX*UOR7e2DSZOI_1-x1-ZF>*r6bf-l{qJRJ*K z;Y#&xC`kzx3w@kpFcJ>w{P|k9B3X^cE6P6D5UMNcIxy-lq|U?Ya~dVQC+m)SjagW> zCs2j{tNxelgdFC8AInm9h{~Ws7w4 zg#H#{Y(Gb}Gub4~b7if9fh(P&ME&DZeWXMO1>qre43Fp{XZh=25Zmv0T~%;=F}NM5 z^e$%CdRFS+me|)+zNINGC6q85^Y#nEFd2%;*@rj4uXrg8x|-@kkLTR16mR_+2(l6f zl2YvCpg9Y&!n-lrBaY$hJ{{fM9hn|VE__>jVInTN(6hKaz|$r;Omi<#O<6-G8%To8 zsVcS*O=7!2Q8cd%O-u6Un!$i=FKBI};Kfw-sBn8!homOPztFv68h+E_w_geC6pBVm zfnC-wcgUGGn>{}==rFzalAuiENpLsOpeOWs^46YFOrj^oFJ!@Bmk~`ItjQtWQ=Z={ zvy~_t!ZT%4x`WeB+=R+%s-lelVv9hT+IX*YdX0|!kGm-+!oQr}1P-F%IvAj5;>GY^ zf{(WT)9>F02D)Q3O2;`0S<}=dy%e1s9DZ@8{nvl?{67Y2Y}T2sZpr~c!p89*!T#cf z=1?3lNl~RnW3i6Oc5wkCtNMCS_Mf_o_NZfR&32G+s%|xId@|C-Qi=B-%19fKbm?RUm_<`IuDxx&HJgdOj;X$^qIQUdPZi` z1HnDh4i-;R$i6;h1_m6(f~s z!f&KroO>%2r5I)E{Kaz-nNDZ7S-zQMa~*L+GqQHmt+3zxJVUu@@Xn=hhw61L%fQ;TDjBR>}}_7yTALOeo;BPXc$ud%bR-BLxjQ4 zUt3=%r=^7lsoEkYCN$p@SBCepa ziv>T|3|>mL{w#^~WX>ybX&~1I>{T9cB|e7Or$_;3sWYcc2uLMJSX(n%2q*gYlGA+s zy>^SSt3o&p4R_)KdJ^_1;q6t3Q=;hqm`acPe(XF$QIuLd(V`gYtSWyb~u9PU)P1T#WV(#Gqw z6QGRyPjUmW*mfqJb#;kRQBk$+o>BbI-Gx*7`2J%*273(mt4Gu`{@Q59gBu;Ohcd% zy7<5~v}3B@1T_CZfJY018fBbbr{SfX3M@GTLpZ6r)6Rr&wfWC7?*}h8<8JJ~hg87I zf83$a$8*)J?;(20=7fhII^C8MLR~YCwchcxzJ+9@dg{GAM;?x$UL%Otposr$LiyBsd$O45(OI{^2a*j%FMd7vqYH)rzB!W{GXNws0I<{$6cwlg z^I>2Sh8|IlMC`1PmQR1y;Oa=864!f1s6EJC5dlZ zbuK?hDKp(_&ZfjLB{om~@Vejp>}X2zL1cr>0eNm^9C-0ruYpFc%%B^o%3=x)lrr@I zXK@sd!$t-Wi#@iFfk+Ke;hjW1uXYf4ZwDNt+MZ`W5n=#+h4rY?u>y_KL7*Zd?(8Y* zGgyX4>6(Wi+5PQ_d=nTw=1@z(G^SoJ>(a0=1U*hKfzszXw=4Gc`^}3ly`Ta@s6JuRgijFGDgx{L{Lk>+toy%><)eLD5CF*{7$~%Q51y32*OiHILX|5;qElp7EMQGgc}m zWW23$t&O=INC}WfpHam*+4Tz5BU`Re+{1{x!$xMp`Oaw(?K9P@&?&S4!O4#=$o7~e z4e0`bDH$2T?^p@GeiUnSS4f9<(3l4oU*<>AAY=f2N>7@;SP{q%_A zq5`GUx*usp+5m-eE0&4IJ-n}~`G_t`?1?YS#XfXF1ziCo5v{cKo)@@410VlP`_7Rp z=;`)`%Ft{X5aEwBR2-cmv?=|+rWYmxnXc1WdM~Ro@JHG+OZ- z;Rv(@p1Z(@+@C{3z>nJQm3cB2VuWlnNe=t_1jFR+tBal4y!6Yu-)Ix9E6&81?k{Ra zK1Xn446AgL%uXCwp)f>XZ45sH=hgQFrU8rftL}i~9O-z2H>(^Y{Qet5U&g~3h=U+B z?wf#P{PWxpal8&EbXA+Uj{cAiyAn@1pnuj^(Z$`s8047%ktyX-$4d$$v)gh{pfYr` zC#|WSsV(p?lJtw|Ms9asdye<8E4LdJr2cSrGuFWJJFmR;{-E*D7AW5wxH>R^uUZ_C zv6n?{=hvigW%Mcq8NkClU28+OF`OC>?8NMGN14H-9bgUZKwL`}+6A3^9gmLVAj-c_ zwdV+O;jfK{eBp@hx<4R3RBniwk^liU({=QS!~^1vbHLrUg4l`=4F))M&p!R|Kegy= zI`=txrfEkh9Ill3UN(s{M1GdiM1*yoc7Obvvx-ca2CI>VBzZXD&u*?Vx zu3R70Q8_t+2tY^6?AN8;l+p@Lf$JaqwFC5*VG?HQwR$D789sf?e}J|%)vTQz5~50B z|MTi*$fb6fubNDe-U$-*=49m5{enj(<}Jcto`*-&Y^r-d7S@#T^|)->MO{e)ZUs{l zK{T~e?GPGd=(&B`Cj&m((LKvT~OaoFCf)`j;#R3WnnsXjnZb_QajJEP<20B z-k^GW7e(9>nUQ{o0&nq432hH#07?0fsC-wExHCUfFD+ZW*~*T#1*g^TChj+Hrn#5+-#@YEk>M=cM6`T{j`GNnrjvlj#_^+c6STJr% z0?*Bp#u)$Jlcjpm zD@zGuhKjjTd}0F}wN)K(B=i8+e2(|orRhnn&^Ea zK_7&aTz}-k6|IPkjm;ib&g&B0py$u|&*AV<=yPvTD^Bx$whM0r7#wq7b&asL8PGW} zTVz3GjM>D!S2*lS7 zQP(K{KwaW~U?Qu-Jzu9+?4bgKbj*`V9gnm61lZo)vvy5Kx&hqmS*Rmg;N2t^FuCEp#m-Iz? z=r4tK$f$ua!R{p8#%o z6=dIv=)2yN$uDOIFBor6W+8W+TF=AGYdNjECT^sTmUhDBDc93bfIuwddqV+G(6ZV> zOHQaZe?<(RZLI`HP1->jl#9^;}2t~y|~U3&?>CiXAgK}|(4^HX%g(@!sI}{-ixlQsb8nUrcr^DXf$P1R;iSb3S!Kim_6XSbHwdaspAi|P`t#L!H{Bs8CuK{UQnvL1wgp*GH8zXGWn*-K zj6rs3VSnyT;1C9n2=3xXQFm3r(}A&^@co(yK_)NE$)B+_!a68gP}yX~gW@)=mtcf{ zue8T*{Qam&BoGN@onE4D*AztgQ?!u?fpiCd0P4YmzDPu?udgvF2f>4(9Ei_w5^{yS zpe~xcgl@gaumonja=-15HR#HuxmYcP=9qLp3lRf4s$}#L>BRe~4B0^X%hUKqw)Iu- zOs6TRzC2yB&==HW^@}R%rvpYFM{`zhq?vr>PL-gsJ}HUte2Yj?wyuTuNJxr^tNH}F z2_-7iU#D;+vSm8-zBwj{@Vs{hn!;QDZIU$kFGp?@4+ED@zexFSCzT?+TnLq7=j&W; zVQ>;2!*hDSwdx0VE(c6~iT)xH9Z2iDi<&rYHNj)M^h7#=Q6s5LJ&1C_X-X&akR$dX z{lDJ5?ynC=x=qeZR5SD8uqdLu2V*(WP54zP%w|qZm31*!j%2o#I7WJ_6%j9dtxyA8 z4hf?vz(j!rr(2r%g}6?e8A<99#t(uQ7nhI-ig~UR`WlB4X}UT}SN$=+OGQnmJM|5y zKQZ2W?KUEC@%$MGq0Wc4Fr!Ypy>xYZFW|ar#(z0%sMsj4^&(LbRcosF^+wcCUzbVK z)mHV<)rn%g3FTxumlJVDR3YA71YYV*CTr29C+~0jiZaUs^t{<30h}h)Ku?g=B{A79 zD<(7aJ%4MwhJA*UK6s4^U$uxYgly9$yfEbRf7H2{lPva1ci_`i4p3=SQ|jVB`!jLK z+Pqkqc!ununc}DBu9VzAO&NgOA@SgQ01s7(Zj~-+HDEdxPHZQ8ZcVer{`4Ch1D+1P zSK-Pxc&R2%zc{_dui{mQEOB?-O4a5n8{vwXj3~t~7{S@Ivz|_o04!f@TwIBW-@~!i zeQ}v_##7{IWrQb6bch@_2HS_Y79$?#^0id)krd@XO35gNyilsqwaxYCODFA6l9%KV z1lT289OjYu#m#lLHbW1H!#jBXljzAjZDv9;uUfRuv`bWu#J$%n)Rx`IdS0Y7O;-f$ zE>`7td-c&s8}NZ;3bH$W>XJu0U`TR_Dg?I4dz})pUW9R)rQ1SDeQH54SQ< z#j3#l8^RCDeKUep6)S*1*ETbw286_fK=&||Hi?uL+O`zEXEh7>EdUJe5RjCjs1CHZ zjO267_#=k;0EN5lZ2%^Ele)S8pVk)kCN3#^$Kj$SVC~&Y%Xw4{cyu3;p&pgKJjKN2 zz%xz9jb?#a&J5N|Pr@WQb`)By3vez=VXJoo3 z+MOqmAiN(L+cDiMth67BJF~|(K4Y_Mk2#XK)CqZ}Bg1{^GC<2tlUg#Oa(@7e)a8$f zS{uD0-R5WE_$bh-b9 zsW(6ZUz!Cjqqh#-s(7?)g2nqQ~kq=dD1nqs9_S1piai-j8UvhODPiue9C9`#{|1 z4nIm&2YzKvm^Zmu+E$+YFq@6?kM?(1Va2VabFj4cnRl`K`7cvZQY#el$ft<|;`--t zAl~$G0S2({SICd+aQrTWZNt9I668`K6SezgCgvr2$X0>~_^%z=qS6s547NjDYv+wo ztH@h5<`W(}^_}{n(##F}7_S+p`=5r7i^zy*k@v#ONz9EE+}? zfleAxm@su|gyqA6m0L>?{N%K8+i-Kxcm@9ynzg=>iwoY@XT)sPu`!v09>ndbXGp51 znfp^*rli&9;Nq2h@2XmKp`aZJj)fH%uRz=9*f{OR2T2o1+bXr7B3i6dhNU?GtRiEL zhoD_g{PqvBG*fF64TAqDk?Ptf9`(P_)5803N1t6wI-%pHP+;X~>4bDFu zT4C+P8fwzwmE^Tk7w87k@Cuq$_SvV5et1s z5_9vgQkj9CiRm(Zm^k$wZSozVQ=BTfGh5_ZT1-J3(lB5wR9hUkA7p90Wshx{4UnzC zp~M+`)KG;vO$up0>VHuO6OCyN%7?}*aWLod%Mi+BL`G8S;)B^-G9$2pzHpk2`qVGV z@%*9163@#je(L!ptnGRc*@bQ+Yn|_fM%-g42%zA)j5=qjV<#NdGCDqJBH23cs zejBmLImN8A`00u4#WFi>?#NrG(Vc{zEOAx`58)Ie5X2N|({l9`p!bqMq^y{)L>=_3 zM5FR)F2y!3J$beqCGq#UKphLUWur&yNs!L{&EkWEv$HdBV*yPr>(?V3TIpyG{f)uo z5Gc2n)K7nA2-Q2dpslZn>S=tZo-6O!0-1HSx)@r!3H#N`JQFgQ$Cky6pgCt*8zMK) zVXIJA=LQ|+Ep_II@oZRKs?NjvZhXCmbZaaLTkg(h6}GShs+jARpbz$(=wm+VYDWGX zc_qbC3R~4Zl5^DZk@g7H+(ucB9keQjF`W@PNmK<-% zc%2Q~tDL)7i%k=|Sqt00+g#6=!cS}G0mPMnmHOb|mF?2&1KYm+{qSV0b@~kRRaNP> zf(TTZP4b(zmIv(0XXL}9l=~p*{%dc1@9MH#w3L+8q-hAtzdzOQzo2G%qYt88`q-RX zRZ@EgQ%GN8;ulPR?T`MC(GQ0Wh2a*2w3Y*_P?g!3pPy})-Y#x_KN6Z?s%%0EKwSSr23;(wpx36Juf7(IjXF2GH7Izd;nV&>h}(W zF=b|isDSXTAP0J)Obm%IHKdwS;4s_w2IkSsQTZ?};DGY=+yQ_8MrWV1?{V-*_|W~tYSOS-buYc|J%W&h<>2k4^0savVYC_aIpJam~iwEeyCu`3cr^lP%ItZjiqe z2JlM8s!0CsSK@SzF)P#Q-uIyZRkTZ#qIR=G0S)hHp;}emJ(LL0-lp1+$1iYmaZ<}8Sl7OkXTSEv7)^IZ2U4P?nj0IVRH zn_D2v53?tBt7lY_MeGYQfLHC@Q*0YjLlVwmG&3YB3qol7KZMe0Fz=(_vXjuMRiBn) zp-ZdDN{Up#_huUm*>BlPY1IiFblh5pa5KwifwUg`1t%TWt@8yFo#M_%;-a`B1oo~Zcdih(6=vWw$w1BX` zRZ;M24I2m7PXQeIAR4-tj+~{VGIZ9hrYC8@Z7H6?ZF%E>34?`Z-V2j=s@UMhU2=We zaG_&>xe-Ob$yHGHZb|Lsfjav3`nZDj>5U|dBf&Jgx#Bm)V7I(qR4pQ^<0WVDbU#o{ zDL&*V*&gfQFMVpfSqX!GNfx;6W>ZzbHA`vc_SV1D~;e0+R&*08HQ=1lxYr?*>}T^I=f zxIS8!3M?NZ8pt5%X3QN3{EqrLTkKaDLf(y5bssL~`dC|&s_$zba^J^cA7BB|Ags`^ z?<08`IpZx`eS^wZ&9e7UAnLFu;83T*Q9tXV14J-w_y5e5C!iHUjMNG9~u$K;4xyXV%53L)Sgy`Tfd#k9Kh9 zP37^hfZqGL6J@#IiQ1Kx*Yr(%=EP{GJ;yh=0f^!nEIqBPaE17mtOqw9g4S7C{1ulE zn8>Del6j90(l=)MG5@^BUY%ZpA_;espQx2O0qmX7pcbiDIm_juyfuxan%&`VucF2f;4A;1Gwsyjwx$+3ckvO9sJ zpH^3f3_<`{WC?j-l@D8p(a(0FOgNzBL zGrZ5+h4dQnxLRy^G}EUh5O9gkC#XG~f92ihDYa4@PFX1XPw8JT{(xa>;97HyF67NR zJaVubPhzm0Eu6~O&Dn>vYSccx>>W_cbnBEh`<4Cw7<=oethcuN7m)7mRw+qQI;2Dq z>6UJ#rIGFsZfT^uySqz3y1PTVrO&$E+vj=Dd(Ii>HwI(>wTI{(>$|Rb&H0%qLnSVT z*t8?f9%z%wetKp-)}9WQcb9VW_p>k4j@gyiaV>7RwrVZicchf^R8eNd7!YC?ryxVc z9-9i4+Y`j_x^IjR&G^SAi%Kw+PfJL&`8SU3V5dyB4SYCW6^ZpPn)hG}yaXk`3u9u# zx0)=4npa2EXU+9^H}xxZ{llql7K^en?>nDfo*8+3TBtMDD|Rxa{=`+%cZxdEZ~c|N z9utFqysb)B(^YypZ<5_7#Z6CCD8Vk@N((7nD8-ti9jjl7ksw}pYy4sJpmsATM6Owb z#CONmB6gT_l2NfPicxLDB|K$I?8Plm+Gs>V60%KOORpIfvzI{tt?TXU!|i-B`u-zY7qSq5Oq%*4SK>7cMTwd-8U=q zDqk)SvR=LTG|u3Ab<}}%JS>K_0zO_f$I?Oi=9lA&vVQP%!FphYgifK9=9%V#pVkf< z`jCE4wcK~vp6mCW22i=jEfRte^hpP5s0--Zy!Er#IDe~G zz$4#M5{F-ZG>jK*01>}Ld|7HbhUucy^xPh{*nElDNFh=ldx~i#|I>F|;){Fy#^Y03 z&9O3+t|IJ@L6qYqN{EiG7kJ6H#+WW##X-M}q*jkhJUU(;%B01Pws>fCo)URz>VCZh zAP@%Tq9HTy;EDd#Ncxs;$HUvNn2$8lGzkWY+=_RD1rs=r?;ov|nJLoMYt1HKYFTne zD4g@rWzoquE;~!XF-_zJ4yD{7D)!ua6K-)CQs%d87Io3fy82P@9QTd{YZ_DXA~ok zJHAxNHQ6XXp*ucRY}bAqRiuGPC3qn`aQ(R%cV*UZDp1enX@7KU0G8~!hFx789K|fw zC%^HCAHU_QuJ#Kgw)wo6CXt>>8S5YAeqg9|6yRTP-TM!*9=4Z zs;plVseQ<_J!GkXqdpCG>e$qQwMC39)=JD}2G`n#68^@4962<>o)4W}Os45dXnkWn zsTZ?vQb7Io66(Ysuyx-2Gm?nf?6PspI+9*IUJj!jY2ecB6phDw@hjm2*R`o^f&DOQ z%1b?B6t!wI->zmP_`NB8s`{2~xre$n9S&t7=H_*PD!>**-{JhMkOb0g=qPqPy*V9en$Rl7LPV(9;gh8}P7{C80C-Y~rum&LK(j30MAE1O#shD>j75_Y1 zH4=nHT8opbapfa4r0P00)e?NW-w6|drnEjRh?@P#I7xR*l6?X`(rwNpNAt;s*y zQ}T}U<}JQ3|IzsiVYlo<5D$WUxhqPTNmt^_SJ-MbhIsie3kOVgW6iUhJ*Jcgf)u7A3pJZJOEWDdh%aMXSYpf5Y>$YExR|xzx(ZI-6G#wWI zzCiC}cTApG4|v7I zMnW1ht~l0zu=_ImuceIqxs5M#CdLj>AZoc5zl`;Cw{+4!j<-K|qe|Iv*F{z6Oq(lh ztv5(}35n5SEt>XaUf@M|Ca8WVy+rTMqSlt>M-NwYp?*E$O;}c&7ISX{35TS))HZg)6q(xeiC+y~7o318xlE6Z z#G@3_8q1;6+Q`@>2o~inE(YJENLKuY%}&!@6fq~phlfSKKzIlSCLf9$R_#11bNn^E zYctFzt^(s1$6p@lMtV}Y6rF@>VZDoz@k7KveO`00c4clq-{iN|d1xSvZjP+w!q58TV?Nt3o(u6z5Ybbr?Ry2fR)35zt3rlf>IL;z;+IC;KOAk*?|jIRf=8A!FUmko_~;*aICR3;JtvbwF?ziv!LN zpJ}U|!IKe5D*3OxH@d`h@0bg<8e%pEB(WJ_Y&yJFXJPaKg`v9}AIwJj+wwGX!#8I~ zD;?-GtbtMDSneMh-a8vxh{o0{!}K4n3>1=&GpPpC_$lh$TcHqAK^EAV?YBcU)9~U3aKbTRL z&V~BwPQ-kj_;Dw zI(OAC%Z`WkbI0-#Piz_IZ4S(0%@r0uevq#cLEM$_q}19v`{++|d9l`$6c^#iJ~z21 z-Zc5L%=nn@r7E|r;nk@dj&KMci<$1uP=Q>U28llxckWL{av{Hm^#9guS6< z#_ym$`)ByIn3523j46X@J@(d@TP6(>er8;|3OYd={RT4k2X?$Gb`4HDt96lS!39KC z;!`2BM>p+qgY6wZQEu}g45_gd*9WJN*Q9cd_W(Hyr9?s%8lK00B+0f%p*m*Ve2&qC z`D)}2*CC;6;X~;SrC9uTJwi2v?^=g_)TAjG-G40F{{xTLA*8boY14k(3JNecly?xKH%_?d2xHT$#l=E53ggr%Ias z&y&5==SFO}s!U`xcQ>EL`Ev-tu-9>#t+lHdl_ytZ&hW8;Nvtk%flBzn4^G!pRHDla)aPzBQ;7d;YeCVZ$QCkor{sM_Ve)%3mEy|kBO;4i=tbfNgfUDDlLqPpaV z%`N1?Yw3FNJozC_=+J60(aXZjQSVx^qRl~Dcn=vd^gS{$>rAngEk5pMxgsykciYix zkLY5phLfw+t`M8eKU-_j`SU+Es1Bi!kHXqy9}<#)iLH=ii{(>FPef0j-lTyDtYm-@ znq+{DAx*M@eN|B(1)p79J5fn{MwP9^P zWk>6tKqi>bqqlAG*{Mc$yLVukDudBv(~&Ug5y-x^|BR-wm|WkqhCz9ooO`XH{qc+| zU#>ua55v4DB3Tv{#jX3d>s7PqeXF=^VWR+Bj|sO!7~6%toTxle6hox{L(}bJ8QOUx z4vwcNp?u@7L%Wra5AN1HscCU9elfwLPpGau49r{s_!-S&)`4JZ_0duk@ z=8a3)Ryfl7?KObR$m~dEl^)#) zTbJ*=sKt;{X87@K+-fl%=WXZnW*t8XXV=eLi$L9L3mYF-as@Uc9=tziikJLH6^_6y zE^Vb@m#>VX$GIs8Mc0t#9EoQcO_p2iduDSoA#T;&9n=O(RdQq%5WV%xs^QGxDVYSG zcaUbJ$qG&WP*-X?e?|4AH`USr<*6MRj#aiP!8ih@Sm$%{&_Kl{?yl!z4;=Pnvo(SGg=QdELaAZOWGqu* zy9-~$k5=xaK9vX~UBj_Dd>JT4B!-Npu}_9(<>HD!qCu=x?r5-kF;ijE;jcJ?2Yu`R z{XU!{=%lI%rUK@X2&Ghb2U9bL`^nyaUTRb)`rLS$~=V zebuaS-mbBr865k9kZI%+lj$^9Q`!8;bdKcYjMx8IV!%;&uco!&L;m<{e?m5Dln>9K z5QyJSI#`oGwhD6u^9Q^F^eC(fFRCPCz9k=cE0(ZJMOnA)JFE@>M)Tjlqc8DU?CPk; zbV@ZIaF&q~HSr_1ca6ANR1 zmG}3pc3|x;uZFzKh|?XN0a8^u4>4FlAYzgSa>D-o4PXb!Df{&gqj46Ec`?lobD@l@ zRiDY0H6(wNJ>)yJG}f%#l`A2^kp1d~-@(GW^w*){0{6cO4NY!v0C|hE%-xNZwXu|0 zuqxOG+J*qFNb>66@U94?XGONGAv-?DC%}zR^rBT$%oz)PPBO7_@nl))-~A`{_5fbS zy+S24Fwn_aiLDV`!DKkuc?i7soeGF7``*T1IBlC$;6iT}@ygiPz9N6oV;o^xDiTg_h_wN=Od0PlL##jjwdR)n_0OyUPa&*6xmJCv9;Wy2%HI-dsI}PO}BcamxKV6$KN$G+ri#f?IsBDc#a2;^Zpp8CY#q_&J_#P*} z!{lz!tfRSW=xN&+D_*=y*jDLd4AS$8b zPQ1!XAbX^NQjtavP>-VvEPl11MEnS>ZPs>jQo4bV3D5uM=5f2*+Z{?4?b#SD8Z);q zGZJT8lpH{b{R_T9X|n-z6Dp597`Vy2oVE4U+t8zokRpA|kx!EE__H*y`4Cp=i6c9*7B}a(+}_n>|Si29;1EC4*wNbek^< zo?N-%+j-DgKP=~(P7PhXfXa=W)_cq5D`P`L!)4(1YVQof8)B?JzRAgT zY8F40adYFPRJ}OV_es``qkSs{{4t#iLGgR?^x{aO3HZ;U3ohWBeOI>K@^Hs?gFKe`7EjZriy#ifMZt>r z14Gzc3T`Ze6tv|5zlji3KgfrAYAfKQC<%Yk{zA-0EQeg4Jy|oSiz!O zci|gFeYH2fYif(Gr|(g5KsC~7kK7gy_A$LBdg{_>dWL3b47!EaIvi8{l@?MZf&_?Ek>-UwUdahq)o z4PzBN-+5E81@NbRi%Ud>W5G?y2dbX1|2>epN0u`sY9-4d2HAeEcXrlj7S_HbY4FIu0}ZMS=Dp#qmfKu^Y{Wlum1hH+(ru(4rZrzKEo0cvP25^-wc*UA^5y|>~A2XWg@S~=RJ_G>s>9W)RlSBFY_9|Di z0>{I6^F0Mp?pnTtaE8Q|I|KSN_mr^4L}uoMn@7JuXF5WOvYrmFdO)~6J6`y7<1;eH zrh4p==llH+=|fpH>2DjfZ}*_!!B?$FaO{TH(C!21Q}3JMp@s(vOz#w>{LxIHvIt>^ zUeJFNte{aLyf1xX{R3{xShKQ6uvYJL1A?Gr>W~iX?=P~y#6e4V$ps+wVIMAgGPJEL z*knd?O>n`VNdw!96x;8$Ziw{xbK#1;jQhyx37nrhj&`#vFaBAl0z1C!M(b)w(TUpX zF<7(a^z_`{-H6>)94vV}U?6lHkH6IM7b&yg6HJ6!O*V7+oQ|jkEBCJFfC2pmaK{jD z9yJaA@`gEUS76&Z%MFGL6Cs$D<1J%I&vRA~7^5W?YZKKrt$d6u@4_j6mI>2Yx)h&w zh}#4cf*M@7S)9a-Gq-*8#*KMiIQ5Az#1?>^j>L{$iIm7W7jNSb(58l!$>m6q9<*eC zx3Su4CjaVwiG|7vNXFU9h$FIdV#5FwCdi z{Q3!$kJ-xSC90r@&Vu5x#63^866x8+RFOy8H+SwXvgZID1Df6p8~6`uAA!K+rqlIg<(LZ79T%Ym-{dn`JJ5Ekw$V|?{%@weaNJU>xdfjF*SbCiDvuUQ zKhLyqK{nDbqn10*4kT%go2*#vcK*XgpZ}chGHMYT-8$jX7nf)}>9cfd(tQ5(Br{zs0JpD# z5y=Y%)ekp(n<8r&tyC&k#^&wDw{)jWhx0YGhCZSWtyz56Iz>1F!D9TgSI|8R#!#qS zEi`4&?~?xjccaL~=xYz^z=o8FsU4}%1L*I;qmsreBxs7@tWcq@juHE>%{Yzh3VFlu}3^LLh9G{QoJEqDQ>iLWuYYAg7(3y+%B%55K#rtFOoYq1YdVg+6ruio0 zN@dyrA|vzO+*SxrOb?YuV$e_JK?dz-X+77^dwh5L%zX5}y${4~`VN}X^gTWiiTK}w z`z3lR^;DR)IkC}XUF7Oa zo$<7efG_D=$NKHVFd_bs7y`a2k^vkHDO6 zQiza!xdgc(m(Z*OLWX$mV)EyMsxN`pWpPaDnuV*5JEZQXAQE5G< zKYP&h6HlGbt|5e7Y6A|HR&|)&P_)71wi21%h>vGa#4uWS`!>5+3l3eb1gmh$?)^+L z%uVUENeXJ`*H<{7KqzvarnFZ6*JlRi;4}e{#L)8uWwhciT)}MMdi?ceC74Y0fOVAz z;70$M&BjQAexvL4zkwgBzpBUBMST2AcvBE^@oO~fE#X~H(LP>FbqTo9hi^RhePZ#% zG+0r??zt#p6~jiwk597pa#L0Lt^$|ae4Qmd#RfwA-8rvZzll$v5i+;twS$UtH5u%| z4QbK8zYKKN3>f$$Bfh`$liapd^ccB(@7DD>6DR?k>HY4G;$QB1(CuIB_tcxw4E#vw zi!Vc-L_fQ*`NkSznx!>s$FH{fRGk)-vd^e4@BNSY6`sc7F3a?s>ODA;$h%vmu~^3L zLL_uPM3mkz<01co%fazCJ-@h$Jb7Y!$=pDaw`yorsb9GOt!XK{!<(ukxfUO|A_6jSw=t zK51dE!{uDY!;$b?Dpngl27ZC9HZ{k!OoasuMjEX}txw&xnGiHF56bR!328HY$Q_c-DcQ+!zzS;M2IRwVxF_$E{NivdjB``NK3C9ra&vF^gx;@}PI&}A_I3-_JU;#ZOH-G- zwe8rYxfT@X@~=~wI-DAq+AZAWx-S~Nk!A~t1cp>FG~gGDg3E3coQkL@oD7nJg2M8- zi_NFMX+KeHk^h~ct`r4ONw?GH1dA8uR{K4Cl!9J?7Yhh8vE=Hnq+Z*L`LgcP16^9LQ1=W@P27v;M^X~LVE`aABgFUZZwG&D|}Ut-N8*HO{7<> z%XF$xofDj7b9?~zUYY@nfvyL3eD)qOqre{DnE*(=lpx#8iYkg7h243W)v=PAnY|rzsDeAOaJhi2GLq`rRx~4*ewlLv8r(zwKs}YjjPCLH3B7 ze$%VlN`B*(YsJgq!c89fFFC9IX`^!-(xS8n0Uoex}<~s@L&b6Gc7d-fm|k18FrB_sq0}8eR|RB>11r zCi1%urGa7d9gZjtkLKv;Xf2tZUS}b=A|5#b0VEX|ME?8bqZ#}YV7S3}q<4mA8^&zm zIc-?(cx;+)f|-zn&{Ua|auuqn>SCiNd1-OBF>a3`!Jc}fwC%t%Cs_VT)B5Q}k*06a z82t%flRMft)*iZ$;es-1aEJp z!^I{Jqdxq#IzjyMIQlnF8#doH4Q+8Iw}AQuXu~c@D3Rp%HwR!*g@FhsnI4o|4iar^ ztzM6)VFZg56ct6xub)}Mi?~f)X(@?5YeE84PF3cWQ26DcQc|>c@C9Iuonir@;&Uihs_(=<1wUb`lG#xoUBl!rhp(d< zrnbq&#Q?}p^lfTr>>4-@{luHB)3%i3EEnqK&9A}!9%MVhMEw|ke&-D60nSHH7|kId zYEh!`GRvon_jdSQ76Io|FEIpnbPrd(;tp_xIV|USHaF{6{K-lI90XdiGhhIS2Sg$` z*XT1tw^yfE(lgmGD#-9&O9aZ>p~~~%rF~i+m+kSI0XJpzU$M`-HMjEL47&79SpeZ@ z+-uEecK$X++hwwD7&-3~vwEISr*6!C+~H2Wc_QLwcsx>Em%CS!t1TnO43y2D4CMk9 ziDbzi(cg%1%h87l1~yJd_Od0doz^~$t*tH#J&9rpc?0barj3}}$Mky`QCtIG08Y_c z(RS@P@I+XJN=QS%Bm2Ir_wZ72Kw%YIun3$S@OWdK&xp}K?*p~2;|u6D=Ij~HeouCh z(O5=YU1j(KcX5guKfd=u4;+;eLp;y=#Qc->X?{%I~|tG%8I+V3+5t zS~kw(Uz#1QN6OMZ_ijBTIenib17*|S@+JX8q|Bqg_YwAUBKp9K{PIj&ZwcR%xlB** zw1;i?d4XT`4%b+_rZ>jGnNZIHLchtQzTq7ry$7`Ye0H8vC1=fHCm5Vt15MSqhJc^9O1TPVve z8H1x8osuHU#=LDpF2*CE;QWb%MitbY@+ji?axXePezI7ei1_!7*5$*vs@gW(@&uH4mwc1!N9K6>`Qx4AGQ!ox?!iS5uR5zoA zhh@cMGI6^wBjrQJshX<_pxD;nCxp3LKu@ zmk&?bOkLE<)RYB;Ey^)c=%<;(LbUm8-p$I?x;4wpyMKzj>d_o0aivfRrRW%L?@MAt zr^(Yqi25{)i=@gXmL=mBu2IJ~>2XJiiqiBg>XJb0Qi*|543R)Ota!5L4QdOBk@%Ar zgC2MM2$S_~5|B-7YG_x=Q$RpLK}oX~^1qxY)=F?-M#uyQL*8K28_YJhA5A&Z9Z8i)Bb`=*zEl47D@h)J6GdA+IYf}0xmj-dJNrdSO2VCEC0 zeGcMizO%Naln12djF~`x5>8{^&&DIqcEQ%e$D21_iNk?d31$4dq8a!~4|_JiT)PU< zd2Mley7|o+85{fi(rs3a>ZQ9n3@By-SixEM=n%?~y$3V^xB{LN*;7fl?b9vAR%j`H zDYD4|yz3<06c_~L20Reezd9@Qv#y~tLK{Jt;Dj-T6DZk&Lz^q{jCj9L-d1DiSY)jd zu(883d&J?44Yk4DRfN!1G<)?mbDE!v0y{iAC*f$`E}rn*wh)CzqxamRPzWArinesE zgf7gaEM>^o3%6n2?KjlKtt;=%zQt)HGDd%*HoHM&_Si*Pr=0eABXHFEhFrka0cjvUKXFWz`@g-T!p*L6@(^lpRT2VjKt)ewe-bKGMP7!G5Vr*p0uVcRO zdj-?5`MxW8Dd%yO6icR3v7aX!Rlrn{_+pxLqMw{^2m&yMD?s}+|NewAJO>>&NipAE zC6j5Z)>D>&SeB@r+X5BJw3E`+-zwF#xo%30H+J6k25=V*#C*(dH$Us2n4%9eDX2#V z?_?gMbgS8Y!P@;!a^NiM6^U;9bRthNfF=N;m0Z57z~sutaF;KJ^FQ}ja5Q`S->0t# z0_;Z4F3H=uN0S#Zm9m)qVS$rc*m_foi*JK?R@cIfFvs;W#=mQ;yOaxwrEx}cbCQoJ zU1?swapendP=UvQuoSp03_@s^!L~>GUK>;oOm{q4LwDoCmu)(`$14 zAC^p8mp-bz$QOAOcefV~6fb~ftS73u$AQqI*C;fdGx(sxB0FvLTG3S$ZC@~N!046 zPoSKWum!hWW}Cn39C#Yt;MaVR=&qgKf-VM5rD6Q+fqB)=MVz3!Y4Nr1&XtucVO{v$ zv}<3V&+sD|pi85vFxRu*s&u`_ig3aZ>5JccR_^AJwnqd#B`F~Rw3DC?R5uHpI%n;( zAQ}lM17QFXFwFn#zsRT&8jfwYKu|0ebdOh}g*H?6lq9w%BCg*g(4af>jT~0Qexiog zTDblDDNas*g(-u#rK}MLigT*e8ca&Lo?I4SryHQ>3+}i6)W{}Nba3E_z9CEr(CaGU zXyEid8|QO5V{jGH*`|cpi2YS2-dNbEPd8aZ=M9l9cO+yXpFvh)$IzJInY5+Q@ukJoO8KAY#Z`D{ z5DXla@LvEk4oxu!?08>;xfUAY0$8$@C;vh)07j4fj94)zEzWR4C$M;{`iG;@FaC>b zS-CmRh_;SOt4-mWM1F&zaHIN!I&@j)5AwkXF2mK9AK8<4g08E$V~QFQ#s-DnJ-O)u zlkDnh2sj^YYy)}zj;`Kvx7Y8^E|OHB*SSyL{wKzVbltYQRT9T&zeJ~zcDJ`m6UEr# zCRjqdK6dJohA2Y6;Z9B3nORx#oeF6IY3*PB`$2?42C`ee%g-~TSwOQeIbCE>;$IA2P zlhQV>>aAfd+WM=|aGOKp6znCoTq&#WGxibw=ylpX$&dR#5?3%8tFS#2M22+PqQ>|g zmxb-TB`9@LbGCcXZGhYB&`)t=vaTNEdW!M*nF_~&MK6DFRh{JVheA`uuGaQNC%nV-DM|> zJ~+;c9|0D*&)ClT)sO#ZWNmh@X@$h5pVKa?aqHCRE$GsmQKg?#U2JiZM@s)I^I0V# z>4W#0^fNKyPaz&Tu?SUwR&lkMBtI%l%2wwcqoY?qYmku= zY0Lw6iZ1fCTl^d#67d{1o|YQ)U>0gr1@rgSX|jrke3C3{#}o-{`BTOE=LAn(k~9D- z$afE3AB6#ZCC2xFIi~FuR-oi=XW)0V5I~)mEu1-gRF7}E^wC5IHq?5Ys+H`EBlTk% z*k)bqAFT9)Z0e+N!(iF#pY9Gq@6(kZ@xXHTD}9P}rNHNg9ZD!ac9EZ4d;KILGV*w@VhE@Q#mmRdHwQj*``z!k7dm$VBaPB= z!JY^@V0k-%w9#kywsmVmHdSN-ULiLxOI>a8Y@XB?t0E zlw2`Yup0P(d$^ZeeSkqLSO$PNI`L!$WrKxY_5*&YDi- z6Er{Ee+iEHG?2D+)()^4(3+n`w@WQ@9&75T+=NSfn(&Z)FunPKu=^>0M0j``yLf`{ z5;IM4-6rYYQVSKd!`XB{&Sw`|d-hr*l6>WV`K4t(*#MU*X|oh;J&% zyB~a%32*uT?R7LVrD@8glSvHZ3}?I8=dJ#RrIZ_NJ39J}3SD=#O&T9JSPfKL1dQ!u z(vN}Z#1}w7C_XfRPP^}LLqV&TH^-X^R{miFieM~eq0^ZXB^1>s>M8-RQj2tNacXMj z!SQ$8o;XuCAbQC8`m&-b=}i`@`{=k|A)p?xPXP&KIP5ciiKzK}Esjb&x7FZ{6b#y> z$WT#x?uy>AOc6o<+rRcIub$u%G>(9>syrZ{TW0;mzEN2AaH70Wf zB=tS= zb!#EMpL(Iq|0nJ!B!LRMc5%2;W-rBr7|q&aOGMsl?Q9LluE`2?1j%-GkURHJPc7xG zW(0hK_9IOnU|cZWe(wj?%p{lKP9$^ucK^AluZs!@;I4n~GT~DtvNe_`?*~OjLFwJC z_b9}OZ)FRRhYR-da+38eivW#rn6uD+carBP5XP6ONXBJKR@iMeNx#D0yYG$X;pzYT zBnYg4GRb83L;(m^RYLRHl$2AMJM`)8P|ubzMLLEtK)It!4C69-81j2+qA9mBldw?*jV1qA2d^XXhsES(R17$o>K?6cXCp_TLPd zP=5l=5bMDk9xy2TQ|BA*t{hk3vrF>Ft-ArKm?A z+=V!|w0$^{(U?WE7TbgwuIXIKlG`1^GOQ@KZ}^t2Z7k^X4$ANKpkk+!O%vTO-FJ3ojfW3ocM*Q|dCLwA^p!U{s zv5yaqtT>~+&yMrDinLjZ@N_TSYPD2bdx|eHDJerj$gMY|>^4nIdS$^+ z2ht@%)bR21qSz&{o*_7jDJ>eJm!V(wACeMNzHOiZT5`Akz$Lmwswyfsznt^*ZweZ| zuQ3uqEje1rm6S!C-x9WZj!d?azr`xEuio|kh7*}T0xMKL|LGnIgMQ919#GTLXj9gC(~smdG4LJPt4CiIs+;AwM28NV@=@Nv8U%`mmhbfK?kL>a z4Q)8ty`pE?e3|S2u;74m2)XH@wkuFQSL;!BDVrk#b zvai72V23vwo~a;!NDvol;7qhYb|n!mF3pE$77~`wb?1#v<@f%!Au<(1AYY_UiYr(= z%=_+#5>|;~&k+71)Pv6{Hji%Bi{=pdlPFuELz#(pitPJj}&r z?kRq@^^ga!(H=i@cHio6sTj~~M8mJnwp>2H29;0mu_|-aBq}Y{2!~vMBfV~^z-J+g z63H>%KqD7>(ii=v8-vOf5}U))S%*VeVwGG{rCWv+ePK^`BwLh~I!Xm` zYNwr^C7X`vLwWTeRk2xX8FU(Sn{)mp-N|1+t@$VdJFAl7%UkpgW!uPv+1g)HB*@L9 zu2{naKsJvB_?JR1x0nOC+Z}&hhVongY*1vkY-6gTL+KXYbG-N%LQ=rR2r2%-6OjNx zy0-U>-eMJs?cp|Il^`aV{7D{!;C%FYFj8V@QZA6TqjkZOTkMCyzdA)=!#%FYUC+m9 zlaag5XO--xn9}sCT6V==iuwdQaJZ?#8?pxvg5k zz98@I_$txBs2$Cggj_Nt%duJUku2P8JRoQB0S|?eXqSp75#knb;+*^=gN{u&RZ6IF z(bJ~Icmu4Pzl9L=#dwRV(mz%EsnvX0YcO5SjfC(j{L@sLxhv>`IS?vgVTzV&+q?_l z`1oU~HeJi$%v=fYX(X;3pG1hKWK?aXHK!kixv(`nfmG&Eqk;?RX37G^P(WFkjMikEl| zncgoYhR|5HL$7Y-zLnX_oYItDUWAu^NB*0Rr64wq-yJpFPhn;7@3WmNS>Z3ic~~?h z?J&;b5%9!(95K3$DSZ|DQedQ7Hq@D-K{Dnbs!M3Daqi8%kxY9IlEt&&EBltt5{UH- zgF|4qkgzyd0eVrYt*m~o+t$jJLVtMk%a)$)h0s2uxZdkW@Q*YMfBZO2s&(UmS$H|L z63Fh4{QLI7gN%~6`Ld4ygi))MMTWFE?weeh9-uNWRU@T3 z!8>WnSRcSR3V%hp$P-4}*f1Jkq+iO}M9*}ZpS1q$qDX)p{4>!LCpDm8mf5$VIsfpn zwmR_S(B~p{aPQ_^F-!fMMjgwxR~<10K#scWh?fyy{PQL33Iep_`6gQ|bn=88&BbeS6l z55dF2GV>?0oJy8d=hgO1R>^b4Y%jyKy{uZv6{ofK5hmE%Ks`CK7fo{prdAf|P2 zz`T=;;Pu-E9TsgL5)Ug8UKdRXjQ^Zfk%kTzz2J+En}xI(+HYmaB}$O>P@saC#Ay0Nj61; z&Q@D#r3g+Ho^i>)&=jgKYSWhM1)e5Cz< zGD~t%yyf6&3ij<#w%Q*!&l~pD5D&1Mt^HyYhx=4Y7p(Hnw~b;?Ix2m z-#$}Bk>8S2(x^DcCM=xA`cmmQTARYP94u4?o^{IP1ARR$LRwzz4Or`XKbCHe=2^Dn zPMxnp2=-3TZ)P);G~n7@Z`FvThia2=?OWj!M2IswbI))okR4v+1V;v-$ zg+03x97OR-Kd_w~lz1#p6kO|$28M(?KS9#&_s2>Z{NQE6x)W9+soB0u*5eKt+AI?9 z|3tvPGTGL6Iaj~mJCNP#qngdy8cF2XQS&%}dTO`h17|ETjR)1h6<*DmX;x=(eedPf z$l(&+(RQoMwq^-wJ2Y|n+pI_EK%d89kg7KA9h&BBH4diX)@u0MmhB-jcr1_eXWdIK zG?aT&II{1*qe(F6P&*bvZ@kCdWLBOqQ0x9)#r#iuP^cRS7>Hd-#%ur1aM;7ExVIX1 zt8O_$r1DnG8gb7f8aswP25yAhiqEOUYDO-8p2=SXZO$MfEC+rf`pn4{kwk{~!jI0@ zv;L^L*g$$ZLxO=YfVDGY&Xbn-@S|ou<*pK-#;?^t8(%*nKPa-zg`E2@RdcM$-N7Ho>o`qx-tmJMHH$~aR;~Sj7A=ku? zQr}b*K?Fad9}^n9mGgc-KSno$pP)ccPA&KYnrh)LXJZpkERB#AvcWcy=XIO@lHOY*g20!OG4=}X*qEbM6>li9 z4I=Q%3$;~^nX~K#3fDp>+~-gKp(VV6tN>-h-;X(1t*jJmc{eA6G5$FP{{?d`=uls1 zq3utw=SbKX{0YIK63Q~>Xq~VLie%`pE(XmCzY~CdasU2&`88x9M3a5qSM}O!!g#{1)0SEl(~b&)+>`_ z;`3PANsn7VnVp!&5?#ph6@fI=eQl3ju;Xi>byR$t37HjKN}DB#BF5l1{h+$Rj&raJm+y;nV479soi^> zD9F*~j>iAlcKnZQ*Z(06*{_r+1{Yu(ZX_XyrS@i&q}(#EsXYUga^=$09Ha69o)3_h zy#dPZYT99cBpnx}BJuxX?JL8&YQHWOP^3GhMM|WR2Bk|0>28$n4(aahR!UO3ySrPu zn;#u>!}I*#cV@1+=9&+4KJblme&;@S?7jBdYX$t12tNJYelL`)qU#|Q^!3O{iiR1_ z*}H^)dW&!PjzkOilb`0AUeP*5yb0}D9Dq^pZ2qIwk-6JyEg0vxw^b$~oyrp}-3suino2^b&=r|6BopzLtdzee112!|r(AddR1< zRk{N#EMFn6^WuZ@dqBbKx+Z;WyM0$wO~x{5!8JSeDjX(=)~k}L%itJXkPo%`Tj4&CCap83;m03 z{Mvi(EGGFqDACkwqnlg2-1H2twe%Ni)v|MHqP67kUocv(2=2{RAlzIWb^$6$5FwY{ z-$di07GP;0fB#z%_h2eZBrJTmLl^i8l{g&hxSaG*vRkda0-E$rPS%kBwL$K922k{< z2;P#Dld!U40Y9;Jz)%kc0A~i^EOmExr+-cx@&gQ=s7+G9qvZF2ntBA|iKhWPiV1ko zh!wi-3fx2}68`7=b6=+)T|JHg@bYN+6Q^bc=i`g^Mz~}NWH*%rzY4zU2j$;9Pz z`SS0~Sor`%7)_^+e|K}?N8;T?4EU*;(*@6)!gh#+q~1cEI%E7-AE>k%%b~+_GxrVa z+tp(f>AipFVdUO|hP!2Fc2m3N!!qj-D|gsbkq>gx-q~~0@qS+O$&bjhoDJDJa9bO@W14v3&B?E@G5vUlcl}a33D$lbGh{P$+5Ja}v_RP@kCqW2AqxZYkeQ(8YPw7xq48?tH7(F$1d^^4piWUI&EuqQx>%0~dL1*Q zb5eb-Gtx0P!2fKPgO1KTM%ZZs0Mv5>B~X$f)>i>gn7gCGO^ zpaN}rnS)%ZhRTPPsN?Sd2k{cXV~>`*EZ>Ho{Rd5cs|U!#V6cEVx3lOn1Wf-DS)lEB ze_N>8l*&ihdvn-7G__$N=z!gIkE-qtM?~41LrJ2*WW@3@EXY@PKkbz4R=&{xKl`oo z-CI-{_mS(c;#X(H@!Gz#ZuOB30`}iFYM6=x5WvE-td`;pK5&{_h$S`20gVIM!xG2_+ zDCw5~9n2g#cg(|9V0;jgszQLE^$P0|bPmcVxx8}&%E&QG-`{~k^rPoTlj`y&q9PCU zF**5aK9^=Y@MItTnz!4$i~9e~2Oz^VtIWYNyXKwl*zERGKc^siT__QUH{63OOabq8Th7DSf36PEea=n)lr7f_W}{rt589e>sHsgwIE;;@$KO>+^FzgE($<* zK|la|Vo+OV!NJUWe-!c_uGxl|?k;)DS|Dfay#GC+Z6<@RB}||^{9N`yP0c3yLr}#3u`|mn64}V2X#C z7Y{)hV6sTP&rp0zM^p<)hFOy3O22n913k~&(N%%;bDVN${fc1al57l({s>qD*-jwf zM6ZpvlTBvz zNl6nO#z(5a`3HxCGAcJZ?6HCO(ywk_y%g$GY2b|OLVH7#-@aG346*t?T%=9|ICB~8 zKM4YrBBV7GG2Mhi33}9I%MFKwi!~aCYpe~as0{Kfc$^Y*T|Q#wjTd=h`p7lX`eM_J z1Pw)(2$~lH&$in`_lGuc{Ft6fZV!cvU}qM82i3(pdb+wjrbnyWvuoL&P3lj7dtr6xB9aM zV!062MB3k=$olDS=WWRKp$pK@zh4X+ga0?qWq`zx1hEE78*{6KjU9ykC1a;ISchcx_An7V}^zZ2Bz%G|Md}%3T;GJaT$%Dd1c^7s-Y@+zXRcWtW>cya) zLJ@Z$+v0RU?EA0FR?ju){rlG26*c$UZm*Q7U?l(EcfSc6&JqmZIqQx8V2Upg673+^ zLKA%Awt`?4fc|!CJNtRt)i|@0Hv=)Y2Y#0eHd1^YO+SdP;E`}AUmfKn!YxxurS>z@ zQ1Lr*$T09tnK#{a9zzZml9n}}ovJZb#m)W>r-!I0J;UgIH;4HAtIq2Vrrr3xF4HiQ z>|ei_Tk2+&eh_&h`(@?6kZCKBcKmqaT+}H${ozbWj;|c8p$BkJbDx&OQ_z`% zKV9zx2TV?0l!?MXeZodMS`QAPO4tEpkl7eQd32}L-JuxLDWKpW^$k`L{)+PTf4)OX zg#S?DQHqeW()#X)!q>Fk_X2OWNa0TJV5ivQKF<-HOov~E2eBK7=vJmV@u5Z;N^nxNG)<+kvx@3!@|z=)JL%O8si zGeM4uwCzDoiNuF>-BsWFlnO0qQP=hQEaRD>ui{24k;SjhR!ORv97bih3Q*r^WRnpFt@z4DR+cCHDnIX5kAb683Jj2O7|+a2tPw_P{oJoz*TS)zAZS-Q%kD80kiG(HKO7B{0KLgFpFKf5L2k zn^{If;-Q`3kx^H`x9EI*rn;G$nv+-gdhIIZtD#eE!LC9~3jxugGlC{7+2i$nL+pjD z(N9OR@S)~Lg{vS}&CPe`zfu$QPf6LNDSyUM?%Z~5i11IK+|*k+KmU@Ri(IOvI{woF z;w@8TWbL)zjNW6@6?<3YQdC=n$fiE@(?#eRCn6rxnz>!L!(^XD|FFer94a%0crDH! zxj0W7@^uH)Y8z-q(eDI9r~R6^1L*u1l078X9YHv6a)FM*wpjr*QcoJ?b}N@O5&^q( z?7i>hmrA{AXOlSPS^|;qRYxjnW8amo#i^`MF~Ekb=3>$zKUZ|! z$RpL<_Ru!coW3)S*EdgGXq}96_n)!XNkEk_pa8-r)_@vI3A}vKmCHT=S$smB76(8H zM|&I(yFDdGCcQ>fG;sNJYr;o9%iBz2nAUHy*>HqH~fgpdsQXun1 z3=8|J z+kAqMAi3A#1@YtL5{%xx%|X4A+6tv*{nIC(B3(rHQ?`kPb$CH>iIuE2R)sHN*p_)* zYKM~4K#HHHTr7M7m}oibXipWXua8^<9*l_ibp>2?Fd+R*&AQHzNa^Ot8wghmu)AOWJJ2sXV5Kr zNK>nC1YBPCc%K{01X;;R=j?X9E=p?vJe%c)i$wu_{ha=WKtVEewLHqDoTWKHXO$h5 zVx^^_X}u5j-^z~q!Vdu4Qg@Qa=VwA~(l4K;y>xJ9d@X@v4Ge5+6pI=xwCjGKS(->B zO7DM{sc0OP+5Mnifn5G7@7hjS;T$m9k~MTLfpm$0Oo}o#nq_mQdYakN*R@mEg=)*y zHMrjhICSl%RSUj%FCQl%+6;p@J;I+R0oR|K#@n|YFIDW;labPyHu)@V3AS!UHl?(= z%F_Asv&H++&nrw)@n?y=K4L2H=UBltaF>K$AJgvk1sA%IlF__>&)OHF|K0Kj?bidq zDRg4K*+Y5M?xs~Lc?R;|uEvn3X>$_Z=n32|L|ZbcjsS3%-LNAm!LsOO$I6{6*V;9 z$GlqhW<_qs28LB)`=ytL^4;)jMs(zecnH+LToE~i)S-`fCF*KUg2o-2tzlBBu2*4H z5u#dP)j@pZnCyov2>{Q@vT27Ys6%J^;%PK3`^BnnbB?a0s!1d$4L&%IjcxF--bzGr zRA9@}eax{HW5pxh83{G>ZAYFN2fK#%M#J@LcYuA?ZujY5?6|+_$P3bPi|8Bzf}<7L z(8PqV0DOa3XMgCsTT7J)IkM?@R+5Y$ufsK?|1I z$6+8#bnHcZ`wR$7L{5R2lJb#ecokFx9!yOgu{`{^Hg0dXrQ8FvLOJ1^ZrAAT6ckOIwRfVZ~;pUT8z zTt#(TtfIOD&MO3N8PeD-SJ2I5p{~gJg0SloQG$Nh_V4dwKTlX%J8zXAr?PfDU(=&U zZezgH6e{c2oF~|%AJmw%m%9u96#IT7zmh?Om@>Rx%u2EA%#q##y1uzI^8DBSE&SJ| zpAmmdC*0BGR4d>njQIp~8-QsEI)Ux>=nG*md)DdOz){z6(e&VYg>VJ5x_uw}0D*AC zV`FD_&d4dZ3_@U9wKgWlHHi9w)4|ojp8})>0 zHyVe^eEY0Y8BwG3X%}Z`$iO=uF?X@Xn$j1U5Wek}MIsk;eo&~(K3WSa6l=Vf2sbh^ z8ZOlp$rkm8%o-PiJj3B^MC5I|(@x&6zc-CGPU9HQM1PzESWFk7JeNRN(F-tYM`3i( ze-OH!jaco0`opKeO&|o;4(vomQz(jd6Hz5Nr4Je|H1OI}%mqP$|KYS$viTip!796d z*J}4KfX(HwFU>`{PbP8m zNbgL5#(ae;Z$YkZHM*c3f0)!HI_0XFb0ZO2Ww)=Atp)N~hW;|)G3s+bHHCc`4FLxX zmb|MJaS zVq7lv9tUXe&8A&a&@}d*TAt6ue;`?;kb@9rmy2ktL(%M2-0fK`xQI%T^R|_dc8Hv z2pC_0_8$gBX7g{rs9|)QOqNiI$LTD*C{C_KpRmCONn1J?qFUTk3k9SMfq#3ut_##Hs?oVDNn z^R#a01jw*4`M=i&ed7v(}dxY_Y5m*l^eq;FBy!zGgFHX`A`%Ku#JtuPJI6 zW0RC@)k{6vP+A4Z!+s!a#rhN=*xHZD0@#W^gSR#tQM{=G?%BTAMZ^@{qw30b`St6&HOf2Fa23T7a+J9OG&R~Z zR6)cfVa5Our^S+%IK=ju?nK?>9*Gj?*x6=qB|WXVdM0dGnLG8}W@4A6BvX zQX_+&qs()Yn>|+(&2lJF3YpoT0!|7FnRb-Kj_^VuxXWkU@|)_ zaElH1!$yAjot}2LXZVVtFG>#~d`87%YFoOG7FIH1JrI<=;%urMQ-8tA=>q3#rnb#= zFXXb#^ib_bvBOLJe`9O${97SICQkQ&0!Ky5iDq)SjY#S8KQ0piF@;%;Q8i*czJ?jG z*gNTBcQ*P3H>JUrSSCG0iCA8&+!}jr)>7vl%V)wIZITVqJ3@Zc(}KsqVqc7lOO z%&XSQLrC7SY6%z4A8D3<9jnoy!>FptxD;j0uJv?ofNWz(6F&N(+nGaECB8JO_kR4h zQKJ#@*n;efV6~gV0;;>rr zT=sO=7l-Dt-3fGL%uQmIp5iYA=B8YNQTxlpFxGlpr;AY|XkmFto-&+>V*WRj;ic`+ z%W{&xi>&1-V^UPH_Nvi2AJD7_8t|niE}$z`Xy^k!dZUz``H1xYd};lu$}jH&Ggrsr z0r6KHkH6#2wx^LaRAZ17&K*iL&uwld)z}3!bWc}8o`>7h>9~Ji&T_iWzd+`*#}6@b zsDxnY1aa>8bv^i6x%-t|MBz<7vjxaLqxHo&e_sV<0W>8SxumTchsRWEt*A4pon{Kb zwe2{)k>nlEFuS0joUB4<>RnieTj0}%+qTHON&hAH_U*-0SOI_G@Tb^C%FNmBHGA8U zBF@ykEY%*pa-2A691J*{Z;nR!uH1Fkt#K?&P5%B5Sb~*%eDw9&lv^Zk1s_wpY=K+2Wq3ME{JOTWoXy=(GVH^0Zw%n9rb z-J0CQC755AW|<5}TWUiox1B3 z95&Aa6Qi|yZgJ8%LKT-v%dSlZx(-(wcZWLa9#T^#j{k)6TxSSeG@?HJ0=diEw>Q_J zMZ{#?vL>WldkffB1BW|n82S6O8FUJoe^fzu`mZnF-(Ie?&gp^!VM{T*;KPTerT9C2 zE|6_1sj~ysb3CTPF|}-=4uG=eP^g%l>OaiGoCn5xV!m%nhPz$ zMg=U_@tm@xw?=-xT3mjb3Ou2z7iLxz?hM zXMOSYpb;J`W`D$dtA`=g%>tdMZk36A#nNGfLiAHqB$J%omM^8dE7C@PHOj&bGJnz+ zp5yh+v|b>09`8puR~bK5wm*H%N2|^P`}Lp(pUd8)&7S^-&*d;sGb7WK@}Ktx3DC1E zsrJd@w7B(fhOKtVUnU+H{;eg@4e4f*YUic@!CKAfO+F?7By9{9GRpTc9w99+Uq4q*lOH3JyP`Ga2l zK}8y^$i&YfeXisFpy66|LldPt&Ar@N?-Z_rWlHoD&TpsJ6AtIgNqWj_+pEQG%^1R~ zhf;UQunbRWx&MH?pc;xx+<=|@e&texYg9(Ye^QI9l9 zk{9L=yBzi976!URScMuQ!{J|eZgl4-F2wySbY@;FU5>I4bU*DiQqm|9O_($f9{C_2 z_Qc$fuDG?e;M6+Ls|ZC>TH%ayQm`1Dzp55Q?4{P}Z;iBE}L2NSpB zpWI}5RC*Qiq~%(T>xz+#-DN7%Sps!u;x`h6Z01TKnB_2| zw0taSzc!ta*xfLNH7y!!Oz*T$Uc~e46Umt`AU&A6hG#O=OJRm^ghiP-T2$%(X&7e6& zMpgA)lFZ*9>YizMO-&jbVks8aVMi&aMG;qDHH&UAXMI`I{;KNIwFek#dS<6JN4{Xz zF1)pXAmbj+^`&Hp^$`^Ew5Fy&@8=LV@v7}~mWoUsm zUxdi$?4~A3U>tRp2NMb7Ss`>R)EuIz$qpn>zYm|~8!EtEd`;x!GYZ8EMlTo(UY8?CbmN9aHrzpdU3Ys3eeQMg2l zF+$mMPwfjVnP-f5xk439-irC}-l2)U%rYX0pZERdeV41kyRH)fzr9S!A6t399o&e!hdwcoXz=M}L2+ zsVfQ6leA$%<$Rw0-|qYk!+B}Q1L(Hgql}Rm3bGXm+qJcBvK7C8iOj#36z%+PE9@;S zQ=`0e_4S`Gn+uMmK;9J5e--A>BCW|^q-LkbaqfLKD-^wtOvf zT>459vI?2x15E?}Tv#96;nE(wk;=|m)^+3<6_G9j^I(P%ej1(MT(h^1JXd+M;|!VL zlQz)%_aD%($RGcMz0z%qMB+04rdM%WZ4|o_Y$CMq?=oa-yfuiFMD83uKv1Ibl%Gy~ z@W-)Rvvr*>ff)CdZSqmu;>1S2qf%sN-v18#i6sNzPqpb8p|W7R$YSr$r7=~ye;&I| z>JFFmz@FbYbE}5pEHw+gGs%zyx=hE-;2{3OQm$R4OK8YYCP)z`=@UrT1~@vx*pE>X z^=zdn!qP>l)jHTt0S@~O=m>c}cAct`KJ6jmcd*uqoAf)sT#9^ucX?ffUKbUg5L3qY z<@#N}HTkR0oXiM@QG7vRBfmEExA~N@!B=<9 zEl(1%{NKNYK7U4||ZFG_M*PNXg8W$}1-DB>+0(bJ$Hr=1I#oU+>5a%%e@A-d`!p%6h6jeHgMb z59!O>oR3#hmpMK=)Shs-=Xz(K179u%6`T!54DHW~@bvY1JfR&;^fq8_K4PT+USoP! z08mmPAt56?9fyAgAB4QEYkcPpZbhjo@&9*NK~V(E8gN3?+8@#}mv9d;7q3(Mc7_si zWkVMLRfw(WQr%jvcZ&avV0Hqf-hJfZt%$A1)wdsULep4`Nt_YcPV|wa^41ehU4nn1 z)(vu};9fa1p8pyaSbk&FlU1B^n-Ac_Q0 z=Q9z(Hlc}QBt4ywF46O?h!%r1WM8|<`p8)^kKdFw_yB2%R#HC#&)#0~U;++V zw<&-BlOuBZrxDK_zLFq1B^H?)nh2&9^BR{@tgI#O!$tAde6?3l_dh4EL?B|_?!^a9 z;=t6v=k}lPMMegn)`Us*5OHC3I?n$tPo=?yD?sDYNGt<3V~mp&C;QwInr*Nu%`f)> zi;mJ{swibf???Hgh`shB_gXj$XzekCaviX*A^f}1$oSuOytlYt{pg(*p^q@ z#{<(ZBZ0P$>0IYdE5D@J)|i=Jq*kvombc4gJ1#}$S8KEF*@n!82o%`EOK75i@?#I` z=4u$t=sKlwZw%_M~?0!^%4G_gH7zZ~sXf)$}=>C=_JZ=|g+9Z0=Vl)t88v zeCnFjY@z_S3^Y1ls)|~FZRNzKE zAdlS3D#-3s8v}HT;b3w=em)J0`67XCXK+v3JXn-Z*NWs~@Kq27jeC#l{p!zM)gCol zJ&tS7@$qZ_TG5QTwzESIgvcnxvE7E|W3{Ab@H|Sindb;60?5vBZ#|g~X|OaN!5wrt zRy`oz@DroYMU%7U3)enNJ!pAEcU#B*cMu~~WHx_!y-jLrmor$+W{P*vT2kt~?HXN> zzlIA4y(aXyhKphDxj(NE1?B=pP~;--*=%-1ha-2q@0=(`>&{p9@ADhu)LoZJU@){2 z1`sXN*vyGQf%QG9!kZqeR)7{tJTtJ_okY^a`uD{$QLiM>p)|l$(%j^$!9PEk^Q^>> zuos?S?3aLf=?Di=CJRRuXNxtn|5|M8+EjE+x}lw5MuVZ#!}JNRq>Qo;4XiXIT>y%+ zlb~9v*P1|F?`=m)Z_wBs_vHPtW75-~mS67CmBcxOP@S)Rl)nQz@T1;0jPhd0VbOvn zkJSiKTSeOI^9u28In_jyFMlZn#|L^;fE5LU&6YIo&#Ycr49S6BexPSL{O9}E=$M#K zH=xikFxqm)=!-&ZW}qjA3$zc5wE>oU>GURZbX4{+|7|=pyk*wZ(4a%{P^vJBDb!qA zvfXinslCASX4~ZP8hAaG{`cvpiEh$MXG9HqP0Gh%jm@vchy~xzC6h-vF{XzZ*wk9;l#SVQS@cd*42MXR_GtN>y zM{Q8vwROnRUhNFoHlxGvPSB0_I4rI|3G~+1G#A7S5q{e~Tc#fbqma1D4owS zC{15Glc<7t+FLu7pB>nombVXkE1??!KQX}#eNZz)km5e}o>{xVB(NQqDNAO+4-vPY zT)IE6f+lY#%M>K@0NZzZZ7n`tJo4v+lqw(xf+=qK{cEz#0aiT2b{P9@E{2vG3pfl$ z=!rT(kli&Cw;1@&%pHEe?%a1IYl%V4VQjVfWbl`M+JUPd$qU7K#y1UEalk+K-!z`F zE9x)>;4g?n?^};X_-4NzTAmSIzF#AHS|^Xy_?U;wYc5cfG$aBl_qyFZ`O)-wKS#SJ z5_`RO{#ePwM#Qh4wM5-lw%$ z@@&_OKPB&#hk+pH2#8C&f_6G5_5~Qwbgd%~QSG*iOW9cn&!!bAg`|_5XX*S?;ImS{ z2$pHa332Xqh8JzF$3agc4B~j~Zw~;}G_esX17h$O`!CtG z`D@>O(A6gB8=@@^=4(!P$TFMvc;IS4TR)AuGB6p8vv{YeQn~Hl=+zX05=YytTcz%e zvUHE*nO~(ys!)f)RbZcPr-)Rase>zl-7mPAdS@{y6eTm0@mjnuk@N*u{s--@$p_M? zinPWsQ`HYE4Q%(MeN;*Ee|%+B%b`zG9Yy&Wx@;}xyH6t|o=$gA5$Vyr&$_C4RYtbc zKK_H=S)1l4aw=~?;+Lhus99yo`^&motzRD3J;9LjH!0}UEk!hUII=UclHK|n-^Cmr znWltJXlMz@v=}-G`aUPtpo08uG#lLA797W_?>(v=%oRQ6h&cLY-R~0ebssg#vOjaKfovB^bjW@VY8MlFfeeBshwN& zns@Pj%DN0f$PMKs#fj4p%8d;Crpr?4#&kf1>wz}ehn2V~h_1m6eNWkUQ)t<-gQ5N# znvMph8@F#Qi}?Z(-|e<}sX>Qx{Q0hNiQ}Eo8o|>lsrk@_=BD+{nJIj;-30lKXCFGm z9vQb0C7Lz)?#?2Uk*?uUoctFP0cv~?7tsqt}iMnN@p16fDVX*WAM>BLpI z(@RK_JyQACZk3R7HI;7$+C3jHz&RoS<6Dh_%ka!MAwmB`TfHIg8!{#oAJ9F*#c8_( z14v57j)584sd`)N$hCI+MzIV@OZoxYq_obibVLa*&o!=38xqiq&)j?R7L?yhpbaHk zWFeZNAlvZWZegr798WEw=(f@mwdAl#eR9pOGV5He(hM{tZrpwcU;4Cbv%h(FcqMUp z+a(X##ro7nPB=zcz*&%OQTw&`r;!YVO1Q$k#95qt0x39uu;|-gt`@;zBpZ7n=&o%h zhoirnOBp!aWI%*p853l8kHD&$Mv3Wcgk6HM+5&{YKt0}DF9 zB{yk(7w+74Jd90^?>5{Z3oro^X3zI{U;Gow1B8D1_N~i3#)s}v*tj5>4z&twCTz)P z6aDX|4|i8ziNJmf$vvD<wWVvI9I8^m4?kOFZobHz*2C-bUv~8J z4v@Ua@IzLB#CVkJxxAntu#9Pc{tux4NOI|RcadK*k?w-y+fz3!O7vULhdXb)OSK?H z{n{nb9I2aap8I*l#+5SZx`v?e_Av+sQaVaiW`wd}nwx{TgNpn=;S~28y*3ETC)kqG zcC`=1oIft$8({ot_Ti+-v;JDl10n2k6JdW?C0t9FA2R)x=fZFbK7IA)+dCLZ*p!DJKX_@2sEdO7U;l^8m zetNQ%2gh!Z!Oz_nR{x<^A)Lp9P}9%}{mF$1kx@|zj6|<92bNdM?8rM~#hQHOda@sG z7?2$Ufub&dGWoy0wsIr7t@eqmo5J!Icet8%+CooCK-zI5vF z`u%+e>h5D1rC4hIp@BM|yT3oVDEnHtz#}Oe1_-$!gHk+#8I!%ayKQ@Vl*NV*+e8eo zdbcia&Z+v+QNve57-G4ZV!s0Pe+1xDT~5RhiMVkgSHN2`^tE|CS`?*JComm~&^c(R z=L5C#d0?~Hos%l!1`Q4jgfPj*XICHAi{2d%Hfcr<7D|Hsf#|Ws*gc6R@a5B})Ze>~ z;%40Ag+7bnVkqwfxdfPG6cO9Bfe4poI^dZ*l zjh6}$E*!bNG>*=%>A4^~o1~;2z=P2o?dB#Si}d6BPaTJ1cdEDx5U2Elx>n2fr3kv( znwNE%UMhY9_lMnDv}c%fJ%0|;#CI0$!(aI;#Z)(wt&zX*-PyPjAA`1?zMCm^dv&j_ zzSuPXHahLit~ceDOA)hTODGkzWm7*^(QMj>(Js&KI;`e>2Uq(M+ylPJFxr{S zWyVotf?^QWQzF#Mbe!EIMk|Tk`qEKiTN1Gt|>A~DZq)2_i z?+m@+w78B~aq)`fF;wtPWuj}~wrtH7vFspZX4uH=x$H3=8(T2#$QiIW&#CIQr>k+K zc`QyrW!rHp1WDTM&-wsy@i)-QH0;-1QF_XHn?xehZ(oTj^I{00BwKW22l^W#sZlj zQv%u8jMYTMdhS~vGZNb%m`TA}r;l}?|L$d9H#eTRItvKSHyRoju*Pb9fSgW52!YU* zSEm%0DcnMW*Q?(>QmY^w?4V&QD>^LMOC?_|d)BDY8)=n~$cU0{h-9VJWCPuA*PnA+ zPQ_4}&%A^Vk7SuZ=K=I0SX4C>O6#8E9Z0OY^o)y z@Q=N8`T6+_ZnqAP-F(%5JrPQ(XlQ5{oX);ET66)m9+Oy4@sf$~#ja$kg>NzYbt^$J z#4l@)0!K0-EqI3l#c%wyCqxeaHohKwtcJ~=-Z4wh7QV>r_*_!p#I+&WgtE_h(Vq2S z&&X+a2(8=gZ#|q@#&d7eweGO)Bf_}VUjBAoyk*nbh|PFJ1*+&x7-2wqVj@0V`I&5U z#HOa-@f6>WGOxtd84?;xaSdwhskF@)N; z7b!j;ncz&fGdbd|h9;(KbYC|*&pa$UE8fCmnR1anJZ@3lFZq{GRK3f zs}GYwaqiwv#4O>5koC_uMCF8hT*j3W-zxN1Rpd;sp1=rwQX)EC~tN zPHz8diNoF4;DSa!iEW)akn9c^TOXi*+z$agrgA&;fB-hiQ>E1cbq3lgk+w(dUpWzR zAQo+EuWqJ&VzD4zbly!vw+X2^qBtYA3-q@BJ!k77Q&)grXH@wHyFlnOMB%D`Ydots zdFeQd?&DCSfVRz{HKJ^ZXtQoR;QL?TOMP#Yv3F&wUn@GNQwi#RChC~kcAKEfZiXh=lYW@miRj>2g5^A9jPBU#Cuan02q*_-)QMof~yfZ z&6Q-LWZ`ULn;>O2(ySB=s^vO0HZt#3&rk$|619c{3`rGKy)YBP)}4g9^#FL}#QR#O z&iHr-Axw99FRx7U_;Rdkb$V>DZLXNxPXL(@{`I5_nYxv-n5GE%-H=`Lan@1D*G}Z))Uh zpoC3yaSqz?qaeAqM4jFKURlw>0thCNw<(yAIk!kK2*i$LwUqt78}m7$xZe-3ezUbO z92esZ)dIp4=rx#lo{c6WYW1Affp}2#5|f@bhEex-QtsDL{pC);%x56nWxE^xdROxy z5ZrVHD1b6Pj{}5v&S%cMzpE^Odx@yO9%o}eccJ^;t|mKZKOdl2o&@dA-knxzQcx7{ zls8=+R*9uny=7KMHsj4RjmDhdV(?Ek`lPaSFBTtR7zSSDd+dDZ7G+CIYJw@B$kewA zva)0X$EZ)lEJjiACmQ6`WMggp zWM#zgbSk(a&Rny#ZXqa{^_l3PzV1ky%*wi2CN^}6j}=X1y`s#%k)(TclNJ{9*K|qX z@r8i;YednFiJXFh4nVZCo);o<3o&T3EyK3vvwOQx9Of+_467^WN6};`?CGlrZBC6u zue~s$n1F8%mwNxlhBBtu+;?a6WL$`HLaW$+RzziP@BaK06>{MY1}h1*k4_{S^_}V= zZE}E!S;`OPv4c-pl2}X=JB`=KRhX*1t8@Q6PsOkmG@x7k zs^+Aobd@=;_(eCW;lH3rY41h|3Bv#CjzWO?cnCgTfB^L`$I5uO;Fj7D48{w{b@zY6 z;8x82?I%!O))TXmA{F^U<8GhspEK{J{PW-b-M(^8>~#nvKbc-rwiV|8pU`b5R2Kk8 zXuc2)RWaKdk4S$z0e91KH{n*);853;f2gmh$?1yO(nMxq{_#6MipJis;mk*-L} zqeRai%^`DM`Lq^4HMb;OMDdx|uhukY+o{B;vf- z|KX3(avzurC^a^FBPg(RWIHntO3~3Vy6%epk11=G58#&k8gnkW^^GOZpOTis|HIbf zt1m3bLp?H=bbUp1{zVWoKv1s_0FPIDAI~0UIOf8;^Z7#EH+TA3P&iS7KZJ%3N#z{G za}*R7Q6t~0PqE4}Wws2!I7@%}ZAWViOk8y-^_o~VU^f1b#=9SamMW^VJ*p?fb#?oz= zh9p9SdFY^V#geUqNHZ;!R@|pe*}GwZr=&Z^Ds}0w_;_>(39LOW@f~ioznCg=Pp0seA$g;7Tr$wa3QB z7?K9=Gcn;25G*nG?6^1_BB4oaKPDw4Jg1zu^_SkTV7EZGT#H#I+*D;Z<2Ac^cGz@I zv}oHH@_=P=p5l+YNxw<9nSdzQbnr~V)bQ=f=m5KazG9z@!&@AdPF$WuJ{PnW@)-jm zB?sJC^O}~()HImluAn-;LViT}d@GqbnSg8K35QxT)p5)8x!?BcEtV1L$)RbD>K=T> zh`bNoHJhQZ%kA01s{x*vxwc_&sX;huaoPj^pE@RjN)%JM#@jZgr*RDo4H=o3JZow= z;w34Le(X{6@bFZ--Em&u+@Sf7jL6v7+Y6A`IFn5+WB)2ED+^ERBg8N@HPs7ta&{gW z9reu0WJ?gMfk1Fjqw?~o0sQ_$$lKu+2QW|D+TFzA1VyHfJky8I(I>aK>!-m2Iztt71^Yl0Z(bW1eI&0}X;?$(@$Io|vepX!p7mS+9wi znI{FPdh7YuE|?V-6ssa3q z_e~3ni@kDcYVaTs$g5_LRaS29V345D($fp*3HJQ_Y78mCk{|KCyn@BMFrS~&4hi%U zBlcnAHR|f~8mP8BwSMKp^hU#(iAk#7rMofSL({yjbaw`V@r~)|)ZQN2z@ZN}L95C9 zi@TT9;w|FE!7X;ZWelOQGx_e|x5?G64owo8vMgZqplE-zUGe(zrWiJJK*(*|I{aO9 zI*D=egprVU2f z`7=iU=0)N=5tTyz^4?ch_3Ngsjwrf0BNC#h+3~Lst5f=W51U^j3Up;#a3Qv(XJ^A8 zARy#|4zJG6m-w$=U!C`CzB?XTJ@(d9^XVewcn#m%SVnH(*-;g$`nBA`d0S$T^k1~3tZYannds!;Oznjvy3yi%)GD}pOThaf6r?-rXt82P;39i94 zIE}lzH7>yk?hXlr5L_B}mq2h0t_kk0!QI{6owIX4-+RXB(LWf-X7%1{Rn4lJ7svg~ zk_AeLcW@oqNF>w0$E$KqK@#Y7DEIwvGCKO+oxtb*eB;$`n~VG@x%DXea8tMbDQq%Q z#IqXsQ`bUc08TCYHE2X$(J{^HL z8yBXkc=&zWLWDCQ`0)jZo^if*8rtD?Cvq0PjCxsRy?9eSd|vtc0ejCua;YBSO8fWw zR(9J%juufTT#*M41nD<3{$rAK_X?%%9|W9caF3ChefX`ud_K>7!>pw~ws7160z}Xi zN@r{BS!s@%waQr{`p${CvYB(0wnJ~WQvgn2wKc7@q{)sij>~UH7%<;||IdF6=oIVf z@0TG-PEt(b)uCYiW3spYOw@#)7U=kUw&UgRX!fvNBLji(7k&}LKO{a^yq$R==*R(^ zF1^*qTMpF+S7aCEYg%9FOwfrY0z|vY;-=2GL_ZmKTiLD8L4-8ibv;dbx6dx7Mru>u zUO#KF=*iKy2=Lx*`-J==-CwvRnJ&L=vW*ZAfIr}!iE$#eqIz#kdm zYN_;kd2w3R;f2&p@ZvsX*h@-t3Pq`s{@Xk54~-pXo<gD;PVXGJkKiR ztg|LM_3W=5oMfTNmxWWaHlnV&v-K6Mz!FY-k2}Tb@0GuX1fGAl6-{J+Eva5Eqn+$` zDyZBWSo`eUBDL3+!skFGa7{#SA4h$SY*6c)!~C^OyBgYREVH0Xwhwj37E~elY!u46 zllccoNuqfH_s;@`K~x_fpT+y`phUoRKj8^T$2dRaeO5XHn2vq^a450pzZfgNd~#oR zvN+zp0GxuPNsNH9)R6@+#>!MFasu=~lvZo^5w$MLcq*Si0%K_F3ChSP@I7I+$?vw< zOhyH`?ABmB8n};qs}%aPL#(nU?$0A2PKviLPipa6G-v$kfCW*yMfLCBd1^9R_!^f3 zf}zeJ3s216A39{Y%#un8w>)Z2>xtja*uk{Ge2T`6JbO~jlfKXf2Sg0nC>wwQ`Nz)$c53pA z!DI8acKF03Bqnf;!Ry^>Ryuxq9owi_vTA2S-<(aBnvlPL&(TR3__&K zn>J>8BCc3jf4-^Sqr-Vxb@fH!st1kZD=NDcd)xOqe@+*ZQns7ivNITy7nkVr!@#?CaM>dDUwh-<1jl0 z=$I1~27-v%=!MEzyRSel$_6-k5%YfwyvYx#tYihSfxVg%>^|4_X)QA57wH6Fzx@(q zsSvU?;vsUUscMnQ6yLfBT675j@01vKH#h49KB5Uu%Ms(q2w)_y6E=O{1l_LWEzVBePMOLJf!h-GabI)aDnKm6j8f3dn*NuC(aXwVgdUL_| ziF%l?yTH&w(ja<5FU)$pjs-j>367gh8?$q#ZiJY>(4S^4U3rSo@6eh1liV+3xqM~V zv0flsy#5j$UyxDdGpm%oLV`FZUXIJYLkB6Hs|?Rjcwb$S>g*_U@QqqCZ4A<)#nMyEcKM z{Rsb94k!d1)jRn|+k*)j1cL;*QE#?2!hrt*_xquSk&B)EiM;f{;kRcycnU8*!-D*L zYa1uXWWJoGSz`HtqZf-#O}>x5IWb9sXVIhed{qwKQTSGETG|J>i|6Zm5iD2w=ysr` zZ2Yn)6k0Ci?ETAA31FFoh=w-PN2Qe8+R`G+p*8O|K_`e>c?= z%-#iMD?=LC2W^#gz~Sr;V7Uy}(= zi*KJJ*4K?^@YK#g6?LB%x_IzmvMMfyIsG^L^C;01u5jS5w zOz~yq1`_6;9}xnsSGvA+s;bjXM`HTu{4qtPd$ofIQPY6JY3JM(mg!sL!X9svNGP^7 zva*uF*kIamu;q822@SeP$B=cO;hwE(+XJRp^Gd*lfAR%*$$;uNUQmH;X3YBX|;1o)%Lu@1*dXZ$W7)t(x z{7$mZu>WM6&%RJ%G&j+SJ~0U?HA4~SP_q(6D_Nk%AtbnVIoo8lFG$1qFLu)GwdU{a z{uFkzbEaivRp($FmPEOlev%^ zs-J+pBI}VV4>&pm$#Ej~UDsQr(vX&vv!vQ*WJ;LaI6CuBB1Hs?&%JGXVHc8=3xMnQ`SY~Go@zN1_Nq5`yhg{`;*V7@WK4d=8Ho5XA;h_mNbth}!0esJ< zEx9%wba?HVfWHSw?_}fY1gX-7IOp(c-CIm=zC8)y*BD(C!794jf_32Q2EkWvH?T&qX4&L>uzPY>Jy)MkQyCo1#yhZ zNf`{Supg}p)&8`P8-(q{m)79*uDEhyJ*h7pa)lW3i}PY&MoLO(pwc1nbbB(xheb-N zuvcUawXoi)iT(fpc!_r-0-CG>0B|Nf zbr{{OHf>F{l6hxHh0`Wa?_c9#&a+&oJT)pvI*2_!CB+(xctuVh;b|l0d>Aa|J;*ba zXHh63n|P=FNm@YTC+RN=p?%mzcQoAiVewD~D~%%E;Y;B=)bkgL4@+W)5`YRWD(ODb zgt>z;Oq1X|d*Iad2Yql8bA~7P+oprz;SXmSoMpTcL+aHJSKdIt)D;U4w_-L+CVLNL z+zCS1Y6|MgaZvn@n}N({_KQSnA`FAutiwt(dEEDH%1TPJcw-uRDILI$6Xhfwe+uBE zF{+fx-eL8Ck7LJip<~=}cCeBZ!I3qifgq}P)HkDRPgha&#I)L^auO$cH>}uIECnQu zZ1g?&yawl<(S)zBuO*@b{APNwOmlB6ActdCfW*`f^tC8SCF3r(aKr8dd96NF@`pye z=k6IOr75|W=c{sLk8JSRK(s z(2W>;0pb_99Eg5nB<*fKGB)jS%(Z&g2NjnjKoklPab8NHV;JBv{P?y&sx$`6fhk+tBdGL{ z)vlibX)5)qc1`HvOEgWQq(b#!iUhfa~ zhEY<*HPq~G@?+rUNX;@;yf=fk#G-JG&%_Kd=~B!%F1PTJe6`F_?G?gdiWD}fu68}X zx6tLSva{TW>og#3;hw9zTOtv+dJm3Cy-B-hO(wwaz2MtXik$I0 zm0FUUiHWK@mdLH!^yDHZ7b_LSLPW;<68H0G@o*t^spq3sug zA?A03$E}F~E>QoP*N>=Ds*VWyO9dxZQqGqwSp~VCoUG(^%`SyKBg6E!YEGdwoZio6 zh$749Y&F*KkbbO|K8&!{SaHE5_m$t*Bbk1ko|i&n5KSB%AQ!<5-?R$zlZKI9W}_?h zS=drnRE%8YGNWZ;ij@9^)UepHaTHT!HzTBhku=(%Q#!*>t9q+ZywjILp($D6{bo-I ztAXwQoh*8o_HHXHt33kHo+De9i8E1`-&FtBVi}Bsl?@A<*8)6a)^nds z4f&Hfo+&f*wZvlY;J@2=O5(A^jEsuu3w(#$DgB|jSCJXHp8R;& zuJb|5`P3z>K7M1}JjTw-e*H9qi()YST!Y=QBjAss##efoWd0v>e@M%wj)Zei;313Z z4h9rd!q{j_4ICtQbrpwh-}D)d*l7imPg56k8gs?yb4EkLJ&vN3(2Dhu=P-3{M{kRE zPP?w)C}bw-^@1KgdGpf)(1j0kqPBiFzIaTk`f%3sY=hS^%++o;EbI!>r5Er#E{*d&GQ#Nr=lUy)0lYi7%}Agw z?W}9kg3+JNeGE4ql*1r*`Rg%&>2O?1{xFI`a0fpB)cCL@T(<`pjRRMn^`PuVL`Yvt);LMWTeyLVdxJ3xN%rriSFj%V2ru zLYsQaGqDB>vsIgnJc3rPw;>E^`J!Jtr-(Ivs_xJ*FuuNzbgY%!k-k$MBwL#IP*g>6 z);J_QrkhO`3TU?><&_(Q{Z5kT$wxZm|LbCS#Va`00d$a`Sp>~xgW`dMnDe&)lb$G7-@7*g?a8Oc~bJasE&*^|uCvtw-<=jP zHv7%mADDium{`0|dG|^#*^n1FpWPfKX7M3u_s#O9VLWB&KYap|U@hBrrepx2 zVD_@B09t{DIkD|Z3Wdmk3;LCk&A!*k7wZ_pnn7v)iP@Ry$&m&=`bB>LpSFq6@Oo`< ztKXuRk^AB&0|F5pM|GZlI@BOTU-tll0h8p=XjpawwpuTF9~~{!gFQSKjdO*)hHY5f zptdgb->Qv#JAl5xWf>H>k?fGSTWj8cPU#(w_XDw z@Q6N&L|SW&*uK~J{Bj5tBPu_fZ7S{Wm~cJ+`#2OYS-y8LwW=qiU-<;l*O$Fo0QGaP z@h;J1;B&(_CSrM9oocR+>gx2o@SdsELn_0wTVz)N-`P(@ASS??x z9Y!8q^~$38Bz)6nh0ve^Ob!3cD4N~<|hBrdSma2<$>_& zvGi&KKX1ZtbS1hWkM?$aAdl35Y|8-7Xz5!b6%%JTCsqVyPsuit|77wQVDJPRyStJ>jtZB!eDDlk|cU1TbF zOG;f5&JgKs7E8~u?vz%ss?j-y{TA?mj z{nOSZ!0BfJp=&^|wkPN@@VEM1DfhBa0;;(o{r%d}27<*iD<{M; zy`>+wtfI}A&Obg6JNPgCXx3(^#C);s)T+`t3v6S@3AtY_6&aD{N5APdQ~NV8Qjim# zDRso4u&=jNoJDLJEM&}@Ap-(30lWXhCl?$Iy$Nqs34r6tJgLss1oL~e=Otz0+;UG-78q>$L9(%(wi==w5) z=}b$oDFh!@W^e9(0$~tl1?6Yoi$>YgkTO;OYfS5J--=C-*ZVu2^dfRU^3IhAg@|VL zzOrEYgqiKgal;T<%U= zT~ALVVp%zzE?8-#a+Zn$=@{*b{iHEwQCd)(VjC1DL_=3-URRXn2Hp5F^B4IHp=gBkxx%eYCqC@+2G#6{B8g2D(61yKmoQF>SlBC z5uFg7ufazS`|-*y^CL**BTPy6`LEs5HB#Kex@>^T=6sh6!Fldh!GS{h`X;a+!@}_x zFlwm5z$ehGb`n(9F>}nwLh;@K<;BvuZv&0?e7}z~+#XwPkuF}gAh=eRA-oE6DMDj3 z242{9qfnVAKkRdXEuQ#am!xX*>Avr;gi^g@a@Iqzn?z-1Z(bmeVs3_u7vJ3Y??gmq zXOB%EZ36`N&bBIr@sEw_ztCYZ(#t7#rDeow+sLy|=)bYypykdT9jtx-`BAQLO>g0i zQ$CPVE;lca^Qu`9i;k{l=+!DWR9`os)ye&7PhxE1s@iAO3enT!4OeiaN&TdZNld;p zPxSIjiyp8IvqD64$e4aE)1v97EVF=jITlcv63pFG9J&k}ptV(ZkZ^#jYYqHOrZ3 zFb>PJyC$dzqU7#N(TuUeONZ&k6KqJ$Q<#S}M%GMPN~B=Th}MEH6fj+griaWB%WqDI zkjhP2GT16-<=?z4DeTZubf8hY!Lxcwwss!JyE z#bCt4Z@hC37s<{3RXb8>?NoISxl%<(?PeR9X-AK>;70xJz3SkW&?DXV&cBZY8xvuP zZR{*?<4dp!)+WG+=rJXbUUZBbLDpbpVRZ9&gE#C=b&%d2$Q;r!B1J_4iqhIvEV9LUreS5#9R6x7|sA#?ZLG>%pL=M>V0xh>->8kbUA zW%URv!NXuGk&ec9wR!glV0BCgibqv)YW&>NOj1x}Dz@%tr`#fp|9zdryl3%~G-I4< ziPk==>3W>_xPf)F*1o88CnQ`&kR+T(Ri>tWUhrq6u67Zz0X5kUd(C-1E#y*IXGASH zVbI&!-h`z#X`iti0~*1d7#HuE7LJJlAm$zGY`h0LGP>E?S@`{#LjJpkU|@x##ml@i zZ5bGQS97fK;b@}BRWN_}_`gy~+Z4ln40}Wg+8O*@fLCGyBTfOVgGQG(_s&YbF<(V+|-PJf9n5U^X2X4?XNI`K}-dv(lknC z@p(mvFi?4>7x0Yonet_k4vn-$oHPBeo~<8NJW!&0|*x;ZKYBtZkLg3s*}L^>c1 zpeHm+lBv}&hEc0RMLs7YB0_3AH?iCGL$HYk1MW}mKf25-o=cA39RnOPpWR5lzmHb2 zbDlLMCeARpFcK@B&9!c$G?%)>3+8TFZaG(N?xc%lG&^G-7bROxUpW`p9?>Fzp<$NT zQtIAF7Q|qvO$|(iAhW);e7!mURetiI3a_?izK3NUqDTpZv;}iTs+`X?k zym;dj3T0C7^rx;NE`Ouiu6A+KG{-lGL-amiEMLv!P9r}NyjWcIb)%~aSY+9K4=dm| z2A%+gP)f+_bFQz{M4F$UA0jfce|Vby{wsKsfobl0 z*4U{fGNbQgQ5V8}#^16os-%4#NHrKfVfJ3)io>&waT7TY&vYHBahbSO9Y zPd8)>iVk$Ov8Z58cPf&dblE72YOs-GA^5PAAd7NaOD%0(uiSdhvag*u&caB*#19%S z+c&ow6i9idCR&nnGup|98nysXI>6@UAW0!%VG}MQdg=!N0vaDH<$SwJxgYbuaI>Tr zWjhEBD|%Zg4yWmHcT98zdZzb)2xDL;f9x%7`1ZzdvjBPYMH9U>;~+8~KjOSR?Qv=D zOBbv|S&MqYC`3OQn6}c(lf&Qt9<9x8hFHg%5xj|eq!Oqlz58@E=d67#g)bQ>QuA~K z;%E1Zrb&1w&oF1F5Et|&{lBNnTztUig*xq;>`5IZh~ZM&WLWxw`T*w(ym+g6;VLik z%;8Q@p}6<;?PEPBWrP}B@1oY-*;=7B)9(%`NJF?ru^QYNF=}_L%FX@+RZnlP&XW$f zIb9y0f|K*}KYYQgp+hS_L^xqLUnJ77o5sZBvSoh!sO=wPP zfuLAL@?*tw@3~>O5&^pt=Q9kld>3rST~-4smc*|Lsl5$OC^1`FMy=n3P%0U@o$8+w zvP8D<@>GgTV(E-Z;XI-qMr+^&#zGs$n=Dbvi0WbOXqo!|_$0(m4U=JIxex)xKGFW6 zF-ZKW>S9*>VZmzNE#6ETcrg2iceUm7w=&Xp)UD@GDQjV)BkqTY6-|7%S*^^!pjn? zc>!WV*o2OGEIS=uuI4o_Ltn9x>T?9CN=mZf>d}9n^(2y1_2Kiwm5tPD`Nr9qa-7Z? z9%?txiB^(j1!wE(;_~ZJ+fp?`lIbvwS%r(fyc-@wgZ8rqUh}ZNyHWJk_#!{EYJLCM zKR^%C)8wAjwK9ya`QcA}z8$?3ESAb2U6N6fl^|Ts5DLm`_EY_bv{7Cb0<o>GRnhS=D1&-1+%nSh%wu z1xZn#M&aGkRx)<`M#5PidB{VPS*uI7=dLsUKn9taPrC1pr&f+`@g3dE7u<-Gpf;j!_4hatn%Z* zHcgi2FrlCarwxUd{KC8>i3&%^Po_x!AU=RjMTS&O*CH?LK8^Tl^ug8D6|1Jlx-2Dy z04h5J*+>c~oLn3)aE33N5(EQw)?%Xo^UvppZut)%o>&Wt#9Qmmzkj1sfKg zyo^ks@l=-0~B6`XhT?45gTzEMz9aFNB7uN@+2&^y--U~44xM}b$k-|IG;w8b#X<|{%bLe zY5cZQw!-yx8m~*}aJmkp36nF;Gyel#g4fG3|xZF@$y6?XrplNq@|24#S3da)XRj`22hT-p2!U%sJ6gtl!X=ayk!DzKvZ~` znLf4B8Jy~e&0Z99?jb~`C~2zlASPiS9bWv}w7ZV=;?l2M$L!A+!@8gzDGA@)Pd#fH z4men}V$l9r1sLWW1?GQ7@WQlz&qEhWj>X{g|TxEkwxr=2I1Z8T~gEJVt zzjq0-f)I8(_V_AzEPwO;-juE_DjR|NdOM8!pESKv zK|S>B`w9DYorAq3@<6sEK4F2<_uUr@!AeWRZl2JhlpDl;Q~!5u!wB}j*jh0>yFD~D zvZ$RP&_fHJ!Z!?q3qMaqVHhN7DhFS>RgOR}o;emh4OX?riYBVjau~M82xLBFl-ANw zJh#BwrLZ`6eqM@mk@y8-VnW^6*pLmP{Oto+G+&4JsB0v{0pYf&C=k2gl99!f?E*g8 zczGTMfD;7pe&Bd_xTY=qMD^K-1Gmi`*|;OWU`Up}#Czv-Cr1APxln3DsL}QBvZ1y- zYyQe52u!x7i8CG@(p)bprAhA^pb!~RkY^-DVIfQlqUp)?`nx;be)x1^%t1(BbL8xX zbDI)aYB`hI(K`WGJM>8gR*Goh*H zb2+8qQLpoB z6yHJzd%CbN#Gr^$LGSVuQN5Dlo9$QUN2Y`XEXPBLUTk8l*wG)!xgAFRVAwKWaKZRl z1lh(;7VpYKwpzijY5`p}UFL%ToR6AKLr*|tt{%QFW8|PVtKMDRT3YRWfV0i2i)T^7 zttO4B>;3v_^c?8l%eX#wb5-?R>et}7i}))1zszdBvfVu4RpN^SQ|-7dD9H;)Vnz{s zpF+S4*V`yf2XCn|l0&U9)*dOXod6T%ElkI)vc1_GfkAEpv?{)WYi(!BPK`h1fZ>RR zJ#gOK34(KEN0u9%hPz}oxm<@>iORUGQ7<#(<1GL zfCNsdf^>lfG_1XtH~&psTXpu&2@}3okmp=Qg&re>x@?Ovb`4k&8V+JcOH_Z!?>$b- ztuA;5GNUvX#$$&LU;CMsiI*R-Q=Ol*50xk6Wn9W*A=IJsp}FBamF{asPZQ-PRyFzC zk|Wx8%p6b!FFO~111R4GIa1tXL5*K@ohaPr?pfZy3Lyi}Co~`YwYnt?md*(7?(#)aC_rRc>^$$7C7bwlh7aT`B*HO`ZbBp^ z#N0NR<`gmhj)xt1C7qTPn9@PJBpLdXF2@?D`V9w9tQZ&16t4yUyDd^+CuGaVwNa5B zsLUl_5PrD#d=~0#m)jU7-zX2`^Cs%m7kEgG#<2ai0|>T{731S7=D{2mL)k#vlPMRT&&!Qg3$)xo zE+Ug1G2d5TwQvp~<&7Xw{eapXx~3c#7w0CEv!Vg?TSq~lilKOB(6C}DYl=eo!W3>L zCipdEhF>4DHSOZMsSzm6s5tM+qFF)}!b3vya9;8zRT#3p2c!Fp4`JHi%=Ak+SoFqjME`DST1|~=5ixu+NGfDx?2VD{@dgop1Wg5 zxqU(MS)UDF=l_WjGk?&Kko=f?{sR3cf^*0nFhOkp5UN>>c-=1?|@P;-H08T^-FvYa(ZTy7MDcg!&x)8BpS$Pgv z)4o}9=t%?zGQ|nHo|2Q~7cnuwI#4wowZj7&c9{03Y|2gleRBtjGhUvoPIGch#sqEL zYN+t|8oeH@h|XckA1{HztubV@H+|7NQ<#s}_R`4CaaD;rvY;WM%1f!6`D2XgW8Jj_ zD#2=>*Zul`qSZf9q`IQL=w#ApwdFNW^*)5H{iQf)69x&8R@`K@W7e@M2P46BsRc2! z99g+5P+)%i6)mKf#1syl;|#TTL7OKyxXxF*A2E1(n3R>3Ip8L_rR*k%b3m)*lJaBqtv_sM5g(K0clstnnaw`XfH-(!)RrdZ4i z>1m_s*=ziqiblDKUwAbes9^XERZ^?k6tD0uNKN+JKy7Ugk^l$?bMsii_4HJOY(~$ELB`gOz~SDApPIk z-3=Z&pQ2qe8E=U>UkjiI(nZ5wz#!^E*~#nxNdS*b1qQWy4ZkuFxTX!XQjRAFH{^!u z+;%aH45pN_V>LtyV_9lMgYV3tTGA8*gRyOp8k_~mWBi()3}nq8&vF#zA0p>m(cw_9&HEH*;a>S+8sIZKnqx8bAZd3R9f+A4r_Lof}YNBnE4YOor7= zPN=%EgOfaywD%2|P%SGVoEX4A@Ge4IoAZJ6u|7=F5CWs0u2`f`iAmKQXx0gYwKKmu z1R@I^NO72MNMD)V-1fk)xwzR*U%QUtyLnlKp0BnHf=##t5bk#v-^nBs11jmiD-*m< zKAwaqZW262wCb_K|H9kN?nPz*pxa5SWDK5Y7R4;M=Edx&IT~UeTaE z*M6|7{QAmKcHxuchHCQx-jiOtiab3d!-N75sU}CO%mKztFt>o~X(T{arGy!et^#Do zKoXUV?(A%G^Te83-R$nFO4U{yS91iSs82X$vCU$R(`Rg`D>AJ9ze@!<6c+B9bHLq( z16nl#tD4h9XvFCTIiKueG5-*8>u1z{A4wY!VSX?O zrXwlr_s>^j6YUU)cAjpnZION>2S*oxI`IXD{Go5hYwffmNd)l-sf)gI3pF^BerS6^ zTo4cPI2rfZN2P0YJVl%xA(k{Ub4N~+w!9emNmj3P(wjt;cFwX%h7ow0hnKULLbjg8 zib%K-5Z{TB!gfZC4sNIF(wJPB4}Im?sXgzo{qU+@_Bcif z+)>LbD>fmM0DNlm_2o$;ed6f4my5VMdT_Qz6H1qX#v)Nt#Qk!xRx*P-a~G8n;hUm43nUo3JdBl0gM&>{wztg#0|Up&#NY$o0b^j} z)?83x&|05AGp%seE8G<`H@o5FN_hyq_dcnWvk3rg3wuA}KwfU}T~3$fnhWz~T0L&6 zfVPjC0)=F-9MA1NbViv0$nx^?pS+BJAGk1DMHFbb9{R{G~ay&Dny%cI2LGl_N zSryEG4tbGqkLn>ioC}+Iw?XGGRy!wkq){*?5qZr&w#H}A;s~u{Z1a%t{qr1Od{8g% z`KhQtw1?vTumV`UrTE}Gn{o`59j_FhafI;+*Om!V zYRV8-UG*Iri}i#h&Xa}ol??I;H?fmHbscJramd1UN6JLwoHJ*yq)o~;aA#0sfBp=+ ze>-vC`xk1x zYqHL)#Zv>6B>uQAO7(3Qu*BTuW?-_|KGc3th&<+_9j?4_c&q~b&4i9B>z zmcsqz6%_-6&_3{V-~rKjKX8+b1L(r(3WE>wfIDe4F!(Dk2l(fbcwF!M0b_e$IiQYD zts4F)dwn<)p+*dZ8c{VC!;>k%55~J`=Sia-FV&;BzubNR95(E*$iJxm0UPi&@A?{@ zLi0hqV$|l@*Gi)Rsj?%&>Tbfa!(5|i4$lhxi&WHZD(@h8HNCD& zrI5(aV7p3s5NaV?rGPrOK+6cAApHF`YpY zys@TS;*{4uuyx*7f(3X#N(^A}G>C9#G8g&W(VLX*qL_dCNc^U7-oW373s?=D+->u0 z6GhEi^~LL6?eDf5JHLN)azq=T3wy)~l%m~|bA#sSUb%`%>bwX=iYeHmH!R1vOdbt* z8IG2qq~M8*4w-wQogQ8RsJzu{~aQM9gaeaHr-mRppSYZX^8}>9{Wox!lTdmUo9NDi;3M@ zDaz*wv=+_(4o@bUgCG)AbtanWvfK&zgTW9}y#s^4_t+q?A4UZ9-v4K++`SC*EZ zJ3jN|qbVB!o&OOqAo59_r~b>5G<}%p^EnKX8Azm{!sc>&kWMuhR>}^TBSXgmaJ0&$ z!xlL}54>6raY1akVQZ>nBfu`tm5rmUlIq0LT;DvElj<}Q@wdj}UsKo;Str7UjR zy&PxLJ}Knww9y&$JJjbQy-YX3o=&BOgLJJi@Y>Dg4c;`b%kk)0b=rOb!9LR`6d4lU zu#X5RG!(t&`A%`;w62&cRj_{q5cU(Wrm$=1HhbE|=&ec8O{S0H(#hLhfl8#C#~BeN zm=xMlkJA%TvDm0zX_Wu#!`Mz}Oju7N)l%_!>!&?fO6)Q7h>a8E97%E4`QhSHOzo>B ziD&FTr3nbQ;qDvPH;82`Z-|6D%MMyOJw?2fouA{OlF~nmffaK(bfYWECDG!b%-CWS z*b7q5XeF}D$uDTNVnu6{i#}mM6$w|l*<;lNa+{}^w_q}X>dk9L(`hE1y>@g=$ z&-#e-Xv}l)Q!;)tfj(S5i<|@vkK;bXXI!#sR zc(5-@WAZ+UAUofhstiGVfz`Y?FlY!lBfA4>Nhn-uQ#}xab6nN!YXlMPh>R05tC)g} zd*pc5NTM_5zpe#Pne0tA9VNYx5HX&blrxrDq%_sc$WV0cplKS>RlQd4v&maPL>>|z zR)XgJ^HU33s;_xKW*?$+!G6m7>#{_(Vp;CU@bGx5+2ep+HL(d@yiNr_9DZr;K|nkK zW(@{@au)8O+xAZIJn^b55*G|4l|74Owtyo!_7i$ta~jxMImnGTie^pB9foydoaFQy81|iPk`$_t9C7GPM zB-|I7_g+|mj0q_%vtZ#+zDluko!FZ!R;NuJYf-w4Q~jfh&~vo27vuJd zsKjDFU{D3h1(W5ij2|Gjxj`5Dtc9k8s=(rvLhW@g#c@_47F_*&QsGJvuavn6zxjG{ z7BHY*gaamB9Wst8;Nuf$>{^(C8I-$VBf3WR9ze{9V_$5K;sVuOxXjmgWw5s4M6$?N1V7MfPe3$gZ^*zF z-J)Uo4h)nE=_)u$E4^QdXKOOi;tv_PviMgm0i{^i z>e7?MC<4wn{v%AU&X79rW=~tKHK#FhQN$Uny@aOZ`RF|uv9IcNwl@zI13P^ za)_(hzq}B_D)DE{AjeeLykAXnYk$GGe%++?SWS4E6{q9?3c*JIA6su771bBE{evjo z4Bg!=5|TqB-Q6WfqckHhbW4eJgMhR&NT+nCbeHr{zk}cBdDpw%^;_$#jDyUE%k7iSi%cz}0?6@hk>{rikG$XMzEHrlS*t{Km(K`MQ<9YH_ONO-q zZW}LFUh2fW+IYyE9<$K5Z}B7u1{RUE)?_QSGJWd#9i8%$mFf9aj&?f)1%<3;w?}w= zzX>?Iq=@Y%mx;FPz5RR%Q)L?>C1xk7{wByCioz6fXJ~@HxcT(XBK=xK<|z0`IcebM z$O@-$-quUH&l$H{xZi&=1uc-XQj0R+AZcfPmb%Gf(tNK*uv}QHfNyKE4m&fQ3sHC4 zyIW^}epi^GQQS5Nop%zw*Dx4^!-~;cb&UkmpR|IXt!*W;X!2_FfL#i$MTx?*>cd*H{VBa0; zv|=8H>h(DiX?7hrycteB-g-bDg^M^EJKL6>D z(s|k%hy@+Co$c7TAyanv(?i~P4Fd1uzS=@jo|N5{g?8~SwHMxFQ8(E{R^zWqZWSVA zPuRNbogzw!q`VS`we{;i*DN7#B4|Wt6D%G9_XGeO!jB=Sj;pCnDlD<9+Ug7hCZ)?T z)#D)c5OJ#yG3E2vL91qHYBbFqJ~cNOTYSUy)sRFU4m4+4!+0r>Jf*br07<&4hb|0jAMr$jQC9 zl1d3T6uEqRY$S%kxeCWby(WWI+TGVSK^U%l_4oAZl~jm`^xTFiQFO?#*kl#Ev&(g` zzFfhVh`II`jdLw<1w!Ch5BR(RD1?_GZ{UNcMK>eKnUf5`_wFmj!x19NprJm08N+Vg z-2}WdU|R|-JVO0pb>&fmpXnsza4!k_ueWyDs9lFHP#^l3Zd7mvB_tg2-1GT04l@+X z{IRG(itJLh;cwCQ2eN!s2x>M3)j|KbLfnd%Px?8?#Gs9d5_&+<>`HIj4qQNpr0U{Q zk7lj@AO%Y5KlCYd)^+~m1_s-898P?U%yymR2}6zUc%<)J)xB%S36bX}VM0ClZ++c; zCDKP_y;SgRP@&3$X+b(bo)%dXT9B3fH0D|GmEKli$|P)%rlxtWIc^8J)GOg{qrRDp zS)@!kR|tiIClT>H67-RQ8#Xj}9P({=w*Q|RUU&|*p1YVf2K`8+?DIn=fSB!Nx)1T>wiZghJ!(1@SsSEKtTgJ}BL3phF7 z2-NV7#?>F-b)~vIkw@l#)6a~EdsntBmfiy7P80;5;$i8HfML}!!_uHQ4oJttl@q0DkjJGAy+)WpUw|J?vRlY^pq=e;&9q6 z;!0BOGh|2Bv&&hgnrWxe*nI;&#f4sgi3`3aVcN}swTGi}C#=21C8Btczkf4kR!7NA zQd2#8CJqlxMrMZrEL8NLaKNnJ_9op(B+l>oHa=gHBw=j0^8jC(^O&c86KVub#*R*+ zk+LY+T$0ywz=K7+#aB0>UR5u1N}{>ZW?iUDJzPL_*mn{8xok| z1Qm!#1MPfb$j9hO4;0@6j1Q#pz+Gsm)ratz(|d7lU9&_R8584wkXHc^2AF6Q*W{zRBH5V~PgV!-p;?3r8q}e3@pN)Bg@!TCExrPQGv+m*F&T>kW zWz#K4LKtb7;nW(lx#y?Ea8#Gn&jjH8IYHt1;H7@o^3bd+rvpYg%r_vure57($T+JD zJhYOPw-NWANYsK>W@I7IdRa6Ws=e_U<^VGrOH5+Y+Cpf-a3{SMK^$3Jd~AZh?7`WR<=nQzftZFEQP8-d;<0% zp4Y_8{mz|Z0V5q6HpZyScR;%Y#P1ReYC1uiXGf@{J%5sAw&{vFf&3Tm$x&0humlkz z)xQ}Zd$v#d@=U`~ne^KT=+e`T)+kkx?c0dMgBJaH>Sv+#5K$>v;l9`epN)|M zjhpNTarCdXOD%2tH~bs>YeDo`5IJj!g7IwKttMMBSB3@5Cse`nSMZ+;fTKq{gj#(t ze@#&Go8GFVopyCZ&;K?jg8p4#Le4hShMB7%DL`%Z0;~SGs z?B>bt`3Gc~qVB7RpAIy+=>EWL*Yp6&Uu7O*nwq^<2q?4!0JBLCAzDD)d z`pC%#m}I^Pi$UhQYl6nfc6dJSVn!sDzCw#VF_u)cWcrZ~qjZowJU&7S&%ep0;-W>YKYspeW zoj5EJ%e7@mW9|)HJ`G5Sc|1AX-0TDc+GL9!Q3!XcqAtJ3YxTIm<1BxKXqk7i;dO4Z z<9?*i`2Rmng{3Y|Rr@Pp=U`OC8=*n`0~EFLp!I;-&LM6l*rZ?cy$w0=tZCA+I<2&T z0`P&3B?N~~Ur#ZQnmUk8B<9dC=m&g3g3)G~*U;ve*I<^9JW-bMPrXxey zVX3lC%4p`F@WgGh6k{kLC5lGe5-EU_EeZAOd-z;@3LGZq&#^)vE~yG=KiWX*do7bZN@)BABc=-@Hkd zVq*nk)L9V%`Bjxf|chA}Fzv=|y0 zC5Bfxuj@t1qUFeioJqM=cQIR1% z8(&jEa|FZ?HMqNq;jWvQ|4A9*UO!NZYq+2FhYGg^Ic5z@08G3FM!Ck*VxT(}x5L(~ zWR>55r4+zF*T;7m`2X54NTD-}e_3`nJDTksNg<~k70Q0R(yY|?)1g_l^}Ca`f9!jW z?KnAnLP8`+d;0D~36czihx+nhlY-o&SBe%AK&8OPrqT4m!TR)KUSp0%h#@4VCju0d zkVjjM20ZyGWSKY4H}2?}EiVulIV6^oTdAHE;1ET<008*vnCA<1SKdzbx1%Yb{`6$| zv++a${n3?}q?Ym}THUu#J#ho9{W|rrHX5)DskF9@vFaV$eDKC!d}f63M-w)gPzjT7 zeQbSWC9G=5%;#6(2U~@2GG50yVcA0kQlYi0jvgNko(xbKK-d! zaJC33#unRoCp(e(J{J@jMk2qs(4}(t*)yCMvJn%lnP!J^v3Y6B4mj=NwTq2RCEVmMsZia{I>Y}scWZ`OPON#;f9w5Rv zPER6YjK*g%2c~X7*!9-NxWxIbQRD|b;rJMqIubw+kHaR!K(mQCq;hk2sd&obeY2b zVdZc6CCu+)ly>Jzkbr~hV>k2Z4wsv?QW*s>EWcp11ha zE(5>2kkSa1#M?Rx)ba*G1^g@tGesJLqgVX`_A%bls&tso{j_AEGp7N^Q(Wp_7T*43 ze~3Wkaw zI3HSup<&g2TI_i7hN|X|MN}Kilg>=O)y|G_Vk24KXbq(LjgjfeL~X~8xb(1_1|q2t zF-aL`XV-ut73B|){SQ-3S!7r&)61db3#buLf7q9&&N~$mP2P5Kd-=@D9yry zn+$?Q8jpRLDj|uI_#aM6cRVagp;fjaq_bUZEVa1ZS2=%<)-oJ#s572Pbs!9XH^&q1 zcPZfbFWALeGpj|-+LY8ysS{S_TM+$efE^)rKJCb$pJhHXZ*EL3VL@)^Q$(t=r(fMT3ZS!YqxUes(iumHMXF-a>w*1 zyfe-`m$S_iI#l><` zZ*w1Mk*$;Mlag-v%pcg-3?F1@s-c}Gh-PJM3e0Xy(mQ{3Gjg$VR5zm{yn38@xu5B> zT7AVsrRSU1ak_tRLp?v8ApYbaLbF#DBf*OSwcsjX)Q0K4*ptTm z5_Xx~$%RfEu0_`bm%Y)osAGyXSUlAY6|fSK7^2Lii&0B>)l?ZXo?Wyd#=ieGs&h3_ zL9X1 z&I|=Nbe3JjP;{X@^Yr5OxHtKyS!}yv%z@a}i4SOX<44%lQtDFE%IJ7C>5;R6>nY~k z5*HKw*F8w|in-sJKI}1pP<;T#3Q!TbhC@;*se|IiE`I<&HvyXzL!~`k(__F?E>M&? zUVRzx4fF? z`3MdrW>yHW?{;w?wVRVv)D%F)uYjUK?jy{%?5L?Z5Q#g0jkvcHe6WK0)J)_~?CItT z#sas1pdb$9!3k}}ek^n4P7HuBa~s(9IkBY}!Pr?)CT6g-HT|Fhc10AJ>kGBflV$E3 zI&szH`*$RxYKb!10Mnq|Nt0KcfS)HLYH}Go?@v9+G@Wi_-B0^6YC^h4keI0j1PQOj=ZUMv0%9pP=1(X zST|Jn+~*-#9mNDH{HEf>eBs;B><5}wB!%XChx6;39aAEir8Uhl9d%G(f;_r5?gdfg zb{-OS*3dO?$y5KMqGccfT_N!TZoOuz0()&Hr#$k0dINT}D)ul>k#bnRLcBDq-7L!G z4>nGn(%n)9+U%sf=3U`z;2h*;fbTeav%bDgbHdWg6}9{i3BIZC;xaZiM!sf(#{sq& zh^NtQ%6+pB{M9w@Fab+cLfl2jC&~P#SQ%<^)zWD|jzAmd1XGLS=*gpSmgC#~+(=#D zygl@1!1_Lv1iYn^Ytr5xxqcY+y#gc}Q&TETO3@|MUm9@U(r2IeK3fW!%5lIr>NQLd zkhz!RMh2i^oJ`xVncOLp)@@ah%}J;uRjdl&grBV`jtNX4BSL(BZ!QT>9u_H9%g`%dtWxS8h9$cxoH08zO?+7AHe`vYqIVZNF|Wl3(IhpIx;^4-1H&`Ja#NSvdl9F5M@!0R{^vsbqbE2;?BuTBD^VHTHah zZ_qaE`VX4L9~n9h|7IoitPqE+bwEoENKTTQWkucnfFQt(FOn+K|_|F?sB~ASjA}^`a81MY`*rf;-Vs7a~je4`fr~Y z7O&?7?(m8`K^Esy^zGXpIogvyZi<+6%U)PJ2q46-wjep9^(@h{j?fFoFkW4^(p0kG7xwG}mDKyA6uT2b@<2Vk8}qrec$G z={UEJ)WL}#&SeQn0<6uHgJ?xPXl>}pmnf*2+`Nx9EYF-LgP3e6c+_U$NetZc?@)6b!i?`-{JHsJzpjM zfQjO6Y&h@#`6O3M$z>e%61-h0q8!!z-LL{5^F%+m%7_(kpn-(2(yT)%7kx!q1aGUk zvwmM`i-<|iO(GG^HwieLnAA&Sk`mJR0tOCg3VvBh08a!)r?=sk)wYi_jdfu%o)f>1dM(!EG zpbA5*pu#e#qiqrA%VD#7ff9ZPV$9DpHGurk-MHZsk6Mr+DAf3;kMr)=q8R7TdoCQ7 zB$9yOA(~2Cz1@U_O7{ivvfC@XXN{Gv?Za}K-GR~Y@ZDK@t&Fh zG9UU=tYYyyC*4(9X83Zcb?U>*?57)g+nFN`0fFW~ctbyg${#vvJhw)6s+IchUT3sm zL^FN})Oq|8S9#%fiSikhB@D!&l@#+fdGyzUmqn%128}Rko5G%7fb^hg??U_O^09$s zSK$w6@T+FW?A4uBiCm*6&fNum8{-So`Y@VAhKCC=5?-(Qwc7qBK?BaU1U*vrjRBIM zl+a(<6LE8OFw*WGskQa+)jw;1UbQx5yAc_XJ zNUe*(&5q{lvF$|#=${^J5k>MEGgdN8j_>zco84D~YHHF7GH8x_pH4}Iuu{?C+?NYS zb#=d1-y=6cgwdWvo|lu5ffo<-Xn^HCm`%_`EmM`2@|8{QK0}^1G>bU@4osOeZOhsC z+cxxxE!d1`Ppt5O1 z!k;6Or{nClT-Nj~ABm9+bk*f)yRyd5W~0%#Jro&ntr3;(QGmRI)4qy>v&~1P#A4kv zyLWn0O0#5{aR4)sXP=~xK&ayZ5Fi^?Q)q^wALCx;78->}m@oX1(G}U@9lQO7XxZm) zgjOdbYr+|_Ne7o5#+IajfC2#e&Yyq54i=ssdlCL_a?cxl zqW^kje)_j?@=Lw*X1!3?Y0@vhw6Zeq>}so!ir{ z=%SNtJEhJIsQ-f=@lvv-N4W>TX)%M-=+`?*GJv zHZ0Y6Z8eVgNl)*&Gu%5pjSsl^KhdG1qSBmSDM$b9j}LnMHIl#>yG1cQIEV=#XSw9B zW=9@g^U=QtNyh>eZrWPZT|1Uzusx;|%kIk7#(bFf85zO1k57paO|y0@Mha)S=P{B+ zt#%yirz2Ln!X-!}Wb+bxdKDppjlN`=hQfg<)YnyRQ%Ih!Ysf7A0*C`=+?72U_BOk7 zZBL%HyJnB+ZTdmI8O-=``&zd{Ss!m#%sd z%WiH#v-`E(w(<4Z;aP_L1y-50k&J42F>nGeHGm}9dGEb{31XwJo5T#jy>>Lrw$Pm8 z#Z|rjkroPcD&*E#QB+f&MCEYgz0i_A$3l!7d~VlzgT>gH<2U)WeE&@zj{8PR=^?GY z?w-4|`FevK%TBDj)3ww0as6vsvYk`~qAcnz2tf++{>7iPh2(JJFY4MnejBEX{3Kjy zYy9y1j_aaqcg()pD}CzLu~&}!TxQu`nR01w$ES2|d1h z6j+{ooA<;&m#q&Cw(!yZA|DrLhPS=l@zIv=zyr7H%SNu+$wtp9v+B16k5~tEgQX^S z+?}VnP}I7#T=|`xu;`fX!V^Yu^DTZ#i_?61+a(vS=Qx58zcc~~^S+4GU4ff-?`K67 zA{T2M9c5@LnY7Mkwls+NY*@o}O4}YlfW+Dxz6z14air~!LPYR~*!k<*H5-uIw{2EIpK&mFwLV zQ#;?WX2iOEE|cWL%ZJcjH1p&#=79&Tzy@izdEAmXJ??kux@7{KOdp%3QVQ{VzvG9v$FOV> z#0(O$M9u2KSbVoiw96NaS-#(2NsN=6ot>EyZU6Qala`SIe^x6|&6ctfMro6RTv&@m z0XE9NHeyW`Z3RnJ*#5yoc?#F^Kqb-82BAOBm_q=ZM)V>xFDJhyg7BmgdloHnJE_;# z67W!}xaE`;K8K|>6H1@VV-=(;n3G6Df0N9A>(0|;qG1(%6Vgq~TGvwiBMHs{oIP&4 z0+pl1Zz_7-D#Y$hWs>vdCf|=)|D9b#4(L*P&-;p6H1=WR@3+}~N>%J0)+woInG7yB zDb^vM0&<*oLvQRzMyzb3cdOb&y|}+WJgoKu#jWDw{jJOHSk4R_1w0o@&kQ|nxlB|8 zE=*!v*$)anwaZ~hR>LW?R9yn>v2^O7qjj85XnMKkDKW*;g`NV@*z5(`wIxX#FRK(Z z&&bsKc0pK0_)=`qx|WL6cK`g*93>3D7m?9`QX3Egz}kyWSRK=xoOG5F@1zJ?>DD{5 zO#6zj1L~<*yr$|6;>%PzJ6)Dfoy;b_1f8B{d{mP}&6@$bHO4Al}OJD+#t6Cr&*?ujXxx`!U_w!r-M$ zBP|L<@Vy`;-||}hkC=N|f({1HF80>v3H@2^oeH4*<6zlS7VnAQ?f}a?6#M58=E{A{ zMWl|D0ShuB$7{;4(r23rqP|E;jsgGq@+S)x7OxWs;hq?JG(zhMW2P=pQAE;Y22WE7 zhvi0yq-t~PL}U-DQTp7slk!#n+l>F4-XUgk2m?`%=C}Z3F$Ix&ihBSuib^)IUvulI z`-<}fWq;p$6(2F2dw~*J=wj}|&0WFE`?wlx^dE@ze?B5!nx^?Og>4dIStCaCuA~h` zYbzRjoG)WswxqLEqT27J39Z9HY*e~ZVyL(0-FPwz{|_PiPi6>-e?@(FnQ}M|dA8WX zbY*hjT5i6$N4yEjUMbmYOTQ~Fwxa(L3fn!peEK0}$^F0b$+Iw%^W5>KCCIHe>BlXd zjQrndC4AI+$^PI(ErG^Z{r{qsM)$*>p}{(RC5Dijh%4*=`R)Md1Gx0;9%RE_0}*_osVylhwj-fl9WVA2_a^Ra#DU&({f(ECw<(oTzj^tj2PmBBv6+l26asJG z7CB%%0=YUY4ZB-guYhi*E?25zgU>a`hYl_v=fbDJbm6DNVyzoIjAV$#a7j20`w5p> z+xN}>>zBrDjg_~dobk^b&-3-a0WY8(L?K2g5!t0RAO;N*ty`R-*vn)m+8Glr6NzP3 zHegJR_BV*-`{2;m?k2s?C7B$~-;8XkppxBS6mTlV=b%c0Ay4wlghdTD2kSU|;FBAg znwYyl65B4UyGJ2NI$f5(ll> zmgy`2ae8AZx|QdMZHsrc#c0SobbvO8L!)eFZsNabS>~SIS(n;#gH3#37a+WW+>*HR#AOJpV>KgB1ugi+L7ZPd~&mEGT#K9*H zIcv3B?>HLTeQk@oq6I8l5jw@u3%{FbS#6hqV|U!hh!^d79UN<9_shbX9WdmH@H6Sa#jM1Mbe{1d)zDHXmj%n=T#~;1%IYnLssaI z_qI{bm;&#?BRS9dDth%Zjgz6w7_JHW2;eb4Kt#nH+J=VdiT-l4%F4=>uev_WR|l)3 zP4c3x*U72wvA8d_xeI;zksdsNu-bP&+8l?ywY?TS#&}(vJl)CJB$;bkg<9!+H^}_K z~83Mduwo7F&9eIw*8eA^A{rcl*8FD0G zq*feW0^A7(L)VGIjql36Px(p%-Zwp*l5d}g1FjdZLZyD(2alJP&LIKemK}H7m-wZs z=ajeiJr!CuDP%Y9SEHUva#DBR%gn=z-o&d%jlo!(I-#BI`|_z7p3kZy^gxtIBd!JkzK;zc1gfJjum&||F`-4 z|Aur3nt4RCB~Ve71PjaF>NEY}V4KT7d$Kt#uya!&0CT&@K&&zaE6S#C5I0_R< zLPEk4NYjY(JX?Q7Mn+c54jjtSR9IYI1~ofgZISDHm5-cnP8Ei$h5bB!eHYcg9dDp7;%Py)IlzDh3S@~+0*6B#jij21*Cm^uYMC; z5I1vO?rachHgjI?d&MrH{t)qV>*$=q@B8y-GYT_^;Y%zB zl8~#hh5yQ`@rxTm9=>!+ZUnsV!Of&%Lwu z(+0Q4`J=(2lyI*rZfgoF%+5u;jl+#kdw=9MA? zt+xL;_m>3Rv4#y(fbOP7Tqy6Ftpb+5ZaXw z5*MPZF(oX^QONL_{qBTK3`?AeV>Q7ZpRo|iCn`=L}zzbi4vBR zybqT$7f5Seizzu$dDAr9+?X1$c9rq(b!i`ahU3dCpLQtKzPpkuIFyYSsHT{1V$xf$h_s+-$1I(GX~l~^m<ExRarLeX)~>x#mZO#pYMbD{M5om-5g36ii2x zh=`B+zeq@skQ8@~&~!%0q`R&VsLi&B-y2Pn)OJOrQkof#l1$vuQp*N>%u0;8B6l55Ho2mzCA%3XM*NhQ2A4GO z6M^gJIr@nmI-{n(6(kLAM{M4{!e|8PM$24#eF$NZksa4~KJ99=~Fy=>dn6VVz|-8jBHzc>s>aj~5~=at(fBa`19+TA$;VwEQm z`E$L$Zdd5R6f=z6R2Q<>Q}@L3x+|vTANIlKQU~S&)js&G&54O1{e)Y$oYB5}K{XMj zcHscst4mqk*Hu_APzmyE+C5#x9F2tKU;L?LW_3CE%N)T{1D}uqd$;{iD*f~+p8&N# z#ui??t9#S!OrQ3e5cTtbn=R;?I-ONhh?^~1k(~hbj-TN9odj^Tl?WjkXh+IohL4xd z5j>|C1Hptjv1V&m1?{JLq1Dfkr_ebf+&VVq;4TADNU+kX3YA8+&t<)(LR;D#T7|eE zCCYo({XZg#hXzPLjx)nzqjSW#*bD{ENK*kWV|vE>6|ksYgnC6VzoNmn=TF$b9jBbc z^_d-&y~Z)wxZyk~5G#~FJ-b5tl~HP=+G>Ub%Xm06<0?BlXnKW=#)N5NlA<>BG>Bs#vx^U zwrj?A9Fs-?1t2%R{Sa4j31T(CfNe^-6LG=gBDP8_)Fr=6Hs7*0y;wRD@bIN1h&e#C zzkfV82Ldm9eilrs=4`v*vX=?x(ItOnr&tzC4Ys$5HM^|OS_2SFRnuu3oSL}end0}# z2?KJn=OcAf94_PcBS50xpNgQx_;y>tbfHRoT$HNu(~IBHzQOOhEMKp+!W{YmRpu`t zb7VvvZMpw8!Ih(~_~=K|J9TuTC%=W`CTf-A98PJ;fbIq!YqRt8TV5LVyD|fTn3db7 zpO13Z(YagSC*9Z|>?$t|Yvm)pIMQ0vFpCnHVA;!Do16*CuM@P60^=*bKC{(6Y>zyw zTAr^I*(25F*@^CC;hs+7Om9(>|>6gawf{u;ueUQ6ib zq|k!w6?kA13#MTaeo4<|681QtZixrjS!n8%{xL7qMQYCpQdA#G%5Smvt^P0QW#~T~sKtIQ zjX;5!J{I7Nf#H{UBl$k2;#Xl9;50c0S_^>Pmj+*Gut1u;3AG{@IO<*RajbTjYmD2 z`G$((XqSZA?s$*+@tcQa>UYXt^S{aO`2CPbE$u|?qC+yzq<1yoxF|i=uC@{c+${Ms zms&%BDk0aaKE8PRLeh7>fx$L3@0As-1n>vYEsnuo>K zVQdl&wm+{}+OFFqmdT*KHd!5}a!H^vZn2TSXyAxM7W;!^Le>d0Fl9P9Rs2h{8iQYY zQ>aQAvP}5Fj4V&tFEiADh>@D3aA*3_) z6V1z)uvvQq90Is*kYNg_sb6K7?1if-XzfM4vHv#uicP|>ZZ!&VP|r)C2OuD~+bR?r zzs5bc%-tPi9MyoI_kUu!Za4w{tn2hgaBeFJP)KY~3_Nu#FJjTN&KA|Oxb5>w`^gD6 zd<0a@pPj$oF#>U~oX(%lvoC4^1xm_V&A!f=J9f3zkz;0rSh`aarV8&E@nT=Zn?gE( zzPr5^mWAE;m$1X0O4@GRv7%Y~cV~>13AKu;S@9H!JE?iXL zkBvWncEbQSOvU~1qy+93)B1<=YdmN3Ck7VHM;;b*1>g>)?T{$DeVbG*@HV(Oq^ak~ z%--4kivu_dFI$VXlY+A#=@IX?>#kuRIHu)%dUmAt9t&7z0-94OeOVxjj~EMB`C&b{N&D*2gQZ1Sv^@8K(Fl~ymwMo!)?Hgyq4f^x0btO3M3*#)qDX+> zAuICsJZF@dyjVte?i}gDkq1%Mavmt|Qh=ihdRyYd*rKzeh}kh;7P*^LQ6oT*I-3Wq7T%C+~3dt2Q@)p5=Lw!)*fLE-;Sw&3E-UgoK3MeSJY@U-|z&Txf%IZ2+HVg}eV1 zKxv+yxS_oDS5{cZDCmfnyBw7WuGAvIST~XBcvEXZgU|DnZzSLHA|e8?-kNdko{@}U zdNIo+5S>W}N=nUX;2Ix7WLWN%-VULh2+)c$cQP{YpjW_4-!^!8C!AXD*eK(8RjJ|Z z9mTz~kB$t_7X`|GwCpC;D_`Xw6rzCXAa82keFa|nmHuAB-YEE9F`AhHC_}S9({$4W zS9Q*Q2YLtL1c3g5O^PS6!2?qUzF60r{}tl_1^WdTvlMkJjnE(yvRZN&vj{o<^{cAz zZCu!HQf?w2_wYhGm@1)|vtSN5&&F>vcR%ni1Df_m4fyG+9_T zWczAdvFIyfmR|qD?`If~&5|3q(7P(*E}ga#^wd!e=oeZqfBmHQGy-HBAO_Fn=5&n! zjslHzZ7+C17cqF-LiK_Vg*m{kvAyg88Al&1g@3Dn^CBf`&+_lMAUVpNy`{u(f~Ii3 zOhXa=U$UMT$5T4kt?K=o8E8s@^IK1=>H7V^ll$+g@!giasg+FSr!fb7^~@JM z4XBx{Nd(2;=C&SDk5QP&;e-fkm-litk9l#p^iEcgq53*59)d4U*lb3>o=_PDO zsC`0u;Wgh*Y(e`518tkwZ;=0^#dw}+vB%Ze|2q|s;R~mUC?LpgIOKTeaqM#2iSh)7 zdT`WIz9uF|ROtxqviW0zBKcNni(T`}zU_TN@swRdlh3+R&a~jK`FRZO?5m|))Q#1U zyc)E0LszC%k=B%9Y|UyO5fhpJVmt?2pT8mCH?P;|uWtL8t0szSX5(s-WG;dIefj@| zvb>)W3KxZ<$+hF<<_5@9n`U2-Vj0AeCl#BVJmWVwgc0D_7$Pt$Q~JmHZXB0F=PI3} z*r%}+6to=RJb>r_oGXZtz2i{H=Ipj}`D^d-BdmTYz#{9p`(AW1*ddNWE3CJ`BgTZpeJVfYn z{|U*jGL&V(+MgW7*LK%KdMRUmeU=|mtyUM2^8|cUC!_6sVX0ykn}_ALlMq}KrAIHc zw8b}huB|fwc9=9W09aJ&fUIZ?6Pl6OHI0b(>ja8Mo|fN)!#@P=<3rpD6nl71wiF_E-Np**Ab zH{lfl6XqwF4%*`pUNzJRWgy^GRVI?w3<<1Oz^l8B2P=lQDAZA9$3Iv27;o-vo{NrW zS-T`*Yj;;}mH_ZYzu%E+H3s;MShn(nf|>nOiMtM>i!IcbAeP_LN7ifmUXU}F18Z|T){0N=zky{7>>bk?+yFe>sf1l z=lo1j3lzAuaXi5@iKaW=o*NE}hxk4>8Dq4X)6_CGqnZ2F3zP&+V1I z$c?^8+^+M3!Q{agOGQG~5UfDa$5NJBI&I=xDkBy359^Smz z?g=!<`)|_>MsGO+X`@d zE$#e{GPv~P^0L5BDA%CeMNtu_a9jlTs!_5s_h{KF2fo8WMjNU_njPjl(Q4A&E7h;l z+xJg0_q*!zjbiQSMz_b`S`KXi?Y%+^{M5^L@$(%3Lg7D+e>_?4*QkmmARs8!G1`x0 z=-pW5a;FQ6GXTp(2a3(L+4=9cqpkx8UA;X^+qmqbMV(YmWFn6WvG%2b8kYU0E(j(Mg@7L>NH?SI30 z3f!;%)*sbo zCKol=0(akqw74;(r3%YBQ)q?l)(<$6m5}EI91&x)Rn-CYAC=7@^^VHu<|QW`V;A+) zA&Lc=oFLV5agi3+jH}lH8_~88pb~wnKY@O(QkwFtTvk)dW&|D!OXcEv#AU99V@lgp zfB5DhvlSoK;GTa-@bt1y0|LUgX@C7Pna~0+`961Ls4j4gVS~MR9C}&K(L6mEaUP- z_O8XGBX2(ZZ?cS7)=Dlmkp?d`lVOUbgS}@K{Kg_TjznL_J@_r68j{qxNFIK>G={2l zbQ$uEnjFx95Fg&N?YefDgWz!9`e2Ye1n3pZKXQ$$r&@Zl6y~R(&=47SI{MUUH)B#d ztT)$a?p{1}4sKVb!(ST5&M{gFjiv?}?-RG{X{tWUZ~{| ztC>gRRWUjo0K9^<-R2!z;85gG(=0AIJ9z8^izn~A;Kz;>#zvAjKl+-bD!Z?K41Mp| zzbudROTO8I-MX>k30NCg4GZGl(cV3A8(13=8%J{ zFHcKywvOvhGCR;%rhA^2h6aa{QuV`RUa}IMA^XRP2jEnO{L6|@?z8HKcn(Ocs@EDk zB%8a#cPYC_oyuVJ;noF(FM;tjrCL-U!D%rYA_13x<$Sei%k=IMfqXAQH>-m1VC={d z=%7eelBHv$UzxbCr(&k|r7@%XAH9hb3dCRg$0?UT59bcag^!qzX-|*{VVksXRIQG? zL%B(KNUT&WGvJs^OT0@LzF}p7Zj`At#&%iB%=8E?CWp7cn+pzWT%nv&44g8F?q#tQ z|F5wytE*@lW4ns|>sGn}(=&&G;6#|gfZfBJK@~pULGNera7E0>&a|^PGjU^Y!pZXED?F%~Lde@B0AKFs=paCk|?#KCBQi(?4RnFrHtbKJ_YU+9G1?W(Xt>U9FtLKNwlEUb9)XBp*`Ed#kh zqa=a4@)>+~TfhEE(nWR67g=yth$t;(1qFSco}PVh&=mqb4Gp{$X&1RL!@F%)o<)&M z`1fOlvuBwhVRg^NSGI0R6ND_5$NFz!{#|76Mlw9$b1Tg4H|L6Ok+d{D54_TqKjdz3 zx#H44y-XiN%LI8@5Fr8Vv!7};@Ki6pm z8r+TVbuwaUUwdoa*kQ)4ni+=+PY;b$dEFmst$vbdg4bXnlM(CgmIjtt>XM&YpOpBZ zBABhFxg+lQ6P61P728M<@RgFQ);Sa2?LSBtt!90;8JcBwm-B1Wno5vaLV=y`@YQ~5 zBUfsK#ptb>c><_P0s`$A*`fU?U3uNsW5UGk+OCB5hsH`O1rWo!A9RKRA`*v3e8oOh z4wE2N`!!cs=WuP$887em=N%+DIifI!FFxCNZ*WOT14$kVFR#5#JCwM-vzRgA>TxO# zsp<8WNW3bu-@B-Av+^EN@o%F$)b2k$?uE4-joRWx?;GT1A}NdApvs+>XIoUyY}!G= z(mMKOey(NUxIWvPFsI{V%7$GMO&!y1wZW+@B)*vAhu6d5eF-FFjR<0tx4=kezxcxhJVeUYhOss+fy{H`7N`l5Zf?v z=ltv0FK};t473pV&}DXXv!ANtKrwpA^4``km+nNZ-8J+fMz1=xtK$9k#+~@V&`CZ+~miu2DI?oU(a6RfF&5bq10Zo0z^4QsJU64#E_g1>fG8BK1Ir-i*yk>p?=A_ znTiLhtAV_IP835=tR$TAje>Txw9lj|kJQV9ktEP2zD=74P-(;(Gt^oqoCioA!%vp# zEGj>rZ_AKjTQoq&>$Fp!;WyCqKO9QI&Ilg-I@_4p7r3+=ba-^6aknFPKKVI8n6RV5 z?w!__Xy}+o#lBIf2jkgS^9d>WXuft{2KsJ9R<&$L5Sa+U73Ke~;sacbkf(_fOy8ho z+L|RVURgPG%gTMF=;9-ebjSO^bEpJ4O^9_4Kb8UATyXiLziY9cSlfk~Ik;VF%(Ela zZf67G@v`dnjyT9C69_qWk!JSc4-y2e6J_=Z(Y*EX~m_@4kPB)=M)Xi8` zpP2rPF?#abMvevjluFVmqembc2#yob#Hr(ybRihCPzP%;vO!rvaW3oK1So-F4|(BK z-XOP&Ud8qnl>WE`2L@KfoN9M)-C!F53t{~tg}YdzAYAgMHHs zC@j<{2#$6bdhBo_pQW|YR^ol5%qOs9gsE$b1HS0wjN}o8w|)N-tG4t)lriBL)iR2~ zLlfhfc1N4iR3J+S6nqY}3ds1^H#y^z(m|5<2Kh9K0_J zpnvGk2f9%NKSlRJIL;|iU5q!=lysqJ*fkCktG$j?yVzyiMy@?_piguE3yewgYAJ4# z?^(Jc?An{91iy{cjb66q>nKMx9fXk3K4KTZ3rF;()X>odJgV-ny(`<5=NHmT+J z2niI)u@`wFOLULVEZ>VEfIqfo9u$}N?E)EQmPT+ZzxzG> zgG%FegpiK1uKg0D{Jq_qpR6s>6gc_IeZKV_$Nn~N0GidvIYWPIqFXyGwj zOkJEzS0w~C%!K%!DFN@GDIV;9v<)(9d>owjl7Z;4zxv~YXX!w*DJ}$($9pr)tlbLS zSS8{7GLa;FcDGl~PCGNW`z)8Y;U-EyFWoAjUTibMSjR5WvfWui7tQmM$1N)tpR+Ye z!T$7e>XQUn{5&r(BW47v_=ae2z`cIWubXTB%bi%n5^df`=g+m$^S7(i%0sg_5T{-~ z07v_kR_&;Ixvpx66*&YukH9cWVl;E_=Pxl>nXA34Yp_aTCtzsX-`{yPG&IEMg@lDk z0t`}W3t#iAlbLmy)yg;e_xw)^`^|w1jb=f{fXp#VF$0%)ZcUM_wHm|GC9)%)$n}uz zhi~gw!E=-Etx;=YsN|zc-+{jhffo<$61IFLWcksHSDodcq@Pl$+HM8rX88{ag3Z zuNdC6yU0gJnKD39{0mhJKqT^Se;*KlXu+FWYf<+3;l6<{G4D$P(bOtjShMzfP95We zgh@5)Ivk0a=Hjap#47fm)qvEDk)L*ksULlE zHm9JV=#$NZK=m`r#L7Yc)xm0#*V1k#(R1%)Xk9V_XofQ$tsY@yG})^4)ji&2?9*w0 zC}$w4=e}yZRgxx zYoZ@t6Ug+YN-b^uM#06_p>!$|B}TeY%*u*{bVm8Nb^#p+mZ!XUb&QlyHU)=AS-Tx= z$$I}4=sqUP9L? zS?VJ0`1Gu<|Fbtymmot$++@tZZqpVPxb7-ou@ZN(;9tw|h2rxjk^2U?zsiMEWOhhS z<38Th8}Qov@$K1LRG0u%ILPNUh^7lv2!y&xt673Q!&Xa>&Rl<1o}`pQqF3VJ1>~a8 zg^YKisYV_AI->gHzzHgUzWD}TW6!|FT6LoN4cX4?cJCm5W z_AQZhaBgl+twf7C&GbXRMS!TF#FY_zSFdclF||<@w@3KC z4}N}-EOZoa8zzz;6`&Jxzx>rx4iI8J2kQs@DcF>?yV#)|l*)2i=EObcC7~cll{=m# zAH#IKfC8cqU0sHCT#jxSh=lC^LhN6p{_k9+qLCPTlaC)5wsx&~pDr7p{WMuZ%zF^I z#cR&vl|epRHMjGaV(?2O6?IQHI|`co?+L$ipa|HxIIFrotoXW4%t*w)hQ;OwMuQre zJo_!tbC=--=M)w;{|HOq;0(6oRGVJHOf`RZqHAF#in5-5;C z3)e)$z-1Z1m;Judg_2-|kR5l8Zx!fM*1>p*Gxd@^S~HRjWS3+M$79vZRs3n&zeySx zkm*^W)1=hYJg$3*t1ud-LGf#z;IZobl$Uymf*0An^HVefVD6HT9o>!}m#&WBa#({3 zaTqoevp=uzilvo1;D}2|fB&>lXLWOO-a!g<{~~7Kh__ zIUxaI)_mySW*}>%38k)zKuiXefuNxSJ@g=^_nYY&-5P{V4;Lv+=l!e*htH@3G`bln zJYM|fJez!`^~PFSCLrfUn>{MaGo-D9622L}b@c-Rkyek$Pr$HvaB}AJ%R}Jsnh-kI z>JT=y`+F}CD7e7}@PP+A>Re!?mMy=r%%oR^Rh}*wLEEGw)nUOKv)_;uE14l+X62!! zPl@DY!}S?sSL^wOM1+`ZSMu z{lqIcIfScr7Zh0iY99Y zsPZ+P;ob}WVUb=WH@EBf&DhTG!H9#v*AcSB>eCsEsGKsBj0)1?tibaN1tGsU=|nJa z+A$EsKs)4Q_TqT@ajuCPO&c;evDRq<)+ii00LBik={=Lo8BV_3ygOvW+vd3U;>zHg zp*lAE)Qa-l?P9H~uY!MR_J`SpttU2+J{0OUG{$lJE3~)a;Kl^&^uWp$0KCLDSuy&g z5nWJ6F&?yx_?ll7`IxPX1)MS_eA{=^bt)Ek#Z z+J3&X?0X@X)sXhptkLOiA6+t*Jmi_w1 zY!TVgyZTF+d#;<6!rXDNtA$tnlyTrRsoC{Y-D{;HRR>8jg3u(ew*oF4d@63IBL_&S z8h)`F^#$YkThKRvhf>ce2QqlvX1i!m%(v>qz|5LIt5d9I@9l4>Dokv9XMzW;y^1Us zD%L-0+(FAx*wmGgFKnf0Q2C%%I}f#)@=u(Q9AtZndTG#_DSs<>_PSb|R#EA3Exm0q zPoloXQ=>Q>2deHs3kbHc#y~NCy#d{+O7_wgC_g@N2n6{(9t3^8`P^eTN8hCv+1c4{ zq@Z3SmX-lzsm`xM$F3Hhm1q_FjTfq}+JJXWgvp?R3%mhA_bh-$v@-1NR3eBd^WdA= z@!`Jx^%gypw_+|Mp!BIvMUeEeLH=mt8Q0u9Z-TTtU2{h{1=UOgH{2`Y6xfiWY83a$ z?Bgg9Yy@dx6O*%o8aq2DUxbohb+7iA@@RHPBGFcyAyETGhl^N)kG>vn8+m&uck4EVk59L zW?YeohinBosW39-VHUfqgVpx11eB8XoG6e&Mng`2Xm7hps^;B z-uc?hpHkX?V!=Mb2Cer*wjx5oJp@8#lEK{}5f5`a*6S2`J1M7qx)TN;WbxB2+c50> zcwmkM3eFD)-rTGIS&U7(ULf;rU&#O|Jcs_gPb>PE1zn^XAoI`G(~nt zSc>gM8>0Kqlb8WO(!+lNlB!@<6YW=cQr{sM`Pb;G^Zv`QqX3d+ zi?UR&uuVl=?^iK<7+zZ1xh-o?%nEM*z=Y}4kPs2G)UqYb-yN-GKcR=6AT!18eGCVV zhIT`J7oFPEa^|k-N4>T1XTEz3e#@O_R35QZ!qBqPBAH?`5XGS{L0WE$2v0+SF>)hi zuY1-tizh3Iz@4n2(S!M+RUPs@Bx;CbL`Y!8=I_3Vq3M)J__h@39)yRjx@ll82#6H} z>jm*!HbK9KM!Q2dU!J{{LtI#rSLE^-*Yj+(<6qxz2+~(>>M(>w zB@?aqgIh3D4`^T63Y77Jxd8b+1dL}TGe?gPjR2e&oZ%Qe{>VK*LbP{qCvH!XEqYQx z1Q969DjIdOr+61ZmG$GSLU~why6+nch*+wq$U>p0N(}gz$Pe)F@IXr2xP5#aUtV55 zBr>wwCuPCNS$v~vkeb`VR;N1W8G2s+u5;!bp%l@H`1fo|wUSKfcyH$sD>o^q+eMSv z*B$KG3O5S3Uq@Molh2<87`=C$_2i%!f@15a5;>90N8FsGEa3hUWkP$t#-94v=1#>d zRm!*4+lrE>jr6yRH?~*XUc#Bku9%G<$Le#F3)iQkcQpkgzb7h}wztDuJkCwq{gC=l zhqT8SfBvWSneiby(~DCtU|w9FXy1*o5Hl9xfx6=wRExoLYbd@U+81l}AP07O zl^R+PZIIOad-eU@D8!^Jtd$2cP+uu%e_wmz@X4Uzz*wk{7zvQ2io6SSF8IxRdfJiU&gC){-IU4?377K@ zsiHco=EX804zlL3XZZCU?LXiNNIwL1Rk0VwHpNhW<7Wz8f3UsW4lW0$RpuN?Q;VC% z`xmlZ$3?Z5D`t3b1Qsg!5=c45Da~$nr`+B*Zsb_D0=}tbtl+$IyWxdLrr?-4=Y=&S zn4XpAokY@bc>aRz{^s>2S*@KyhT?V>cg0W2;3pruQssXxQEo=!O=5Jy&geNgIR|U~ z_~rq=&flfF{x^$^H{S2DtHvutaU=q1^rRAnUh?m+jdz>5XFl8GQXm=SpR~v;Vwui{ znZ=;8=sm)4nHT>PB?ahKV88;K?5Xla0cb?ZXU#7RzNP<0KB2N{AU~eE3*2{Eq#=Fc zOiu?(umYD#dj~MpxbL|PEP6l89Q+Y<0;cOE7z4LnH^-74z?ufrKrTs?sQ{Y>+e!JZ z%}{kEd8$3O8~~>Rds6q~--gzEi4}U>!6T{H>pu|6tXsxhaQS<0s22CB(z)kGyQBB# zQvG6KLh3-J-A3ff1DSaIE+XB!n9=9xX>N?QJg3}f@H*kT#`7!muq=6QM#yS4y%$&x z{(G?X`54xgh>%cfPVInX97t@&KG%~eH)sSthrx$}j_X}uRKcvk_P`9ZFiAHoEg4J8 z%C0=4>tdk3dr3pLl8bLl{TklL{Vd(L^#J39I}?=V@xZ}BlV?Bgpz1%gc|TL+MyBtB zP%PGI8I_0lG(r|kS=X3%qMy)`NcHcRMp0kPJ(%N8qYLBPdoFh+Ql#4~$Kgshht^pN z<<7rSme59v^5gr`9^y;D&i|~MJ&aa33s*sa=vhs@6pA`Tht24 zr{|DpP%Xb^11Jx_ea17{!2-&hIgf|bhn+ypTiXfaOrq#GBQRP$>c6MvrpEdoJTqXQ z8T1ucoeu3es~mr^Ig#)X;9pO)pYZu~_^A$gZt|ZsY1v=UKViE;!1k}8V&zUz*t2VJ3E zVMh{mvFT~XU6&%-hp$&F_Tkm*K%_eRd{+#V3$%W(p-iHiZDt1q$HscasFG&enmT(a z|MfbJZaLB2(J?S+uz%9ZLuJFOVzUesbXa>2d?qhm|iv)!00TRg?n?djS* z&f$@xTvt4k+tsi4c=+>-#yqJ9s$=f!Z=vd?_7*Ob(jv`RZ5;$SYONF#R_qGAyNZ%i zV(tDvlhkY9ID3jX((WyO3CTCY4winSM3=(c9gw8Xi9>NjOgJaf40vZ0Pwo%$wJ<;a zb|7HWhR4m0j)hPvu3}!9H%DLv^SJAmsi$2xNzou3H9hrsgUvE+qbxb)@o;t-1Y%-L zc~XArx0~|<49p+LheitrUNxPqkznBN_qL$YCZdJwEOG}VNJouaJCK_g??XcmYxnN| z*A#uP_W22DrDE)*L|Jgq4@XaWe$s_y`BNmE-L zhk{L^8!_d!JIklwHLyf1ACk*dU0KOB1Cl-|QHFv~nSQC#?ARlM=EjqLWCKwbjDC6K zO)}>gyK@&Ae~P+;>)&P}n2{2zqRs)AaRB9tDW`*yI*gof<$C|yY_8=3mBBxjraGZH zLgD?}_xxn(&X&i;6D&g0YDUnF35LU^S$y72z3?%L(kHA*#TB6htlGxF&fJF@O=C9Z z!=dUEuqYZWM9D50FaKQKdQ&6-DYG|9b(^}|qOXWauIYiF#>3JqVDTtESF#jF3=_We z5-Y}j!bZXwstVcV-736)sfC0{9wFNp@!?^|N71jY_#Uxk$$SWe-g<3tL*=$iIxW;N zo?pefH3qU24`9+lUEb^qy?nt=92dV?q^i=>^ruCSYangRs9FuSjxP3r+h(>;m?zz1 zUHOL-%{f^~)EQ+Y^2M6AlS~)W=CeL9?!xNt-z+k$qeB6(ym7H}Ri2gzUKKh4OTf+L z@i<@p$xD1}O3}R9&r0GeWTCo`s5n?CbX4aGXf~xbT;&!_8;yCA?L4m^P1x!nbrPLQ zM`|Y?tjN>R>0{o)VONN@myMqv{yd`9+H7&!%>nWE9WMnjGOlf@)L}xO{igTmlnEVQ z1z)J;%L~$V(M$B_cTO*_>;-_$V)o^n*SuPx*)t)ZHtUCL2M+niuWq*`P4}aN4|+ee z9Uk;(-qdZRqYK^DJKF%BsyJ5ZpD48c8A;$&i=5QTT;{cgtB?UYBO}obuMHK} zo~|sjKROc)3s(^Y&76>%je`LlxP(VNI}6GX;1qBN#H~06&A1i0FF;yf#K#TgsaTpn z=o)TtUG=oeo8p|>^Hq;jgfXE~Szzg$9ol!m-Jj6}fq22Znr!6Az+g+Z`(jW;7M>;G-N=q>}vrn_jbBDE&wR40nC znN8@MD{llkm$EBlUr=iU0>c1$moC*Tt_UE&D5g%(JC0k8tIx9UU`6VH#&LHg`?!8KAGW0=l z-G2EZM~?62pD8pqa~FLsn^5TK;IB{o)MaY4kaxiv_qekUO>bEx@)XoBh`!6EbUA-F zGmK<;Ol>J?OQ&4!DK24wM+DF!;bG+D&ef@ zi0DJKWCK?rfm!Bi0@LUib4RY z?RhMDSKw0yZVb3kO_O$_gY7k!%AkCsH#4*^vz>6m8mbvg^)wKS;6rs&=&xi@s}cM~ zQ-H<|n~A}r$)V5F>sjHCU1K_=fe1+ffr|hyQ*I05tz2$0sh@Tp5kfB2g$`Q&CnXnj zy`wz8jskTNOhFws9vLV%;*0RcXos{0J0>mhGMqSut7+Xs?C|@~K!b(7xE8&28lJV3N5EbM0gZv!BQt#>&K-+pAe0g^BJ{{?^bRkc0#g+t?w%CwtGQ_ zPl=t$);xw=x7Y@WT0_C6>>>$xW%^epw=aG8Y5s%01nW5i_zbI@v<0wWn}%gBeWl}! zo8>d*O)@t1<@%nJt+s)QE_PzTSLJq`Nlea z9biLjss6VXi}>HQSWEMNJzRf&7h>2jALEqr|8XAltq^6a2StQF2Q*uy4w1ZpmJj!? z$bbLO-|xU*@n+1YXjeI(P;$l#M^ZOMeH2-Sz=IuCy^MC#H$aqx6?o8HE{9?LfD=}H zDVTx5VL>{bZYXY&rQ?#)rJ9}7o~rUg2(3kvt>~x29H8M^K&XkP>7PF{vG56z@{?^b ztG*e%ofm8)^um6UFKPdcvw52zm8gy-U$eECOnt8hyNW_J|AU83Q`h59d~Yo&EN?R8Iw>NAyOzQgiIr$5iYkc@F$ub!pFMW}Vxv*ixL zGHHwD@rZX>ZeY$%-?C`DSr`_&S=Q7s0cb)l&sh?4#$A+%-Y$BSg9?Ds1#e!@m%E&L zMW1)aSJAS|nK(nhuc@V1tnxN4BW!Zxm#F0FJCa;Cf!rgLt^~<)$t zbcnSz^MHVWujV|l(8QP+xJcOtp_`i)boBJ_a5AQkB4xkaacZ<#JM-=u5#7FW?m5_Z z&#~P&H_kTA9h(q!lEAJd|3O^-kt4?L*g@vJ-=^57bopUyoT*>nR}FY#fkKSP;)x>6 z1kBW*e1l-)wL-#Wd=|`G?$TQV4ICP@ajK9wC$SK%q+kObL8ki)ExMJ)@H~*b~UHql)Q}0JTu9W_XtKJ<%^RlbY zYBL;(!BR?76PRz*^iB?*wC&!I(N7_Fw4e~~RbTWB$AXXNxlqt&ru0{GXP5YEg7Xfx<9&Q15&&!UU?szb2S+``FQ#2$_i+)r(WLLlJC%d zLIZ26w${B3j+-W%R<=5&5v_lXNWuh2sl zevSvBR)gP1?SEacql&slBZ_03ihT;YPNFpXv5{uNOPp=Kn?OEuv|BMEXwl6_<*KIg zCb^3AT8B)g@k{se-ZpZD0fp0D8((kbUFnNHy%Fr8J&sD?osKRlViI|Gg!qVBXhrbj zLL0nwZN*QLMo)*8ntid})LYV#dKFf@&*@}jxTN=ZVtWQ*9q;_P9G009*mMypI{r7& z;$I+bx0iW3y%I*I?L(v&w&(1yNZ2=RYq-$=O|tlHZA)uC{g#ZbXW%FEi}#1^{dT1-mjBe%0qIAWurb zlnFnL1xfnD-C-ijyJFTTQ!qupt3wk2y3d(LCXnvrK zy&7wYZqetN*J=SzeZc2JP+jKCPl5`XKqB8BH!ya_c%`^UX1p@ZYr>EEQEJ zqUqN+_-x^t(yk8l_Cmu{gOW0Z z<5uGAujjn9+}h|!oGQ>5`QV|@z&`<`rsk<{*b;6YbfFH)Kp9y)dD^Ut=) zPd%RO^lN9$|iMd$*E}HzL5?(`z;f;}~|B%iA34EvozK>kK-0uRoBjzlsYR@PUu@QFG2&$8P?>=>Pb17CVoxq{^#gdB5JfswAGvlB2tmnCSlpG@p)hG|0%>2}I393!+#6QiGS zjUF=(Jrggd65}ORqx5-mO&Xicsotz0(Qy5x)345zX5ssQ^;4gGMElfFK_`3lEPvd7FWQL7X81clKbrd1;nLYl2>Ww#K=KIzFcZ_Q=}u}~QhfPW ze;H^X2@`|_fZD)95IiX6$xPs17*YhXq*OFoc>HFT=@OX{Nu$dO)Yw*$vvZ5&c+5~= zcA#h=#gB$CWCTleSWIZPa5#q1;_lca6;G_ekPhaOZ_cr0@c=h z;H_NFo78!l-roNN|iQ2B&m%b1x|?N{wM1La4-Q%5{WCmECGx)i=0%G1Bj?F z3?zqMy}EUTy=g%5$Vq6KnbDQ+!pnIBh07@_*im5hJXrGWwuqcAe~~-Uiy0L=r7W}4 z+0kJfj*x$(!D1plnhtzO(n=SK0*yj(m3F6YToj9*1&}HnQrz&Yqs!uSm+-wh#j8ufN5raE4~aH^QE^2=naaWE@LwVB6stauVG#atdYa1aum+1y|eMig&PzCJhx1wY*Z3w3s< zCnj#d4Hna{sGe_VZI1nSSa1ePNh|JSV(Iy0rDW#*!@$9|))y;<7gfaM>2iFqETxe99g%J*HY5>##SDMMRaUN+ ze3aOgLqvQg7jQdn5VNsqi|jlyx5#mc2v9HzeVQ$~^|AWp-E}VfV1uxvMbBP&PQv5ezH*Umdz2AFf!u<&U9k5xkapVscEV;($Pt^tUtJF+ zg68+PB+lpvwQLtfSkcGq2`Oi&xYL3)CK}DmWiLe+V~@HCu!_Ix=yHT4~RdiuOEzI!>; z9h5oVS^61)VZjJUK2~{5eop4Ee+*cV>Htj=L;iOJ1Y^7YA$rVY=tH9dM4-9dzDuBX zhA>YfkKlI~nY@g1cRwXZI*lXn$yeH{;=P z>~1BO#Sp5HOWG95qvih%$o3vt}*rNyNguMXDW@7R)uENgkoCQj@_!$?N`Cx<(YJ0nDo*i9o ze9)ZPy(##UX^j;yDw+m|SK?U@64gyX8->2(>X6hZh^>GCT(ZoU_77NFvW}E9tz>*8 z&OH%zjBxK=w3}Vdn1rxC2K*4qR8>}vC`dK=0pj`Kvq~2E62~f)l;8?;%~8T9_NR=O zjA$5Njky;z_aK*O9AD;EjyW~-&ZgL@K9*9v%#I~Ymn2a00r@yl?%Lgi$|mGoQ==j> ztjfvAM8DgBq%m^c87}7Ye>7mpDRE(%?Vsa^LibsK5v6@=yzqXDTY9iQF*ZFpVEme6 zbrE`}0bjJ3FNC)mZ@0bk)Ih-PA%j2Kk7zQ2f}0gg4MkVJ#*TR;;^{y`4KUj|J~*?H zYK6{Osk*?xG9RwNu#2LFp;V^b7JKeN1hCrq~9cj5o zNYvl(xbq8hS6Zo_j2cK%wrC_&GX&|SX`-6ro#sP4Xsflf9SHfth;p=B;g_k<+Rqb65&t?$&Y10-fFN6hsq z4@Pn>kR&X|(5=!H)Rs2qzSTzuO;nL&&$jrR8oFn{b^OEP`76PoqP^G``MbnN$WGa# z##3?WoshMB>I|_AHT7Z@%z|=fNIu~+rZwkZzp?dUhc~zTbNTNZG$-A{A z6UUM?e&9ny%wFBJvHoeb|NE-I_kVXF0hMX$vkLDwITH`r#tMZhDpbK364u68hCuWp zmEJZM7&!a?a&e3pRg2$OwaF5)t1(UFs~dz5DIH1mp(4#IcjyX*wFa0T$c|QQE*?q# z^4`b!_cMZjRKHJP+hhw++cr=kNcgE_3h!p3DH?JWJyK5SDyY=kmh5ifBmF`0g+CRG z-fToi=XiRK!s{}c)`rK~2h~dGJ}m!`A(+8qS=FTukm#2Y>Jc%2gOuu{5|AWxl-jvC z1~gTWj;X<84GD#~{W`&!-R&LiCSPbo0LhWVf`7EAF5e2lmb@gwVAigHi%cdR2 zK+n=vo3v;ah!&B>8F_O(U9ce*ZUx)n#)uRA_Yeykf;K3U(*rij=9ZSj;Z6t#WeDD+ z-vNulG)I_h%l214S6fxgn*t2!S+7~dcj4D|4bV0X6aV}pju*u;j0 zcT{h)<3=oM-&(cu)AR}ck2;R;j&!Nxdr(v~^P%1lpduC^kwOn8HnKGhw`>0XI{g}d z*e>iBpPOcyZWAi0H**-q!Q{EE`L^-u3wEG91df66l)bCfig7P-q(laVB+)F)^qk- zjG?{F9A~|%ZKlbXL`Z+Jf27E+1n;-*R^VksOtv6|Q;U7TjNAFu?d!j-6o1Jo#yly; zT*NVdWT1G$*u;bcX|ebdcQ1YP6`$CTnzPy8FSLoduBBjNkpH?@>!DcfS5AGv$`34++e4VBf-l!_(REmzGFL8CVgJ30I$pRESD*0U_Xc&<4ZR57lK-~ zNhk8oOw|L>(8hrbYUHDqzB7XKYcQj0dB^Avf{L8o^v=!JE5a0Zw%gf3Ve}#`9A=Qs zP|)$B3_Y|LaJKVE<%*XW3tx)6MGF~~Fl}=HWJG`U z`FUR)0S~uooEqBsWN`s*!jmelUF3>2r@-=l8cyfDl(}wNNJ02h=Vh7}w zKDa?>uH0@~ta`J<*w3tPgiv1}VWtw7jG_o*8t@s(8N-> ztvWt{7bETUUi(K%EQI&GA9nTvgQ0<*oWSn_M286Xj1r0dn%BcPpvfx&=WLBbW#@S& zg8(98Vu$~8qOo$Be^swxSVbZumDWj*_x~Jm>tJyE#fgTdD5jGMSCr)kUDkNE)nIms z`6+`R`T7Y*NA6N-LMy*zzXZUbVB&!g2`u&lv7}S~pIk2L`TxHz7i14&t~->0MSJqK z`|Z;>U8&;u#XHZ~^~^6TOfuOp2=Ex3=J?rw%|@l&w6c;xGo|1$GU)R9CdT#h61SLh z{u%^_2yxX?GjlrUT0F-W0^bfbt2uy;`CQXGc<*;dQaRFr`ePpXu3VtcO{;twoeWxz8}|EXvg0?O{P~upy*eVb8fmUy#e5y$yZ3E;b!$WV{)#B#?sJP{D=}# zkks&7c(ZPnLqU>3C~x22;I${p(rkqH@XItE=q%2}rUM44%C|poC#*CdVX0sV)ZQVo z)m|3iA`kC=c=e*y0xh&?gxKwuL$G$K@2Ew9kN4ZI=8!;X07pF>MO%9w+GK>4JaAr4 z)+QtBKe$~LgOe6;krWC?6-obiQ@PS^ca5Enant^`LYOX@`EsXbn9FYI>wtH5mQ7nI zB;WPw01GEo+W_z1Ms4VJeU^AWb8eoijHeRrF{uF~d9yreeYgDnSr1JN@%%x#3Qtn10 zF9CtZtj@1!aN?u(K+IY>iG6|UafSoBKgFq!(*fBbXG7TMMhCPB%5Ru+c6=-d3%5cf z}?_4pdS5|yA=|K*?D2e2a{%;NO+l*iCLdDa=3g-4h6JG8dqbJhF=E( zUETQCmV4lU-Y#F>dpZl_ho`-}qe*^TLaRM|iTQHDgR=3Ms5|xr>lV4!NWD*L1JTuv zD9CKMdHh-Y)|Iz7VPI;+`>mY8fDrl;bC&i-8T)Z`^sHHhkNGO#qO>a`T<1eGv0^@o z9msM^aZ1=26aupgCn54s(a_LP;L+5PeH>d!@aPd*C;}3?+U=){3paCuY73c;)XJuu zLGAZ)?L|(pUsCzsJ4m@2FG?jLb41^nrDsoN-7GrX>S4Vb4 zL)_fRy#raPvi=WaZvm9Y)-{ciK=9!17A$CR5AIH|;O_43?jGFTo#0Mzg1fuB!yS@y z-uL_O{pzn<^%Rv#6)?=~*?V=bUfph7h105WMhobMEFR&WAV^vv31tzHh88`~-_fhC z4%efC!h=Z|@{-QJ9DL~F$Lsb1Jc0Q#mb!QF+v1?3vO6e(NUX?6I-*oz5wN}!N7B1{R9rBE z=BR(ipE4mEo&<+F`JRTzf!;e&upWOw>DT?@YwOzw6_+;FORk)Wue&-~57Gvf2|avB zC(Ja-kWjSkoL8x>!Xv&lrf`60fy8^9YGZ;EFvkz=R?dp>h0@`3CergTry%5yDb_4v_d_Zr7!naYn`B>6Id1M%|b`ZBFE*eeCMF3GoO zF}={oh!D@Ius(=E5NtTte!)e=x|HpTiNQdAK{BZmD|Qzw3gSh*;1`v1`-0nQ<1(HU zb}_A_sr^R_uF_*W$<`L7X0Idsr0P zkIUWbl=OxuCny{C&FHtYEL3lYoV2(k{(ll^Quohd!tORY`6hbqzspgG_%g^I34XWk}~)_zK?N6UZ@#(bkW`4TcvnKu}<6C6H5*F#l94 zL45b^^Aq+~73OWmw|x%a`^wA9No4Nt?g+@qMZPSg$pBOhU&u^$eMiSv0YSm&pg46- zw>!F;2`!RQeZ?LzdKD=zh{OznD{U}Tl~aaR;*IPLt*qX0__MPEQ$ds7eDVdHZ5&igzC@e)&{ua@o zdW-il*w*tze0krBA~jVF2#fS)ZPdlggQd(2D(uLVBZcH{vJ2=tb6Ve#QP0m^OPGCzJ1)281%&+lzxm(h zsud>10mzdsT4G-b898;sp5adogr^A&Y&HWuVqgaI=^sIYKsMFX8wk{6Xa!Ud+UHn; zbBRLdUhD{V9|=e31Z56z{OknkbV^laF8`5&VDaCs6ZmybsMe5fyiF$cP=5I=Q&uV* zi6={`DJBLz?-~Co!#sDhp6ziD!|mi<&=fO-A?|dtT=ja%awP&bX5^dLk~)0}t}}bx zRBOEtKve5{JMwxntT&gdccx>`7*|4+u(URRlu$$c76Ja1!qFQK<8`L9umx%w?DyF7 zhgO$s?6t|)9Kp)JtS1U@&voul$R&@P`^0XW9 z;vzUdyV0-3ro+Ppm&|ri{oiy;~@NSFCn!7D%H~qLILbl+U zrMV}#WJmnqtz57gIz|kz->)y6mF{dNj0a(urqUoF#|nj8fbkdtDq=`Ekfou-kFC2{ zjR^o0c3^lx==9plc?3xm>OASo9w?&`2M8@6evWbz)<8ThBoaRvt#B1IQ#5odyzNh- zW1TzT;eRxW08&TZ+`^m={~YN;up+-fM1Z6=6rwmWs!yMi5_Sl3+Q9XL$@5-_gVYde ziMU2+9|PA`iE;^vv2TmCu;VM2voZMck?>Sa1)Y8K)HOJ9r@QLaNXbahLiB;#JtZjRo4@eP!gBI)UiQoe%cYeoc2V-%1-GXV1@vdJqv zu+y-i;SmU{;kEoEP|D#PAA13VJdvat?=zLTkH=X1``dxR?uToupl`0gfKDQn&6bFS z1nfuW>MH*3XqqYLS{A}5K~gnrRG&mygc?}8xCxlLY6-rrL|Mq7FF?rsr>Qx);OzM9 zWj!GKom`}-jNAf2fu(4f1jW7}5TTcUENTRZ~>4Q9;8*MjUSnQ=)nvn8)*T_>Py6)y?*Ie~4PX{A4Vz6(reDdsHSrNd=CD zBxF%wYLLMN@u_it3B1xle%Q_$cQ)ekd3)y}Lw-Eb4KlMKiBZwz%VAI}5}FwM*}7;6 zHj6nm>Bu_86BHYRy;{CS@xa#TPCWwl7j~^&bYvc@dKDL%2x z?WM1~eucY195^w&dliTm*A77V@s5iMHk0N ze2=NkAH_y;mP0x_|5%gDc`=nMZEC=PGt`brn7v!-+Zm6qFPM-zS(YwgqzqTmv^)9+G_-^&!r5LN?X z5SbLg4xmGY4>&pl_A_8W++7Q1(vttP>_#g=qZ8|TMz+!Y!ktkcsokRIc}D1Oe`=fcI|oOZg>gK&&`i(B0jxe{%tCb!<%hp*BE(SvffPasjHa z4uCM1D4QW5e)G;198@IExs6Tx`)vMCuLFP2@U_)9lfcY8v#DR@Sw& zulhNX0`W~Z|J7rS3^z&$_D!2kqL1M%_1tbYZ;Zyb%a#}`ap3WMC#*6A)FXFp>lOe> zKz*$8WV72pd|g0qe=qxH+YaO%eS|q>GKvHoMm9t7Z`Kzx#&Wtlf&rpsI_YZil@5qX zkkE8RnpAp)QgW2mgZLljHAmV&=|FGWZCvf&Y^ihfq+Zz@MVqK|H}wsJO&6DP%FO5J zPv|TLVEWSgTRO%6AyRbQb46Jo;n#-Dy1=Jmiwg1`L2_tk#4ax4@K{?CCY{CwTqN-;M>d>FhVv_>!}W#Jc;UY-$E!`C2M?@ zGL88*aJCp7zJ9R(KA0%}GUwS)a>7{+2FMUr24!VEB#;FdIzZZm%D>~tzdU-Hbvm0C z1zlHwb=@EXXvQwgH9$v{nsvXC|KN1~a&rQ7Nba+GScHP^cn?0oxSdtd?w5r!wDJ%QTa}4DI95g#)klsSsRz`2#o7=BCxbnu7>nN}V22<`UuK8;jiMP!xtwdMn(P8AC3c zrFhUfhH!KB?oDUX4rj){jK)PETOx`MgjMwbS+R6&hLVlWcbSqIRR{!~p_LOfQAPAA z=+b@t=HhGnt=JA@sBYJcfPO3t@OvZFT$j6Q*{AP&8WpOifXnIB>Q;I)+yS;BoSdCy^?p#NF5y^fjac{e_H0g!7&f}Dzw;S{==xt& zW2DxBMDsT2SKYtVcPlL}9JYo}L$l*y__F_BQ))Kxv#kz;aAx;6N+wDhTN_?Wylhq4 zeHKTW)+pNtXn{bNfQr-O34>O%O~B614t!E*di*e!er*WVKywQps}5~nwnEt>wdoZ_ za@V}G<=Hc5$n}$G&+kG&N|=_<(8PYQcCrN$-1gbSKd8hKWagSu%z(FSB2%j_!HC@% z8%uf)tm5etq4xgn0Wt_GK-Q`iQ{p;OWq8+J_Gzv52|A&;#mnvCq^gUog+zw;)iDTH zx{lxo_;HC#hTDI=yA-DT5jNL)fPJ)jK^zW6C5J_uqY-t645XvqXE=5Ona*BsDs$a8 z!cO;CQ@Qbwl=S7!Rkc=eOuD_-NBxie5DKnhwH&U9gsKg~q#};5fXuJKsRHds-l(^D zGw!r!2DFo0YojG+ayh_3vE~jKQvH41DA=y$?K}(!&L*<^3o7aKE^Lg|r(OVizA5Rg zp40DpX@G1EG`M0mjqliC8OV3kF%OZec^B-xW0=h}rfiD@NNKxx{<A*0vMJAkcJjHqOr$tXRd?g*h&G5xrClvv+NXF53_ zsdFUu88O1qk&uZ_2$A4${dD~Z*kStm<;23YJlW{Z9$3=pI@#WB4F|$6+z9)tO3Ge8 zGY7%C1^^~6-9YEyxsTe%FSLXMM_t4!w~z(MAz>;Z!NF0F>Yl{jbe#sq41~u^4h3TdaEFgM67T!|= z7(@gBP8u}N*FeaN3Y^qvf}=4r+1x)-mTL{}DD+}yM7+p%eSN(W=;IVJ zCp0;r<>9qCoxfLs4OT>(G-B*J31RM!iX!IipCwR=!cYEK7&$IXYqi~D?zaN(ixfKn z1~V%Kwz*T(Z2XG3zP&3YEZvSXKn~vPMnOS32L;9a9Zj0=?lKTlY&~P~-aT&QFmkmV zOn0{_a6+U1Jk8C^aqfa_3E8Z$4c~1CDWBrfVr4FME&}_ z@AnuPq1lAO%4xu;vrIgH{iM#8#6{n4v)w#cRSMJ7i z$Id)U|7okizBvJ?0|zjUF3@?s*3mN2hKt|G3gc6!7Wec;$TmPBY8{AlTlIJ~0FHoI z!T%6g`jVMvmzVs2<1c)y6T6G@N1zyCT@l-&EGwdd*0 zPA9iZOkg~Uq5i~FdOXvRnh{?a{#!~sKNjWJvTrGppkBYP_t=T;PFHYClq!TqQ`w>s zk&ty{+Z18^xZ#ARAI!DCU=?a8x-_yLSUtSh0xu!HOAbYu!8c{I_c0%Z7-^LtN7<<< z!FPH_b}^Be)BZ2QuXoHM$l$m*Y4Y-a2i%M~;Dy>CI~|c-bmU%LtZr|F>%fo6eJBi9 z2-NN$>42tK>VeRYoEoEDeggmBIDp@301&p>x!F9MMbazq^1G+N%wq50W}4jFI_A6@avJ(o}2681ppzz23P_z^!#kL z2Su}qpdvBX*Jd&hlpBHc&Q-6C_=B~x^7zW$2V|x3QVGJN$6VrvDaufR)^}(#>5XA{ zOoLiu18^ixC8vr9b#@;F%CumCgg`)GpvX||2?)82Xd zQ@-RaNRCU-b)vx|-G4%CD8BEl023;}`_nN&?*4xc&1q$+`ofWPF&#f30&-julAf4x z0}JBVaW=L|hTQ)D5=#orpMg$2f~Z(ff0J%|rbfxi_yG<9;>{7^;H(MX?5X=W9(}Yn z0Scl~@8GwBI^`Jz)EihDixa?D3J*v=1%bEpL>hQu`-`{Ure|bc5$QX@Rp*5C*`Twu zNV7W7xk|0d6z}LE;iIzY4#+;+=>fWwWF;pRg>4O3OJoQ6;rGCI7s8>#D7G&y`pI{Mbr;$)1s>qR*-xZW8r9M$N0j)?YA z6V&wRy90_CTBI8MCm=F2zv~(ZvK@fzOqAAH-z8h$*$V?dLKt!OzHEkITiB~0P5LtGc0 z-uw}1f|jom7}(D3-zRP^6iR4P{z;-2omuO#&MI=Gdj0XeuUL+Ce<#TeFn=fA1VgB% zW}`JaBTn*yyHW>@1UL!_7Iel&hbSng?chu|wcz+02<9gL<%zuHU_#?dyn(cX9+59* z_r{cf{PxdW|E2nl;USj`_ZzvCJw3)FP?B?EJAdbfaFMVcfpQ&KQE24Pe<<;>dPT@BJ6atdiUMq|UG9U**1?oHw=JaPn+PTG=hFdo@0Th_` z??be*Ldexa;$*}jMMX{-YL& zpBJmpXsrZvXluKEct~yK&PPbl;!Dkdzus##=BImoR{ku#hngMcO zKeDX(qdUX(g1H(SJi7*DgYvWlURx&%I$NZxLKkat%7G7L^&Zt@lR-UH$XoX)$QdF! zsANDOoilL)%63jdl#+bw9r(c5D44GW9@S@xFQ=WKE6sb4q&0dn+DE+mH%aL!A@@=> zEa{Lc10q{N#doCgwodB^*-5!GYksHBfyJThWFk0V*M5*>|jhAK1vLX=Lhsa`_{@8{K{*7Z#J>hUnIub)#EmB}4_G5@aD%y)6P> zghs0^y#^>3iQbXapj3%h>twF{BqM!&_K&E5pl%*ZVoOd+V%T{Q*UpIW6+wc&CRx2> z4x)-qR`fDwYrZg2D^TuI+ohmRMU6DcFiGn0{mmrXd@})X^M*aNAWfj4)D0=6S6CtK ze+>$*%CTMkS$e#5hqPB<$mL5id&ADb3lbX%eMn847!Q%7GnG~lpX9OE`=KZs^-ev? zrR-ADpIn4sLSu8QhJA+yb%`bMLjnnH9uvMEWqia_0q)g*K7`|%e3`Fc`_a8i-K9)= zg%C>5jYj#*Wjo2~O9_EZKdhUV+5(#jaPfifc)#7xZjSi(4uCaPRfYsUod+?aQ5x0m zbH3vge+4UlEp#YKa~eeRv>0gHJGMUKFC5+vC!o`yBp5|2-89X?$FEm?f?>S z2?6l<5pcNdYqfu#2k;+$(XgpE6{( zYDdLVDtxpeYbs;(5nbofR5LCXl-huOUlTLj93$@q_;}$20!ThUA^dxCa^wSCpzi~t zB)_UE7GPg0bPNRr#fqE6YE6_ts~J(Q-n=o)8x$5H7>jnSUANE?ENv3j2>wwPH(c&J z5%5C7nmIt|Y{U+KKt!B?1P{$8q$GudHPNj%GE+xJLk!+aa-vK&5HvShsmE5eKj9a2 z&lvxE(FpIKKPf*49?|nkRvhY`;_339VD+IevKJOL&ZCAiGYd29+#yag<`3fzO@DmS z4P^gw%_=IGU%q@P#6w391jYv%)o3=;{H_7FWnwBSSPBXXa!ShV7x}c15a_+15e%T~ z^<+E({VV*1ClmH=&z&fx%4eUDu$g+FU(@%I!v;*xI?BtO?oTGptVb({=ud7aDml7} zEPpMH(Oq^MPFUV4hqanRKhHDIU5>H0ysWX}(2gwHb-P!1g#XG>?HZQHe-V41IzJPa zGTJ?HN*84qjEi$9MS5)Bd<~(?f zev|8wV79D3<2a|5w$GESlBk{d&=kLx$B4sYiuA;#97)wyI0|QKwqPLj(hIl#h51+* zC8w%5az&e+Q|SmH=vgN43|Ij@Jv~uD_Iu-m{2)Hd7Q&*UP_2oHiLqYW<{ajnBdJnk zQgB`R71VuxV-7M!P`XP=ED7(?#O>4hNp!x&#czyh8pj#LPYqj4IdonT`W@3hRC&oX0jQqcJZ_3^+!qfW@h(x@>cm+kpEtqv`1fFIV$d}p=sb{kXSHX_UBWxHWRS-Ff^bqK@rwPY1b9cAZk z%hQwe(Q~S5Jo_kBX41llB7s9-9-R6w2T2^4$UL4Eu~`?PhHS{bT2<>VS=|HOrUEv#+6| zO`se>gE|#(W!5Y#JNKx5&rv&X+f-%-+m9bV3X6;ROiU=zL-(HboOPJY=Eli`07unD zNK--sS=QW0K--yVx!T6+3>h(iVb{2aruML)!+7dR!945+iYeaSTM5A<7+HePD>;X& zeKkDBB{7C?*b+XAk0btmns)UW{aOe4Y~zZ@x)ZfQdx8ajZJ<;Atm>(MfA9CL8|TFd zywObk=N-=%_K_^6V{Hu2+fX5T0sN&0KgZU_hm|JHwegi>qgi*5VBv^LE2NAKY{stN z&XWj;sJ=rM*{z%Ni!>dE70d9&(pWv$%IcB3*1-xSw^4<9!3 ze&s~X{6q$iNdD@swDQ7;6qCFb?@H5KP_Yu;hOQQzfa}t^1KHh+eA0UgV<6*{P0Wd; zB;kSszK%H2W*ZfLHbDN=dSJ-U$gj}KI-WFOtNvy5_!T z^aS($dEW^Up8bVa{FPtVZ?cYNC956N%tz^Z;6!?R<2cBWi^8(MZ7Le*J22^M_L_q0 z@buup`w$F-`^SC$OiLTd2bGhZt%WvSQ(Y~irWQ8NPn0Y>@Lgh(k&=ntWQu%n*S`BB z%i7F$%idr7jazvc<0siEm0Q=}&llS*eM+)XDAXbNC(Vo;*TW$L(o$Z!U>r64hFce{ z&wC!vo($WuHI$Ngo+Y17?-z@>_s?I~68gF6UOR=K1B`_T5eJ0r%-&bSA9v24^7uF4 zr)h1qzvm@d;D|H)%tM9@6-+Uu7?tARawJi_i^nFCSKR^&E?Wf^fQwYgG`HbY)IB`8zH0>+yOKwjf%)Z};l)zT@$^xs_GBrM?>V{QGy>|jjStU4 z^1GuquUHLp<7vDl-A3^*t-ioEF28x%r>-~w7G4t^+ba{tPiH#%tBinY*>{dB6${V|MkIkVC6RAWK& zqfAonh(Y%+VaQ1FF7G-X-L>`=K|yP7q75vq#j(lCgB)S&?MKh`Ida}DHsjg)XWXyW%hyIv1}A+!_} zQ(?8<+q3H)yLslFwe0IU~6hjS4BhJ(Q~^uoSfD{ZUn?vHSvq)wEQjV?TvM z)L3d4m0kfg@LkrD7*`JatB3=_LDZ2Ve>39afDXmHhfx@V@+0BJ+x~LqOg-_@lUlX* zYmLE(+k1q%dvbDe0!wO3e19BZSGme1m04}~JFJ6-0l_Hi<4L+Ar^qA@YE zF6U+3?_r59uhs{U5*+KRk2&7AaSD&>$TjL#MiI0x4RJ(Pbvh=ch#7(yc@c(#2}Pbwnf zz+gD#1}j@<P~dNXO^c_p`qOB!t_4R z^Yw-Ml$tV&Hz+ca<@Kl^D7=y^sRVR}%J-PoMU9v_UR3TVZc0-jmXG~@m=@@d<3tKW z^rzOg6cV7P&OQ7h9~>imHw3mF7ZNN@l0^<;)Ory^gj6R*5EomLOE;#8f9%bf<)kUW zDHd{p2x1~N{&*Ql0C}-$3m^-?v*IE20wfcAYPRe<3swiAyhv8c_OMMAHe{!bPA4O{ z33pasNkPhX;{~0%$gXyz8P$kCA3U=#T3B~w=>;cto1l4mCH4i>J^ZT9ZOJeYjz?zaw7t|y53;48l*ymqtAn=@L zpit}qLA_^W3elB4;(|m20!L~! z@v}I5Ug>g)HT(_k`OU+_@=_CK9UlE9L3p($ti>FQG!$%7(rNNateykY(U@nmcPPvU zazXctB~j5L_6&T`rhNyZd;6`VDJd-|g;HEpRUorQnI!`abW5l8${RlDzf%2+-QFN2 zA>?zfOUyNX*=S7bC7Ajkf_5HvPGOZre&czMhLnR-(uJXliT0}c=SM@}T=~19zJ2B0 zqdhBV_mg`q!X^~gW}-GTe5R?VuqXf4KtIc5W50|=*BD+^SM+M zaOC*!ug?^qOix`laT2bAxikY&%de8+d4ONvCFN^SIn_R;n|EYL3+^jnN3;X-prJ(U z=%({me(=ICR$AbV^{Gs+KWiKt!Su8pz~cfx@(qzb-DE(%-HbmUpK;AF>w1I(9`;F3 z6kbx-*?8XV;9jnrCz4AdiQpE>ymUix*N%7DXw56X((@y!r0M@u!WRwJ z_Y)k+`+4ki6v+C<=)8wgtg5PFwcA6mQ!l6oKr{}g6T-J|-+-swcvRP$bT$u1$)p{I zec311q4Tc5dC_8T&J~h!Q0#oSqNecp;yYf>?p`o_2O?fXVEIY#ZNXC5)YXmAY#Gm2 z_gi8zTl|x@Tx!MV3taHwhimS*x;EOZbaakHe3=`v=l4oGR;FO z{*M)VVUBniK_)VW1}&`4BzQmb$zXlvR{@$Y`?PZXHiK?&BY4YxJMs-+G}D@ge!9%} z?mnI({JZAgw)R<1szHxsKQxyqgCw24Z_LvMhEVN$-Df2j&e@LX7*xuS8VGz~yiqtR zDD28ADo`cU(4ZAwg4v3hkbDZhC=%`EOsJqECW4pT=$l;>tJ-&)nuKk}t|lyfg45F8 zAJD8+9rh&0=JDIT##WsWU<_J9K{3A%gbpGiioRD;5hbiISMh0@)Zo_`)xN8o#~B!5 z2T^y_1@hdh&K6(CQ}fH%vw(Wpv*O{yhbEP~jk3V#j94gqOu>1Myi)A6Hm zS)HA@BYS;hSUc}n`}wGuK^sx1qo1ae&4wg3iPh z0Iz*`tejgDjvCdMJrFR_OC-3RM1S@cgxWu~ilME~?Z8DWtc0$qvP7UwO^a%u6S}Re zErT>|b=tZT`#p=6D1MF=iUh`(X`LW+C>cP8U2Vp!7*= z7_Z3E%yuacHsATDtVv~s^&?p)u{Z+2fJWKqZ*OmB<>rC`?V7^RVCyl79(>KA7F{v3 zmc5p*ZBXSQa=CW6u#z=d%l<4x7!DQ>Ftkg~h+l3k`g@U2yDu}IEw-Awp7t#_JjYh0 zu0>0^1jhyzz3|N-B03Gd+J-Yqc{`xWaA=6sBLW_J8FvD=G4wN*%PxJM+dDk@JBqJ z8~y+S$QbO;)YKo7^E(Y{qFE9aj{|;a_1NlBy`H@^@LC2%&U**CeN;qY1`sq%5t+%TdT+v4} zAzpJ}pT|V8EqKPp=VS!geyYlPhGo1-=Uu4l)jR+^nr#=gD?fi#jZFxZg zyz;WeDu1m!@BXs!_KLrrAGVIz@zXY=nsU0-HVPXRleytXRV9b?kx@_(5MBOWYvgS( zl6-%mCz}!p{t+uve<{s`A9e~C?4zUkIh5*_I?8t*Oli*+FmyF%Y_~WxRDvQ=m_b2%0Hzh0d-fUNgl4zk zWE3C=YwxPt_=?_riVgx}9a+pbR@6*O2miSkUV8<%dhtyeaUOkf<0Bi&28< zCJ=yl>&U;!Y3Ea=HHDm2=>2)XL;qBBeB%$|d)N5zHJ%b?@6?tHt0Y|%IJEN|>)37( zAvr+EIN}1s8>+q|iQY5d{vJi;by2!G&WGQI%e(ajRu}%^Ks52d=qU4wc2r7=_$Lf7 z?Z=8q`iE^nfRK$x(>de9&-AE?nBxA6#-sr>=4Am&(-UOvn3+q5{|_J=A!Bt90q_{1 zxBl%+opRNh_(2NGvAt#^;U^PE#cw+2w;9>wJlLiQ!@ZfI72WEzZc?5rwqI^H9*Ziv z`T?GcUvxe&w(RT%HHWMruZ0i=9Sq!a@ zclKwIfv$D3+~p~F9uWJ-t~w*XoiP|6Tx#>a<9U}pH=l(%T7rK@8_s;8z^4WW(Os?G z1y)Tam%_J%&GxaCfXu&592uRM*k#f^dgvh)eb6<%hsfAZx&?m660hqz7{hFpb69wI zT}E?;P`k@@FxaKeVS$zjO;MO#u`pgEb0Em^jNB`^gU0!wi%Dl6uqtLIf6RSwp=27j zP%Ti&;C46I-P&5SBl+?r#^xA!4_IEgw|93p|AXkH-2H%gyUQ^Ti955v`#wIB`lApH zkEWITiQWvbgwd0Cp9rXk}qF7*;xXoj6_^Ab1m5GU)%e_0RG>%N29MJ~_%y)*A-JsV%Z z;IP$*C2}w5>PAQ6n6QTgPQl)BpjhM&H#s|H;y;!Hy-{km>i?iG;2(UM?O-LZd&Ar# zhKB^oghO2+@!Q?i)v!05qKT+re_DWw2^bQWu`TK_Q!hpP(Vu{G5r}EU26!R<xF!XEI(+9m8 zG94t$Fr{H4)+=;bV($y{P>iQ{k&{rycP?Y@x8{~R6gBK89|EYKlYg6(pdfqmwZ`&{ zrZZs+o12@~>~uE~yW`cm_zJ?iZNyf)mzomshvk6DjRhdsvm5=L!wo#P1WBji>@nl5AAR}3CNm?u^7t`*WXJLlou zBY=0u4}h0FeSI6_S^Ok(cjOclofA32`-XDH#uRlbWs0eAb|)M-j;&WrCocEcb|;R6 zb@Axv8;iI2{WDCVk>3Y^06d}pUH}2`inPE~y>uV*&sU`Aow6^cY6sy)g@jT#N|DN8 z3YPSh4G$ifkUrArS`gguXN}` zEcy8A{vdR;QVk9&ESX#1)k39rvK#_`IGx^^_WmFV>K7K}*vANy!GfQ_p zY1*5wDL8$U3DQsdw@LmUiqAf$-B07SsAQb4Q1Ump)&eZRSIeh_7CB;FPqG?OCBz&D z_ObfbX$In{T)}7-NTt!)?a74UabeA>*?vT|Oj~GiXWS_jLfGo#8+?vSOcd5o28wCA zpr9ZE>B6NYHE3E`>MMp}@-6CoW32dOtLD_JseR`qnZoT6mesKH&HmVDLjHhEi+^Isv>v2~ zCbXh5+(|hl59`~=;0Eq;-@EC48Tdj^bA#pHG4(JQV z?(V?$ar$j>ve@qVY8@!`u*bZn1B>O(1$*MGPkLed<$V70E8mDrw(B6O;_lz79@0lk zo6tL1G~*n@J{BFdF}<7boxLs&w&iy4LJ|3r+GUo9{;K($mhH8cKUJY`a`oV6yL6V& zvSR~XW3GB$8o8n^?cx)#H7!^AokinRlUodPUMDV@LahdiWf^7VpiklnPZ=p4G~s+-dtX@L#opy&2{* zoq-InF#&rdEFj~!3N_Ktz;iZ5ML_`pfzsf4Is*lV!`b`py8w^F>b1GXc&&^8hFBXB zZuR%Tx6*SDj zLfz-(tL-xECQEYXnuc)B3TCr85Rf)DMn}Mju&qvHj*^B($P3JxtDOMyslG!VM*H#R zxX||Bqi+0%Q7$GHj4itjmJSL$s$N&zC};UvKVtCA`h?SPn??1uj!SeNP3#*js~5Cg zovnj)Xb^%eeYCyh6G!2hkcW1&Tvv_HN}>pCrO;%It~&Nda}($mB0f`H{xIj;iJEff zGZgSri8SgW<6q83^O#ypCz8pK{yj&4>+mDELcg2TQ>c?g&5O_XrLJ##hSa~2!Kkg6KLCG7PL4O_e2|we0B{7|9zLDY2wc99n*@oTuxgzJ1mzS57kpYRA*d?X~f_9Pm zV`5`v6M>#w*6UtMrPI!%m0~=x%u$3@4+&$>L}_awHXxC(G9dM-ahM@9O8x*9zNr=E zN{3GtJCefE&2w-8&u~MBof=QW9ty91TPOt+HBKJ!03CtSy=~XoVK9r3hy&xqIl!gx z^)z_|8Z;8_^rzHRz`z{jgRP>fOkX>#4%QUEtOk@_Vgv);-{t0gNUN0{>pl8Fo$rtY zM#Td2Y|Ah)G{RY~#xysZ#M}e9LLAypW%Ev=f`TM^S|#6=&k+ABl-gh$wbi5dYxbVy z=*e=ktcr?g16p5yzwcxwFDO#6;!6`aM2!ssCZ_)Yxn*#$u#*DL;NYOlY+O7F!Q+}# zSkf8DQ3T`^ny?c|-^#V6+UCO>p_kg=xQo6>Smxdzh zFYM{*)A3TzGy=Dsx^DI^$)X}sIX4q5Jc6ezoHvLTZcn;Mo3Q1cSHxR>xCuRF%~${ry}bro9#H z2mpHm)a2QKUc)F$*gSy3;H9L%7oTivfZGlIxKp1B)QYCI~djTO4q#Q0BB&)QQaSf+Iwr7QxL*brey`IK{w z)QpdyclRe~g$^So-DkiQGi-*YT9j#NB+jXZv^JPG*kM>0EM-$ulNEcKRg+pkLH>j= zUUFVu9_wb+RCxt?1q%KO52$78|pghmksz94ri>D_Cs5o`NYstE;gq0I>B9q+*+|4 zk9OxIW_`4cn1ih6rm`Z-j`-Fp$H{k3yDR&17mskTS8ah8*#7@4^uKjbViwWfI)BfpcBhISrcpzCpT%p71q<rBUhr=zx^7&|nz}lvLxk zfNgN088Zgr?s8zI!EOhZI)0^*LW{jgD3%S68g&2x6=%yyZ|SyemFF&ayAIlIn8|n{ zMKR^zS+A+1?n?id)_S6)jAlb;VkT+vpg8?yt8gLkLcH^8c)@5reKw?ipXbr7V0Xd; z{c?9-(g5qK+@ysi1p!7#N(%m;rb*xrK%-`q9B_1GmRdA-#2g0TThew0M3z=gxMkWs zNME?;@7ljjl{O<9%6oeo-~|=bNKA;DR6x~kkG5-9<{*TL^6bCV2@3>HsQy2Ey;W2l zYuB`m1r6>V+%>qn1`F;1f(CbYcY?bGcX!v|?oM!bhrii7`}y9Ze+*7INfy0Uub#8& zs=9>-?s9L+U9a^?^U0HV4Vi#PM(fR-CWk^TXTgUMVTGy~EYBVg7RzM+Nbn_M;vvB` zxd=^i;TkigI}9r~tgTpsB7#ILzruUU;)c`NkC2rhBv!aWUb4HbHPDbDrZA1q?a0^o z{k$x&GD|EF0(xPCqay{;BRMN5cuO|^=J$n|gds9Ipu;;e7k5(@*8Ypxi!4}Ql9>bA z6@n1(t&RR}j1Xn-6E$cJVJ!f%PNc&wf1C;2|BWbCsikISHa z?Lh8HySs#r4OYfxc^rGUMA1ehfQYRL5Lk(IUc_vatY&3k)DN_$CTcxkBMHXD+x$(iJ~p

eCKtA^53j|hN9S+M<-#vB(%)GgyyOV`3GDKEN^H! z$w>3C2J;ubPjI6`>GJ2V#CRk8uzl z+fx?aQ1`~Ovi8_hpu@)H{Z+w|!TnndDmkscP;fmL!^gmv%210%@7C^)>ZK`n^W8!T(W~!pOh&&`+-4fg5&ViP>u@*G@oV6UkJbiL0 z+acfzjjx&Sf(Sr;z1@+jJzWHw=W%4p=i@@%$%{8x;6a8;x4dqu7 z^=DIAT?OWI%53QUFD!p?&d!JZ+^E8||3*Q2a_A~t$fDD)XVjVK)3!Y3tsg{KAER)r zz&DhZB6OcD2{a_g2EU)ZUVSeD*Hq7p=;PD~m#M0f-;Php<4d9LT0*3)jrN?p4pEN_ zZZe(DpP9=QM|?E21O`R5>hB?Py~H-dIPn|vs5DgMVDp*t2q&q%eu8$bc1JTLxjmei zS%!Od7u(mW*0jub=BzG8$Z?&#)jD`u%JGy8bS#zvB5ezhjMg08a)a1KlML&f!J6Fz4sM(m20;t=^h6K^HG?rohSv;*w@uFX{bZ=C zxCs|Yh%${STMv&ug#`lmmXp%+^y^Re6WCx!R7v2haxjE!_qsE_EHqo;!iIcM|1ijF zjRxg}*FR;Y(sgn>5mak}qvF|t(cy8yz53Op|HO9lC~=R3zXc1zKCS8RFy3|WZYC%3 zmX-U{ejWM(X+hq=ylPL$9%lE;Q?cqY%7D5#rK0-J=O@>!+bD{V69A{^#g-+W^F64L zM<_9fskKn=isTxjs%<%QB_3$Y}`b6F*+wa3hRW;vP#9SbF80(7S5$k-23^4A`=?(@TAIXW5OBBd zw;fxG7?_x1T9aup;It_>@r6S+grQyHaQbMfV>onyW6PI0(LCz`#_2)=g?eQj)Lnly|9|?1v zDXv{kD^9!$#Temt;W z>U5Q?CLxC=DN2YnDyO}M9va1~Ou%jx(Tr3z#eHi?oZz)$iD~3@4?*9)X~SZwlO7XfGb&%>_UbOE&7_6CqEdtGJNC9|sw%F6BX;uA zu2??bFNQU4MPhcEPG)0%v}L~2A9&2;P)7F8$sxY1Hk-@|uyKK?d*A>z8yr?M|Lbe} z?Q~nibW+MvCV_qO{-w&(Jvx&)CUkZ_FR~C>T+BB=yyh}QHBKx1KpBoiDRr9&XW@vY~x3|`FwhgA%10QGTxb6zL z&hyk@AUc>1JTg(vpVAx{h54`SJ1mXXy8T}&R3;y+JWkA9*Ee1q`(=W>Mzn*j$`AHX zAtj?Vn0~OE%p0src}-S4AT_rloz>OsMA-WbDv#TQpabFZ#%(%imIh^$bB#k0%y%yp%W zQU%sWK;V;fAIRbAOz2@5nXf*XrSKW;kKyEF!DruZ4a-y&iorr3ISR(xW5=9{kuI9adIY4{e%D!^(h4o ztzq$gp>1kTb&*y7qUR^;2uJiBKKtdxlH5`OS94$}EixQzx2o^T*2VX7P+zj;Z@TKE znvhfaXdXpF-xkH{N_pnThh`j1JZ`7c>wwqjB!@{+Oob__A6P->~sL@_~A)qQJih zfPE?u4np9wNfd$`m-tsV_|xA_onM3WMeA#}Z?ViC%*JA#`^ICG+1?|f-i2{y5WyT^ z=SOJ&F04A|W9Q~6`~A~F{rP+E9y@ArR31VeQ+DXG)9g2XEXs?gQuUhmcnGWlHmeyL zFl|DKEAci;U)i)aO2dJafK!0JU$Lx?q+~`tFqjHsgnvJ4LMAtf&45>dUVXo1k7YD6 zR6WX_3}#|bj5E4-bpBEZK4Y@(Nc+_FhRC%uk|T1q?s1pSfXt(vNr;IHrD_Rj)*I!b zDhp}f0OjybO#b&Hw11PhaYIP$s=cOB`1y<`y~s{X`?FOV{s=-qYLTra0m1%2JB|EP zTuFXpVJQ%MIU7!(>+#{`R;coTiR^33r0tofamvAIwZrUDR|szw_&eIYUo|3#M``)T zs7yHUt~nTu!Rku=Jc^bn1rMYh+5Ss4&P7*CN)z~LsM!TBu}QF6uN)!r{aXqrQv&L{ z*ARiCl`9G@!-rZi?f+it`)mF;s3mT2OEB^gZ-9b~IhmrW~Ggr1x&tLJ2|!i@Qw&38S?{iAyYXElJR# zsdw9RMtZ6oTr=4R2YS9(jfq%`ia*rVP4v>;43$+>K&011mCk-3%^jzu@Kj0k7MB)g zHPv+;*yp^*K65JndkJ7pj~9##)ZpyXdRpWP!)3e7F9Rlu+YW5&-5;2C&3`dHNkJ$+ zDo!+D*cuSr{MynN0!~-p$;L!Y=~UvSoD7A<_XRv7%S?_X_i{NVbnm$XUmG9_}=S)dsuZEFXde%r`@|VOH4u%laXObZ_R#9f%4y_$i#!u`VqWh6Ekeqod zAiWJ9Yh`qyPPG4~#|lyxV2C(?XU ztRo_3wynlH>l=eyCUYVFmDf4v6+qs4-|*|i`$V^f-dcih9eb`+bA~5w8L{4a$*|Zi zv{qhsom1wEjXxt{Y;>nWDLkd0X@ylGMzVB6wHc)3C`auoSxs`HTL9Gw**17>PW$Vy zu{td{*Z7u%QuPs>iR)fO{k+Vfk7DbbBbWq|z6-qt1K*}PD#*vnFXVJWk22cQgy`Yh zpD(3HGI(+8h={1c;Lh;FD1*}1DBzEM8_Eg9Zj2dDqSy!E`<`1WI>!;U0t&=4;ry&D zJJ1-k`Jmy>aDznGY+df=7@haK?asG(Ri~QAwb?-W$LJ5HP!z53LKrBt!!yqagWj~b z@h0`YW9D)-oR1Q5XRcWzr;zu`yGd!G@pZVMMP$0o?=%*9QDCLblcU$1wtnPaWsfx1 zp06;Far=bBV&eU9wYOc?u-1(o`Oh5<#tEDm_Ac5LlncS>sq7`W4)Fift}9xQ%v)3F zNOe&vilA8mNdxvF2Lc>HBvNq|06C_nq0y_;(DPloy1F_*fvT7gHITyq(xlLEaKiA` zR?L?yB_S2MDM2o0Z&EkonHe&McY!Yx<~V`jXJPOimR&Og#@)!90(V!E{+-oUs<{eb zBKG)m1SAyj{q1E?Hs3VK0Tp=i*@53mNJqt|iU4@HgTk4}*!k=%xSb;-<3}bz-Z0)& zCBN%p*M!qyOQ}v~z8;zgTl{xl1}b#Rdz%uk1w_z1Nc`RQMEXUxwu3sl=Hjujce|3Z+CM9V;^VctABhxODR&aTINod66#Sy$scPeW_V3&Ajsrp zLPfsmp7cF`8|vBGM=Z*z|>`{kmJzeCe<*db`ZdwtyA~OT#@BOqag}?+YgQr+LY#x*hjY)yxuj2JF+-6 zYc$1uY{7w}<$CkY9;CnEJ8V9Mh@=<^n)hJEoelX!d8wQTC^t<%tpvz|FUc=&YA;^5 zZan%7u4RUuc%1+nRujku@A%it&gR|8$#-!Bi!!_|POnukkY5Vot5pwgv&;6H2R*Y$F@9@VVB?PHEdOPOtZ_s}-U!-Sw&b6I#6 z6oEa+P|~~SW!~j-l0w{V+0)4;voYfkel&~0mu86%u93I3SN62uRyq~Zw~Q$7u{0!O z-E7Yi83sm+@$7T}8Rz_T_VlRgKk4HAA@y!!7c~9+tV$RJ&O~dtSM6C@BXSg~X0pK$ zHiPgp(lP>J9}V0qn0LypfY99i#kNiUzc4^&_dN@UEE(J6bPoi%^+{k5Wp%CWshK5R z?PP3d^|(DDW=qvX{%x+*xljVLz5?Woo?2=^i5YoSSg2`D$|F|s7#hDutcO+x+FG{= zD@~18|5uf--p792O#0p6_oj~>Kgf)mb zpV?C{f6JN!s1?~k4V759bml=@6WJDuS_BV+Ad{IcoN)x$9mVlagM8L#-cU_z6d^K! zWfI)HCkVJKsp!^+92m*ii_UN5<2F2v+Lj=n^vot_(3Lv==Y&y9%rWEVm^c_1K$!{SPpSr#>Y^ zk~i}M@Y#53x}{6uum!mIIP*bWpRZKDI_s@pqiIc*v5uWh;LW>pjGqyV0bu|8XiQ5> zD*yT5GlAl&r~|9G!4GG(HQUMym5jpl(C$%I!b8>D)j)VQRYdCAXevvL>Fh4lj?`W{ z0_g+2D<1Rqpb({NCbgC;=VQ07Mer>F8t-*=~NXv|8uO%>rO;V09C9adENOo4^KIA~j3S>xQbSg}t+* z`3X6puJ+wHO0*Vg&7q2^wJR0NNk0LDWKa1?lxQZMu%{z(;5uV;nQF-3KD56mXZQ`+ zny`$&c!1tng5N^h1&DoODo^!uZfo}#_9}d8;%Vo2CY`vAC)HOC_TDPWL8_d(HqM&; z=Q6i?0R@1&+iBX%C~D6f!`Y`NzOt+044vy`NY@GVa3ypwq7IV{)M(5rJ-RQaLgX9e{XjVV3Ns5?DFM-P+ z4ocJa7qSFv+=8OZH>%6c_J%~>Y6hLvEoDNp=2Wnhgvt2hH4$t zlUW9?F(_`rcmPy}hKo_ziv@W+2L9u>LG%WLx3P$Oi(R*w#OSoZ!{B1fpvQ=m?fp&O zecRJM&sN;Dq=z*U#%YgpEC}CG%YldO(|$xnT>%Gk^%t5sx>tk(>VG)u3{@cL3IdX; zCSn0HNHeS%cQ-6)^!EA!9S2}SGYM0^%&_ZM6=(1T!77wvUcMSM=;mHp6kn z?R-ENj_unZ>t4=L^zGncX3*u7)V&V`9!MPOaH>HVO2ZT7AboHD`m2vmP(L;$LwWqw z+$8%s#-&v16>x_Va(!H?w~*HHuG_haPqnt_kZm;mriw>Jn

m_cN5*-D5fLdbJ*J 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 diff --git a/src/compiler/compile/Component.ts b/src/compiler/compile/Component.ts index ed2b10e404..a5a31c8070 100644 --- a/src/compiler/compile/Component.ts +++ b/src/compiler/compile/Component.ts @@ -8,7 +8,7 @@ import { create_scopes, extract_names, Scope, - extract_identifiers + extract_identifiers, } from './utils/scope'; import Stylesheet from './css/Stylesheet'; import { test } from '../config'; @@ -155,7 +155,7 @@ export default class Component { ) || { start: 0, end: 0 }; this.warn(svelteOptions, { code: 'custom-element-no-tag', - message: `No custom element 'tag' option was specified. To automatically register a custom element, specify a name with a hyphen in it, e.g. . To hide this warning, use ` + message: `No custom element 'tag' option was specified. To automatically register a custom element, specify a name with a hyphen in it, e.g. . To hide this warning, use `, }); } this.tag = this.component_options.tag || compile_options.tag; @@ -190,7 +190,7 @@ export default class Component { this.add_var({ name, injected: true, - referenced: true + referenced: true, }); } else if (name[0] === '$') { this.add_var({ @@ -198,7 +198,7 @@ export default class Component { injected: true, referenced: true, mutated: true, - writable: true + writable: true, }); const subscribable_name = name.slice(1); @@ -289,7 +289,7 @@ export default class Component { } const imported_helpers = Array.from(this.helpers, ([name, alias]) => ({ name, - alias + alias, })); create_module( @@ -305,7 +305,7 @@ export default class Component { .filter(variable => variable.module && variable.export_name) .map(variable => ({ name: variable.name, - as: variable.export_name + as: variable.export_name, })) ); @@ -342,9 +342,9 @@ export default class Component { reassigned: v.reassigned || false, referenced: v.referenced || false, writable: v.writable || false, - referenced_from_script: v.referenced_from_script || false + referenced_from_script: v.referenced_from_script || false, })), - stats: this.stats.render() + stats: this.stats.render(), }; } @@ -409,7 +409,7 @@ export default class Component { source: this.source, start: pos.start, end: pos.end, - filename: this.compile_options.filename + filename: this.compile_options.filename, }); } @@ -441,7 +441,7 @@ export default class Component { pos: pos.start, filename: this.compile_options.filename, toString: () => - `${warning.message} (${start.line}:${start.column})\n${frame}` + `${warning.message} (${start.line}:${start.column})\n${frame}`, }); } @@ -453,7 +453,7 @@ export default class Component { if (node.type === 'ExportDefaultDeclaration') { this.error(node, { code: `default-export`, - message: `A component cannot have a default export` + message: `A component cannot have a default export`, }); } @@ -461,7 +461,7 @@ export default class Component { if (node.source) { this.error(node, { code: `not-implemented`, - message: `A component currently cannot have an export ... from` + message: `A component currently cannot have an export ... from`, }); } if (node.declaration) { @@ -531,10 +531,10 @@ export default class Component { if (node.type === 'LabeledStatement' && node.label.name === '$') { component.warn(node as any, { code: 'module-script-reactive-declaration', - message: '$: has no effect in a module script' + message: '$: has no effect in a module script', }); } - } + }, }); const { scope, globals } = create_scopes(script.content); @@ -544,7 +544,7 @@ export default class Component { if (name[0] === '$') { this.error(node as any, { code: 'illegal-declaration', - message: `The $ prefix is reserved, and cannot be used for variable and import names` + message: `The $ prefix is reserved, and cannot be used for variable and import names`, }); } @@ -562,7 +562,7 @@ export default class Component { if (name[0] === '$') { this.error(node as any, { code: 'illegal-subscription', - message: `Cannot reference store value inside - \ No newline at end of file diff --git a/test/js/samples/inline-style-optimized-multiple/expected.js b/test/js/samples/inline-style-optimized-multiple/expected.js index 0a9d0a1e8e..84a38abd7b 100644 --- a/test/js/samples/inline-style-optimized-multiple/expected.js +++ b/test/js/samples/inline-style-optimized-multiple/expected.js @@ -44,7 +44,7 @@ function instance($$self, $$props, $$invalidate) { let { x } = $$props; let { y } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("color" in $$props) $$invalidate(0, color = $$props.color); if ("x" in $$props) $$invalidate(1, x = $$props.x); if ("y" in $$props) $$invalidate(2, y = $$props.y); diff --git a/test/js/samples/inline-style-optimized-url/expected.js b/test/js/samples/inline-style-optimized-url/expected.js index 0debb03585..77870348a5 100644 --- a/test/js/samples/inline-style-optimized-url/expected.js +++ b/test/js/samples/inline-style-optimized-url/expected.js @@ -37,7 +37,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let { data } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("data" in $$props) $$invalidate(0, data = $$props.data); }; diff --git a/test/js/samples/inline-style-optimized/expected.js b/test/js/samples/inline-style-optimized/expected.js index b7db0f1cf3..5bef284f09 100644 --- a/test/js/samples/inline-style-optimized/expected.js +++ b/test/js/samples/inline-style-optimized/expected.js @@ -37,7 +37,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let { color } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("color" in $$props) $$invalidate(0, color = $$props.color); }; diff --git a/test/js/samples/inline-style-unoptimized/expected.js b/test/js/samples/inline-style-unoptimized/expected.js index 0688f14b9b..fdff685ead 100644 --- a/test/js/samples/inline-style-unoptimized/expected.js +++ b/test/js/samples/inline-style-unoptimized/expected.js @@ -54,7 +54,7 @@ function instance($$self, $$props, $$invalidate) { let { key } = $$props; let { value } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("style" in $$props) $$invalidate(0, style = $$props.style); if ("key" in $$props) $$invalidate(1, key = $$props.key); if ("value" in $$props) $$invalidate(2, value = $$props.value); diff --git a/test/js/samples/input-files/expected.js b/test/js/samples/input-files/expected.js index 8adc7443f5..1c1e57fc9b 100644 --- a/test/js/samples/input-files/expected.js +++ b/test/js/samples/input-files/expected.js @@ -13,7 +13,6 @@ import { function create_fragment(ctx) { let input; - let mounted; let dispose; return { @@ -22,20 +21,16 @@ function create_fragment(ctx) { attr(input, "type", "file"); input.multiple = true; }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, input, anchor); - - if (!mounted) { - dispose = listen(input, "change", /*input_change_handler*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(input, "change", /*input_change_handler*/ ctx[1]); }, p: noop, i: noop, o: noop, d(detaching) { if (detaching) detach(input); - mounted = false; dispose(); } }; @@ -49,7 +44,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(0, files); } - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("files" in $$props) $$invalidate(0, files = $$props.files); }; diff --git a/test/js/samples/input-no-initial-value/expected.js b/test/js/samples/input-no-initial-value/expected.js index 3354aa3111..f72daa22a3 100644 --- a/test/js/samples/input-no-initial-value/expected.js +++ b/test/js/samples/input-no-initial-value/expected.js @@ -20,7 +20,6 @@ function create_fragment(ctx) { let input; let t0; let button; - let mounted; let dispose; return { @@ -33,21 +32,18 @@ function create_fragment(ctx) { attr(input, "type", "text"); input.required = true; }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, form, anchor); append(form, input); set_input_value(input, /*test*/ ctx[0]); append(form, t0); append(form, button); + if (remount) run_all(dispose); - if (!mounted) { - dispose = [ - listen(input, "input", /*input_input_handler*/ ctx[2]), - listen(form, "submit", /*handleSubmit*/ ctx[1]) - ]; - - mounted = true; - } + dispose = [ + listen(input, "input", /*input_input_handler*/ ctx[2]), + listen(form, "submit", /*handleSubmit*/ ctx[1]) + ]; }, p(ctx, [dirty]) { if (dirty & /*test*/ 1 && input.value !== /*test*/ ctx[0]) { @@ -58,7 +54,6 @@ function create_fragment(ctx) { o: noop, d(detaching) { if (detaching) detach(form); - mounted = false; run_all(dispose); } }; diff --git a/test/js/samples/input-range/expected.js b/test/js/samples/input-range/expected.js index a855ca3653..17a8065449 100644 --- a/test/js/samples/input-range/expected.js +++ b/test/js/samples/input-range/expected.js @@ -16,7 +16,6 @@ import { function create_fragment(ctx) { let input; - let mounted; let dispose; return { @@ -24,18 +23,15 @@ function create_fragment(ctx) { input = element("input"); attr(input, "type", "range"); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, input, anchor); set_input_value(input, /*value*/ ctx[0]); + if (remount) run_all(dispose); - if (!mounted) { - dispose = [ - listen(input, "change", /*input_change_input_handler*/ ctx[1]), - listen(input, "input", /*input_change_input_handler*/ ctx[1]) - ]; - - mounted = true; - } + dispose = [ + listen(input, "change", /*input_change_input_handler*/ ctx[1]), + listen(input, "input", /*input_change_input_handler*/ ctx[1]) + ]; }, p(ctx, [dirty]) { if (dirty & /*value*/ 1) { @@ -46,7 +42,6 @@ function create_fragment(ctx) { o: noop, d(detaching) { if (detaching) detach(input); - mounted = false; run_all(dispose); } }; @@ -60,7 +55,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(0, value); } - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("value" in $$props) $$invalidate(0, value = $$props.value); }; diff --git a/test/js/samples/input-value/expected.js b/test/js/samples/input-value/expected.js index 781a2ae603..31be2895ac 100644 --- a/test/js/samples/input-value/expected.js +++ b/test/js/samples/input-value/expected.js @@ -20,7 +20,6 @@ function create_fragment(ctx) { let h1; let t1; let t2; - let mounted; let dispose; return { @@ -32,17 +31,14 @@ function create_fragment(ctx) { t2 = text("!"); input.value = /*name*/ ctx[0]; }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, input, anchor); insert(target, t0, anchor); insert(target, h1, anchor); append(h1, t1); append(h1, t2); - - if (!mounted) { - dispose = listen(input, "input", /*onInput*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(input, "input", /*onInput*/ ctx[1]); }, p(ctx, [dirty]) { if (dirty & /*name*/ 1 && input.value !== /*name*/ ctx[0]) { @@ -57,7 +53,6 @@ function create_fragment(ctx) { if (detaching) detach(input); if (detaching) detach(t0); if (detaching) detach(h1); - mounted = false; dispose(); } }; diff --git a/test/js/samples/input-without-blowback-guard/expected.js b/test/js/samples/input-without-blowback-guard/expected.js index 6c5b215623..1e379032f3 100644 --- a/test/js/samples/input-without-blowback-guard/expected.js +++ b/test/js/samples/input-without-blowback-guard/expected.js @@ -13,7 +13,6 @@ import { function create_fragment(ctx) { let input; - let mounted; let dispose; return { @@ -21,14 +20,11 @@ function create_fragment(ctx) { input = element("input"); attr(input, "type", "checkbox"); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, input, anchor); input.checked = /*foo*/ ctx[0]; - - if (!mounted) { - dispose = listen(input, "change", /*input_change_handler*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(input, "change", /*input_change_handler*/ ctx[1]); }, p(ctx, [dirty]) { if (dirty & /*foo*/ 1) { @@ -39,7 +35,6 @@ function create_fragment(ctx) { o: noop, d(detaching) { if (detaching) detach(input); - mounted = false; dispose(); } }; @@ -53,7 +48,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(0, foo); } - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("foo" in $$props) $$invalidate(0, foo = $$props.foo); }; diff --git a/test/js/samples/instrumentation-script-if-no-block/expected.js b/test/js/samples/instrumentation-script-if-no-block/expected.js index 7f51c64550..f45e52aebd 100644 --- a/test/js/samples/instrumentation-script-if-no-block/expected.js +++ b/test/js/samples/instrumentation-script-if-no-block/expected.js @@ -20,7 +20,6 @@ function create_fragment(ctx) { let p; let t2; let t3; - let mounted; let dispose; return { @@ -32,17 +31,14 @@ function create_fragment(ctx) { t2 = text("x: "); t3 = text(/*x*/ ctx[0]); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, button, anchor); insert(target, t1, anchor); insert(target, p, anchor); append(p, t2); append(p, t3); - - if (!mounted) { - dispose = listen(button, "click", /*foo*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(button, "click", /*foo*/ ctx[1]); }, p(ctx, [dirty]) { if (dirty & /*x*/ 1) set_data(t3, /*x*/ ctx[0]); @@ -53,7 +49,6 @@ function create_fragment(ctx) { if (detaching) detach(button); if (detaching) detach(t1); if (detaching) detach(p); - mounted = false; dispose(); } }; diff --git a/test/js/samples/instrumentation-script-x-equals-x/expected.js b/test/js/samples/instrumentation-script-x-equals-x/expected.js index ea0d65acb9..9fe9640978 100644 --- a/test/js/samples/instrumentation-script-x-equals-x/expected.js +++ b/test/js/samples/instrumentation-script-x-equals-x/expected.js @@ -21,7 +21,6 @@ function create_fragment(ctx) { let t2; let t3_value = /*things*/ ctx[0].length + ""; let t3; - let mounted; let dispose; return { @@ -33,17 +32,14 @@ function create_fragment(ctx) { t2 = text("number of things: "); t3 = text(t3_value); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, button, anchor); insert(target, t1, anchor); insert(target, p, anchor); append(p, t2); append(p, t3); - - if (!mounted) { - dispose = listen(button, "click", /*foo*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(button, "click", /*foo*/ ctx[1]); }, p(ctx, [dirty]) { if (dirty & /*things*/ 1 && t3_value !== (t3_value = /*things*/ ctx[0].length + "")) set_data(t3, t3_value); @@ -54,7 +50,6 @@ function create_fragment(ctx) { if (detaching) detach(button); if (detaching) detach(t1); if (detaching) detach(p); - mounted = false; dispose(); } }; diff --git a/test/js/samples/instrumentation-template-if-no-block/expected.js b/test/js/samples/instrumentation-template-if-no-block/expected.js index 0c2713a9cc..6f3bea4010 100644 --- a/test/js/samples/instrumentation-template-if-no-block/expected.js +++ b/test/js/samples/instrumentation-template-if-no-block/expected.js @@ -20,7 +20,6 @@ function create_fragment(ctx) { let p; let t2; let t3; - let mounted; let dispose; return { @@ -32,17 +31,14 @@ function create_fragment(ctx) { t2 = text("x: "); t3 = text(/*x*/ ctx[0]); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, button, anchor); insert(target, t1, anchor); insert(target, p, anchor); append(p, t2); append(p, t3); - - if (!mounted) { - dispose = listen(button, "click", /*click_handler*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(button, "click", /*click_handler*/ ctx[1]); }, p(ctx, [dirty]) { if (dirty & /*x*/ 1) set_data(t3, /*x*/ ctx[0]); @@ -53,7 +49,6 @@ function create_fragment(ctx) { if (detaching) detach(button); if (detaching) detach(t1); if (detaching) detach(p); - mounted = false; dispose(); } }; diff --git a/test/js/samples/instrumentation-template-x-equals-x/expected.js b/test/js/samples/instrumentation-template-x-equals-x/expected.js index 55cd310661..ed095353bd 100644 --- a/test/js/samples/instrumentation-template-x-equals-x/expected.js +++ b/test/js/samples/instrumentation-template-x-equals-x/expected.js @@ -21,7 +21,6 @@ function create_fragment(ctx) { let t2; let t3_value = /*things*/ ctx[0].length + ""; let t3; - let mounted; let dispose; return { @@ -33,17 +32,14 @@ function create_fragment(ctx) { t2 = text("number of things: "); t3 = text(t3_value); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, button, anchor); insert(target, t1, anchor); insert(target, p, anchor); append(p, t2); append(p, t3); - - if (!mounted) { - dispose = listen(button, "click", /*click_handler*/ ctx[1]); - mounted = true; - } + if (remount) dispose(); + dispose = listen(button, "click", /*click_handler*/ ctx[1]); }, p(ctx, [dirty]) { if (dirty & /*things*/ 1 && t3_value !== (t3_value = /*things*/ ctx[0].length + "")) set_data(t3, t3_value); @@ -54,7 +50,6 @@ function create_fragment(ctx) { if (detaching) detach(button); if (detaching) detach(t1); if (detaching) detach(p); - mounted = false; dispose(); } }; diff --git a/test/js/samples/loop-protect/_config.js b/test/js/samples/loop-protect/_config.js index 1dc927b4da..fcbf8be09b 100644 --- a/test/js/samples/loop-protect/_config.js +++ b/test/js/samples/loop-protect/_config.js @@ -1,6 +1,6 @@ export default { options: { dev: true, - loopGuardTimeout: 100 - } + loopGuardTimeout: 100, + }, }; diff --git a/test/js/samples/loop-protect/expected.js b/test/js/samples/loop-protect/expected.js index 1042b20823..c52d9df437 100644 --- a/test/js/samples/loop-protect/expected.js +++ b/test/js/samples/loop-protect/expected.js @@ -67,8 +67,6 @@ function foo() { } function instance($$self, $$props, $$invalidate) { - let { $$slots: slots = {}, $$scope } = $$props; - validate_slots("Component", slots, []); let node; { @@ -113,10 +111,12 @@ function instance($$self, $$props, $$invalidate) { if (!~writable_props.indexOf(key) && key.slice(0, 2) !== "$$") console_1.warn(` was created with unknown prop '${key}'`); }); + let { $$slots = {}, $$scope } = $$props; + validate_slots("Component", $$slots, []); + function div_binding($$value) { binding_callbacks[$$value ? "unshift" : "push"](() => { - node = $$value; - $$invalidate(0, node); + $$invalidate(0, node = $$value); }); } diff --git a/test/js/samples/media-bindings/expected.js b/test/js/samples/media-bindings/expected.js index 867d4a7dad..0849a38b51 100644 --- a/test/js/samples/media-bindings/expected.js +++ b/test/js/samples/media-bindings/expected.js @@ -19,7 +19,6 @@ function create_fragment(ctx) { let audio_updating = false; let audio_animationframe; let audio_is_paused = true; - let mounted; let dispose; function audio_timeupdate_handler() { @@ -43,7 +42,7 @@ function create_fragment(ctx) { if (/*seeking*/ ctx[9] === void 0) add_render_callback(() => /*audio_seeking_seeked_handler*/ ctx[18].call(audio)); if (/*ended*/ ctx[10] === void 0) add_render_callback(() => /*audio_ended_handler*/ ctx[19].call(audio)); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, audio, anchor); if (!isNaN(/*volume*/ ctx[6])) { @@ -56,23 +55,21 @@ function create_fragment(ctx) { audio.playbackRate = /*playbackRate*/ ctx[8]; } - if (!mounted) { - dispose = [ - listen(audio, "progress", /*audio_progress_handler*/ ctx[11]), - listen(audio, "loadedmetadata", /*audio_loadedmetadata_handler*/ ctx[12]), - listen(audio, "timeupdate", audio_timeupdate_handler), - listen(audio, "durationchange", /*audio_durationchange_handler*/ ctx[14]), - listen(audio, "play", /*audio_play_pause_handler*/ ctx[15]), - listen(audio, "pause", /*audio_play_pause_handler*/ ctx[15]), - listen(audio, "volumechange", /*audio_volumechange_handler*/ ctx[16]), - listen(audio, "ratechange", /*audio_ratechange_handler*/ ctx[17]), - listen(audio, "seeking", /*audio_seeking_seeked_handler*/ ctx[18]), - listen(audio, "seeked", /*audio_seeking_seeked_handler*/ ctx[18]), - listen(audio, "ended", /*audio_ended_handler*/ ctx[19]) - ]; - - mounted = true; - } + if (remount) run_all(dispose); + + dispose = [ + listen(audio, "progress", /*audio_progress_handler*/ ctx[11]), + listen(audio, "loadedmetadata", /*audio_loadedmetadata_handler*/ ctx[12]), + listen(audio, "timeupdate", audio_timeupdate_handler), + listen(audio, "durationchange", /*audio_durationchange_handler*/ ctx[14]), + listen(audio, "play", /*audio_play_pause_handler*/ ctx[15]), + listen(audio, "pause", /*audio_play_pause_handler*/ ctx[15]), + listen(audio, "volumechange", /*audio_volumechange_handler*/ ctx[16]), + listen(audio, "ratechange", /*audio_ratechange_handler*/ ctx[17]), + listen(audio, "seeking", /*audio_seeking_seeked_handler*/ ctx[18]), + listen(audio, "seeked", /*audio_seeking_seeked_handler*/ ctx[18]), + listen(audio, "ended", /*audio_ended_handler*/ ctx[19]) + ]; }, p(ctx, [dirty]) { if (!audio_updating && dirty & /*currentTime*/ 8 && !isNaN(/*currentTime*/ ctx[3])) { @@ -101,7 +98,6 @@ function create_fragment(ctx) { o: noop, d(detaching) { if (detaching) detach(audio); - mounted = false; run_all(dispose); } }; @@ -173,7 +169,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(10, ended); } - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("buffered" in $$props) $$invalidate(0, buffered = $$props.buffered); if ("seekable" in $$props) $$invalidate(1, seekable = $$props.seekable); if ("played" in $$props) $$invalidate(2, played = $$props.played); diff --git a/test/js/samples/non-imported-component/expected.js b/test/js/samples/non-imported-component/expected.js index 5a6b8e8bb7..2784fd17ac 100644 --- a/test/js/samples/non-imported-component/expected.js +++ b/test/js/samples/non-imported-component/expected.js @@ -17,12 +17,10 @@ import { import Imported from "Imported.svelte"; function create_fragment(ctx) { - let imported; let t; - let nonimported; let current; - imported = new Imported({}); - nonimported = new NonImported({}); + const imported = new Imported({}); + const nonimported = new NonImported({}); return { c() { diff --git a/test/js/samples/optional-chaining/expected.js b/test/js/samples/optional-chaining/expected.js deleted file mode 100644 index 8aa94796c1..0000000000 --- a/test/js/samples/optional-chaining/expected.js +++ /dev/null @@ -1,189 +0,0 @@ -/* generated by Svelte vX.Y.Z */ -import { - SvelteComponent, - attr, - create_component, - destroy_component, - detach, - element, - init, - insert, - mount_component, - safe_not_equal, - set_data, - space, - text, - transition_in, - transition_out -} from "svelte/internal"; - -function create_fragment(ctx) { - let t0_value = /*a*/ ctx[0].normal + ""; - let t0; - let t1_value = /*b*/ ctx[1]?.optional + ""; - let t1; - let t2; - let t3_value = /*c*/ ctx[2]["computed"] + ""; - let t3; - let t4_value = /*d*/ ctx[3]?.["computed_optional"] + ""; - let t4; - let t5; - let t6_value = /*e*/ ctx[4]() + ""; - let t6; - let t7_value = /*f*/ ctx[5]?.() + ""; - let t7; - let t8; - let div; - let div_a_value; - let div_b_value; - let div_c_value; - let div_d_value; - let div_e_value; - let div_f_value; - let t9; - let component; - let current; - - component = new /*Component*/ ctx[6]({ - props: { - a: /*a*/ ctx[0].normal, - b: /*b*/ ctx[1]?.optional, - c: /*c*/ ctx[2]["computed"], - d: /*d*/ ctx[3]?.["computed_optional"], - e: /*e*/ ctx[4](), - f: /*f*/ ctx[5]?.() - } - }); - - return { - c() { - t0 = text(t0_value); - t1 = text(t1_value); - t2 = space(); - t3 = text(t3_value); - t4 = text(t4_value); - t5 = space(); - t6 = text(t6_value); - t7 = text(t7_value); - t8 = space(); - div = element("div"); - t9 = space(); - create_component(component.$$.fragment); - attr(div, "a", div_a_value = /*a*/ ctx[0].normal); - attr(div, "b", div_b_value = /*b*/ ctx[1]?.optional); - attr(div, "c", div_c_value = /*c*/ ctx[2]["computed"]); - attr(div, "d", div_d_value = /*d*/ ctx[3]?.["computed_optional"]); - attr(div, "e", div_e_value = /*e*/ ctx[4]()); - attr(div, "f", div_f_value = /*f*/ ctx[5]?.()); - }, - m(target, anchor) { - insert(target, t0, anchor); - insert(target, t1, anchor); - insert(target, t2, anchor); - insert(target, t3, anchor); - insert(target, t4, anchor); - insert(target, t5, anchor); - insert(target, t6, anchor); - insert(target, t7, anchor); - insert(target, t8, anchor); - insert(target, div, anchor); - insert(target, t9, anchor); - mount_component(component, target, anchor); - current = true; - }, - p(ctx, [dirty]) { - if ((!current || dirty & /*a*/ 1) && t0_value !== (t0_value = /*a*/ ctx[0].normal + "")) set_data(t0, t0_value); - if ((!current || dirty & /*b*/ 2) && t1_value !== (t1_value = /*b*/ ctx[1]?.optional + "")) set_data(t1, t1_value); - if ((!current || dirty & /*c*/ 4) && t3_value !== (t3_value = /*c*/ ctx[2]["computed"] + "")) set_data(t3, t3_value); - if ((!current || dirty & /*d*/ 8) && t4_value !== (t4_value = /*d*/ ctx[3]?.["computed_optional"] + "")) set_data(t4, t4_value); - if ((!current || dirty & /*e*/ 16) && t6_value !== (t6_value = /*e*/ ctx[4]() + "")) set_data(t6, t6_value); - if ((!current || dirty & /*f*/ 32) && t7_value !== (t7_value = /*f*/ ctx[5]?.() + "")) set_data(t7, t7_value); - - if (!current || dirty & /*a*/ 1 && div_a_value !== (div_a_value = /*a*/ ctx[0].normal)) { - attr(div, "a", div_a_value); - } - - if (!current || dirty & /*b*/ 2 && div_b_value !== (div_b_value = /*b*/ ctx[1]?.optional)) { - attr(div, "b", div_b_value); - } - - if (!current || dirty & /*c*/ 4 && div_c_value !== (div_c_value = /*c*/ ctx[2]["computed"])) { - attr(div, "c", div_c_value); - } - - if (!current || dirty & /*d*/ 8 && div_d_value !== (div_d_value = /*d*/ ctx[3]?.["computed_optional"])) { - attr(div, "d", div_d_value); - } - - if (!current || dirty & /*e*/ 16 && div_e_value !== (div_e_value = /*e*/ ctx[4]())) { - attr(div, "e", div_e_value); - } - - if (!current || dirty & /*f*/ 32 && div_f_value !== (div_f_value = /*f*/ ctx[5]?.())) { - attr(div, "f", div_f_value); - } - - const component_changes = {}; - if (dirty & /*a*/ 1) component_changes.a = /*a*/ ctx[0].normal; - if (dirty & /*b*/ 2) component_changes.b = /*b*/ ctx[1]?.optional; - if (dirty & /*c*/ 4) component_changes.c = /*c*/ ctx[2]["computed"]; - if (dirty & /*d*/ 8) component_changes.d = /*d*/ ctx[3]?.["computed_optional"]; - if (dirty & /*e*/ 16) component_changes.e = /*e*/ ctx[4](); - if (dirty & /*f*/ 32) component_changes.f = /*f*/ ctx[5]?.(); - component.$set(component_changes); - }, - i(local) { - if (current) return; - transition_in(component.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(component.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(t0); - if (detaching) detach(t1); - if (detaching) detach(t2); - if (detaching) detach(t3); - if (detaching) detach(t4); - if (detaching) detach(t5); - if (detaching) detach(t6); - if (detaching) detach(t7); - if (detaching) detach(t8); - if (detaching) detach(div); - if (detaching) detach(t9); - destroy_component(component, detaching); - } - }; -} - -function instance($$self, $$props, $$invalidate) { - let { a } = $$props; - let { b } = $$props; - let { c } = $$props; - let { d } = $$props; - let { e } = $$props; - let { f } = $$props; - let Component; - - $$self.$$set = $$props => { - if ("a" in $$props) $$invalidate(0, a = $$props.a); - if ("b" in $$props) $$invalidate(1, b = $$props.b); - if ("c" in $$props) $$invalidate(2, c = $$props.c); - if ("d" in $$props) $$invalidate(3, d = $$props.d); - if ("e" in $$props) $$invalidate(4, e = $$props.e); - if ("f" in $$props) $$invalidate(5, f = $$props.f); - }; - - return [a, b, c, d, e, f, Component]; -} - -class Component_1 extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance, create_fragment, safe_not_equal, { a: 0, b: 1, c: 2, d: 3, e: 4, f: 5 }); - } -} - -export default Component_1; \ No newline at end of file diff --git a/test/js/samples/optional-chaining/input.svelte b/test/js/samples/optional-chaining/input.svelte deleted file mode 100644 index 78edf2ca85..0000000000 --- a/test/js/samples/optional-chaining/input.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - -{a.normal}{b?.optional} -{c['computed']}{d?.['computed_optional']} -{e()}{f?.()} - -

- - diff --git a/test/js/samples/reactive-values-non-topologically-ordered/expected.js b/test/js/samples/reactive-values-non-topologically-ordered/expected.js index 15290496d5..3d266f10ac 100644 --- a/test/js/samples/reactive-values-non-topologically-ordered/expected.js +++ b/test/js/samples/reactive-values-non-topologically-ordered/expected.js @@ -6,7 +6,7 @@ function instance($$self, $$props, $$invalidate) { let a; let b; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("x" in $$props) $$invalidate(0, x = $$props.x); }; diff --git a/test/js/samples/reactive-values-non-writable-dependencies/expected.js b/test/js/samples/reactive-values-non-writable-dependencies/expected.js index 5196a770d9..38bd356d85 100644 --- a/test/js/samples/reactive-values-non-writable-dependencies/expected.js +++ b/test/js/samples/reactive-values-non-writable-dependencies/expected.js @@ -5,7 +5,7 @@ function instance($$self, $$props, $$invalidate) { let { a = 1 } = $$props; let { b = 2 } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("a" in $$props) $$invalidate(0, a = $$props.a); if ("b" in $$props) $$invalidate(1, b = $$props.b); }; diff --git a/test/js/samples/select-dynamic-value/expected.js b/test/js/samples/select-dynamic-value/expected.js index 8777cd2600..a93a47bd3a 100644 --- a/test/js/samples/select-dynamic-value/expected.js +++ b/test/js/samples/select-dynamic-value/expected.js @@ -7,14 +7,14 @@ import { init, insert, noop, - safe_not_equal, - select_option + safe_not_equal } from "svelte/internal"; function create_fragment(ctx) { let select; let option0; let option1; + let select_value_value; return { c() { @@ -32,11 +32,27 @@ function create_fragment(ctx) { insert(target, select, anchor); append(select, option0); append(select, option1); - select_option(select, /*current*/ ctx[0]); + select_value_value = /*current*/ ctx[0]; + + for (var i = 0; i < select.options.length; i += 1) { + var option = select.options[i]; + + if (option.__value === select_value_value) { + option.selected = true; + break; + } + } }, p(ctx, [dirty]) { - if (dirty & /*current*/ 1) { - select_option(select, /*current*/ ctx[0]); + if (dirty & /*current*/ 1 && select_value_value !== (select_value_value = /*current*/ ctx[0])) { + for (var i = 0; i < select.options.length; i += 1) { + var option = select.options[i]; + + if (option.__value === select_value_value) { + option.selected = true; + break; + } + } } }, i: noop, @@ -50,7 +66,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let { current } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("current" in $$props) $$invalidate(0, current = $$props.current); }; diff --git a/test/js/samples/src-attribute-check/expected.js b/test/js/samples/src-attribute-check/expected.js index 93638edfb4..e03b3a6ba7 100644 --- a/test/js/samples/src-attribute-check/expected.js +++ b/test/js/samples/src-attribute-check/expected.js @@ -67,7 +67,7 @@ function instance($$self, $$props, $$invalidate) { let { url } = $$props; let { slug } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("url" in $$props) $$invalidate(0, url = $$props.url); if ("slug" in $$props) $$invalidate(1, slug = $$props.slug); }; diff --git a/test/js/samples/ssr-no-oncreate-etc/expected.js b/test/js/samples/ssr-no-oncreate-etc/expected.js index b91deb3e97..803f06a882 100644 --- a/test/js/samples/ssr-no-oncreate-etc/expected.js +++ b/test/js/samples/ssr-no-oncreate-etc/expected.js @@ -15,7 +15,7 @@ function swipe(node, callback) { } // TODO implement -const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => { +const Component = create_ssr_component(($$result, $$props, $$bindings, $$slots) => { onMount(() => { console.log("onMount"); }); diff --git a/test/js/samples/ssr-preserve-comments/expected.js b/test/js/samples/ssr-preserve-comments/expected.js index de9fa7582e..1dc12710c0 100644 --- a/test/js/samples/ssr-preserve-comments/expected.js +++ b/test/js/samples/ssr-preserve-comments/expected.js @@ -1,7 +1,7 @@ /* generated by Svelte vX.Y.Z */ import { create_ssr_component } from "svelte/internal"; -const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => { +const Component = create_ssr_component(($$result, $$props, $$bindings, $$slots) => { return `
content
more content
`; diff --git a/test/js/samples/title/expected.js b/test/js/samples/title/expected.js index b10f569759..d4e7e1a584 100644 --- a/test/js/samples/title/expected.js +++ b/test/js/samples/title/expected.js @@ -22,7 +22,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let { custom } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("custom" in $$props) $$invalidate(0, custom = $$props.custom); }; diff --git a/test/js/samples/transition-local/expected.js b/test/js/samples/transition-local/expected.js index ea3d9db3d7..25a03f026f 100644 --- a/test/js/samples/transition-local/expected.js +++ b/test/js/samples/transition-local/expected.js @@ -124,7 +124,7 @@ function instance($$self, $$props, $$invalidate) { let { x } = $$props; let { y } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("x" in $$props) $$invalidate(0, x = $$props.x); if ("y" in $$props) $$invalidate(1, y = $$props.y); }; diff --git a/test/js/samples/transition-repeated-outro/expected.js b/test/js/samples/transition-repeated-outro/expected.js index 12483ab91a..1f76a93666 100644 --- a/test/js/samples/transition-repeated-outro/expected.js +++ b/test/js/samples/transition-repeated-outro/expected.js @@ -102,7 +102,7 @@ function create_fragment(ctx) { function instance($$self, $$props, $$invalidate) { let { num = 1 } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("num" in $$props) $$invalidate(0, num = $$props.num); }; diff --git a/test/js/samples/use-elements-as-anchors/expected.js b/test/js/samples/use-elements-as-anchors/expected.js index d07411518e..5be8808edb 100644 --- a/test/js/samples/use-elements-as-anchors/expected.js +++ b/test/js/samples/use-elements-as-anchors/expected.js @@ -243,7 +243,7 @@ function instance($$self, $$props, $$invalidate) { let { d } = $$props; let { e } = $$props; - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("a" in $$props) $$invalidate(0, a = $$props.a); if ("b" in $$props) $$invalidate(1, b = $$props.b); if ("c" in $$props) $$invalidate(2, c = $$props.c); diff --git a/test/js/samples/video-bindings/expected.js b/test/js/samples/video-bindings/expected.js index 8afa670bbb..9c5467e1a0 100644 --- a/test/js/samples/video-bindings/expected.js +++ b/test/js/samples/video-bindings/expected.js @@ -19,7 +19,6 @@ function create_fragment(ctx) { let video_updating = false; let video_animationframe; let video_resize_listener; - let mounted; let dispose; function video_timeupdate_handler() { @@ -39,18 +38,15 @@ function create_fragment(ctx) { if (/*videoHeight*/ ctx[1] === void 0 || /*videoWidth*/ ctx[2] === void 0) add_render_callback(() => /*video_resize_handler*/ ctx[5].call(video)); add_render_callback(() => /*video_elementresize_handler*/ ctx[6].call(video)); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, video, anchor); video_resize_listener = add_resize_listener(video, /*video_elementresize_handler*/ ctx[6].bind(video)); + if (remount) run_all(dispose); - if (!mounted) { - dispose = [ - listen(video, "timeupdate", video_timeupdate_handler), - listen(video, "resize", /*video_resize_handler*/ ctx[5]) - ]; - - mounted = true; - } + dispose = [ + listen(video, "timeupdate", video_timeupdate_handler), + listen(video, "resize", /*video_resize_handler*/ ctx[5]) + ]; }, p(ctx, [dirty]) { if (!video_updating && dirty & /*currentTime*/ 1 && !isNaN(/*currentTime*/ ctx[0])) { @@ -64,7 +60,6 @@ function create_fragment(ctx) { d(detaching) { if (detaching) detach(video); video_resize_listener(); - mounted = false; run_all(dispose); } }; @@ -93,7 +88,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(3, offsetWidth); } - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("currentTime" in $$props) $$invalidate(0, currentTime = $$props.currentTime); if ("videoHeight" in $$props) $$invalidate(1, videoHeight = $$props.videoHeight); if ("videoWidth" in $$props) $$invalidate(2, videoWidth = $$props.videoWidth); diff --git a/test/js/samples/window-binding-online/expected.js b/test/js/samples/window-binding-online/expected.js index 887195bce1..fa955e4fd5 100644 --- a/test/js/samples/window-binding-online/expected.js +++ b/test/js/samples/window-binding-online/expected.js @@ -10,27 +10,23 @@ import { } from "svelte/internal"; function create_fragment(ctx) { - let mounted; let dispose; add_render_callback(/*onlinestatuschanged*/ ctx[1]); return { c: noop, - m(target, anchor) { - if (!mounted) { - dispose = [ - listen(window, "online", /*onlinestatuschanged*/ ctx[1]), - listen(window, "offline", /*onlinestatuschanged*/ ctx[1]) - ]; - - mounted = true; - } + m(target, anchor, remount) { + if (remount) run_all(dispose); + + dispose = [ + listen(window, "online", /*onlinestatuschanged*/ ctx[1]), + listen(window, "offline", /*onlinestatuschanged*/ ctx[1]) + ]; }, p: noop, i: noop, o: noop, d(detaching) { - mounted = false; run_all(dispose); } }; diff --git a/test/js/samples/window-binding-scroll/expected.js b/test/js/samples/window-binding-scroll/expected.js index 09a4d3737d..30723cc142 100644 --- a/test/js/samples/window-binding-scroll/expected.js +++ b/test/js/samples/window-binding-scroll/expected.js @@ -25,7 +25,6 @@ function create_fragment(ctx) { let p; let t0; let t1; - let mounted; let dispose; add_render_callback(/*onwindowscroll*/ ctx[1]); @@ -35,21 +34,18 @@ function create_fragment(ctx) { t0 = text("scrolled to "); t1 = text(/*y*/ ctx[0]); }, - m(target, anchor) { + m(target, anchor, remount) { insert(target, p, anchor); append(p, t0); append(p, t1); + if (remount) dispose(); - if (!mounted) { - dispose = listen(window, "scroll", () => { - scrolling = true; - clearTimeout(scrolling_timeout); - scrolling_timeout = setTimeout(clear_scrolling, 100); - /*onwindowscroll*/ ctx[1](); - }); - - mounted = true; - } + dispose = listen(window, "scroll", () => { + scrolling = true; + clearTimeout(scrolling_timeout); + scrolling_timeout = setTimeout(clear_scrolling, 100); + /*onwindowscroll*/ ctx[1](); + }); }, p(ctx, [dirty]) { if (dirty & /*y*/ 1 && !scrolling) { @@ -65,7 +61,6 @@ function create_fragment(ctx) { o: noop, d(detaching) { if (detaching) detach(p); - mounted = false; dispose(); } }; @@ -78,7 +73,7 @@ function instance($$self, $$props, $$invalidate) { $$invalidate(0, y = window.pageYOffset) } - $$self.$$set = $$props => { + $$self.$set = $$props => { if ("y" in $$props) $$invalidate(0, y = $$props.y); }; diff --git a/test/parser/index.js b/test/parser/index.js index 2c8d516a7d..27c5ec1563 100644 --- a/test/parser/index.js +++ b/test/parser/index.js @@ -20,7 +20,7 @@ describe('parse', () => { (skip ? it.skip : solo ? it.only : it)(dir, () => { const options = tryToLoadJson(`${__dirname}/samples/${dir}/options.json`) || {}; - const input = fs.readFileSync(`${__dirname}/samples/${dir}/input.svelte`, 'utf-8').replace(/\s+$/, '').replace(/\r/g, ""); + const input = fs.readFileSync(`${__dirname}/samples/${dir}/input.svelte`, 'utf-8').replace(/\s+$/, ''); const expectedOutput = tryToLoadJson(`${__dirname}/samples/${dir}/output.json`); const expectedError = tryToLoadJson(`${__dirname}/samples/${dir}/error.json`); @@ -38,9 +38,13 @@ describe('parse', () => { } catch (err) { if (err.name !== 'ParseError') throw err; if (!expectedError) throw err; - const { code, message, pos, start } = err + try { - assert.deepEqual({ code, message, pos, start }, expectedError); + assert.equal(err.code, expectedError.code); + assert.equal(err.message, expectedError.message); + assert.deepEqual(err.start, expectedError.start); + assert.equal(err.pos, expectedError.pos); + assert.equal(err.toString().split('\n')[0], `${expectedError.message} (${expectedError.start.line}:${expectedError.start.column})`); } catch (err2) { const e = err2.code === 'MODULE_NOT_FOUND' ? err : err2; throw e; diff --git a/test/parser/samples/action-with-call/output.json b/test/parser/samples/action-with-call/output.json index 66c569dc5a..ccb4011c67 100644 --- a/test/parser/samples/action-with-call/output.json +++ b/test/parser/samples/action-with-call/output.json @@ -64,8 +64,7 @@ "value": "tooltip msg", "raw": "'tooltip msg'" } - ], - "optional": false + ] } } ], diff --git a/test/parser/samples/animation/output.json b/test/parser/samples/animation/output.json index 11195009c8..1958ba2817 100644 --- a/test/parser/samples/animation/output.json +++ b/test/parser/samples/animation/output.json @@ -52,10 +52,10 @@ } ], "context": { - "type": "Identifier", - "name": "thing", "start": 17, - "end": 22 + "end": 22, + "type": "Identifier", + "name": "thing" }, "key": { "type": "Identifier", diff --git a/test/parser/samples/await-catch/output.json b/test/parser/samples/await-catch/output.json index 91862b5366..c543583018 100644 --- a/test/parser/samples/await-catch/output.json +++ b/test/parser/samples/await-catch/output.json @@ -26,10 +26,10 @@ }, "value": null, "error": { - "type": "Identifier", - "name": "theError", "start": 47, - "end": 55 + "end": 55, + "type": "Identifier", + "name": "theError" }, "pending": { "start": 19, @@ -152,8 +152,7 @@ }, "name": "message" }, - "computed": false, - "optional": false + "computed": false } } ] diff --git a/test/parser/samples/await-then-catch/output.json b/test/parser/samples/await-then-catch/output.json index e377d3fa3e..8e4b7a4c32 100644 --- a/test/parser/samples/await-then-catch/output.json +++ b/test/parser/samples/await-then-catch/output.json @@ -25,16 +25,16 @@ "name": "thePromise" }, "value": { - "type": "Identifier", - "name": "theValue", "start": 46, - "end": 54 + "end": 54, + "type": "Identifier", + "name": "theValue" }, "error": { - "type": "Identifier", - "name": "theError", "start": 96, - "end": 104 + "end": 104, + "type": "Identifier", + "name": "theError" }, "pending": { "start": 19, @@ -209,8 +209,7 @@ }, "name": "message" }, - "computed": false, - "optional": false + "computed": false } } ] diff --git a/test/parser/samples/dynamic-import/output.json b/test/parser/samples/dynamic-import/output.json index ed3d58782d..1e41252afa 100644 --- a/test/parser/samples/dynamic-import/output.json +++ b/test/parser/samples/dynamic-import/output.json @@ -275,8 +275,7 @@ }, "name": "then" }, - "computed": false, - "optional": false + "computed": false }, "arguments": [ { @@ -404,8 +403,7 @@ }, "name": "log" }, - "computed": false, - "optional": false + "computed": false }, "arguments": [ { @@ -454,25 +452,21 @@ }, "name": "default" }, - "computed": false, - "optional": false + "computed": false } - ], - "optional": false + ] } } ] } } - ], - "optional": false + ] } } ] } } - ], - "optional": false + ] } } ], diff --git a/test/parser/samples/each-block-else/output.json b/test/parser/samples/each-block-else/output.json index 622789d177..2720ce5292 100644 --- a/test/parser/samples/each-block-else/output.json +++ b/test/parser/samples/each-block-else/output.json @@ -57,10 +57,10 @@ } ], "context": { - "type": "Identifier", - "name": "animal", "start": 18, - "end": 24 + "end": 24, + "type": "Identifier", + "name": "animal" }, "else": { "start": 50, diff --git a/test/parser/samples/each-block-indexed/output.json b/test/parser/samples/each-block-indexed/output.json index 01b97ffcb4..50f2000a36 100644 --- a/test/parser/samples/each-block-indexed/output.json +++ b/test/parser/samples/each-block-indexed/output.json @@ -85,10 +85,10 @@ } ], "context": { - "type": "Identifier", - "name": "animal", "start": 18, - "end": 24 + "end": 24, + "type": "Identifier", + "name": "animal" }, "index": "i" } diff --git a/test/parser/samples/each-block-keyed/output.json b/test/parser/samples/each-block-keyed/output.json index 6eaf19a82d..7dc8681453 100644 --- a/test/parser/samples/each-block-keyed/output.json +++ b/test/parser/samples/each-block-keyed/output.json @@ -57,10 +57,10 @@ } ], "context": { - "type": "Identifier", - "name": "todo", "start": 16, - "end": 20 + "end": 20, + "type": "Identifier", + "name": "todo" }, "key": { "type": "MemberExpression", @@ -108,8 +108,7 @@ }, "name": "id" }, - "computed": false, - "optional": false + "computed": false } } ] diff --git a/test/parser/samples/each-block/output.json b/test/parser/samples/each-block/output.json index 82d4455d19..6594fb50a6 100644 --- a/test/parser/samples/each-block/output.json +++ b/test/parser/samples/each-block/output.json @@ -57,10 +57,10 @@ } ], "context": { - "type": "Identifier", - "name": "animal", "start": 18, - "end": 24 + "end": 24, + "type": "Identifier", + "name": "animal" } } ] diff --git a/test/parser/samples/error-css-global-without-selector/error.json b/test/parser/samples/error-css-global-without-selector/error.json deleted file mode 100644 index f4237c65d3..0000000000 --- a/test/parser/samples/error-css-global-without-selector/error.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "code": "css-syntax-error", - "message": ":global() must contain a selector", - "start": { - "line": 2, - "column": 1, - "character": 9 - }, - "pos": 9 -} diff --git a/test/parser/samples/error-css-global-without-selector/input.svelte b/test/parser/samples/error-css-global-without-selector/input.svelte deleted file mode 100644 index a626136cfc..0000000000 --- a/test/parser/samples/error-css-global-without-selector/input.svelte +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/test/parser/samples/error-unmatched-closing-tag-autoclose-2/error.json b/test/parser/samples/error-unmatched-closing-tag-autoclose-2/error.json deleted file mode 100644 index d24296bd96..0000000000 --- a/test/parser/samples/error-unmatched-closing-tag-autoclose-2/error.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "code": "invalid-closing-tag", - "message": "

attempted to close an element that was not open", - "pos": 38, - "start": { - "character": 38, - "column": 0, - "line": 5 - } -} diff --git a/test/parser/samples/error-unmatched-closing-tag-autoclose-2/input.svelte b/test/parser/samples/error-unmatched-closing-tag-autoclose-2/input.svelte deleted file mode 100644 index 5182577921..0000000000 --- a/test/parser/samples/error-unmatched-closing-tag-autoclose-2/input.svelte +++ /dev/null @@ -1,5 +0,0 @@ -
-

-

pre tag
-
-

\ No newline at end of file diff --git a/test/parser/samples/error-unmatched-closing-tag-autoclose/error.json b/test/parser/samples/error-unmatched-closing-tag-autoclose/error.json deleted file mode 100644 index e6532d747e..0000000000 --- a/test/parser/samples/error-unmatched-closing-tag-autoclose/error.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "code": "invalid-closing-tag", - "message": "

attempted to close

that was already automatically closed by

",
-	"pos": 24,
-	"start": {
-		"character": 24,
-		"column": 0,
-		"line": 3
-	}
-}
diff --git a/test/parser/samples/error-unmatched-closing-tag-autoclose/input.svelte b/test/parser/samples/error-unmatched-closing-tag-autoclose/input.svelte
deleted file mode 100644
index 0bfd609736..0000000000
--- a/test/parser/samples/error-unmatched-closing-tag-autoclose/input.svelte
+++ /dev/null
@@ -1,3 +0,0 @@
-

-

pre tag
-

\ No newline at end of file diff --git a/test/parser/samples/no-error-if-before-closing/output.json b/test/parser/samples/no-error-if-before-closing/output.json index f22586b267..708128a42e 100644 --- a/test/parser/samples/no-error-if-before-closing/output.json +++ b/test/parser/samples/no-error-if-before-closing/output.json @@ -116,10 +116,10 @@ "raw": "true" }, "value": { - "type": "Identifier", - "name": "f", "start": 97, - "end": 98 + "end": 98, + "type": "Identifier", + "name": "f" }, "error": null, "pending": { @@ -204,10 +204,10 @@ "raw": "true" }, "value": { - "type": "Identifier", - "name": "f", "start": 137, - "end": 138 + "end": 138, + "type": "Identifier", + "name": "f" }, "error": null, "pending": { diff --git a/test/parser/samples/unusual-identifier/output.json b/test/parser/samples/unusual-identifier/output.json index 3d209d35fe..76cc82cfd6 100644 --- a/test/parser/samples/unusual-identifier/output.json +++ b/test/parser/samples/unusual-identifier/output.json @@ -57,10 +57,10 @@ } ], "context": { - "type": "Identifier", - "name": "𐊧", "start": 17, - "end": 19 + "end": 19, + "type": "Identifier", + "name": "𐊧" } } ] diff --git a/test/preprocess/samples/comments/_config.js b/test/preprocess/samples/comments/_config.js index fdec377567..4416d121d0 100644 --- a/test/preprocess/samples/comments/_config.js +++ b/test/preprocess/samples/comments/_config.js @@ -2,7 +2,7 @@ export default { preprocess: [ { script: ({ content }) => ({ code: content.replace(/one/g, 'two') }), - style: ({ content }) => ({ code: content.replace(/one/g, 'three') }) - } - ] + style: ({ content }) => ({ code: content.replace(/one/g, 'three') }), + }, + ], }; diff --git a/test/preprocess/samples/script-self-closing/_config.js b/test/preprocess/samples/script-self-closing/_config.js deleted file mode 100644 index 4baab9730e..0000000000 --- a/test/preprocess/samples/script-self-closing/_config.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as assert from "assert"; - -export default { - preprocess: { - script: ({ content, attributes }) => { - assert.equal(content, ""); - return { - code: `console.log("${attributes["the-answer"]}");` - }; - } - } -}; diff --git a/test/preprocess/samples/script-self-closing/input.svelte b/test/preprocess/samples/script-self-closing/input.svelte deleted file mode 100644 index c5816cb3ba..0000000000 --- a/test/preprocess/samples/script-self-closing/input.svelte +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/preprocess/samples/style-self-closing/_config.js b/test/preprocess/samples/style-self-closing/_config.js deleted file mode 100644 index 0a05cd3d64..0000000000 --- a/test/preprocess/samples/style-self-closing/_config.js +++ /dev/null @@ -1,12 +0,0 @@ -import * as assert from "assert"; - -export default { - preprocess: { - style: ({ content, attributes: { color } }) => { - assert.equal(content, ""); - return { - code: `div { color: ${color}; }` - }; - } - } -}; diff --git a/test/preprocess/samples/style-self-closing/input.svelte b/test/preprocess/samples/style-self-closing/input.svelte deleted file mode 100644 index 07176c87e5..0000000000 --- a/test/preprocess/samples/style-self-closing/input.svelte +++ /dev/null @@ -1,3 +0,0 @@ -
$brand
- - \ No newline at end of file diff --git a/test/runtime/index.js b/test/runtime/index.js index 65157196c9..f070eb8185 100644 --- a/test/runtime/index.js +++ b/test/runtime/index.js @@ -39,7 +39,7 @@ describe("runtime", () => { filename }, compileOptions); - const { js: { code } } = compile(fs.readFileSync(filename, "utf-8").replace(/\r/g, ""), options); + const { js: { code } } = compile(fs.readFileSync(filename, "utf-8"), options); return module._compile(code, filename); }; @@ -103,7 +103,7 @@ describe("runtime", () => { try { const { js } = compile( - fs.readFileSync(`${cwd}/${file}`, 'utf-8').replace(/\r/g, ""), + fs.readFileSync(`${cwd}/${file}`, 'utf-8'), { ...compileOptions, filename: file diff --git a/test/runtime/samples/$$rest-without-props/_config.js b/test/runtime/samples/$$rest-without-props/_config.js index 1fb8e85a6a..017f9df561 100644 --- a/test/runtime/samples/$$rest-without-props/_config.js +++ b/test/runtime/samples/$$rest-without-props/_config.js @@ -11,7 +11,7 @@ export default {
`, - async test({ assert, target, window }) { + async test({ assert, target, window, }) { const [btn1, btn2, btn3, btn4] = target.querySelectorAll('button'); const clickEvent = new window.MouseEvent('click'); diff --git a/test/runtime/samples/$$rest/_config.js b/test/runtime/samples/$$rest/_config.js index f00c26d712..255927f354 100644 --- a/test/runtime/samples/$$rest/_config.js +++ b/test/runtime/samples/$$rest/_config.js @@ -13,7 +13,7 @@ export default { `, - async test({ assert, target, window }) { + async test({ assert, target, window, }) { const [btn1, btn2, btn3, btn4] = target.querySelectorAll('button'); const clickEvent = new window.MouseEvent('click'); diff --git a/test/runtime/samples/$$slot/A.svelte b/test/runtime/samples/$$slot/A.svelte deleted file mode 100644 index ffa166166c..0000000000 --- a/test/runtime/samples/$$slot/A.svelte +++ /dev/null @@ -1,31 +0,0 @@ - - - - - -$$slots: {toString($$slots)} - -{#if $$slots.b} -
- -
-{:else} - Slot b is not available -{/if} \ No newline at end of file diff --git a/test/runtime/samples/$$slot/_config.js b/test/runtime/samples/$$slot/_config.js deleted file mode 100644 index 13b2137cdb..0000000000 --- a/test/runtime/samples/$$slot/_config.js +++ /dev/null @@ -1,18 +0,0 @@ -export default { - html: ` - byeworld - hello world - $$slots: {"a":true,"default":true} - Slot b is not available - - bye world - hello world - $$slots: {"a":true,"b":true,"default":true} -
hello world
- `, - - async test({ assert, target, component }) { - assert.equal(component.getA(), ''); - assert.equal(component.getB(), 'foo'); - } -}; diff --git a/test/runtime/samples/$$slot/main.svelte b/test/runtime/samples/$$slot/main.svelte deleted file mode 100644 index 8b7efae573..0000000000 --- a/test/runtime/samples/$$slot/main.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- hello world - bye - world - - - - hello world - hello world - bye world - diff --git a/test/runtime/samples/action-custom-event-handler-this/_config.js b/test/runtime/samples/action-custom-event-handler-this/_config.js index 754f813c7f..88a30232ab 100644 --- a/test/runtime/samples/action-custom-event-handler-this/_config.js +++ b/test/runtime/samples/action-custom-event-handler-this/_config.js @@ -18,5 +18,5 @@ export default { input.dispatchEvent(event); assert.ok(blurred); - } + }, }; diff --git a/test/runtime/samples/action-ternary-template/_config.js b/test/runtime/samples/action-ternary-template/_config.js index ecb18dceec..adf23a9f68 100644 --- a/test/runtime/samples/action-ternary-template/_config.js +++ b/test/runtime/samples/action-ternary-template/_config.js @@ -1,7 +1,7 @@ export default { props: { target: 'World!', - display: true + display: true, }, html: ` @@ -16,5 +16,5 @@ export default { assert.htmlEqual(target.innerHTML, `

Hello World!

`); - } + }, }; diff --git a/test/runtime/samples/action-this/_config.js b/test/runtime/samples/action-this/_config.js index c59ff3b634..de7f834cdc 100644 --- a/test/runtime/samples/action-this/_config.js +++ b/test/runtime/samples/action-this/_config.js @@ -7,5 +7,5 @@ export default { await button.dispatchEvent(click); await Promise.resolve(); assert.htmlEqual(target.innerHTML, ``); - } + }, }; diff --git a/test/runtime/samples/apply-directives-in-order-2/_config.js b/test/runtime/samples/apply-directives-in-order-2/_config.js index caff97a5b9..a74ce41cb6 100644 --- a/test/runtime/samples/apply-directives-in-order-2/_config.js +++ b/test/runtime/samples/apply-directives-in-order-2/_config.js @@ -1,7 +1,7 @@ const value = []; export default { props: { - value + value, }, async test({ assert, component, target, window }) { @@ -32,7 +32,7 @@ export default { '15', '16', '17', - '18' + '18', ]); - } + }, }; diff --git a/test/runtime/samples/apply-directives-in-order/_config.js b/test/runtime/samples/apply-directives-in-order/_config.js index 7c8f87ef85..e5e8980ed1 100644 --- a/test/runtime/samples/apply-directives-in-order/_config.js +++ b/test/runtime/samples/apply-directives-in-order/_config.js @@ -33,5 +33,5 @@ export default {

HE

`); - } + }, }; diff --git a/test/runtime/samples/attribute-boolean-false/_config.js b/test/runtime/samples/attribute-boolean-false/_config.js index e47c5e7df1..14fdeb9fdc 100644 --- a/test/runtime/samples/attribute-boolean-false/_config.js +++ b/test/runtime/samples/attribute-boolean-false/_config.js @@ -3,5 +3,5 @@ export default { test({ assert, component, target }) { const textarea = target.querySelector('textarea'); assert.ok(textarea.readOnly === false); - } + }, }; diff --git a/test/runtime/samples/attribute-boolean-true/_config.js b/test/runtime/samples/attribute-boolean-true/_config.js index 1f77e33027..0e402ed1e3 100644 --- a/test/runtime/samples/attribute-boolean-true/_config.js +++ b/test/runtime/samples/attribute-boolean-true/_config.js @@ -3,5 +3,5 @@ export default { test({ assert, component, target }) { const textarea = target.querySelector('textarea'); assert.ok(textarea.readOnly); - } + }, }; diff --git a/test/runtime/samples/attribute-dataset-without-value/_config.js b/test/runtime/samples/attribute-dataset-without-value/_config.js index 21e60b92aa..934f44eb06 100644 --- a/test/runtime/samples/attribute-dataset-without-value/_config.js +++ b/test/runtime/samples/attribute-dataset-without-value/_config.js @@ -1,3 +1,3 @@ export default { - html: '
' + html: '
', }; diff --git a/test/runtime/samples/attribute-dynamic-no-dependencies/_config.js b/test/runtime/samples/attribute-dynamic-no-dependencies/_config.js index f1088830af..acf3c64bdd 100644 --- a/test/runtime/samples/attribute-dynamic-no-dependencies/_config.js +++ b/test/runtime/samples/attribute-dynamic-no-dependencies/_config.js @@ -1,5 +1,5 @@ export default { html: `
bar
- ` + `, }; diff --git a/test/runtime/samples/attribute-false/_config.js b/test/runtime/samples/attribute-false/_config.js index 632d4ac1c2..9fd08a2a48 100644 --- a/test/runtime/samples/attribute-false/_config.js +++ b/test/runtime/samples/attribute-false/_config.js @@ -1,3 +1,3 @@ export default { - html: `
` + html: `
`, }; diff --git a/test/runtime/samples/attribute-null-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-classnames-no-style/_config.js index e90d81a60f..917cf565c0 100644 --- a/test/runtime/samples/attribute-null-classnames-no-style/_config.js +++ b/test/runtime/samples/attribute-null-classnames-no-style/_config.js @@ -1,7 +1,7 @@ export default { props: { testName1: "test1", - testName2: "test2" + testName2: "test2", }, html: `
`, diff --git a/test/runtime/samples/attribute-null-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-classnames-with-style/_config.js index 20e6d4c7be..5762f628fb 100644 --- a/test/runtime/samples/attribute-null-classnames-with-style/_config.js +++ b/test/runtime/samples/attribute-null-classnames-with-style/_config.js @@ -1,7 +1,7 @@ export default { props: { testName1: "test1", - testName2: "test2" + testName2: "test2", }, html: `
`, diff --git a/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js index e90d81a60f..917cf565c0 100644 --- a/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js +++ b/test/runtime/samples/attribute-null-func-classnames-no-style/_config.js @@ -1,7 +1,7 @@ export default { props: { testName1: "test1", - testName2: "test2" + testName2: "test2", }, html: `
`, diff --git a/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js index 20e6d4c7be..5762f628fb 100644 --- a/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js +++ b/test/runtime/samples/attribute-null-func-classnames-with-style/_config.js @@ -1,7 +1,7 @@ export default { props: { testName1: "test1", - testName2: "test2" + testName2: "test2", }, html: `
`, diff --git a/test/runtime/samples/attribute-null/_config.js b/test/runtime/samples/attribute-null/_config.js index 36955050a0..ae2f0a8af6 100644 --- a/test/runtime/samples/attribute-null/_config.js +++ b/test/runtime/samples/attribute-null/_config.js @@ -1,3 +1,3 @@ export default { - html: `
` + html: `
`, }; diff --git a/test/runtime/samples/attribute-prefer-expression/_config.js b/test/runtime/samples/attribute-prefer-expression/_config.js index 2388ff35df..29fcbc7f13 100644 --- a/test/runtime/samples/attribute-prefer-expression/_config.js +++ b/test/runtime/samples/attribute-prefer-expression/_config.js @@ -2,7 +2,7 @@ export default { skip_if_ssr: true, props: { - foo: false + foo: false, }, test({ assert, component, target }) { @@ -15,5 +15,5 @@ export default { assert.ok(!inputs[0].checked); assert.ok(inputs[1].checked); - } + }, }; diff --git a/test/runtime/samples/attribute-undefined/_config.js b/test/runtime/samples/attribute-undefined/_config.js index 36955050a0..ae2f0a8af6 100644 --- a/test/runtime/samples/attribute-undefined/_config.js +++ b/test/runtime/samples/attribute-undefined/_config.js @@ -1,3 +1,3 @@ export default { - html: `
` + html: `
`, }; diff --git a/test/runtime/samples/await-with-update-2/Component.svelte b/test/runtime/samples/await-with-update-2/Component.svelte deleted file mode 100644 index 1301db3f99..0000000000 --- a/test/runtime/samples/await-with-update-2/Component.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -
count: {count}
-
value: {value}
\ No newline at end of file diff --git a/test/runtime/samples/await-with-update-2/_config.js b/test/runtime/samples/await-with-update-2/_config.js deleted file mode 100644 index 613f2b3255..0000000000 --- a/test/runtime/samples/await-with-update-2/_config.js +++ /dev/null @@ -1,64 +0,0 @@ -export default { - props: { - thePromise: new Promise((_) => {}), - count: 0 - }, - - html: ` -

loading...

- `, - - async test({ assert, component, target }) { - await (component.thePromise = Promise.resolve({ value: "success", Component: component.Component })); - - assert.htmlEqual( - target.innerHTML, - ` -
Resolved: -
count: 0
-
value: success
-
- ` - ); - - component.count = 5; - - assert.htmlEqual( - target.innerHTML, - ` -
Resolved: -
count: 5
-
value: success
-
- ` - ); - - try { - await (component.thePromise = Promise.reject({ value: "failure", Component: component.Component })); - } catch (error) { - // ignore - } - - assert.htmlEqual( - target.innerHTML, - ` -
Rejected: -
count: 5
-
value: failure
-
- ` - ); - - component.count = 10; - - assert.htmlEqual( - target.innerHTML, - ` -
Rejected: -
count: 10
-
value: failure
-
- ` - ); - } -}; diff --git a/test/runtime/samples/await-with-update-2/main.svelte b/test/runtime/samples/await-with-update-2/main.svelte deleted file mode 100644 index b29c875f92..0000000000 --- a/test/runtime/samples/await-with-update-2/main.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
- {#await thePromise} -

loading...

- {:then { value: theValue, Component }} - Resolved: - {:catch { value: theError, Component } } - Rejected: - {/await} -
\ No newline at end of file diff --git a/test/runtime/samples/await-with-update/Component.svelte b/test/runtime/samples/await-with-update/Component.svelte deleted file mode 100644 index 5f13c80e65..0000000000 --- a/test/runtime/samples/await-with-update/Component.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -
count: {count}
\ No newline at end of file diff --git a/test/runtime/samples/await-with-update/_config.js b/test/runtime/samples/await-with-update/_config.js deleted file mode 100644 index 08bf12b89e..0000000000 --- a/test/runtime/samples/await-with-update/_config.js +++ /dev/null @@ -1,60 +0,0 @@ -export default { - props: { - thePromise: new Promise((_) => {}), - count: 0 - }, - - html: ` -

loading...

- `, - - async test({ assert, component, target }) { - await (component.thePromise = Promise.resolve(component.Component)); - - assert.htmlEqual( - target.innerHTML, - ` -
Resolved: -
count: 0
-
- ` - ); - - component.count = 5; - - assert.htmlEqual( - target.innerHTML, - ` -
Resolved: -
count: 5
-
- ` - ); - - try { - await (component.thePromise = Promise.reject(component.Component)); - } catch (error) { - // ignore - } - - assert.htmlEqual( - target.innerHTML, - ` -
Rejected: -
count: 5
-
- ` - ); - - component.count = 10; - - assert.htmlEqual( - target.innerHTML, - ` -
Rejected: -
count: 10
-
- ` - ); - } -}; diff --git a/test/runtime/samples/await-with-update/main.svelte b/test/runtime/samples/await-with-update/main.svelte deleted file mode 100644 index 51c5b76a21..0000000000 --- a/test/runtime/samples/await-with-update/main.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - -
- {#await thePromise} -

loading...

- {:then theValue} - Resolved: - {:catch theError} - Rejected: - {/await} -
\ No newline at end of file diff --git a/test/runtime/samples/await-without-catch/_config.js b/test/runtime/samples/await-without-catch/_config.js deleted file mode 100644 index 2030ed7949..0000000000 --- a/test/runtime/samples/await-without-catch/_config.js +++ /dev/null @@ -1,44 +0,0 @@ -let fulfil; - -let promise = new Promise(f => { - fulfil = f; -}); - -export default { - props: { - promise - }, - - html: ` -

loading...

- `, - - test({ assert, component, target }) { - fulfil(42); - - return promise - .then(() => { - assert.htmlEqual(target.innerHTML, ` -

loaded

- `); - - let reject; - - promise = new Promise((f, r) => { - reject = r; - }); - - component.promise = promise; - - assert.htmlEqual(target.innerHTML, ` -

loading...

- `); - - reject(new Error('this error should be thrown')); - return promise; - }) - .catch((err) => { - assert.equal(err.message, 'this error should be thrown'); - }); - } -}; \ No newline at end of file diff --git a/test/runtime/samples/await-without-catch/main.svelte b/test/runtime/samples/await-without-catch/main.svelte deleted file mode 100644 index f528a8bf69..0000000000 --- a/test/runtime/samples/await-without-catch/main.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -{#await promise} -

loading...

-{:then value} -

loaded

-{/await} \ No newline at end of file diff --git a/test/runtime/samples/binding-contenteditable-html-initial/_config.js b/test/runtime/samples/binding-contenteditable-html-initial/_config.js index 4c30a3231a..9eac2c9b17 100644 --- a/test/runtime/samples/binding-contenteditable-html-initial/_config.js +++ b/test/runtime/samples/binding-contenteditable-html-initial/_config.js @@ -36,5 +36,5 @@ export default { goodbye

hello goodbye

`); - } + }, }; diff --git a/test/runtime/samples/binding-contenteditable-html/_config.js b/test/runtime/samples/binding-contenteditable-html/_config.js index 639572faea..ceb6a75c70 100644 --- a/test/runtime/samples/binding-contenteditable-html/_config.js +++ b/test/runtime/samples/binding-contenteditable-html/_config.js @@ -1,6 +1,6 @@ export default { props: { - name: 'world' + name: 'world', }, html: ` @@ -34,5 +34,5 @@ export default { goodbye

hello goodbye

`); - } + }, }; diff --git a/test/runtime/samples/binding-contenteditable-text-initial/_config.js b/test/runtime/samples/binding-contenteditable-text-initial/_config.js index d5f331bb7a..4899f30f12 100644 --- a/test/runtime/samples/binding-contenteditable-text-initial/_config.js +++ b/test/runtime/samples/binding-contenteditable-text-initial/_config.js @@ -30,5 +30,5 @@ export default { goodbye

hello goodbye

`); - } + }, }; diff --git a/test/runtime/samples/binding-contenteditable-text/_config.js b/test/runtime/samples/binding-contenteditable-text/_config.js index 89f3968258..9f8645724d 100644 --- a/test/runtime/samples/binding-contenteditable-text/_config.js +++ b/test/runtime/samples/binding-contenteditable-text/_config.js @@ -1,6 +1,6 @@ export default { props: { - name: 'world' + name: 'world', }, html: ` @@ -28,5 +28,5 @@ export default { goodbye

hello goodbye

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js b/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js index 9d099feb0a..2e3a1c296f 100644 --- a/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js +++ b/test/runtime/samples/binding-input-checkbox-indeterminate/_config.js @@ -2,7 +2,7 @@ export default { skip_if_ssr: true, props: { - indeterminate: true + indeterminate: true, }, html: ` @@ -38,5 +38,5 @@ export default {

checked? true

indeterminate? true

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js b/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js index 9e6f915dd0..b502ed40af 100644 --- a/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js +++ b/test/runtime/samples/binding-input-checkbox-with-event-in-each/_config.js @@ -3,13 +3,13 @@ export default { cats: [ { name: "cat 0", - checked: false + checked: false, }, { name: "cat 1", - checked: false - } - ] + checked: false, + }, + ], }, html: ` @@ -22,7 +22,7 @@ export default { const newCats = cats.slice(); newCats.push({ name: "cat " + cats.length, - checked: false + checked: false, }); component.cats = newCats; diff --git a/test/runtime/samples/binding-input-group-duplicate-value/_config.js b/test/runtime/samples/binding-input-group-duplicate-value/_config.js deleted file mode 100644 index 7f50ad6dce..0000000000 --- a/test/runtime/samples/binding-input-group-duplicate-value/_config.js +++ /dev/null @@ -1,81 +0,0 @@ -export default { - html: ` -

Checked:

- -
- - a
- b
- c
- d
- -
- - a
- b
- c
- d
- `, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll("input"); - const p = target.querySelector("p"); - - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - assert.equal(inputs[3].checked, false); - - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, false); - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - - const event = new window.Event("change"); - - inputs[0].checked = true; - await inputs[0].dispatchEvent(event); - - assert.htmlEqual(p.innerHTML, `Checked: a`); - - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - assert.equal(inputs[3].checked, false); - - assert.equal(inputs[4].checked, true); - assert.equal(inputs[5].checked, false); - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - - inputs[3].checked = true; - await inputs[3].dispatchEvent(event); - - assert.htmlEqual(p.innerHTML, `Checked: a,d`); - - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - assert.equal(inputs[3].checked, true); - - assert.equal(inputs[4].checked, true); - assert.equal(inputs[5].checked, false); - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, true); - - inputs[4].checked = false; - await inputs[4].dispatchEvent(event); - - assert.htmlEqual(p.innerHTML, `Checked: d`); - - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - assert.equal(inputs[3].checked, true); - - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, false); - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, true); - } -}; diff --git a/test/runtime/samples/binding-input-group-duplicate-value/main.svelte b/test/runtime/samples/binding-input-group-duplicate-value/main.svelte deleted file mode 100644 index 153e559d23..0000000000 --- a/test/runtime/samples/binding-input-group-duplicate-value/main.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - -

Checked: {foo}

- -
- -a
-b
-c
-d
- -
- -a
-b
-c
-d
\ No newline at end of file diff --git a/test/runtime/samples/binding-input-group-each-1/_config.js b/test/runtime/samples/binding-input-group-each-1/_config.js deleted file mode 100644 index 92010296dc..0000000000 --- a/test/runtime/samples/binding-input-group-each-1/_config.js +++ /dev/null @@ -1,275 +0,0 @@ -const values = [ - { name: 'Alpha' }, - { name: 'Beta' }, - { name: 'Gamma' } -]; - -const selected_array = [ - [values[1]], - [], - [values[2]] -]; - -export default { - props: { - values, - selected_array - }, - - html: ` -
- - - - - - -

Beta

-
-
- - - - - - -

-
-
- - - - - - -

Gamma

-
- `, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll('input'); - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, false); - assert.equal(inputs[3].checked, false); - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, false); - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, true); - - const event = new window.Event('change'); - - inputs[0].checked = true; - await inputs[0].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Alpha, Beta

-
-
- - - - - - -

-
-
- - - - - - -

Gamma

-
- `); - inputs[3].checked = true; - await inputs[3].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Alpha, Beta

-
-
- - - - - - -

Alpha

-
-
- - - - - - -

Gamma

-
- `); - - inputs[8].checked = false; - await inputs[8].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Alpha, Beta

-
-
- - - - - - -

Alpha

-
-
- - - - - - -

-
- `); - - component.selected_array = [[values[1], values[2]], [values[2]]]; - - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, true); - assert.equal(inputs[3].checked, false); - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, true); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Beta, Gamma

-
-
- - - - - - -

Gamma

-
- `); - } -}; diff --git a/test/runtime/samples/binding-input-group-each-1/main.svelte b/test/runtime/samples/binding-input-group-each-1/main.svelte deleted file mode 100644 index 5ed255c83a..0000000000 --- a/test/runtime/samples/binding-input-group-each-1/main.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -{#each selected_array as selected} -
- {#each values as value} - - {/each} -

{selected.map(v => v.name).join(', ')}

-
-{/each} diff --git a/test/runtime/samples/binding-input-group-each-2/_config.js b/test/runtime/samples/binding-input-group-each-2/_config.js deleted file mode 100644 index 78d692d979..0000000000 --- a/test/runtime/samples/binding-input-group-each-2/_config.js +++ /dev/null @@ -1,59 +0,0 @@ -export default { - html: ` - - - - -

1, 2, 3

`, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll('input'); - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, true); - - const event = new window.Event('change'); - - inputs[0].checked = false; - await inputs[0].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - - -

2, 3

- `); - - component.selected = [[1, 3]]; - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, true); - - assert.htmlEqual(target.innerHTML, ` - - - - -

1, 3

- `); - } -}; diff --git a/test/runtime/samples/binding-input-group-each-2/main.svelte b/test/runtime/samples/binding-input-group-each-2/main.svelte deleted file mode 100644 index 46f7e9e698..0000000000 --- a/test/runtime/samples/binding-input-group-each-2/main.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -{#each options as value} - -{/each} - -

{selected[0].join(', ')}

\ No newline at end of file diff --git a/test/runtime/samples/binding-input-group-each-3/_config.js b/test/runtime/samples/binding-input-group-each-3/_config.js deleted file mode 100644 index 92010296dc..0000000000 --- a/test/runtime/samples/binding-input-group-each-3/_config.js +++ /dev/null @@ -1,275 +0,0 @@ -const values = [ - { name: 'Alpha' }, - { name: 'Beta' }, - { name: 'Gamma' } -]; - -const selected_array = [ - [values[1]], - [], - [values[2]] -]; - -export default { - props: { - values, - selected_array - }, - - html: ` -
- - - - - - -

Beta

-
-
- - - - - - -

-
-
- - - - - - -

Gamma

-
- `, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll('input'); - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, false); - assert.equal(inputs[3].checked, false); - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, false); - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, true); - - const event = new window.Event('change'); - - inputs[0].checked = true; - await inputs[0].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Alpha, Beta

-
-
- - - - - - -

-
-
- - - - - - -

Gamma

-
- `); - inputs[3].checked = true; - await inputs[3].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Alpha, Beta

-
-
- - - - - - -

Alpha

-
-
- - - - - - -

Gamma

-
- `); - - inputs[8].checked = false; - await inputs[8].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Alpha, Beta

-
-
- - - - - - -

Alpha

-
-
- - - - - - -

-
- `); - - component.selected_array = [[values[1], values[2]], [values[2]]]; - - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, true); - assert.equal(inputs[3].checked, false); - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, true); - - assert.htmlEqual(target.innerHTML, ` -
- - - - - - -

Beta, Gamma

-
-
- - - - - - -

Gamma

-
- `); - } -}; diff --git a/test/runtime/samples/binding-input-group-each-3/main.svelte b/test/runtime/samples/binding-input-group-each-3/main.svelte deleted file mode 100644 index 42a7a1c4e9..0000000000 --- a/test/runtime/samples/binding-input-group-each-3/main.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -{#each selected_array as _, index} -
- {#each values as value} - - {/each} -

{selected_array[index].map(v => v.name).join(', ')}

-
-{/each} diff --git a/test/runtime/samples/binding-input-group-each-4/_config.js b/test/runtime/samples/binding-input-group-each-4/_config.js deleted file mode 100644 index f1168858b0..0000000000 --- a/test/runtime/samples/binding-input-group-each-4/_config.js +++ /dev/null @@ -1,153 +0,0 @@ -export default { - html: ` - - - -

1

- - - -

2

- - - -

- - - -

3

- `, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll('input'); - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - - assert.equal(inputs[3].checked, false); - assert.equal(inputs[4].checked, true); - assert.equal(inputs[5].checked, false); - - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, false); - - assert.equal(inputs[9].checked, false); - assert.equal(inputs[10].checked, false); - assert.equal(inputs[11].checked, true); - - const event = new window.Event('change'); - - inputs[2].checked = true; - await inputs[2].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 3

- - - -

2

- - - -

- - - -

3

- `); - - inputs[9].checked = true; - await inputs[9].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 3

- - - -

2

- - - -

- - - -

1, 3

- `); - - inputs[4].checked = false; - await inputs[4].dispatchEvent(event); - inputs[5].checked = true; - await inputs[5].dispatchEvent(event); - inputs[6].checked = true; - await inputs[6].dispatchEvent(event); - inputs[7].checked = true; - await inputs[7].dispatchEvent(event); - inputs[11].checked = false; - await inputs[11].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 3

- - - -

3

- - - -

1, 2

- - - -

1

- `); - - component.selected_array_1 = [[3], [1]]; - component.selected_array_2 = [[], [2]]; - - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, true); - - assert.equal(inputs[3].checked, true); - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, false); - - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, false); - - assert.equal(inputs[9].checked, false); - assert.equal(inputs[10].checked, true); - assert.equal(inputs[11].checked, false); - - assert.htmlEqual(target.innerHTML, ` - - - -

3

- - - -

1

- - - -

- - - -

2

- `); - } -}; diff --git a/test/runtime/samples/binding-input-group-each-4/main.svelte b/test/runtime/samples/binding-input-group-each-4/main.svelte deleted file mode 100644 index 0bbf5ea763..0000000000 --- a/test/runtime/samples/binding-input-group-each-4/main.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - -{#each selected_array_1 as selected} - {#each options as value} - - {/each} -

{selected.join(', ')}

-{/each} - -{#each selected_array_2 as selected} - {#each options as value} - - {/each} -

{selected.join(', ')}

-{/each} \ No newline at end of file diff --git a/test/runtime/samples/binding-input-group-each-5/_config.js b/test/runtime/samples/binding-input-group-each-5/_config.js deleted file mode 100644 index 579225c627..0000000000 --- a/test/runtime/samples/binding-input-group-each-5/_config.js +++ /dev/null @@ -1,160 +0,0 @@ -export default { - html: ` - - - -

1

- - - -

1, 2, 3

- - - -

2

- - - -

1

- `, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll('input'); - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - - assert.equal(inputs[3].checked, true); - assert.equal(inputs[4].checked, true); - assert.equal(inputs[5].checked, true); - - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, true); - assert.equal(inputs[8].checked, false); - - assert.equal(inputs[9].checked, true); - assert.equal(inputs[10].checked, false); - assert.equal(inputs[11].checked, false); - - const event = new window.Event('change'); - - inputs[2].checked = true; - await inputs[2].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 3

- - - -

1, 2, 3

- - - -

2

- - - -

1

- `); - - inputs[8].checked = true; - await inputs[8].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 3

- - - -

1, 2, 3

- - - -

2, 3

- - - -

1

- `); - - component.selected_index = [1, 1]; - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 2, 3

- - - -

1, 2, 3

- - - -

1

- - - -

1

- `); - - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, true); - - assert.equal(inputs[3].checked, true); - assert.equal(inputs[4].checked, true); - assert.equal(inputs[5].checked, true); - - assert.equal(inputs[6].checked, true); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, false); - - assert.equal(inputs[9].checked, true); - assert.equal(inputs[10].checked, false); - assert.equal(inputs[11].checked, false); - - inputs[5].checked = false; - await inputs[5].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

1, 2

- - - -

1, 2

- - - -

1

- - - -

1

- `); - - assert.equal(inputs[0].checked, true); - assert.equal(inputs[1].checked, true); - assert.equal(inputs[2].checked, false); - - assert.equal(inputs[3].checked, true); - assert.equal(inputs[4].checked, true); - assert.equal(inputs[5].checked, false); - - assert.equal(inputs[6].checked, true); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, false); - - assert.equal(inputs[9].checked, true); - assert.equal(inputs[10].checked, false); - assert.equal(inputs[11].checked, false); - } -}; diff --git a/test/runtime/samples/binding-input-group-each-5/main.svelte b/test/runtime/samples/binding-input-group-each-5/main.svelte deleted file mode 100644 index 93bdce6510..0000000000 --- a/test/runtime/samples/binding-input-group-each-5/main.svelte +++ /dev/null @@ -1,24 +0,0 @@ - - -{#each selected_array as selected} - {#each selected_index as index} - {#each options as value} - - {/each} -

{selected[index].join(', ')}

- {/each} -{/each} diff --git a/test/runtime/samples/binding-input-group-each-6/_config.js b/test/runtime/samples/binding-input-group-each-6/_config.js deleted file mode 100644 index 9eb251bf5d..0000000000 --- a/test/runtime/samples/binding-input-group-each-6/_config.js +++ /dev/null @@ -1,87 +0,0 @@ -export default { - html: ` - - - -

- - - -

- - - -

- `, - - async test({ assert, component, target, window }) { - const inputs = target.querySelectorAll('input'); - assert.equal(inputs[0].checked, false); - assert.equal(inputs[1].checked, false); - assert.equal(inputs[2].checked, false); - - assert.equal(inputs[3].checked, false); - assert.equal(inputs[4].checked, false); - assert.equal(inputs[5].checked, false); - - assert.equal(inputs[6].checked, false); - assert.equal(inputs[7].checked, false); - assert.equal(inputs[8].checked, false); - - const event = new window.Event('change'); - - inputs[2].checked = true; - await inputs[2].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

z

- - - -

- - - -

- `); - - inputs[4].checked = true; - await inputs[4].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

z

- - - -

y

- - - -

- `); - - inputs[5].checked = true; - await inputs[5].dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - - - -

z

- - - -

y, z

- - - -

- `); - } -}; diff --git a/test/runtime/samples/binding-input-group-each-6/main.svelte b/test/runtime/samples/binding-input-group-each-6/main.svelte deleted file mode 100644 index 85be939e8a..0000000000 --- a/test/runtime/samples/binding-input-group-each-6/main.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -{#each Object.keys(list) as key} - {#each values as value} - - {/each} -

{list[key].join(', ')}

-{/each} diff --git a/test/runtime/samples/binding-input-number-2/_config.js b/test/runtime/samples/binding-input-number-2/_config.js index 5daf50fd04..a3510eb757 100644 --- a/test/runtime/samples/binding-input-number-2/_config.js +++ b/test/runtime/samples/binding-input-number-2/_config.js @@ -27,5 +27,5 @@ export default { component.value = 1; assert.equal(component.value, 1); assert.equal(input.value, "1"); - } + }, }; diff --git a/test/runtime/samples/binding-input-number/_config.js b/test/runtime/samples/binding-input-number/_config.js index 3c5919bc64..869b9f9896 100644 --- a/test/runtime/samples/binding-input-number/_config.js +++ b/test/runtime/samples/binding-input-number/_config.js @@ -1,6 +1,6 @@ export default { props: { - count: 42 + count: 42, }, html: ` @@ -44,5 +44,5 @@ export default {

undefined undefined

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-range-change-with-max/_config.js b/test/runtime/samples/binding-input-range-change-with-max/_config.js index dc3cf4ce28..1fda90d83c 100644 --- a/test/runtime/samples/binding-input-range-change-with-max/_config.js +++ b/test/runtime/samples/binding-input-range-change-with-max/_config.js @@ -29,5 +29,5 @@ export default {

20 of 20

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-range-change/_config.js b/test/runtime/samples/binding-input-range-change/_config.js index f6ec2d9c53..62e9562770 100644 --- a/test/runtime/samples/binding-input-range-change/_config.js +++ b/test/runtime/samples/binding-input-range-change/_config.js @@ -1,6 +1,6 @@ export default { props: { - count: 42 + count: 42, }, html: ` @@ -34,5 +34,5 @@ export default {

number 44

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-range/_config.js b/test/runtime/samples/binding-input-range/_config.js index dc6178e088..4c3d37a667 100644 --- a/test/runtime/samples/binding-input-range/_config.js +++ b/test/runtime/samples/binding-input-range/_config.js @@ -1,6 +1,6 @@ export default { props: { - count: 42 + count: 42, }, html: ` @@ -34,5 +34,5 @@ export default {

number 44

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-contextual-deconflicted/_config.js b/test/runtime/samples/binding-input-text-contextual-deconflicted/_config.js index de4d6325b0..28cffdfa57 100644 --- a/test/runtime/samples/binding-input-text-contextual-deconflicted/_config.js +++ b/test/runtime/samples/binding-input-text-contextual-deconflicted/_config.js @@ -1,7 +1,7 @@ export default { props: { foo: 'a', - items: ['x'] + items: ['x'], }, html: ` @@ -32,5 +32,5 @@ export default {

b

y

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-contextual-reactive/_config.js b/test/runtime/samples/binding-input-text-contextual-reactive/_config.js index a1584c18b8..6fdfc4be52 100644 --- a/test/runtime/samples/binding-input-text-contextual-reactive/_config.js +++ b/test/runtime/samples/binding-input-text-contextual-reactive/_config.js @@ -121,5 +121,5 @@ export default {

done:one / done:two / remaining:four

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-contextual/_config.js b/test/runtime/samples/binding-input-text-contextual/_config.js index 1c66ea7ff5..bb7f16c8bb 100644 --- a/test/runtime/samples/binding-input-text-contextual/_config.js +++ b/test/runtime/samples/binding-input-text-contextual/_config.js @@ -1,6 +1,6 @@ export default { props: { - items: ['one', 'two', 'three'] + items: ['one', 'two', 'three'], }, html: ` @@ -65,5 +65,5 @@ export default {

five

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-deconflicted/_config.js b/test/runtime/samples/binding-input-text-deconflicted/_config.js index 48a7d2590a..46fe3e2a38 100644 --- a/test/runtime/samples/binding-input-text-deconflicted/_config.js +++ b/test/runtime/samples/binding-input-text-deconflicted/_config.js @@ -1,8 +1,8 @@ export default { props: { component: { - name: 'world' - } + name: 'world', + }, }, html: ` @@ -36,5 +36,5 @@ export default {

Hello goodbye!

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-deep-computed-dynamic/_config.js b/test/runtime/samples/binding-input-text-deep-computed-dynamic/_config.js index 0afbb9d952..eeecdb0ef8 100644 --- a/test/runtime/samples/binding-input-text-deep-computed-dynamic/_config.js +++ b/test/runtime/samples/binding-input-text-deep-computed-dynamic/_config.js @@ -4,8 +4,8 @@ export default { obj: { foo: 'a', bar: 'b', - baz: 'c' - } + baz: 'c', + }, }, html: ` @@ -56,5 +56,5 @@ export default {
{"foo":"d","bar":"e","baz":"f"}
`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-deep-computed/_config.js b/test/runtime/samples/binding-input-text-deep-computed/_config.js index 3a85d50d76..a1ea2c34ad 100644 --- a/test/runtime/samples/binding-input-text-deep-computed/_config.js +++ b/test/runtime/samples/binding-input-text-deep-computed/_config.js @@ -2,8 +2,8 @@ export default { props: { prop: 'name', user: { - name: 'alice' - } + name: 'alice', + }, }, html: ` @@ -40,5 +40,5 @@ export default {

hello carol

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-deep-contextual-computed-dynamic/_config.js b/test/runtime/samples/binding-input-text-deep-contextual-computed-dynamic/_config.js index 627ef5f15e..364195233d 100644 --- a/test/runtime/samples/binding-input-text-deep-contextual-computed-dynamic/_config.js +++ b/test/runtime/samples/binding-input-text-deep-contextual-computed-dynamic/_config.js @@ -5,9 +5,9 @@ export default { { foo: 'a', bar: 'b', - baz: 'c' - } - ] + baz: 'c', + }, + ], }, html: ` @@ -58,5 +58,5 @@ export default {
{"foo":"d","bar":"e","baz":"f"}
`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-deep-contextual/_config.js b/test/runtime/samples/binding-input-text-deep-contextual/_config.js index cc80d38042..5b6b0d6577 100644 --- a/test/runtime/samples/binding-input-text-deep-contextual/_config.js +++ b/test/runtime/samples/binding-input-text-deep-contextual/_config.js @@ -3,8 +3,8 @@ export default { items: [ { description: 'one' }, { description: 'two' }, - { description: 'three' } - ] + { description: 'three' }, + ], }, html: ` @@ -45,5 +45,5 @@ export default {

four

five

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-deep/_config.js b/test/runtime/samples/binding-input-text-deep/_config.js index 35443e9073..e6113510a7 100644 --- a/test/runtime/samples/binding-input-text-deep/_config.js +++ b/test/runtime/samples/binding-input-text-deep/_config.js @@ -1,8 +1,8 @@ export default { props: { user: { - name: 'alice' - } + name: 'alice', + }, }, html: ` @@ -39,5 +39,5 @@ export default {

hello carol

`); - } + }, }; diff --git a/test/runtime/samples/binding-input-text-undefined/_config.js b/test/runtime/samples/binding-input-text-undefined/_config.js index fa59b1f796..009e1b37ba 100644 --- a/test/runtime/samples/binding-input-text-undefined/_config.js +++ b/test/runtime/samples/binding-input-text-undefined/_config.js @@ -26,5 +26,5 @@ export default { component.x = undefined; assert.equal(input.value, ''); - } + }, }; diff --git a/test/runtime/samples/binding-input-text/_config.js b/test/runtime/samples/binding-input-text/_config.js index 52d8e44902..e7162b6153 100644 --- a/test/runtime/samples/binding-input-text/_config.js +++ b/test/runtime/samples/binding-input-text/_config.js @@ -1,6 +1,6 @@ export default { props: { - name: 'world' + name: 'world', }, html: ` @@ -33,5 +33,5 @@ export default {

hello goodbye

`); - } + }, }; diff --git a/test/runtime/samples/binding-select-initial-value/_config.js b/test/runtime/samples/binding-select-initial-value/_config.js index d34a987fa5..d98e5d2e1c 100644 --- a/test/runtime/samples/binding-select-initial-value/_config.js +++ b/test/runtime/samples/binding-select-initial-value/_config.js @@ -24,7 +24,7 @@ export default { `, props: { - selected: 'b' + selected: 'b', }, test({ assert, component, target }) { @@ -33,5 +33,5 @@ export default { assert.equal(select.value, 'b'); assert.ok(options[1].selected); - } + }, }; diff --git a/test/runtime/samples/binding-select-late-2/_config.js b/test/runtime/samples/binding-select-late-2/_config.js deleted file mode 100644 index 42c45d1366..0000000000 --- a/test/runtime/samples/binding-select-late-2/_config.js +++ /dev/null @@ -1,34 +0,0 @@ -export default { - props: { - items: [], - selected: 'two' - }, - - html: ` - -

selected: two

- `, - - ssrHtml: ` - -

selected: two

- `, - - test({ assert, component, target }) { - component.items = [ 'one', 'two', 'three' ]; - - const options = target.querySelectorAll('option'); - assert.ok(!options[0].selected); - assert.ok(options[1].selected); - assert.ok(!options[2].selected); - - assert.htmlEqual(target.innerHTML, ` - -

selected: two

- `); - } -}; diff --git a/test/runtime/samples/binding-select-late-2/main.svelte b/test/runtime/samples/binding-select-late-2/main.svelte deleted file mode 100644 index 52cc14528a..0000000000 --- a/test/runtime/samples/binding-select-late-2/main.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - -

selected: {selected || 'nothing'}

\ No newline at end of file diff --git a/test/runtime/samples/binding-select-late-3/_config.js b/test/runtime/samples/binding-select-late-3/_config.js deleted file mode 100644 index 42c45d1366..0000000000 --- a/test/runtime/samples/binding-select-late-3/_config.js +++ /dev/null @@ -1,34 +0,0 @@ -export default { - props: { - items: [], - selected: 'two' - }, - - html: ` - -

selected: two

- `, - - ssrHtml: ` - -

selected: two

- `, - - test({ assert, component, target }) { - component.items = [ 'one', 'two', 'three' ]; - - const options = target.querySelectorAll('option'); - assert.ok(!options[0].selected); - assert.ok(options[1].selected); - assert.ok(!options[2].selected); - - assert.htmlEqual(target.innerHTML, ` - -

selected: two

- `); - } -}; diff --git a/test/runtime/samples/binding-select-late-3/main.svelte b/test/runtime/samples/binding-select-late-3/main.svelte deleted file mode 100644 index ec9ac8d345..0000000000 --- a/test/runtime/samples/binding-select-late-3/main.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - -

selected: {selected || 'nothing'}

\ No newline at end of file diff --git a/test/runtime/samples/binding-select-optgroup/_config.js b/test/runtime/samples/binding-select-optgroup/_config.js index 03ad3e3280..e8a1d40797 100644 --- a/test/runtime/samples/binding-select-optgroup/_config.js +++ b/test/runtime/samples/binding-select-optgroup/_config.js @@ -45,5 +45,5 @@ export default { `); - } + }, }; diff --git a/test/runtime/samples/binding-select/_config.js b/test/runtime/samples/binding-select/_config.js index 310315176b..a5995061a0 100644 --- a/test/runtime/samples/binding-select/_config.js +++ b/test/runtime/samples/binding-select/_config.js @@ -24,7 +24,7 @@ export default { `, props: { - selected: 'one' + selected: 'one', }, async test({ assert, component, target, window }) { @@ -53,5 +53,5 @@ export default { `); component.selected = 'three'; - } + }, }; diff --git a/test/runtime/samples/binding-store-deep/_config.js b/test/runtime/samples/binding-store-deep/_config.js index c0f4f63578..8bdd41818b 100644 --- a/test/runtime/samples/binding-store-deep/_config.js +++ b/test/runtime/samples/binding-store-deep/_config.js @@ -37,5 +37,5 @@ export default { assert.deepEqual(names, ['world', 'everybody', 'goodbye']); unsubscribe(); - } + }, }; diff --git a/test/runtime/samples/binding-store/_config.js b/test/runtime/samples/binding-store/_config.js index 6e7a70878a..eb22d3e96c 100644 --- a/test/runtime/samples/binding-store/_config.js +++ b/test/runtime/samples/binding-store/_config.js @@ -37,5 +37,5 @@ export default { assert.deepEqual(names, ['world', 'everybody', 'goodbye']); unsubscribe(); - } + }, }; diff --git a/test/runtime/samples/binding-textarea/_config.js b/test/runtime/samples/binding-textarea/_config.js index 70646e5e4b..ac092096e6 100644 --- a/test/runtime/samples/binding-textarea/_config.js +++ b/test/runtime/samples/binding-textarea/_config.js @@ -1,6 +1,6 @@ export default { props: { - value: 'some text' + value: 'some text', }, html: ` @@ -33,5 +33,5 @@ export default {

goodbye

`); - } + }, }; diff --git a/test/runtime/samples/binding-this-each-block-property-2/_config.js b/test/runtime/samples/binding-this-each-block-property-2/_config.js deleted file mode 100644 index 5c288cd6d1..0000000000 --- a/test/runtime/samples/binding-this-each-block-property-2/_config.js +++ /dev/null @@ -1,53 +0,0 @@ -let calls = []; -function callback(refs) { - calls.push(refs.map(({ ref }) => ({ ref }))); -} -export default { - html: ``, - props: { - callback - }, - after_test() { - calls = []; - }, - async test({ assert, component, target }) { - assert.equal(calls.length, 1); - assert.equal(calls[0].length, 0); - - await component.addItem(); - - let divs = target.querySelectorAll("div"); - - assert.equal(calls.length, 3); - assert.equal(calls[1].length, 1); - assert.equal(calls[1][0].ref, null); - assert.equal(calls[2].length, 1); - assert.equal(calls[2][0].ref, divs[0]); - - await component.addItem(); - - divs = target.querySelectorAll("div"); - - assert.equal(calls.length, 5); - assert.equal(calls[3].length, 2); - assert.equal(calls[3][0].ref, divs[0]); - assert.equal(calls[3][1].ref, null); - assert.equal(calls[4].length, 2); - assert.equal(calls[4][0].ref, divs[0]); - assert.equal(calls[4][1].ref, divs[1]); - - await component.addItem(); - - divs = target.querySelectorAll("div"); - - assert.equal(calls.length, 7); - assert.equal(calls[5].length, 3); - assert.equal(calls[5][0].ref, divs[0]); - assert.equal(calls[5][1].ref, divs[1]); - assert.equal(calls[5][2].ref, null); - assert.equal(calls[6].length, 3); - assert.equal(calls[6][0].ref, divs[0]); - assert.equal(calls[6][1].ref, divs[1]); - assert.equal(calls[6][2].ref, divs[2]); - } -}; diff --git a/test/runtime/samples/binding-this-each-block-property-2/main.svelte b/test/runtime/samples/binding-this-each-block-property-2/main.svelte deleted file mode 100644 index bc1efe725c..0000000000 --- a/test/runtime/samples/binding-this-each-block-property-2/main.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -{#each refs as xxx} -
-{/each} \ No newline at end of file diff --git a/test/runtime/samples/bitmask-overflow-2/_config.js b/test/runtime/samples/bitmask-overflow-2/_config.js index 7304f6fa68..0b63791292 100644 --- a/test/runtime/samples/bitmask-overflow-2/_config.js +++ b/test/runtime/samples/bitmask-overflow-2/_config.js @@ -1,3 +1,3 @@ export default { - error: `potato is not defined` + error: `potato is not defined`, }; \ No newline at end of file diff --git a/test/runtime/samples/bitmask-overflow-3/_config.js b/test/runtime/samples/bitmask-overflow-3/_config.js index a55a73af1d..aee7d3237e 100644 --- a/test/runtime/samples/bitmask-overflow-3/_config.js +++ b/test/runtime/samples/bitmask-overflow-3/_config.js @@ -1,3 +1,3 @@ export default { - error: `A is not defined` + error: `A is not defined`, }; \ No newline at end of file diff --git a/test/runtime/samples/bitmask-overflow-slot-2/_config.js b/test/runtime/samples/bitmask-overflow-slot-2/_config.js index 08c0c2f902..b01bd81e00 100644 --- a/test/runtime/samples/bitmask-overflow-slot-2/_config.js +++ b/test/runtime/samples/bitmask-overflow-slot-2/_config.js @@ -90,7 +90,7 @@ export default { assert.deepEqual(component.reads, { _0: 2, - _1: 2 + _1: 2, }); } }; \ No newline at end of file diff --git a/test/runtime/samples/class-with-spread-and-bind/_config.js b/test/runtime/samples/class-with-spread-and-bind/_config.js index cab46706ef..f3c54e8c52 100644 --- a/test/runtime/samples/class-with-spread-and-bind/_config.js +++ b/test/runtime/samples/class-with-spread-and-bind/_config.js @@ -1,6 +1,6 @@ export default { props: { - primary: true + primary: true, }, html: `
`, @@ -14,5 +14,5 @@ export default {
` ); - } + }, }; diff --git a/test/runtime/samples/component-binding-deep/_config.js b/test/runtime/samples/component-binding-deep/_config.js index 8a2f5a56cf..be5a2624ac 100644 --- a/test/runtime/samples/component-binding-deep/_config.js +++ b/test/runtime/samples/component-binding-deep/_config.js @@ -21,5 +21,5 @@ export default {

blah

`); - } + }, }; diff --git a/test/runtime/samples/component-binding-store/Input.svelte b/test/runtime/samples/component-binding-store/Input.svelte deleted file mode 100644 index 792104bec8..0000000000 --- a/test/runtime/samples/component-binding-store/Input.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/test/runtime/samples/component-binding-store/_config.js b/test/runtime/samples/component-binding-store/_config.js deleted file mode 100644 index 8b8a7a170a..0000000000 --- a/test/runtime/samples/component-binding-store/_config.js +++ /dev/null @@ -1,61 +0,0 @@ -export default { - html: ` - - -
- `, - - async test({ assert, component, target, window }) { - let count = 0; - component.callback = () => { - count++; - }; - - const [input1, input2] = target.querySelectorAll("input"); - - input1.value = "1"; - await input1.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` - - -
1
- ` - ); - assert.equal(input1.value, "1"); - assert.equal(input2.value, "1"); - assert.equal(count, 1); - - input2.value = "123"; - await input2.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` - - -
123
- ` - ); - assert.equal(input1.value, "123"); - assert.equal(input2.value, "123"); - assert.equal(count, 2); - - input1.value = "456"; - await input1.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` - - -
456
- ` - ); - assert.equal(input1.value, "456"); - assert.equal(input2.value, "456"); - assert.equal(count, 3); - } -}; diff --git a/test/runtime/samples/component-binding-store/main.svelte b/test/runtime/samples/component-binding-store/main.svelte deleted file mode 100644 index dba08e5276..0000000000 --- a/test/runtime/samples/component-binding-store/main.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - -
{$value.value}
\ No newline at end of file diff --git a/test/runtime/samples/component-event-handler-contenteditable/_config.js b/test/runtime/samples/component-event-handler-contenteditable/_config.js deleted file mode 100644 index 3a85734975..0000000000 --- a/test/runtime/samples/component-event-handler-contenteditable/_config.js +++ /dev/null @@ -1,15 +0,0 @@ -export default { - html: ` -
- `, - - async test({ assert, component, target, window }) { - const div = target.querySelector('div'); - const text = window.document.createTextNode('a'); - div.insertBefore(text, null); - const event = new window.InputEvent('input'); - await div.dispatchEvent(event); - - assert.equal(div.textContent, 'a'); - } -}; diff --git a/test/runtime/samples/component-event-handler-contenteditable/main.svelte b/test/runtime/samples/component-event-handler-contenteditable/main.svelte deleted file mode 100644 index 1eb5911df8..0000000000 --- a/test/runtime/samples/component-event-handler-contenteditable/main.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -
{text}
diff --git a/test/runtime/samples/component-event-not-stale/_config.js b/test/runtime/samples/component-event-not-stale/_config.js index 7951afb9d5..912ea1f7d0 100644 --- a/test/runtime/samples/component-event-not-stale/_config.js +++ b/test/runtime/samples/component-event-not-stale/_config.js @@ -1,6 +1,6 @@ export default { props: { - value: 1 + value: 1, }, test({ assert, component, target, window }) { @@ -26,5 +26,5 @@ export default { { value: 2 }, { value: 2 } ]); - } + }, }; diff --git a/test/runtime/samples/component-events-console/_config.js b/test/runtime/samples/component-events-console/_config.js index 39ccbd719f..b800749785 100644 --- a/test/runtime/samples/component-events-console/_config.js +++ b/test/runtime/samples/component-events-console/_config.js @@ -21,5 +21,5 @@ export default { } console.log = log; - } + }, }; diff --git a/test/runtime/samples/component-namespace/Tooltip.svelte b/test/runtime/samples/component-namespace/Tooltip.svelte deleted file mode 100644 index 9b44ef57a8..0000000000 --- a/test/runtime/samples/component-namespace/Tooltip.svelte +++ /dev/null @@ -1 +0,0 @@ -

i am a widget

\ No newline at end of file diff --git a/test/runtime/samples/component-namespace/Widget.svelte b/test/runtime/samples/component-namespace/Widget.svelte deleted file mode 100644 index b6aa45c6a8..0000000000 --- a/test/runtime/samples/component-namespace/Widget.svelte +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/test/runtime/samples/component-namespace/_config.js b/test/runtime/samples/component-namespace/_config.js deleted file mode 100644 index 5b96ac8df0..0000000000 --- a/test/runtime/samples/component-namespace/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - html: '

i am a widget

' -}; diff --git a/test/runtime/samples/component-namespace/main.svelte b/test/runtime/samples/component-namespace/main.svelte deleted file mode 100644 index 3f53b2b1c8..0000000000 --- a/test/runtime/samples/component-namespace/main.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - -{#each widgets as LazyWidget} - -{/each} \ No newline at end of file diff --git a/test/runtime/samples/component-shorthand-import/_config.js b/test/runtime/samples/component-shorthand-import/_config.js index c955224600..ceb8e19f68 100644 --- a/test/runtime/samples/component-shorthand-import/_config.js +++ b/test/runtime/samples/component-shorthand-import/_config.js @@ -1,3 +1,3 @@ export default { - html: `

This is the widget.

` + html: `

This is the widget.

`, }; diff --git a/test/runtime/samples/component-slot-fallback-3/_config.js b/test/runtime/samples/component-slot-fallback-3/_config.js index 25cc65eb2d..b5591fb5e0 100644 --- a/test/runtime/samples/component-slot-fallback-3/_config.js +++ b/test/runtime/samples/component-slot-fallback-3/_config.js @@ -2,5 +2,5 @@ export default { html: `
Hello World
Hello
world
Bye
World
- ` + `, }; diff --git a/test/runtime/samples/component-slot-fallback-4/_config.js b/test/runtime/samples/component-slot-fallback-4/_config.js index 4ebe353513..b7c2b63ed6 100644 --- a/test/runtime/samples/component-slot-fallback-4/_config.js +++ b/test/runtime/samples/component-slot-fallback-4/_config.js @@ -1,5 +1,5 @@ export default { html: ` foobar - ` + `, }; diff --git a/test/runtime/samples/component-slot-let-in-slot/_config.js b/test/runtime/samples/component-slot-let-in-slot/_config.js index eb16c27fda..a86d869581 100644 --- a/test/runtime/samples/component-slot-let-in-slot/_config.js +++ b/test/runtime/samples/component-slot-let-in-slot/_config.js @@ -1,6 +1,6 @@ export default { props: { - prop: 'a' + prop: 'a', }, html: 'a', diff --git a/test/runtime/samples/component-slot-nested-if/_config.js b/test/runtime/samples/component-slot-nested-if/_config.js index 45c570fc22..89dfd006cc 100644 --- a/test/runtime/samples/component-slot-nested-if/_config.js +++ b/test/runtime/samples/component-slot-nested-if/_config.js @@ -26,5 +26,5 @@ export default { Display: abc ` ); - } + }, }; diff --git a/test/runtime/samples/deconflict-builtins-2/_config.js b/test/runtime/samples/deconflict-builtins-2/_config.js index 1489f83dc4..5870ff073b 100644 --- a/test/runtime/samples/deconflict-builtins-2/_config.js +++ b/test/runtime/samples/deconflict-builtins-2/_config.js @@ -1,4 +1,4 @@ export default { html: `hello world`, - preserveIdentifiers: true + preserveIdentifiers: true, }; \ No newline at end of file diff --git a/test/runtime/samples/dev-warning-missing-data-each/_config.js b/test/runtime/samples/dev-warning-missing-data-each/_config.js index 7d7794eff4..92cda48fce 100644 --- a/test/runtime/samples/dev-warning-missing-data-each/_config.js +++ b/test/runtime/samples/dev-warning-missing-data-each/_config.js @@ -7,18 +7,18 @@ export default { letters: [ { id: 1, - char: 'a' + char: 'a', }, { id: 2, - char: 'b' + char: 'b', }, { id: 3, - char: 'c' - } - ] + char: 'c', + }, + ], }, - warnings: [] + warnings: [], }; diff --git a/test/runtime/samples/document-event/_config.js b/test/runtime/samples/document-event/_config.js index d9a8866275..f5e4b46f4f 100644 --- a/test/runtime/samples/document-event/_config.js +++ b/test/runtime/samples/document-event/_config.js @@ -9,5 +9,5 @@ export default { const event2 = new window.Event('mouseleave'); window.document.body.dispatchEvent(event2); assert.deepEqual(component.events, ['enter', 'leave']); - } + }, }; diff --git a/test/runtime/samples/each-block-array-literal/_config.js b/test/runtime/samples/each-block-array-literal/_config.js index 164e4730bc..288d1cd09f 100644 --- a/test/runtime/samples/each-block-array-literal/_config.js +++ b/test/runtime/samples/each-block-array-literal/_config.js @@ -15,5 +15,5 @@ export default { button.dispatchEvent(event); assert.equal(component.clicked, 'racoon'); - } + }, }; diff --git a/test/runtime/samples/each-block-destructured-array-sparse/_config.js b/test/runtime/samples/each-block-destructured-array-sparse/_config.js index 331c3aec1b..9805276600 100644 --- a/test/runtime/samples/each-block-destructured-array-sparse/_config.js +++ b/test/runtime/samples/each-block-destructured-array-sparse/_config.js @@ -16,5 +16,5 @@ export default { assert.htmlEqual( target.innerHTML, `

bar

`); - } + }, }; diff --git a/test/runtime/samples/each-block-destructured-array/_config.js b/test/runtime/samples/each-block-destructured-array/_config.js index e2924c8656..432d8a3a78 100644 --- a/test/runtime/samples/each-block-destructured-array/_config.js +++ b/test/runtime/samples/each-block-destructured-array/_config.js @@ -16,5 +16,5 @@ export default { assert.htmlEqual( target.innerHTML, `

foo: bar

`); - } + }, }; diff --git a/test/runtime/samples/each-block-destructured-default/_config.js b/test/runtime/samples/each-block-destructured-default/_config.js index 0e99fd589f..133fd68532 100644 --- a/test/runtime/samples/each-block-destructured-default/_config.js +++ b/test/runtime/samples/each-block-destructured-default/_config.js @@ -18,5 +18,5 @@ export default { assert.htmlEqual(target.innerHTML, `

cow - ‎B. taurus - 50kg

`); - } + }, }; diff --git a/test/runtime/samples/each-block-destructured-object-binding/_config.js b/test/runtime/samples/each-block-destructured-object-binding/_config.js index 2ab3e24397..8b59a97034 100644 --- a/test/runtime/samples/each-block-destructured-object-binding/_config.js +++ b/test/runtime/samples/each-block-destructured-object-binding/_config.js @@ -1,6 +1,6 @@ export default { props: { - people: [{ name: { first: 'Doctor', last: 'Who' } }] + people: [{ name: { first: 'Doctor', last: 'Who' } }], }, html: ` @@ -41,5 +41,5 @@ export default {

Frank Oz

`); - } + }, }; diff --git a/test/runtime/samples/each-block-destructured-object-rest/_config.js b/test/runtime/samples/each-block-destructured-object-rest/_config.js index be5d38b555..561d4e8442 100644 --- a/test/runtime/samples/each-block-destructured-object-rest/_config.js +++ b/test/runtime/samples/each-block-destructured-object-rest/_config.js @@ -16,5 +16,5 @@ export default { assert.htmlEqual(target.innerHTML, `

cow

`); - } + }, }; diff --git a/test/runtime/samples/each-block-destructured-object/_config.js b/test/runtime/samples/each-block-destructured-object/_config.js index feec72f402..dc3943fffe 100644 --- a/test/runtime/samples/each-block-destructured-object/_config.js +++ b/test/runtime/samples/each-block-destructured-object/_config.js @@ -16,5 +16,5 @@ export default { assert.htmlEqual( target.innerHTML, `

cow: hooves

`); - } + }, }; diff --git a/test/runtime/samples/each-block-else-mount-or-intro/_config.js b/test/runtime/samples/each-block-else-mount-or-intro/_config.js index acf2bafd5f..8460a4b5e0 100644 --- a/test/runtime/samples/each-block-else-mount-or-intro/_config.js +++ b/test/runtime/samples/each-block-else-mount-or-intro/_config.js @@ -1,4 +1,4 @@ export default { props: { items: [] }, - html: `No items.` + html: `No items.`, }; diff --git a/test/runtime/samples/each-block-in-if-block/_config.js b/test/runtime/samples/each-block-in-if-block/_config.js index 082b9b3033..eda3ca14a9 100644 --- a/test/runtime/samples/each-block-in-if-block/_config.js +++ b/test/runtime/samples/each-block-in-if-block/_config.js @@ -1,7 +1,7 @@ export default { props: { dummy: false, - fruits: ['Apple', 'Banana', 'Tomato'] + fruits: ['Apple', 'Banana', 'Tomato'], }, html: '
Apple
Banana
Tomato
', diff --git a/test/runtime/samples/each-block-keyed-component-action/Component.svelte b/test/runtime/samples/each-block-keyed-component-action/Component.svelte deleted file mode 100644 index 18a6c7452a..0000000000 --- a/test/runtime/samples/each-block-keyed-component-action/Component.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -
diff --git a/test/runtime/samples/each-block-keyed-component-action/_config.js b/test/runtime/samples/each-block-keyed-component-action/_config.js deleted file mode 100644 index 66c609be01..0000000000 --- a/test/runtime/samples/each-block-keyed-component-action/_config.js +++ /dev/null @@ -1,21 +0,0 @@ -export default { - test({ assert, component, raf }) { - assert.equal(component.count, 0); - - component.arr = ["2"]; - - assert.equal(component.count, 1); - - component.arr = ["1", "2"]; - - assert.equal(component.count, 2); - - component.arr = ["2", "1"]; - - assert.equal(component.count, 2); - - component.arr = []; - - assert.equal(component.count, 0); - } -}; diff --git a/test/runtime/samples/each-block-keyed-component-action/main.svelte b/test/runtime/samples/each-block-keyed-component-action/main.svelte deleted file mode 100644 index bfacdf402a..0000000000 --- a/test/runtime/samples/each-block-keyed-component-action/main.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - -{#each arr as item (item)} - -{/each} diff --git a/test/runtime/samples/each-block-keyed-empty/_config.js b/test/runtime/samples/each-block-keyed-empty/_config.js index 2c9055ce44..cf8f4d3219 100644 --- a/test/runtime/samples/each-block-keyed-empty/_config.js +++ b/test/runtime/samples/each-block-keyed-empty/_config.js @@ -1,6 +1,6 @@ export default { props: { - x: [{ z: 1 }, { z: 2 }] + x: [{ z: 1 }, { z: 2 }], }, html: `` diff --git a/test/runtime/samples/each-block-keyed-non-prop/_config.js b/test/runtime/samples/each-block-keyed-non-prop/_config.js index 2cccbedef0..90e9a7f9c8 100644 --- a/test/runtime/samples/each-block-keyed-non-prop/_config.js +++ b/test/runtime/samples/each-block-keyed-non-prop/_config.js @@ -25,5 +25,5 @@ export default { assert.equal(p1, p4, 'first

element should be retained'); assert.equal(p3, p5, 'last

element should be retained'); - } + }, }; diff --git a/test/runtime/samples/each-block-keyed-random-permute/_config.js b/test/runtime/samples/each-block-keyed-random-permute/_config.js index 4e6830a616..80bf2d9115 100644 --- a/test/runtime/samples/each-block-keyed-random-permute/_config.js +++ b/test/runtime/samples/each-block-keyed-random-permute/_config.js @@ -19,7 +19,7 @@ function permute() { export default { props: { - values: toObjects('abc') + values: toObjects('abc'), }, html: `(a)(b)(c)`, diff --git a/test/runtime/samples/each-block-keyed-shift/_config.js b/test/runtime/samples/each-block-keyed-shift/_config.js index 4e7809445c..44ca8447f0 100644 --- a/test/runtime/samples/each-block-keyed-shift/_config.js +++ b/test/runtime/samples/each-block-keyed-shift/_config.js @@ -1,6 +1,6 @@ export default { props: { - titles: [{ name: 'a' }, { name: 'b' }, { name: 'c' }] + titles: [{ name: 'a', }, { name: 'b' }, { name: 'c' }] }, html: ` diff --git a/test/runtime/samples/each-block-keyed-siblings/_config.js b/test/runtime/samples/each-block-keyed-siblings/_config.js index a52b6c404d..d87f8943da 100644 --- a/test/runtime/samples/each-block-keyed-siblings/_config.js +++ b/test/runtime/samples/each-block-keyed-siblings/_config.js @@ -1,7 +1,7 @@ export default { props: { ones: [{ text: '1' }], - twos: [{ text: '2' }] + twos: [{ text: '2' }], }, html: ` @@ -16,5 +16,5 @@ export default {

11
2
`); - } + }, }; diff --git a/test/runtime/samples/each-block-keyed-static/_config.js b/test/runtime/samples/each-block-keyed-static/_config.js index 57800c454f..629ea47ebb 100644 --- a/test/runtime/samples/each-block-keyed-static/_config.js +++ b/test/runtime/samples/each-block-keyed-static/_config.js @@ -1,6 +1,6 @@ export default { props: { - x: [{ z: 1 }, { z: 2 }] + x: [{ z: 1 }, { z: 2 }], }, html: ` diff --git a/test/runtime/samples/each-block-scope-shadow-bind-2/_config.js b/test/runtime/samples/each-block-scope-shadow-bind-2/_config.js deleted file mode 100644 index 384c2dd2b4..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind-2/_config.js +++ /dev/null @@ -1,23 +0,0 @@ -export default { - html: ` - Hello - - `, - ssrHtml: ` - Hello - - `, - async test({ assert, target, window }) { - const input = target.querySelector("input"); - input.value = "abcd"; - await input.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` - abcd - - ` - ); - } -}; diff --git a/test/runtime/samples/each-block-scope-shadow-bind-2/main.svelte b/test/runtime/samples/each-block-scope-shadow-bind-2/main.svelte deleted file mode 100644 index f5bff01e6c..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind-2/main.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -{#each a as { a }} - {a} - -{/each} \ No newline at end of file diff --git a/test/runtime/samples/each-block-scope-shadow-bind-3/_config.js b/test/runtime/samples/each-block-scope-shadow-bind-3/_config.js deleted file mode 100644 index 92230a735c..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind-3/_config.js +++ /dev/null @@ -1,105 +0,0 @@ -export default { - html: ` -
- Hello World - - -
-
- Sapper App - - -
- `, - - ssrHtml: ` -
- Hello World - - -
-
- Sapper App - - -
- `, - async test({ assert, target, window }) { - const [input1, input2, input3, input4] = target.querySelectorAll("input"); - input1.value = "Awesome"; - await input1.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` -
- Awesome World - - -
-
- Sapper App - - -
- ` - ); - - input2.value = "Svelte"; - await input2.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` -
- Awesome Svelte - - -
-
- Sapper App - - -
- ` - ); - - input3.value = "Foo"; - await input3.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` -
- Awesome Svelte - - -
-
- Foo App - - -
- ` - ); - - input4.value = "Bar"; - await input4.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` -
- Awesome Svelte - - -
-
- Foo Bar - - -
- ` - ); - } -}; diff --git a/test/runtime/samples/each-block-scope-shadow-bind-3/main.svelte b/test/runtime/samples/each-block-scope-shadow-bind-3/main.svelte deleted file mode 100644 index 2e8fe5e591..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind-3/main.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -{#each a as a} -
- {a[0]} {a[1]} - - -
-{/each} \ No newline at end of file diff --git a/test/runtime/samples/each-block-scope-shadow-bind-4/_config.js b/test/runtime/samples/each-block-scope-shadow-bind-4/_config.js deleted file mode 100644 index 418fcbea4a..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind-4/_config.js +++ /dev/null @@ -1,64 +0,0 @@ -export default { - html: ` -
- b: Hello - -
- - `, - ssrHtml: ` -
- b: Hello - -
- - `, - async test({ assert, target, window }) { - const input = target.querySelector("input"); - const button = target.querySelector("button"); - - input.value = "Awesome"; - await input.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` -
- b: Awesome - -
- - ` - ); - - - await button.dispatchEvent(new window.MouseEvent("click")); - - assert.htmlEqual( - target.innerHTML, - ` -
- c: World - -
- - ` - ); - - assert.equal(input.value, 'World'); - - input.value = "Svelte"; - await input.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` -
- c: Svelte - -
- - ` - ); - } -}; diff --git a/test/runtime/samples/each-block-scope-shadow-bind-4/main.svelte b/test/runtime/samples/each-block-scope-shadow-bind-4/main.svelte deleted file mode 100644 index bc4f172dd0..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind-4/main.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - -{#each a as { a, key }} -
- {key}: {a[key]} - -
-{/each} - - \ No newline at end of file diff --git a/test/runtime/samples/each-block-scope-shadow-bind/_config.js b/test/runtime/samples/each-block-scope-shadow-bind/_config.js deleted file mode 100644 index 384c2dd2b4..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind/_config.js +++ /dev/null @@ -1,23 +0,0 @@ -export default { - html: ` - Hello - - `, - ssrHtml: ` - Hello - - `, - async test({ assert, target, window }) { - const input = target.querySelector("input"); - input.value = "abcd"; - await input.dispatchEvent(new window.Event("input")); - - assert.htmlEqual( - target.innerHTML, - ` - abcd - - ` - ); - } -}; diff --git a/test/runtime/samples/each-block-scope-shadow-bind/main.svelte b/test/runtime/samples/each-block-scope-shadow-bind/main.svelte deleted file mode 100644 index f3471e179f..0000000000 --- a/test/runtime/samples/each-block-scope-shadow-bind/main.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -{#each a as a} - {a} - -{/each} \ No newline at end of file diff --git a/test/runtime/samples/each-block-scope-shadow-self/_config.js b/test/runtime/samples/each-block-scope-shadow-self/_config.js index 867aadfab9..1669dc5b6e 100644 --- a/test/runtime/samples/each-block-scope-shadow-self/_config.js +++ b/test/runtime/samples/each-block-scope-shadow-self/_config.js @@ -9,5 +9,5 @@ export default { assert.equal(target.querySelectorAll('input').length, 3); assert.deepEqual(component.data, { a: 'svelte', b: 'B', c: 'C' }); assert.deepEqual(component.x, ['a', 'b', 'c']); - } + }, }; diff --git a/test/runtime/samples/each-blocks-assignment-2/_config.js b/test/runtime/samples/each-blocks-assignment-2/_config.js deleted file mode 100644 index 0831617261..0000000000 --- a/test/runtime/samples/each-blocks-assignment-2/_config.js +++ /dev/null @@ -1,20 +0,0 @@ -export default { - html: ` - foo - - `, - async test({ assert, component, target, window }) { - const button = target.querySelector("button"); - - const clickEvent = new window.MouseEvent("click"); - await button.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - bar - - ` - ); - } -}; diff --git a/test/runtime/samples/each-blocks-assignment-2/main.svelte b/test/runtime/samples/each-blocks-assignment-2/main.svelte deleted file mode 100644 index 5ef3ae83ac..0000000000 --- a/test/runtime/samples/each-blocks-assignment-2/main.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - -{#each arr as o} - {o.prop} - -{/each} \ No newline at end of file diff --git a/test/runtime/samples/each-blocks-assignment/_config.js b/test/runtime/samples/each-blocks-assignment/_config.js deleted file mode 100644 index 2c95d486d6..0000000000 --- a/test/runtime/samples/each-blocks-assignment/_config.js +++ /dev/null @@ -1,97 +0,0 @@ -export default { - html: ` - - 1 - - 2 - - 3 - - `, - async test({ assert, component, target, window }) { - let [incrementBtn, ...buttons] = target.querySelectorAll("button"); - - const clickEvent = new window.MouseEvent("click"); - await buttons[0].dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - - 2 - - 2 - - 3 - - ` - ); - - await buttons[0].dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - - 4 - - 2 - - 3 - - ` - ); - - await buttons[2].dispatchEvent(clickEvent); - await buttons[2].dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - - 4 - - 2 - - 12 - - ` - ); - - await incrementBtn.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - - 4 - - 2 - - 12 - - 4 - - ` - ); - - [incrementBtn, ...buttons] = target.querySelectorAll("button"); - - await buttons[3].dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - - 4 - - 2 - - 12 - - 8 - - ` - ); - } -}; diff --git a/test/runtime/samples/each-blocks-assignment/main.svelte b/test/runtime/samples/each-blocks-assignment/main.svelte deleted file mode 100644 index f74bffbe04..0000000000 --- a/test/runtime/samples/each-blocks-assignment/main.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - -{#each arr as o} - {o} - -{/each} \ No newline at end of file diff --git a/test/runtime/samples/empty-dom/_config.js b/test/runtime/samples/empty-dom/_config.js index 7da2831db4..e3e3d0ecd5 100644 --- a/test/runtime/samples/empty-dom/_config.js +++ b/test/runtime/samples/empty-dom/_config.js @@ -1,3 +1,3 @@ export default { - html: '' + html: '', }; \ No newline at end of file diff --git a/test/runtime/samples/empty-style-block/_config.js b/test/runtime/samples/empty-style-block/_config.js index 22dc25b41e..0375bad029 100644 --- a/test/runtime/samples/empty-style-block/_config.js +++ b/test/runtime/samples/empty-style-block/_config.js @@ -1,3 +1,3 @@ export default { - html: '' + html: '', }; diff --git a/test/runtime/samples/escape-template-literals/_config.js b/test/runtime/samples/escape-template-literals/_config.js index 9e50f94764..1419d65679 100644 --- a/test/runtime/samples/escape-template-literals/_config.js +++ b/test/runtime/samples/escape-template-literals/_config.js @@ -1,3 +1,3 @@ export default { - html: '`${foo}\\n`\n
foo
\n
`${foo}\\n`
' + html: '`${foo}\\n`\n
foo
\n
`${foo}\\n`
', }; diff --git a/test/runtime/samples/event-handler-async/_config.js b/test/runtime/samples/event-handler-async/_config.js index b483d039ed..fab4d998b6 100644 --- a/test/runtime/samples/event-handler-async/_config.js +++ b/test/runtime/samples/event-handler-async/_config.js @@ -1,5 +1,5 @@ export default { html: ` - ` + `, }; diff --git a/test/runtime/samples/event-handler-dynamic-2/_config.js b/test/runtime/samples/event-handler-dynamic-2/_config.js index 5fded47855..c996d8f2aa 100644 --- a/test/runtime/samples/event-handler-dynamic-2/_config.js +++ b/test/runtime/samples/event-handler-dynamic-2/_config.js @@ -29,5 +29,5 @@ export default { await handler_b.dispatchEvent(event); assert.equal(p.innerHTML, '2'); - } + }, }; diff --git a/test/runtime/samples/event-handler-dynamic-bound-var/_config.js b/test/runtime/samples/event-handler-dynamic-bound-var/_config.js index c490db000a..c832127c09 100644 --- a/test/runtime/samples/event-handler-dynamic-bound-var/_config.js +++ b/test/runtime/samples/event-handler-dynamic-bound-var/_config.js @@ -16,5 +16,5 @@ export default { Bye World ` ); - } + }, }; diff --git a/test/runtime/samples/event-handler-dynamic-expression/_config.js b/test/runtime/samples/event-handler-dynamic-expression/_config.js index b202196ebf..c4d259a542 100644 --- a/test/runtime/samples/event-handler-dynamic-expression/_config.js +++ b/test/runtime/samples/event-handler-dynamic-expression/_config.js @@ -16,5 +16,5 @@ export default { await button.dispatchEvent(event); assert.htmlEqual(target.innerHTML, ``); - } + }, }; diff --git a/test/runtime/samples/event-handler-dynamic-hash/_config.js b/test/runtime/samples/event-handler-dynamic-hash/_config.js index dcfebb7008..e60e561524 100644 --- a/test/runtime/samples/event-handler-dynamic-hash/_config.js +++ b/test/runtime/samples/event-handler-dynamic-hash/_config.js @@ -52,5 +52,5 @@ export default {

2

`); - } + }, }; diff --git a/test/runtime/samples/event-handler-dynamic-invalid/_config.js b/test/runtime/samples/event-handler-dynamic-invalid/_config.js index ad9d8c8680..ba1777f945 100644 --- a/test/runtime/samples/event-handler-dynamic-invalid/_config.js +++ b/test/runtime/samples/event-handler-dynamic-invalid/_config.js @@ -24,5 +24,5 @@ export default { await buttonInvalid.dispatchEvent(event); assert.equal(err, "", err); - } + }, }; diff --git a/test/runtime/samples/event-handler-dynamic-modifier-self/_config.js b/test/runtime/samples/event-handler-dynamic-modifier-self/_config.js index 6bd96ba8aa..6d7d29e482 100644 --- a/test/runtime/samples/event-handler-dynamic-modifier-self/_config.js +++ b/test/runtime/samples/event-handler-dynamic-modifier-self/_config.js @@ -12,5 +12,5 @@ export default { await button.dispatchEvent(event); assert.ok(!component.inner_clicked); - } + }, }; diff --git a/test/runtime/samples/event-handler-dynamic/_config.js b/test/runtime/samples/event-handler-dynamic/_config.js index dcfebb7008..e60e561524 100644 --- a/test/runtime/samples/event-handler-dynamic/_config.js +++ b/test/runtime/samples/event-handler-dynamic/_config.js @@ -52,5 +52,5 @@ export default {

2

`); - } + }, }; diff --git a/test/runtime/samples/event-handler-each-this/_config.js b/test/runtime/samples/event-handler-each-this/_config.js index 7f6528977c..3ab2d5acdc 100644 --- a/test/runtime/samples/event-handler-each-this/_config.js +++ b/test/runtime/samples/event-handler-each-this/_config.js @@ -1,6 +1,6 @@ export default { props: { - items: ['foo', 'bar', 'baz'] + items: ['foo', 'bar', 'baz'], }, html: ` diff --git a/test/runtime/samples/event-handler-modifier-self/_config.js b/test/runtime/samples/event-handler-modifier-self/_config.js index 6bd96ba8aa..6d7d29e482 100644 --- a/test/runtime/samples/event-handler-modifier-self/_config.js +++ b/test/runtime/samples/event-handler-modifier-self/_config.js @@ -12,5 +12,5 @@ export default { await button.dispatchEvent(event); assert.ok(!component.inner_clicked); - } + }, }; diff --git a/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js b/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js index 34cee8157c..d5f3def7f1 100644 --- a/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js +++ b/test/runtime/samples/globals-not-overwritten-by-bindings/_config.js @@ -37,17 +37,17 @@ export default { todos: { first: { description: 'Buy some milk', - done: true + done: true, }, second: { description: 'Do the laundry', - done: true + done: true, }, third: { description: "Find life's true purpose", - done: false - } - } + done: false, + }, + }, }, async test({ assert, component, target, window }) { @@ -74,5 +74,5 @@ export default {
`); - } + }, }; diff --git a/test/runtime/samples/globals-shadowed-by-each-binding/_config.js b/test/runtime/samples/globals-shadowed-by-each-binding/_config.js index 50feb09bb6..f69e5e8b0e 100644 --- a/test/runtime/samples/globals-shadowed-by-each-binding/_config.js +++ b/test/runtime/samples/globals-shadowed-by-each-binding/_config.js @@ -1,3 +1,3 @@ export default { - html: '

Alert1

Alert2

' + html: '

Alert1

Alert2

', }; diff --git a/test/runtime/samples/if-block-component-store-function-conditionals/_config.js b/test/runtime/samples/if-block-component-store-function-conditionals/_config.js index 609765d225..db171f2fd1 100644 --- a/test/runtime/samples/if-block-component-store-function-conditionals/_config.js +++ b/test/runtime/samples/if-block-component-store-function-conditionals/_config.js @@ -1,3 +1,3 @@ export default { - html: '

OK

' + html: '

OK

', }; diff --git a/test/runtime/samples/if-block-component-without-outro/_config.js b/test/runtime/samples/if-block-component-without-outro/_config.js index fbcc328fa3..8106081c7c 100644 --- a/test/runtime/samples/if-block-component-without-outro/_config.js +++ b/test/runtime/samples/if-block-component-without-outro/_config.js @@ -1,6 +1,6 @@ export default { props: { - foo: true + foo: true, }, html: '
A wild component appears
', @@ -8,5 +8,5 @@ export default { test({ assert, component, target }) { component.foo = false; assert.htmlEqual(target.innerHTML, ''); - } + }, }; diff --git a/test/runtime/samples/if-block-else-in-each/_config.js b/test/runtime/samples/if-block-else-in-each/_config.js index e75dcb15ee..44268f32b9 100644 --- a/test/runtime/samples/if-block-else-in-each/_config.js +++ b/test/runtime/samples/if-block-else-in-each/_config.js @@ -1,9 +1,9 @@ export default { props: { - array: [true, false] + array: [true, false], }, html: `
foo
bar
- ` + `, }; diff --git a/test/runtime/samples/if-block-else-partial-outro/_config.js b/test/runtime/samples/if-block-else-partial-outro/_config.js index ae58d25c23..a358680edf 100644 --- a/test/runtime/samples/if-block-else-partial-outro/_config.js +++ b/test/runtime/samples/if-block-else-partial-outro/_config.js @@ -1,7 +1,7 @@ export default { props: { x: 1, - y: false + y: false, }, html: ` @@ -13,5 +13,5 @@ export default { assert.htmlEqual(target.innerHTML, ` 2 `); - } + }, }; diff --git a/test/runtime/samples/if-block-no-outro-else-with-outro/_config.js b/test/runtime/samples/if-block-no-outro-else-with-outro/_config.js index da80f5be12..b2e71ea01f 100644 --- a/test/runtime/samples/if-block-no-outro-else-with-outro/_config.js +++ b/test/runtime/samples/if-block-no-outro-else-with-outro/_config.js @@ -18,5 +18,5 @@ export default {

y

`); - } + }, }; diff --git a/test/runtime/samples/if-block-outro-unique-select-block-type/_config.js b/test/runtime/samples/if-block-outro-unique-select-block-type/_config.js index 15213e19b3..b94da1a576 100644 --- a/test/runtime/samples/if-block-outro-unique-select-block-type/_config.js +++ b/test/runtime/samples/if-block-outro-unique-select-block-type/_config.js @@ -2,5 +2,5 @@ export default { html: `
- ` + `, }; diff --git a/test/runtime/samples/initial-state-assign/_config.js b/test/runtime/samples/initial-state-assign/_config.js index 95a1a5e068..b4067fef80 100644 --- a/test/runtime/samples/initial-state-assign/_config.js +++ b/test/runtime/samples/initial-state-assign/_config.js @@ -3,5 +3,5 @@ export default { html: ` "foo" "bar" - ` + `, }; diff --git a/test/runtime/samples/innerhtml-with-comments/_config.js b/test/runtime/samples/innerhtml-with-comments/_config.js deleted file mode 100644 index 95d4a6fa96..0000000000 --- a/test/runtime/samples/innerhtml-with-comments/_config.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - html: ` - - Style: - Bootstrap. - - ` -}; \ No newline at end of file diff --git a/test/runtime/samples/innerhtml-with-comments/main.svelte b/test/runtime/samples/innerhtml-with-comments/main.svelte deleted file mode 100644 index e00f755072..0000000000 --- a/test/runtime/samples/innerhtml-with-comments/main.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - Style: - - Bootstrap. - \ No newline at end of file diff --git a/test/runtime/samples/lifecycle-render-order-for-children/_config.js b/test/runtime/samples/lifecycle-render-order-for-children/_config.js index d182d5a97e..033b593aea 100644 --- a/test/runtime/samples/lifecycle-render-order-for-children/_config.js +++ b/test/runtime/samples/lifecycle-render-order-for-children/_config.js @@ -21,7 +21,7 @@ export default { '3: onMount', '3: afterUpdate', '0: onMount', - '0: afterUpdate' + '0: afterUpdate', ]); } else { assert.deepEqual(order, [ @@ -40,10 +40,10 @@ export default { '3: onMount', '3: afterUpdate', '0: onMount', - '0: afterUpdate' + '0: afterUpdate', ]); } order.length = 0; - } + }, }; diff --git a/test/runtime/samples/loop-protect-generator-opt-out/_config.js b/test/runtime/samples/loop-protect-generator-opt-out/_config.js index 0fe83a36db..9b6a24b513 100644 --- a/test/runtime/samples/loop-protect-generator-opt-out/_config.js +++ b/test/runtime/samples/loop-protect-generator-opt-out/_config.js @@ -1,6 +1,6 @@ export default { compileOptions: { dev: true, - loopGuardTimeout: 1 - } + loopGuardTimeout: 1, + }, }; diff --git a/test/runtime/samples/loop-protect-inner-function/_config.js b/test/runtime/samples/loop-protect-inner-function/_config.js index 1b553e2475..862d4f4c0f 100644 --- a/test/runtime/samples/loop-protect-inner-function/_config.js +++ b/test/runtime/samples/loop-protect-inner-function/_config.js @@ -2,6 +2,6 @@ export default { html: '
', compileOptions: { dev: true, - loopGuardTimeout: 100 + loopGuardTimeout: 100, } }; diff --git a/test/runtime/samples/loop-protect/_config.js b/test/runtime/samples/loop-protect/_config.js index 230bbeb53d..75f75c003d 100644 --- a/test/runtime/samples/loop-protect/_config.js +++ b/test/runtime/samples/loop-protect/_config.js @@ -2,6 +2,6 @@ export default { error: 'Infinite loop detected', compileOptions: { dev: true, - loopGuardTimeout: 100 + loopGuardTimeout: 100, } }; diff --git a/test/runtime/samples/nested-transition-detach-each/_config.js b/test/runtime/samples/nested-transition-detach-each/_config.js index 00c2d44048..e17fe1bc4d 100644 --- a/test/runtime/samples/nested-transition-detach-each/_config.js +++ b/test/runtime/samples/nested-transition-detach-each/_config.js @@ -35,5 +35,5 @@ export default { raf.tick(0); raf.tick(100); assert.htmlEqual(target.innerHTML, ``); - } + }, }; diff --git a/test/runtime/samples/nested-transition-detach-if-false/_config.js b/test/runtime/samples/nested-transition-detach-if-false/_config.js index 1d42094192..d2ae78ffe3 100644 --- a/test/runtime/samples/nested-transition-detach-if-false/_config.js +++ b/test/runtime/samples/nested-transition-detach-if-false/_config.js @@ -20,5 +20,5 @@ export default { a `); - } + }, }; diff --git a/test/runtime/samples/nested-transition-if-block-not-remounted/_config.js b/test/runtime/samples/nested-transition-if-block-not-remounted/_config.js index 30ff83b39f..6696389e6e 100644 --- a/test/runtime/samples/nested-transition-if-block-not-remounted/_config.js +++ b/test/runtime/samples/nested-transition-if-block-not-remounted/_config.js @@ -20,5 +20,5 @@ export default { }; component.value = 'two'; - } + }, }; diff --git a/test/runtime/samples/noscript-removal/_config.js b/test/runtime/samples/noscript-removal/_config.js index 709792c14a..35bdcefd96 100644 --- a/test/runtime/samples/noscript-removal/_config.js +++ b/test/runtime/samples/noscript-removal/_config.js @@ -5,5 +5,5 @@ export default {
foo
foo
foo
-` +`, }; diff --git a/test/runtime/samples/paren-wrapped-expressions/_config.js b/test/runtime/samples/paren-wrapped-expressions/_config.js index 972dc51cb0..0c757dc854 100644 --- a/test/runtime/samples/paren-wrapped-expressions/_config.js +++ b/test/runtime/samples/paren-wrapped-expressions/_config.js @@ -2,7 +2,7 @@ export default { props: { a: 'foo', b: true, - c: [ 1, 2, 3 ] + c: [ 1, 2, 3 ], }, html: ` diff --git a/test/runtime/samples/prop-exports/_config.js b/test/runtime/samples/prop-exports/_config.js index 69a40c4fab..e1620c015f 100644 --- a/test/runtime/samples/prop-exports/_config.js +++ b/test/runtime/samples/prop-exports/_config.js @@ -10,7 +10,7 @@ export default { a2: 4, a6: writable(29), for: 'loop', - continue: '...' + continue: '...', }, html: ` diff --git a/test/runtime/samples/props-reactive-only-with-change/Comp.svelte b/test/runtime/samples/props-reactive-only-with-change/Comp.svelte deleted file mode 100644 index 0eaf8a40d4..0000000000 --- a/test/runtime/samples/props-reactive-only-with-change/Comp.svelte +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/test/runtime/samples/props-reactive-only-with-change/_config.js b/test/runtime/samples/props-reactive-only-with-change/_config.js deleted file mode 100644 index d2e86e583d..0000000000 --- a/test/runtime/samples/props-reactive-only-with-change/_config.js +++ /dev/null @@ -1,30 +0,0 @@ -let callbacks = []; - -export default { - props: { - callback: (value) => callbacks.push(value), - val1: "1", - val2: "2" - }, - - before_test() { - callbacks = []; - }, - - async test({ assert, component, target }) { - assert.equal(callbacks.length, 2); - assert.equal(JSON.stringify(callbacks), '["1","2"]'); - - component.val1 = "3"; - assert.equal(callbacks.length, 3); - assert.equal(JSON.stringify(callbacks), '["1","2","1"]'); - - component.val1 = "4"; - assert.equal(callbacks.length, 4); - assert.equal(JSON.stringify(callbacks), '["1","2","1","1"]'); - - component.val2 = "5"; - assert.equal(callbacks.length, 5); - assert.equal(JSON.stringify(callbacks), '["1","2","1","1","2"]'); - } -}; diff --git a/test/runtime/samples/props-reactive-only-with-change/main.svelte b/test/runtime/samples/props-reactive-only-with-change/main.svelte deleted file mode 100644 index 73ddd137f5..0000000000 --- a/test/runtime/samples/props-reactive-only-with-change/main.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/test/runtime/samples/props-reactive-slot/Comp.svelte b/test/runtime/samples/props-reactive-slot/Comp.svelte deleted file mode 100644 index bf9e12a58a..0000000000 --- a/test/runtime/samples/props-reactive-slot/Comp.svelte +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/runtime/samples/props-reactive-slot/_config.js b/test/runtime/samples/props-reactive-slot/_config.js deleted file mode 100644 index 8ee6ef69dc..0000000000 --- a/test/runtime/samples/props-reactive-slot/_config.js +++ /dev/null @@ -1,21 +0,0 @@ -export default { - html: ` -

hi

- - `, - - async test({ assert, component, target, window }) { - const btn = target.querySelector("button"); - const clickEvent = new window.MouseEvent("click"); - - await btn.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` -

changed

- - ` - ); - } -}; diff --git a/test/runtime/samples/props-reactive-slot/main.svelte b/test/runtime/samples/props-reactive-slot/main.svelte deleted file mode 100644 index 84777bf8ab..0000000000 --- a/test/runtime/samples/props-reactive-slot/main.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - -

- {props.someprop} -

-
- - \ No newline at end of file diff --git a/test/runtime/samples/raw-mustache-as-root/RawMustache.svelte b/test/runtime/samples/raw-mustache-as-root/RawMustache.svelte deleted file mode 100644 index d94954f49b..0000000000 --- a/test/runtime/samples/raw-mustache-as-root/RawMustache.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - -{@html content} \ No newline at end of file diff --git a/test/runtime/samples/raw-mustache-as-root/_config.js b/test/runtime/samples/raw-mustache-as-root/_config.js deleted file mode 100644 index e42fa7f517..0000000000 --- a/test/runtime/samples/raw-mustache-as-root/_config.js +++ /dev/null @@ -1,33 +0,0 @@ -export default { - html: ` - -

Another first line

-

This line should be last.

- `, - async test({ assert, target, window }) { - const btn = target.querySelector("button"); - const clickEvent = new window.MouseEvent("click"); - - await btn.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - -

First line

-

This line should be last.

- ` - ); - - await btn.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - -

Another first line

-

This line should be last.

- ` - ); - } -}; diff --git a/test/runtime/samples/raw-mustache-as-root/main.svelte b/test/runtime/samples/raw-mustache-as-root/main.svelte deleted file mode 100644 index 7ccce0cd9b..0000000000 --- a/test/runtime/samples/raw-mustache-as-root/main.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - -

This line should be last.

\ No newline at end of file diff --git a/test/runtime/samples/raw-mustache-inside-head/_config.js b/test/runtime/samples/raw-mustache-inside-head/_config.js deleted file mode 100644 index 7923fc7238..0000000000 --- a/test/runtime/samples/raw-mustache-inside-head/_config.js +++ /dev/null @@ -1,16 +0,0 @@ -export default { - async test({ assert, target, window }) { - const btn = target.querySelector("button"); - const clickEvent = new window.MouseEvent("click"); - - assert.equal(window.document.head.innerHTML.includes(''), true); - - await btn.dispatchEvent(clickEvent); - - assert.equal(window.document.head.innerHTML.includes(''), true); - - await btn.dispatchEvent(clickEvent); - - assert.equal(window.document.head.innerHTML.includes(''), true); - } -}; diff --git a/test/runtime/samples/raw-mustache-inside-head/main.svelte b/test/runtime/samples/raw-mustache-inside-head/main.svelte deleted file mode 100644 index 25b9fdeee9..0000000000 --- a/test/runtime/samples/raw-mustache-inside-head/main.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - {@html content} - - diff --git a/test/runtime/samples/raw-mustache-inside-slot/Component.svelte b/test/runtime/samples/raw-mustache-inside-slot/Component.svelte deleted file mode 100644 index fcabccae48..0000000000 --- a/test/runtime/samples/raw-mustache-inside-slot/Component.svelte +++ /dev/null @@ -1,2 +0,0 @@ - -

This line should be last.

\ No newline at end of file diff --git a/test/runtime/samples/raw-mustache-inside-slot/_config.js b/test/runtime/samples/raw-mustache-inside-slot/_config.js deleted file mode 100644 index e42fa7f517..0000000000 --- a/test/runtime/samples/raw-mustache-inside-slot/_config.js +++ /dev/null @@ -1,33 +0,0 @@ -export default { - html: ` - -

Another first line

-

This line should be last.

- `, - async test({ assert, target, window }) { - const btn = target.querySelector("button"); - const clickEvent = new window.MouseEvent("click"); - - await btn.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - -

First line

-

This line should be last.

- ` - ); - - await btn.dispatchEvent(clickEvent); - - assert.htmlEqual( - target.innerHTML, - ` - -

Another first line

-

This line should be last.

- ` - ); - } -}; diff --git a/test/runtime/samples/raw-mustache-inside-slot/main.svelte b/test/runtime/samples/raw-mustache-inside-slot/main.svelte deleted file mode 100644 index a022a68e95..0000000000 --- a/test/runtime/samples/raw-mustache-inside-slot/main.svelte +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - {@html content} - \ No newline at end of file diff --git a/test/runtime/samples/raw-mustaches-td-tr/_config.js b/test/runtime/samples/raw-mustaches-td-tr/_config.js deleted file mode 100644 index 1bcad157f3..0000000000 --- a/test/runtime/samples/raw-mustaches-td-tr/_config.js +++ /dev/null @@ -1,18 +0,0 @@ -export default { - props: { - raw: "12" - }, - - html: ` - - - - - - - - - -
57
12
- ` -}; diff --git a/test/runtime/samples/raw-mustaches-td-tr/main.svelte b/test/runtime/samples/raw-mustaches-td-tr/main.svelte deleted file mode 100644 index 07d7299e43..0000000000 --- a/test/runtime/samples/raw-mustaches-td-tr/main.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - {@html raw} - -
57
\ No newline at end of file diff --git a/test/runtime/samples/reactive-function-called-reassigned/_config.js b/test/runtime/samples/reactive-function-called-reassigned/_config.js deleted file mode 100644 index 7b2a8b72fe..0000000000 --- a/test/runtime/samples/reactive-function-called-reassigned/_config.js +++ /dev/null @@ -1,27 +0,0 @@ -let value; -let called = 0; -function callback(_value) { - called ++; - value = _value; -} - -export default { - props: { - callback - }, - async test({ assert, component, target, window }) { - assert.equal(called, 1); - - const input = target.querySelector('input'); - - const event = new window.Event('input'); - input.value = 'h'; - await input.dispatchEvent(event); - - assert.equal(called, 2); - assert.equal(value.length, 3); - assert.equal(value[0], 'h'); - assert.equal(value[1], '2'); - assert.equal(value[2], '3'); - } -}; diff --git a/test/runtime/samples/reactive-function-called-reassigned/main.svelte b/test/runtime/samples/reactive-function-called-reassigned/main.svelte deleted file mode 100644 index 10a3c79d14..0000000000 --- a/test/runtime/samples/reactive-function-called-reassigned/main.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -{#each refs as ref} - -{/each} \ No newline at end of file diff --git a/test/runtime/samples/reactive-import-statement/_config.js b/test/runtime/samples/reactive-import-statement/_config.js index 45a844afa0..7fb8097ca5 100644 --- a/test/runtime/samples/reactive-import-statement/_config.js +++ b/test/runtime/samples/reactive-import-statement/_config.js @@ -11,7 +11,7 @@ export default { before_test() { delete require.cache[path.resolve(__dirname, 'data.js')]; }, - async test({ assert, target, window }) { + async test({ assert, target, window, }) { const btn = target.querySelector('button'); const clickEvent = new window.MouseEvent('click'); diff --git a/test/runtime/samples/reactive-value-assign-property/_config.js b/test/runtime/samples/reactive-value-assign-property/_config.js deleted file mode 100644 index b6d8bf51be..0000000000 --- a/test/runtime/samples/reactive-value-assign-property/_config.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - html: ` -

Hello world!

- ` -}; diff --git a/test/runtime/samples/reactive-value-assign-property/main.svelte b/test/runtime/samples/reactive-value-assign-property/main.svelte deleted file mode 100644 index 58e0fdb03c..0000000000 --- a/test/runtime/samples/reactive-value-assign-property/main.svelte +++ /dev/null @@ -1,6 +0,0 @@ - - -

Hello {user.name}!

\ No newline at end of file diff --git a/test/runtime/samples/self-reference-component/_config.js b/test/runtime/samples/self-reference-component/_config.js index e9cd0ac440..e3e0ad3a4f 100644 --- a/test/runtime/samples/self-reference-component/_config.js +++ b/test/runtime/samples/self-reference-component/_config.js @@ -1,3 +1,3 @@ export default { - html: '5 4 3 2 1 0' + html: '5 4 3 2 1 0', }; \ No newline at end of file diff --git a/test/runtime/samples/set-undefined-attr/_config.js b/test/runtime/samples/set-undefined-attr/_config.js index a0df368e65..b23f51dfc9 100644 --- a/test/runtime/samples/set-undefined-attr/_config.js +++ b/test/runtime/samples/set-undefined-attr/_config.js @@ -1,5 +1,5 @@ export default { html: `
`, - ssrHtml: `
` + ssrHtml: `
`, }; diff --git a/test/runtime/samples/sigil-component-prop/_config.js b/test/runtime/samples/sigil-component-prop/_config.js index 9f84a59994..2f467bb9d4 100644 --- a/test/runtime/samples/sigil-component-prop/_config.js +++ b/test/runtime/samples/sigil-component-prop/_config.js @@ -3,5 +3,5 @@ export default { dev: true }, props: { foo: 'foo' }, - html: `
foo @ foo # foo
` + html: `
foo @ foo # foo
`, }; diff --git a/test/runtime/samples/slot-if-block-update-no-anchor/_config.js b/test/runtime/samples/slot-if-block-update-no-anchor/_config.js index 58d2b49ade..060cbaa619 100644 --- a/test/runtime/samples/slot-if-block-update-no-anchor/_config.js +++ b/test/runtime/samples/slot-if-block-update-no-anchor/_config.js @@ -3,5 +3,5 @@ export default { assert.htmlEqual(target.innerHTML, ``); component.enabled = true; assert.htmlEqual(target.innerHTML, `enabled`); - } + }, }; diff --git a/test/runtime/samples/spread-component-2/_config.js b/test/runtime/samples/spread-component-2/_config.js index e5441bc4b9..6d36e8e60d 100644 --- a/test/runtime/samples/spread-component-2/_config.js +++ b/test/runtime/samples/spread-component-2/_config.js @@ -10,7 +10,7 @@ export default { baz: 50 + 2, qux: 1, quux: 'quuxx' - }] + }], }, html: ` diff --git a/test/runtime/samples/spread-component-dynamic-non-object-multiple-dependencies/_config.js b/test/runtime/samples/spread-component-dynamic-non-object-multiple-dependencies/_config.js index d7ad47b01f..c5e23a023c 100644 --- a/test/runtime/samples/spread-component-dynamic-non-object-multiple-dependencies/_config.js +++ b/test/runtime/samples/spread-component-dynamic-non-object-multiple-dependencies/_config.js @@ -2,7 +2,7 @@ export default { props: { props: { foo: 'lol', - baz: 40 + 2 + baz: 40 + 2, } }, diff --git a/test/runtime/samples/spread-component-dynamic-non-object/_config.js b/test/runtime/samples/spread-component-dynamic-non-object/_config.js index fa8de8ad94..094f2fbb9b 100644 --- a/test/runtime/samples/spread-component-dynamic-non-object/_config.js +++ b/test/runtime/samples/spread-component-dynamic-non-object/_config.js @@ -2,7 +2,7 @@ export default { props: { props: { foo: 'lol', - baz: 40 + 2 + baz: 40 + 2, } }, diff --git a/test/runtime/samples/spread-component-dynamic-undefined/_config.js b/test/runtime/samples/spread-component-dynamic-undefined/_config.js index e7e205a34b..09e5f87c14 100644 --- a/test/runtime/samples/spread-component-dynamic-undefined/_config.js +++ b/test/runtime/samples/spread-component-dynamic-undefined/_config.js @@ -1,17 +1,17 @@ export default { props: { props: { - a: 1 - } + a: 1, + }, }, html: ``, test({ assert, component, target }) { component.props = { - a: 2 + a: 2, }; assert.htmlEqual(target.innerHTML, ``); - } + }, }; diff --git a/test/runtime/samples/spread-component-dynamic/_config.js b/test/runtime/samples/spread-component-dynamic/_config.js index 08df27e1c2..a6bf952ae0 100644 --- a/test/runtime/samples/spread-component-dynamic/_config.js +++ b/test/runtime/samples/spread-component-dynamic/_config.js @@ -1,8 +1,8 @@ export default { props: { props: { - a: 1 - } + a: 1, + }, }, html: ` @@ -11,9 +11,9 @@ export default { test({ assert, component, target }) { component.props = { - a: 2 + a: 2, }; assert.htmlEqual(target.innerHTML, `

a: 2

`); - } + }, }; diff --git a/test/runtime/samples/spread-component-multiple-dependencies/_config.js b/test/runtime/samples/spread-component-multiple-dependencies/_config.js index 070916ebd8..bc05f31130 100644 --- a/test/runtime/samples/spread-component-multiple-dependencies/_config.js +++ b/test/runtime/samples/spread-component-multiple-dependencies/_config.js @@ -6,5 +6,5 @@ export default { target.innerHTML, `a baz` ); - } + }, }; diff --git a/test/runtime/samples/spread-each-component/_config.js b/test/runtime/samples/spread-each-component/_config.js index 66d2381875..bc4d8ee7a4 100644 --- a/test/runtime/samples/spread-each-component/_config.js +++ b/test/runtime/samples/spread-each-component/_config.js @@ -20,5 +20,5 @@ export default {
`); - } + }, }; diff --git a/test/runtime/samples/spread-each-element/_config.js b/test/runtime/samples/spread-each-element/_config.js index 579f840099..5dbd82a892 100644 --- a/test/runtime/samples/spread-each-element/_config.js +++ b/test/runtime/samples/spread-each-element/_config.js @@ -20,5 +20,5 @@ export default {
`); - } + }, }; diff --git a/test/runtime/samples/spread-element-boolean/_config.js b/test/runtime/samples/spread-element-boolean/_config.js index d336dae029..3ee277eec4 100644 --- a/test/runtime/samples/spread-element-boolean/_config.js +++ b/test/runtime/samples/spread-element-boolean/_config.js @@ -21,5 +21,5 @@ export default { `` ); assert.ok(!button.disabled); - } + }, }; diff --git a/test/runtime/samples/spread-element-input-select-multiple/_config.js b/test/runtime/samples/spread-element-input-select-multiple/_config.js deleted file mode 100644 index 1ddcd9eb6d..0000000000 --- a/test/runtime/samples/spread-element-input-select-multiple/_config.js +++ /dev/null @@ -1,39 +0,0 @@ -export default { - async test({ assert, component, target, window }) { - const [input1, input2] = target.querySelectorAll('input'); - const select = target.querySelector('select'); - const [option1, option2] = select.childNodes; - - let selections = Array.from(select.selectedOptions); - assert.equal(selections.length, 2); - assert.ok(selections.includes(option1)); - assert.ok(selections.includes(option2)); - - const event = new window.Event('change'); - - input1.checked = false; - await input1.dispatchEvent(event); - - selections = Array.from(select.selectedOptions); - assert.equal(selections.length, 1); - assert.ok(!selections.includes(option1)); - assert.ok(selections.includes(option2)); - - input2.checked = false; - await input2.dispatchEvent(event); - input1.checked = true; - await input1.dispatchEvent(event); - - selections = Array.from(select.selectedOptions); - assert.equal(selections.length, 1); - assert.ok(selections.includes(option1)); - assert.ok(!selections.includes(option2)); - - component.spread = { value: ['Hello', 'World'] }; - - selections = Array.from(select.selectedOptions); - assert.equal(selections.length, 2); - assert.ok(selections.includes(option1)); - assert.ok(selections.includes(option2)); - } -}; diff --git a/test/runtime/samples/spread-element-input-select-multiple/main.svelte b/test/runtime/samples/spread-element-input-select-multiple/main.svelte deleted file mode 100644 index d2fb12dd20..0000000000 --- a/test/runtime/samples/spread-element-input-select-multiple/main.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/test/runtime/samples/spread-element-input-value-undefined/_config.js b/test/runtime/samples/spread-element-input-value-undefined/_config.js deleted file mode 100644 index d66e215cde..0000000000 --- a/test/runtime/samples/spread-element-input-value-undefined/_config.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - async test({ assert, component, target, window }) { - const input = target.querySelector("input"); - component.value = undefined; - - assert.equal(input.value, "undefined"); - - component.value = "foobar"; - - assert.equal(input.value, "foobar"); - } -}; diff --git a/test/runtime/samples/spread-element-input-value-undefined/main.svelte b/test/runtime/samples/spread-element-input-value-undefined/main.svelte deleted file mode 100644 index 5c9121dc03..0000000000 --- a/test/runtime/samples/spread-element-input-value-undefined/main.svelte +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/test/runtime/samples/spread-element-input-value/InputOne.svelte b/test/runtime/samples/spread-element-input-value/InputOne.svelte deleted file mode 100644 index 92ecb7b9a9..0000000000 --- a/test/runtime/samples/spread-element-input-value/InputOne.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/test/runtime/samples/spread-element-input-value/InputTwo.svelte b/test/runtime/samples/spread-element-input-value/InputTwo.svelte deleted file mode 100644 index 33ec0622a4..0000000000 --- a/test/runtime/samples/spread-element-input-value/InputTwo.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/test/runtime/samples/spread-element-input-value/_config.js b/test/runtime/samples/spread-element-input-value/_config.js deleted file mode 100644 index abb63ceab3..0000000000 --- a/test/runtime/samples/spread-element-input-value/_config.js +++ /dev/null @@ -1,62 +0,0 @@ -export default { - async test({ assert, component, target, window }) { - const [input1, input2] = target.querySelectorAll("input"); - - // we are not able emulate user interaction in jsdom, - // therefore, jsdom could not validate minlength / maxlength - - // we simulate user input with - // setting input.value + dispathEvent - - // and we determine if svelte does not set the `input.value` again by - // spying on the setter of `input.value` - - const spy1 = spyOnValueSetter(input1, input1.value); - const spy2 = spyOnValueSetter(input2, input2.value); - - const event = new window.Event("input"); - - input1.value = '12345'; - spy1.reset(); - await input1.dispatchEvent(event); - - assert.ok(!spy1.isSetCalled()); - - input2.value = '12345'; - spy2.reset(); - await input2.dispatchEvent(event); - - assert.ok(!spy2.isSetCalled()); - - spy1.reset(); - component.val1 = '56789'; - assert.ok(spy1.isSetCalled()); - - spy2.reset(); - component.val2 = '56789'; - assert.ok(spy2.isSetCalled()); - } -}; - -function spyOnValueSetter(input, initialValue) { - let value = initialValue; - let isSet = false; - Object.defineProperty(input, "value", { - get() { - return value; - }, - set(_value) { - value = _value; - isSet = true; - } - }); - - return { - isSetCalled() { - return isSet; - }, - reset() { - isSet = false; - } - }; -} diff --git a/test/runtime/samples/spread-element-input-value/main.svelte b/test/runtime/samples/spread-element-input-value/main.svelte deleted file mode 100644 index bb5f0e00bf..0000000000 --- a/test/runtime/samples/spread-element-input-value/main.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/test/runtime/samples/spread-element-input-value/utils.js b/test/runtime/samples/spread-element-input-value/utils.js deleted file mode 100644 index ee941bda55..0000000000 --- a/test/runtime/samples/spread-element-input-value/utils.js +++ /dev/null @@ -1,6 +0,0 @@ -export function omit(obj, ...keysToOmit) { - return Object.keys(obj).reduce((acc, key) => { - if (keysToOmit.indexOf(key) === -1) acc[key] = obj[key]; - return acc; - }, {}); -} diff --git a/test/runtime/samples/spread-element-multiple-dependencies/_config.js b/test/runtime/samples/spread-element-multiple-dependencies/_config.js index 480eb6621c..69ef1f8ebe 100644 --- a/test/runtime/samples/spread-element-multiple-dependencies/_config.js +++ b/test/runtime/samples/spread-element-multiple-dependencies/_config.js @@ -6,5 +6,5 @@ export default { target.innerHTML, `
` ); - } + }, }; diff --git a/test/runtime/samples/spread-element-multiple/_config.js b/test/runtime/samples/spread-element-multiple/_config.js index 0c04b16d40..641f74d727 100644 --- a/test/runtime/samples/spread-element-multiple/_config.js +++ b/test/runtime/samples/spread-element-multiple/_config.js @@ -2,12 +2,12 @@ export default { props: { a: { 'data-one': 1, - 'data-two': 2 + 'data-two': 2, }, c: { - 'data-b': 'overridden' + 'data-b': 'overridden', }, - d: 'deeeeee' + d: 'deeeeee', }, html: ` @@ -27,5 +27,5 @@ export default { target.innerHTML, `
test
` ); - } + }, }; diff --git a/test/runtime/samples/store-auto-subscribe-event-callback/_config.js b/test/runtime/samples/store-auto-subscribe-event-callback/_config.js index 7897036809..747ed3e4ad 100644 --- a/test/runtime/samples/store-auto-subscribe-event-callback/_config.js +++ b/test/runtime/samples/store-auto-subscribe-event-callback/_config.js @@ -18,5 +18,5 @@ export default { Dirty: true Valid: true `); - } + }, }; diff --git a/test/runtime/samples/store-each-binding-deep/_config.js b/test/runtime/samples/store-each-binding-deep/_config.js deleted file mode 100644 index 70776940dd..0000000000 --- a/test/runtime/samples/store-each-binding-deep/_config.js +++ /dev/null @@ -1,14 +0,0 @@ -export default { - async test({ assert, target, window }) { - const input = target.querySelector('input'); - - const event = new window.Event('input'); - input.value = 'changed'; - await input.dispatchEvent(event); - - assert.htmlEqual(target.innerHTML, ` - -

changed

- `); - } -}; \ No newline at end of file diff --git a/test/runtime/samples/store-each-binding-deep/main.svelte b/test/runtime/samples/store-each-binding-deep/main.svelte deleted file mode 100644 index 8f1cabf5b8..0000000000 --- a/test/runtime/samples/store-each-binding-deep/main.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - -{#each $itemStore.prop.things as thing } - -{/each} - -

{$itemStore.prop.things[0].name}

\ No newline at end of file diff --git a/test/runtime/samples/store-imports-hoisted/_config.js b/test/runtime/samples/store-imports-hoisted/_config.js deleted file mode 100644 index 251866e5ba..0000000000 --- a/test/runtime/samples/store-imports-hoisted/_config.js +++ /dev/null @@ -1,7 +0,0 @@ -export default { - compileOptions: { dev: true }, // tests `@validate_store` code generation - - html: ` -

42

- ` -}; \ No newline at end of file diff --git a/test/runtime/samples/store-imports-hoisted/foo.js b/test/runtime/samples/store-imports-hoisted/foo.js deleted file mode 100644 index 5d15213c3a..0000000000 --- a/test/runtime/samples/store-imports-hoisted/foo.js +++ /dev/null @@ -1,3 +0,0 @@ -import { writable } from '../../../../store'; - -export default writable(42); \ No newline at end of file diff --git a/test/runtime/samples/store-imports-hoisted/main.svelte b/test/runtime/samples/store-imports-hoisted/main.svelte deleted file mode 100644 index 223572962e..0000000000 --- a/test/runtime/samples/store-imports-hoisted/main.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - -

{answer}

diff --git a/test/runtime/samples/store-resubscribe-b/_config.js b/test/runtime/samples/store-resubscribe-b/_config.js index dd11a863f2..d043bbcd87 100644 --- a/test/runtime/samples/store-resubscribe-b/_config.js +++ b/test/runtime/samples/store-resubscribe-b/_config.js @@ -1,3 +1,3 @@ export default { - html: `42` + html: `42`, }; diff --git a/test/runtime/samples/store-resubscribe-export/_config.js b/test/runtime/samples/store-resubscribe-export/_config.js index 3c8473b3e1..b6e6f11344 100644 --- a/test/runtime/samples/store-resubscribe-export/_config.js +++ b/test/runtime/samples/store-resubscribe-export/_config.js @@ -6,14 +6,14 @@ const fakeStore = val => ({ return { unsubscribe: () => { subscribeCalled = true; - } + }, }; - } + }, }); export default { props: { - foo: fakeStore(1) + foo: fakeStore(1), }, html: `

1

@@ -23,5 +23,5 @@ export default { component.foo = fakeStore(5); return assert.htmlEqual(target.innerHTML, `

5

`); - } + }, }; diff --git a/test/runtime/samples/store-resubscribe-observable/_config.js b/test/runtime/samples/store-resubscribe-observable/_config.js index dd11a863f2..d043bbcd87 100644 --- a/test/runtime/samples/store-resubscribe-observable/_config.js +++ b/test/runtime/samples/store-resubscribe-observable/_config.js @@ -1,3 +1,3 @@ export default { - html: `42` + html: `42`, }; diff --git a/test/runtime/samples/store-shadow-scope/_config.js b/test/runtime/samples/store-shadow-scope/_config.js deleted file mode 100644 index e2d6fc7808..0000000000 --- a/test/runtime/samples/store-shadow-scope/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - error: `Stores must be declared at the top level of the component (this may change in a future version of Svelte)` -}; diff --git a/test/runtime/samples/store-shadow-scope/main.svelte b/test/runtime/samples/store-shadow-scope/main.svelte deleted file mode 100644 index 72c4a06c2a..0000000000 --- a/test/runtime/samples/store-shadow-scope/main.svelte +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/test/runtime/samples/store-template-expression-scope/_config.js b/test/runtime/samples/store-template-expression-scope/_config.js deleted file mode 100644 index e2d6fc7808..0000000000 --- a/test/runtime/samples/store-template-expression-scope/_config.js +++ /dev/null @@ -1,3 +0,0 @@ -export default { - error: `Stores must be declared at the top level of the component (this may change in a future version of Svelte)` -}; diff --git a/test/runtime/samples/store-template-expression-scope/main.svelte b/test/runtime/samples/store-template-expression-scope/main.svelte deleted file mode 100644 index 1c9ccb2933..0000000000 --- a/test/runtime/samples/store-template-expression-scope/main.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - - - diff --git a/test/validator/samples/a11y-label-has-associated-control/warnings.json b/test/validator/samples/a11y-label-has-associated-control/warnings.json deleted file mode 100644 index b70a1a47de..0000000000 --- a/test/validator/samples/a11y-label-has-associated-control/warnings.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "code": "a11y-label-has-associated-control", - "end": { - "character": 16, - "column": 16, - "line": 1 - }, - "message": "A11y: A form label must be associated with a control.", - "pos": 0, - "start": { - "character": 0, - "column": 0, - "line": 1 - } - }, - { - "code": "a11y-label-has-associated-control", - "end": { - "character": 149, - "column": 30, - "line": 6 - }, - "message": "A11y: A form label must be associated with a control.", - "pos": 119, - "start": { - "character": 119, - "column": 0, - "line": 6 - } - } -] diff --git a/test/validator/samples/a11y-media-has-caption/input.svelte b/test/validator/samples/a11y-media-has-caption/input.svelte deleted file mode 100644 index 105269cddb..0000000000 --- a/test/validator/samples/a11y-media-has-caption/input.svelte +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/test/validator/samples/a11y-media-has-caption/warnings.json b/test/validator/samples/a11y-media-has-caption/warnings.json deleted file mode 100644 index a8c894b1d4..0000000000 --- a/test/validator/samples/a11y-media-has-caption/warnings.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "code": "a11y-media-has-caption", - "end": { - "character": 55, - "column": 15, - "line": 2 - }, - "message": "A11y: Media elements must have a ", - "pos": 40, - "start": { - "character": 40, - "column": 0, - "line": 2 - } - }, - { - "code": "a11y-media-has-caption", - "end": { - "character": 80, - "column": 24, - "line": 3 - }, - "message": "A11y: Media elements must have a ", - "pos": 56, - "start": { - "character": 56, - "column": 0, - "line": 3 - } - } -] diff --git a/test/vars/samples/assumed-global/_config.js b/test/vars/samples/assumed-global/_config.js index 782760bb8b..2b84e83f12 100644 --- a/test/vars/samples/assumed-global/_config.js +++ b/test/vars/samples/assumed-global/_config.js @@ -1,5 +1,5 @@ export default { test(assert, vars) { assert.deepEqual(vars, []); - } + }, }; diff --git a/test/vars/samples/duplicate-globals/_config.js b/test/vars/samples/duplicate-globals/_config.js index 782760bb8b..2b84e83f12 100644 --- a/test/vars/samples/duplicate-globals/_config.js +++ b/test/vars/samples/duplicate-globals/_config.js @@ -1,5 +1,5 @@ export default { test(assert, vars) { assert.deepEqual(vars, []); - } + }, }; diff --git a/test/vars/samples/duplicate-non-hoistable/_config.js b/test/vars/samples/duplicate-non-hoistable/_config.js index bd70e29800..4ebc5b00cf 100644 --- a/test/vars/samples/duplicate-non-hoistable/_config.js +++ b/test/vars/samples/duplicate-non-hoistable/_config.js @@ -13,5 +13,5 @@ export default { writable: true } ]); - } + }, }; diff --git a/test/vars/samples/duplicate-vars/_config.js b/test/vars/samples/duplicate-vars/_config.js index 749a0c59af..eb10c44a9a 100644 --- a/test/vars/samples/duplicate-vars/_config.js +++ b/test/vars/samples/duplicate-vars/_config.js @@ -24,5 +24,5 @@ export default { writable: true } ]); - } + }, }; diff --git a/test/vars/samples/implicit-reactive/_config.js b/test/vars/samples/implicit-reactive/_config.js index a8bf261d4f..770de590e6 100644 --- a/test/vars/samples/implicit-reactive/_config.js +++ b/test/vars/samples/implicit-reactive/_config.js @@ -24,5 +24,5 @@ export default { writable: true } ]); - } + }, }; diff --git a/test/vars/samples/referenced-from-script/_config.js b/test/vars/samples/referenced-from-script/_config.js index ec068cb1d7..191a52f8cc 100644 --- a/test/vars/samples/referenced-from-script/_config.js +++ b/test/vars/samples/referenced-from-script/_config.js @@ -10,7 +10,7 @@ export default { reassigned: false, referenced: false, writable: false, - referenced_from_script: false + referenced_from_script: false, }, { name: 'j', @@ -21,7 +21,7 @@ export default { reassigned: false, referenced: false, writable: false, - referenced_from_script: false + referenced_from_script: false, }, { name: 'k', @@ -32,7 +32,7 @@ export default { reassigned: false, referenced: false, writable: false, - referenced_from_script: false + referenced_from_script: false, }, { name: 'a', @@ -43,7 +43,7 @@ export default { reassigned: true, referenced: false, writable: true, - referenced_from_script: true + referenced_from_script: true, }, { name: 'b', @@ -54,7 +54,7 @@ export default { reassigned: false, referenced: false, writable: true, - referenced_from_script: true + referenced_from_script: true, }, { name: 'c', @@ -65,7 +65,7 @@ export default { reassigned: false, referenced: false, writable: true, - referenced_from_script: true + referenced_from_script: true, }, { name: 'd', @@ -76,7 +76,7 @@ export default { reassigned: false, referenced: false, writable: true, - referenced_from_script: true + referenced_from_script: true, }, { name: 'e', @@ -87,7 +87,7 @@ export default { reassigned: false, referenced: false, writable: true, - referenced_from_script: false + referenced_from_script: false, }, { name: 'f', @@ -98,7 +98,7 @@ export default { reassigned: false, referenced: false, writable: true, - referenced_from_script: false + referenced_from_script: false, }, { name: 'g', @@ -109,7 +109,7 @@ export default { reassigned: false, referenced: false, writable: true, - referenced_from_script: true + referenced_from_script: true, }, { name: 'h', @@ -120,7 +120,7 @@ export default { reassigned: true, referenced: false, writable: true, - referenced_from_script: true + referenced_from_script: true, }, { name: 'foo', @@ -131,7 +131,7 @@ export default { reassigned: false, referenced: false, writable: false, - referenced_from_script: false + referenced_from_script: false, }, { name: 'l', @@ -142,7 +142,7 @@ export default { reassigned: false, referenced: false, referenced_from_script: true, - writable: false + writable: false, }, { name: 'bar', @@ -153,8 +153,8 @@ export default { reassigned: false, referenced: false, writable: false, - referenced_from_script: false - } + referenced_from_script: false, + }, ]); - } + }, }; diff --git a/test/vars/samples/template-references/_config.js b/test/vars/samples/template-references/_config.js index 34c07e19e0..674e351517 100644 --- a/test/vars/samples/template-references/_config.js +++ b/test/vars/samples/template-references/_config.js @@ -10,7 +10,7 @@ export default { reassigned: false, referenced: true, referenced_from_script: false, - writable: false + writable: false, }, { export_name: null, @@ -21,7 +21,7 @@ export default { reassigned: false, referenced: true, referenced_from_script: false, - writable: true + writable: true, }, { export_name: null, @@ -32,8 +32,8 @@ export default { reassigned: false, referenced: true, referenced_from_script: false, - writable: true - } + writable: true, + }, ]); - } + }, }; diff --git a/test/vars/samples/undeclared/_config.js b/test/vars/samples/undeclared/_config.js index 782760bb8b..2b84e83f12 100644 --- a/test/vars/samples/undeclared/_config.js +++ b/test/vars/samples/undeclared/_config.js @@ -1,5 +1,5 @@ export default { test(assert, vars) { assert.deepEqual(vars, []); - } + }, };