From 089c590deec245d2315db1a574164a93a1192ef4 Mon Sep 17 00:00:00 2001 From: Unknow <542002829@qq.com> Date: Fri, 20 Mar 2026 19:52:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A1=ABFix:=20Entering=20real=20cookie?= =?UTF-8?q?s=20resolves=20403=20errors?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/fetcher.js | 2 +- node_modules/.bin/acorn | 16 + node_modules/.bin/acorn.cmd | 17 + node_modules/.bin/acorn.ps1 | 28 + node_modules/.bin/esbuild | 16 + node_modules/.bin/esbuild.cmd | 17 + node_modules/.bin/esbuild.ps1 | 28 + node_modules/.bin/nanoid | 16 + node_modules/.bin/nanoid.cmd | 17 + node_modules/.bin/nanoid.ps1 | 28 + node_modules/.bin/node-which | 16 + node_modules/.bin/node-which.cmd | 17 + node_modules/.bin/node-which.ps1 | 28 + node_modules/.bin/parser | 16 + node_modules/.bin/parser.cmd | 17 + node_modules/.bin/parser.ps1 | 28 + node_modules/.bin/rollup | 16 + node_modules/.bin/rollup.cmd | 17 + node_modules/.bin/rollup.ps1 | 28 + node_modules/.bin/semver | 16 + node_modules/.bin/semver.cmd | 17 + node_modules/.bin/semver.ps1 | 28 + node_modules/.bin/vite | 16 + node_modules/.bin/vite-node | 16 + node_modules/.bin/vite-node.cmd | 17 + node_modules/.bin/vite-node.ps1 | 28 + node_modules/.bin/vite.cmd | 17 + node_modules/.bin/vite.ps1 | 28 + node_modules/.bin/vitest | 16 + node_modules/.bin/vitest.cmd | 17 + node_modules/.bin/vitest.ps1 | 28 + node_modules/.bin/why-is-node-running | 16 + node_modules/.bin/why-is-node-running.cmd | 17 + node_modules/.bin/why-is-node-running.ps1 | 28 + node_modules/.package-lock.json | 3058 + node_modules/@ampproject/remapping/LICENSE | 202 + node_modules/@ampproject/remapping/README.md | 218 + .../@ampproject/remapping/dist/remapping.mjs | 197 + .../remapping/dist/remapping.mjs.map | 1 + .../remapping/dist/remapping.umd.js | 202 + .../remapping/dist/remapping.umd.js.map | 1 + .../dist/types/build-source-map-tree.d.ts | 14 + .../remapping/dist/types/remapping.d.ts | 20 + .../remapping/dist/types/source-map-tree.d.ts | 45 + .../remapping/dist/types/source-map.d.ts | 18 + .../remapping/dist/types/types.d.ts | 15 + .../@ampproject/remapping/package.json | 75 + .../@babel/helper-string-parser/LICENSE | 22 + .../@babel/helper-string-parser/README.md | 19 + .../@babel/helper-string-parser/lib/index.js | 295 + .../helper-string-parser/lib/index.js.map | 1 + .../@babel/helper-string-parser/package.json | 31 + .../helper-validator-identifier/LICENSE | 22 + .../helper-validator-identifier/README.md | 19 + .../lib/identifier.js | 70 + .../lib/identifier.js.map | 1 + .../helper-validator-identifier/lib/index.js | 57 + .../lib/index.js.map | 1 + .../lib/keyword.js | 35 + .../lib/keyword.js.map | 1 + .../helper-validator-identifier/package.json | 31 + node_modules/@babel/parser/CHANGELOG.md | 1073 + node_modules/@babel/parser/LICENSE | 19 + node_modules/@babel/parser/README.md | 19 + .../@babel/parser/bin/babel-parser.js | 15 + node_modules/@babel/parser/lib/index.js | 14582 ++++ node_modules/@babel/parser/lib/index.js.map | 1 + node_modules/@babel/parser/package.json | 50 + .../@babel/parser/typings/babel-parser.d.ts | 262 + node_modules/@babel/types/LICENSE | 22 + node_modules/@babel/types/README.md | 19 + .../@babel/types/lib/asserts/assertNode.js | 16 + .../types/lib/asserts/assertNode.js.map | 1 + .../types/lib/asserts/generated/index.js | 1251 + .../types/lib/asserts/generated/index.js.map | 1 + .../types/lib/ast-types/generated/index.js | 3 + .../lib/ast-types/generated/index.js.map | 1 + .../lib/builders/flow/createFlowUnionType.js | 18 + .../builders/flow/createFlowUnionType.js.map | 1 + .../flow/createTypeAnnotationBasedOnTypeof.js | 31 + .../createTypeAnnotationBasedOnTypeof.js.map | 1 + .../types/lib/builders/generated/index.js | 29 + .../types/lib/builders/generated/index.js.map | 1 + .../types/lib/builders/generated/lowercase.js | 2902 + .../lib/builders/generated/lowercase.js.map | 1 + .../types/lib/builders/generated/uppercase.js | 272 + .../lib/builders/generated/uppercase.js.map | 1 + .../@babel/types/lib/builders/productions.js | 12 + .../types/lib/builders/productions.js.map | 1 + .../types/lib/builders/react/buildChildren.js | 24 + .../lib/builders/react/buildChildren.js.map | 1 + .../builders/typescript/createTSUnionType.js | 22 + .../typescript/createTSUnionType.js.map | 1 + .../@babel/types/lib/builders/validateNode.js | 21 + .../types/lib/builders/validateNode.js.map | 1 + node_modules/@babel/types/lib/clone/clone.js | 12 + .../@babel/types/lib/clone/clone.js.map | 1 + .../@babel/types/lib/clone/cloneDeep.js | 12 + .../@babel/types/lib/clone/cloneDeep.js.map | 1 + .../types/lib/clone/cloneDeepWithoutLoc.js | 12 + .../lib/clone/cloneDeepWithoutLoc.js.map | 1 + .../@babel/types/lib/clone/cloneNode.js | 107 + .../@babel/types/lib/clone/cloneNode.js.map | 1 + .../@babel/types/lib/clone/cloneWithoutLoc.js | 12 + .../types/lib/clone/cloneWithoutLoc.js.map | 1 + .../@babel/types/lib/comments/addComment.js | 15 + .../types/lib/comments/addComment.js.map | 1 + .../@babel/types/lib/comments/addComments.js | 22 + .../types/lib/comments/addComments.js.map | 1 + .../lib/comments/inheritInnerComments.js | 12 + .../lib/comments/inheritInnerComments.js.map | 1 + .../lib/comments/inheritLeadingComments.js | 12 + .../comments/inheritLeadingComments.js.map | 1 + .../lib/comments/inheritTrailingComments.js | 12 + .../comments/inheritTrailingComments.js.map | 1 + .../types/lib/comments/inheritsComments.js | 17 + .../lib/comments/inheritsComments.js.map | 1 + .../types/lib/comments/removeComments.js | 15 + .../types/lib/comments/removeComments.js.map | 1 + .../types/lib/constants/generated/index.js | 60 + .../lib/constants/generated/index.js.map | 1 + .../@babel/types/lib/constants/index.js | 31 + .../@babel/types/lib/constants/index.js.map | 1 + .../types/lib/converters/ensureBlock.js | 14 + .../types/lib/converters/ensureBlock.js.map | 1 + .../converters/gatherSequenceExpressions.js | 65 + .../gatherSequenceExpressions.js.map | 1 + .../lib/converters/toBindingIdentifierName.js | 14 + .../converters/toBindingIdentifierName.js.map | 1 + .../@babel/types/lib/converters/toBlock.js | 29 + .../types/lib/converters/toBlock.js.map | 1 + .../types/lib/converters/toComputedKey.js | 14 + .../types/lib/converters/toComputedKey.js.map | 1 + .../types/lib/converters/toExpression.js | 28 + .../types/lib/converters/toExpression.js.map | 1 + .../types/lib/converters/toIdentifier.js | 25 + .../types/lib/converters/toIdentifier.js.map | 1 + .../@babel/types/lib/converters/toKeyAlias.js | 38 + .../types/lib/converters/toKeyAlias.js.map | 1 + .../lib/converters/toSequenceExpression.js | 19 + .../converters/toSequenceExpression.js.map | 1 + .../types/lib/converters/toStatement.js | 39 + .../types/lib/converters/toStatement.js.map | 1 + .../types/lib/converters/valueToNode.js | 89 + .../types/lib/converters/valueToNode.js.map | 1 + .../@babel/types/lib/definitions/core.js | 1725 + .../@babel/types/lib/definitions/core.js.map | 1 + .../lib/definitions/deprecated-aliases.js | 11 + .../lib/definitions/deprecated-aliases.js.map | 1 + .../types/lib/definitions/experimental.js | 124 + .../types/lib/definitions/experimental.js.map | 1 + .../@babel/types/lib/definitions/flow.js | 495 + .../@babel/types/lib/definitions/flow.js.map | 1 + .../@babel/types/lib/definitions/index.js | 106 + .../@babel/types/lib/definitions/index.js.map | 1 + .../@babel/types/lib/definitions/jsx.js | 157 + .../@babel/types/lib/definitions/jsx.js.map | 1 + .../@babel/types/lib/definitions/misc.js | 31 + .../@babel/types/lib/definitions/misc.js.map | 1 + .../types/lib/definitions/placeholders.js | 27 + .../types/lib/definitions/placeholders.js.map | 1 + .../types/lib/definitions/typescript.js | 528 + .../types/lib/definitions/typescript.js.map | 1 + .../@babel/types/lib/definitions/utils.js | 296 + .../@babel/types/lib/definitions/utils.js.map | 1 + .../@babel/types/lib/index-legacy.d.ts | 2797 + node_modules/@babel/types/lib/index.d.ts | 3617 + node_modules/@babel/types/lib/index.js | 582 + node_modules/@babel/types/lib/index.js.flow | 2650 + node_modules/@babel/types/lib/index.js.map | 1 + .../modifications/appendToMemberExpression.js | 15 + .../appendToMemberExpression.js.map | 1 + .../flow/removeTypeDuplicates.js | 65 + .../flow/removeTypeDuplicates.js.map | 1 + .../types/lib/modifications/inherits.js | 28 + .../types/lib/modifications/inherits.js.map | 1 + .../prependToMemberExpression.js | 17 + .../prependToMemberExpression.js.map | 1 + .../lib/modifications/removeProperties.js | 24 + .../lib/modifications/removeProperties.js.map | 1 + .../lib/modifications/removePropertiesDeep.js | 14 + .../modifications/removePropertiesDeep.js.map | 1 + .../typescript/removeTypeDuplicates.js | 66 + .../typescript/removeTypeDuplicates.js.map | 1 + .../retrievers/getAssignmentIdentifiers.js | 48 + .../getAssignmentIdentifiers.js.map | 1 + .../lib/retrievers/getBindingIdentifiers.js | 102 + .../retrievers/getBindingIdentifiers.js.map | 1 + .../types/lib/retrievers/getFunctionName.js | 63 + .../lib/retrievers/getFunctionName.js.map | 1 + .../retrievers/getOuterBindingIdentifiers.js | 13 + .../getOuterBindingIdentifiers.js.map | 1 + .../@babel/types/lib/traverse/traverse.js | 50 + .../@babel/types/lib/traverse/traverse.js.map | 1 + .../@babel/types/lib/traverse/traverseFast.js | 40 + .../types/lib/traverse/traverseFast.js.map | 1 + .../types/lib/utils/deprecationWarning.js | 44 + .../types/lib/utils/deprecationWarning.js.map | 1 + .../@babel/types/lib/utils/inherit.js | 13 + .../@babel/types/lib/utils/inherit.js.map | 1 + .../react/cleanJSXElementLiteralChild.js | 40 + .../react/cleanJSXElementLiteralChild.js.map | 1 + .../@babel/types/lib/utils/shallowEqual.js | 17 + .../types/lib/utils/shallowEqual.js.map | 1 + .../validators/buildMatchMemberExpression.js | 13 + .../buildMatchMemberExpression.js.map | 1 + .../types/lib/validators/generated/index.js | 2797 + .../lib/validators/generated/index.js.map | 1 + .../@babel/types/lib/validators/is.js | 27 + .../@babel/types/lib/validators/is.js.map | 1 + .../@babel/types/lib/validators/isBinding.js | 27 + .../types/lib/validators/isBinding.js.map | 1 + .../types/lib/validators/isBlockScoped.js | 13 + .../types/lib/validators/isBlockScoped.js.map | 1 + .../types/lib/validators/isImmutable.js | 21 + .../types/lib/validators/isImmutable.js.map | 1 + .../@babel/types/lib/validators/isLet.js | 13 + .../@babel/types/lib/validators/isLet.js.map | 1 + .../@babel/types/lib/validators/isNode.js | 12 + .../@babel/types/lib/validators/isNode.js.map | 1 + .../types/lib/validators/isNodesEquivalent.js | 57 + .../lib/validators/isNodesEquivalent.js.map | 1 + .../types/lib/validators/isPlaceholderType.js | 15 + .../lib/validators/isPlaceholderType.js.map | 1 + .../types/lib/validators/isReferenced.js | 96 + .../types/lib/validators/isReferenced.js.map | 1 + .../@babel/types/lib/validators/isScope.js | 18 + .../types/lib/validators/isScope.js.map | 1 + .../lib/validators/isSpecifierDefault.js | 14 + .../lib/validators/isSpecifierDefault.js.map | 1 + .../@babel/types/lib/validators/isType.js | 17 + .../@babel/types/lib/validators/isType.js.map | 1 + .../lib/validators/isValidES3Identifier.js | 13 + .../validators/isValidES3Identifier.js.map | 1 + .../types/lib/validators/isValidIdentifier.js | 18 + .../lib/validators/isValidIdentifier.js.map | 1 + .../@babel/types/lib/validators/isVar.js | 15 + .../@babel/types/lib/validators/isVar.js.map | 1 + .../types/lib/validators/matchesPattern.js | 44 + .../lib/validators/matchesPattern.js.map | 1 + .../types/lib/validators/react/isCompatTag.js | 11 + .../lib/validators/react/isCompatTag.js.map | 1 + .../lib/validators/react/isReactComponent.js | 11 + .../validators/react/isReactComponent.js.map | 1 + .../@babel/types/lib/validators/validate.js | 42 + .../types/lib/validators/validate.js.map | 1 + node_modules/@babel/types/package.json | 39 + node_modules/@bcoe/v8-coverage/.editorconfig | 9 + node_modules/@bcoe/v8-coverage/.gitattributes | 2 + node_modules/@bcoe/v8-coverage/CHANGELOG.md | 250 + node_modules/@bcoe/v8-coverage/LICENSE.md | 21 + node_modules/@bcoe/v8-coverage/LICENSE.txt | 14 + node_modules/@bcoe/v8-coverage/README.md | 11 + .../@bcoe/v8-coverage/dist/lib/CHANGELOG.md | 250 + .../@bcoe/v8-coverage/dist/lib/LICENSE.md | 21 + .../@bcoe/v8-coverage/dist/lib/README.md | 11 + .../@bcoe/v8-coverage/dist/lib/_src/ascii.ts | 146 + .../@bcoe/v8-coverage/dist/lib/_src/clone.ts | 70 + .../v8-coverage/dist/lib/_src/compare.ts | 40 + .../@bcoe/v8-coverage/dist/lib/_src/index.ts | 6 + .../@bcoe/v8-coverage/dist/lib/_src/merge.ts | 343 + .../v8-coverage/dist/lib/_src/normalize.ts | 84 + .../v8-coverage/dist/lib/_src/range-tree.ts | 156 + .../@bcoe/v8-coverage/dist/lib/_src/types.ts | 26 + .../@bcoe/v8-coverage/dist/lib/ascii.d.ts | 12 + .../@bcoe/v8-coverage/dist/lib/ascii.js | 136 + .../@bcoe/v8-coverage/dist/lib/ascii.mjs | 130 + .../@bcoe/v8-coverage/dist/lib/clone.d.ts | 29 + .../@bcoe/v8-coverage/dist/lib/clone.js | 70 + .../@bcoe/v8-coverage/dist/lib/clone.mjs | 64 + .../@bcoe/v8-coverage/dist/lib/compare.d.ts | 21 + .../@bcoe/v8-coverage/dist/lib/compare.js | 46 + .../@bcoe/v8-coverage/dist/lib/compare.mjs | 41 + .../@bcoe/v8-coverage/dist/lib/index.d.ts | 6 + .../@bcoe/v8-coverage/dist/lib/index.js | 24 + .../@bcoe/v8-coverage/dist/lib/index.mjs | 7 + .../@bcoe/v8-coverage/dist/lib/merge.d.ts | 39 + .../@bcoe/v8-coverage/dist/lib/merge.js | 302 + .../@bcoe/v8-coverage/dist/lib/merge.mjs | 297 + .../@bcoe/v8-coverage/dist/lib/normalize.d.ts | 53 + .../@bcoe/v8-coverage/dist/lib/normalize.js | 87 + .../@bcoe/v8-coverage/dist/lib/normalize.mjs | 79 + .../@bcoe/v8-coverage/dist/lib/package.json | 44 + .../v8-coverage/dist/lib/range-tree.d.ts | 24 + .../@bcoe/v8-coverage/dist/lib/range-tree.js | 139 + .../@bcoe/v8-coverage/dist/lib/range-tree.mjs | 136 + .../@bcoe/v8-coverage/dist/lib/tsconfig.json | 62 + .../@bcoe/v8-coverage/dist/lib/types.d.ts | 22 + .../@bcoe/v8-coverage/dist/lib/types.js | 4 + .../@bcoe/v8-coverage/dist/lib/types.mjs | 3 + node_modules/@bcoe/v8-coverage/gulpfile.ts | 95 + node_modules/@bcoe/v8-coverage/package.json | 48 + .../@bcoe/v8-coverage/src/lib/ascii.ts | 146 + .../@bcoe/v8-coverage/src/lib/clone.ts | 70 + .../@bcoe/v8-coverage/src/lib/compare.ts | 40 + .../@bcoe/v8-coverage/src/lib/index.ts | 6 + .../@bcoe/v8-coverage/src/lib/merge.ts | 343 + .../@bcoe/v8-coverage/src/lib/normalize.ts | 84 + .../@bcoe/v8-coverage/src/lib/range-tree.ts | 156 + .../@bcoe/v8-coverage/src/lib/types.ts | 26 + .../@bcoe/v8-coverage/src/test/merge.spec.ts | 280 + node_modules/@bcoe/v8-coverage/tsconfig.json | 59 + node_modules/@esbuild/win32-x64/README.md | 3 + node_modules/@esbuild/win32-x64/esbuild.exe | Bin 0 -> 9913856 bytes node_modules/@esbuild/win32-x64/package.json | 20 + node_modules/@istanbuljs/schema/CHANGELOG.md | 44 + node_modules/@istanbuljs/schema/LICENSE | 21 + node_modules/@istanbuljs/schema/README.md | 30 + .../@istanbuljs/schema/default-exclude.js | 22 + .../@istanbuljs/schema/default-extension.js | 10 + node_modules/@istanbuljs/schema/index.js | 466 + node_modules/@istanbuljs/schema/package.json | 30 + node_modules/@jest/schemas/LICENSE | 21 + node_modules/@jest/schemas/README.md | 3 + node_modules/@jest/schemas/build/index.d.ts | 63 + node_modules/@jest/schemas/build/index.js | 60 + node_modules/@jest/schemas/package.json | 29 + node_modules/@jridgewell/gen-mapping/LICENSE | 19 + .../@jridgewell/gen-mapping/README.md | 227 + .../gen-mapping/dist/gen-mapping.mjs | 292 + .../gen-mapping/dist/gen-mapping.mjs.map | 6 + .../gen-mapping/dist/gen-mapping.umd.js | 358 + .../gen-mapping/dist/gen-mapping.umd.js.map | 6 + .../gen-mapping/dist/types/gen-mapping.d.ts | 88 + .../gen-mapping/dist/types/set-array.d.ts | 32 + .../dist/types/sourcemap-segment.d.ts | 12 + .../gen-mapping/dist/types/types.d.ts | 43 + .../@jridgewell/gen-mapping/package.json | 67 + .../gen-mapping/src/gen-mapping.ts | 614 + .../@jridgewell/gen-mapping/src/set-array.ts | 82 + .../gen-mapping/src/sourcemap-segment.ts | 16 + .../@jridgewell/gen-mapping/src/types.ts | 61 + .../gen-mapping/types/gen-mapping.d.cts | 89 + .../gen-mapping/types/gen-mapping.d.cts.map | 1 + .../gen-mapping/types/gen-mapping.d.mts | 89 + .../gen-mapping/types/gen-mapping.d.mts.map | 1 + .../gen-mapping/types/set-array.d.cts | 33 + .../gen-mapping/types/set-array.d.cts.map | 1 + .../gen-mapping/types/set-array.d.mts | 33 + .../gen-mapping/types/set-array.d.mts.map | 1 + .../gen-mapping/types/sourcemap-segment.d.cts | 13 + .../types/sourcemap-segment.d.cts.map | 1 + .../gen-mapping/types/sourcemap-segment.d.mts | 13 + .../types/sourcemap-segment.d.mts.map | 1 + .../@jridgewell/gen-mapping/types/types.d.cts | 44 + .../gen-mapping/types/types.d.cts.map | 1 + .../@jridgewell/gen-mapping/types/types.d.mts | 44 + .../gen-mapping/types/types.d.mts.map | 1 + node_modules/@jridgewell/resolve-uri/LICENSE | 19 + .../@jridgewell/resolve-uri/README.md | 40 + .../resolve-uri/dist/resolve-uri.mjs | 232 + .../resolve-uri/dist/resolve-uri.mjs.map | 1 + .../resolve-uri/dist/resolve-uri.umd.js | 240 + .../resolve-uri/dist/resolve-uri.umd.js.map | 1 + .../resolve-uri/dist/types/resolve-uri.d.ts | 4 + .../@jridgewell/resolve-uri/package.json | 69 + .../@jridgewell/sourcemap-codec/LICENSE | 19 + .../@jridgewell/sourcemap-codec/README.md | 264 + .../sourcemap-codec/dist/sourcemap-codec.mjs | 423 + .../dist/sourcemap-codec.mjs.map | 6 + .../dist/sourcemap-codec.umd.js | 464 + .../dist/sourcemap-codec.umd.js.map | 6 + .../@jridgewell/sourcemap-codec/package.json | 63 + .../@jridgewell/sourcemap-codec/src/scopes.ts | 345 + .../sourcemap-codec/src/sourcemap-codec.ts | 111 + .../sourcemap-codec/src/strings.ts | 65 + .../@jridgewell/sourcemap-codec/src/vlq.ts | 55 + .../sourcemap-codec/types/scopes.d.cts | 50 + .../sourcemap-codec/types/scopes.d.cts.map | 1 + .../sourcemap-codec/types/scopes.d.mts | 50 + .../sourcemap-codec/types/scopes.d.mts.map | 1 + .../types/sourcemap-codec.d.cts | 9 + .../types/sourcemap-codec.d.cts.map | 1 + .../types/sourcemap-codec.d.mts | 9 + .../types/sourcemap-codec.d.mts.map | 1 + .../sourcemap-codec/types/strings.d.cts | 16 + .../sourcemap-codec/types/strings.d.cts.map | 1 + .../sourcemap-codec/types/strings.d.mts | 16 + .../sourcemap-codec/types/strings.d.mts.map | 1 + .../sourcemap-codec/types/vlq.d.cts | 7 + .../sourcemap-codec/types/vlq.d.cts.map | 1 + .../sourcemap-codec/types/vlq.d.mts | 7 + .../sourcemap-codec/types/vlq.d.mts.map | 1 + .../@jridgewell/trace-mapping/LICENSE | 19 + .../@jridgewell/trace-mapping/README.md | 348 + .../trace-mapping/dist/trace-mapping.mjs | 493 + .../trace-mapping/dist/trace-mapping.mjs.map | 6 + .../trace-mapping/dist/trace-mapping.umd.js | 559 + .../dist/trace-mapping.umd.js.map | 6 + .../@jridgewell/trace-mapping/package.json | 67 + .../trace-mapping/src/binary-search.ts | 115 + .../trace-mapping/src/by-source.ts | 41 + .../trace-mapping/src/flatten-map.ts | 192 + .../@jridgewell/trace-mapping/src/resolve.ts | 16 + .../@jridgewell/trace-mapping/src/sort.ts | 45 + .../trace-mapping/src/sourcemap-segment.ts | 23 + .../trace-mapping/src/strip-filename.ts | 8 + .../trace-mapping/src/trace-mapping.ts | 502 + .../@jridgewell/trace-mapping/src/types.ts | 114 + .../trace-mapping/types/binary-search.d.cts | 33 + .../types/binary-search.d.cts.map | 1 + .../trace-mapping/types/binary-search.d.mts | 33 + .../types/binary-search.d.mts.map | 1 + .../trace-mapping/types/by-source.d.cts | 4 + .../trace-mapping/types/by-source.d.cts.map | 1 + .../trace-mapping/types/by-source.d.mts | 4 + .../trace-mapping/types/by-source.d.mts.map | 1 + .../trace-mapping/types/flatten-map.d.cts | 9 + .../trace-mapping/types/flatten-map.d.cts.map | 1 + .../trace-mapping/types/flatten-map.d.mts | 9 + .../trace-mapping/types/flatten-map.d.mts.map | 1 + .../trace-mapping/types/resolve.d.cts | 4 + .../trace-mapping/types/resolve.d.cts.map | 1 + .../trace-mapping/types/resolve.d.mts | 4 + .../trace-mapping/types/resolve.d.mts.map | 1 + .../trace-mapping/types/sort.d.cts | 4 + .../trace-mapping/types/sort.d.cts.map | 1 + .../trace-mapping/types/sort.d.mts | 4 + .../trace-mapping/types/sort.d.mts.map | 1 + .../types/sourcemap-segment.d.cts | 17 + .../types/sourcemap-segment.d.cts.map | 1 + .../types/sourcemap-segment.d.mts | 17 + .../types/sourcemap-segment.d.mts.map | 1 + .../trace-mapping/types/strip-filename.d.cts | 5 + .../types/strip-filename.d.cts.map | 1 + .../trace-mapping/types/strip-filename.d.mts | 5 + .../types/strip-filename.d.mts.map | 1 + .../trace-mapping/types/trace-mapping.d.cts | 80 + .../types/trace-mapping.d.cts.map | 1 + .../trace-mapping/types/trace-mapping.d.mts | 80 + .../types/trace-mapping.d.mts.map | 1 + .../trace-mapping/types/types.d.cts | 107 + .../trace-mapping/types/types.d.cts.map | 1 + .../trace-mapping/types/types.d.mts | 107 + .../trace-mapping/types/types.d.mts.map | 1 + .../@rollup/rollup-win32-x64-gnu/README.md | 3 + .../@rollup/rollup-win32-x64-gnu/package.json | 22 + .../rollup.win32-x64-gnu.node | Bin 0 -> 1972736 bytes .../@rollup/rollup-win32-x64-msvc/README.md | 3 + .../rollup-win32-x64-msvc/package.json | 22 + .../rollup.win32-x64-msvc.node | Bin 0 -> 2527232 bytes .../@sinclair/typebox/compiler/compiler.d.ts | 35 + .../@sinclair/typebox/compiler/compiler.js | 577 + .../@sinclair/typebox/compiler/index.d.ts | 2 + .../@sinclair/typebox/compiler/index.js | 47 + .../@sinclair/typebox/errors/errors.d.ts | 88 + .../@sinclair/typebox/errors/errors.js | 609 + .../@sinclair/typebox/errors/index.d.ts | 1 + .../@sinclair/typebox/errors/index.js | 44 + node_modules/@sinclair/typebox/license | 23 + node_modules/@sinclair/typebox/package.json | 49 + node_modules/@sinclair/typebox/readme.md | 1424 + .../@sinclair/typebox/system/index.d.ts | 1 + .../@sinclair/typebox/system/index.js | 44 + .../@sinclair/typebox/system/system.d.ts | 26 + .../@sinclair/typebox/system/system.js | 90 + node_modules/@sinclair/typebox/typebox.d.ts | 717 + node_modules/@sinclair/typebox/typebox.js | 2220 + .../@sinclair/typebox/value/cast.d.ts | 30 + node_modules/@sinclair/typebox/value/cast.js | 372 + .../@sinclair/typebox/value/check.d.ts | 12 + node_modules/@sinclair/typebox/value/check.js | 484 + .../@sinclair/typebox/value/clone.d.ts | 3 + node_modules/@sinclair/typebox/value/clone.js | 71 + .../@sinclair/typebox/value/convert.d.ts | 13 + .../@sinclair/typebox/value/convert.js | 372 + .../@sinclair/typebox/value/create.d.ts | 26 + .../@sinclair/typebox/value/create.js | 480 + .../@sinclair/typebox/value/delta.d.ts | 43 + node_modules/@sinclair/typebox/value/delta.js | 204 + .../@sinclair/typebox/value/equal.d.ts | 3 + node_modules/@sinclair/typebox/value/equal.js | 80 + .../@sinclair/typebox/value/hash.d.ts | 8 + node_modules/@sinclair/typebox/value/hash.js | 208 + .../@sinclair/typebox/value/index.d.ts | 6 + node_modules/@sinclair/typebox/value/index.js | 56 + node_modules/@sinclair/typebox/value/is.d.ts | 11 + node_modules/@sinclair/typebox/value/is.js | 53 + .../@sinclair/typebox/value/mutate.d.ts | 13 + .../@sinclair/typebox/value/mutate.js | 121 + .../@sinclair/typebox/value/pointer.d.ts | 24 + .../@sinclair/typebox/value/pointer.js | 142 + .../@sinclair/typebox/value/value.d.ts | 39 + node_modules/@sinclair/typebox/value/value.js | 99 + node_modules/@types/estree/LICENSE | 21 + node_modules/@types/estree/README.md | 15 + node_modules/@types/estree/flow.d.ts | 167 + node_modules/@types/estree/index.d.ts | 694 + node_modules/@types/estree/package.json | 27 + node_modules/@vitest/coverage-v8/LICENSE | 21 + .../@vitest/coverage-v8/dist/index.d.ts | 13 + .../@vitest/coverage-v8/dist/index.js | 54 + .../@vitest/coverage-v8/dist/provider.d.ts | 41 + .../@vitest/coverage-v8/dist/provider.js | 2501 + node_modules/@vitest/coverage-v8/package.json | 72 + node_modules/@vitest/expect/LICENSE | 21 + node_modules/@vitest/expect/README.md | 17 + node_modules/@vitest/expect/dist/chai.d.cts | 1968 + node_modules/@vitest/expect/dist/index.d.ts | 258 + node_modules/@vitest/expect/dist/index.js | 1639 + node_modules/@vitest/expect/index.d.ts | 3 + node_modules/@vitest/expect/package.json | 47 + node_modules/@vitest/runner/LICENSE | 21 + node_modules/@vitest/runner/README.md | 5 + .../@vitest/runner/dist/chunk-tasks.js | 171 + node_modules/@vitest/runner/dist/index.d.ts | 33 + node_modules/@vitest/runner/dist/index.js | 1005 + .../@vitest/runner/dist/tasks-K5XERDtv.d.ts | 280 + node_modules/@vitest/runner/dist/types.d.ts | 121 + node_modules/@vitest/runner/dist/types.js | 1 + node_modules/@vitest/runner/dist/utils.d.ts | 25 + node_modules/@vitest/runner/dist/utils.js | 3 + node_modules/@vitest/runner/package.json | 49 + node_modules/@vitest/runner/types.d.ts | 1 + node_modules/@vitest/runner/utils.d.ts | 1 + node_modules/@vitest/snapshot/LICENSE | 21 + node_modules/@vitest/snapshot/README.md | 79 + .../snapshot/dist/environment-cMiGIVXz.d.ts | 14 + .../@vitest/snapshot/dist/environment.d.ts | 16 + .../@vitest/snapshot/dist/environment.js | 44 + .../@vitest/snapshot/dist/index-S94ASl6q.d.ts | 60 + node_modules/@vitest/snapshot/dist/index.d.ts | 109 + node_modules/@vitest/snapshot/dist/index.js | 1548 + .../@vitest/snapshot/dist/manager.d.ts | 18 + node_modules/@vitest/snapshot/dist/manager.js | 75 + .../@vitest/snapshot/environment.d.ts | 1 + node_modules/@vitest/snapshot/manager.d.ts | 1 + node_modules/@vitest/snapshot/package.json | 54 + node_modules/@vitest/spy/LICENSE | 21 + node_modules/@vitest/spy/README.md | 3 + node_modules/@vitest/spy/dist/index.d.ts | 285 + node_modules/@vitest/spy/dist/index.js | 130 + node_modules/@vitest/spy/package.json | 38 + node_modules/@vitest/utils/LICENSE | 21 + node_modules/@vitest/utils/diff.d.ts | 1 + node_modules/@vitest/utils/dist/ast.d.ts | 723 + node_modules/@vitest/utils/dist/ast.js | 180 + .../@vitest/utils/dist/chunk-colors.js | 77 + .../@vitest/utils/dist/chunk-display.js | 144 + node_modules/@vitest/utils/dist/diff.d.ts | 93 + node_modules/@vitest/utils/dist/diff.js | 1081 + node_modules/@vitest/utils/dist/error.d.ts | 11 + node_modules/@vitest/utils/dist/error.js | 150 + node_modules/@vitest/utils/dist/helpers.d.ts | 35 + node_modules/@vitest/utils/dist/helpers.js | 154 + node_modules/@vitest/utils/dist/index.d.ts | 110 + node_modules/@vitest/utils/dist/index.js | 643 + .../@vitest/utils/dist/source-map.d.ts | 111 + node_modules/@vitest/utils/dist/source-map.js | 878 + .../@vitest/utils/dist/types-9l4niLY8.d.ts | 35 + node_modules/@vitest/utils/dist/types.d.ts | 39 + node_modules/@vitest/utils/dist/types.js | 1 + node_modules/@vitest/utils/error.d.ts | 1 + node_modules/@vitest/utils/helpers.d.ts | 1 + node_modules/@vitest/utils/package.json | 74 + node_modules/acorn-walk/CHANGELOG.md | 209 + node_modules/acorn-walk/LICENSE | 21 + node_modules/acorn-walk/README.md | 124 + node_modules/acorn-walk/dist/walk.d.mts | 152 + node_modules/acorn-walk/dist/walk.d.ts | 152 + node_modules/acorn-walk/dist/walk.js | 485 + node_modules/acorn-walk/dist/walk.mjs | 467 + node_modules/acorn-walk/package.json | 50 + node_modules/acorn/CHANGELOG.md | 972 + node_modules/acorn/LICENSE | 21 + node_modules/acorn/README.md | 301 + node_modules/acorn/bin/acorn | 4 + node_modules/acorn/dist/acorn.d.mts | 883 + node_modules/acorn/dist/acorn.d.ts | 883 + node_modules/acorn/dist/acorn.js | 6295 ++ node_modules/acorn/dist/acorn.mjs | 6266 ++ node_modules/acorn/dist/bin.js | 90 + node_modules/acorn/package.json | 50 + node_modules/ansi-regex/index.d.ts | 33 + node_modules/ansi-regex/index.js | 14 + node_modules/ansi-regex/license | 9 + node_modules/ansi-regex/package.json | 61 + node_modules/ansi-regex/readme.md | 66 + node_modules/ansi-styles/index.d.ts | 167 + node_modules/ansi-styles/index.js | 164 + node_modules/ansi-styles/license | 9 + node_modules/ansi-styles/package.json | 52 + node_modules/ansi-styles/readme.md | 144 + node_modules/assertion-error/History.md | 24 + node_modules/assertion-error/README.md | 41 + node_modules/assertion-error/index.d.ts | 11 + node_modules/assertion-error/index.js | 116 + node_modules/assertion-error/package.json | 29 + node_modules/asynckit/LICENSE | 21 + node_modules/asynckit/README.md | 233 + node_modules/asynckit/bench.js | 76 + node_modules/asynckit/index.js | 6 + node_modules/asynckit/lib/abort.js | 29 + node_modules/asynckit/lib/async.js | 34 + node_modules/asynckit/lib/defer.js | 26 + node_modules/asynckit/lib/iterate.js | 75 + .../asynckit/lib/readable_asynckit.js | 91 + .../asynckit/lib/readable_parallel.js | 25 + node_modules/asynckit/lib/readable_serial.js | 25 + .../asynckit/lib/readable_serial_ordered.js | 29 + node_modules/asynckit/lib/state.js | 37 + node_modules/asynckit/lib/streamify.js | 141 + node_modules/asynckit/lib/terminator.js | 29 + node_modules/asynckit/package.json | 63 + node_modules/asynckit/parallel.js | 43 + node_modules/asynckit/serial.js | 17 + node_modules/asynckit/serialOrdered.js | 75 + node_modules/asynckit/stream.js | 21 + node_modules/axios/CHANGELOG.md | 1416 + node_modules/axios/LICENSE | 7 + node_modules/axios/MIGRATION_GUIDE.md | 877 + node_modules/axios/README.md | 1921 + node_modules/axios/dist/axios.js | 4463 + node_modules/axios/dist/axios.js.map | 1 + node_modules/axios/dist/axios.min.js | 5 + node_modules/axios/dist/axios.min.js.map | 1 + node_modules/axios/dist/browser/axios.cjs | 4239 + node_modules/axios/dist/browser/axios.cjs.map | 1 + node_modules/axios/dist/esm/axios.js | 4262 + node_modules/axios/dist/esm/axios.js.map | 1 + node_modules/axios/dist/esm/axios.min.js | 3 + node_modules/axios/dist/esm/axios.min.js.map | 1 + node_modules/axios/dist/node/axios.cjs | 5643 ++ node_modules/axios/dist/node/axios.cjs.map | 1 + node_modules/axios/index.d.cts | 716 + node_modules/axios/index.d.ts | 810 + node_modules/axios/index.js | 43 + node_modules/axios/lib/adapters/README.md | 36 + node_modules/axios/lib/adapters/adapters.js | 130 + node_modules/axios/lib/adapters/fetch.js | 334 + node_modules/axios/lib/adapters/http.js | 949 + node_modules/axios/lib/adapters/xhr.js | 222 + node_modules/axios/lib/axios.js | 89 + node_modules/axios/lib/cancel/CancelToken.js | 135 + .../axios/lib/cancel/CanceledError.js | 22 + node_modules/axios/lib/cancel/isCancel.js | 5 + node_modules/axios/lib/core/Axios.js | 263 + node_modules/axios/lib/core/AxiosError.js | 90 + node_modules/axios/lib/core/AxiosHeaders.js | 344 + .../axios/lib/core/InterceptorManager.js | 72 + node_modules/axios/lib/core/README.md | 8 + node_modules/axios/lib/core/buildFullPath.js | 22 + .../axios/lib/core/dispatchRequest.js | 77 + node_modules/axios/lib/core/mergeConfig.js | 107 + node_modules/axios/lib/core/settle.js | 31 + node_modules/axios/lib/core/transformData.js | 28 + node_modules/axios/lib/defaults/index.js | 172 + .../axios/lib/defaults/transitional.js | 8 + node_modules/axios/lib/env/README.md | 3 + .../axios/lib/env/classes/FormData.js | 2 + node_modules/axios/lib/env/data.js | 1 + .../axios/lib/helpers/AxiosTransformStream.js | 156 + .../axios/lib/helpers/AxiosURLSearchParams.js | 62 + .../axios/lib/helpers/HttpStatusCode.js | 77 + node_modules/axios/lib/helpers/README.md | 7 + .../lib/helpers/ZlibHeaderTransformStream.js | 29 + node_modules/axios/lib/helpers/bind.js | 14 + node_modules/axios/lib/helpers/buildURL.js | 66 + node_modules/axios/lib/helpers/callbackify.js | 18 + node_modules/axios/lib/helpers/combineURLs.js | 15 + .../axios/lib/helpers/composeSignals.js | 56 + node_modules/axios/lib/helpers/cookies.js | 48 + .../axios/lib/helpers/deprecatedMethod.js | 31 + .../helpers/estimateDataURLDecodedBytes.js | 73 + .../axios/lib/helpers/formDataToJSON.js | 95 + .../axios/lib/helpers/formDataToStream.js | 118 + node_modules/axios/lib/helpers/fromDataURI.js | 53 + .../axios/lib/helpers/isAbsoluteURL.js | 19 + .../axios/lib/helpers/isAxiosError.js | 14 + .../axios/lib/helpers/isURLSameOrigin.js | 16 + node_modules/axios/lib/helpers/null.js | 2 + .../axios/lib/helpers/parseHeaders.js | 69 + .../axios/lib/helpers/parseProtocol.js | 6 + .../axios/lib/helpers/progressEventReducer.js | 51 + node_modules/axios/lib/helpers/readBlob.js | 15 + .../axios/lib/helpers/resolveConfig.js | 70 + node_modules/axios/lib/helpers/speedometer.js | 55 + node_modules/axios/lib/helpers/spread.js | 28 + node_modules/axios/lib/helpers/throttle.js | 44 + node_modules/axios/lib/helpers/toFormData.js | 241 + .../axios/lib/helpers/toURLEncodedForm.js | 19 + node_modules/axios/lib/helpers/trackStream.js | 89 + node_modules/axios/lib/helpers/validator.js | 110 + .../lib/platform/browser/classes/Blob.js | 3 + .../lib/platform/browser/classes/FormData.js | 3 + .../browser/classes/URLSearchParams.js | 4 + .../axios/lib/platform/browser/index.js | 13 + .../axios/lib/platform/common/utils.js | 52 + node_modules/axios/lib/platform/index.js | 7 + .../lib/platform/node/classes/FormData.js | 3 + .../platform/node/classes/URLSearchParams.js | 4 + node_modules/axios/lib/platform/node/index.js | 37 + node_modules/axios/lib/utils.js | 919 + node_modules/axios/package.json | 226 + .../balanced-match/.github/FUNDING.yml | 2 + node_modules/balanced-match/LICENSE.md | 21 + node_modules/balanced-match/README.md | 97 + node_modules/balanced-match/index.js | 62 + node_modules/balanced-match/package.json | 48 + node_modules/boolbase/README.md | 10 + node_modules/boolbase/index.js | 8 + node_modules/boolbase/package.json | 23 + node_modules/brace-expansion/LICENSE | 21 + node_modules/brace-expansion/README.md | 129 + node_modules/brace-expansion/index.js | 201 + node_modules/brace-expansion/package.json | 50 + node_modules/cac/LICENSE | 21 + node_modules/cac/README.md | 536 + node_modules/cac/deno/CAC.ts | 331 + node_modules/cac/deno/Command.ts | 269 + node_modules/cac/deno/Option.ts | 52 + node_modules/cac/deno/deno.ts | 4 + node_modules/cac/deno/index.ts | 10 + node_modules/cac/deno/utils.ts | 145 + node_modules/cac/dist/index.d.ts | 191 + node_modules/cac/dist/index.js | 623 + node_modules/cac/dist/index.mjs | 617 + node_modules/cac/index-compat.js | 11 + node_modules/cac/mod.js | 2 + node_modules/cac/mod.ts | 2 + node_modules/cac/package.json | 104 + .../call-bind-apply-helpers/.eslintrc | 17 + .../.github/FUNDING.yml | 12 + node_modules/call-bind-apply-helpers/.nycrc | 9 + .../call-bind-apply-helpers/CHANGELOG.md | 30 + node_modules/call-bind-apply-helpers/LICENSE | 21 + .../call-bind-apply-helpers/README.md | 62 + .../call-bind-apply-helpers/actualApply.d.ts | 1 + .../call-bind-apply-helpers/actualApply.js | 10 + .../call-bind-apply-helpers/applyBind.d.ts | 19 + .../call-bind-apply-helpers/applyBind.js | 10 + .../functionApply.d.ts | 1 + .../call-bind-apply-helpers/functionApply.js | 4 + .../call-bind-apply-helpers/functionCall.d.ts | 1 + .../call-bind-apply-helpers/functionCall.js | 4 + .../call-bind-apply-helpers/index.d.ts | 64 + node_modules/call-bind-apply-helpers/index.js | 15 + .../call-bind-apply-helpers/package.json | 85 + .../call-bind-apply-helpers/reflectApply.d.ts | 3 + .../call-bind-apply-helpers/reflectApply.js | 4 + .../call-bind-apply-helpers/test/index.js | 63 + .../call-bind-apply-helpers/tsconfig.json | 9 + node_modules/chai/CODEOWNERS | 1 + node_modules/chai/CODE_OF_CONDUCT.md | 58 + node_modules/chai/CONTRIBUTING.md | 212 + node_modules/chai/History.md | 1059 + node_modules/chai/LICENSE | 21 + node_modules/chai/README.md | 212 + node_modules/chai/ReleaseNotes.md | 737 + node_modules/chai/bower.json | 26 + node_modules/chai/chai.js | 11300 +++ node_modules/chai/index.js | 1 + node_modules/chai/index.mjs | 14 + node_modules/chai/karma.conf.js | 34 + node_modules/chai/karma.sauce.js | 41 + node_modules/chai/lib/chai.js | 92 + node_modules/chai/lib/chai/assertion.js | 178 + node_modules/chai/lib/chai/config.js | 120 + node_modules/chai/lib/chai/core/assertions.js | 3850 + .../chai/lib/chai/interface/assert.js | 3113 + .../chai/lib/chai/interface/expect.js | 47 + .../chai/lib/chai/interface/should.js | 219 + .../chai/lib/chai/utils/addChainableMethod.js | 152 + .../chai/lib/chai/utils/addLengthGuard.js | 60 + node_modules/chai/lib/chai/utils/addMethod.js | 68 + .../chai/lib/chai/utils/addProperty.js | 72 + .../chai/lib/chai/utils/compareByInspect.js | 31 + .../chai/lib/chai/utils/expectTypes.js | 51 + node_modules/chai/lib/chai/utils/flag.js | 33 + node_modules/chai/lib/chai/utils/getActual.js | 20 + .../lib/chai/utils/getEnumerableProperties.js | 26 + .../chai/lib/chai/utils/getMessage.js | 50 + .../chai/lib/chai/utils/getOperator.js | 55 + .../chai/utils/getOwnEnumerableProperties.js | 29 + .../utils/getOwnEnumerablePropertySymbols.js | 27 + .../chai/lib/chai/utils/getProperties.js | 36 + node_modules/chai/lib/chai/utils/index.js | 178 + node_modules/chai/lib/chai/utils/inspect.js | 33 + node_modules/chai/lib/chai/utils/isNaN.js | 26 + .../chai/lib/chai/utils/isProxyEnabled.js | 24 + .../chai/lib/chai/utils/objDisplay.js | 51 + .../chai/utils/overwriteChainableMethod.js | 69 + .../chai/lib/chai/utils/overwriteMethod.js | 92 + .../chai/lib/chai/utils/overwriteProperty.js | 92 + node_modules/chai/lib/chai/utils/proxify.js | 147 + node_modules/chai/lib/chai/utils/test.js | 28 + .../chai/lib/chai/utils/transferFlags.js | 45 + node_modules/chai/package.json | 63 + node_modules/chai/register-assert.js | 1 + node_modules/chai/register-expect.js | 1 + node_modules/chai/register-should.js | 1 + node_modules/chai/sauce.browsers.js | 106 + node_modules/chalk/license | 9 + node_modules/chalk/package.json | 83 + node_modules/chalk/readme.md | 297 + node_modules/chalk/source/index.d.ts | 325 + node_modules/chalk/source/index.js | 225 + node_modules/chalk/source/utilities.js | 33 + .../source/vendor/ansi-styles/index.d.ts | 236 + .../chalk/source/vendor/ansi-styles/index.js | 223 + .../source/vendor/supports-color/browser.d.ts | 1 + .../source/vendor/supports-color/browser.js | 34 + .../source/vendor/supports-color/index.d.ts | 55 + .../source/vendor/supports-color/index.js | 190 + node_modules/check-error/LICENSE | 19 + node_modules/check-error/README.md | 207 + node_modules/check-error/check-error.js | 1 + node_modules/check-error/index.js | 148 + node_modules/check-error/package.json | 87 + node_modules/cheerio-select/LICENSE | 11 + node_modules/cheerio-select/README.md | 18 + .../cheerio-select/lib/esm/helpers.d.ts | 5 + .../cheerio-select/lib/esm/helpers.d.ts.map | 1 + .../cheerio-select/lib/esm/helpers.js | 20 + .../cheerio-select/lib/esm/helpers.js.map | 1 + .../cheerio-select/lib/esm/index.d.ts | 12 + .../cheerio-select/lib/esm/index.d.ts.map | 1 + node_modules/cheerio-select/lib/esm/index.js | 241 + .../cheerio-select/lib/esm/index.js.map | 1 + .../cheerio-select/lib/esm/package.json | 1 + .../cheerio-select/lib/esm/positionals.d.ts | 10 + .../lib/esm/positionals.d.ts.map | 1 + .../cheerio-select/lib/esm/positionals.js | 47 + .../cheerio-select/lib/esm/positionals.js.map | 1 + node_modules/cheerio-select/lib/helpers.d.ts | 5 + .../cheerio-select/lib/helpers.d.ts.map | 1 + node_modules/cheerio-select/lib/helpers.js | 26 + .../cheerio-select/lib/helpers.js.map | 1 + node_modules/cheerio-select/lib/index.d.ts | 12 + .../cheerio-select/lib/index.d.ts.map | 1 + node_modules/cheerio-select/lib/index.js | 302 + node_modules/cheerio-select/lib/index.js.map | 1 + .../cheerio-select/lib/positionals.d.ts | 10 + .../cheerio-select/lib/positionals.d.ts.map | 1 + .../cheerio-select/lib/positionals.js | 52 + .../cheerio-select/lib/positionals.js.map | 1 + node_modules/cheerio-select/package.json | 76 + node_modules/cheerio/LICENSE | 21 + node_modules/cheerio/Readme.md | 229 + .../cheerio/dist/browser/api/attributes.d.ts | 385 + .../dist/browser/api/attributes.d.ts.map | 1 + .../cheerio/dist/browser/api/attributes.js | 636 + .../dist/browser/api/attributes.js.map | 1 + .../cheerio/dist/browser/api/css.d.ts | 42 + .../cheerio/dist/browser/api/css.d.ts.map | 1 + node_modules/cheerio/dist/browser/api/css.js | 116 + .../cheerio/dist/browser/api/css.js.map | 1 + .../cheerio/dist/browser/api/extract.d.ts | 27 + .../cheerio/dist/browser/api/extract.d.ts.map | 1 + .../cheerio/dist/browser/api/extract.js | 42 + .../cheerio/dist/browser/api/extract.js.map | 1 + .../cheerio/dist/browser/api/forms.d.ts | 36 + .../cheerio/dist/browser/api/forms.d.ts.map | 1 + .../cheerio/dist/browser/api/forms.js | 81 + .../cheerio/dist/browser/api/forms.js.map | 1 + .../dist/browser/api/manipulation.d.ts | 528 + .../dist/browser/api/manipulation.d.ts.map | 1 + .../cheerio/dist/browser/api/manipulation.js | 831 + .../dist/browser/api/manipulation.js.map | 1 + .../cheerio/dist/browser/api/traversing.d.ts | 657 + .../dist/browser/api/traversing.d.ts.map | 1 + .../cheerio/dist/browser/api/traversing.js | 857 + .../dist/browser/api/traversing.js.map | 1 + .../cheerio/dist/browser/cheerio.d.ts | 85 + .../cheerio/dist/browser/cheerio.d.ts.map | 1 + node_modules/cheerio/dist/browser/cheerio.js | 58 + .../cheerio/dist/browser/cheerio.js.map | 1 + .../dist/browser/index-browser.d.mts.map | 1 + .../dist/browser/index-browser.mjs.map | 1 + node_modules/cheerio/dist/browser/index.d.ts | 5 + node_modules/cheerio/dist/browser/index.js | 3 + .../cheerio/dist/browser/load-parse.d.ts | 20 + .../cheerio/dist/browser/load-parse.d.ts.map | 1 + .../cheerio/dist/browser/load-parse.js | 28 + .../cheerio/dist/browser/load-parse.js.map | 1 + node_modules/cheerio/dist/browser/load.d.ts | 91 + .../cheerio/dist/browser/load.d.ts.map | 1 + node_modules/cheerio/dist/browser/load.js | 129 + node_modules/cheerio/dist/browser/load.js.map | 1 + .../cheerio/dist/browser/options.d.ts | 98 + .../cheerio/dist/browser/options.d.ts.map | 1 + node_modules/cheerio/dist/browser/options.js | 34 + .../cheerio/dist/browser/options.js.map | 1 + .../cheerio/dist/browser/package.json | 3 + node_modules/cheerio/dist/browser/parse.d.ts | 18 + .../cheerio/dist/browser/parse.d.ts.map | 1 + node_modules/cheerio/dist/browser/parse.js | 73 + .../cheerio/dist/browser/parse.js.map | 1 + .../dist/browser/parsers/parse5-adapter.d.ts | 20 + .../browser/parsers/parse5-adapter.d.ts.map | 1 + .../dist/browser/parsers/parse5-adapter.js | 50 + .../browser/parsers/parse5-adapter.js.map | 1 + node_modules/cheerio/dist/browser/slim.d.ts | 25 + .../cheerio/dist/browser/slim.d.ts.map | 1 + node_modules/cheerio/dist/browser/slim.js | 22 + node_modules/cheerio/dist/browser/slim.js.map | 1 + node_modules/cheerio/dist/browser/static.d.ts | 112 + .../cheerio/dist/browser/static.d.ts.map | 1 + node_modules/cheerio/dist/browser/static.js | 204 + .../cheerio/dist/browser/static.js.map | 1 + node_modules/cheerio/dist/browser/types.d.ts | 21 + .../cheerio/dist/browser/types.d.ts.map | 1 + node_modules/cheerio/dist/browser/types.js | 3 + .../cheerio/dist/browser/types.js.map | 1 + node_modules/cheerio/dist/browser/utils.d.ts | 55 + .../cheerio/dist/browser/utils.d.ts.map | 1 + node_modules/cheerio/dist/browser/utils.js | 84 + .../cheerio/dist/browser/utils.js.map | 1 + .../cheerio/dist/commonjs/api/attributes.d.ts | 385 + .../dist/commonjs/api/attributes.d.ts.map | 1 + .../cheerio/dist/commonjs/api/attributes.js | 647 + .../dist/commonjs/api/attributes.js.map | 1 + .../cheerio/dist/commonjs/api/css.d.ts | 42 + .../cheerio/dist/commonjs/api/css.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/api/css.js | 119 + .../cheerio/dist/commonjs/api/css.js.map | 1 + .../cheerio/dist/commonjs/api/extract.d.ts | 27 + .../dist/commonjs/api/extract.d.ts.map | 1 + .../cheerio/dist/commonjs/api/extract.js | 45 + .../cheerio/dist/commonjs/api/extract.js.map | 1 + .../cheerio/dist/commonjs/api/forms.d.ts | 36 + .../cheerio/dist/commonjs/api/forms.d.ts.map | 1 + .../cheerio/dist/commonjs/api/forms.js | 85 + .../cheerio/dist/commonjs/api/forms.js.map | 1 + .../dist/commonjs/api/manipulation.d.ts | 528 + .../dist/commonjs/api/manipulation.d.ts.map | 1 + .../cheerio/dist/commonjs/api/manipulation.js | 850 + .../dist/commonjs/api/manipulation.js.map | 1 + .../cheerio/dist/commonjs/api/traversing.d.ts | 657 + .../dist/commonjs/api/traversing.d.ts.map | 1 + .../cheerio/dist/commonjs/api/traversing.js | 914 + .../dist/commonjs/api/traversing.js.map | 1 + .../cheerio/dist/commonjs/cheerio.d.ts | 85 + .../cheerio/dist/commonjs/cheerio.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/cheerio.js | 95 + .../cheerio/dist/commonjs/cheerio.js.map | 1 + node_modules/cheerio/dist/commonjs/index.d.ts | 104 + .../cheerio/dist/commonjs/index.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/index.js | 250 + .../cheerio/dist/commonjs/index.js.map | 1 + .../cheerio/dist/commonjs/load-parse.d.ts | 20 + .../cheerio/dist/commonjs/load-parse.d.ts.map | 1 + .../cheerio/dist/commonjs/load-parse.js | 34 + .../cheerio/dist/commonjs/load-parse.js.map | 1 + node_modules/cheerio/dist/commonjs/load.d.ts | 91 + .../cheerio/dist/commonjs/load.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/load.js | 165 + .../cheerio/dist/commonjs/load.js.map | 1 + .../cheerio/dist/commonjs/options.d.ts | 98 + .../cheerio/dist/commonjs/options.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/options.js | 37 + .../cheerio/dist/commonjs/options.js.map | 1 + .../cheerio/dist/commonjs/package.json | 3 + node_modules/cheerio/dist/commonjs/parse.d.ts | 18 + .../cheerio/dist/commonjs/parse.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/parse.js | 77 + .../cheerio/dist/commonjs/parse.js.map | 1 + .../dist/commonjs/parsers/parse5-adapter.d.ts | 20 + .../commonjs/parsers/parse5-adapter.d.ts.map | 1 + .../dist/commonjs/parsers/parse5-adapter.js | 54 + .../commonjs/parsers/parse5-adapter.js.map | 1 + node_modules/cheerio/dist/commonjs/slim.d.ts | 25 + .../cheerio/dist/commonjs/slim.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/slim.js | 30 + .../cheerio/dist/commonjs/slim.js.map | 1 + .../cheerio/dist/commonjs/static.d.ts | 112 + .../cheerio/dist/commonjs/static.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/static.js | 214 + .../cheerio/dist/commonjs/static.js.map | 1 + node_modules/cheerio/dist/commonjs/types.d.ts | 21 + .../cheerio/dist/commonjs/types.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/types.js | 4 + .../cheerio/dist/commonjs/types.js.map | 1 + node_modules/cheerio/dist/commonjs/utils.d.ts | 55 + .../cheerio/dist/commonjs/utils.d.ts.map | 1 + node_modules/cheerio/dist/commonjs/utils.js | 91 + .../cheerio/dist/commonjs/utils.js.map | 1 + .../cheerio/dist/esm/api/attributes.d.ts | 385 + .../cheerio/dist/esm/api/attributes.d.ts.map | 1 + .../cheerio/dist/esm/api/attributes.js | 636 + .../cheerio/dist/esm/api/attributes.js.map | 1 + node_modules/cheerio/dist/esm/api/css.d.ts | 42 + .../cheerio/dist/esm/api/css.d.ts.map | 1 + node_modules/cheerio/dist/esm/api/css.js | 116 + node_modules/cheerio/dist/esm/api/css.js.map | 1 + .../cheerio/dist/esm/api/extract.d.ts | 27 + .../cheerio/dist/esm/api/extract.d.ts.map | 1 + node_modules/cheerio/dist/esm/api/extract.js | 42 + .../cheerio/dist/esm/api/extract.js.map | 1 + node_modules/cheerio/dist/esm/api/forms.d.ts | 36 + .../cheerio/dist/esm/api/forms.d.ts.map | 1 + node_modules/cheerio/dist/esm/api/forms.js | 81 + .../cheerio/dist/esm/api/forms.js.map | 1 + .../cheerio/dist/esm/api/manipulation.d.ts | 528 + .../dist/esm/api/manipulation.d.ts.map | 1 + .../cheerio/dist/esm/api/manipulation.js | 831 + .../cheerio/dist/esm/api/manipulation.js.map | 1 + .../cheerio/dist/esm/api/traversing.d.ts | 657 + .../cheerio/dist/esm/api/traversing.d.ts.map | 1 + .../cheerio/dist/esm/api/traversing.js | 857 + .../cheerio/dist/esm/api/traversing.js.map | 1 + node_modules/cheerio/dist/esm/cheerio.d.ts | 85 + .../cheerio/dist/esm/cheerio.d.ts.map | 1 + node_modules/cheerio/dist/esm/cheerio.js | 58 + node_modules/cheerio/dist/esm/cheerio.js.map | 1 + node_modules/cheerio/dist/esm/index.d.ts | 104 + node_modules/cheerio/dist/esm/index.d.ts.map | 1 + node_modules/cheerio/dist/esm/index.js | 202 + node_modules/cheerio/dist/esm/index.js.map | 1 + node_modules/cheerio/dist/esm/load-parse.d.ts | 20 + .../cheerio/dist/esm/load-parse.d.ts.map | 1 + node_modules/cheerio/dist/esm/load-parse.js | 28 + .../cheerio/dist/esm/load-parse.js.map | 1 + node_modules/cheerio/dist/esm/load.d.ts | 91 + node_modules/cheerio/dist/esm/load.d.ts.map | 1 + node_modules/cheerio/dist/esm/load.js | 129 + node_modules/cheerio/dist/esm/load.js.map | 1 + node_modules/cheerio/dist/esm/options.d.ts | 98 + .../cheerio/dist/esm/options.d.ts.map | 1 + node_modules/cheerio/dist/esm/options.js | 34 + node_modules/cheerio/dist/esm/options.js.map | 1 + node_modules/cheerio/dist/esm/package.json | 3 + node_modules/cheerio/dist/esm/parse.d.ts | 18 + node_modules/cheerio/dist/esm/parse.d.ts.map | 1 + node_modules/cheerio/dist/esm/parse.js | 73 + node_modules/cheerio/dist/esm/parse.js.map | 1 + .../dist/esm/parsers/parse5-adapter.d.ts | 20 + .../dist/esm/parsers/parse5-adapter.d.ts.map | 1 + .../dist/esm/parsers/parse5-adapter.js | 50 + .../dist/esm/parsers/parse5-adapter.js.map | 1 + node_modules/cheerio/dist/esm/slim.d.ts | 25 + node_modules/cheerio/dist/esm/slim.d.ts.map | 1 + node_modules/cheerio/dist/esm/slim.js | 22 + node_modules/cheerio/dist/esm/slim.js.map | 1 + node_modules/cheerio/dist/esm/static.d.ts | 112 + node_modules/cheerio/dist/esm/static.d.ts.map | 1 + node_modules/cheerio/dist/esm/static.js | 204 + node_modules/cheerio/dist/esm/static.js.map | 1 + node_modules/cheerio/dist/esm/types.d.ts | 21 + node_modules/cheerio/dist/esm/types.d.ts.map | 1 + node_modules/cheerio/dist/esm/types.js | 3 + node_modules/cheerio/dist/esm/types.js.map | 1 + node_modules/cheerio/dist/esm/utils.d.ts | 55 + node_modules/cheerio/dist/esm/utils.d.ts.map | 1 + node_modules/cheerio/dist/esm/utils.js | 84 + node_modules/cheerio/dist/esm/utils.js.map | 1 + node_modules/cheerio/package.json | 182 + node_modules/cheerio/src/api/attributes.ts | 1145 + node_modules/cheerio/src/api/css.ts | 224 + node_modules/cheerio/src/api/extract.ts | 92 + node_modules/cheerio/src/api/forms.ts | 103 + node_modules/cheerio/src/api/manipulation.ts | 1115 + node_modules/cheerio/src/api/traversing.ts | 1175 + node_modules/cheerio/src/cheerio.ts | 143 + node_modules/cheerio/src/index-browser.mts | 10 + node_modules/cheerio/src/index.ts | 294 + node_modules/cheerio/src/load-parse.ts | 39 + node_modules/cheerio/src/load.ts | 282 + node_modules/cheerio/src/options.ts | 136 + node_modules/cheerio/src/parse.ts | 105 + .../cheerio/src/parsers/parse5-adapter.ts | 66 + node_modules/cheerio/src/slim.ts | 33 + node_modules/cheerio/src/static.ts | 312 + node_modules/cheerio/src/types.ts | 58 + node_modules/cheerio/src/utils.ts | 99 + node_modules/cli-cursor/index.d.ts | 47 + node_modules/cli-cursor/index.js | 39 + node_modules/cli-cursor/license | 9 + node_modules/cli-cursor/package.json | 56 + node_modules/cli-cursor/readme.md | 39 + node_modules/cli-spinners/index.d.ts | 128 + node_modules/cli-spinners/index.js | 15 + node_modules/cli-spinners/license | 9 + node_modules/cli-spinners/package.json | 50 + node_modules/cli-spinners/readme.md | 54 + node_modules/cli-spinners/spinners.json | 1622 + node_modules/combined-stream/License | 19 + node_modules/combined-stream/Readme.md | 138 + .../combined-stream/lib/combined_stream.js | 208 + node_modules/combined-stream/package.json | 25 + node_modules/combined-stream/yarn.lock | 17 + node_modules/commander/LICENSE | 22 + node_modules/commander/Readme.md | 1157 + node_modules/commander/esm.mjs | 16 + node_modules/commander/index.js | 24 + node_modules/commander/lib/argument.js | 149 + node_modules/commander/lib/command.js | 2509 + node_modules/commander/lib/error.js | 39 + node_modules/commander/lib/help.js | 520 + node_modules/commander/lib/option.js | 330 + node_modules/commander/lib/suggestSimilar.js | 101 + node_modules/commander/package-support.json | 16 + node_modules/commander/package.json | 84 + node_modules/commander/typings/esm.d.mts | 3 + node_modules/commander/typings/index.d.ts | 969 + node_modules/concat-map/.travis.yml | 4 + node_modules/concat-map/LICENSE | 18 + node_modules/concat-map/README.markdown | 62 + node_modules/concat-map/example/map.js | 6 + node_modules/concat-map/index.js | 13 + node_modules/concat-map/package.json | 43 + node_modules/concat-map/test/map.js | 39 + node_modules/confbox/LICENSE | 118 + node_modules/confbox/README.md | 191 + node_modules/confbox/dist/index.cjs | 1 + node_modules/confbox/dist/index.d.cts | 32 + node_modules/confbox/dist/index.d.mts | 32 + node_modules/confbox/dist/index.d.ts | 32 + node_modules/confbox/dist/index.mjs | 1 + node_modules/confbox/dist/json5.cjs | 14 + node_modules/confbox/dist/json5.d.cts | 58 + node_modules/confbox/dist/json5.d.mts | 58 + node_modules/confbox/dist/json5.d.ts | 58 + node_modules/confbox/dist/json5.mjs | 14 + node_modules/confbox/dist/jsonc.cjs | 1 + node_modules/confbox/dist/jsonc.d.cts | 41 + node_modules/confbox/dist/jsonc.d.mts | 41 + node_modules/confbox/dist/jsonc.d.ts | 41 + node_modules/confbox/dist/jsonc.mjs | 1 + .../confbox/dist/shared/confbox.3768c7e9.cjs | 1 + .../confbox/dist/shared/confbox.6b479c78.cjs | 7 + .../confbox/dist/shared/confbox.9388d834.mjs | 1 + .../dist/shared/confbox.9745c98f.d.cts | 24 + .../dist/shared/confbox.9745c98f.d.mts | 24 + .../confbox/dist/shared/confbox.9745c98f.d.ts | 24 + .../confbox/dist/shared/confbox.f9f03f05.mjs | 7 + node_modules/confbox/dist/toml.cjs | 239 + node_modules/confbox/dist/toml.d.cts | 22 + node_modules/confbox/dist/toml.d.mts | 22 + node_modules/confbox/dist/toml.d.ts | 22 + node_modules/confbox/dist/toml.mjs | 239 + node_modules/confbox/dist/yaml.cjs | 32 + node_modules/confbox/dist/yaml.d.cts | 95 + node_modules/confbox/dist/yaml.d.mts | 95 + node_modules/confbox/dist/yaml.d.ts | 95 + node_modules/confbox/dist/yaml.mjs | 32 + node_modules/confbox/json5.d.ts | 2 + node_modules/confbox/jsonc.d.ts | 2 + node_modules/confbox/package.json | 86 + node_modules/confbox/toml.d.ts | 2 + node_modules/confbox/yaml.d.ts | 2 + node_modules/cross-spawn/LICENSE | 21 + node_modules/cross-spawn/README.md | 89 + node_modules/cross-spawn/index.js | 39 + node_modules/cross-spawn/lib/enoent.js | 59 + node_modules/cross-spawn/lib/parse.js | 91 + node_modules/cross-spawn/lib/util/escape.js | 47 + .../cross-spawn/lib/util/readShebang.js | 23 + .../cross-spawn/lib/util/resolveCommand.js | 52 + node_modules/cross-spawn/package.json | 73 + node_modules/css-select/LICENSE | 11 + node_modules/css-select/README.md | 264 + node_modules/css-select/lib/attributes.d.ts | 7 + .../css-select/lib/attributes.d.ts.map | 1 + node_modules/css-select/lib/attributes.js | 236 + node_modules/css-select/lib/attributes.js.map | 1 + node_modules/css-select/lib/compile.d.ts | 13 + node_modules/css-select/lib/compile.d.ts.map | 1 + node_modules/css-select/lib/compile.js | 151 + node_modules/css-select/lib/compile.js.map | 1 + .../css-select/lib/esm/attributes.d.ts | 7 + .../css-select/lib/esm/attributes.d.ts.map | 1 + node_modules/css-select/lib/esm/attributes.js | 222 + .../css-select/lib/esm/attributes.js.map | 1 + node_modules/css-select/lib/esm/compile.d.ts | 13 + .../css-select/lib/esm/compile.d.ts.map | 1 + node_modules/css-select/lib/esm/compile.js | 115 + .../css-select/lib/esm/compile.js.map | 1 + node_modules/css-select/lib/esm/general.d.ts | 3 + .../css-select/lib/esm/general.d.ts.map | 1 + node_modules/css-select/lib/esm/general.js | 144 + .../css-select/lib/esm/general.js.map | 1 + .../css-select/lib/esm/helpers/cache.d.ts | 12 + .../css-select/lib/esm/helpers/cache.d.ts.map | 1 + .../css-select/lib/esm/helpers/cache.js | 41 + .../css-select/lib/esm/helpers/cache.js.map | 1 + .../css-select/lib/esm/helpers/querying.d.ts | 24 + .../lib/esm/helpers/querying.d.ts.map | 1 + .../css-select/lib/esm/helpers/querying.js | 105 + .../lib/esm/helpers/querying.js.map | 1 + .../css-select/lib/esm/helpers/selectors.d.ts | 20 + .../lib/esm/helpers/selectors.d.ts.map | 1 + .../css-select/lib/esm/helpers/selectors.js | 103 + .../lib/esm/helpers/selectors.js.map | 1 + node_modules/css-select/lib/esm/index.d.ts | 50 + .../css-select/lib/esm/index.d.ts.map | 1 + node_modules/css-select/lib/esm/index.js | 115 + node_modules/css-select/lib/esm/index.js.map | 1 + node_modules/css-select/lib/esm/package.json | 1 + .../lib/esm/pseudo-selectors/aliases.d.ts | 5 + .../lib/esm/pseudo-selectors/aliases.d.ts.map | 1 + .../lib/esm/pseudo-selectors/aliases.js | 35 + .../lib/esm/pseudo-selectors/aliases.js.map | 1 + .../lib/esm/pseudo-selectors/filters.d.ts | 4 + .../lib/esm/pseudo-selectors/filters.d.ts.map | 1 + .../lib/esm/pseudo-selectors/filters.js | 143 + .../lib/esm/pseudo-selectors/filters.js.map | 1 + .../lib/esm/pseudo-selectors/index.d.ts | 8 + .../lib/esm/pseudo-selectors/index.d.ts.map | 1 + .../lib/esm/pseudo-selectors/index.js | 40 + .../lib/esm/pseudo-selectors/index.js.map | 1 + .../lib/esm/pseudo-selectors/pseudos.d.ts | 6 + .../lib/esm/pseudo-selectors/pseudos.d.ts.map | 1 + .../lib/esm/pseudo-selectors/pseudos.js | 79 + .../lib/esm/pseudo-selectors/pseudos.js.map | 1 + .../lib/esm/pseudo-selectors/subselects.d.ts | 9 + .../esm/pseudo-selectors/subselects.d.ts.map | 1 + .../lib/esm/pseudo-selectors/subselects.js | 94 + .../esm/pseudo-selectors/subselects.js.map | 1 + node_modules/css-select/lib/esm/sort.d.ts | 12 + node_modules/css-select/lib/esm/sort.d.ts.map | 1 + node_modules/css-select/lib/esm/sort.js | 79 + node_modules/css-select/lib/esm/sort.js.map | 1 + node_modules/css-select/lib/esm/types.d.ts | 167 + .../css-select/lib/esm/types.d.ts.map | 1 + node_modules/css-select/lib/esm/types.js | 2 + node_modules/css-select/lib/esm/types.js.map | 1 + node_modules/css-select/lib/general.d.ts | 3 + node_modules/css-select/lib/general.d.ts.map | 1 + node_modules/css-select/lib/general.js | 148 + node_modules/css-select/lib/general.js.map | 1 + .../css-select/lib/helpers/cache.d.ts | 12 + .../css-select/lib/helpers/cache.d.ts.map | 1 + node_modules/css-select/lib/helpers/cache.js | 45 + .../css-select/lib/helpers/cache.js.map | 1 + .../css-select/lib/helpers/querying.d.ts | 24 + .../css-select/lib/helpers/querying.d.ts.map | 1 + .../css-select/lib/helpers/querying.js | 111 + .../css-select/lib/helpers/querying.js.map | 1 + .../css-select/lib/helpers/selectors.d.ts | 20 + .../css-select/lib/helpers/selectors.d.ts.map | 1 + .../css-select/lib/helpers/selectors.js | 111 + .../css-select/lib/helpers/selectors.js.map | 1 + node_modules/css-select/lib/index.d.ts | 50 + node_modules/css-select/lib/index.d.ts.map | 1 + node_modules/css-select/lib/index.js | 154 + node_modules/css-select/lib/index.js.map | 1 + .../lib/pseudo-selectors/aliases.d.ts | 5 + .../lib/pseudo-selectors/aliases.d.ts.map | 1 + .../lib/pseudo-selectors/aliases.js | 34 + .../lib/pseudo-selectors/aliases.js.map | 1 + .../lib/pseudo-selectors/filters.d.ts | 4 + .../lib/pseudo-selectors/filters.d.ts.map | 1 + .../lib/pseudo-selectors/filters.js | 157 + .../lib/pseudo-selectors/filters.js.map | 1 + .../lib/pseudo-selectors/index.d.ts | 8 + .../lib/pseudo-selectors/index.d.ts.map | 1 + .../css-select/lib/pseudo-selectors/index.js | 46 + .../lib/pseudo-selectors/index.js.map | 1 + .../lib/pseudo-selectors/pseudos.d.ts | 6 + .../lib/pseudo-selectors/pseudos.d.ts.map | 1 + .../lib/pseudo-selectors/pseudos.js | 93 + .../lib/pseudo-selectors/pseudos.js.map | 1 + .../lib/pseudo-selectors/subselects.d.ts | 9 + .../lib/pseudo-selectors/subselects.d.ts.map | 1 + .../lib/pseudo-selectors/subselects.js | 112 + .../lib/pseudo-selectors/subselects.js.map | 1 + node_modules/css-select/lib/sort.d.ts | 12 + node_modules/css-select/lib/sort.d.ts.map | 1 + node_modules/css-select/lib/sort.js | 84 + node_modules/css-select/lib/sort.js.map | 1 + node_modules/css-select/lib/types.d.ts | 167 + node_modules/css-select/lib/types.d.ts.map | 1 + node_modules/css-select/lib/types.js | 3 + node_modules/css-select/lib/types.js.map | 1 + node_modules/css-select/package.json | 81 + node_modules/css-what/LICENSE | 11 + node_modules/css-what/lib/commonjs/index.d.ts | 4 + .../css-what/lib/commonjs/index.d.ts.map | 1 + node_modules/css-what/lib/commonjs/index.js | 23 + node_modules/css-what/lib/commonjs/parse.d.ts | 20 + .../css-what/lib/commonjs/parse.d.ts.map | 1 + node_modules/css-what/lib/commonjs/parse.js | 425 + .../css-what/lib/commonjs/stringify.d.ts | 8 + .../css-what/lib/commonjs/stringify.d.ts.map | 1 + .../css-what/lib/commonjs/stringify.js | 138 + node_modules/css-what/lib/commonjs/types.d.ts | 70 + .../css-what/lib/commonjs/types.d.ts.map | 1 + node_modules/css-what/lib/commonjs/types.js | 42 + node_modules/css-what/lib/es/index.d.ts | 4 + node_modules/css-what/lib/es/index.d.ts.map | 1 + node_modules/css-what/lib/es/index.js | 3 + node_modules/css-what/lib/es/parse.d.ts | 20 + node_modules/css-what/lib/es/parse.d.ts.map | 1 + node_modules/css-what/lib/es/parse.js | 420 + node_modules/css-what/lib/es/stringify.d.ts | 8 + .../css-what/lib/es/stringify.d.ts.map | 1 + node_modules/css-what/lib/es/stringify.js | 126 + node_modules/css-what/lib/es/types.d.ts | 70 + node_modules/css-what/lib/es/types.d.ts.map | 1 + node_modules/css-what/lib/es/types.js | 39 + node_modules/css-what/package.json | 59 + node_modules/css-what/readme.md | 69 + node_modules/debug/LICENSE | 20 + node_modules/debug/README.md | 481 + node_modules/debug/package.json | 64 + node_modules/debug/src/browser.js | 272 + node_modules/debug/src/common.js | 292 + node_modules/debug/src/index.js | 10 + node_modules/debug/src/node.js | 263 + node_modules/deep-eql/LICENSE | 19 + node_modules/deep-eql/README.md | 93 + node_modules/deep-eql/deep-eql.js | 1 + node_modules/deep-eql/index.js | 498 + node_modules/deep-eql/package.json | 79 + node_modules/delayed-stream/.npmignore | 1 + node_modules/delayed-stream/License | 19 + node_modules/delayed-stream/Makefile | 7 + node_modules/delayed-stream/Readme.md | 141 + .../delayed-stream/lib/delayed_stream.js | 107 + node_modules/delayed-stream/package.json | 27 + node_modules/diff-sequences/LICENSE | 21 + node_modules/diff-sequences/README.md | 404 + node_modules/diff-sequences/build/index.d.ts | 38 + node_modules/diff-sequences/build/index.js | 798 + node_modules/diff-sequences/package.json | 39 + node_modules/dom-serializer/LICENSE | 11 + node_modules/dom-serializer/README.md | 109 + .../dom-serializer/lib/esm/foreignNames.d.ts | 3 + .../lib/esm/foreignNames.d.ts.map | 1 + .../dom-serializer/lib/esm/foreignNames.js | 100 + .../dom-serializer/lib/esm/index.d.ts | 52 + .../dom-serializer/lib/esm/index.d.ts.map | 1 + node_modules/dom-serializer/lib/esm/index.js | 190 + .../dom-serializer/lib/esm/package.json | 1 + .../dom-serializer/lib/foreignNames.d.ts | 3 + .../dom-serializer/lib/foreignNames.d.ts.map | 1 + .../dom-serializer/lib/foreignNames.js | 103 + node_modules/dom-serializer/lib/index.d.ts | 52 + .../dom-serializer/lib/index.d.ts.map | 1 + node_modules/dom-serializer/lib/index.js | 229 + node_modules/dom-serializer/package.json | 69 + node_modules/domelementtype/LICENSE | 11 + .../domelementtype/lib/esm/index.d.ts | 48 + .../domelementtype/lib/esm/index.d.ts.map | 1 + node_modules/domelementtype/lib/esm/index.js | 51 + .../domelementtype/lib/esm/package.json | 1 + node_modules/domelementtype/lib/index.d.ts | 48 + .../domelementtype/lib/index.d.ts.map | 1 + node_modules/domelementtype/lib/index.js | 55 + node_modules/domelementtype/package.json | 54 + node_modules/domelementtype/readme.md | 1 + node_modules/domhandler/LICENSE | 11 + node_modules/domhandler/lib/esm/index.d.ts | 76 + .../domhandler/lib/esm/index.d.ts.map | 1 + node_modules/domhandler/lib/esm/index.js | 146 + node_modules/domhandler/lib/esm/node.d.ts | 245 + node_modules/domhandler/lib/esm/node.d.ts.map | 1 + node_modules/domhandler/lib/esm/node.js | 338 + node_modules/domhandler/lib/esm/package.json | 1 + node_modules/domhandler/lib/index.d.ts | 76 + node_modules/domhandler/lib/index.d.ts.map | 1 + node_modules/domhandler/lib/index.js | 165 + node_modules/domhandler/lib/node.d.ts | 245 + node_modules/domhandler/lib/node.d.ts.map | 1 + node_modules/domhandler/lib/node.js | 474 + node_modules/domhandler/package.json | 73 + node_modules/domhandler/readme.md | 92 + node_modules/domutils/LICENSE | 11 + node_modules/domutils/lib/esm/feeds.d.ts | 71 + node_modules/domutils/lib/esm/feeds.d.ts.map | 1 + node_modules/domutils/lib/esm/feeds.js | 183 + node_modules/domutils/lib/esm/feeds.js.map | 1 + node_modules/domutils/lib/esm/helpers.d.ts | 59 + .../domutils/lib/esm/helpers.d.ts.map | 1 + node_modules/domutils/lib/esm/helpers.js | 136 + node_modules/domutils/lib/esm/helpers.js.map | 1 + node_modules/domutils/lib/esm/index.d.ts | 10 + node_modules/domutils/lib/esm/index.d.ts.map | 1 + node_modules/domutils/lib/esm/index.js | 10 + node_modules/domutils/lib/esm/index.js.map | 1 + node_modules/domutils/lib/esm/legacy.d.ts | 79 + node_modules/domutils/lib/esm/legacy.d.ts.map | 1 + node_modules/domutils/lib/esm/legacy.js | 152 + node_modules/domutils/lib/esm/legacy.js.map | 1 + .../domutils/lib/esm/manipulation.d.ts | 49 + .../domutils/lib/esm/manipulation.d.ts.map | 1 + node_modules/domutils/lib/esm/manipulation.js | 134 + .../domutils/lib/esm/manipulation.js.map | 1 + node_modules/domutils/lib/esm/package.json | 1 + node_modules/domutils/lib/esm/querying.d.ts | 64 + .../domutils/lib/esm/querying.d.ts.map | 1 + node_modules/domutils/lib/esm/querying.js | 142 + node_modules/domutils/lib/esm/querying.js.map | 1 + node_modules/domutils/lib/esm/stringify.d.ts | 46 + .../domutils/lib/esm/stringify.d.ts.map | 1 + node_modules/domutils/lib/esm/stringify.js | 81 + .../domutils/lib/esm/stringify.js.map | 1 + node_modules/domutils/lib/esm/traversal.d.ts | 67 + .../domutils/lib/esm/traversal.d.ts.map | 1 + node_modules/domutils/lib/esm/traversal.js | 112 + .../domutils/lib/esm/traversal.js.map | 1 + node_modules/domutils/lib/feeds.d.ts | 71 + node_modules/domutils/lib/feeds.d.ts.map | 1 + node_modules/domutils/lib/feeds.js | 190 + node_modules/domutils/lib/feeds.js.map | 1 + node_modules/domutils/lib/helpers.d.ts | 59 + node_modules/domutils/lib/helpers.d.ts.map | 1 + node_modules/domutils/lib/helpers.js | 142 + node_modules/domutils/lib/helpers.js.map | 1 + node_modules/domutils/lib/index.d.ts | 10 + node_modules/domutils/lib/index.d.ts.map | 1 + node_modules/domutils/lib/index.js | 33 + node_modules/domutils/lib/index.js.map | 1 + node_modules/domutils/lib/legacy.d.ts | 79 + node_modules/domutils/lib/legacy.d.ts.map | 1 + node_modules/domutils/lib/legacy.js | 168 + node_modules/domutils/lib/legacy.js.map | 1 + node_modules/domutils/lib/manipulation.d.ts | 49 + .../domutils/lib/manipulation.d.ts.map | 1 + node_modules/domutils/lib/manipulation.js | 142 + node_modules/domutils/lib/manipulation.js.map | 1 + node_modules/domutils/lib/querying.d.ts | 64 + node_modules/domutils/lib/querying.d.ts.map | 1 + node_modules/domutils/lib/querying.js | 155 + node_modules/domutils/lib/querying.js.map | 1 + node_modules/domutils/lib/stringify.d.ts | 46 + node_modules/domutils/lib/stringify.d.ts.map | 1 + node_modules/domutils/lib/stringify.js | 91 + node_modules/domutils/lib/stringify.js.map | 1 + node_modules/domutils/lib/traversal.d.ts | 67 + node_modules/domutils/lib/traversal.d.ts.map | 1 + node_modules/domutils/lib/traversal.js | 125 + node_modules/domutils/lib/traversal.js.map | 1 + node_modules/domutils/package.json | 79 + node_modules/domutils/readme.md | 31 + node_modules/dunder-proto/.eslintrc | 5 + node_modules/dunder-proto/.github/FUNDING.yml | 12 + node_modules/dunder-proto/.nycrc | 13 + node_modules/dunder-proto/CHANGELOG.md | 24 + node_modules/dunder-proto/LICENSE | 21 + node_modules/dunder-proto/README.md | 54 + node_modules/dunder-proto/get.d.ts | 5 + node_modules/dunder-proto/get.js | 30 + node_modules/dunder-proto/package.json | 76 + node_modules/dunder-proto/set.d.ts | 5 + node_modules/dunder-proto/set.js | 35 + node_modules/dunder-proto/test/get.js | 34 + node_modules/dunder-proto/test/index.js | 4 + node_modules/dunder-proto/test/set.js | 50 + node_modules/dunder-proto/tsconfig.json | 9 + node_modules/emoji-regex/LICENSE-MIT.txt | 20 + node_modules/emoji-regex/README.md | 107 + node_modules/emoji-regex/index.d.ts | 3 + node_modules/emoji-regex/index.js | 4 + node_modules/emoji-regex/index.mjs | 4 + node_modules/emoji-regex/package.json | 45 + node_modules/encoding-sniffer/LICENSE | 18 + node_modules/encoding-sniffer/README.md | 68 + .../encoding-sniffer/dist/commonjs/index.d.ts | 31 + .../dist/commonjs/index.d.ts.map | 1 + .../encoding-sniffer/dist/commonjs/index.js | 72 + .../dist/commonjs/index.js.map | 1 + .../dist/commonjs/package.json | 3 + .../dist/commonjs/sniffer.d.ts | 148 + .../dist/commonjs/sniffer.d.ts.map | 1 + .../encoding-sniffer/dist/commonjs/sniffer.js | 990 + .../dist/commonjs/sniffer.js.map | 1 + .../encoding-sniffer/dist/esm/index.d.ts | 31 + .../encoding-sniffer/dist/esm/index.d.ts.map | 1 + .../encoding-sniffer/dist/esm/index.js | 63 + .../encoding-sniffer/dist/esm/index.js.map | 1 + .../encoding-sniffer/dist/esm/package.json | 3 + .../encoding-sniffer/dist/esm/sniffer.d.ts | 148 + .../dist/esm/sniffer.d.ts.map | 1 + .../encoding-sniffer/dist/esm/sniffer.js | 985 + .../encoding-sniffer/dist/esm/sniffer.js.map | 1 + node_modules/encoding-sniffer/package.json | 94 + node_modules/encoding-sniffer/sniffer.d.ts | 2 + node_modules/encoding-sniffer/sniffer.js | 3 + node_modules/entities/LICENSE | 11 + node_modules/entities/lib/decode.d.ts | 211 + node_modules/entities/lib/decode.d.ts.map | 1 + node_modules/entities/lib/decode.js | 536 + node_modules/entities/lib/decode.js.map | 1 + .../entities/lib/decode_codepoint.d.ts | 19 + .../entities/lib/decode_codepoint.d.ts.map | 1 + node_modules/entities/lib/decode_codepoint.js | 76 + .../entities/lib/decode_codepoint.js.map | 1 + node_modules/entities/lib/encode.d.ts | 22 + node_modules/entities/lib/encode.d.ts.map | 1 + node_modules/entities/lib/encode.js | 77 + node_modules/entities/lib/encode.js.map | 1 + node_modules/entities/lib/escape.d.ts | 43 + node_modules/entities/lib/escape.d.ts.map | 1 + node_modules/entities/lib/escape.js | 122 + node_modules/entities/lib/escape.js.map | 1 + node_modules/entities/lib/esm/decode.d.ts | 211 + node_modules/entities/lib/esm/decode.d.ts.map | 1 + node_modules/entities/lib/esm/decode.js | 496 + node_modules/entities/lib/esm/decode.js.map | 1 + .../entities/lib/esm/decode_codepoint.d.ts | 19 + .../lib/esm/decode_codepoint.d.ts.map | 1 + .../entities/lib/esm/decode_codepoint.js | 71 + .../entities/lib/esm/decode_codepoint.js.map | 1 + node_modules/entities/lib/esm/encode.d.ts | 22 + node_modules/entities/lib/esm/encode.d.ts.map | 1 + node_modules/entities/lib/esm/encode.js | 69 + node_modules/entities/lib/esm/encode.js.map | 1 + node_modules/entities/lib/esm/escape.d.ts | 43 + node_modules/entities/lib/esm/escape.d.ts.map | 1 + node_modules/entities/lib/esm/escape.js | 116 + node_modules/entities/lib/esm/escape.js.map | 1 + .../lib/esm/generated/decode-data-html.d.ts | 3 + .../esm/generated/decode-data-html.d.ts.map | 1 + .../lib/esm/generated/decode-data-html.js | 7 + .../lib/esm/generated/decode-data-html.js.map | 1 + .../lib/esm/generated/decode-data-xml.d.ts | 3 + .../esm/generated/decode-data-xml.d.ts.map | 1 + .../lib/esm/generated/decode-data-xml.js | 7 + .../lib/esm/generated/decode-data-xml.js.map | 1 + .../lib/esm/generated/encode-html.d.ts | 8 + .../lib/esm/generated/encode-html.d.ts.map | 1 + .../entities/lib/esm/generated/encode-html.js | 10 + .../lib/esm/generated/encode-html.js.map | 1 + node_modules/entities/lib/esm/index.d.ts | 96 + node_modules/entities/lib/esm/index.d.ts.map | 1 + node_modules/entities/lib/esm/index.js | 99 + node_modules/entities/lib/esm/index.js.map | 1 + node_modules/entities/lib/esm/package.json | 1 + .../lib/generated/decode-data-html.d.ts | 3 + .../lib/generated/decode-data-html.d.ts.map | 1 + .../lib/generated/decode-data-html.js | 9 + .../lib/generated/decode-data-html.js.map | 1 + .../lib/generated/decode-data-xml.d.ts | 3 + .../lib/generated/decode-data-xml.d.ts.map | 1 + .../entities/lib/generated/decode-data-xml.js | 9 + .../lib/generated/decode-data-xml.js.map | 1 + .../entities/lib/generated/encode-html.d.ts | 8 + .../lib/generated/encode-html.d.ts.map | 1 + .../entities/lib/generated/encode-html.js | 12 + .../entities/lib/generated/encode-html.js.map | 1 + node_modules/entities/lib/index.d.ts | 96 + node_modules/entities/lib/index.d.ts.map | 1 + node_modules/entities/lib/index.js | 126 + node_modules/entities/lib/index.js.map | 1 + node_modules/entities/package.json | 90 + node_modules/entities/readme.md | 122 + node_modules/es-define-property/.eslintrc | 13 + .../es-define-property/.github/FUNDING.yml | 12 + node_modules/es-define-property/.nycrc | 9 + node_modules/es-define-property/CHANGELOG.md | 29 + node_modules/es-define-property/LICENSE | 21 + node_modules/es-define-property/README.md | 49 + node_modules/es-define-property/index.d.ts | 3 + node_modules/es-define-property/index.js | 14 + node_modules/es-define-property/package.json | 81 + node_modules/es-define-property/test/index.js | 56 + node_modules/es-define-property/tsconfig.json | 10 + node_modules/es-errors/.eslintrc | 5 + node_modules/es-errors/.github/FUNDING.yml | 12 + node_modules/es-errors/CHANGELOG.md | 40 + node_modules/es-errors/LICENSE | 21 + node_modules/es-errors/README.md | 55 + node_modules/es-errors/eval.d.ts | 3 + node_modules/es-errors/eval.js | 4 + node_modules/es-errors/index.d.ts | 3 + node_modules/es-errors/index.js | 4 + node_modules/es-errors/package.json | 80 + node_modules/es-errors/range.d.ts | 3 + node_modules/es-errors/range.js | 4 + node_modules/es-errors/ref.d.ts | 3 + node_modules/es-errors/ref.js | 4 + node_modules/es-errors/syntax.d.ts | 3 + node_modules/es-errors/syntax.js | 4 + node_modules/es-errors/test/index.js | 19 + node_modules/es-errors/tsconfig.json | 49 + node_modules/es-errors/type.d.ts | 3 + node_modules/es-errors/type.js | 4 + node_modules/es-errors/uri.d.ts | 3 + node_modules/es-errors/uri.js | 4 + node_modules/es-object-atoms/.eslintrc | 16 + .../es-object-atoms/.github/FUNDING.yml | 12 + node_modules/es-object-atoms/CHANGELOG.md | 37 + node_modules/es-object-atoms/LICENSE | 21 + node_modules/es-object-atoms/README.md | 63 + .../RequireObjectCoercible.d.ts | 3 + .../es-object-atoms/RequireObjectCoercible.js | 11 + node_modules/es-object-atoms/ToObject.d.ts | 7 + node_modules/es-object-atoms/ToObject.js | 10 + node_modules/es-object-atoms/index.d.ts | 3 + node_modules/es-object-atoms/index.js | 4 + node_modules/es-object-atoms/isObject.d.ts | 3 + node_modules/es-object-atoms/isObject.js | 6 + node_modules/es-object-atoms/package.json | 80 + node_modules/es-object-atoms/test/index.js | 38 + node_modules/es-object-atoms/tsconfig.json | 6 + node_modules/es-set-tostringtag/.eslintrc | 13 + node_modules/es-set-tostringtag/.nycrc | 9 + node_modules/es-set-tostringtag/CHANGELOG.md | 67 + node_modules/es-set-tostringtag/LICENSE | 21 + node_modules/es-set-tostringtag/README.md | 53 + node_modules/es-set-tostringtag/index.d.ts | 10 + node_modules/es-set-tostringtag/index.js | 35 + node_modules/es-set-tostringtag/package.json | 78 + node_modules/es-set-tostringtag/test/index.js | 85 + node_modules/es-set-tostringtag/tsconfig.json | 9 + node_modules/esbuild/LICENSE.md | 21 + node_modules/esbuild/README.md | 3 + node_modules/esbuild/bin/esbuild | 220 + node_modules/esbuild/install.js | 285 + node_modules/esbuild/lib/main.d.ts | 705 + node_modules/esbuild/lib/main.js | 2239 + node_modules/esbuild/package.json | 46 + node_modules/estree-walker/LICENSE | 7 + node_modules/estree-walker/README.md | 48 + node_modules/estree-walker/package.json | 38 + node_modules/estree-walker/src/async.js | 152 + node_modules/estree-walker/src/index.js | 34 + node_modules/estree-walker/src/sync.js | 152 + node_modules/estree-walker/src/walker.js | 61 + node_modules/estree-walker/types/async.d.ts | 36 + node_modules/estree-walker/types/index.d.ts | 32 + node_modules/estree-walker/types/sync.d.ts | 36 + node_modules/estree-walker/types/walker.d.ts | 39 + node_modules/execa/index.d.ts | 955 + node_modules/execa/index.js | 309 + node_modules/execa/lib/command.js | 119 + node_modules/execa/lib/error.js | 87 + node_modules/execa/lib/kill.js | 102 + node_modules/execa/lib/pipe.js | 42 + node_modules/execa/lib/promise.js | 36 + node_modules/execa/lib/stdio.js | 49 + node_modules/execa/lib/stream.js | 133 + node_modules/execa/lib/verbose.js | 19 + node_modules/execa/license | 9 + .../execa/node_modules/onetime/index.d.ts | 59 + .../execa/node_modules/onetime/index.js | 41 + .../execa/node_modules/onetime/license | 9 + .../execa/node_modules/onetime/package.json | 45 + .../execa/node_modules/onetime/readme.md | 94 + node_modules/execa/package.json | 90 + node_modules/execa/readme.md | 822 + node_modules/follow-redirects/LICENSE | 18 + node_modules/follow-redirects/README.md | 155 + node_modules/follow-redirects/debug.js | 15 + node_modules/follow-redirects/http.js | 1 + node_modules/follow-redirects/https.js | 1 + node_modules/follow-redirects/index.js | 686 + node_modules/follow-redirects/package.json | 58 + node_modules/form-data/CHANGELOG.md | 659 + node_modules/form-data/License | 19 + node_modules/form-data/README.md | 355 + node_modules/form-data/index.d.ts | 62 + node_modules/form-data/lib/browser.js | 4 + node_modules/form-data/lib/form_data.js | 494 + node_modules/form-data/lib/populate.js | 10 + node_modules/form-data/package.json | 82 + node_modules/fs.realpath/LICENSE | 43 + node_modules/fs.realpath/README.md | 33 + node_modules/fs.realpath/index.js | 66 + node_modules/fs.realpath/old.js | 303 + node_modules/fs.realpath/package.json | 26 + node_modules/function-bind/.eslintrc | 21 + .../function-bind/.github/FUNDING.yml | 12 + .../function-bind/.github/SECURITY.md | 3 + node_modules/function-bind/.nycrc | 13 + node_modules/function-bind/CHANGELOG.md | 136 + node_modules/function-bind/LICENSE | 20 + node_modules/function-bind/README.md | 46 + node_modules/function-bind/implementation.js | 84 + node_modules/function-bind/index.js | 5 + node_modules/function-bind/package.json | 87 + node_modules/function-bind/test/.eslintrc | 9 + node_modules/function-bind/test/index.js | 252 + node_modules/get-east-asian-width/index.d.ts | 60 + node_modules/get-east-asian-width/index.js | 30 + node_modules/get-east-asian-width/license | 9 + .../get-east-asian-width/lookup-data.js | 18 + node_modules/get-east-asian-width/lookup.js | 135 + .../get-east-asian-width/package.json | 71 + node_modules/get-east-asian-width/readme.md | 65 + .../get-east-asian-width/utilities.js | 24 + node_modules/get-func-name/LICENSE | 19 + node_modules/get-func-name/README.md | 123 + node_modules/get-func-name/get-func-name.js | 1 + node_modules/get-func-name/index.js | 52 + node_modules/get-func-name/package.json | 85 + node_modules/get-intrinsic/.eslintrc | 42 + .../get-intrinsic/.github/FUNDING.yml | 12 + node_modules/get-intrinsic/.nycrc | 9 + node_modules/get-intrinsic/CHANGELOG.md | 186 + node_modules/get-intrinsic/LICENSE | 21 + node_modules/get-intrinsic/README.md | 71 + node_modules/get-intrinsic/index.js | 378 + node_modules/get-intrinsic/package.json | 97 + .../get-intrinsic/test/GetIntrinsic.js | 274 + node_modules/get-proto/.eslintrc | 10 + node_modules/get-proto/.github/FUNDING.yml | 12 + node_modules/get-proto/.nycrc | 9 + node_modules/get-proto/CHANGELOG.md | 21 + node_modules/get-proto/LICENSE | 21 + .../get-proto/Object.getPrototypeOf.d.ts | 5 + .../get-proto/Object.getPrototypeOf.js | 6 + node_modules/get-proto/README.md | 50 + .../get-proto/Reflect.getPrototypeOf.d.ts | 3 + .../get-proto/Reflect.getPrototypeOf.js | 4 + node_modules/get-proto/index.d.ts | 5 + node_modules/get-proto/index.js | 27 + node_modules/get-proto/package.json | 81 + node_modules/get-proto/test/index.js | 68 + node_modules/get-proto/tsconfig.json | 9 + node_modules/get-stream/license | 9 + node_modules/get-stream/package.json | 53 + node_modules/get-stream/readme.md | 291 + .../get-stream/source/array-buffer.js | 84 + node_modules/get-stream/source/array.js | 32 + node_modules/get-stream/source/buffer.js | 20 + node_modules/get-stream/source/contents.js | 101 + node_modules/get-stream/source/index.d.ts | 119 + node_modules/get-stream/source/index.js | 5 + node_modules/get-stream/source/string.js | 36 + node_modules/get-stream/source/utils.js | 11 + node_modules/glob/LICENSE | 21 + node_modules/glob/README.md | 378 + node_modules/glob/common.js | 238 + node_modules/glob/glob.js | 790 + node_modules/glob/package.json | 55 + node_modules/glob/sync.js | 486 + node_modules/gopd/.eslintrc | 16 + node_modules/gopd/.github/FUNDING.yml | 12 + node_modules/gopd/CHANGELOG.md | 45 + node_modules/gopd/LICENSE | 21 + node_modules/gopd/README.md | 40 + node_modules/gopd/gOPD.d.ts | 1 + node_modules/gopd/gOPD.js | 4 + node_modules/gopd/index.d.ts | 5 + node_modules/gopd/index.js | 15 + node_modules/gopd/package.json | 77 + node_modules/gopd/test/index.js | 36 + node_modules/gopd/tsconfig.json | 9 + node_modules/has-flag/index.d.ts | 39 + node_modules/has-flag/index.js | 8 + node_modules/has-flag/license | 9 + node_modules/has-flag/package.json | 46 + node_modules/has-flag/readme.md | 89 + node_modules/has-symbols/.eslintrc | 11 + node_modules/has-symbols/.github/FUNDING.yml | 12 + node_modules/has-symbols/.nycrc | 9 + node_modules/has-symbols/CHANGELOG.md | 91 + node_modules/has-symbols/LICENSE | 21 + node_modules/has-symbols/README.md | 46 + node_modules/has-symbols/index.d.ts | 3 + node_modules/has-symbols/index.js | 14 + node_modules/has-symbols/package.json | 111 + node_modules/has-symbols/shams.d.ts | 3 + node_modules/has-symbols/shams.js | 45 + node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 29 + .../test/shams/get-own-property-symbols.js | 29 + node_modules/has-symbols/test/tests.js | 58 + node_modules/has-symbols/tsconfig.json | 10 + node_modules/has-tostringtag/.eslintrc | 5 + .../has-tostringtag/.github/FUNDING.yml | 12 + node_modules/has-tostringtag/.nycrc | 13 + node_modules/has-tostringtag/CHANGELOG.md | 42 + node_modules/has-tostringtag/LICENSE | 21 + node_modules/has-tostringtag/README.md | 46 + node_modules/has-tostringtag/index.d.ts | 3 + node_modules/has-tostringtag/index.js | 8 + node_modules/has-tostringtag/package.json | 108 + node_modules/has-tostringtag/shams.d.ts | 3 + node_modules/has-tostringtag/shams.js | 8 + node_modules/has-tostringtag/test/index.js | 21 + .../has-tostringtag/test/shams/core-js.js | 31 + .../test/shams/get-own-property-symbols.js | 30 + node_modules/has-tostringtag/test/tests.js | 15 + node_modules/has-tostringtag/tsconfig.json | 49 + node_modules/hasown/.eslintrc | 5 + node_modules/hasown/.github/FUNDING.yml | 12 + node_modules/hasown/.nycrc | 13 + node_modules/hasown/CHANGELOG.md | 40 + node_modules/hasown/LICENSE | 21 + node_modules/hasown/README.md | 40 + node_modules/hasown/index.d.ts | 3 + node_modules/hasown/index.js | 8 + node_modules/hasown/package.json | 92 + node_modules/hasown/tsconfig.json | 6 + node_modules/html-escaper/LICENSE.txt | 19 + node_modules/html-escaper/README.md | 97 + node_modules/html-escaper/cjs/index.js | 65 + node_modules/html-escaper/cjs/package.json | 1 + node_modules/html-escaper/esm/index.js | 62 + node_modules/html-escaper/index.js | 70 + node_modules/html-escaper/min.js | 1 + node_modules/html-escaper/package.json | 42 + node_modules/html-escaper/test/index.js | 23 + node_modules/html-escaper/test/package.json | 1 + node_modules/htmlparser2/LICENSE | 18 + node_modules/htmlparser2/README.md | 171 + node_modules/htmlparser2/WritableStream.js | 3 + .../htmlparser2/dist/commonjs/Parser.d.ts | 198 + .../htmlparser2/dist/commonjs/Parser.d.ts.map | 1 + .../htmlparser2/dist/commonjs/Parser.js | 527 + .../htmlparser2/dist/commonjs/Parser.js.map | 1 + .../htmlparser2/dist/commonjs/Tokenizer.d.ts | 126 + .../dist/commonjs/Tokenizer.d.ts.map | 1 + .../htmlparser2/dist/commonjs/Tokenizer.js | 805 + .../dist/commonjs/Tokenizer.js.map | 1 + .../dist/commonjs/WritableStream.d.ts | 15 + .../dist/commonjs/WritableStream.d.ts.map | 1 + .../dist/commonjs/WritableStream.js | 36 + .../dist/commonjs/WritableStream.js.map | 1 + .../htmlparser2/dist/commonjs/index.d.ts | 54 + .../htmlparser2/dist/commonjs/index.d.ts.map | 1 + .../htmlparser2/dist/commonjs/index.js | 123 + .../htmlparser2/dist/commonjs/index.js.map | 1 + .../htmlparser2/dist/commonjs/package.json | 3 + node_modules/htmlparser2/dist/esm/Parser.d.ts | 198 + .../htmlparser2/dist/esm/Parser.d.ts.map | 1 + node_modules/htmlparser2/dist/esm/Parser.js | 490 + .../htmlparser2/dist/esm/Parser.js.map | 1 + .../htmlparser2/dist/esm/Tokenizer.d.ts | 126 + .../htmlparser2/dist/esm/Tokenizer.d.ts.map | 1 + .../htmlparser2/dist/esm/Tokenizer.js | 801 + .../htmlparser2/dist/esm/Tokenizer.js.map | 1 + .../htmlparser2/dist/esm/WritableStream.d.ts | 15 + .../dist/esm/WritableStream.d.ts.map | 1 + .../htmlparser2/dist/esm/WritableStream.js | 32 + .../dist/esm/WritableStream.js.map | 1 + node_modules/htmlparser2/dist/esm/index.d.ts | 54 + .../htmlparser2/dist/esm/index.d.ts.map | 1 + node_modules/htmlparser2/dist/esm/index.js | 74 + .../htmlparser2/dist/esm/index.js.map | 1 + .../htmlparser2/dist/esm/package.json | 3 + .../htmlparser2/node_modules/entities/LICENSE | 11 + .../node_modules/entities/decode.d.ts | 3 + .../node_modules/entities/decode.js | 3 + .../dist/commonjs/decode-codepoint.d.ts | 19 + .../dist/commonjs/decode-codepoint.d.ts.map | 1 + .../dist/commonjs/decode-codepoint.js | 77 + .../dist/commonjs/decode-codepoint.js.map | 1 + .../entities/dist/commonjs/decode.d.ts | 205 + .../entities/dist/commonjs/decode.d.ts.map | 1 + .../entities/dist/commonjs/decode.js | 568 + .../entities/dist/commonjs/decode.js.map | 1 + .../entities/dist/commonjs/encode.d.ts | 22 + .../entities/dist/commonjs/encode.d.ts.map | 1 + .../entities/dist/commonjs/encode.js | 92 + .../entities/dist/commonjs/encode.js.map | 1 + .../entities/dist/commonjs/escape.d.ts | 46 + .../entities/dist/commonjs/escape.d.ts.map | 1 + .../entities/dist/commonjs/escape.js | 138 + .../entities/dist/commonjs/escape.js.map | 1 + .../commonjs/generated/decode-data-html.d.ts | 2 + .../generated/decode-data-html.d.ts.map | 1 + .../commonjs/generated/decode-data-html.js | 7 + .../generated/decode-data-html.js.map | 1 + .../commonjs/generated/decode-data-xml.d.ts | 2 + .../generated/decode-data-xml.d.ts.map | 1 + .../commonjs/generated/decode-data-xml.js | 7 + .../commonjs/generated/decode-data-xml.js.map | 1 + .../dist/commonjs/generated/encode-html.d.ts | 3 + .../commonjs/generated/encode-html.d.ts.map | 1 + .../dist/commonjs/generated/encode-html.js | 14 + .../commonjs/generated/encode-html.js.map | 1 + .../entities/dist/commonjs/index.d.ts | 96 + .../entities/dist/commonjs/index.d.ts.map | 1 + .../entities/dist/commonjs/index.js | 131 + .../entities/dist/commonjs/index.js.map | 1 + .../commonjs/internal/bin-trie-flags.d.ts | 17 + .../commonjs/internal/bin-trie-flags.d.ts.map | 1 + .../dist/commonjs/internal/bin-trie-flags.js | 21 + .../commonjs/internal/bin-trie-flags.js.map | 1 + .../dist/commonjs/internal/decode-shared.d.ts | 2 + .../commonjs/internal/decode-shared.d.ts.map | 1 + .../dist/commonjs/internal/decode-shared.js | 31 + .../commonjs/internal/decode-shared.js.map | 1 + .../dist/commonjs/internal/encode-shared.d.ts | 32 + .../commonjs/internal/encode-shared.d.ts.map | 1 + .../dist/commonjs/internal/encode-shared.js | 94 + .../commonjs/internal/encode-shared.js.map | 1 + .../entities/dist/commonjs/package.json | 3 + .../entities/dist/esm/decode-codepoint.d.ts | 19 + .../dist/esm/decode-codepoint.d.ts.map | 1 + .../entities/dist/esm/decode-codepoint.js | 72 + .../entities/dist/esm/decode-codepoint.js.map | 1 + .../entities/dist/esm/decode.d.ts | 205 + .../entities/dist/esm/decode.d.ts.map | 1 + .../node_modules/entities/dist/esm/decode.js | 554 + .../entities/dist/esm/decode.js.map | 1 + .../entities/dist/esm/encode.d.ts | 22 + .../entities/dist/esm/encode.d.ts.map | 1 + .../node_modules/entities/dist/esm/encode.js | 88 + .../entities/dist/esm/encode.js.map | 1 + .../entities/dist/esm/escape.d.ts | 46 + .../entities/dist/esm/escape.d.ts.map | 1 + .../node_modules/entities/dist/esm/escape.js | 134 + .../entities/dist/esm/escape.js.map | 1 + .../dist/esm/generated/decode-data-html.d.ts | 2 + .../esm/generated/decode-data-html.d.ts.map | 1 + .../dist/esm/generated/decode-data-html.js | 4 + .../esm/generated/decode-data-html.js.map | 1 + .../dist/esm/generated/decode-data-xml.d.ts | 2 + .../esm/generated/decode-data-xml.d.ts.map | 1 + .../dist/esm/generated/decode-data-xml.js | 4 + .../dist/esm/generated/decode-data-xml.js.map | 1 + .../dist/esm/generated/encode-html.d.ts | 3 + .../dist/esm/generated/encode-html.d.ts.map | 1 + .../dist/esm/generated/encode-html.js | 11 + .../dist/esm/generated/encode-html.js.map | 1 + .../node_modules/entities/dist/esm/index.d.ts | 96 + .../entities/dist/esm/index.d.ts.map | 1 + .../node_modules/entities/dist/esm/index.js | 107 + .../entities/dist/esm/index.js.map | 1 + .../dist/esm/internal/bin-trie-flags.d.ts | 17 + .../dist/esm/internal/bin-trie-flags.d.ts.map | 1 + .../dist/esm/internal/bin-trie-flags.js | 18 + .../dist/esm/internal/bin-trie-flags.js.map | 1 + .../dist/esm/internal/decode-shared.d.ts | 2 + .../dist/esm/internal/decode-shared.d.ts.map | 1 + .../dist/esm/internal/decode-shared.js | 28 + .../dist/esm/internal/decode-shared.js.map | 1 + .../dist/esm/internal/encode-shared.d.ts | 32 + .../dist/esm/internal/encode-shared.d.ts.map | 1 + .../dist/esm/internal/encode-shared.js | 91 + .../dist/esm/internal/encode-shared.js.map | 1 + .../entities/dist/esm/package.json | 3 + .../node_modules/entities/escape.d.ts | 3 + .../node_modules/entities/escape.js | 3 + .../node_modules/entities/package.json | 120 + .../node_modules/entities/readme.md | 143 + .../entities/src/decode-codepoint.ts | 81 + .../node_modules/entities/src/decode.ts | 685 + .../node_modules/entities/src/encode.ts | 93 + .../node_modules/entities/src/escape.ts | 161 + .../entities/src/generated/.eslintrc.json | 10 + .../src/generated/decode-data-html.ts | 6 + .../entities/src/generated/decode-data-xml.ts | 6 + .../entities/src/generated/encode-html.ts | 17 + .../node_modules/entities/src/index.ts | 187 + .../entities/src/internal/bin-trie-flags.ts | 16 + .../entities/src/internal/decode-shared.ts | 30 + .../entities/src/internal/encode-shared.ts | 121 + node_modules/htmlparser2/package.json | 113 + node_modules/htmlparser2/src/Parser.ts | 663 + node_modules/htmlparser2/src/Tokenizer.ts | 877 + .../htmlparser2/src/WritableStream.ts | 43 + node_modules/htmlparser2/src/index.ts | 115 + node_modules/human-signals/LICENSE | 201 + node_modules/human-signals/README.md | 168 + node_modules/human-signals/build/src/core.js | 273 + .../human-signals/build/src/main.d.ts | 73 + node_modules/human-signals/build/src/main.js | 70 + .../human-signals/build/src/realtime.js | 16 + .../human-signals/build/src/signals.js | 34 + node_modules/human-signals/package.json | 61 + .../iconv-lite/.github/dependabot.yml | 11 + .../iconv-lite/.idea/codeStyles/Project.xml | 47 + .../.idea/codeStyles/codeStyleConfig.xml | 5 + node_modules/iconv-lite/.idea/iconv-lite.iml | 12 + .../inspectionProfiles/Project_Default.xml | 6 + node_modules/iconv-lite/.idea/modules.xml | 8 + node_modules/iconv-lite/.idea/vcs.xml | 6 + node_modules/iconv-lite/Changelog.md | 212 + node_modules/iconv-lite/LICENSE | 21 + node_modules/iconv-lite/README.md | 130 + .../iconv-lite/encodings/dbcs-codec.js | 597 + .../iconv-lite/encodings/dbcs-data.js | 188 + node_modules/iconv-lite/encodings/index.js | 23 + node_modules/iconv-lite/encodings/internal.js | 198 + .../iconv-lite/encodings/sbcs-codec.js | 72 + .../encodings/sbcs-data-generated.js | 451 + .../iconv-lite/encodings/sbcs-data.js | 179 + .../encodings/tables/big5-added.json | 122 + .../iconv-lite/encodings/tables/cp936.json | 264 + .../iconv-lite/encodings/tables/cp949.json | 273 + .../iconv-lite/encodings/tables/cp950.json | 177 + .../iconv-lite/encodings/tables/eucjp.json | 182 + .../encodings/tables/gb18030-ranges.json | 1 + .../encodings/tables/gbk-added.json | 56 + .../iconv-lite/encodings/tables/shiftjis.json | 125 + node_modules/iconv-lite/encodings/utf16.js | 197 + node_modules/iconv-lite/encodings/utf32.js | 319 + node_modules/iconv-lite/encodings/utf7.js | 290 + node_modules/iconv-lite/lib/bom-handling.js | 52 + node_modules/iconv-lite/lib/index.d.ts | 41 + node_modules/iconv-lite/lib/index.js | 180 + node_modules/iconv-lite/lib/streams.js | 109 + node_modules/iconv-lite/package.json | 44 + node_modules/inflight/LICENSE | 15 + node_modules/inflight/README.md | 37 + node_modules/inflight/inflight.js | 54 + node_modules/inflight/package.json | 29 + node_modules/inherits/LICENSE | 16 + node_modules/inherits/README.md | 42 + node_modules/inherits/inherits.js | 9 + node_modules/inherits/inherits_browser.js | 27 + node_modules/inherits/package.json | 29 + node_modules/is-interactive/index.d.ts | 25 + node_modules/is-interactive/index.js | 7 + node_modules/is-interactive/license | 9 + node_modules/is-interactive/package.json | 41 + node_modules/is-interactive/readme.md | 52 + node_modules/is-stream/index.d.ts | 81 + node_modules/is-stream/index.js | 29 + node_modules/is-stream/license | 9 + node_modules/is-stream/package.json | 44 + node_modules/is-stream/readme.md | 60 + node_modules/is-unicode-supported/index.d.ts | 12 + node_modules/is-unicode-supported/index.js | 21 + node_modules/is-unicode-supported/license | 9 + .../is-unicode-supported/package.json | 47 + node_modules/is-unicode-supported/readme.md | 35 + node_modules/isexe/.npmignore | 2 + node_modules/isexe/LICENSE | 15 + node_modules/isexe/README.md | 51 + node_modules/isexe/index.js | 57 + node_modules/isexe/mode.js | 41 + node_modules/isexe/package.json | 31 + node_modules/isexe/test/basic.js | 221 + node_modules/isexe/windows.js | 42 + .../istanbul-lib-coverage/CHANGELOG.md | 209 + node_modules/istanbul-lib-coverage/LICENSE | 24 + node_modules/istanbul-lib-coverage/README.md | 29 + node_modules/istanbul-lib-coverage/index.js | 64 + .../istanbul-lib-coverage/lib/coverage-map.js | 134 + .../lib/coverage-summary.js | 112 + .../lib/data-properties.js | 12 + .../lib/file-coverage.js | 444 + .../istanbul-lib-coverage/lib/percent.js | 15 + .../istanbul-lib-coverage/package.json | 47 + node_modules/istanbul-lib-report/CHANGELOG.md | 192 + node_modules/istanbul-lib-report/LICENSE | 24 + node_modules/istanbul-lib-report/README.md | 43 + node_modules/istanbul-lib-report/index.js | 40 + .../istanbul-lib-report/lib/context.js | 132 + .../istanbul-lib-report/lib/file-writer.js | 189 + node_modules/istanbul-lib-report/lib/path.js | 169 + .../istanbul-lib-report/lib/report-base.js | 16 + .../lib/summarizer-factory.js | 284 + node_modules/istanbul-lib-report/lib/tree.js | 137 + .../istanbul-lib-report/lib/watermarks.js | 15 + .../istanbul-lib-report/lib/xml-writer.js | 90 + node_modules/istanbul-lib-report/package.json | 44 + .../istanbul-lib-source-maps/CHANGELOG.md | 353 + node_modules/istanbul-lib-source-maps/LICENSE | 24 + .../istanbul-lib-source-maps/README.md | 10 + .../istanbul-lib-source-maps/index.js | 15 + .../lib/get-mapping.js | 184 + .../istanbul-lib-source-maps/lib/map-store.js | 228 + .../istanbul-lib-source-maps/lib/mapped.js | 113 + .../istanbul-lib-source-maps/lib/pathutils.js | 21 + .../lib/transform-utils.js | 21 + .../lib/transformer.js | 160 + .../istanbul-lib-source-maps/package.json | 45 + node_modules/istanbul-reports/CHANGELOG.md | 476 + node_modules/istanbul-reports/LICENSE | 24 + node_modules/istanbul-reports/README.md | 12 + node_modules/istanbul-reports/index.js | 24 + .../istanbul-reports/lib/clover/index.js | 163 + .../istanbul-reports/lib/cobertura/index.js | 151 + .../istanbul-reports/lib/html-spa/.babelrc | 3 + .../lib/html-spa/assets/bundle.js | 30 + .../lib/html-spa/assets/sort-arrow-sprite.png | Bin 0 -> 138 bytes .../lib/html-spa/assets/spa.css | 298 + .../istanbul-reports/lib/html-spa/index.js | 176 + .../lib/html-spa/src/fileBreadcrumbs.js | 31 + .../lib/html-spa/src/filterToggle.js | 50 + .../lib/html-spa/src/flattenToggle.js | 25 + .../lib/html-spa/src/getChildData.js | 155 + .../lib/html-spa/src/index.js | 160 + .../lib/html-spa/src/routing.js | 52 + .../lib/html-spa/src/summaryHeader.js | 63 + .../lib/html-spa/src/summaryTableHeader.js | 130 + .../lib/html-spa/src/summaryTableLine.js | 159 + .../lib/html-spa/webpack.config.js | 22 + .../istanbul-reports/lib/html/annotator.js | 305 + .../istanbul-reports/lib/html/assets/base.css | 224 + .../lib/html/assets/block-navigation.js | 86 + .../lib/html/assets/favicon.png | Bin 0 -> 445 bytes .../lib/html/assets/sort-arrow-sprite.png | Bin 0 -> 138 bytes .../lib/html/assets/sorter.js | 209 + .../lib/html/assets/vendor/prettify.css | 1 + .../lib/html/assets/vendor/prettify.js | 1 + .../istanbul-reports/lib/html/index.js | 421 + .../lib/html/insertion-text.js | 114 + .../lib/json-summary/index.js | 56 + .../istanbul-reports/lib/json/index.js | 44 + .../istanbul-reports/lib/lcov/index.js | 33 + .../istanbul-reports/lib/lcovonly/index.js | 77 + .../istanbul-reports/lib/none/index.js | 10 + .../istanbul-reports/lib/teamcity/index.js | 67 + .../istanbul-reports/lib/text-lcov/index.js | 17 + .../lib/text-summary/index.js | 62 + .../istanbul-reports/lib/text/index.js | 298 + node_modules/istanbul-reports/package.json | 60 + node_modules/js-tokens/LICENSE | 21 + node_modules/js-tokens/README.md | 14 + node_modules/js-tokens/index.d.ts | 37 + node_modules/js-tokens/index.js | 396 + node_modules/js-tokens/package.json | 22 + node_modules/local-pkg/LICENSE | 21 + node_modules/local-pkg/README.md | 55 + node_modules/local-pkg/dist/index.cjs | 409 + node_modules/local-pkg/dist/index.d.cts | 38 + node_modules/local-pkg/dist/index.d.mts | 38 + node_modules/local-pkg/dist/index.d.ts | 38 + node_modules/local-pkg/dist/index.mjs | 393 + node_modules/local-pkg/package.json | 65 + node_modules/log-symbols/browser.js | 8 + node_modules/log-symbols/index.d.ts | 22 + node_modules/log-symbols/index.js | 20 + node_modules/log-symbols/license | 9 + .../is-unicode-supported/index.d.ts | 12 + .../is-unicode-supported/index.js | 17 + .../node_modules/is-unicode-supported/license | 9 + .../is-unicode-supported/package.json | 43 + .../is-unicode-supported/readme.md | 35 + node_modules/log-symbols/package.json | 57 + node_modules/log-symbols/readme.md | 39 + node_modules/loupe/CHANGELOG.md | 5 + node_modules/loupe/LICENSE | 9 + node_modules/loupe/README.md | 63 + node_modules/loupe/index.js | 219 + node_modules/loupe/lib/arguments.js | 7 + node_modules/loupe/lib/array.js | 20 + node_modules/loupe/lib/bigint.js | 7 + node_modules/loupe/lib/class.js | 18 + node_modules/loupe/lib/date.js | 14 + node_modules/loupe/lib/error.js | 34 + node_modules/loupe/lib/function.js | 10 + node_modules/loupe/lib/helpers.js | 177 + node_modules/loupe/lib/html.js | 40 + node_modules/loupe/lib/map.js | 27 + node_modules/loupe/lib/number.js | 18 + node_modules/loupe/lib/object.js | 31 + node_modules/loupe/lib/promise.js | 16 + node_modules/loupe/lib/regexp.js | 8 + node_modules/loupe/lib/set.js | 16 + node_modules/loupe/lib/string.js | 29 + node_modules/loupe/lib/symbol.js | 6 + node_modules/loupe/lib/typedarray.js | 45 + node_modules/loupe/loupe.js | 891 + node_modules/loupe/package.json | 141 + node_modules/magic-string/LICENSE | 7 + node_modules/magic-string/README.md | 325 + .../magic-string/dist/magic-string.cjs.d.ts | 289 + .../magic-string/dist/magic-string.cjs.js | 1594 + .../magic-string/dist/magic-string.cjs.js.map | 1 + .../magic-string/dist/magic-string.es.d.mts | 289 + .../magic-string/dist/magic-string.es.mjs | 1588 + .../magic-string/dist/magic-string.es.mjs.map | 1 + .../magic-string/dist/magic-string.umd.js | 1682 + .../magic-string/dist/magic-string.umd.js.map | 1 + node_modules/magic-string/package.json | 67 + node_modules/magicast/LICENSE | 21 + node_modules/magicast/README.md | 209 + node_modules/magicast/dist/helpers.cjs | 146 + node_modules/magicast/dist/helpers.d.cts | 70 + node_modules/magicast/dist/helpers.d.mts | 70 + node_modules/magicast/dist/helpers.d.ts | 70 + node_modules/magicast/dist/helpers.mjs | 138 + node_modules/magicast/dist/index.cjs | 8933 ++ node_modules/magicast/dist/index.d.cts | 53 + node_modules/magicast/dist/index.d.mts | 53 + node_modules/magicast/dist/index.d.ts | 53 + node_modules/magicast/dist/index.mjs | 8907 ++ .../dist/shared/magicast.54e2233d.d.cts | 270 + .../dist/shared/magicast.54e2233d.d.mts | 270 + .../dist/shared/magicast.54e2233d.d.ts | 270 + node_modules/magicast/helpers.d.ts | 1 + node_modules/magicast/package.json | 90 + node_modules/make-dir/index.d.ts | 66 + node_modules/make-dir/index.js | 155 + node_modules/make-dir/license | 9 + node_modules/make-dir/package.json | 63 + node_modules/make-dir/readme.md | 125 + node_modules/math-intrinsics/.eslintrc | 16 + .../math-intrinsics/.github/FUNDING.yml | 12 + node_modules/math-intrinsics/CHANGELOG.md | 24 + node_modules/math-intrinsics/LICENSE | 21 + node_modules/math-intrinsics/README.md | 50 + node_modules/math-intrinsics/abs.d.ts | 1 + node_modules/math-intrinsics/abs.js | 4 + .../constants/maxArrayLength.d.ts | 3 + .../constants/maxArrayLength.js | 4 + .../constants/maxSafeInteger.d.ts | 3 + .../constants/maxSafeInteger.js | 5 + .../math-intrinsics/constants/maxValue.d.ts | 3 + .../math-intrinsics/constants/maxValue.js | 5 + node_modules/math-intrinsics/floor.d.ts | 1 + node_modules/math-intrinsics/floor.js | 4 + node_modules/math-intrinsics/isFinite.d.ts | 3 + node_modules/math-intrinsics/isFinite.js | 12 + node_modules/math-intrinsics/isInteger.d.ts | 3 + node_modules/math-intrinsics/isInteger.js | 16 + node_modules/math-intrinsics/isNaN.d.ts | 1 + node_modules/math-intrinsics/isNaN.js | 6 + .../math-intrinsics/isNegativeZero.d.ts | 3 + .../math-intrinsics/isNegativeZero.js | 6 + node_modules/math-intrinsics/max.d.ts | 1 + node_modules/math-intrinsics/max.js | 4 + node_modules/math-intrinsics/min.d.ts | 1 + node_modules/math-intrinsics/min.js | 4 + node_modules/math-intrinsics/mod.d.ts | 3 + node_modules/math-intrinsics/mod.js | 9 + node_modules/math-intrinsics/package.json | 86 + node_modules/math-intrinsics/pow.d.ts | 1 + node_modules/math-intrinsics/pow.js | 4 + node_modules/math-intrinsics/round.d.ts | 1 + node_modules/math-intrinsics/round.js | 4 + node_modules/math-intrinsics/sign.d.ts | 3 + node_modules/math-intrinsics/sign.js | 11 + node_modules/math-intrinsics/test/index.js | 192 + node_modules/math-intrinsics/tsconfig.json | 3 + node_modules/merge-stream/LICENSE | 21 + node_modules/merge-stream/README.md | 78 + node_modules/merge-stream/index.js | 41 + node_modules/merge-stream/package.json | 19 + node_modules/mime-db/HISTORY.md | 507 + node_modules/mime-db/LICENSE | 23 + node_modules/mime-db/README.md | 100 + node_modules/mime-db/db.json | 8519 ++ node_modules/mime-db/index.js | 12 + node_modules/mime-db/package.json | 60 + node_modules/mime-types/HISTORY.md | 397 + node_modules/mime-types/LICENSE | 23 + node_modules/mime-types/README.md | 113 + node_modules/mime-types/index.js | 188 + node_modules/mime-types/package.json | 44 + node_modules/mimic-fn/index.d.ts | 52 + node_modules/mimic-fn/index.js | 71 + node_modules/mimic-fn/license | 9 + node_modules/mimic-fn/package.json | 45 + node_modules/mimic-fn/readme.md | 90 + node_modules/mimic-function/index.d.ts | 52 + node_modules/mimic-function/index.js | 72 + node_modules/mimic-function/license | 9 + node_modules/mimic-function/package.json | 49 + node_modules/mimic-function/readme.md | 80 + node_modules/minimatch/LICENSE | 15 + node_modules/minimatch/README.md | 267 + node_modules/minimatch/minimatch.js | 1005 + node_modules/minimatch/package.json | 33 + node_modules/mlly/LICENSE | 21 + node_modules/mlly/README.md | 561 + node_modules/mlly/dist/index.cjs | 2756 + node_modules/mlly/dist/index.d.cts | 564 + node_modules/mlly/dist/index.d.mts | 564 + node_modules/mlly/dist/index.d.ts | 564 + node_modules/mlly/dist/index.mjs | 2708 + node_modules/mlly/node_modules/pathe/LICENSE | 70 + .../mlly/node_modules/pathe/README.md | 73 + .../mlly/node_modules/pathe/dist/index.cjs | 39 + .../mlly/node_modules/pathe/dist/index.d.cts | 47 + .../mlly/node_modules/pathe/dist/index.d.mts | 47 + .../mlly/node_modules/pathe/dist/index.d.ts | 47 + .../mlly/node_modules/pathe/dist/index.mjs | 19 + .../pathe/dist/shared/pathe.BSlhyZSM.cjs | 266 + .../pathe/dist/shared/pathe.M-eThtNZ.mjs | 249 + .../mlly/node_modules/pathe/dist/utils.cjs | 82 + .../mlly/node_modules/pathe/dist/utils.d.cts | 32 + .../mlly/node_modules/pathe/dist/utils.d.mts | 32 + .../mlly/node_modules/pathe/dist/utils.d.ts | 32 + .../mlly/node_modules/pathe/dist/utils.mjs | 77 + .../mlly/node_modules/pathe/package.json | 61 + .../mlly/node_modules/pathe/utils.d.ts | 1 + node_modules/mlly/package.json | 55 + node_modules/ms/index.js | 162 + node_modules/ms/license.md | 21 + node_modules/ms/package.json | 38 + node_modules/ms/readme.md | 59 + node_modules/nanoid/LICENSE | 20 + node_modules/nanoid/README.md | 39 + node_modules/nanoid/async/index.browser.cjs | 69 + node_modules/nanoid/async/index.browser.js | 34 + node_modules/nanoid/async/index.cjs | 71 + node_modules/nanoid/async/index.d.ts | 56 + node_modules/nanoid/async/index.js | 35 + node_modules/nanoid/async/index.native.js | 26 + node_modules/nanoid/async/package.json | 12 + node_modules/nanoid/bin/nanoid.cjs | 55 + node_modules/nanoid/index.browser.cjs | 72 + node_modules/nanoid/index.browser.js | 34 + node_modules/nanoid/index.cjs | 85 + node_modules/nanoid/index.d.cts | 91 + node_modules/nanoid/index.d.ts | 91 + node_modules/nanoid/index.js | 45 + node_modules/nanoid/nanoid.js | 1 + node_modules/nanoid/non-secure/index.cjs | 34 + node_modules/nanoid/non-secure/index.d.ts | 33 + node_modules/nanoid/non-secure/index.js | 21 + node_modules/nanoid/non-secure/package.json | 6 + node_modules/nanoid/package.json | 89 + node_modules/nanoid/url-alphabet/index.cjs | 7 + node_modules/nanoid/url-alphabet/index.js | 3 + node_modules/nanoid/url-alphabet/package.json | 6 + node_modules/npm-run-path/index.d.ts | 90 + node_modules/npm-run-path/index.js | 52 + node_modules/npm-run-path/license | 9 + .../node_modules/path-key/index.d.ts | 31 + .../node_modules/path-key/index.js | 12 + .../node_modules/path-key/license | 9 + .../node_modules/path-key/package.json | 41 + .../node_modules/path-key/readme.md | 57 + node_modules/npm-run-path/package.json | 49 + node_modules/npm-run-path/readme.md | 104 + node_modules/nth-check/LICENSE | 11 + node_modules/nth-check/README.md | 136 + node_modules/nth-check/lib/compile.d.ts | 55 + node_modules/nth-check/lib/compile.d.ts.map | 1 + node_modules/nth-check/lib/compile.js | 121 + node_modules/nth-check/lib/compile.js.map | 1 + node_modules/nth-check/lib/esm/compile.d.ts | 55 + .../nth-check/lib/esm/compile.d.ts.map | 1 + node_modules/nth-check/lib/esm/compile.js | 113 + node_modules/nth-check/lib/esm/compile.js.map | 1 + node_modules/nth-check/lib/esm/index.d.ts | 59 + node_modules/nth-check/lib/esm/index.d.ts.map | 1 + node_modules/nth-check/lib/esm/index.js | 63 + node_modules/nth-check/lib/esm/index.js.map | 1 + node_modules/nth-check/lib/esm/package.json | 1 + node_modules/nth-check/lib/esm/parse.d.ts | 9 + node_modules/nth-check/lib/esm/parse.d.ts.map | 1 + node_modules/nth-check/lib/esm/parse.js | 73 + node_modules/nth-check/lib/esm/parse.js.map | 1 + node_modules/nth-check/lib/index.d.ts | 59 + node_modules/nth-check/lib/index.d.ts.map | 1 + node_modules/nth-check/lib/index.js | 70 + node_modules/nth-check/lib/index.js.map | 1 + node_modules/nth-check/lib/parse.d.ts | 9 + node_modules/nth-check/lib/parse.d.ts.map | 1 + node_modules/nth-check/lib/parse.js | 77 + node_modules/nth-check/lib/parse.js.map | 1 + node_modules/nth-check/package.json | 78 + node_modules/once/LICENSE | 15 + node_modules/once/README.md | 79 + node_modules/once/once.js | 42 + node_modules/once/package.json | 33 + node_modules/onetime/index.d.ts | 59 + node_modules/onetime/index.js | 41 + node_modules/onetime/license | 9 + node_modules/onetime/package.json | 49 + node_modules/onetime/readme.md | 88 + node_modules/ora/index.d.ts | 332 + node_modules/ora/index.js | 424 + node_modules/ora/license | 9 + node_modules/ora/package.json | 64 + node_modules/ora/readme.md | 329 + node_modules/p-limit/async-hooks-stub.js | 15 + node_modules/p-limit/index.d.ts | 38 + node_modules/p-limit/index.js | 71 + node_modules/p-limit/license | 9 + node_modules/p-limit/package.json | 64 + node_modules/p-limit/readme.md | 88 + .../parse5-htmlparser2-tree-adapter/LICENSE | 19 + .../parse5-htmlparser2-tree-adapter/README.md | 34 + .../dist/cjs/index.d.ts | 6 + .../dist/cjs/index.js | 214 + .../dist/cjs/package.json | 1 + .../dist/index.d.ts | 6 + .../dist/index.js | 213 + .../package.json | 40 + node_modules/parse5-parser-stream/LICENSE | 19 + node_modules/parse5-parser-stream/README.md | 34 + .../parse5-parser-stream/dist/cjs/index.d.ts | 85 + .../parse5-parser-stream/dist/cjs/index.js | 90 + .../dist/cjs/package.json | 1 + .../parse5-parser-stream/dist/index.d.ts | 85 + .../parse5-parser-stream/dist/index.js | 86 + .../parse5-parser-stream/package.json | 39 + node_modules/parse5/LICENSE | 19 + node_modules/parse5/README.md | 38 + .../parse5/dist/cjs/common/doctype.d.ts | 4 + .../parse5/dist/cjs/common/doctype.js | 118 + .../parse5/dist/cjs/common/error-codes.d.ts | 67 + .../parse5/dist/cjs/common/error-codes.js | 66 + .../dist/cjs/common/foreign-content.d.ts | 9 + .../parse5/dist/cjs/common/foreign-content.js | 237 + node_modules/parse5/dist/cjs/common/html.d.ts | 289 + node_modules/parse5/dist/cjs/common/html.js | 528 + .../parse5/dist/cjs/common/token.d.ts | 84 + node_modules/parse5/dist/cjs/common/token.js | 24 + .../parse5/dist/cjs/common/unicode.d.ts | 42 + .../parse5/dist/cjs/common/unicode.js | 70 + node_modules/parse5/dist/cjs/index.d.ts | 71 + node_modules/parse5/dist/cjs/index.js | 54 + node_modules/parse5/dist/cjs/package.json | 1 + .../cjs/parser/formatting-element-list.d.ts | 36 + .../cjs/parser/formatting-element-list.js | 114 + .../parse5/dist/cjs/parser/index.d.ts | 221 + node_modules/parse5/dist/cjs/parser/index.js | 3240 + .../dist/cjs/parser/open-element-stack.d.ts | 53 + .../dist/cjs/parser/open-element-stack.js | 328 + .../parse5/dist/cjs/serializer/index.d.ts | 60 + .../parse5/dist/cjs/serializer/index.js | 172 + .../parse5/dist/cjs/tokenizer/index.d.ts | 247 + .../parse5/dist/cjs/tokenizer/index.js | 2714 + .../dist/cjs/tokenizer/preprocessor.d.ts | 36 + .../parse5/dist/cjs/tokenizer/preprocessor.js | 200 + .../dist/cjs/tree-adapters/default.d.ts | 84 + .../parse5/dist/cjs/tree-adapters/default.js | 176 + .../dist/cjs/tree-adapters/interface.d.ts | 255 + .../dist/cjs/tree-adapters/interface.js | 2 + node_modules/parse5/dist/common/doctype.d.ts | 4 + node_modules/parse5/dist/common/doctype.js | 114 + .../parse5/dist/common/error-codes.d.ts | 67 + .../parse5/dist/common/error-codes.js | 63 + .../parse5/dist/common/foreign-content.d.ts | 9 + .../parse5/dist/common/foreign-content.js | 228 + node_modules/parse5/dist/common/html.d.ts | 289 + node_modules/parse5/dist/common/html.js | 523 + node_modules/parse5/dist/common/token.d.ts | 84 + node_modules/parse5/dist/common/token.js | 20 + node_modules/parse5/dist/common/unicode.d.ts | 42 + node_modules/parse5/dist/common/unicode.js | 62 + node_modules/parse5/dist/index.d.ts | 71 + node_modules/parse5/dist/index.js | 42 + .../dist/parser/formatting-element-list.d.ts | 36 + .../dist/parser/formatting-element-list.js | 110 + node_modules/parse5/dist/parser/index.d.ts | 221 + node_modules/parse5/dist/parser/index.js | 3245 + .../dist/parser/open-element-stack.d.ts | 53 + .../parse5/dist/parser/open-element-stack.js | 324 + .../parse5/dist/serializer/index.d.ts | 60 + node_modules/parse5/dist/serializer/index.js | 168 + node_modules/parse5/dist/tokenizer/index.d.ts | 247 + node_modules/parse5/dist/tokenizer/index.js | 2710 + .../parse5/dist/tokenizer/preprocessor.d.ts | 36 + .../parse5/dist/tokenizer/preprocessor.js | 196 + .../parse5/dist/tree-adapters/default.d.ts | 84 + .../parse5/dist/tree-adapters/default.js | 173 + .../parse5/dist/tree-adapters/interface.d.ts | 255 + .../parse5/dist/tree-adapters/interface.js | 1 + .../parse5/node_modules/entities/LICENSE | 11 + .../parse5/node_modules/entities/decode.d.ts | 1 + .../parse5/node_modules/entities/decode.js | 3 + .../dist/commonjs/decode-codepoint.d.ts | 19 + .../dist/commonjs/decode-codepoint.d.ts.map | 1 + .../dist/commonjs/decode-codepoint.js | 77 + .../dist/commonjs/decode-codepoint.js.map | 1 + .../entities/dist/commonjs/decode.d.ts | 209 + .../entities/dist/commonjs/decode.d.ts.map | 1 + .../entities/dist/commonjs/decode.js | 511 + .../entities/dist/commonjs/decode.js.map | 1 + .../entities/dist/commonjs/encode.d.ts | 22 + .../entities/dist/commonjs/encode.d.ts.map | 1 + .../entities/dist/commonjs/encode.js | 73 + .../entities/dist/commonjs/encode.js.map | 1 + .../entities/dist/commonjs/escape.d.ts | 43 + .../entities/dist/commonjs/escape.d.ts.map | 1 + .../entities/dist/commonjs/escape.js | 121 + .../entities/dist/commonjs/escape.js.map | 1 + .../commonjs/generated/decode-data-html.d.ts | 2 + .../generated/decode-data-html.d.ts.map | 1 + .../commonjs/generated/decode-data-html.js | 10 + .../generated/decode-data-html.js.map | 1 + .../commonjs/generated/decode-data-xml.d.ts | 2 + .../generated/decode-data-xml.d.ts.map | 1 + .../commonjs/generated/decode-data-xml.js | 10 + .../commonjs/generated/decode-data-xml.js.map | 1 + .../dist/commonjs/generated/encode-html.d.ts | 8 + .../commonjs/generated/encode-html.d.ts.map | 1 + .../dist/commonjs/generated/encode-html.js | 13 + .../commonjs/generated/encode-html.js.map | 1 + .../entities/dist/commonjs/index.d.ts | 96 + .../entities/dist/commonjs/index.d.ts.map | 1 + .../entities/dist/commonjs/index.js | 131 + .../entities/dist/commonjs/index.js.map | 1 + .../entities/dist/commonjs/package.json | 3 + .../entities/dist/esm/decode-codepoint.d.ts | 19 + .../dist/esm/decode-codepoint.d.ts.map | 1 + .../entities/dist/esm/decode-codepoint.js | 72 + .../entities/dist/esm/decode-codepoint.js.map | 1 + .../entities/dist/esm/decode.d.ts | 209 + .../entities/dist/esm/decode.d.ts.map | 1 + .../node_modules/entities/dist/esm/decode.js | 497 + .../entities/dist/esm/decode.js.map | 1 + .../entities/dist/esm/encode.d.ts | 22 + .../entities/dist/esm/encode.d.ts.map | 1 + .../node_modules/entities/dist/esm/encode.js | 69 + .../entities/dist/esm/encode.js.map | 1 + .../entities/dist/esm/escape.d.ts | 43 + .../entities/dist/esm/escape.d.ts.map | 1 + .../node_modules/entities/dist/esm/escape.js | 117 + .../entities/dist/esm/escape.js.map | 1 + .../dist/esm/generated/decode-data-html.d.ts | 2 + .../esm/generated/decode-data-html.d.ts.map | 1 + .../dist/esm/generated/decode-data-html.js | 7 + .../esm/generated/decode-data-html.js.map | 1 + .../dist/esm/generated/decode-data-xml.d.ts | 2 + .../esm/generated/decode-data-xml.d.ts.map | 1 + .../dist/esm/generated/decode-data-xml.js | 7 + .../dist/esm/generated/decode-data-xml.js.map | 1 + .../dist/esm/generated/encode-html.d.ts | 8 + .../dist/esm/generated/encode-html.d.ts.map | 1 + .../dist/esm/generated/encode-html.js | 10 + .../dist/esm/generated/encode-html.js.map | 1 + .../node_modules/entities/dist/esm/index.d.ts | 96 + .../entities/dist/esm/index.d.ts.map | 1 + .../node_modules/entities/dist/esm/index.js | 107 + .../entities/dist/esm/index.js.map | 1 + .../entities/dist/esm/package.json | 3 + .../parse5/node_modules/entities/escape.d.ts | 1 + .../parse5/node_modules/entities/escape.js | 3 + .../parse5/node_modules/entities/package.json | 118 + .../parse5/node_modules/entities/readme.md | 122 + .../entities/src/decode-codepoint.ts | 81 + .../node_modules/entities/src/decode.spec.ts | 320 + .../node_modules/entities/src/decode.ts | 620 + .../node_modules/entities/src/encode.spec.ts | 78 + .../node_modules/entities/src/encode.ts | 77 + .../node_modules/entities/src/escape.spec.ts | 14 + .../node_modules/entities/src/escape.ts | 148 + .../entities/src/generated/.eslintrc.json | 10 + .../src/generated/decode-data-html.ts | 8 + .../entities/src/generated/decode-data-xml.ts | 8 + .../entities/src/generated/encode-html.ts | 17 + .../node_modules/entities/src/index.spec.ts | 125 + .../parse5/node_modules/entities/src/index.ts | 188 + node_modules/parse5/package.json | 50 + node_modules/path-is-absolute/index.js | 20 + node_modules/path-is-absolute/license | 21 + node_modules/path-is-absolute/package.json | 43 + node_modules/path-is-absolute/readme.md | 59 + node_modules/path-key/index.d.ts | 40 + node_modules/path-key/index.js | 16 + node_modules/path-key/license | 9 + node_modules/path-key/package.json | 39 + node_modules/path-key/readme.md | 61 + node_modules/pathe/LICENSE | 44 + node_modules/pathe/README.md | 69 + node_modules/pathe/dist/index.cjs | 23 + node_modules/pathe/dist/index.d.cts | 36 + node_modules/pathe/dist/index.d.mts | 36 + node_modules/pathe/dist/index.d.ts | 36 + node_modules/pathe/dist/index.mjs | 1 + .../pathe/dist/shared/pathe.1f0a373c.cjs | 238 + .../pathe/dist/shared/pathe.ff20891b.mjs | 221 + node_modules/pathe/dist/utils.cjs | 58 + node_modules/pathe/dist/utils.d.cts | 5 + node_modules/pathe/dist/utils.d.mts | 5 + node_modules/pathe/dist/utils.d.ts | 5 + node_modules/pathe/dist/utils.mjs | 54 + node_modules/pathe/package.json | 48 + node_modules/pathe/utils.d.ts | 1 + node_modules/pathval/CHANGELOG.md | 18 + node_modules/pathval/LICENSE | 16 + node_modules/pathval/README.md | 147 + node_modules/pathval/index.js | 301 + node_modules/pathval/package.json | 80 + node_modules/pathval/pathval.js | 1 + node_modules/picocolors/LICENSE | 15 + node_modules/picocolors/README.md | 21 + node_modules/picocolors/package.json | 25 + node_modules/picocolors/picocolors.browser.js | 4 + node_modules/picocolors/picocolors.d.ts | 5 + node_modules/picocolors/picocolors.js | 75 + node_modules/picocolors/types.d.ts | 51 + node_modules/pkg-types/LICENSE | 44 + node_modules/pkg-types/README.md | 167 + node_modules/pkg-types/dist/index.cjs | 171 + node_modules/pkg-types/dist/index.d.cts | 411 + node_modules/pkg-types/dist/index.d.mts | 411 + node_modules/pkg-types/dist/index.d.ts | 411 + node_modules/pkg-types/dist/index.mjs | 157 + .../pkg-types/node_modules/pathe/LICENSE | 70 + .../pkg-types/node_modules/pathe/README.md | 73 + .../node_modules/pathe/dist/index.cjs | 39 + .../node_modules/pathe/dist/index.d.cts | 47 + .../node_modules/pathe/dist/index.d.mts | 47 + .../node_modules/pathe/dist/index.d.ts | 47 + .../node_modules/pathe/dist/index.mjs | 19 + .../pathe/dist/shared/pathe.BSlhyZSM.cjs | 266 + .../pathe/dist/shared/pathe.M-eThtNZ.mjs | 249 + .../node_modules/pathe/dist/utils.cjs | 82 + .../node_modules/pathe/dist/utils.d.cts | 32 + .../node_modules/pathe/dist/utils.d.mts | 32 + .../node_modules/pathe/dist/utils.d.ts | 32 + .../node_modules/pathe/dist/utils.mjs | 77 + .../pkg-types/node_modules/pathe/package.json | 61 + .../pkg-types/node_modules/pathe/utils.d.ts | 1 + node_modules/pkg-types/package.json | 47 + node_modules/postcss/LICENSE | 20 + node_modules/postcss/README.md | 29 + node_modules/postcss/lib/at-rule.d.ts | 140 + node_modules/postcss/lib/at-rule.js | 25 + node_modules/postcss/lib/comment.d.ts | 68 + node_modules/postcss/lib/comment.js | 13 + node_modules/postcss/lib/container.d.ts | 483 + node_modules/postcss/lib/container.js | 447 + .../postcss/lib/css-syntax-error.d.ts | 248 + node_modules/postcss/lib/css-syntax-error.js | 133 + node_modules/postcss/lib/declaration.d.ts | 151 + node_modules/postcss/lib/declaration.js | 24 + node_modules/postcss/lib/document.d.ts | 69 + node_modules/postcss/lib/document.js | 33 + node_modules/postcss/lib/fromJSON.d.ts | 9 + node_modules/postcss/lib/fromJSON.js | 54 + node_modules/postcss/lib/input.d.ts | 227 + node_modules/postcss/lib/input.js | 265 + node_modules/postcss/lib/lazy-result.d.ts | 190 + node_modules/postcss/lib/lazy-result.js | 550 + node_modules/postcss/lib/list.d.ts | 60 + node_modules/postcss/lib/list.js | 58 + node_modules/postcss/lib/map-generator.js | 376 + node_modules/postcss/lib/no-work-result.d.ts | 46 + node_modules/postcss/lib/no-work-result.js | 137 + node_modules/postcss/lib/node.d.ts | 556 + node_modules/postcss/lib/node.js | 449 + node_modules/postcss/lib/parse.d.ts | 9 + node_modules/postcss/lib/parse.js | 42 + node_modules/postcss/lib/parser.js | 611 + node_modules/postcss/lib/postcss.d.mts | 69 + node_modules/postcss/lib/postcss.d.ts | 458 + node_modules/postcss/lib/postcss.js | 101 + node_modules/postcss/lib/postcss.mjs | 30 + node_modules/postcss/lib/previous-map.d.ts | 81 + node_modules/postcss/lib/previous-map.js | 144 + node_modules/postcss/lib/processor.d.ts | 115 + node_modules/postcss/lib/processor.js | 67 + node_modules/postcss/lib/result.d.ts | 205 + node_modules/postcss/lib/result.js | 42 + node_modules/postcss/lib/root.d.ts | 87 + node_modules/postcss/lib/root.js | 61 + node_modules/postcss/lib/rule.d.ts | 126 + node_modules/postcss/lib/rule.js | 27 + node_modules/postcss/lib/stringifier.d.ts | 46 + node_modules/postcss/lib/stringifier.js | 353 + node_modules/postcss/lib/stringify.d.ts | 9 + node_modules/postcss/lib/stringify.js | 11 + node_modules/postcss/lib/symbols.js | 5 + .../postcss/lib/terminal-highlight.js | 70 + node_modules/postcss/lib/tokenize.js | 266 + node_modules/postcss/lib/warn-once.js | 13 + node_modules/postcss/lib/warning.d.ts | 147 + node_modules/postcss/lib/warning.js | 37 + node_modules/postcss/package.json | 88 + node_modules/pretty-format/LICENSE | 21 + node_modules/pretty-format/README.md | 463 + .../pretty-format/build/collections.js | 180 + node_modules/pretty-format/build/index.d.ts | 163 + node_modules/pretty-format/build/index.js | 478 + .../build/plugins/AsymmetricMatcher.js | 89 + .../build/plugins/DOMCollection.js | 67 + .../pretty-format/build/plugins/DOMElement.js | 101 + .../pretty-format/build/plugins/Immutable.js | 217 + .../build/plugins/ReactElement.js | 143 + .../build/plugins/ReactTestComponent.js | 66 + .../build/plugins/lib/escapeHTML.js | 16 + .../pretty-format/build/plugins/lib/markup.js | 113 + node_modules/pretty-format/build/types.js | 1 + node_modules/pretty-format/package.json | 43 + node_modules/proxy-from-env/.eslintrc | 29 + node_modules/proxy-from-env/.travis.yml | 10 + node_modules/proxy-from-env/LICENSE | 20 + node_modules/proxy-from-env/README.md | 131 + node_modules/proxy-from-env/index.js | 108 + node_modules/proxy-from-env/package.json | 34 + node_modules/proxy-from-env/test.js | 483 + node_modules/react-is/LICENSE | 21 + node_modules/react-is/README.md | 104 + .../react-is/cjs/react-is.development.js | 221 + .../react-is/cjs/react-is.production.min.js | 14 + node_modules/react-is/index.js | 7 + node_modules/react-is/package.json | 26 + .../react-is/umd/react-is.development.js | 220 + .../react-is/umd/react-is.production.min.js | 15 + node_modules/restore-cursor/index.d.ts | 15 + node_modules/restore-cursor/index.js | 15 + node_modules/restore-cursor/license | 9 + node_modules/restore-cursor/package.json | 57 + node_modules/restore-cursor/readme.md | 21 + node_modules/rollup/LICENSE.md | 679 + node_modules/rollup/README.md | 134 + node_modules/rollup/dist/bin/rollup | 1912 + node_modules/rollup/dist/es/getLogFilter.js | 64 + node_modules/rollup/dist/es/package.json | 1 + node_modules/rollup/dist/es/parseAst.js | 12 + node_modules/rollup/dist/es/rollup.js | 17 + .../rollup/dist/es/shared/node-entry.js | 24067 ++++++ .../rollup/dist/es/shared/parseAst.js | 2102 + node_modules/rollup/dist/es/shared/watch.js | 9297 +++ node_modules/rollup/dist/getLogFilter.d.ts | 5 + node_modules/rollup/dist/getLogFilter.js | 69 + node_modules/rollup/dist/loadConfigFile.d.ts | 20 + node_modules/rollup/dist/loadConfigFile.js | 29 + node_modules/rollup/dist/native.js | 161 + node_modules/rollup/dist/parseAst.d.ts | 4 + node_modules/rollup/dist/parseAst.js | 22 + node_modules/rollup/dist/rollup.d.ts | 1225 + node_modules/rollup/dist/rollup.js | 127 + .../rollup/dist/shared/fsevents-importer.js | 37 + node_modules/rollup/dist/shared/index.js | 9003 +++ .../rollup/dist/shared/loadConfigFile.js | 572 + node_modules/rollup/dist/shared/parseAst.js | 2337 + node_modules/rollup/dist/shared/rollup.js | 23989 ++++++ node_modules/rollup/dist/shared/watch-cli.js | 542 + node_modules/rollup/dist/shared/watch.js | 324 + node_modules/rollup/package.json | 288 + node_modules/safer-buffer/LICENSE | 21 + node_modules/safer-buffer/Porting-Buffer.md | 268 + node_modules/safer-buffer/Readme.md | 156 + node_modules/safer-buffer/dangerous.js | 58 + node_modules/safer-buffer/package.json | 34 + node_modules/safer-buffer/safer.js | 77 + node_modules/safer-buffer/tests.js | 406 + node_modules/semver/LICENSE | 15 + node_modules/semver/README.md | 665 + node_modules/semver/bin/semver.js | 191 + node_modules/semver/classes/comparator.js | 143 + node_modules/semver/classes/index.js | 7 + node_modules/semver/classes/range.js | 557 + node_modules/semver/classes/semver.js | 333 + node_modules/semver/functions/clean.js | 8 + node_modules/semver/functions/cmp.js | 54 + node_modules/semver/functions/coerce.js | 62 + .../semver/functions/compare-build.js | 9 + .../semver/functions/compare-loose.js | 5 + node_modules/semver/functions/compare.js | 7 + node_modules/semver/functions/diff.js | 60 + node_modules/semver/functions/eq.js | 5 + node_modules/semver/functions/gt.js | 5 + node_modules/semver/functions/gte.js | 5 + node_modules/semver/functions/inc.js | 21 + node_modules/semver/functions/lt.js | 5 + node_modules/semver/functions/lte.js | 5 + node_modules/semver/functions/major.js | 5 + node_modules/semver/functions/minor.js | 5 + node_modules/semver/functions/neq.js | 5 + node_modules/semver/functions/parse.js | 18 + node_modules/semver/functions/patch.js | 5 + node_modules/semver/functions/prerelease.js | 8 + node_modules/semver/functions/rcompare.js | 5 + node_modules/semver/functions/rsort.js | 5 + node_modules/semver/functions/satisfies.js | 12 + node_modules/semver/functions/sort.js | 5 + node_modules/semver/functions/valid.js | 8 + node_modules/semver/index.js | 91 + node_modules/semver/internal/constants.js | 37 + node_modules/semver/internal/debug.js | 11 + node_modules/semver/internal/identifiers.js | 29 + node_modules/semver/internal/lrucache.js | 42 + node_modules/semver/internal/parse-options.js | 17 + node_modules/semver/internal/re.js | 223 + node_modules/semver/package.json | 78 + node_modules/semver/preload.js | 4 + node_modules/semver/range.bnf | 16 + node_modules/semver/ranges/gtr.js | 6 + node_modules/semver/ranges/intersects.js | 9 + node_modules/semver/ranges/ltr.js | 6 + node_modules/semver/ranges/max-satisfying.js | 27 + node_modules/semver/ranges/min-satisfying.js | 26 + node_modules/semver/ranges/min-version.js | 63 + node_modules/semver/ranges/outside.js | 82 + node_modules/semver/ranges/simplify.js | 49 + node_modules/semver/ranges/subset.js | 249 + node_modules/semver/ranges/to-comparators.js | 10 + node_modules/semver/ranges/valid.js | 13 + node_modules/shebang-command/index.js | 19 + node_modules/shebang-command/license | 9 + node_modules/shebang-command/package.json | 34 + node_modules/shebang-command/readme.md | 34 + node_modules/shebang-regex/index.d.ts | 22 + node_modules/shebang-regex/index.js | 2 + node_modules/shebang-regex/license | 9 + node_modules/shebang-regex/package.json | 35 + node_modules/shebang-regex/readme.md | 33 + node_modules/siginfo/.travis.yml | 13 + node_modules/siginfo/LICENSE | 13 + node_modules/siginfo/README.md | 47 + node_modules/siginfo/index.js | 20 + node_modules/siginfo/package.json | 32 + node_modules/siginfo/test.js | 16 + node_modules/signal-exit/LICENSE.txt | 16 + node_modules/signal-exit/README.md | 74 + .../signal-exit/dist/cjs/browser.d.ts | 12 + .../signal-exit/dist/cjs/browser.d.ts.map | 1 + node_modules/signal-exit/dist/cjs/browser.js | 10 + .../signal-exit/dist/cjs/browser.js.map | 1 + node_modules/signal-exit/dist/cjs/index.d.ts | 48 + .../signal-exit/dist/cjs/index.d.ts.map | 1 + node_modules/signal-exit/dist/cjs/index.js | 279 + .../signal-exit/dist/cjs/index.js.map | 1 + .../signal-exit/dist/cjs/package.json | 3 + .../signal-exit/dist/cjs/signals.d.ts | 29 + .../signal-exit/dist/cjs/signals.d.ts.map | 1 + node_modules/signal-exit/dist/cjs/signals.js | 42 + .../signal-exit/dist/cjs/signals.js.map | 1 + .../signal-exit/dist/mjs/browser.d.ts | 12 + .../signal-exit/dist/mjs/browser.d.ts.map | 1 + node_modules/signal-exit/dist/mjs/browser.js | 4 + .../signal-exit/dist/mjs/browser.js.map | 1 + node_modules/signal-exit/dist/mjs/index.d.ts | 48 + .../signal-exit/dist/mjs/index.d.ts.map | 1 + node_modules/signal-exit/dist/mjs/index.js | 275 + .../signal-exit/dist/mjs/index.js.map | 1 + .../signal-exit/dist/mjs/package.json | 3 + .../signal-exit/dist/mjs/signals.d.ts | 29 + .../signal-exit/dist/mjs/signals.d.ts.map | 1 + node_modules/signal-exit/dist/mjs/signals.js | 39 + .../signal-exit/dist/mjs/signals.js.map | 1 + node_modules/signal-exit/package.json | 106 + node_modules/source-map-js/LICENSE | 28 + node_modules/source-map-js/README.md | 765 + node_modules/source-map-js/lib/array-set.js | 121 + node_modules/source-map-js/lib/base64-vlq.js | 140 + node_modules/source-map-js/lib/base64.js | 67 + .../source-map-js/lib/binary-search.js | 111 + .../source-map-js/lib/mapping-list.js | 79 + node_modules/source-map-js/lib/quick-sort.js | 132 + .../lib/source-map-consumer.d.ts | 1 + .../source-map-js/lib/source-map-consumer.js | 1188 + .../lib/source-map-generator.d.ts | 1 + .../source-map-js/lib/source-map-generator.js | 444 + .../source-map-js/lib/source-node.d.ts | 1 + node_modules/source-map-js/lib/source-node.js | 413 + node_modules/source-map-js/lib/util.js | 594 + node_modules/source-map-js/package.json | 71 + node_modules/source-map-js/source-map.d.ts | 104 + node_modules/source-map-js/source-map.js | 8 + node_modules/stackback/.npmignore | 1 + node_modules/stackback/.travis.yml | 4 + node_modules/stackback/README.md | 41 + node_modules/stackback/formatstack.js | 57 + node_modules/stackback/index.js | 46 + node_modules/stackback/package.json | 23 + node_modules/stackback/test.js | 24 + node_modules/std-env/LICENCE | 22 + node_modules/std-env/README.md | 118 + node_modules/std-env/dist/index.cjs | 1 + node_modules/std-env/dist/index.d.cts | 92 + node_modules/std-env/dist/index.d.mts | 92 + node_modules/std-env/dist/index.d.ts | 92 + node_modules/std-env/dist/index.mjs | 1 + node_modules/std-env/package.json | 46 + node_modules/stdin-discarder/index.d.ts | 13 + node_modules/stdin-discarder/index.js | 59 + node_modules/stdin-discarder/license | 9 + node_modules/stdin-discarder/package.json | 42 + node_modules/stdin-discarder/readme.md | 37 + node_modules/string-width/index.d.ts | 39 + node_modules/string-width/index.js | 82 + node_modules/string-width/license | 9 + node_modules/string-width/package.json | 64 + node_modules/string-width/readme.md | 66 + node_modules/strip-ansi/index.d.ts | 15 + node_modules/strip-ansi/index.js | 19 + node_modules/strip-ansi/license | 9 + node_modules/strip-ansi/package.json | 59 + node_modules/strip-ansi/readme.md | 37 + node_modules/strip-final-newline/index.js | 14 + node_modules/strip-final-newline/license | 9 + node_modules/strip-final-newline/package.json | 43 + node_modules/strip-final-newline/readme.md | 35 + node_modules/strip-literal/LICENSE | 21 + node_modules/strip-literal/README.md | 29 + node_modules/strip-literal/dist/index.cjs | 88 + node_modules/strip-literal/dist/index.d.cts | 35 + node_modules/strip-literal/dist/index.d.mts | 35 + node_modules/strip-literal/dist/index.d.ts | 35 + node_modules/strip-literal/dist/index.mjs | 80 + node_modules/strip-literal/package.json | 62 + node_modules/supports-color/browser.js | 5 + node_modules/supports-color/index.js | 135 + node_modules/supports-color/license | 9 + node_modules/supports-color/package.json | 53 + node_modules/supports-color/readme.md | 76 + node_modules/test-exclude/CHANGELOG.md | 352 + node_modules/test-exclude/LICENSE.txt | 14 + node_modules/test-exclude/README.md | 96 + node_modules/test-exclude/index.js | 161 + .../test-exclude/is-outside-dir-posix.js | 7 + .../test-exclude/is-outside-dir-win32.js | 10 + node_modules/test-exclude/is-outside-dir.js | 7 + node_modules/test-exclude/package.json | 45 + node_modules/tinybench/LICENSE | 21 + node_modules/tinybench/README.md | 422 + node_modules/tinybench/dist/index.cjs | 585 + node_modules/tinybench/dist/index.d.cts | 319 + node_modules/tinybench/dist/index.d.ts | 319 + node_modules/tinybench/dist/index.js | 560 + node_modules/tinybench/package.json | 27 + node_modules/tinypool/LICENSE | 24 + node_modules/tinypool/README.md | 21 + node_modules/tinypool/dist/entry/process.d.ts | 1 + node_modules/tinypool/dist/entry/utils.d.ts | 4 + node_modules/tinypool/dist/entry/worker.d.ts | 1 + .../tinypool/dist/esm/chunk-DSRZHYCS.js | 49 + .../tinypool/dist/esm/chunk-FJA3Y3DX.js | 38 + .../tinypool/dist/esm/chunk-OECBSOR6.js | 12 + .../tinypool/dist/esm/chunk-T6A5DJAH.js | 39 + .../tinypool/dist/esm/entry/process.js | 88 + node_modules/tinypool/dist/esm/entry/utils.js | 10 + .../tinypool/dist/esm/entry/worker.js | 102 + node_modules/tinypool/dist/esm/index.js | 1050 + node_modules/tinypool/dist/index.d.ts | 216 + node_modules/tinypool/package.json | 30 + node_modules/tinyspy/LICENCE | 21 + node_modules/tinyspy/README.md | 12 + node_modules/tinyspy/dist/index.cjs | 156 + node_modules/tinyspy/dist/index.d.ts | 82 + node_modules/tinyspy/dist/index.js | 126 + node_modules/tinyspy/package.json | 36 + node_modules/type-detect/LICENSE | 19 + node_modules/type-detect/README.md | 235 + node_modules/type-detect/index.d.ts | 1 + node_modules/type-detect/index.js | 129 + node_modules/type-detect/index.ts | 393 + node_modules/type-detect/package.json | 113 + node_modules/type-detect/type-detect.js | 139 + node_modules/ufo/LICENSE | 21 + node_modules/ufo/README.md | 582 + node_modules/ufo/dist/index.cjs | 698 + node_modules/ufo/dist/index.d.cts | 714 + node_modules/ufo/dist/index.d.mts | 714 + node_modules/ufo/dist/index.d.ts | 714 + node_modules/ufo/dist/index.mjs | 645 + node_modules/ufo/package.json | 48 + node_modules/undici/LICENSE | 21 + node_modules/undici/README.md | 685 + node_modules/undici/docs/docs/api/Agent.md | 84 + .../undici/docs/docs/api/BalancedPool.md | 99 + .../undici/docs/docs/api/CacheStorage.md | 30 + .../undici/docs/docs/api/CacheStore.md | 164 + node_modules/undici/docs/docs/api/Client.md | 285 + .../undici/docs/docs/api/ClientStats.md | 27 + .../undici/docs/docs/api/Connector.md | 115 + .../undici/docs/docs/api/ContentType.md | 57 + node_modules/undici/docs/docs/api/Cookies.md | 101 + node_modules/undici/docs/docs/api/Debug.md | 62 + .../docs/docs/api/DiagnosticsChannel.md | 313 + .../undici/docs/docs/api/Dispatcher.md | 1392 + .../undici/docs/docs/api/EnvHttpProxyAgent.md | 159 + node_modules/undici/docs/docs/api/Errors.md | 49 + .../undici/docs/docs/api/EventSource.md | 45 + node_modules/undici/docs/docs/api/Fetch.md | 52 + .../docs/docs/api/GlobalInstallation.md | 91 + .../undici/docs/docs/api/H2CClient.md | 263 + .../undici/docs/docs/api/MockAgent.md | 603 + .../undici/docs/docs/api/MockCallHistory.md | 197 + .../docs/docs/api/MockCallHistoryLog.md | 43 + .../undici/docs/docs/api/MockClient.md | 81 + .../undici/docs/docs/api/MockErrors.md | 12 + node_modules/undici/docs/docs/api/MockPool.md | 555 + node_modules/undici/docs/docs/api/Pool.md | 84 + .../undici/docs/docs/api/PoolStats.md | 35 + .../undici/docs/docs/api/ProxyAgent.md | 229 + .../undici/docs/docs/api/RedirectHandler.md | 96 + .../undici/docs/docs/api/RetryAgent.md | 50 + .../undici/docs/docs/api/RetryHandler.md | 118 + .../undici/docs/docs/api/RoundRobinPool.md | 145 + .../undici/docs/docs/api/SnapshotAgent.md | 616 + .../undici/docs/docs/api/Socks5ProxyAgent.md | 274 + node_modules/undici/docs/docs/api/Util.md | 25 + .../undici/docs/docs/api/WebSocket.md | 141 + .../undici/docs/docs/api/api-lifecycle.md | 91 + .../docs/best-practices/client-certificate.md | 64 + .../docs/docs/best-practices/crawling.md | 58 + .../docs/best-practices/mocking-request.md | 190 + .../undici/docs/docs/best-practices/proxy.md | 127 + .../best-practices/undici-vs-builtin-fetch.md | 137 + .../docs/docs/best-practices/writing-tests.md | 63 + node_modules/undici/index-fetch.js | 65 + node_modules/undici/index.d.ts | 3 + node_modules/undici/index.js | 234 + node_modules/undici/lib/api/abort-signal.js | 59 + node_modules/undici/lib/api/api-connect.js | 110 + node_modules/undici/lib/api/api-pipeline.js | 252 + node_modules/undici/lib/api/api-request.js | 214 + node_modules/undici/lib/api/api-stream.js | 209 + node_modules/undici/lib/api/api-upgrade.js | 111 + node_modules/undici/lib/api/index.js | 7 + node_modules/undici/lib/api/readable.js | 580 + .../undici/lib/cache/memory-cache-store.js | 234 + .../undici/lib/cache/sqlite-cache-store.js | 461 + node_modules/undici/lib/core/connect.js | 137 + node_modules/undici/lib/core/constants.js | 143 + node_modules/undici/lib/core/diagnostics.js | 225 + node_modules/undici/lib/core/errors.js | 477 + node_modules/undici/lib/core/request.js | 430 + node_modules/undici/lib/core/socks5-client.js | 407 + node_modules/undici/lib/core/socks5-utils.js | 203 + node_modules/undici/lib/core/symbols.js | 75 + node_modules/undici/lib/core/tree.js | 160 + node_modules/undici/lib/core/util.js | 972 + node_modules/undici/lib/dispatcher/agent.js | 158 + .../undici/lib/dispatcher/balanced-pool.js | 219 + .../undici/lib/dispatcher/client-h1.js | 1610 + .../undici/lib/dispatcher/client-h2.js | 995 + node_modules/undici/lib/dispatcher/client.js | 654 + .../undici/lib/dispatcher/dispatcher-base.js | 165 + .../undici/lib/dispatcher/dispatcher.js | 48 + .../lib/dispatcher/env-http-proxy-agent.js | 146 + .../undici/lib/dispatcher/fixed-queue.js | 135 + .../undici/lib/dispatcher/h2c-client.js | 51 + .../undici/lib/dispatcher/pool-base.js | 214 + node_modules/undici/lib/dispatcher/pool.js | 118 + .../undici/lib/dispatcher/proxy-agent.js | 318 + .../undici/lib/dispatcher/retry-agent.js | 35 + .../undici/lib/dispatcher/round-robin-pool.js | 137 + .../lib/dispatcher/socks5-proxy-agent.js | 249 + node_modules/undici/lib/encoding/index.js | 33 + node_modules/undici/lib/global.js | 50 + .../undici/lib/handler/cache-handler.js | 569 + .../lib/handler/cache-revalidation-handler.js | 124 + .../undici/lib/handler/decorator-handler.js | 67 + .../lib/handler/deduplication-handler.js | 460 + .../undici/lib/handler/redirect-handler.js | 238 + .../undici/lib/handler/retry-handler.js | 394 + .../undici/lib/handler/unwrap-handler.js | 100 + .../undici/lib/handler/wrap-handler.js | 105 + node_modules/undici/lib/interceptor/cache.js | 495 + .../undici/lib/interceptor/decompress.js | 259 + .../undici/lib/interceptor/deduplicate.js | 117 + node_modules/undici/lib/interceptor/dns.js | 571 + node_modules/undici/lib/interceptor/dump.js | 112 + .../undici/lib/interceptor/redirect.js | 21 + .../undici/lib/interceptor/response-error.js | 95 + node_modules/undici/lib/interceptor/retry.js | 19 + node_modules/undici/lib/llhttp/.gitkeep | 0 node_modules/undici/lib/llhttp/constants.d.ts | 195 + node_modules/undici/lib/llhttp/constants.js | 531 + node_modules/undici/lib/llhttp/llhttp-wasm.js | 15 + .../undici/lib/llhttp/llhttp_simd-wasm.js | 15 + node_modules/undici/lib/llhttp/utils.d.ts | 2 + node_modules/undici/lib/llhttp/utils.js | 12 + node_modules/undici/lib/mock/mock-agent.js | 232 + .../undici/lib/mock/mock-call-history.js | 248 + node_modules/undici/lib/mock/mock-client.js | 68 + node_modules/undici/lib/mock/mock-errors.js | 29 + .../undici/lib/mock/mock-interceptor.js | 209 + node_modules/undici/lib/mock/mock-pool.js | 68 + node_modules/undici/lib/mock/mock-symbols.js | 31 + node_modules/undici/lib/mock/mock-utils.js | 480 + .../mock/pending-interceptors-formatter.js | 43 + .../undici/lib/mock/snapshot-agent.js | 353 + .../undici/lib/mock/snapshot-recorder.js | 588 + .../undici/lib/mock/snapshot-utils.js | 158 + node_modules/undici/lib/util/cache.js | 407 + node_modules/undici/lib/util/date.js | 653 + node_modules/undici/lib/util/promise.js | 28 + .../undici/lib/util/runtime-features.js | 124 + node_modules/undici/lib/util/stats.js | 32 + node_modules/undici/lib/util/timers.js | 425 + node_modules/undici/lib/web/cache/cache.js | 864 + .../undici/lib/web/cache/cachestorage.js | 152 + node_modules/undici/lib/web/cache/util.js | 45 + .../undici/lib/web/cookies/constants.js | 12 + node_modules/undici/lib/web/cookies/index.js | 199 + node_modules/undici/lib/web/cookies/parse.js | 322 + node_modules/undici/lib/web/cookies/util.js | 282 + .../lib/web/eventsource/eventsource-stream.js | 399 + .../undici/lib/web/eventsource/eventsource.js | 501 + .../undici/lib/web/eventsource/util.js | 29 + node_modules/undici/lib/web/fetch/LICENSE | 21 + node_modules/undici/lib/web/fetch/body.js | 509 + .../undici/lib/web/fetch/constants.js | 131 + node_modules/undici/lib/web/fetch/data-url.js | 596 + .../undici/lib/web/fetch/formdata-parser.js | 575 + node_modules/undici/lib/web/fetch/formdata.js | 259 + node_modules/undici/lib/web/fetch/global.js | 40 + node_modules/undici/lib/web/fetch/headers.js | 719 + node_modules/undici/lib/web/fetch/index.js | 2381 + node_modules/undici/lib/web/fetch/request.js | 1115 + node_modules/undici/lib/web/fetch/response.js | 641 + node_modules/undici/lib/web/fetch/util.js | 1520 + node_modules/undici/lib/web/infra/index.js | 229 + .../lib/web/subresource-integrity/Readme.md | 9 + .../subresource-integrity.js | 307 + node_modules/undici/lib/web/webidl/index.js | 1006 + .../undici/lib/web/websocket/connection.js | 329 + .../undici/lib/web/websocket/constants.js | 126 + .../undici/lib/web/websocket/events.js | 331 + .../undici/lib/web/websocket/frame.js | 133 + .../lib/web/websocket/permessage-deflate.js | 118 + .../undici/lib/web/websocket/receiver.js | 450 + .../undici/lib/web/websocket/sender.js | 109 + .../web/websocket/stream/websocketerror.js | 104 + .../web/websocket/stream/websocketstream.js | 497 + node_modules/undici/lib/web/websocket/util.js | 347 + .../undici/lib/web/websocket/websocket.js | 739 + node_modules/undici/package.json | 152 + node_modules/undici/scripts/strip-comments.js | 10 + node_modules/undici/types/README.md | 6 + node_modules/undici/types/agent.d.ts | 32 + node_modules/undici/types/api.d.ts | 43 + node_modules/undici/types/balanced-pool.d.ts | 30 + .../undici/types/cache-interceptor.d.ts | 179 + node_modules/undici/types/cache.d.ts | 36 + node_modules/undici/types/client-stats.d.ts | 15 + node_modules/undici/types/client.d.ts | 123 + node_modules/undici/types/connector.d.ts | 36 + node_modules/undici/types/content-type.d.ts | 21 + node_modules/undici/types/cookies.d.ts | 30 + .../undici/types/diagnostics-channel.d.ts | 74 + node_modules/undici/types/dispatcher.d.ts | 279 + .../undici/types/env-http-proxy-agent.d.ts | 22 + node_modules/undici/types/errors.d.ts | 177 + node_modules/undici/types/eventsource.d.ts | 66 + node_modules/undici/types/fetch.d.ts | 211 + node_modules/undici/types/formdata.d.ts | 108 + .../undici/types/global-dispatcher.d.ts | 9 + node_modules/undici/types/global-origin.d.ts | 7 + node_modules/undici/types/h2c-client.d.ts | 73 + node_modules/undici/types/handlers.d.ts | 15 + node_modules/undici/types/header.d.ts | 160 + node_modules/undici/types/index.d.ts | 91 + node_modules/undici/types/interceptors.d.ts | 80 + node_modules/undici/types/mock-agent.d.ts | 68 + .../undici/types/mock-call-history.d.ts | 111 + node_modules/undici/types/mock-client.d.ts | 27 + node_modules/undici/types/mock-errors.d.ts | 12 + .../undici/types/mock-interceptor.d.ts | 94 + node_modules/undici/types/mock-pool.d.ts | 27 + node_modules/undici/types/patch.d.ts | 29 + node_modules/undici/types/pool-stats.d.ts | 19 + node_modules/undici/types/pool.d.ts | 41 + node_modules/undici/types/proxy-agent.d.ts | 29 + node_modules/undici/types/readable.d.ts | 68 + node_modules/undici/types/retry-agent.d.ts | 8 + node_modules/undici/types/retry-handler.d.ts | 125 + .../undici/types/round-robin-pool.d.ts | 41 + node_modules/undici/types/snapshot-agent.d.ts | 109 + .../undici/types/socks5-proxy-agent.d.ts | 25 + node_modules/undici/types/util.d.ts | 18 + node_modules/undici/types/utility.d.ts | 7 + node_modules/undici/types/webidl.d.ts | 347 + node_modules/undici/types/websocket.d.ts | 188 + node_modules/vite-node/LICENSE | 21 + node_modules/vite-node/README.md | 186 + node_modules/vite-node/dist/chunk-hmr.cjs | 255 + node_modules/vite-node/dist/chunk-hmr.mjs | 247 + node_modules/vite-node/dist/cli.cjs | 126 + node_modules/vite-node/dist/cli.d.ts | 21 + node_modules/vite-node/dist/cli.mjs | 124 + node_modules/vite-node/dist/client.cjs | 454 + node_modules/vite-node/dist/client.d.ts | 2 + node_modules/vite-node/dist/client.mjs | 450 + node_modules/vite-node/dist/constants.cjs | 39 + node_modules/vite-node/dist/constants.d.ts | 5 + node_modules/vite-node/dist/constants.mjs | 35 + node_modules/vite-node/dist/hmr.cjs | 21 + node_modules/vite-node/dist/hmr.d.ts | 54 + node_modules/vite-node/dist/hmr.mjs | 9 + .../vite-node/dist/index-O2IrwHKf.d.ts | 309 + node_modules/vite-node/dist/index.cjs | 2 + node_modules/vite-node/dist/index.d.ts | 2 + node_modules/vite-node/dist/index.mjs | 1 + node_modules/vite-node/dist/server.cjs | 445 + node_modules/vite-node/dist/server.d.ts | 61 + node_modules/vite-node/dist/server.mjs | 441 + node_modules/vite-node/dist/source-map.cjs | 918 + node_modules/vite-node/dist/source-map.d.ts | 14 + node_modules/vite-node/dist/source-map.mjs | 914 + .../dist/trace-mapping.d-xyIfZtPm.d.ts | 54 + node_modules/vite-node/dist/types.cjs | 2 + node_modules/vite-node/dist/types.d.ts | 2 + node_modules/vite-node/dist/types.mjs | 1 + node_modules/vite-node/dist/utils.cjs | 194 + node_modules/vite-node/dist/utils.d.ts | 33 + node_modules/vite-node/dist/utils.mjs | 175 + node_modules/vite-node/package.json | 95 + node_modules/vite-node/vite-node.mjs | 2 + node_modules/vite/LICENSE.md | 3423 + node_modules/vite/README.md | 20 + node_modules/vite/bin/openChrome.applescript | 95 + node_modules/vite/bin/vite.js | 61 + node_modules/vite/client.d.ts | 256 + node_modules/vite/dist/client/client.mjs | 829 + node_modules/vite/dist/client/env.mjs | 24 + .../vite/dist/node-cjs/publicUtils.cjs | 6172 ++ .../vite/dist/node/chunks/dep-BB45zftN.js | 993 + .../vite/dist/node/chunks/dep-BK3b2jBa.js | 67048 ++++++++++++++++ .../vite/dist/node/chunks/dep-D-7KCb9p.js | 7960 ++ .../vite/dist/node/chunks/dep-Dnp7gl8U.js | 7004 ++ .../vite/dist/node/chunks/dep-IQS-Za7F.js | 561 + node_modules/vite/dist/node/cli.js | 917 + node_modules/vite/dist/node/constants.js | 113 + node_modules/vite/dist/node/index.d.ts | 3627 + node_modules/vite/dist/node/index.js | 261 + node_modules/vite/dist/node/runtime.d.ts | 63 + node_modules/vite/dist/node/runtime.js | 1066 + .../vite/dist/node/types.d-aGj9QkWt.d.ts | 281 + node_modules/vite/index.cjs | 60 + node_modules/vite/index.d.cts | 6 + node_modules/vite/package.json | 191 + node_modules/vite/types/customEvent.d.ts | 39 + node_modules/vite/types/hmrPayload.d.ts | 65 + node_modules/vite/types/hot.d.ts | 36 + node_modules/vite/types/import-meta.d.ts | 5 + node_modules/vite/types/importGlob.d.ts | 75 + node_modules/vite/types/importMeta.d.ts | 22 + node_modules/vite/types/metadata.d.ts | 10 + node_modules/vite/types/package.json | 4 + node_modules/vitest/LICENSE.md | 1530 + node_modules/vitest/README.md | 7 + node_modules/vitest/browser.d.ts | 1 + node_modules/vitest/config.d.ts | 1 + node_modules/vitest/coverage.d.ts | 1 + node_modules/vitest/dist/browser.d.ts | 60 + node_modules/vitest/dist/browser.js | 7 + .../dist/chunks/environments-node.vcoXCoKs.js | 19 + .../dist/chunks/install-pkg.LE8oaA1t.js | 319 + .../chunks/integrations-globals.kw4co3rx.js | 31 + .../vitest/dist/chunks/node-git.Hw101KjS.js | 70 + .../dist/chunks/runtime-console.EO5ha7qv.js | 131 + .../chunks/runtime-runBaseTests.oAvMKtQC.js | 125 + node_modules/vitest/dist/cli-wrapper.js | 119 + node_modules/vitest/dist/cli.js | 9 + node_modules/vitest/dist/config.cjs | 135 + node_modules/vitest/dist/config.d.ts | 16 + node_modules/vitest/dist/config.js | 122 + node_modules/vitest/dist/coverage.d.ts | 164 + node_modules/vitest/dist/coverage.js | 186 + node_modules/vitest/dist/environments.d.ts | 35 + node_modules/vitest/dist/environments.js | 2 + node_modules/vitest/dist/execute.d.ts | 151 + node_modules/vitest/dist/execute.js | 11 + node_modules/vitest/dist/index.d.ts | 713 + node_modules/vitest/dist/index.js | 30 + node_modules/vitest/dist/node.d.ts | 68 + node_modules/vitest/dist/node.js | 68 + node_modules/vitest/dist/path.js | 7 + .../vitest/dist/reporters-w_64AS5f.d.ts | 2899 + node_modules/vitest/dist/reporters.d.ts | 16 + node_modules/vitest/dist/reporters.js | 36 + node_modules/vitest/dist/runners.d.ts | 48 + node_modules/vitest/dist/runners.js | 257 + node_modules/vitest/dist/snapshot.d.ts | 9 + node_modules/vitest/dist/snapshot.js | 8 + node_modules/vitest/dist/spy.js | 1 + node_modules/vitest/dist/suite-dWqIFb_-.d.ts | 10 + node_modules/vitest/dist/suite.d.ts | 17 + node_modules/vitest/dist/suite.js | 9 + node_modules/vitest/dist/utils.d.ts | 6 + node_modules/vitest/dist/utils.js | 7 + .../dist/vendor/_commonjsHelpers.jjO7Zipk.js | 7 + .../vitest/dist/vendor/base.5NT-gWu5.js | 119 + .../vitest/dist/vendor/base.Ybri3C14.js | 38 + .../vitest/dist/vendor/benchmark.yGkUTKnC.js | 41 + .../vitest/dist/vendor/cac.cdAtVkJZ.js | 1429 + .../vitest/dist/vendor/cli-api.OdDWuB7Y.js | 18383 +++++ .../vitest/dist/vendor/constants.5J7I254_.js | 65 + .../vitest/dist/vendor/coverage.E7sG1b3r.js | 53 + .../vitest/dist/vendor/date.Ns1pGd_X.js | 51 + .../vitest/dist/vendor/env.AtSIuHFg.js | 7 + .../vitest/dist/vendor/execute.fL3szUAI.js | 594 + .../vitest/dist/vendor/global.CkGT_TMy.js | 23 + .../vitest/dist/vendor/index.-xs08BYx.js | 4828 ++ .../vitest/dist/vendor/index.8bPxjt7g.js | 99 + .../vitest/dist/vendor/index.DpVgvm2P.js | 99 + .../vitest/dist/vendor/index.GVFv9dZ0.js | 678 + .../vitest/dist/vendor/index.SMVOaj7F.js | 22 + .../vitest/dist/vendor/index.dI9lHwVn.js | 129 + .../vitest/dist/vendor/index.xL8XjTLv.js | 3962 + .../vitest/dist/vendor/inspector.IgLX3ur5.js | 54 + .../vitest/dist/vendor/rpc.joBhAkyK.js | 94 + .../vitest/dist/vendor/run-once.Olz_Zkd8.js | 27 + .../dist/vendor/setup-common.8nJLd4ay.js | 55 + .../vitest/dist/vendor/tasks.IknbGB2n.js | 14 + .../vitest/dist/vendor/utils.0uYuCbzo.js | 49 + .../vitest/dist/vendor/utils.dEtNIEgr.js | 217 + .../vitest/dist/vendor/vi.YFlodzP_.js | 3551 + .../vitest/dist/vendor/vm.QEE48c0T.js | 815 + node_modules/vitest/dist/worker.js | 107 + node_modules/vitest/dist/workers.d.ts | 40 + node_modules/vitest/dist/workers.js | 31 + node_modules/vitest/dist/workers/forks.js | 33 + .../vitest/dist/workers/runVmTests.js | 84 + node_modules/vitest/dist/workers/threads.js | 26 + node_modules/vitest/dist/workers/vmForks.js | 43 + node_modules/vitest/dist/workers/vmThreads.js | 36 + node_modules/vitest/environments.d.ts | 1 + node_modules/vitest/execute.d.ts | 1 + node_modules/vitest/globals.d.ts | 19 + node_modules/vitest/import-meta.d.ts | 5 + node_modules/vitest/importMeta.d.ts | 4 + node_modules/vitest/index.cjs | 5 + node_modules/vitest/index.d.cts | 1 + node_modules/vitest/jsdom.d.ts | 6 + node_modules/vitest/node.d.ts | 1 + node_modules/vitest/package.json | 203 + node_modules/vitest/reporters.d.ts | 1 + node_modules/vitest/runners.d.ts | 1 + node_modules/vitest/snapshot.d.ts | 1 + node_modules/vitest/suite.d.ts | 1 + node_modules/vitest/suppress-warnings.cjs | 23 + node_modules/vitest/utils.d.ts | 1 + node_modules/vitest/vitest.mjs | 2 + node_modules/vitest/workers.d.ts | 1 + node_modules/whatwg-encoding/LICENSE.txt | 7 + node_modules/whatwg-encoding/README.md | 50 + .../whatwg-encoding/lib/labels-to-names.json | 217 + .../whatwg-encoding/lib/supported-names.json | 38 + .../whatwg-encoding/lib/whatwg-encoding.js | 60 + node_modules/whatwg-encoding/package.json | 32 + node_modules/whatwg-mimetype/LICENSE.txt | 7 + node_modules/whatwg-mimetype/README.md | 101 + .../lib/mime-type-parameters.js | 70 + node_modules/whatwg-mimetype/lib/mime-type.js | 127 + node_modules/whatwg-mimetype/lib/parser.js | 105 + .../whatwg-mimetype/lib/serializer.js | 25 + node_modules/whatwg-mimetype/lib/utils.js | 60 + node_modules/whatwg-mimetype/package.json | 45 + node_modules/which/CHANGELOG.md | 166 + node_modules/which/LICENSE | 15 + node_modules/which/README.md | 54 + node_modules/which/bin/node-which | 52 + node_modules/which/package.json | 43 + node_modules/which/which.js | 125 + .../why-is-node-running/.github/FUNDING.yml | 1 + node_modules/why-is-node-running/LICENSE | 21 + node_modules/why-is-node-running/README.md | 104 + node_modules/why-is-node-running/cli.js | 18 + node_modules/why-is-node-running/example.js | 15 + node_modules/why-is-node-running/include.js | 3 + node_modules/why-is-node-running/index.js | 67 + node_modules/why-is-node-running/package.json | 39 + node_modules/wrappy/LICENSE | 15 + node_modules/wrappy/README.md | 36 + node_modules/wrappy/package.json | 29 + node_modules/wrappy/wrappy.js | 33 + node_modules/yocto-queue/index.d.ts | 75 + node_modules/yocto-queue/index.js | 90 + node_modules/yocto-queue/license | 9 + node_modules/yocto-queue/package.json | 48 + node_modules/yocto-queue/readme.md | 80 + package-lock.json | 3034 + package.json | 2 +- 3321 files changed, 662921 insertions(+), 2 deletions(-) create mode 100644 node_modules/.bin/acorn create mode 100644 node_modules/.bin/acorn.cmd create mode 100644 node_modules/.bin/acorn.ps1 create mode 100644 node_modules/.bin/esbuild create mode 100644 node_modules/.bin/esbuild.cmd create mode 100644 node_modules/.bin/esbuild.ps1 create mode 100644 node_modules/.bin/nanoid create mode 100644 node_modules/.bin/nanoid.cmd create mode 100644 node_modules/.bin/nanoid.ps1 create mode 100644 node_modules/.bin/node-which create mode 100644 node_modules/.bin/node-which.cmd create mode 100644 node_modules/.bin/node-which.ps1 create mode 100644 node_modules/.bin/parser create mode 100644 node_modules/.bin/parser.cmd create mode 100644 node_modules/.bin/parser.ps1 create mode 100644 node_modules/.bin/rollup create mode 100644 node_modules/.bin/rollup.cmd create mode 100644 node_modules/.bin/rollup.ps1 create mode 100644 node_modules/.bin/semver create mode 100644 node_modules/.bin/semver.cmd create mode 100644 node_modules/.bin/semver.ps1 create mode 100644 node_modules/.bin/vite create mode 100644 node_modules/.bin/vite-node create mode 100644 node_modules/.bin/vite-node.cmd create mode 100644 node_modules/.bin/vite-node.ps1 create mode 100644 node_modules/.bin/vite.cmd create mode 100644 node_modules/.bin/vite.ps1 create mode 100644 node_modules/.bin/vitest create mode 100644 node_modules/.bin/vitest.cmd create mode 100644 node_modules/.bin/vitest.ps1 create mode 100644 node_modules/.bin/why-is-node-running create mode 100644 node_modules/.bin/why-is-node-running.cmd create mode 100644 node_modules/.bin/why-is-node-running.ps1 create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/@ampproject/remapping/LICENSE create mode 100644 node_modules/@ampproject/remapping/README.md create mode 100644 node_modules/@ampproject/remapping/dist/remapping.mjs create mode 100644 node_modules/@ampproject/remapping/dist/remapping.mjs.map create mode 100644 node_modules/@ampproject/remapping/dist/remapping.umd.js create mode 100644 node_modules/@ampproject/remapping/dist/remapping.umd.js.map create mode 100644 node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts create mode 100644 node_modules/@ampproject/remapping/dist/types/remapping.d.ts create mode 100644 node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts create mode 100644 node_modules/@ampproject/remapping/dist/types/source-map.d.ts create mode 100644 node_modules/@ampproject/remapping/dist/types/types.d.ts create mode 100644 node_modules/@ampproject/remapping/package.json create mode 100644 node_modules/@babel/helper-string-parser/LICENSE create mode 100644 node_modules/@babel/helper-string-parser/README.md create mode 100644 node_modules/@babel/helper-string-parser/lib/index.js create mode 100644 node_modules/@babel/helper-string-parser/lib/index.js.map create mode 100644 node_modules/@babel/helper-string-parser/package.json create mode 100644 node_modules/@babel/helper-validator-identifier/LICENSE create mode 100644 node_modules/@babel/helper-validator-identifier/README.md create mode 100644 node_modules/@babel/helper-validator-identifier/lib/identifier.js create mode 100644 node_modules/@babel/helper-validator-identifier/lib/identifier.js.map create mode 100644 node_modules/@babel/helper-validator-identifier/lib/index.js create mode 100644 node_modules/@babel/helper-validator-identifier/lib/index.js.map create mode 100644 node_modules/@babel/helper-validator-identifier/lib/keyword.js create mode 100644 node_modules/@babel/helper-validator-identifier/lib/keyword.js.map create mode 100644 node_modules/@babel/helper-validator-identifier/package.json create mode 100644 node_modules/@babel/parser/CHANGELOG.md create mode 100644 node_modules/@babel/parser/LICENSE create mode 100644 node_modules/@babel/parser/README.md create mode 100644 node_modules/@babel/parser/bin/babel-parser.js create mode 100644 node_modules/@babel/parser/lib/index.js create mode 100644 node_modules/@babel/parser/lib/index.js.map create mode 100644 node_modules/@babel/parser/package.json create mode 100644 node_modules/@babel/parser/typings/babel-parser.d.ts create mode 100644 node_modules/@babel/types/LICENSE create mode 100644 node_modules/@babel/types/README.md create mode 100644 node_modules/@babel/types/lib/asserts/assertNode.js create mode 100644 node_modules/@babel/types/lib/asserts/assertNode.js.map create mode 100644 node_modules/@babel/types/lib/asserts/generated/index.js create mode 100644 node_modules/@babel/types/lib/asserts/generated/index.js.map create mode 100644 node_modules/@babel/types/lib/ast-types/generated/index.js create mode 100644 node_modules/@babel/types/lib/ast-types/generated/index.js.map create mode 100644 node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js create mode 100644 node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js.map create mode 100644 node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js create mode 100644 node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js.map create mode 100644 node_modules/@babel/types/lib/builders/generated/index.js create mode 100644 node_modules/@babel/types/lib/builders/generated/index.js.map create mode 100644 node_modules/@babel/types/lib/builders/generated/lowercase.js create mode 100644 node_modules/@babel/types/lib/builders/generated/lowercase.js.map create mode 100644 node_modules/@babel/types/lib/builders/generated/uppercase.js create mode 100644 node_modules/@babel/types/lib/builders/generated/uppercase.js.map create mode 100644 node_modules/@babel/types/lib/builders/productions.js create mode 100644 node_modules/@babel/types/lib/builders/productions.js.map create mode 100644 node_modules/@babel/types/lib/builders/react/buildChildren.js create mode 100644 node_modules/@babel/types/lib/builders/react/buildChildren.js.map create mode 100644 node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js create mode 100644 node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js.map create mode 100644 node_modules/@babel/types/lib/builders/validateNode.js create mode 100644 node_modules/@babel/types/lib/builders/validateNode.js.map create mode 100644 node_modules/@babel/types/lib/clone/clone.js create mode 100644 node_modules/@babel/types/lib/clone/clone.js.map create mode 100644 node_modules/@babel/types/lib/clone/cloneDeep.js create mode 100644 node_modules/@babel/types/lib/clone/cloneDeep.js.map create mode 100644 node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js create mode 100644 node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js.map create mode 100644 node_modules/@babel/types/lib/clone/cloneNode.js create mode 100644 node_modules/@babel/types/lib/clone/cloneNode.js.map create mode 100644 node_modules/@babel/types/lib/clone/cloneWithoutLoc.js create mode 100644 node_modules/@babel/types/lib/clone/cloneWithoutLoc.js.map create mode 100644 node_modules/@babel/types/lib/comments/addComment.js create mode 100644 node_modules/@babel/types/lib/comments/addComment.js.map create mode 100644 node_modules/@babel/types/lib/comments/addComments.js create mode 100644 node_modules/@babel/types/lib/comments/addComments.js.map create mode 100644 node_modules/@babel/types/lib/comments/inheritInnerComments.js create mode 100644 node_modules/@babel/types/lib/comments/inheritInnerComments.js.map create mode 100644 node_modules/@babel/types/lib/comments/inheritLeadingComments.js create mode 100644 node_modules/@babel/types/lib/comments/inheritLeadingComments.js.map create mode 100644 node_modules/@babel/types/lib/comments/inheritTrailingComments.js create mode 100644 node_modules/@babel/types/lib/comments/inheritTrailingComments.js.map create mode 100644 node_modules/@babel/types/lib/comments/inheritsComments.js create mode 100644 node_modules/@babel/types/lib/comments/inheritsComments.js.map create mode 100644 node_modules/@babel/types/lib/comments/removeComments.js create mode 100644 node_modules/@babel/types/lib/comments/removeComments.js.map create mode 100644 node_modules/@babel/types/lib/constants/generated/index.js create mode 100644 node_modules/@babel/types/lib/constants/generated/index.js.map create mode 100644 node_modules/@babel/types/lib/constants/index.js create mode 100644 node_modules/@babel/types/lib/constants/index.js.map create mode 100644 node_modules/@babel/types/lib/converters/ensureBlock.js create mode 100644 node_modules/@babel/types/lib/converters/ensureBlock.js.map create mode 100644 node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js create mode 100644 node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js.map create mode 100644 node_modules/@babel/types/lib/converters/toBindingIdentifierName.js create mode 100644 node_modules/@babel/types/lib/converters/toBindingIdentifierName.js.map create mode 100644 node_modules/@babel/types/lib/converters/toBlock.js create mode 100644 node_modules/@babel/types/lib/converters/toBlock.js.map create mode 100644 node_modules/@babel/types/lib/converters/toComputedKey.js create mode 100644 node_modules/@babel/types/lib/converters/toComputedKey.js.map create mode 100644 node_modules/@babel/types/lib/converters/toExpression.js create mode 100644 node_modules/@babel/types/lib/converters/toExpression.js.map create mode 100644 node_modules/@babel/types/lib/converters/toIdentifier.js create mode 100644 node_modules/@babel/types/lib/converters/toIdentifier.js.map create mode 100644 node_modules/@babel/types/lib/converters/toKeyAlias.js create mode 100644 node_modules/@babel/types/lib/converters/toKeyAlias.js.map create mode 100644 node_modules/@babel/types/lib/converters/toSequenceExpression.js create mode 100644 node_modules/@babel/types/lib/converters/toSequenceExpression.js.map create mode 100644 node_modules/@babel/types/lib/converters/toStatement.js create mode 100644 node_modules/@babel/types/lib/converters/toStatement.js.map create mode 100644 node_modules/@babel/types/lib/converters/valueToNode.js create mode 100644 node_modules/@babel/types/lib/converters/valueToNode.js.map create mode 100644 node_modules/@babel/types/lib/definitions/core.js create mode 100644 node_modules/@babel/types/lib/definitions/core.js.map create mode 100644 node_modules/@babel/types/lib/definitions/deprecated-aliases.js create mode 100644 node_modules/@babel/types/lib/definitions/deprecated-aliases.js.map create mode 100644 node_modules/@babel/types/lib/definitions/experimental.js create mode 100644 node_modules/@babel/types/lib/definitions/experimental.js.map create mode 100644 node_modules/@babel/types/lib/definitions/flow.js create mode 100644 node_modules/@babel/types/lib/definitions/flow.js.map create mode 100644 node_modules/@babel/types/lib/definitions/index.js create mode 100644 node_modules/@babel/types/lib/definitions/index.js.map create mode 100644 node_modules/@babel/types/lib/definitions/jsx.js create mode 100644 node_modules/@babel/types/lib/definitions/jsx.js.map create mode 100644 node_modules/@babel/types/lib/definitions/misc.js create mode 100644 node_modules/@babel/types/lib/definitions/misc.js.map create mode 100644 node_modules/@babel/types/lib/definitions/placeholders.js create mode 100644 node_modules/@babel/types/lib/definitions/placeholders.js.map create mode 100644 node_modules/@babel/types/lib/definitions/typescript.js create mode 100644 node_modules/@babel/types/lib/definitions/typescript.js.map create mode 100644 node_modules/@babel/types/lib/definitions/utils.js create mode 100644 node_modules/@babel/types/lib/definitions/utils.js.map create mode 100644 node_modules/@babel/types/lib/index-legacy.d.ts create mode 100644 node_modules/@babel/types/lib/index.d.ts create mode 100644 node_modules/@babel/types/lib/index.js create mode 100644 node_modules/@babel/types/lib/index.js.flow create mode 100644 node_modules/@babel/types/lib/index.js.map create mode 100644 node_modules/@babel/types/lib/modifications/appendToMemberExpression.js create mode 100644 node_modules/@babel/types/lib/modifications/appendToMemberExpression.js.map create mode 100644 node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js create mode 100644 node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js.map create mode 100644 node_modules/@babel/types/lib/modifications/inherits.js create mode 100644 node_modules/@babel/types/lib/modifications/inherits.js.map create mode 100644 node_modules/@babel/types/lib/modifications/prependToMemberExpression.js create mode 100644 node_modules/@babel/types/lib/modifications/prependToMemberExpression.js.map create mode 100644 node_modules/@babel/types/lib/modifications/removeProperties.js create mode 100644 node_modules/@babel/types/lib/modifications/removeProperties.js.map create mode 100644 node_modules/@babel/types/lib/modifications/removePropertiesDeep.js create mode 100644 node_modules/@babel/types/lib/modifications/removePropertiesDeep.js.map create mode 100644 node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js create mode 100644 node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js.map create mode 100644 node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js create mode 100644 node_modules/@babel/types/lib/retrievers/getAssignmentIdentifiers.js.map create mode 100644 node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js create mode 100644 node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js.map create mode 100644 node_modules/@babel/types/lib/retrievers/getFunctionName.js create mode 100644 node_modules/@babel/types/lib/retrievers/getFunctionName.js.map create mode 100644 node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js create mode 100644 node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js.map create mode 100644 node_modules/@babel/types/lib/traverse/traverse.js create mode 100644 node_modules/@babel/types/lib/traverse/traverse.js.map create mode 100644 node_modules/@babel/types/lib/traverse/traverseFast.js create mode 100644 node_modules/@babel/types/lib/traverse/traverseFast.js.map create mode 100644 node_modules/@babel/types/lib/utils/deprecationWarning.js create mode 100644 node_modules/@babel/types/lib/utils/deprecationWarning.js.map create mode 100644 node_modules/@babel/types/lib/utils/inherit.js create mode 100644 node_modules/@babel/types/lib/utils/inherit.js.map create mode 100644 node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js create mode 100644 node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js.map create mode 100644 node_modules/@babel/types/lib/utils/shallowEqual.js create mode 100644 node_modules/@babel/types/lib/utils/shallowEqual.js.map create mode 100644 node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js create mode 100644 node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js.map create mode 100644 node_modules/@babel/types/lib/validators/generated/index.js create mode 100644 node_modules/@babel/types/lib/validators/generated/index.js.map create mode 100644 node_modules/@babel/types/lib/validators/is.js create mode 100644 node_modules/@babel/types/lib/validators/is.js.map create mode 100644 node_modules/@babel/types/lib/validators/isBinding.js create mode 100644 node_modules/@babel/types/lib/validators/isBinding.js.map create mode 100644 node_modules/@babel/types/lib/validators/isBlockScoped.js create mode 100644 node_modules/@babel/types/lib/validators/isBlockScoped.js.map create mode 100644 node_modules/@babel/types/lib/validators/isImmutable.js create mode 100644 node_modules/@babel/types/lib/validators/isImmutable.js.map create mode 100644 node_modules/@babel/types/lib/validators/isLet.js create mode 100644 node_modules/@babel/types/lib/validators/isLet.js.map create mode 100644 node_modules/@babel/types/lib/validators/isNode.js create mode 100644 node_modules/@babel/types/lib/validators/isNode.js.map create mode 100644 node_modules/@babel/types/lib/validators/isNodesEquivalent.js create mode 100644 node_modules/@babel/types/lib/validators/isNodesEquivalent.js.map create mode 100644 node_modules/@babel/types/lib/validators/isPlaceholderType.js create mode 100644 node_modules/@babel/types/lib/validators/isPlaceholderType.js.map create mode 100644 node_modules/@babel/types/lib/validators/isReferenced.js create mode 100644 node_modules/@babel/types/lib/validators/isReferenced.js.map create mode 100644 node_modules/@babel/types/lib/validators/isScope.js create mode 100644 node_modules/@babel/types/lib/validators/isScope.js.map create mode 100644 node_modules/@babel/types/lib/validators/isSpecifierDefault.js create mode 100644 node_modules/@babel/types/lib/validators/isSpecifierDefault.js.map create mode 100644 node_modules/@babel/types/lib/validators/isType.js create mode 100644 node_modules/@babel/types/lib/validators/isType.js.map create mode 100644 node_modules/@babel/types/lib/validators/isValidES3Identifier.js create mode 100644 node_modules/@babel/types/lib/validators/isValidES3Identifier.js.map create mode 100644 node_modules/@babel/types/lib/validators/isValidIdentifier.js create mode 100644 node_modules/@babel/types/lib/validators/isValidIdentifier.js.map create mode 100644 node_modules/@babel/types/lib/validators/isVar.js create mode 100644 node_modules/@babel/types/lib/validators/isVar.js.map create mode 100644 node_modules/@babel/types/lib/validators/matchesPattern.js create mode 100644 node_modules/@babel/types/lib/validators/matchesPattern.js.map create mode 100644 node_modules/@babel/types/lib/validators/react/isCompatTag.js create mode 100644 node_modules/@babel/types/lib/validators/react/isCompatTag.js.map create mode 100644 node_modules/@babel/types/lib/validators/react/isReactComponent.js create mode 100644 node_modules/@babel/types/lib/validators/react/isReactComponent.js.map create mode 100644 node_modules/@babel/types/lib/validators/validate.js create mode 100644 node_modules/@babel/types/lib/validators/validate.js.map create mode 100644 node_modules/@babel/types/package.json create mode 100644 node_modules/@bcoe/v8-coverage/.editorconfig create mode 100644 node_modules/@bcoe/v8-coverage/.gitattributes create mode 100644 node_modules/@bcoe/v8-coverage/CHANGELOG.md create mode 100644 node_modules/@bcoe/v8-coverage/LICENSE.md create mode 100644 node_modules/@bcoe/v8-coverage/LICENSE.txt create mode 100644 node_modules/@bcoe/v8-coverage/README.md create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/CHANGELOG.md create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/LICENSE.md create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/README.md create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/ascii.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/clone.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/compare.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/index.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/merge.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/normalize.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/range-tree.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/_src/types.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/ascii.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/ascii.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/ascii.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/clone.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/clone.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/clone.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/compare.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/compare.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/compare.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/index.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/index.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/index.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/merge.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/merge.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/merge.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/normalize.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/normalize.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/normalize.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/package.json create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/range-tree.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/range-tree.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/range-tree.mjs create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/tsconfig.json create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/types.d.ts create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/types.js create mode 100644 node_modules/@bcoe/v8-coverage/dist/lib/types.mjs create mode 100644 node_modules/@bcoe/v8-coverage/gulpfile.ts create mode 100644 node_modules/@bcoe/v8-coverage/package.json create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/ascii.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/clone.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/compare.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/index.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/merge.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/normalize.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/range-tree.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/lib/types.ts create mode 100644 node_modules/@bcoe/v8-coverage/src/test/merge.spec.ts create mode 100644 node_modules/@bcoe/v8-coverage/tsconfig.json create mode 100644 node_modules/@esbuild/win32-x64/README.md create mode 100644 node_modules/@esbuild/win32-x64/esbuild.exe create mode 100644 node_modules/@esbuild/win32-x64/package.json create mode 100644 node_modules/@istanbuljs/schema/CHANGELOG.md create mode 100644 node_modules/@istanbuljs/schema/LICENSE create mode 100644 node_modules/@istanbuljs/schema/README.md create mode 100644 node_modules/@istanbuljs/schema/default-exclude.js create mode 100644 node_modules/@istanbuljs/schema/default-extension.js create mode 100644 node_modules/@istanbuljs/schema/index.js create mode 100644 node_modules/@istanbuljs/schema/package.json create mode 100644 node_modules/@jest/schemas/LICENSE create mode 100644 node_modules/@jest/schemas/README.md create mode 100644 node_modules/@jest/schemas/build/index.d.ts create mode 100644 node_modules/@jest/schemas/build/index.js create mode 100644 node_modules/@jest/schemas/package.json create mode 100644 node_modules/@jridgewell/gen-mapping/LICENSE create mode 100644 node_modules/@jridgewell/gen-mapping/README.md create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.mjs.map create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js create mode 100644 node_modules/@jridgewell/gen-mapping/dist/gen-mapping.umd.js.map create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/gen-mapping.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/set-array.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/sourcemap-segment.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/dist/types/types.d.ts create mode 100644 node_modules/@jridgewell/gen-mapping/package.json create mode 100644 node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts create mode 100644 node_modules/@jridgewell/gen-mapping/src/set-array.ts create mode 100644 node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts create mode 100644 node_modules/@jridgewell/gen-mapping/src/types.ts create mode 100644 node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts create mode 100644 node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.cts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts create mode 100644 node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/set-array.d.cts create mode 100644 node_modules/@jridgewell/gen-mapping/types/set-array.d.cts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/set-array.d.mts create mode 100644 node_modules/@jridgewell/gen-mapping/types/set-array.d.mts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts create mode 100644 node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.cts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts create mode 100644 node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/types.d.cts create mode 100644 node_modules/@jridgewell/gen-mapping/types/types.d.cts.map create mode 100644 node_modules/@jridgewell/gen-mapping/types/types.d.mts create mode 100644 node_modules/@jridgewell/gen-mapping/types/types.d.mts.map create mode 100644 node_modules/@jridgewell/resolve-uri/LICENSE create mode 100644 node_modules/@jridgewell/resolve-uri/README.md create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.mjs.map create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js create mode 100644 node_modules/@jridgewell/resolve-uri/dist/resolve-uri.umd.js.map create mode 100644 node_modules/@jridgewell/resolve-uri/dist/types/resolve-uri.d.ts create mode 100644 node_modules/@jridgewell/resolve-uri/package.json create mode 100644 node_modules/@jridgewell/sourcemap-codec/LICENSE create mode 100644 node_modules/@jridgewell/sourcemap-codec/README.md create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js create mode 100644 node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.umd.js.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/package.json create mode 100644 node_modules/@jridgewell/sourcemap-codec/src/scopes.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/src/strings.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/src/vlq.ts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/scopes.d.cts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/scopes.d.mts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.cts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/sourcemap-codec.d.mts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/strings.d.cts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/strings.d.mts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/vlq.d.cts.map create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts create mode 100644 node_modules/@jridgewell/sourcemap-codec/types/vlq.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/LICENSE create mode 100644 node_modules/@jridgewell/trace-mapping/README.md create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.mjs.map create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js create mode 100644 node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js.map create mode 100644 node_modules/@jridgewell/trace-mapping/package.json create mode 100644 node_modules/@jridgewell/trace-mapping/src/binary-search.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/by-source.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/flatten-map.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/resolve.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/sort.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/sourcemap-segment.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/strip-filename.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/trace-mapping.ts create mode 100644 node_modules/@jridgewell/trace-mapping/src/types.ts create mode 100644 node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/binary-search.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/binary-search.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/by-source.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/by-source.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/by-source.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/by-source.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/flatten-map.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/resolve.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/resolve.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/resolve.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/resolve.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/sort.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/sort.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/sort.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/sort.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/strip-filename.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/strip-filename.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/types.d.cts create mode 100644 node_modules/@jridgewell/trace-mapping/types/types.d.cts.map create mode 100644 node_modules/@jridgewell/trace-mapping/types/types.d.mts create mode 100644 node_modules/@jridgewell/trace-mapping/types/types.d.mts.map create mode 100644 node_modules/@rollup/rollup-win32-x64-gnu/README.md create mode 100644 node_modules/@rollup/rollup-win32-x64-gnu/package.json create mode 100644 node_modules/@rollup/rollup-win32-x64-gnu/rollup.win32-x64-gnu.node create mode 100644 node_modules/@rollup/rollup-win32-x64-msvc/README.md create mode 100644 node_modules/@rollup/rollup-win32-x64-msvc/package.json create mode 100644 node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node create mode 100644 node_modules/@sinclair/typebox/compiler/compiler.d.ts create mode 100644 node_modules/@sinclair/typebox/compiler/compiler.js create mode 100644 node_modules/@sinclair/typebox/compiler/index.d.ts create mode 100644 node_modules/@sinclair/typebox/compiler/index.js create mode 100644 node_modules/@sinclair/typebox/errors/errors.d.ts create mode 100644 node_modules/@sinclair/typebox/errors/errors.js create mode 100644 node_modules/@sinclair/typebox/errors/index.d.ts create mode 100644 node_modules/@sinclair/typebox/errors/index.js create mode 100644 node_modules/@sinclair/typebox/license create mode 100644 node_modules/@sinclair/typebox/package.json create mode 100644 node_modules/@sinclair/typebox/readme.md create mode 100644 node_modules/@sinclair/typebox/system/index.d.ts create mode 100644 node_modules/@sinclair/typebox/system/index.js create mode 100644 node_modules/@sinclair/typebox/system/system.d.ts create mode 100644 node_modules/@sinclair/typebox/system/system.js create mode 100644 node_modules/@sinclair/typebox/typebox.d.ts create mode 100644 node_modules/@sinclair/typebox/typebox.js create mode 100644 node_modules/@sinclair/typebox/value/cast.d.ts create mode 100644 node_modules/@sinclair/typebox/value/cast.js create mode 100644 node_modules/@sinclair/typebox/value/check.d.ts create mode 100644 node_modules/@sinclair/typebox/value/check.js create mode 100644 node_modules/@sinclair/typebox/value/clone.d.ts create mode 100644 node_modules/@sinclair/typebox/value/clone.js create mode 100644 node_modules/@sinclair/typebox/value/convert.d.ts create mode 100644 node_modules/@sinclair/typebox/value/convert.js create mode 100644 node_modules/@sinclair/typebox/value/create.d.ts create mode 100644 node_modules/@sinclair/typebox/value/create.js create mode 100644 node_modules/@sinclair/typebox/value/delta.d.ts create mode 100644 node_modules/@sinclair/typebox/value/delta.js create mode 100644 node_modules/@sinclair/typebox/value/equal.d.ts create mode 100644 node_modules/@sinclair/typebox/value/equal.js create mode 100644 node_modules/@sinclair/typebox/value/hash.d.ts create mode 100644 node_modules/@sinclair/typebox/value/hash.js create mode 100644 node_modules/@sinclair/typebox/value/index.d.ts create mode 100644 node_modules/@sinclair/typebox/value/index.js create mode 100644 node_modules/@sinclair/typebox/value/is.d.ts create mode 100644 node_modules/@sinclair/typebox/value/is.js create mode 100644 node_modules/@sinclair/typebox/value/mutate.d.ts create mode 100644 node_modules/@sinclair/typebox/value/mutate.js create mode 100644 node_modules/@sinclair/typebox/value/pointer.d.ts create mode 100644 node_modules/@sinclair/typebox/value/pointer.js create mode 100644 node_modules/@sinclair/typebox/value/value.d.ts create mode 100644 node_modules/@sinclair/typebox/value/value.js create mode 100644 node_modules/@types/estree/LICENSE create mode 100644 node_modules/@types/estree/README.md create mode 100644 node_modules/@types/estree/flow.d.ts create mode 100644 node_modules/@types/estree/index.d.ts create mode 100644 node_modules/@types/estree/package.json create mode 100644 node_modules/@vitest/coverage-v8/LICENSE create mode 100644 node_modules/@vitest/coverage-v8/dist/index.d.ts create mode 100644 node_modules/@vitest/coverage-v8/dist/index.js create mode 100644 node_modules/@vitest/coverage-v8/dist/provider.d.ts create mode 100644 node_modules/@vitest/coverage-v8/dist/provider.js create mode 100644 node_modules/@vitest/coverage-v8/package.json create mode 100644 node_modules/@vitest/expect/LICENSE create mode 100644 node_modules/@vitest/expect/README.md create mode 100644 node_modules/@vitest/expect/dist/chai.d.cts create mode 100644 node_modules/@vitest/expect/dist/index.d.ts create mode 100644 node_modules/@vitest/expect/dist/index.js create mode 100644 node_modules/@vitest/expect/index.d.ts create mode 100644 node_modules/@vitest/expect/package.json create mode 100644 node_modules/@vitest/runner/LICENSE create mode 100644 node_modules/@vitest/runner/README.md create mode 100644 node_modules/@vitest/runner/dist/chunk-tasks.js create mode 100644 node_modules/@vitest/runner/dist/index.d.ts create mode 100644 node_modules/@vitest/runner/dist/index.js create mode 100644 node_modules/@vitest/runner/dist/tasks-K5XERDtv.d.ts create mode 100644 node_modules/@vitest/runner/dist/types.d.ts create mode 100644 node_modules/@vitest/runner/dist/types.js create mode 100644 node_modules/@vitest/runner/dist/utils.d.ts create mode 100644 node_modules/@vitest/runner/dist/utils.js create mode 100644 node_modules/@vitest/runner/package.json create mode 100644 node_modules/@vitest/runner/types.d.ts create mode 100644 node_modules/@vitest/runner/utils.d.ts create mode 100644 node_modules/@vitest/snapshot/LICENSE create mode 100644 node_modules/@vitest/snapshot/README.md create mode 100644 node_modules/@vitest/snapshot/dist/environment-cMiGIVXz.d.ts create mode 100644 node_modules/@vitest/snapshot/dist/environment.d.ts create mode 100644 node_modules/@vitest/snapshot/dist/environment.js create mode 100644 node_modules/@vitest/snapshot/dist/index-S94ASl6q.d.ts create mode 100644 node_modules/@vitest/snapshot/dist/index.d.ts create mode 100644 node_modules/@vitest/snapshot/dist/index.js create mode 100644 node_modules/@vitest/snapshot/dist/manager.d.ts create mode 100644 node_modules/@vitest/snapshot/dist/manager.js create mode 100644 node_modules/@vitest/snapshot/environment.d.ts create mode 100644 node_modules/@vitest/snapshot/manager.d.ts create mode 100644 node_modules/@vitest/snapshot/package.json create mode 100644 node_modules/@vitest/spy/LICENSE create mode 100644 node_modules/@vitest/spy/README.md create mode 100644 node_modules/@vitest/spy/dist/index.d.ts create mode 100644 node_modules/@vitest/spy/dist/index.js create mode 100644 node_modules/@vitest/spy/package.json create mode 100644 node_modules/@vitest/utils/LICENSE create mode 100644 node_modules/@vitest/utils/diff.d.ts create mode 100644 node_modules/@vitest/utils/dist/ast.d.ts create mode 100644 node_modules/@vitest/utils/dist/ast.js create mode 100644 node_modules/@vitest/utils/dist/chunk-colors.js create mode 100644 node_modules/@vitest/utils/dist/chunk-display.js create mode 100644 node_modules/@vitest/utils/dist/diff.d.ts create mode 100644 node_modules/@vitest/utils/dist/diff.js create mode 100644 node_modules/@vitest/utils/dist/error.d.ts create mode 100644 node_modules/@vitest/utils/dist/error.js create mode 100644 node_modules/@vitest/utils/dist/helpers.d.ts create mode 100644 node_modules/@vitest/utils/dist/helpers.js create mode 100644 node_modules/@vitest/utils/dist/index.d.ts create mode 100644 node_modules/@vitest/utils/dist/index.js create mode 100644 node_modules/@vitest/utils/dist/source-map.d.ts create mode 100644 node_modules/@vitest/utils/dist/source-map.js create mode 100644 node_modules/@vitest/utils/dist/types-9l4niLY8.d.ts create mode 100644 node_modules/@vitest/utils/dist/types.d.ts create mode 100644 node_modules/@vitest/utils/dist/types.js create mode 100644 node_modules/@vitest/utils/error.d.ts create mode 100644 node_modules/@vitest/utils/helpers.d.ts create mode 100644 node_modules/@vitest/utils/package.json create mode 100644 node_modules/acorn-walk/CHANGELOG.md create mode 100644 node_modules/acorn-walk/LICENSE create mode 100644 node_modules/acorn-walk/README.md create mode 100644 node_modules/acorn-walk/dist/walk.d.mts create mode 100644 node_modules/acorn-walk/dist/walk.d.ts create mode 100644 node_modules/acorn-walk/dist/walk.js create mode 100644 node_modules/acorn-walk/dist/walk.mjs create mode 100644 node_modules/acorn-walk/package.json create mode 100644 node_modules/acorn/CHANGELOG.md create mode 100644 node_modules/acorn/LICENSE create mode 100644 node_modules/acorn/README.md create mode 100644 node_modules/acorn/bin/acorn create mode 100644 node_modules/acorn/dist/acorn.d.mts create mode 100644 node_modules/acorn/dist/acorn.d.ts create mode 100644 node_modules/acorn/dist/acorn.js create mode 100644 node_modules/acorn/dist/acorn.mjs create mode 100644 node_modules/acorn/dist/bin.js create mode 100644 node_modules/acorn/package.json create mode 100644 node_modules/ansi-regex/index.d.ts create mode 100644 node_modules/ansi-regex/index.js create mode 100644 node_modules/ansi-regex/license create mode 100644 node_modules/ansi-regex/package.json create mode 100644 node_modules/ansi-regex/readme.md create mode 100644 node_modules/ansi-styles/index.d.ts create mode 100644 node_modules/ansi-styles/index.js create mode 100644 node_modules/ansi-styles/license create mode 100644 node_modules/ansi-styles/package.json create mode 100644 node_modules/ansi-styles/readme.md create mode 100644 node_modules/assertion-error/History.md create mode 100644 node_modules/assertion-error/README.md create mode 100644 node_modules/assertion-error/index.d.ts create mode 100644 node_modules/assertion-error/index.js create mode 100644 node_modules/assertion-error/package.json create mode 100644 node_modules/asynckit/LICENSE create mode 100644 node_modules/asynckit/README.md create mode 100644 node_modules/asynckit/bench.js create mode 100644 node_modules/asynckit/index.js create mode 100644 node_modules/asynckit/lib/abort.js create mode 100644 node_modules/asynckit/lib/async.js create mode 100644 node_modules/asynckit/lib/defer.js create mode 100644 node_modules/asynckit/lib/iterate.js create mode 100644 node_modules/asynckit/lib/readable_asynckit.js create mode 100644 node_modules/asynckit/lib/readable_parallel.js create mode 100644 node_modules/asynckit/lib/readable_serial.js create mode 100644 node_modules/asynckit/lib/readable_serial_ordered.js create mode 100644 node_modules/asynckit/lib/state.js create mode 100644 node_modules/asynckit/lib/streamify.js create mode 100644 node_modules/asynckit/lib/terminator.js create mode 100644 node_modules/asynckit/package.json create mode 100644 node_modules/asynckit/parallel.js create mode 100644 node_modules/asynckit/serial.js create mode 100644 node_modules/asynckit/serialOrdered.js create mode 100644 node_modules/asynckit/stream.js create mode 100644 node_modules/axios/CHANGELOG.md create mode 100644 node_modules/axios/LICENSE create mode 100644 node_modules/axios/MIGRATION_GUIDE.md create mode 100644 node_modules/axios/README.md create mode 100644 node_modules/axios/dist/axios.js create mode 100644 node_modules/axios/dist/axios.js.map create mode 100644 node_modules/axios/dist/axios.min.js create mode 100644 node_modules/axios/dist/axios.min.js.map create mode 100644 node_modules/axios/dist/browser/axios.cjs create mode 100644 node_modules/axios/dist/browser/axios.cjs.map create mode 100644 node_modules/axios/dist/esm/axios.js create mode 100644 node_modules/axios/dist/esm/axios.js.map create mode 100644 node_modules/axios/dist/esm/axios.min.js create mode 100644 node_modules/axios/dist/esm/axios.min.js.map create mode 100644 node_modules/axios/dist/node/axios.cjs create mode 100644 node_modules/axios/dist/node/axios.cjs.map create mode 100644 node_modules/axios/index.d.cts create mode 100644 node_modules/axios/index.d.ts create mode 100644 node_modules/axios/index.js create mode 100644 node_modules/axios/lib/adapters/README.md create mode 100644 node_modules/axios/lib/adapters/adapters.js create mode 100644 node_modules/axios/lib/adapters/fetch.js create mode 100644 node_modules/axios/lib/adapters/http.js create mode 100644 node_modules/axios/lib/adapters/xhr.js create mode 100644 node_modules/axios/lib/axios.js create mode 100644 node_modules/axios/lib/cancel/CancelToken.js create mode 100644 node_modules/axios/lib/cancel/CanceledError.js create mode 100644 node_modules/axios/lib/cancel/isCancel.js create mode 100644 node_modules/axios/lib/core/Axios.js create mode 100644 node_modules/axios/lib/core/AxiosError.js create mode 100644 node_modules/axios/lib/core/AxiosHeaders.js create mode 100644 node_modules/axios/lib/core/InterceptorManager.js create mode 100644 node_modules/axios/lib/core/README.md create mode 100644 node_modules/axios/lib/core/buildFullPath.js create mode 100644 node_modules/axios/lib/core/dispatchRequest.js create mode 100644 node_modules/axios/lib/core/mergeConfig.js create mode 100644 node_modules/axios/lib/core/settle.js create mode 100644 node_modules/axios/lib/core/transformData.js create mode 100644 node_modules/axios/lib/defaults/index.js create mode 100644 node_modules/axios/lib/defaults/transitional.js create mode 100644 node_modules/axios/lib/env/README.md create mode 100644 node_modules/axios/lib/env/classes/FormData.js create mode 100644 node_modules/axios/lib/env/data.js create mode 100644 node_modules/axios/lib/helpers/AxiosTransformStream.js create mode 100644 node_modules/axios/lib/helpers/AxiosURLSearchParams.js create mode 100644 node_modules/axios/lib/helpers/HttpStatusCode.js create mode 100644 node_modules/axios/lib/helpers/README.md create mode 100644 node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js create mode 100644 node_modules/axios/lib/helpers/bind.js create mode 100644 node_modules/axios/lib/helpers/buildURL.js create mode 100644 node_modules/axios/lib/helpers/callbackify.js create mode 100644 node_modules/axios/lib/helpers/combineURLs.js create mode 100644 node_modules/axios/lib/helpers/composeSignals.js create mode 100644 node_modules/axios/lib/helpers/cookies.js create mode 100644 node_modules/axios/lib/helpers/deprecatedMethod.js create mode 100644 node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js create mode 100644 node_modules/axios/lib/helpers/formDataToJSON.js create mode 100644 node_modules/axios/lib/helpers/formDataToStream.js create mode 100644 node_modules/axios/lib/helpers/fromDataURI.js create mode 100644 node_modules/axios/lib/helpers/isAbsoluteURL.js create mode 100644 node_modules/axios/lib/helpers/isAxiosError.js create mode 100644 node_modules/axios/lib/helpers/isURLSameOrigin.js create mode 100644 node_modules/axios/lib/helpers/null.js create mode 100644 node_modules/axios/lib/helpers/parseHeaders.js create mode 100644 node_modules/axios/lib/helpers/parseProtocol.js create mode 100644 node_modules/axios/lib/helpers/progressEventReducer.js create mode 100644 node_modules/axios/lib/helpers/readBlob.js create mode 100644 node_modules/axios/lib/helpers/resolveConfig.js create mode 100644 node_modules/axios/lib/helpers/speedometer.js create mode 100644 node_modules/axios/lib/helpers/spread.js create mode 100644 node_modules/axios/lib/helpers/throttle.js create mode 100644 node_modules/axios/lib/helpers/toFormData.js create mode 100644 node_modules/axios/lib/helpers/toURLEncodedForm.js create mode 100644 node_modules/axios/lib/helpers/trackStream.js create mode 100644 node_modules/axios/lib/helpers/validator.js create mode 100644 node_modules/axios/lib/platform/browser/classes/Blob.js create mode 100644 node_modules/axios/lib/platform/browser/classes/FormData.js create mode 100644 node_modules/axios/lib/platform/browser/classes/URLSearchParams.js create mode 100644 node_modules/axios/lib/platform/browser/index.js create mode 100644 node_modules/axios/lib/platform/common/utils.js create mode 100644 node_modules/axios/lib/platform/index.js create mode 100644 node_modules/axios/lib/platform/node/classes/FormData.js create mode 100644 node_modules/axios/lib/platform/node/classes/URLSearchParams.js create mode 100644 node_modules/axios/lib/platform/node/index.js create mode 100644 node_modules/axios/lib/utils.js create mode 100644 node_modules/axios/package.json create mode 100644 node_modules/balanced-match/.github/FUNDING.yml create mode 100644 node_modules/balanced-match/LICENSE.md create mode 100644 node_modules/balanced-match/README.md create mode 100644 node_modules/balanced-match/index.js create mode 100644 node_modules/balanced-match/package.json create mode 100644 node_modules/boolbase/README.md create mode 100644 node_modules/boolbase/index.js create mode 100644 node_modules/boolbase/package.json create mode 100644 node_modules/brace-expansion/LICENSE create mode 100644 node_modules/brace-expansion/README.md create mode 100644 node_modules/brace-expansion/index.js create mode 100644 node_modules/brace-expansion/package.json create mode 100644 node_modules/cac/LICENSE create mode 100644 node_modules/cac/README.md create mode 100644 node_modules/cac/deno/CAC.ts create mode 100644 node_modules/cac/deno/Command.ts create mode 100644 node_modules/cac/deno/Option.ts create mode 100644 node_modules/cac/deno/deno.ts create mode 100644 node_modules/cac/deno/index.ts create mode 100644 node_modules/cac/deno/utils.ts create mode 100644 node_modules/cac/dist/index.d.ts create mode 100644 node_modules/cac/dist/index.js create mode 100644 node_modules/cac/dist/index.mjs create mode 100644 node_modules/cac/index-compat.js create mode 100644 node_modules/cac/mod.js create mode 100644 node_modules/cac/mod.ts create mode 100644 node_modules/cac/package.json create mode 100644 node_modules/call-bind-apply-helpers/.eslintrc create mode 100644 node_modules/call-bind-apply-helpers/.github/FUNDING.yml create mode 100644 node_modules/call-bind-apply-helpers/.nycrc create mode 100644 node_modules/call-bind-apply-helpers/CHANGELOG.md create mode 100644 node_modules/call-bind-apply-helpers/LICENSE create mode 100644 node_modules/call-bind-apply-helpers/README.md create mode 100644 node_modules/call-bind-apply-helpers/actualApply.d.ts create mode 100644 node_modules/call-bind-apply-helpers/actualApply.js create mode 100644 node_modules/call-bind-apply-helpers/applyBind.d.ts create mode 100644 node_modules/call-bind-apply-helpers/applyBind.js create mode 100644 node_modules/call-bind-apply-helpers/functionApply.d.ts create mode 100644 node_modules/call-bind-apply-helpers/functionApply.js create mode 100644 node_modules/call-bind-apply-helpers/functionCall.d.ts create mode 100644 node_modules/call-bind-apply-helpers/functionCall.js create mode 100644 node_modules/call-bind-apply-helpers/index.d.ts create mode 100644 node_modules/call-bind-apply-helpers/index.js create mode 100644 node_modules/call-bind-apply-helpers/package.json create mode 100644 node_modules/call-bind-apply-helpers/reflectApply.d.ts create mode 100644 node_modules/call-bind-apply-helpers/reflectApply.js create mode 100644 node_modules/call-bind-apply-helpers/test/index.js create mode 100644 node_modules/call-bind-apply-helpers/tsconfig.json create mode 100644 node_modules/chai/CODEOWNERS create mode 100644 node_modules/chai/CODE_OF_CONDUCT.md create mode 100644 node_modules/chai/CONTRIBUTING.md create mode 100644 node_modules/chai/History.md create mode 100644 node_modules/chai/LICENSE create mode 100644 node_modules/chai/README.md create mode 100644 node_modules/chai/ReleaseNotes.md create mode 100644 node_modules/chai/bower.json create mode 100644 node_modules/chai/chai.js create mode 100644 node_modules/chai/index.js create mode 100644 node_modules/chai/index.mjs create mode 100644 node_modules/chai/karma.conf.js create mode 100644 node_modules/chai/karma.sauce.js create mode 100644 node_modules/chai/lib/chai.js create mode 100644 node_modules/chai/lib/chai/assertion.js create mode 100644 node_modules/chai/lib/chai/config.js create mode 100644 node_modules/chai/lib/chai/core/assertions.js create mode 100644 node_modules/chai/lib/chai/interface/assert.js create mode 100644 node_modules/chai/lib/chai/interface/expect.js create mode 100644 node_modules/chai/lib/chai/interface/should.js create mode 100644 node_modules/chai/lib/chai/utils/addChainableMethod.js create mode 100644 node_modules/chai/lib/chai/utils/addLengthGuard.js create mode 100644 node_modules/chai/lib/chai/utils/addMethod.js create mode 100644 node_modules/chai/lib/chai/utils/addProperty.js create mode 100644 node_modules/chai/lib/chai/utils/compareByInspect.js create mode 100644 node_modules/chai/lib/chai/utils/expectTypes.js create mode 100644 node_modules/chai/lib/chai/utils/flag.js create mode 100644 node_modules/chai/lib/chai/utils/getActual.js create mode 100644 node_modules/chai/lib/chai/utils/getEnumerableProperties.js create mode 100644 node_modules/chai/lib/chai/utils/getMessage.js create mode 100644 node_modules/chai/lib/chai/utils/getOperator.js create mode 100644 node_modules/chai/lib/chai/utils/getOwnEnumerableProperties.js create mode 100644 node_modules/chai/lib/chai/utils/getOwnEnumerablePropertySymbols.js create mode 100644 node_modules/chai/lib/chai/utils/getProperties.js create mode 100644 node_modules/chai/lib/chai/utils/index.js create mode 100644 node_modules/chai/lib/chai/utils/inspect.js create mode 100644 node_modules/chai/lib/chai/utils/isNaN.js create mode 100644 node_modules/chai/lib/chai/utils/isProxyEnabled.js create mode 100644 node_modules/chai/lib/chai/utils/objDisplay.js create mode 100644 node_modules/chai/lib/chai/utils/overwriteChainableMethod.js create mode 100644 node_modules/chai/lib/chai/utils/overwriteMethod.js create mode 100644 node_modules/chai/lib/chai/utils/overwriteProperty.js create mode 100644 node_modules/chai/lib/chai/utils/proxify.js create mode 100644 node_modules/chai/lib/chai/utils/test.js create mode 100644 node_modules/chai/lib/chai/utils/transferFlags.js create mode 100644 node_modules/chai/package.json create mode 100644 node_modules/chai/register-assert.js create mode 100644 node_modules/chai/register-expect.js create mode 100644 node_modules/chai/register-should.js create mode 100644 node_modules/chai/sauce.browsers.js create mode 100644 node_modules/chalk/license create mode 100644 node_modules/chalk/package.json create mode 100644 node_modules/chalk/readme.md create mode 100644 node_modules/chalk/source/index.d.ts create mode 100644 node_modules/chalk/source/index.js create mode 100644 node_modules/chalk/source/utilities.js create mode 100644 node_modules/chalk/source/vendor/ansi-styles/index.d.ts create mode 100644 node_modules/chalk/source/vendor/ansi-styles/index.js create mode 100644 node_modules/chalk/source/vendor/supports-color/browser.d.ts create mode 100644 node_modules/chalk/source/vendor/supports-color/browser.js create mode 100644 node_modules/chalk/source/vendor/supports-color/index.d.ts create mode 100644 node_modules/chalk/source/vendor/supports-color/index.js create mode 100644 node_modules/check-error/LICENSE create mode 100644 node_modules/check-error/README.md create mode 100644 node_modules/check-error/check-error.js create mode 100644 node_modules/check-error/index.js create mode 100644 node_modules/check-error/package.json create mode 100644 node_modules/cheerio-select/LICENSE create mode 100644 node_modules/cheerio-select/README.md create mode 100644 node_modules/cheerio-select/lib/esm/helpers.d.ts create mode 100644 node_modules/cheerio-select/lib/esm/helpers.d.ts.map create mode 100644 node_modules/cheerio-select/lib/esm/helpers.js create mode 100644 node_modules/cheerio-select/lib/esm/helpers.js.map create mode 100644 node_modules/cheerio-select/lib/esm/index.d.ts create mode 100644 node_modules/cheerio-select/lib/esm/index.d.ts.map create mode 100644 node_modules/cheerio-select/lib/esm/index.js create mode 100644 node_modules/cheerio-select/lib/esm/index.js.map create mode 100644 node_modules/cheerio-select/lib/esm/package.json create mode 100644 node_modules/cheerio-select/lib/esm/positionals.d.ts create mode 100644 node_modules/cheerio-select/lib/esm/positionals.d.ts.map create mode 100644 node_modules/cheerio-select/lib/esm/positionals.js create mode 100644 node_modules/cheerio-select/lib/esm/positionals.js.map create mode 100644 node_modules/cheerio-select/lib/helpers.d.ts create mode 100644 node_modules/cheerio-select/lib/helpers.d.ts.map create mode 100644 node_modules/cheerio-select/lib/helpers.js create mode 100644 node_modules/cheerio-select/lib/helpers.js.map create mode 100644 node_modules/cheerio-select/lib/index.d.ts create mode 100644 node_modules/cheerio-select/lib/index.d.ts.map create mode 100644 node_modules/cheerio-select/lib/index.js create mode 100644 node_modules/cheerio-select/lib/index.js.map create mode 100644 node_modules/cheerio-select/lib/positionals.d.ts create mode 100644 node_modules/cheerio-select/lib/positionals.d.ts.map create mode 100644 node_modules/cheerio-select/lib/positionals.js create mode 100644 node_modules/cheerio-select/lib/positionals.js.map create mode 100644 node_modules/cheerio-select/package.json create mode 100644 node_modules/cheerio/LICENSE create mode 100644 node_modules/cheerio/Readme.md create mode 100644 node_modules/cheerio/dist/browser/api/attributes.d.ts create mode 100644 node_modules/cheerio/dist/browser/api/attributes.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/api/attributes.js create mode 100644 node_modules/cheerio/dist/browser/api/attributes.js.map create mode 100644 node_modules/cheerio/dist/browser/api/css.d.ts create mode 100644 node_modules/cheerio/dist/browser/api/css.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/api/css.js create mode 100644 node_modules/cheerio/dist/browser/api/css.js.map create mode 100644 node_modules/cheerio/dist/browser/api/extract.d.ts create mode 100644 node_modules/cheerio/dist/browser/api/extract.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/api/extract.js create mode 100644 node_modules/cheerio/dist/browser/api/extract.js.map create mode 100644 node_modules/cheerio/dist/browser/api/forms.d.ts create mode 100644 node_modules/cheerio/dist/browser/api/forms.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/api/forms.js create mode 100644 node_modules/cheerio/dist/browser/api/forms.js.map create mode 100644 node_modules/cheerio/dist/browser/api/manipulation.d.ts create mode 100644 node_modules/cheerio/dist/browser/api/manipulation.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/api/manipulation.js create mode 100644 node_modules/cheerio/dist/browser/api/manipulation.js.map create mode 100644 node_modules/cheerio/dist/browser/api/traversing.d.ts create mode 100644 node_modules/cheerio/dist/browser/api/traversing.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/api/traversing.js create mode 100644 node_modules/cheerio/dist/browser/api/traversing.js.map create mode 100644 node_modules/cheerio/dist/browser/cheerio.d.ts create mode 100644 node_modules/cheerio/dist/browser/cheerio.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/cheerio.js create mode 100644 node_modules/cheerio/dist/browser/cheerio.js.map create mode 100644 node_modules/cheerio/dist/browser/index-browser.d.mts.map create mode 100644 node_modules/cheerio/dist/browser/index-browser.mjs.map create mode 100644 node_modules/cheerio/dist/browser/index.d.ts create mode 100644 node_modules/cheerio/dist/browser/index.js create mode 100644 node_modules/cheerio/dist/browser/load-parse.d.ts create mode 100644 node_modules/cheerio/dist/browser/load-parse.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/load-parse.js create mode 100644 node_modules/cheerio/dist/browser/load-parse.js.map create mode 100644 node_modules/cheerio/dist/browser/load.d.ts create mode 100644 node_modules/cheerio/dist/browser/load.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/load.js create mode 100644 node_modules/cheerio/dist/browser/load.js.map create mode 100644 node_modules/cheerio/dist/browser/options.d.ts create mode 100644 node_modules/cheerio/dist/browser/options.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/options.js create mode 100644 node_modules/cheerio/dist/browser/options.js.map create mode 100644 node_modules/cheerio/dist/browser/package.json create mode 100644 node_modules/cheerio/dist/browser/parse.d.ts create mode 100644 node_modules/cheerio/dist/browser/parse.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/parse.js create mode 100644 node_modules/cheerio/dist/browser/parse.js.map create mode 100644 node_modules/cheerio/dist/browser/parsers/parse5-adapter.d.ts create mode 100644 node_modules/cheerio/dist/browser/parsers/parse5-adapter.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/parsers/parse5-adapter.js create mode 100644 node_modules/cheerio/dist/browser/parsers/parse5-adapter.js.map create mode 100644 node_modules/cheerio/dist/browser/slim.d.ts create mode 100644 node_modules/cheerio/dist/browser/slim.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/slim.js create mode 100644 node_modules/cheerio/dist/browser/slim.js.map create mode 100644 node_modules/cheerio/dist/browser/static.d.ts create mode 100644 node_modules/cheerio/dist/browser/static.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/static.js create mode 100644 node_modules/cheerio/dist/browser/static.js.map create mode 100644 node_modules/cheerio/dist/browser/types.d.ts create mode 100644 node_modules/cheerio/dist/browser/types.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/types.js create mode 100644 node_modules/cheerio/dist/browser/types.js.map create mode 100644 node_modules/cheerio/dist/browser/utils.d.ts create mode 100644 node_modules/cheerio/dist/browser/utils.d.ts.map create mode 100644 node_modules/cheerio/dist/browser/utils.js create mode 100644 node_modules/cheerio/dist/browser/utils.js.map create mode 100644 node_modules/cheerio/dist/commonjs/api/attributes.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/api/attributes.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/api/attributes.js create mode 100644 node_modules/cheerio/dist/commonjs/api/attributes.js.map create mode 100644 node_modules/cheerio/dist/commonjs/api/css.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/api/css.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/api/css.js create mode 100644 node_modules/cheerio/dist/commonjs/api/css.js.map create mode 100644 node_modules/cheerio/dist/commonjs/api/extract.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/api/extract.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/api/extract.js create mode 100644 node_modules/cheerio/dist/commonjs/api/extract.js.map create mode 100644 node_modules/cheerio/dist/commonjs/api/forms.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/api/forms.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/api/forms.js create mode 100644 node_modules/cheerio/dist/commonjs/api/forms.js.map create mode 100644 node_modules/cheerio/dist/commonjs/api/manipulation.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/api/manipulation.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/api/manipulation.js create mode 100644 node_modules/cheerio/dist/commonjs/api/manipulation.js.map create mode 100644 node_modules/cheerio/dist/commonjs/api/traversing.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/api/traversing.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/api/traversing.js create mode 100644 node_modules/cheerio/dist/commonjs/api/traversing.js.map create mode 100644 node_modules/cheerio/dist/commonjs/cheerio.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/cheerio.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/cheerio.js create mode 100644 node_modules/cheerio/dist/commonjs/cheerio.js.map create mode 100644 node_modules/cheerio/dist/commonjs/index.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/index.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/index.js create mode 100644 node_modules/cheerio/dist/commonjs/index.js.map create mode 100644 node_modules/cheerio/dist/commonjs/load-parse.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/load-parse.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/load-parse.js create mode 100644 node_modules/cheerio/dist/commonjs/load-parse.js.map create mode 100644 node_modules/cheerio/dist/commonjs/load.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/load.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/load.js create mode 100644 node_modules/cheerio/dist/commonjs/load.js.map create mode 100644 node_modules/cheerio/dist/commonjs/options.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/options.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/options.js create mode 100644 node_modules/cheerio/dist/commonjs/options.js.map create mode 100644 node_modules/cheerio/dist/commonjs/package.json create mode 100644 node_modules/cheerio/dist/commonjs/parse.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/parse.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/parse.js create mode 100644 node_modules/cheerio/dist/commonjs/parse.js.map create mode 100644 node_modules/cheerio/dist/commonjs/parsers/parse5-adapter.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/parsers/parse5-adapter.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/parsers/parse5-adapter.js create mode 100644 node_modules/cheerio/dist/commonjs/parsers/parse5-adapter.js.map create mode 100644 node_modules/cheerio/dist/commonjs/slim.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/slim.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/slim.js create mode 100644 node_modules/cheerio/dist/commonjs/slim.js.map create mode 100644 node_modules/cheerio/dist/commonjs/static.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/static.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/static.js create mode 100644 node_modules/cheerio/dist/commonjs/static.js.map create mode 100644 node_modules/cheerio/dist/commonjs/types.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/types.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/types.js create mode 100644 node_modules/cheerio/dist/commonjs/types.js.map create mode 100644 node_modules/cheerio/dist/commonjs/utils.d.ts create mode 100644 node_modules/cheerio/dist/commonjs/utils.d.ts.map create mode 100644 node_modules/cheerio/dist/commonjs/utils.js create mode 100644 node_modules/cheerio/dist/commonjs/utils.js.map create mode 100644 node_modules/cheerio/dist/esm/api/attributes.d.ts create mode 100644 node_modules/cheerio/dist/esm/api/attributes.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/api/attributes.js create mode 100644 node_modules/cheerio/dist/esm/api/attributes.js.map create mode 100644 node_modules/cheerio/dist/esm/api/css.d.ts create mode 100644 node_modules/cheerio/dist/esm/api/css.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/api/css.js create mode 100644 node_modules/cheerio/dist/esm/api/css.js.map create mode 100644 node_modules/cheerio/dist/esm/api/extract.d.ts create mode 100644 node_modules/cheerio/dist/esm/api/extract.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/api/extract.js create mode 100644 node_modules/cheerio/dist/esm/api/extract.js.map create mode 100644 node_modules/cheerio/dist/esm/api/forms.d.ts create mode 100644 node_modules/cheerio/dist/esm/api/forms.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/api/forms.js create mode 100644 node_modules/cheerio/dist/esm/api/forms.js.map create mode 100644 node_modules/cheerio/dist/esm/api/manipulation.d.ts create mode 100644 node_modules/cheerio/dist/esm/api/manipulation.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/api/manipulation.js create mode 100644 node_modules/cheerio/dist/esm/api/manipulation.js.map create mode 100644 node_modules/cheerio/dist/esm/api/traversing.d.ts create mode 100644 node_modules/cheerio/dist/esm/api/traversing.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/api/traversing.js create mode 100644 node_modules/cheerio/dist/esm/api/traversing.js.map create mode 100644 node_modules/cheerio/dist/esm/cheerio.d.ts create mode 100644 node_modules/cheerio/dist/esm/cheerio.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/cheerio.js create mode 100644 node_modules/cheerio/dist/esm/cheerio.js.map create mode 100644 node_modules/cheerio/dist/esm/index.d.ts create mode 100644 node_modules/cheerio/dist/esm/index.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/index.js create mode 100644 node_modules/cheerio/dist/esm/index.js.map create mode 100644 node_modules/cheerio/dist/esm/load-parse.d.ts create mode 100644 node_modules/cheerio/dist/esm/load-parse.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/load-parse.js create mode 100644 node_modules/cheerio/dist/esm/load-parse.js.map create mode 100644 node_modules/cheerio/dist/esm/load.d.ts create mode 100644 node_modules/cheerio/dist/esm/load.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/load.js create mode 100644 node_modules/cheerio/dist/esm/load.js.map create mode 100644 node_modules/cheerio/dist/esm/options.d.ts create mode 100644 node_modules/cheerio/dist/esm/options.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/options.js create mode 100644 node_modules/cheerio/dist/esm/options.js.map create mode 100644 node_modules/cheerio/dist/esm/package.json create mode 100644 node_modules/cheerio/dist/esm/parse.d.ts create mode 100644 node_modules/cheerio/dist/esm/parse.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/parse.js create mode 100644 node_modules/cheerio/dist/esm/parse.js.map create mode 100644 node_modules/cheerio/dist/esm/parsers/parse5-adapter.d.ts create mode 100644 node_modules/cheerio/dist/esm/parsers/parse5-adapter.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/parsers/parse5-adapter.js create mode 100644 node_modules/cheerio/dist/esm/parsers/parse5-adapter.js.map create mode 100644 node_modules/cheerio/dist/esm/slim.d.ts create mode 100644 node_modules/cheerio/dist/esm/slim.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/slim.js create mode 100644 node_modules/cheerio/dist/esm/slim.js.map create mode 100644 node_modules/cheerio/dist/esm/static.d.ts create mode 100644 node_modules/cheerio/dist/esm/static.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/static.js create mode 100644 node_modules/cheerio/dist/esm/static.js.map create mode 100644 node_modules/cheerio/dist/esm/types.d.ts create mode 100644 node_modules/cheerio/dist/esm/types.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/types.js create mode 100644 node_modules/cheerio/dist/esm/types.js.map create mode 100644 node_modules/cheerio/dist/esm/utils.d.ts create mode 100644 node_modules/cheerio/dist/esm/utils.d.ts.map create mode 100644 node_modules/cheerio/dist/esm/utils.js create mode 100644 node_modules/cheerio/dist/esm/utils.js.map create mode 100644 node_modules/cheerio/package.json create mode 100644 node_modules/cheerio/src/api/attributes.ts create mode 100644 node_modules/cheerio/src/api/css.ts create mode 100644 node_modules/cheerio/src/api/extract.ts create mode 100644 node_modules/cheerio/src/api/forms.ts create mode 100644 node_modules/cheerio/src/api/manipulation.ts create mode 100644 node_modules/cheerio/src/api/traversing.ts create mode 100644 node_modules/cheerio/src/cheerio.ts create mode 100644 node_modules/cheerio/src/index-browser.mts create mode 100644 node_modules/cheerio/src/index.ts create mode 100644 node_modules/cheerio/src/load-parse.ts create mode 100644 node_modules/cheerio/src/load.ts create mode 100644 node_modules/cheerio/src/options.ts create mode 100644 node_modules/cheerio/src/parse.ts create mode 100644 node_modules/cheerio/src/parsers/parse5-adapter.ts create mode 100644 node_modules/cheerio/src/slim.ts create mode 100644 node_modules/cheerio/src/static.ts create mode 100644 node_modules/cheerio/src/types.ts create mode 100644 node_modules/cheerio/src/utils.ts create mode 100644 node_modules/cli-cursor/index.d.ts create mode 100644 node_modules/cli-cursor/index.js create mode 100644 node_modules/cli-cursor/license create mode 100644 node_modules/cli-cursor/package.json create mode 100644 node_modules/cli-cursor/readme.md create mode 100644 node_modules/cli-spinners/index.d.ts create mode 100644 node_modules/cli-spinners/index.js create mode 100644 node_modules/cli-spinners/license create mode 100644 node_modules/cli-spinners/package.json create mode 100644 node_modules/cli-spinners/readme.md create mode 100644 node_modules/cli-spinners/spinners.json create mode 100644 node_modules/combined-stream/License create mode 100644 node_modules/combined-stream/Readme.md create mode 100644 node_modules/combined-stream/lib/combined_stream.js create mode 100644 node_modules/combined-stream/package.json create mode 100644 node_modules/combined-stream/yarn.lock create mode 100644 node_modules/commander/LICENSE create mode 100644 node_modules/commander/Readme.md create mode 100644 node_modules/commander/esm.mjs create mode 100644 node_modules/commander/index.js create mode 100644 node_modules/commander/lib/argument.js create mode 100644 node_modules/commander/lib/command.js create mode 100644 node_modules/commander/lib/error.js create mode 100644 node_modules/commander/lib/help.js create mode 100644 node_modules/commander/lib/option.js create mode 100644 node_modules/commander/lib/suggestSimilar.js create mode 100644 node_modules/commander/package-support.json create mode 100644 node_modules/commander/package.json create mode 100644 node_modules/commander/typings/esm.d.mts create mode 100644 node_modules/commander/typings/index.d.ts create mode 100644 node_modules/concat-map/.travis.yml create mode 100644 node_modules/concat-map/LICENSE create mode 100644 node_modules/concat-map/README.markdown create mode 100644 node_modules/concat-map/example/map.js create mode 100644 node_modules/concat-map/index.js create mode 100644 node_modules/concat-map/package.json create mode 100644 node_modules/concat-map/test/map.js create mode 100644 node_modules/confbox/LICENSE create mode 100644 node_modules/confbox/README.md create mode 100644 node_modules/confbox/dist/index.cjs create mode 100644 node_modules/confbox/dist/index.d.cts create mode 100644 node_modules/confbox/dist/index.d.mts create mode 100644 node_modules/confbox/dist/index.d.ts create mode 100644 node_modules/confbox/dist/index.mjs create mode 100644 node_modules/confbox/dist/json5.cjs create mode 100644 node_modules/confbox/dist/json5.d.cts create mode 100644 node_modules/confbox/dist/json5.d.mts create mode 100644 node_modules/confbox/dist/json5.d.ts create mode 100644 node_modules/confbox/dist/json5.mjs create mode 100644 node_modules/confbox/dist/jsonc.cjs create mode 100644 node_modules/confbox/dist/jsonc.d.cts create mode 100644 node_modules/confbox/dist/jsonc.d.mts create mode 100644 node_modules/confbox/dist/jsonc.d.ts create mode 100644 node_modules/confbox/dist/jsonc.mjs create mode 100644 node_modules/confbox/dist/shared/confbox.3768c7e9.cjs create mode 100644 node_modules/confbox/dist/shared/confbox.6b479c78.cjs create mode 100644 node_modules/confbox/dist/shared/confbox.9388d834.mjs create mode 100644 node_modules/confbox/dist/shared/confbox.9745c98f.d.cts create mode 100644 node_modules/confbox/dist/shared/confbox.9745c98f.d.mts create mode 100644 node_modules/confbox/dist/shared/confbox.9745c98f.d.ts create mode 100644 node_modules/confbox/dist/shared/confbox.f9f03f05.mjs create mode 100644 node_modules/confbox/dist/toml.cjs create mode 100644 node_modules/confbox/dist/toml.d.cts create mode 100644 node_modules/confbox/dist/toml.d.mts create mode 100644 node_modules/confbox/dist/toml.d.ts create mode 100644 node_modules/confbox/dist/toml.mjs create mode 100644 node_modules/confbox/dist/yaml.cjs create mode 100644 node_modules/confbox/dist/yaml.d.cts create mode 100644 node_modules/confbox/dist/yaml.d.mts create mode 100644 node_modules/confbox/dist/yaml.d.ts create mode 100644 node_modules/confbox/dist/yaml.mjs create mode 100644 node_modules/confbox/json5.d.ts create mode 100644 node_modules/confbox/jsonc.d.ts create mode 100644 node_modules/confbox/package.json create mode 100644 node_modules/confbox/toml.d.ts create mode 100644 node_modules/confbox/yaml.d.ts create mode 100644 node_modules/cross-spawn/LICENSE create mode 100644 node_modules/cross-spawn/README.md create mode 100644 node_modules/cross-spawn/index.js create mode 100644 node_modules/cross-spawn/lib/enoent.js create mode 100644 node_modules/cross-spawn/lib/parse.js create mode 100644 node_modules/cross-spawn/lib/util/escape.js create mode 100644 node_modules/cross-spawn/lib/util/readShebang.js create mode 100644 node_modules/cross-spawn/lib/util/resolveCommand.js create mode 100644 node_modules/cross-spawn/package.json create mode 100644 node_modules/css-select/LICENSE create mode 100644 node_modules/css-select/README.md create mode 100644 node_modules/css-select/lib/attributes.d.ts create mode 100644 node_modules/css-select/lib/attributes.d.ts.map create mode 100644 node_modules/css-select/lib/attributes.js create mode 100644 node_modules/css-select/lib/attributes.js.map create mode 100644 node_modules/css-select/lib/compile.d.ts create mode 100644 node_modules/css-select/lib/compile.d.ts.map create mode 100644 node_modules/css-select/lib/compile.js create mode 100644 node_modules/css-select/lib/compile.js.map create mode 100644 node_modules/css-select/lib/esm/attributes.d.ts create mode 100644 node_modules/css-select/lib/esm/attributes.d.ts.map create mode 100644 node_modules/css-select/lib/esm/attributes.js create mode 100644 node_modules/css-select/lib/esm/attributes.js.map create mode 100644 node_modules/css-select/lib/esm/compile.d.ts create mode 100644 node_modules/css-select/lib/esm/compile.d.ts.map create mode 100644 node_modules/css-select/lib/esm/compile.js create mode 100644 node_modules/css-select/lib/esm/compile.js.map create mode 100644 node_modules/css-select/lib/esm/general.d.ts create mode 100644 node_modules/css-select/lib/esm/general.d.ts.map create mode 100644 node_modules/css-select/lib/esm/general.js create mode 100644 node_modules/css-select/lib/esm/general.js.map create mode 100644 node_modules/css-select/lib/esm/helpers/cache.d.ts create mode 100644 node_modules/css-select/lib/esm/helpers/cache.d.ts.map create mode 100644 node_modules/css-select/lib/esm/helpers/cache.js create mode 100644 node_modules/css-select/lib/esm/helpers/cache.js.map create mode 100644 node_modules/css-select/lib/esm/helpers/querying.d.ts create mode 100644 node_modules/css-select/lib/esm/helpers/querying.d.ts.map create mode 100644 node_modules/css-select/lib/esm/helpers/querying.js create mode 100644 node_modules/css-select/lib/esm/helpers/querying.js.map create mode 100644 node_modules/css-select/lib/esm/helpers/selectors.d.ts create mode 100644 node_modules/css-select/lib/esm/helpers/selectors.d.ts.map create mode 100644 node_modules/css-select/lib/esm/helpers/selectors.js create mode 100644 node_modules/css-select/lib/esm/helpers/selectors.js.map create mode 100644 node_modules/css-select/lib/esm/index.d.ts create mode 100644 node_modules/css-select/lib/esm/index.d.ts.map create mode 100644 node_modules/css-select/lib/esm/index.js create mode 100644 node_modules/css-select/lib/esm/index.js.map create mode 100644 node_modules/css-select/lib/esm/package.json create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/aliases.d.ts.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/aliases.js create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/aliases.js.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/filters.d.ts.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/filters.js create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/filters.js.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/index.d.ts.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/index.js create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/index.js.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/pseudos.d.ts.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/pseudos.js.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/subselects.d.ts.map create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/subselects.js create mode 100644 node_modules/css-select/lib/esm/pseudo-selectors/subselects.js.map create mode 100644 node_modules/css-select/lib/esm/sort.d.ts create mode 100644 node_modules/css-select/lib/esm/sort.d.ts.map create mode 100644 node_modules/css-select/lib/esm/sort.js create mode 100644 node_modules/css-select/lib/esm/sort.js.map create mode 100644 node_modules/css-select/lib/esm/types.d.ts create mode 100644 node_modules/css-select/lib/esm/types.d.ts.map create mode 100644 node_modules/css-select/lib/esm/types.js create mode 100644 node_modules/css-select/lib/esm/types.js.map create mode 100644 node_modules/css-select/lib/general.d.ts create mode 100644 node_modules/css-select/lib/general.d.ts.map create mode 100644 node_modules/css-select/lib/general.js create mode 100644 node_modules/css-select/lib/general.js.map create mode 100644 node_modules/css-select/lib/helpers/cache.d.ts create mode 100644 node_modules/css-select/lib/helpers/cache.d.ts.map create mode 100644 node_modules/css-select/lib/helpers/cache.js create mode 100644 node_modules/css-select/lib/helpers/cache.js.map create mode 100644 node_modules/css-select/lib/helpers/querying.d.ts create mode 100644 node_modules/css-select/lib/helpers/querying.d.ts.map create mode 100644 node_modules/css-select/lib/helpers/querying.js create mode 100644 node_modules/css-select/lib/helpers/querying.js.map create mode 100644 node_modules/css-select/lib/helpers/selectors.d.ts create mode 100644 node_modules/css-select/lib/helpers/selectors.d.ts.map create mode 100644 node_modules/css-select/lib/helpers/selectors.js create mode 100644 node_modules/css-select/lib/helpers/selectors.js.map create mode 100644 node_modules/css-select/lib/index.d.ts create mode 100644 node_modules/css-select/lib/index.d.ts.map create mode 100644 node_modules/css-select/lib/index.js create mode 100644 node_modules/css-select/lib/index.js.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/aliases.d.ts create mode 100644 node_modules/css-select/lib/pseudo-selectors/aliases.d.ts.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/aliases.js create mode 100644 node_modules/css-select/lib/pseudo-selectors/aliases.js.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/filters.d.ts create mode 100644 node_modules/css-select/lib/pseudo-selectors/filters.d.ts.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/filters.js create mode 100644 node_modules/css-select/lib/pseudo-selectors/filters.js.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/index.d.ts create mode 100644 node_modules/css-select/lib/pseudo-selectors/index.d.ts.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/index.js create mode 100644 node_modules/css-select/lib/pseudo-selectors/index.js.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts create mode 100644 node_modules/css-select/lib/pseudo-selectors/pseudos.d.ts.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/pseudos.js create mode 100644 node_modules/css-select/lib/pseudo-selectors/pseudos.js.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/subselects.d.ts create mode 100644 node_modules/css-select/lib/pseudo-selectors/subselects.d.ts.map create mode 100644 node_modules/css-select/lib/pseudo-selectors/subselects.js create mode 100644 node_modules/css-select/lib/pseudo-selectors/subselects.js.map create mode 100644 node_modules/css-select/lib/sort.d.ts create mode 100644 node_modules/css-select/lib/sort.d.ts.map create mode 100644 node_modules/css-select/lib/sort.js create mode 100644 node_modules/css-select/lib/sort.js.map create mode 100644 node_modules/css-select/lib/types.d.ts create mode 100644 node_modules/css-select/lib/types.d.ts.map create mode 100644 node_modules/css-select/lib/types.js create mode 100644 node_modules/css-select/lib/types.js.map create mode 100644 node_modules/css-select/package.json create mode 100644 node_modules/css-what/LICENSE create mode 100644 node_modules/css-what/lib/commonjs/index.d.ts create mode 100644 node_modules/css-what/lib/commonjs/index.d.ts.map create mode 100644 node_modules/css-what/lib/commonjs/index.js create mode 100644 node_modules/css-what/lib/commonjs/parse.d.ts create mode 100644 node_modules/css-what/lib/commonjs/parse.d.ts.map create mode 100644 node_modules/css-what/lib/commonjs/parse.js create mode 100644 node_modules/css-what/lib/commonjs/stringify.d.ts create mode 100644 node_modules/css-what/lib/commonjs/stringify.d.ts.map create mode 100644 node_modules/css-what/lib/commonjs/stringify.js create mode 100644 node_modules/css-what/lib/commonjs/types.d.ts create mode 100644 node_modules/css-what/lib/commonjs/types.d.ts.map create mode 100644 node_modules/css-what/lib/commonjs/types.js create mode 100644 node_modules/css-what/lib/es/index.d.ts create mode 100644 node_modules/css-what/lib/es/index.d.ts.map create mode 100644 node_modules/css-what/lib/es/index.js create mode 100644 node_modules/css-what/lib/es/parse.d.ts create mode 100644 node_modules/css-what/lib/es/parse.d.ts.map create mode 100644 node_modules/css-what/lib/es/parse.js create mode 100644 node_modules/css-what/lib/es/stringify.d.ts create mode 100644 node_modules/css-what/lib/es/stringify.d.ts.map create mode 100644 node_modules/css-what/lib/es/stringify.js create mode 100644 node_modules/css-what/lib/es/types.d.ts create mode 100644 node_modules/css-what/lib/es/types.d.ts.map create mode 100644 node_modules/css-what/lib/es/types.js create mode 100644 node_modules/css-what/package.json create mode 100644 node_modules/css-what/readme.md create mode 100644 node_modules/debug/LICENSE create mode 100644 node_modules/debug/README.md create mode 100644 node_modules/debug/package.json create mode 100644 node_modules/debug/src/browser.js create mode 100644 node_modules/debug/src/common.js create mode 100644 node_modules/debug/src/index.js create mode 100644 node_modules/debug/src/node.js create mode 100644 node_modules/deep-eql/LICENSE create mode 100644 node_modules/deep-eql/README.md create mode 100644 node_modules/deep-eql/deep-eql.js create mode 100644 node_modules/deep-eql/index.js create mode 100644 node_modules/deep-eql/package.json create mode 100644 node_modules/delayed-stream/.npmignore create mode 100644 node_modules/delayed-stream/License create mode 100644 node_modules/delayed-stream/Makefile create mode 100644 node_modules/delayed-stream/Readme.md create mode 100644 node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 node_modules/delayed-stream/package.json create mode 100644 node_modules/diff-sequences/LICENSE create mode 100644 node_modules/diff-sequences/README.md create mode 100644 node_modules/diff-sequences/build/index.d.ts create mode 100644 node_modules/diff-sequences/build/index.js create mode 100644 node_modules/diff-sequences/package.json create mode 100644 node_modules/dom-serializer/LICENSE create mode 100644 node_modules/dom-serializer/README.md create mode 100644 node_modules/dom-serializer/lib/esm/foreignNames.d.ts create mode 100644 node_modules/dom-serializer/lib/esm/foreignNames.d.ts.map create mode 100644 node_modules/dom-serializer/lib/esm/foreignNames.js create mode 100644 node_modules/dom-serializer/lib/esm/index.d.ts create mode 100644 node_modules/dom-serializer/lib/esm/index.d.ts.map create mode 100644 node_modules/dom-serializer/lib/esm/index.js create mode 100644 node_modules/dom-serializer/lib/esm/package.json create mode 100644 node_modules/dom-serializer/lib/foreignNames.d.ts create mode 100644 node_modules/dom-serializer/lib/foreignNames.d.ts.map create mode 100644 node_modules/dom-serializer/lib/foreignNames.js create mode 100644 node_modules/dom-serializer/lib/index.d.ts create mode 100644 node_modules/dom-serializer/lib/index.d.ts.map create mode 100644 node_modules/dom-serializer/lib/index.js create mode 100644 node_modules/dom-serializer/package.json create mode 100644 node_modules/domelementtype/LICENSE create mode 100644 node_modules/domelementtype/lib/esm/index.d.ts create mode 100644 node_modules/domelementtype/lib/esm/index.d.ts.map create mode 100644 node_modules/domelementtype/lib/esm/index.js create mode 100644 node_modules/domelementtype/lib/esm/package.json create mode 100644 node_modules/domelementtype/lib/index.d.ts create mode 100644 node_modules/domelementtype/lib/index.d.ts.map create mode 100644 node_modules/domelementtype/lib/index.js create mode 100644 node_modules/domelementtype/package.json create mode 100644 node_modules/domelementtype/readme.md create mode 100644 node_modules/domhandler/LICENSE create mode 100644 node_modules/domhandler/lib/esm/index.d.ts create mode 100644 node_modules/domhandler/lib/esm/index.d.ts.map create mode 100644 node_modules/domhandler/lib/esm/index.js create mode 100644 node_modules/domhandler/lib/esm/node.d.ts create mode 100644 node_modules/domhandler/lib/esm/node.d.ts.map create mode 100644 node_modules/domhandler/lib/esm/node.js create mode 100644 node_modules/domhandler/lib/esm/package.json create mode 100644 node_modules/domhandler/lib/index.d.ts create mode 100644 node_modules/domhandler/lib/index.d.ts.map create mode 100644 node_modules/domhandler/lib/index.js create mode 100644 node_modules/domhandler/lib/node.d.ts create mode 100644 node_modules/domhandler/lib/node.d.ts.map create mode 100644 node_modules/domhandler/lib/node.js create mode 100644 node_modules/domhandler/package.json create mode 100644 node_modules/domhandler/readme.md create mode 100644 node_modules/domutils/LICENSE create mode 100644 node_modules/domutils/lib/esm/feeds.d.ts create mode 100644 node_modules/domutils/lib/esm/feeds.d.ts.map create mode 100644 node_modules/domutils/lib/esm/feeds.js create mode 100644 node_modules/domutils/lib/esm/feeds.js.map create mode 100644 node_modules/domutils/lib/esm/helpers.d.ts create mode 100644 node_modules/domutils/lib/esm/helpers.d.ts.map create mode 100644 node_modules/domutils/lib/esm/helpers.js create mode 100644 node_modules/domutils/lib/esm/helpers.js.map create mode 100644 node_modules/domutils/lib/esm/index.d.ts create mode 100644 node_modules/domutils/lib/esm/index.d.ts.map create mode 100644 node_modules/domutils/lib/esm/index.js create mode 100644 node_modules/domutils/lib/esm/index.js.map create mode 100644 node_modules/domutils/lib/esm/legacy.d.ts create mode 100644 node_modules/domutils/lib/esm/legacy.d.ts.map create mode 100644 node_modules/domutils/lib/esm/legacy.js create mode 100644 node_modules/domutils/lib/esm/legacy.js.map create mode 100644 node_modules/domutils/lib/esm/manipulation.d.ts create mode 100644 node_modules/domutils/lib/esm/manipulation.d.ts.map create mode 100644 node_modules/domutils/lib/esm/manipulation.js create mode 100644 node_modules/domutils/lib/esm/manipulation.js.map create mode 100644 node_modules/domutils/lib/esm/package.json create mode 100644 node_modules/domutils/lib/esm/querying.d.ts create mode 100644 node_modules/domutils/lib/esm/querying.d.ts.map create mode 100644 node_modules/domutils/lib/esm/querying.js create mode 100644 node_modules/domutils/lib/esm/querying.js.map create mode 100644 node_modules/domutils/lib/esm/stringify.d.ts create mode 100644 node_modules/domutils/lib/esm/stringify.d.ts.map create mode 100644 node_modules/domutils/lib/esm/stringify.js create mode 100644 node_modules/domutils/lib/esm/stringify.js.map create mode 100644 node_modules/domutils/lib/esm/traversal.d.ts create mode 100644 node_modules/domutils/lib/esm/traversal.d.ts.map create mode 100644 node_modules/domutils/lib/esm/traversal.js create mode 100644 node_modules/domutils/lib/esm/traversal.js.map create mode 100644 node_modules/domutils/lib/feeds.d.ts create mode 100644 node_modules/domutils/lib/feeds.d.ts.map create mode 100644 node_modules/domutils/lib/feeds.js create mode 100644 node_modules/domutils/lib/feeds.js.map create mode 100644 node_modules/domutils/lib/helpers.d.ts create mode 100644 node_modules/domutils/lib/helpers.d.ts.map create mode 100644 node_modules/domutils/lib/helpers.js create mode 100644 node_modules/domutils/lib/helpers.js.map create mode 100644 node_modules/domutils/lib/index.d.ts create mode 100644 node_modules/domutils/lib/index.d.ts.map create mode 100644 node_modules/domutils/lib/index.js create mode 100644 node_modules/domutils/lib/index.js.map create mode 100644 node_modules/domutils/lib/legacy.d.ts create mode 100644 node_modules/domutils/lib/legacy.d.ts.map create mode 100644 node_modules/domutils/lib/legacy.js create mode 100644 node_modules/domutils/lib/legacy.js.map create mode 100644 node_modules/domutils/lib/manipulation.d.ts create mode 100644 node_modules/domutils/lib/manipulation.d.ts.map create mode 100644 node_modules/domutils/lib/manipulation.js create mode 100644 node_modules/domutils/lib/manipulation.js.map create mode 100644 node_modules/domutils/lib/querying.d.ts create mode 100644 node_modules/domutils/lib/querying.d.ts.map create mode 100644 node_modules/domutils/lib/querying.js create mode 100644 node_modules/domutils/lib/querying.js.map create mode 100644 node_modules/domutils/lib/stringify.d.ts create mode 100644 node_modules/domutils/lib/stringify.d.ts.map create mode 100644 node_modules/domutils/lib/stringify.js create mode 100644 node_modules/domutils/lib/stringify.js.map create mode 100644 node_modules/domutils/lib/traversal.d.ts create mode 100644 node_modules/domutils/lib/traversal.d.ts.map create mode 100644 node_modules/domutils/lib/traversal.js create mode 100644 node_modules/domutils/lib/traversal.js.map create mode 100644 node_modules/domutils/package.json create mode 100644 node_modules/domutils/readme.md create mode 100644 node_modules/dunder-proto/.eslintrc create mode 100644 node_modules/dunder-proto/.github/FUNDING.yml create mode 100644 node_modules/dunder-proto/.nycrc create mode 100644 node_modules/dunder-proto/CHANGELOG.md create mode 100644 node_modules/dunder-proto/LICENSE create mode 100644 node_modules/dunder-proto/README.md create mode 100644 node_modules/dunder-proto/get.d.ts create mode 100644 node_modules/dunder-proto/get.js create mode 100644 node_modules/dunder-proto/package.json create mode 100644 node_modules/dunder-proto/set.d.ts create mode 100644 node_modules/dunder-proto/set.js create mode 100644 node_modules/dunder-proto/test/get.js create mode 100644 node_modules/dunder-proto/test/index.js create mode 100644 node_modules/dunder-proto/test/set.js create mode 100644 node_modules/dunder-proto/tsconfig.json create mode 100644 node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 node_modules/emoji-regex/README.md create mode 100644 node_modules/emoji-regex/index.d.ts create mode 100644 node_modules/emoji-regex/index.js create mode 100644 node_modules/emoji-regex/index.mjs create mode 100644 node_modules/emoji-regex/package.json create mode 100644 node_modules/encoding-sniffer/LICENSE create mode 100644 node_modules/encoding-sniffer/README.md create mode 100644 node_modules/encoding-sniffer/dist/commonjs/index.d.ts create mode 100644 node_modules/encoding-sniffer/dist/commonjs/index.d.ts.map create mode 100644 node_modules/encoding-sniffer/dist/commonjs/index.js create mode 100644 node_modules/encoding-sniffer/dist/commonjs/index.js.map create mode 100644 node_modules/encoding-sniffer/dist/commonjs/package.json create mode 100644 node_modules/encoding-sniffer/dist/commonjs/sniffer.d.ts create mode 100644 node_modules/encoding-sniffer/dist/commonjs/sniffer.d.ts.map create mode 100644 node_modules/encoding-sniffer/dist/commonjs/sniffer.js create mode 100644 node_modules/encoding-sniffer/dist/commonjs/sniffer.js.map create mode 100644 node_modules/encoding-sniffer/dist/esm/index.d.ts create mode 100644 node_modules/encoding-sniffer/dist/esm/index.d.ts.map create mode 100644 node_modules/encoding-sniffer/dist/esm/index.js create mode 100644 node_modules/encoding-sniffer/dist/esm/index.js.map create mode 100644 node_modules/encoding-sniffer/dist/esm/package.json create mode 100644 node_modules/encoding-sniffer/dist/esm/sniffer.d.ts create mode 100644 node_modules/encoding-sniffer/dist/esm/sniffer.d.ts.map create mode 100644 node_modules/encoding-sniffer/dist/esm/sniffer.js create mode 100644 node_modules/encoding-sniffer/dist/esm/sniffer.js.map create mode 100644 node_modules/encoding-sniffer/package.json create mode 100644 node_modules/encoding-sniffer/sniffer.d.ts create mode 100644 node_modules/encoding-sniffer/sniffer.js create mode 100644 node_modules/entities/LICENSE create mode 100644 node_modules/entities/lib/decode.d.ts create mode 100644 node_modules/entities/lib/decode.d.ts.map create mode 100644 node_modules/entities/lib/decode.js create mode 100644 node_modules/entities/lib/decode.js.map create mode 100644 node_modules/entities/lib/decode_codepoint.d.ts create mode 100644 node_modules/entities/lib/decode_codepoint.d.ts.map create mode 100644 node_modules/entities/lib/decode_codepoint.js create mode 100644 node_modules/entities/lib/decode_codepoint.js.map create mode 100644 node_modules/entities/lib/encode.d.ts create mode 100644 node_modules/entities/lib/encode.d.ts.map create mode 100644 node_modules/entities/lib/encode.js create mode 100644 node_modules/entities/lib/encode.js.map create mode 100644 node_modules/entities/lib/escape.d.ts create mode 100644 node_modules/entities/lib/escape.d.ts.map create mode 100644 node_modules/entities/lib/escape.js create mode 100644 node_modules/entities/lib/escape.js.map create mode 100644 node_modules/entities/lib/esm/decode.d.ts create mode 100644 node_modules/entities/lib/esm/decode.d.ts.map create mode 100644 node_modules/entities/lib/esm/decode.js create mode 100644 node_modules/entities/lib/esm/decode.js.map create mode 100644 node_modules/entities/lib/esm/decode_codepoint.d.ts create mode 100644 node_modules/entities/lib/esm/decode_codepoint.d.ts.map create mode 100644 node_modules/entities/lib/esm/decode_codepoint.js create mode 100644 node_modules/entities/lib/esm/decode_codepoint.js.map create mode 100644 node_modules/entities/lib/esm/encode.d.ts create mode 100644 node_modules/entities/lib/esm/encode.d.ts.map create mode 100644 node_modules/entities/lib/esm/encode.js create mode 100644 node_modules/entities/lib/esm/encode.js.map create mode 100644 node_modules/entities/lib/esm/escape.d.ts create mode 100644 node_modules/entities/lib/esm/escape.d.ts.map create mode 100644 node_modules/entities/lib/esm/escape.js create mode 100644 node_modules/entities/lib/esm/escape.js.map create mode 100644 node_modules/entities/lib/esm/generated/decode-data-html.d.ts create mode 100644 node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map create mode 100644 node_modules/entities/lib/esm/generated/decode-data-html.js create mode 100644 node_modules/entities/lib/esm/generated/decode-data-html.js.map create mode 100644 node_modules/entities/lib/esm/generated/decode-data-xml.d.ts create mode 100644 node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map create mode 100644 node_modules/entities/lib/esm/generated/decode-data-xml.js create mode 100644 node_modules/entities/lib/esm/generated/decode-data-xml.js.map create mode 100644 node_modules/entities/lib/esm/generated/encode-html.d.ts create mode 100644 node_modules/entities/lib/esm/generated/encode-html.d.ts.map create mode 100644 node_modules/entities/lib/esm/generated/encode-html.js create mode 100644 node_modules/entities/lib/esm/generated/encode-html.js.map create mode 100644 node_modules/entities/lib/esm/index.d.ts create mode 100644 node_modules/entities/lib/esm/index.d.ts.map create mode 100644 node_modules/entities/lib/esm/index.js create mode 100644 node_modules/entities/lib/esm/index.js.map create mode 100644 node_modules/entities/lib/esm/package.json create mode 100644 node_modules/entities/lib/generated/decode-data-html.d.ts create mode 100644 node_modules/entities/lib/generated/decode-data-html.d.ts.map create mode 100644 node_modules/entities/lib/generated/decode-data-html.js create mode 100644 node_modules/entities/lib/generated/decode-data-html.js.map create mode 100644 node_modules/entities/lib/generated/decode-data-xml.d.ts create mode 100644 node_modules/entities/lib/generated/decode-data-xml.d.ts.map create mode 100644 node_modules/entities/lib/generated/decode-data-xml.js create mode 100644 node_modules/entities/lib/generated/decode-data-xml.js.map create mode 100644 node_modules/entities/lib/generated/encode-html.d.ts create mode 100644 node_modules/entities/lib/generated/encode-html.d.ts.map create mode 100644 node_modules/entities/lib/generated/encode-html.js create mode 100644 node_modules/entities/lib/generated/encode-html.js.map create mode 100644 node_modules/entities/lib/index.d.ts create mode 100644 node_modules/entities/lib/index.d.ts.map create mode 100644 node_modules/entities/lib/index.js create mode 100644 node_modules/entities/lib/index.js.map create mode 100644 node_modules/entities/package.json create mode 100644 node_modules/entities/readme.md create mode 100644 node_modules/es-define-property/.eslintrc create mode 100644 node_modules/es-define-property/.github/FUNDING.yml create mode 100644 node_modules/es-define-property/.nycrc create mode 100644 node_modules/es-define-property/CHANGELOG.md create mode 100644 node_modules/es-define-property/LICENSE create mode 100644 node_modules/es-define-property/README.md create mode 100644 node_modules/es-define-property/index.d.ts create mode 100644 node_modules/es-define-property/index.js create mode 100644 node_modules/es-define-property/package.json create mode 100644 node_modules/es-define-property/test/index.js create mode 100644 node_modules/es-define-property/tsconfig.json create mode 100644 node_modules/es-errors/.eslintrc create mode 100644 node_modules/es-errors/.github/FUNDING.yml create mode 100644 node_modules/es-errors/CHANGELOG.md create mode 100644 node_modules/es-errors/LICENSE create mode 100644 node_modules/es-errors/README.md create mode 100644 node_modules/es-errors/eval.d.ts create mode 100644 node_modules/es-errors/eval.js create mode 100644 node_modules/es-errors/index.d.ts create mode 100644 node_modules/es-errors/index.js create mode 100644 node_modules/es-errors/package.json create mode 100644 node_modules/es-errors/range.d.ts create mode 100644 node_modules/es-errors/range.js create mode 100644 node_modules/es-errors/ref.d.ts create mode 100644 node_modules/es-errors/ref.js create mode 100644 node_modules/es-errors/syntax.d.ts create mode 100644 node_modules/es-errors/syntax.js create mode 100644 node_modules/es-errors/test/index.js create mode 100644 node_modules/es-errors/tsconfig.json create mode 100644 node_modules/es-errors/type.d.ts create mode 100644 node_modules/es-errors/type.js create mode 100644 node_modules/es-errors/uri.d.ts create mode 100644 node_modules/es-errors/uri.js create mode 100644 node_modules/es-object-atoms/.eslintrc create mode 100644 node_modules/es-object-atoms/.github/FUNDING.yml create mode 100644 node_modules/es-object-atoms/CHANGELOG.md create mode 100644 node_modules/es-object-atoms/LICENSE create mode 100644 node_modules/es-object-atoms/README.md create mode 100644 node_modules/es-object-atoms/RequireObjectCoercible.d.ts create mode 100644 node_modules/es-object-atoms/RequireObjectCoercible.js create mode 100644 node_modules/es-object-atoms/ToObject.d.ts create mode 100644 node_modules/es-object-atoms/ToObject.js create mode 100644 node_modules/es-object-atoms/index.d.ts create mode 100644 node_modules/es-object-atoms/index.js create mode 100644 node_modules/es-object-atoms/isObject.d.ts create mode 100644 node_modules/es-object-atoms/isObject.js create mode 100644 node_modules/es-object-atoms/package.json create mode 100644 node_modules/es-object-atoms/test/index.js create mode 100644 node_modules/es-object-atoms/tsconfig.json create mode 100644 node_modules/es-set-tostringtag/.eslintrc create mode 100644 node_modules/es-set-tostringtag/.nycrc create mode 100644 node_modules/es-set-tostringtag/CHANGELOG.md create mode 100644 node_modules/es-set-tostringtag/LICENSE create mode 100644 node_modules/es-set-tostringtag/README.md create mode 100644 node_modules/es-set-tostringtag/index.d.ts create mode 100644 node_modules/es-set-tostringtag/index.js create mode 100644 node_modules/es-set-tostringtag/package.json create mode 100644 node_modules/es-set-tostringtag/test/index.js create mode 100644 node_modules/es-set-tostringtag/tsconfig.json create mode 100644 node_modules/esbuild/LICENSE.md create mode 100644 node_modules/esbuild/README.md create mode 100644 node_modules/esbuild/bin/esbuild create mode 100644 node_modules/esbuild/install.js create mode 100644 node_modules/esbuild/lib/main.d.ts create mode 100644 node_modules/esbuild/lib/main.js create mode 100644 node_modules/esbuild/package.json create mode 100644 node_modules/estree-walker/LICENSE create mode 100644 node_modules/estree-walker/README.md create mode 100644 node_modules/estree-walker/package.json create mode 100644 node_modules/estree-walker/src/async.js create mode 100644 node_modules/estree-walker/src/index.js create mode 100644 node_modules/estree-walker/src/sync.js create mode 100644 node_modules/estree-walker/src/walker.js create mode 100644 node_modules/estree-walker/types/async.d.ts create mode 100644 node_modules/estree-walker/types/index.d.ts create mode 100644 node_modules/estree-walker/types/sync.d.ts create mode 100644 node_modules/estree-walker/types/walker.d.ts create mode 100644 node_modules/execa/index.d.ts create mode 100644 node_modules/execa/index.js create mode 100644 node_modules/execa/lib/command.js create mode 100644 node_modules/execa/lib/error.js create mode 100644 node_modules/execa/lib/kill.js create mode 100644 node_modules/execa/lib/pipe.js create mode 100644 node_modules/execa/lib/promise.js create mode 100644 node_modules/execa/lib/stdio.js create mode 100644 node_modules/execa/lib/stream.js create mode 100644 node_modules/execa/lib/verbose.js create mode 100644 node_modules/execa/license create mode 100644 node_modules/execa/node_modules/onetime/index.d.ts create mode 100644 node_modules/execa/node_modules/onetime/index.js create mode 100644 node_modules/execa/node_modules/onetime/license create mode 100644 node_modules/execa/node_modules/onetime/package.json create mode 100644 node_modules/execa/node_modules/onetime/readme.md create mode 100644 node_modules/execa/package.json create mode 100644 node_modules/execa/readme.md create mode 100644 node_modules/follow-redirects/LICENSE create mode 100644 node_modules/follow-redirects/README.md create mode 100644 node_modules/follow-redirects/debug.js create mode 100644 node_modules/follow-redirects/http.js create mode 100644 node_modules/follow-redirects/https.js create mode 100644 node_modules/follow-redirects/index.js create mode 100644 node_modules/follow-redirects/package.json create mode 100644 node_modules/form-data/CHANGELOG.md create mode 100644 node_modules/form-data/License create mode 100644 node_modules/form-data/README.md create mode 100644 node_modules/form-data/index.d.ts create mode 100644 node_modules/form-data/lib/browser.js create mode 100644 node_modules/form-data/lib/form_data.js create mode 100644 node_modules/form-data/lib/populate.js create mode 100644 node_modules/form-data/package.json create mode 100644 node_modules/fs.realpath/LICENSE create mode 100644 node_modules/fs.realpath/README.md create mode 100644 node_modules/fs.realpath/index.js create mode 100644 node_modules/fs.realpath/old.js create mode 100644 node_modules/fs.realpath/package.json create mode 100644 node_modules/function-bind/.eslintrc create mode 100644 node_modules/function-bind/.github/FUNDING.yml create mode 100644 node_modules/function-bind/.github/SECURITY.md create mode 100644 node_modules/function-bind/.nycrc create mode 100644 node_modules/function-bind/CHANGELOG.md create mode 100644 node_modules/function-bind/LICENSE create mode 100644 node_modules/function-bind/README.md create mode 100644 node_modules/function-bind/implementation.js create mode 100644 node_modules/function-bind/index.js create mode 100644 node_modules/function-bind/package.json create mode 100644 node_modules/function-bind/test/.eslintrc create mode 100644 node_modules/function-bind/test/index.js create mode 100644 node_modules/get-east-asian-width/index.d.ts create mode 100644 node_modules/get-east-asian-width/index.js create mode 100644 node_modules/get-east-asian-width/license create mode 100644 node_modules/get-east-asian-width/lookup-data.js create mode 100644 node_modules/get-east-asian-width/lookup.js create mode 100644 node_modules/get-east-asian-width/package.json create mode 100644 node_modules/get-east-asian-width/readme.md create mode 100644 node_modules/get-east-asian-width/utilities.js create mode 100644 node_modules/get-func-name/LICENSE create mode 100644 node_modules/get-func-name/README.md create mode 100644 node_modules/get-func-name/get-func-name.js create mode 100644 node_modules/get-func-name/index.js create mode 100644 node_modules/get-func-name/package.json create mode 100644 node_modules/get-intrinsic/.eslintrc create mode 100644 node_modules/get-intrinsic/.github/FUNDING.yml create mode 100644 node_modules/get-intrinsic/.nycrc create mode 100644 node_modules/get-intrinsic/CHANGELOG.md create mode 100644 node_modules/get-intrinsic/LICENSE create mode 100644 node_modules/get-intrinsic/README.md create mode 100644 node_modules/get-intrinsic/index.js create mode 100644 node_modules/get-intrinsic/package.json create mode 100644 node_modules/get-intrinsic/test/GetIntrinsic.js create mode 100644 node_modules/get-proto/.eslintrc create mode 100644 node_modules/get-proto/.github/FUNDING.yml create mode 100644 node_modules/get-proto/.nycrc create mode 100644 node_modules/get-proto/CHANGELOG.md create mode 100644 node_modules/get-proto/LICENSE create mode 100644 node_modules/get-proto/Object.getPrototypeOf.d.ts create mode 100644 node_modules/get-proto/Object.getPrototypeOf.js create mode 100644 node_modules/get-proto/README.md create mode 100644 node_modules/get-proto/Reflect.getPrototypeOf.d.ts create mode 100644 node_modules/get-proto/Reflect.getPrototypeOf.js create mode 100644 node_modules/get-proto/index.d.ts create mode 100644 node_modules/get-proto/index.js create mode 100644 node_modules/get-proto/package.json create mode 100644 node_modules/get-proto/test/index.js create mode 100644 node_modules/get-proto/tsconfig.json create mode 100644 node_modules/get-stream/license create mode 100644 node_modules/get-stream/package.json create mode 100644 node_modules/get-stream/readme.md create mode 100644 node_modules/get-stream/source/array-buffer.js create mode 100644 node_modules/get-stream/source/array.js create mode 100644 node_modules/get-stream/source/buffer.js create mode 100644 node_modules/get-stream/source/contents.js create mode 100644 node_modules/get-stream/source/index.d.ts create mode 100644 node_modules/get-stream/source/index.js create mode 100644 node_modules/get-stream/source/string.js create mode 100644 node_modules/get-stream/source/utils.js create mode 100644 node_modules/glob/LICENSE create mode 100644 node_modules/glob/README.md create mode 100644 node_modules/glob/common.js create mode 100644 node_modules/glob/glob.js create mode 100644 node_modules/glob/package.json create mode 100644 node_modules/glob/sync.js create mode 100644 node_modules/gopd/.eslintrc create mode 100644 node_modules/gopd/.github/FUNDING.yml create mode 100644 node_modules/gopd/CHANGELOG.md create mode 100644 node_modules/gopd/LICENSE create mode 100644 node_modules/gopd/README.md create mode 100644 node_modules/gopd/gOPD.d.ts create mode 100644 node_modules/gopd/gOPD.js create mode 100644 node_modules/gopd/index.d.ts create mode 100644 node_modules/gopd/index.js create mode 100644 node_modules/gopd/package.json create mode 100644 node_modules/gopd/test/index.js create mode 100644 node_modules/gopd/tsconfig.json create mode 100644 node_modules/has-flag/index.d.ts create mode 100644 node_modules/has-flag/index.js create mode 100644 node_modules/has-flag/license create mode 100644 node_modules/has-flag/package.json create mode 100644 node_modules/has-flag/readme.md create mode 100644 node_modules/has-symbols/.eslintrc create mode 100644 node_modules/has-symbols/.github/FUNDING.yml create mode 100644 node_modules/has-symbols/.nycrc create mode 100644 node_modules/has-symbols/CHANGELOG.md create mode 100644 node_modules/has-symbols/LICENSE create mode 100644 node_modules/has-symbols/README.md create mode 100644 node_modules/has-symbols/index.d.ts create mode 100644 node_modules/has-symbols/index.js create mode 100644 node_modules/has-symbols/package.json create mode 100644 node_modules/has-symbols/shams.d.ts create mode 100644 node_modules/has-symbols/shams.js create mode 100644 node_modules/has-symbols/test/index.js create mode 100644 node_modules/has-symbols/test/shams/core-js.js create mode 100644 node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 node_modules/has-symbols/test/tests.js create mode 100644 node_modules/has-symbols/tsconfig.json create mode 100644 node_modules/has-tostringtag/.eslintrc create mode 100644 node_modules/has-tostringtag/.github/FUNDING.yml create mode 100644 node_modules/has-tostringtag/.nycrc create mode 100644 node_modules/has-tostringtag/CHANGELOG.md create mode 100644 node_modules/has-tostringtag/LICENSE create mode 100644 node_modules/has-tostringtag/README.md create mode 100644 node_modules/has-tostringtag/index.d.ts create mode 100644 node_modules/has-tostringtag/index.js create mode 100644 node_modules/has-tostringtag/package.json create mode 100644 node_modules/has-tostringtag/shams.d.ts create mode 100644 node_modules/has-tostringtag/shams.js create mode 100644 node_modules/has-tostringtag/test/index.js create mode 100644 node_modules/has-tostringtag/test/shams/core-js.js create mode 100644 node_modules/has-tostringtag/test/shams/get-own-property-symbols.js create mode 100644 node_modules/has-tostringtag/test/tests.js create mode 100644 node_modules/has-tostringtag/tsconfig.json create mode 100644 node_modules/hasown/.eslintrc create mode 100644 node_modules/hasown/.github/FUNDING.yml create mode 100644 node_modules/hasown/.nycrc create mode 100644 node_modules/hasown/CHANGELOG.md create mode 100644 node_modules/hasown/LICENSE create mode 100644 node_modules/hasown/README.md create mode 100644 node_modules/hasown/index.d.ts create mode 100644 node_modules/hasown/index.js create mode 100644 node_modules/hasown/package.json create mode 100644 node_modules/hasown/tsconfig.json create mode 100644 node_modules/html-escaper/LICENSE.txt create mode 100644 node_modules/html-escaper/README.md create mode 100644 node_modules/html-escaper/cjs/index.js create mode 100644 node_modules/html-escaper/cjs/package.json create mode 100644 node_modules/html-escaper/esm/index.js create mode 100644 node_modules/html-escaper/index.js create mode 100644 node_modules/html-escaper/min.js create mode 100644 node_modules/html-escaper/package.json create mode 100644 node_modules/html-escaper/test/index.js create mode 100644 node_modules/html-escaper/test/package.json create mode 100644 node_modules/htmlparser2/LICENSE create mode 100644 node_modules/htmlparser2/README.md create mode 100644 node_modules/htmlparser2/WritableStream.js create mode 100644 node_modules/htmlparser2/dist/commonjs/Parser.d.ts create mode 100644 node_modules/htmlparser2/dist/commonjs/Parser.d.ts.map create mode 100644 node_modules/htmlparser2/dist/commonjs/Parser.js create mode 100644 node_modules/htmlparser2/dist/commonjs/Parser.js.map create mode 100644 node_modules/htmlparser2/dist/commonjs/Tokenizer.d.ts create mode 100644 node_modules/htmlparser2/dist/commonjs/Tokenizer.d.ts.map create mode 100644 node_modules/htmlparser2/dist/commonjs/Tokenizer.js create mode 100644 node_modules/htmlparser2/dist/commonjs/Tokenizer.js.map create mode 100644 node_modules/htmlparser2/dist/commonjs/WritableStream.d.ts create mode 100644 node_modules/htmlparser2/dist/commonjs/WritableStream.d.ts.map create mode 100644 node_modules/htmlparser2/dist/commonjs/WritableStream.js create mode 100644 node_modules/htmlparser2/dist/commonjs/WritableStream.js.map create mode 100644 node_modules/htmlparser2/dist/commonjs/index.d.ts create mode 100644 node_modules/htmlparser2/dist/commonjs/index.d.ts.map create mode 100644 node_modules/htmlparser2/dist/commonjs/index.js create mode 100644 node_modules/htmlparser2/dist/commonjs/index.js.map create mode 100644 node_modules/htmlparser2/dist/commonjs/package.json create mode 100644 node_modules/htmlparser2/dist/esm/Parser.d.ts create mode 100644 node_modules/htmlparser2/dist/esm/Parser.d.ts.map create mode 100644 node_modules/htmlparser2/dist/esm/Parser.js create mode 100644 node_modules/htmlparser2/dist/esm/Parser.js.map create mode 100644 node_modules/htmlparser2/dist/esm/Tokenizer.d.ts create mode 100644 node_modules/htmlparser2/dist/esm/Tokenizer.d.ts.map create mode 100644 node_modules/htmlparser2/dist/esm/Tokenizer.js create mode 100644 node_modules/htmlparser2/dist/esm/Tokenizer.js.map create mode 100644 node_modules/htmlparser2/dist/esm/WritableStream.d.ts create mode 100644 node_modules/htmlparser2/dist/esm/WritableStream.d.ts.map create mode 100644 node_modules/htmlparser2/dist/esm/WritableStream.js create mode 100644 node_modules/htmlparser2/dist/esm/WritableStream.js.map create mode 100644 node_modules/htmlparser2/dist/esm/index.d.ts create mode 100644 node_modules/htmlparser2/dist/esm/index.d.ts.map create mode 100644 node_modules/htmlparser2/dist/esm/index.js create mode 100644 node_modules/htmlparser2/dist/esm/index.js.map create mode 100644 node_modules/htmlparser2/dist/esm/package.json create mode 100644 node_modules/htmlparser2/node_modules/entities/LICENSE create mode 100644 node_modules/htmlparser2/node_modules/entities/decode.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/decode.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode-codepoint.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/decode.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/encode.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/encode.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/encode.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/encode.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/escape.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/escape.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/escape.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/escape.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/encode-html.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/encode-html.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/generated/encode-html.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/index.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/index.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/index.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/index.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/bin-trie-flags.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/bin-trie-flags.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/bin-trie-flags.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/decode-shared.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/decode-shared.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/decode-shared.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/decode-shared.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/encode-shared.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/encode-shared.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/encode-shared.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/internal/encode-shared.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/commonjs/package.json create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode-codepoint.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode-codepoint.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode-codepoint.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode-codepoint.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/decode.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/encode.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/encode.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/encode.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/encode.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/escape.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/escape.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/escape.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/escape.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-html.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-html.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-html.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-xml.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/decode-data-xml.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/encode-html.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/encode-html.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/encode-html.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/generated/encode-html.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/index.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/index.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/index.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/index.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/bin-trie-flags.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/bin-trie-flags.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/bin-trie-flags.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/bin-trie-flags.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/decode-shared.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/decode-shared.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/decode-shared.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/decode-shared.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/encode-shared.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/encode-shared.d.ts.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/encode-shared.js create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/internal/encode-shared.js.map create mode 100644 node_modules/htmlparser2/node_modules/entities/dist/esm/package.json create mode 100644 node_modules/htmlparser2/node_modules/entities/escape.d.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/escape.js create mode 100644 node_modules/htmlparser2/node_modules/entities/package.json create mode 100644 node_modules/htmlparser2/node_modules/entities/readme.md create mode 100644 node_modules/htmlparser2/node_modules/entities/src/decode-codepoint.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/decode.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/encode.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/escape.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/generated/.eslintrc.json create mode 100644 node_modules/htmlparser2/node_modules/entities/src/generated/decode-data-html.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/generated/decode-data-xml.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/generated/encode-html.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/index.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/internal/bin-trie-flags.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/internal/decode-shared.ts create mode 100644 node_modules/htmlparser2/node_modules/entities/src/internal/encode-shared.ts create mode 100644 node_modules/htmlparser2/package.json create mode 100644 node_modules/htmlparser2/src/Parser.ts create mode 100644 node_modules/htmlparser2/src/Tokenizer.ts create mode 100644 node_modules/htmlparser2/src/WritableStream.ts create mode 100644 node_modules/htmlparser2/src/index.ts create mode 100644 node_modules/human-signals/LICENSE create mode 100644 node_modules/human-signals/README.md create mode 100644 node_modules/human-signals/build/src/core.js create mode 100644 node_modules/human-signals/build/src/main.d.ts create mode 100644 node_modules/human-signals/build/src/main.js create mode 100644 node_modules/human-signals/build/src/realtime.js create mode 100644 node_modules/human-signals/build/src/signals.js create mode 100644 node_modules/human-signals/package.json create mode 100644 node_modules/iconv-lite/.github/dependabot.yml create mode 100644 node_modules/iconv-lite/.idea/codeStyles/Project.xml create mode 100644 node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml create mode 100644 node_modules/iconv-lite/.idea/iconv-lite.iml create mode 100644 node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml create mode 100644 node_modules/iconv-lite/.idea/modules.xml create mode 100644 node_modules/iconv-lite/.idea/vcs.xml create mode 100644 node_modules/iconv-lite/Changelog.md create mode 100644 node_modules/iconv-lite/LICENSE create mode 100644 node_modules/iconv-lite/README.md create mode 100644 node_modules/iconv-lite/encodings/dbcs-codec.js create mode 100644 node_modules/iconv-lite/encodings/dbcs-data.js create mode 100644 node_modules/iconv-lite/encodings/index.js create mode 100644 node_modules/iconv-lite/encodings/internal.js create mode 100644 node_modules/iconv-lite/encodings/sbcs-codec.js create mode 100644 node_modules/iconv-lite/encodings/sbcs-data-generated.js create mode 100644 node_modules/iconv-lite/encodings/sbcs-data.js create mode 100644 node_modules/iconv-lite/encodings/tables/big5-added.json create mode 100644 node_modules/iconv-lite/encodings/tables/cp936.json create mode 100644 node_modules/iconv-lite/encodings/tables/cp949.json create mode 100644 node_modules/iconv-lite/encodings/tables/cp950.json create mode 100644 node_modules/iconv-lite/encodings/tables/eucjp.json create mode 100644 node_modules/iconv-lite/encodings/tables/gb18030-ranges.json create mode 100644 node_modules/iconv-lite/encodings/tables/gbk-added.json create mode 100644 node_modules/iconv-lite/encodings/tables/shiftjis.json create mode 100644 node_modules/iconv-lite/encodings/utf16.js create mode 100644 node_modules/iconv-lite/encodings/utf32.js create mode 100644 node_modules/iconv-lite/encodings/utf7.js create mode 100644 node_modules/iconv-lite/lib/bom-handling.js create mode 100644 node_modules/iconv-lite/lib/index.d.ts create mode 100644 node_modules/iconv-lite/lib/index.js create mode 100644 node_modules/iconv-lite/lib/streams.js create mode 100644 node_modules/iconv-lite/package.json create mode 100644 node_modules/inflight/LICENSE create mode 100644 node_modules/inflight/README.md create mode 100644 node_modules/inflight/inflight.js create mode 100644 node_modules/inflight/package.json create mode 100644 node_modules/inherits/LICENSE create mode 100644 node_modules/inherits/README.md create mode 100644 node_modules/inherits/inherits.js create mode 100644 node_modules/inherits/inherits_browser.js create mode 100644 node_modules/inherits/package.json create mode 100644 node_modules/is-interactive/index.d.ts create mode 100644 node_modules/is-interactive/index.js create mode 100644 node_modules/is-interactive/license create mode 100644 node_modules/is-interactive/package.json create mode 100644 node_modules/is-interactive/readme.md create mode 100644 node_modules/is-stream/index.d.ts create mode 100644 node_modules/is-stream/index.js create mode 100644 node_modules/is-stream/license create mode 100644 node_modules/is-stream/package.json create mode 100644 node_modules/is-stream/readme.md create mode 100644 node_modules/is-unicode-supported/index.d.ts create mode 100644 node_modules/is-unicode-supported/index.js create mode 100644 node_modules/is-unicode-supported/license create mode 100644 node_modules/is-unicode-supported/package.json create mode 100644 node_modules/is-unicode-supported/readme.md create mode 100644 node_modules/isexe/.npmignore create mode 100644 node_modules/isexe/LICENSE create mode 100644 node_modules/isexe/README.md create mode 100644 node_modules/isexe/index.js create mode 100644 node_modules/isexe/mode.js create mode 100644 node_modules/isexe/package.json create mode 100644 node_modules/isexe/test/basic.js create mode 100644 node_modules/isexe/windows.js create mode 100644 node_modules/istanbul-lib-coverage/CHANGELOG.md create mode 100644 node_modules/istanbul-lib-coverage/LICENSE create mode 100644 node_modules/istanbul-lib-coverage/README.md create mode 100644 node_modules/istanbul-lib-coverage/index.js create mode 100644 node_modules/istanbul-lib-coverage/lib/coverage-map.js create mode 100644 node_modules/istanbul-lib-coverage/lib/coverage-summary.js create mode 100644 node_modules/istanbul-lib-coverage/lib/data-properties.js create mode 100644 node_modules/istanbul-lib-coverage/lib/file-coverage.js create mode 100644 node_modules/istanbul-lib-coverage/lib/percent.js create mode 100644 node_modules/istanbul-lib-coverage/package.json create mode 100644 node_modules/istanbul-lib-report/CHANGELOG.md create mode 100644 node_modules/istanbul-lib-report/LICENSE create mode 100644 node_modules/istanbul-lib-report/README.md create mode 100644 node_modules/istanbul-lib-report/index.js create mode 100644 node_modules/istanbul-lib-report/lib/context.js create mode 100644 node_modules/istanbul-lib-report/lib/file-writer.js create mode 100644 node_modules/istanbul-lib-report/lib/path.js create mode 100644 node_modules/istanbul-lib-report/lib/report-base.js create mode 100644 node_modules/istanbul-lib-report/lib/summarizer-factory.js create mode 100644 node_modules/istanbul-lib-report/lib/tree.js create mode 100644 node_modules/istanbul-lib-report/lib/watermarks.js create mode 100644 node_modules/istanbul-lib-report/lib/xml-writer.js create mode 100644 node_modules/istanbul-lib-report/package.json create mode 100644 node_modules/istanbul-lib-source-maps/CHANGELOG.md create mode 100644 node_modules/istanbul-lib-source-maps/LICENSE create mode 100644 node_modules/istanbul-lib-source-maps/README.md create mode 100644 node_modules/istanbul-lib-source-maps/index.js create mode 100644 node_modules/istanbul-lib-source-maps/lib/get-mapping.js create mode 100644 node_modules/istanbul-lib-source-maps/lib/map-store.js create mode 100644 node_modules/istanbul-lib-source-maps/lib/mapped.js create mode 100644 node_modules/istanbul-lib-source-maps/lib/pathutils.js create mode 100644 node_modules/istanbul-lib-source-maps/lib/transform-utils.js create mode 100644 node_modules/istanbul-lib-source-maps/lib/transformer.js create mode 100644 node_modules/istanbul-lib-source-maps/package.json create mode 100644 node_modules/istanbul-reports/CHANGELOG.md create mode 100644 node_modules/istanbul-reports/LICENSE create mode 100644 node_modules/istanbul-reports/README.md create mode 100644 node_modules/istanbul-reports/index.js create mode 100644 node_modules/istanbul-reports/lib/clover/index.js create mode 100644 node_modules/istanbul-reports/lib/cobertura/index.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/.babelrc create mode 100644 node_modules/istanbul-reports/lib/html-spa/assets/bundle.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/assets/sort-arrow-sprite.png create mode 100644 node_modules/istanbul-reports/lib/html-spa/assets/spa.css create mode 100644 node_modules/istanbul-reports/lib/html-spa/index.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/fileBreadcrumbs.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/filterToggle.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/flattenToggle.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/getChildData.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/index.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/routing.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/summaryHeader.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/summaryTableHeader.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/src/summaryTableLine.js create mode 100644 node_modules/istanbul-reports/lib/html-spa/webpack.config.js create mode 100644 node_modules/istanbul-reports/lib/html/annotator.js create mode 100644 node_modules/istanbul-reports/lib/html/assets/base.css create mode 100644 node_modules/istanbul-reports/lib/html/assets/block-navigation.js create mode 100644 node_modules/istanbul-reports/lib/html/assets/favicon.png create mode 100644 node_modules/istanbul-reports/lib/html/assets/sort-arrow-sprite.png create mode 100644 node_modules/istanbul-reports/lib/html/assets/sorter.js create mode 100644 node_modules/istanbul-reports/lib/html/assets/vendor/prettify.css create mode 100644 node_modules/istanbul-reports/lib/html/assets/vendor/prettify.js create mode 100644 node_modules/istanbul-reports/lib/html/index.js create mode 100644 node_modules/istanbul-reports/lib/html/insertion-text.js create mode 100644 node_modules/istanbul-reports/lib/json-summary/index.js create mode 100644 node_modules/istanbul-reports/lib/json/index.js create mode 100644 node_modules/istanbul-reports/lib/lcov/index.js create mode 100644 node_modules/istanbul-reports/lib/lcovonly/index.js create mode 100644 node_modules/istanbul-reports/lib/none/index.js create mode 100644 node_modules/istanbul-reports/lib/teamcity/index.js create mode 100644 node_modules/istanbul-reports/lib/text-lcov/index.js create mode 100644 node_modules/istanbul-reports/lib/text-summary/index.js create mode 100644 node_modules/istanbul-reports/lib/text/index.js create mode 100644 node_modules/istanbul-reports/package.json create mode 100644 node_modules/js-tokens/LICENSE create mode 100644 node_modules/js-tokens/README.md create mode 100644 node_modules/js-tokens/index.d.ts create mode 100644 node_modules/js-tokens/index.js create mode 100644 node_modules/js-tokens/package.json create mode 100644 node_modules/local-pkg/LICENSE create mode 100644 node_modules/local-pkg/README.md create mode 100644 node_modules/local-pkg/dist/index.cjs create mode 100644 node_modules/local-pkg/dist/index.d.cts create mode 100644 node_modules/local-pkg/dist/index.d.mts create mode 100644 node_modules/local-pkg/dist/index.d.ts create mode 100644 node_modules/local-pkg/dist/index.mjs create mode 100644 node_modules/local-pkg/package.json create mode 100644 node_modules/log-symbols/browser.js create mode 100644 node_modules/log-symbols/index.d.ts create mode 100644 node_modules/log-symbols/index.js create mode 100644 node_modules/log-symbols/license create mode 100644 node_modules/log-symbols/node_modules/is-unicode-supported/index.d.ts create mode 100644 node_modules/log-symbols/node_modules/is-unicode-supported/index.js create mode 100644 node_modules/log-symbols/node_modules/is-unicode-supported/license create mode 100644 node_modules/log-symbols/node_modules/is-unicode-supported/package.json create mode 100644 node_modules/log-symbols/node_modules/is-unicode-supported/readme.md create mode 100644 node_modules/log-symbols/package.json create mode 100644 node_modules/log-symbols/readme.md create mode 100644 node_modules/loupe/CHANGELOG.md create mode 100644 node_modules/loupe/LICENSE create mode 100644 node_modules/loupe/README.md create mode 100644 node_modules/loupe/index.js create mode 100644 node_modules/loupe/lib/arguments.js create mode 100644 node_modules/loupe/lib/array.js create mode 100644 node_modules/loupe/lib/bigint.js create mode 100644 node_modules/loupe/lib/class.js create mode 100644 node_modules/loupe/lib/date.js create mode 100644 node_modules/loupe/lib/error.js create mode 100644 node_modules/loupe/lib/function.js create mode 100644 node_modules/loupe/lib/helpers.js create mode 100644 node_modules/loupe/lib/html.js create mode 100644 node_modules/loupe/lib/map.js create mode 100644 node_modules/loupe/lib/number.js create mode 100644 node_modules/loupe/lib/object.js create mode 100644 node_modules/loupe/lib/promise.js create mode 100644 node_modules/loupe/lib/regexp.js create mode 100644 node_modules/loupe/lib/set.js create mode 100644 node_modules/loupe/lib/string.js create mode 100644 node_modules/loupe/lib/symbol.js create mode 100644 node_modules/loupe/lib/typedarray.js create mode 100644 node_modules/loupe/loupe.js create mode 100644 node_modules/loupe/package.json create mode 100644 node_modules/magic-string/LICENSE create mode 100644 node_modules/magic-string/README.md create mode 100644 node_modules/magic-string/dist/magic-string.cjs.d.ts create mode 100644 node_modules/magic-string/dist/magic-string.cjs.js create mode 100644 node_modules/magic-string/dist/magic-string.cjs.js.map create mode 100644 node_modules/magic-string/dist/magic-string.es.d.mts create mode 100644 node_modules/magic-string/dist/magic-string.es.mjs create mode 100644 node_modules/magic-string/dist/magic-string.es.mjs.map create mode 100644 node_modules/magic-string/dist/magic-string.umd.js create mode 100644 node_modules/magic-string/dist/magic-string.umd.js.map create mode 100644 node_modules/magic-string/package.json create mode 100644 node_modules/magicast/LICENSE create mode 100644 node_modules/magicast/README.md create mode 100644 node_modules/magicast/dist/helpers.cjs create mode 100644 node_modules/magicast/dist/helpers.d.cts create mode 100644 node_modules/magicast/dist/helpers.d.mts create mode 100644 node_modules/magicast/dist/helpers.d.ts create mode 100644 node_modules/magicast/dist/helpers.mjs create mode 100644 node_modules/magicast/dist/index.cjs create mode 100644 node_modules/magicast/dist/index.d.cts create mode 100644 node_modules/magicast/dist/index.d.mts create mode 100644 node_modules/magicast/dist/index.d.ts create mode 100644 node_modules/magicast/dist/index.mjs create mode 100644 node_modules/magicast/dist/shared/magicast.54e2233d.d.cts create mode 100644 node_modules/magicast/dist/shared/magicast.54e2233d.d.mts create mode 100644 node_modules/magicast/dist/shared/magicast.54e2233d.d.ts create mode 100644 node_modules/magicast/helpers.d.ts create mode 100644 node_modules/magicast/package.json create mode 100644 node_modules/make-dir/index.d.ts create mode 100644 node_modules/make-dir/index.js create mode 100644 node_modules/make-dir/license create mode 100644 node_modules/make-dir/package.json create mode 100644 node_modules/make-dir/readme.md create mode 100644 node_modules/math-intrinsics/.eslintrc create mode 100644 node_modules/math-intrinsics/.github/FUNDING.yml create mode 100644 node_modules/math-intrinsics/CHANGELOG.md create mode 100644 node_modules/math-intrinsics/LICENSE create mode 100644 node_modules/math-intrinsics/README.md create mode 100644 node_modules/math-intrinsics/abs.d.ts create mode 100644 node_modules/math-intrinsics/abs.js create mode 100644 node_modules/math-intrinsics/constants/maxArrayLength.d.ts create mode 100644 node_modules/math-intrinsics/constants/maxArrayLength.js create mode 100644 node_modules/math-intrinsics/constants/maxSafeInteger.d.ts create mode 100644 node_modules/math-intrinsics/constants/maxSafeInteger.js create mode 100644 node_modules/math-intrinsics/constants/maxValue.d.ts create mode 100644 node_modules/math-intrinsics/constants/maxValue.js create mode 100644 node_modules/math-intrinsics/floor.d.ts create mode 100644 node_modules/math-intrinsics/floor.js create mode 100644 node_modules/math-intrinsics/isFinite.d.ts create mode 100644 node_modules/math-intrinsics/isFinite.js create mode 100644 node_modules/math-intrinsics/isInteger.d.ts create mode 100644 node_modules/math-intrinsics/isInteger.js create mode 100644 node_modules/math-intrinsics/isNaN.d.ts create mode 100644 node_modules/math-intrinsics/isNaN.js create mode 100644 node_modules/math-intrinsics/isNegativeZero.d.ts create mode 100644 node_modules/math-intrinsics/isNegativeZero.js create mode 100644 node_modules/math-intrinsics/max.d.ts create mode 100644 node_modules/math-intrinsics/max.js create mode 100644 node_modules/math-intrinsics/min.d.ts create mode 100644 node_modules/math-intrinsics/min.js create mode 100644 node_modules/math-intrinsics/mod.d.ts create mode 100644 node_modules/math-intrinsics/mod.js create mode 100644 node_modules/math-intrinsics/package.json create mode 100644 node_modules/math-intrinsics/pow.d.ts create mode 100644 node_modules/math-intrinsics/pow.js create mode 100644 node_modules/math-intrinsics/round.d.ts create mode 100644 node_modules/math-intrinsics/round.js create mode 100644 node_modules/math-intrinsics/sign.d.ts create mode 100644 node_modules/math-intrinsics/sign.js create mode 100644 node_modules/math-intrinsics/test/index.js create mode 100644 node_modules/math-intrinsics/tsconfig.json create mode 100644 node_modules/merge-stream/LICENSE create mode 100644 node_modules/merge-stream/README.md create mode 100644 node_modules/merge-stream/index.js create mode 100644 node_modules/merge-stream/package.json create mode 100644 node_modules/mime-db/HISTORY.md create mode 100644 node_modules/mime-db/LICENSE create mode 100644 node_modules/mime-db/README.md create mode 100644 node_modules/mime-db/db.json create mode 100644 node_modules/mime-db/index.js create mode 100644 node_modules/mime-db/package.json create mode 100644 node_modules/mime-types/HISTORY.md create mode 100644 node_modules/mime-types/LICENSE create mode 100644 node_modules/mime-types/README.md create mode 100644 node_modules/mime-types/index.js create mode 100644 node_modules/mime-types/package.json create mode 100644 node_modules/mimic-fn/index.d.ts create mode 100644 node_modules/mimic-fn/index.js create mode 100644 node_modules/mimic-fn/license create mode 100644 node_modules/mimic-fn/package.json create mode 100644 node_modules/mimic-fn/readme.md create mode 100644 node_modules/mimic-function/index.d.ts create mode 100644 node_modules/mimic-function/index.js create mode 100644 node_modules/mimic-function/license create mode 100644 node_modules/mimic-function/package.json create mode 100644 node_modules/mimic-function/readme.md create mode 100644 node_modules/minimatch/LICENSE create mode 100644 node_modules/minimatch/README.md create mode 100644 node_modules/minimatch/minimatch.js create mode 100644 node_modules/minimatch/package.json create mode 100644 node_modules/mlly/LICENSE create mode 100644 node_modules/mlly/README.md create mode 100644 node_modules/mlly/dist/index.cjs create mode 100644 node_modules/mlly/dist/index.d.cts create mode 100644 node_modules/mlly/dist/index.d.mts create mode 100644 node_modules/mlly/dist/index.d.ts create mode 100644 node_modules/mlly/dist/index.mjs create mode 100644 node_modules/mlly/node_modules/pathe/LICENSE create mode 100644 node_modules/mlly/node_modules/pathe/README.md create mode 100644 node_modules/mlly/node_modules/pathe/dist/index.cjs create mode 100644 node_modules/mlly/node_modules/pathe/dist/index.d.cts create mode 100644 node_modules/mlly/node_modules/pathe/dist/index.d.mts create mode 100644 node_modules/mlly/node_modules/pathe/dist/index.d.ts create mode 100644 node_modules/mlly/node_modules/pathe/dist/index.mjs create mode 100644 node_modules/mlly/node_modules/pathe/dist/shared/pathe.BSlhyZSM.cjs create mode 100644 node_modules/mlly/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs create mode 100644 node_modules/mlly/node_modules/pathe/dist/utils.cjs create mode 100644 node_modules/mlly/node_modules/pathe/dist/utils.d.cts create mode 100644 node_modules/mlly/node_modules/pathe/dist/utils.d.mts create mode 100644 node_modules/mlly/node_modules/pathe/dist/utils.d.ts create mode 100644 node_modules/mlly/node_modules/pathe/dist/utils.mjs create mode 100644 node_modules/mlly/node_modules/pathe/package.json create mode 100644 node_modules/mlly/node_modules/pathe/utils.d.ts create mode 100644 node_modules/mlly/package.json create mode 100644 node_modules/ms/index.js create mode 100644 node_modules/ms/license.md create mode 100644 node_modules/ms/package.json create mode 100644 node_modules/ms/readme.md create mode 100644 node_modules/nanoid/LICENSE create mode 100644 node_modules/nanoid/README.md create mode 100644 node_modules/nanoid/async/index.browser.cjs create mode 100644 node_modules/nanoid/async/index.browser.js create mode 100644 node_modules/nanoid/async/index.cjs create mode 100644 node_modules/nanoid/async/index.d.ts create mode 100644 node_modules/nanoid/async/index.js create mode 100644 node_modules/nanoid/async/index.native.js create mode 100644 node_modules/nanoid/async/package.json create mode 100644 node_modules/nanoid/bin/nanoid.cjs create mode 100644 node_modules/nanoid/index.browser.cjs create mode 100644 node_modules/nanoid/index.browser.js create mode 100644 node_modules/nanoid/index.cjs create mode 100644 node_modules/nanoid/index.d.cts create mode 100644 node_modules/nanoid/index.d.ts create mode 100644 node_modules/nanoid/index.js create mode 100644 node_modules/nanoid/nanoid.js create mode 100644 node_modules/nanoid/non-secure/index.cjs create mode 100644 node_modules/nanoid/non-secure/index.d.ts create mode 100644 node_modules/nanoid/non-secure/index.js create mode 100644 node_modules/nanoid/non-secure/package.json create mode 100644 node_modules/nanoid/package.json create mode 100644 node_modules/nanoid/url-alphabet/index.cjs create mode 100644 node_modules/nanoid/url-alphabet/index.js create mode 100644 node_modules/nanoid/url-alphabet/package.json create mode 100644 node_modules/npm-run-path/index.d.ts create mode 100644 node_modules/npm-run-path/index.js create mode 100644 node_modules/npm-run-path/license create mode 100644 node_modules/npm-run-path/node_modules/path-key/index.d.ts create mode 100644 node_modules/npm-run-path/node_modules/path-key/index.js create mode 100644 node_modules/npm-run-path/node_modules/path-key/license create mode 100644 node_modules/npm-run-path/node_modules/path-key/package.json create mode 100644 node_modules/npm-run-path/node_modules/path-key/readme.md create mode 100644 node_modules/npm-run-path/package.json create mode 100644 node_modules/npm-run-path/readme.md create mode 100644 node_modules/nth-check/LICENSE create mode 100644 node_modules/nth-check/README.md create mode 100644 node_modules/nth-check/lib/compile.d.ts create mode 100644 node_modules/nth-check/lib/compile.d.ts.map create mode 100644 node_modules/nth-check/lib/compile.js create mode 100644 node_modules/nth-check/lib/compile.js.map create mode 100644 node_modules/nth-check/lib/esm/compile.d.ts create mode 100644 node_modules/nth-check/lib/esm/compile.d.ts.map create mode 100644 node_modules/nth-check/lib/esm/compile.js create mode 100644 node_modules/nth-check/lib/esm/compile.js.map create mode 100644 node_modules/nth-check/lib/esm/index.d.ts create mode 100644 node_modules/nth-check/lib/esm/index.d.ts.map create mode 100644 node_modules/nth-check/lib/esm/index.js create mode 100644 node_modules/nth-check/lib/esm/index.js.map create mode 100644 node_modules/nth-check/lib/esm/package.json create mode 100644 node_modules/nth-check/lib/esm/parse.d.ts create mode 100644 node_modules/nth-check/lib/esm/parse.d.ts.map create mode 100644 node_modules/nth-check/lib/esm/parse.js create mode 100644 node_modules/nth-check/lib/esm/parse.js.map create mode 100644 node_modules/nth-check/lib/index.d.ts create mode 100644 node_modules/nth-check/lib/index.d.ts.map create mode 100644 node_modules/nth-check/lib/index.js create mode 100644 node_modules/nth-check/lib/index.js.map create mode 100644 node_modules/nth-check/lib/parse.d.ts create mode 100644 node_modules/nth-check/lib/parse.d.ts.map create mode 100644 node_modules/nth-check/lib/parse.js create mode 100644 node_modules/nth-check/lib/parse.js.map create mode 100644 node_modules/nth-check/package.json create mode 100644 node_modules/once/LICENSE create mode 100644 node_modules/once/README.md create mode 100644 node_modules/once/once.js create mode 100644 node_modules/once/package.json create mode 100644 node_modules/onetime/index.d.ts create mode 100644 node_modules/onetime/index.js create mode 100644 node_modules/onetime/license create mode 100644 node_modules/onetime/package.json create mode 100644 node_modules/onetime/readme.md create mode 100644 node_modules/ora/index.d.ts create mode 100644 node_modules/ora/index.js create mode 100644 node_modules/ora/license create mode 100644 node_modules/ora/package.json create mode 100644 node_modules/ora/readme.md create mode 100644 node_modules/p-limit/async-hooks-stub.js create mode 100644 node_modules/p-limit/index.d.ts create mode 100644 node_modules/p-limit/index.js create mode 100644 node_modules/p-limit/license create mode 100644 node_modules/p-limit/package.json create mode 100644 node_modules/p-limit/readme.md create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/LICENSE create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/README.md create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/dist/cjs/index.d.ts create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/dist/cjs/index.js create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/dist/cjs/package.json create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/dist/index.d.ts create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/dist/index.js create mode 100644 node_modules/parse5-htmlparser2-tree-adapter/package.json create mode 100644 node_modules/parse5-parser-stream/LICENSE create mode 100644 node_modules/parse5-parser-stream/README.md create mode 100644 node_modules/parse5-parser-stream/dist/cjs/index.d.ts create mode 100644 node_modules/parse5-parser-stream/dist/cjs/index.js create mode 100644 node_modules/parse5-parser-stream/dist/cjs/package.json create mode 100644 node_modules/parse5-parser-stream/dist/index.d.ts create mode 100644 node_modules/parse5-parser-stream/dist/index.js create mode 100644 node_modules/parse5-parser-stream/package.json create mode 100644 node_modules/parse5/LICENSE create mode 100644 node_modules/parse5/README.md create mode 100644 node_modules/parse5/dist/cjs/common/doctype.d.ts create mode 100644 node_modules/parse5/dist/cjs/common/doctype.js create mode 100644 node_modules/parse5/dist/cjs/common/error-codes.d.ts create mode 100644 node_modules/parse5/dist/cjs/common/error-codes.js create mode 100644 node_modules/parse5/dist/cjs/common/foreign-content.d.ts create mode 100644 node_modules/parse5/dist/cjs/common/foreign-content.js create mode 100644 node_modules/parse5/dist/cjs/common/html.d.ts create mode 100644 node_modules/parse5/dist/cjs/common/html.js create mode 100644 node_modules/parse5/dist/cjs/common/token.d.ts create mode 100644 node_modules/parse5/dist/cjs/common/token.js create mode 100644 node_modules/parse5/dist/cjs/common/unicode.d.ts create mode 100644 node_modules/parse5/dist/cjs/common/unicode.js create mode 100644 node_modules/parse5/dist/cjs/index.d.ts create mode 100644 node_modules/parse5/dist/cjs/index.js create mode 100644 node_modules/parse5/dist/cjs/package.json create mode 100644 node_modules/parse5/dist/cjs/parser/formatting-element-list.d.ts create mode 100644 node_modules/parse5/dist/cjs/parser/formatting-element-list.js create mode 100644 node_modules/parse5/dist/cjs/parser/index.d.ts create mode 100644 node_modules/parse5/dist/cjs/parser/index.js create mode 100644 node_modules/parse5/dist/cjs/parser/open-element-stack.d.ts create mode 100644 node_modules/parse5/dist/cjs/parser/open-element-stack.js create mode 100644 node_modules/parse5/dist/cjs/serializer/index.d.ts create mode 100644 node_modules/parse5/dist/cjs/serializer/index.js create mode 100644 node_modules/parse5/dist/cjs/tokenizer/index.d.ts create mode 100644 node_modules/parse5/dist/cjs/tokenizer/index.js create mode 100644 node_modules/parse5/dist/cjs/tokenizer/preprocessor.d.ts create mode 100644 node_modules/parse5/dist/cjs/tokenizer/preprocessor.js create mode 100644 node_modules/parse5/dist/cjs/tree-adapters/default.d.ts create mode 100644 node_modules/parse5/dist/cjs/tree-adapters/default.js create mode 100644 node_modules/parse5/dist/cjs/tree-adapters/interface.d.ts create mode 100644 node_modules/parse5/dist/cjs/tree-adapters/interface.js create mode 100644 node_modules/parse5/dist/common/doctype.d.ts create mode 100644 node_modules/parse5/dist/common/doctype.js create mode 100644 node_modules/parse5/dist/common/error-codes.d.ts create mode 100644 node_modules/parse5/dist/common/error-codes.js create mode 100644 node_modules/parse5/dist/common/foreign-content.d.ts create mode 100644 node_modules/parse5/dist/common/foreign-content.js create mode 100644 node_modules/parse5/dist/common/html.d.ts create mode 100644 node_modules/parse5/dist/common/html.js create mode 100644 node_modules/parse5/dist/common/token.d.ts create mode 100644 node_modules/parse5/dist/common/token.js create mode 100644 node_modules/parse5/dist/common/unicode.d.ts create mode 100644 node_modules/parse5/dist/common/unicode.js create mode 100644 node_modules/parse5/dist/index.d.ts create mode 100644 node_modules/parse5/dist/index.js create mode 100644 node_modules/parse5/dist/parser/formatting-element-list.d.ts create mode 100644 node_modules/parse5/dist/parser/formatting-element-list.js create mode 100644 node_modules/parse5/dist/parser/index.d.ts create mode 100644 node_modules/parse5/dist/parser/index.js create mode 100644 node_modules/parse5/dist/parser/open-element-stack.d.ts create mode 100644 node_modules/parse5/dist/parser/open-element-stack.js create mode 100644 node_modules/parse5/dist/serializer/index.d.ts create mode 100644 node_modules/parse5/dist/serializer/index.js create mode 100644 node_modules/parse5/dist/tokenizer/index.d.ts create mode 100644 node_modules/parse5/dist/tokenizer/index.js create mode 100644 node_modules/parse5/dist/tokenizer/preprocessor.d.ts create mode 100644 node_modules/parse5/dist/tokenizer/preprocessor.js create mode 100644 node_modules/parse5/dist/tree-adapters/default.d.ts create mode 100644 node_modules/parse5/dist/tree-adapters/default.js create mode 100644 node_modules/parse5/dist/tree-adapters/interface.d.ts create mode 100644 node_modules/parse5/dist/tree-adapters/interface.js create mode 100644 node_modules/parse5/node_modules/entities/LICENSE create mode 100644 node_modules/parse5/node_modules/entities/decode.d.ts create mode 100644 node_modules/parse5/node_modules/entities/decode.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode-codepoint.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode-codepoint.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode-codepoint.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/decode.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/encode.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/encode.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/encode.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/encode.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/escape.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/escape.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/escape.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/escape.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-html.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-xml.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/encode-html.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/encode-html.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/generated/encode-html.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/index.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/index.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/index.js create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/index.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/commonjs/package.json create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/decode.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/encode.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/encode.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/encode.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/encode.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/escape.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/escape.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/escape.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/escape.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/encode-html.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/encode-html.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/encode-html.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/generated/encode-html.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/index.d.ts create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/index.d.ts.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/index.js create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/index.js.map create mode 100644 node_modules/parse5/node_modules/entities/dist/esm/package.json create mode 100644 node_modules/parse5/node_modules/entities/escape.d.ts create mode 100644 node_modules/parse5/node_modules/entities/escape.js create mode 100644 node_modules/parse5/node_modules/entities/package.json create mode 100644 node_modules/parse5/node_modules/entities/readme.md create mode 100644 node_modules/parse5/node_modules/entities/src/decode-codepoint.ts create mode 100644 node_modules/parse5/node_modules/entities/src/decode.spec.ts create mode 100644 node_modules/parse5/node_modules/entities/src/decode.ts create mode 100644 node_modules/parse5/node_modules/entities/src/encode.spec.ts create mode 100644 node_modules/parse5/node_modules/entities/src/encode.ts create mode 100644 node_modules/parse5/node_modules/entities/src/escape.spec.ts create mode 100644 node_modules/parse5/node_modules/entities/src/escape.ts create mode 100644 node_modules/parse5/node_modules/entities/src/generated/.eslintrc.json create mode 100644 node_modules/parse5/node_modules/entities/src/generated/decode-data-html.ts create mode 100644 node_modules/parse5/node_modules/entities/src/generated/decode-data-xml.ts create mode 100644 node_modules/parse5/node_modules/entities/src/generated/encode-html.ts create mode 100644 node_modules/parse5/node_modules/entities/src/index.spec.ts create mode 100644 node_modules/parse5/node_modules/entities/src/index.ts create mode 100644 node_modules/parse5/package.json create mode 100644 node_modules/path-is-absolute/index.js create mode 100644 node_modules/path-is-absolute/license create mode 100644 node_modules/path-is-absolute/package.json create mode 100644 node_modules/path-is-absolute/readme.md create mode 100644 node_modules/path-key/index.d.ts create mode 100644 node_modules/path-key/index.js create mode 100644 node_modules/path-key/license create mode 100644 node_modules/path-key/package.json create mode 100644 node_modules/path-key/readme.md create mode 100644 node_modules/pathe/LICENSE create mode 100644 node_modules/pathe/README.md create mode 100644 node_modules/pathe/dist/index.cjs create mode 100644 node_modules/pathe/dist/index.d.cts create mode 100644 node_modules/pathe/dist/index.d.mts create mode 100644 node_modules/pathe/dist/index.d.ts create mode 100644 node_modules/pathe/dist/index.mjs create mode 100644 node_modules/pathe/dist/shared/pathe.1f0a373c.cjs create mode 100644 node_modules/pathe/dist/shared/pathe.ff20891b.mjs create mode 100644 node_modules/pathe/dist/utils.cjs create mode 100644 node_modules/pathe/dist/utils.d.cts create mode 100644 node_modules/pathe/dist/utils.d.mts create mode 100644 node_modules/pathe/dist/utils.d.ts create mode 100644 node_modules/pathe/dist/utils.mjs create mode 100644 node_modules/pathe/package.json create mode 100644 node_modules/pathe/utils.d.ts create mode 100644 node_modules/pathval/CHANGELOG.md create mode 100644 node_modules/pathval/LICENSE create mode 100644 node_modules/pathval/README.md create mode 100644 node_modules/pathval/index.js create mode 100644 node_modules/pathval/package.json create mode 100644 node_modules/pathval/pathval.js create mode 100644 node_modules/picocolors/LICENSE create mode 100644 node_modules/picocolors/README.md create mode 100644 node_modules/picocolors/package.json create mode 100644 node_modules/picocolors/picocolors.browser.js create mode 100644 node_modules/picocolors/picocolors.d.ts create mode 100644 node_modules/picocolors/picocolors.js create mode 100644 node_modules/picocolors/types.d.ts create mode 100644 node_modules/pkg-types/LICENSE create mode 100644 node_modules/pkg-types/README.md create mode 100644 node_modules/pkg-types/dist/index.cjs create mode 100644 node_modules/pkg-types/dist/index.d.cts create mode 100644 node_modules/pkg-types/dist/index.d.mts create mode 100644 node_modules/pkg-types/dist/index.d.ts create mode 100644 node_modules/pkg-types/dist/index.mjs create mode 100644 node_modules/pkg-types/node_modules/pathe/LICENSE create mode 100644 node_modules/pkg-types/node_modules/pathe/README.md create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/index.cjs create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/index.d.cts create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/index.d.mts create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/index.d.ts create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/index.mjs create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/shared/pathe.BSlhyZSM.cjs create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/shared/pathe.M-eThtNZ.mjs create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/utils.cjs create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/utils.d.cts create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/utils.d.mts create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/utils.d.ts create mode 100644 node_modules/pkg-types/node_modules/pathe/dist/utils.mjs create mode 100644 node_modules/pkg-types/node_modules/pathe/package.json create mode 100644 node_modules/pkg-types/node_modules/pathe/utils.d.ts create mode 100644 node_modules/pkg-types/package.json create mode 100644 node_modules/postcss/LICENSE create mode 100644 node_modules/postcss/README.md create mode 100644 node_modules/postcss/lib/at-rule.d.ts create mode 100644 node_modules/postcss/lib/at-rule.js create mode 100644 node_modules/postcss/lib/comment.d.ts create mode 100644 node_modules/postcss/lib/comment.js create mode 100644 node_modules/postcss/lib/container.d.ts create mode 100644 node_modules/postcss/lib/container.js create mode 100644 node_modules/postcss/lib/css-syntax-error.d.ts create mode 100644 node_modules/postcss/lib/css-syntax-error.js create mode 100644 node_modules/postcss/lib/declaration.d.ts create mode 100644 node_modules/postcss/lib/declaration.js create mode 100644 node_modules/postcss/lib/document.d.ts create mode 100644 node_modules/postcss/lib/document.js create mode 100644 node_modules/postcss/lib/fromJSON.d.ts create mode 100644 node_modules/postcss/lib/fromJSON.js create mode 100644 node_modules/postcss/lib/input.d.ts create mode 100644 node_modules/postcss/lib/input.js create mode 100644 node_modules/postcss/lib/lazy-result.d.ts create mode 100644 node_modules/postcss/lib/lazy-result.js create mode 100644 node_modules/postcss/lib/list.d.ts create mode 100644 node_modules/postcss/lib/list.js create mode 100644 node_modules/postcss/lib/map-generator.js create mode 100644 node_modules/postcss/lib/no-work-result.d.ts create mode 100644 node_modules/postcss/lib/no-work-result.js create mode 100644 node_modules/postcss/lib/node.d.ts create mode 100644 node_modules/postcss/lib/node.js create mode 100644 node_modules/postcss/lib/parse.d.ts create mode 100644 node_modules/postcss/lib/parse.js create mode 100644 node_modules/postcss/lib/parser.js create mode 100644 node_modules/postcss/lib/postcss.d.mts create mode 100644 node_modules/postcss/lib/postcss.d.ts create mode 100644 node_modules/postcss/lib/postcss.js create mode 100644 node_modules/postcss/lib/postcss.mjs create mode 100644 node_modules/postcss/lib/previous-map.d.ts create mode 100644 node_modules/postcss/lib/previous-map.js create mode 100644 node_modules/postcss/lib/processor.d.ts create mode 100644 node_modules/postcss/lib/processor.js create mode 100644 node_modules/postcss/lib/result.d.ts create mode 100644 node_modules/postcss/lib/result.js create mode 100644 node_modules/postcss/lib/root.d.ts create mode 100644 node_modules/postcss/lib/root.js create mode 100644 node_modules/postcss/lib/rule.d.ts create mode 100644 node_modules/postcss/lib/rule.js create mode 100644 node_modules/postcss/lib/stringifier.d.ts create mode 100644 node_modules/postcss/lib/stringifier.js create mode 100644 node_modules/postcss/lib/stringify.d.ts create mode 100644 node_modules/postcss/lib/stringify.js create mode 100644 node_modules/postcss/lib/symbols.js create mode 100644 node_modules/postcss/lib/terminal-highlight.js create mode 100644 node_modules/postcss/lib/tokenize.js create mode 100644 node_modules/postcss/lib/warn-once.js create mode 100644 node_modules/postcss/lib/warning.d.ts create mode 100644 node_modules/postcss/lib/warning.js create mode 100644 node_modules/postcss/package.json create mode 100644 node_modules/pretty-format/LICENSE create mode 100644 node_modules/pretty-format/README.md create mode 100644 node_modules/pretty-format/build/collections.js create mode 100644 node_modules/pretty-format/build/index.d.ts create mode 100644 node_modules/pretty-format/build/index.js create mode 100644 node_modules/pretty-format/build/plugins/AsymmetricMatcher.js create mode 100644 node_modules/pretty-format/build/plugins/DOMCollection.js create mode 100644 node_modules/pretty-format/build/plugins/DOMElement.js create mode 100644 node_modules/pretty-format/build/plugins/Immutable.js create mode 100644 node_modules/pretty-format/build/plugins/ReactElement.js create mode 100644 node_modules/pretty-format/build/plugins/ReactTestComponent.js create mode 100644 node_modules/pretty-format/build/plugins/lib/escapeHTML.js create mode 100644 node_modules/pretty-format/build/plugins/lib/markup.js create mode 100644 node_modules/pretty-format/build/types.js create mode 100644 node_modules/pretty-format/package.json create mode 100644 node_modules/proxy-from-env/.eslintrc create mode 100644 node_modules/proxy-from-env/.travis.yml create mode 100644 node_modules/proxy-from-env/LICENSE create mode 100644 node_modules/proxy-from-env/README.md create mode 100644 node_modules/proxy-from-env/index.js create mode 100644 node_modules/proxy-from-env/package.json create mode 100644 node_modules/proxy-from-env/test.js create mode 100644 node_modules/react-is/LICENSE create mode 100644 node_modules/react-is/README.md create mode 100644 node_modules/react-is/cjs/react-is.development.js create mode 100644 node_modules/react-is/cjs/react-is.production.min.js create mode 100644 node_modules/react-is/index.js create mode 100644 node_modules/react-is/package.json create mode 100644 node_modules/react-is/umd/react-is.development.js create mode 100644 node_modules/react-is/umd/react-is.production.min.js create mode 100644 node_modules/restore-cursor/index.d.ts create mode 100644 node_modules/restore-cursor/index.js create mode 100644 node_modules/restore-cursor/license create mode 100644 node_modules/restore-cursor/package.json create mode 100644 node_modules/restore-cursor/readme.md create mode 100644 node_modules/rollup/LICENSE.md create mode 100644 node_modules/rollup/README.md create mode 100644 node_modules/rollup/dist/bin/rollup create mode 100644 node_modules/rollup/dist/es/getLogFilter.js create mode 100644 node_modules/rollup/dist/es/package.json create mode 100644 node_modules/rollup/dist/es/parseAst.js create mode 100644 node_modules/rollup/dist/es/rollup.js create mode 100644 node_modules/rollup/dist/es/shared/node-entry.js create mode 100644 node_modules/rollup/dist/es/shared/parseAst.js create mode 100644 node_modules/rollup/dist/es/shared/watch.js create mode 100644 node_modules/rollup/dist/getLogFilter.d.ts create mode 100644 node_modules/rollup/dist/getLogFilter.js create mode 100644 node_modules/rollup/dist/loadConfigFile.d.ts create mode 100644 node_modules/rollup/dist/loadConfigFile.js create mode 100644 node_modules/rollup/dist/native.js create mode 100644 node_modules/rollup/dist/parseAst.d.ts create mode 100644 node_modules/rollup/dist/parseAst.js create mode 100644 node_modules/rollup/dist/rollup.d.ts create mode 100644 node_modules/rollup/dist/rollup.js create mode 100644 node_modules/rollup/dist/shared/fsevents-importer.js create mode 100644 node_modules/rollup/dist/shared/index.js create mode 100644 node_modules/rollup/dist/shared/loadConfigFile.js create mode 100644 node_modules/rollup/dist/shared/parseAst.js create mode 100644 node_modules/rollup/dist/shared/rollup.js create mode 100644 node_modules/rollup/dist/shared/watch-cli.js create mode 100644 node_modules/rollup/dist/shared/watch.js create mode 100644 node_modules/rollup/package.json create mode 100644 node_modules/safer-buffer/LICENSE create mode 100644 node_modules/safer-buffer/Porting-Buffer.md create mode 100644 node_modules/safer-buffer/Readme.md create mode 100644 node_modules/safer-buffer/dangerous.js create mode 100644 node_modules/safer-buffer/package.json create mode 100644 node_modules/safer-buffer/safer.js create mode 100644 node_modules/safer-buffer/tests.js create mode 100644 node_modules/semver/LICENSE create mode 100644 node_modules/semver/README.md create mode 100644 node_modules/semver/bin/semver.js create mode 100644 node_modules/semver/classes/comparator.js create mode 100644 node_modules/semver/classes/index.js create mode 100644 node_modules/semver/classes/range.js create mode 100644 node_modules/semver/classes/semver.js create mode 100644 node_modules/semver/functions/clean.js create mode 100644 node_modules/semver/functions/cmp.js create mode 100644 node_modules/semver/functions/coerce.js create mode 100644 node_modules/semver/functions/compare-build.js create mode 100644 node_modules/semver/functions/compare-loose.js create mode 100644 node_modules/semver/functions/compare.js create mode 100644 node_modules/semver/functions/diff.js create mode 100644 node_modules/semver/functions/eq.js create mode 100644 node_modules/semver/functions/gt.js create mode 100644 node_modules/semver/functions/gte.js create mode 100644 node_modules/semver/functions/inc.js create mode 100644 node_modules/semver/functions/lt.js create mode 100644 node_modules/semver/functions/lte.js create mode 100644 node_modules/semver/functions/major.js create mode 100644 node_modules/semver/functions/minor.js create mode 100644 node_modules/semver/functions/neq.js create mode 100644 node_modules/semver/functions/parse.js create mode 100644 node_modules/semver/functions/patch.js create mode 100644 node_modules/semver/functions/prerelease.js create mode 100644 node_modules/semver/functions/rcompare.js create mode 100644 node_modules/semver/functions/rsort.js create mode 100644 node_modules/semver/functions/satisfies.js create mode 100644 node_modules/semver/functions/sort.js create mode 100644 node_modules/semver/functions/valid.js create mode 100644 node_modules/semver/index.js create mode 100644 node_modules/semver/internal/constants.js create mode 100644 node_modules/semver/internal/debug.js create mode 100644 node_modules/semver/internal/identifiers.js create mode 100644 node_modules/semver/internal/lrucache.js create mode 100644 node_modules/semver/internal/parse-options.js create mode 100644 node_modules/semver/internal/re.js create mode 100644 node_modules/semver/package.json create mode 100644 node_modules/semver/preload.js create mode 100644 node_modules/semver/range.bnf create mode 100644 node_modules/semver/ranges/gtr.js create mode 100644 node_modules/semver/ranges/intersects.js create mode 100644 node_modules/semver/ranges/ltr.js create mode 100644 node_modules/semver/ranges/max-satisfying.js create mode 100644 node_modules/semver/ranges/min-satisfying.js create mode 100644 node_modules/semver/ranges/min-version.js create mode 100644 node_modules/semver/ranges/outside.js create mode 100644 node_modules/semver/ranges/simplify.js create mode 100644 node_modules/semver/ranges/subset.js create mode 100644 node_modules/semver/ranges/to-comparators.js create mode 100644 node_modules/semver/ranges/valid.js create mode 100644 node_modules/shebang-command/index.js create mode 100644 node_modules/shebang-command/license create mode 100644 node_modules/shebang-command/package.json create mode 100644 node_modules/shebang-command/readme.md create mode 100644 node_modules/shebang-regex/index.d.ts create mode 100644 node_modules/shebang-regex/index.js create mode 100644 node_modules/shebang-regex/license create mode 100644 node_modules/shebang-regex/package.json create mode 100644 node_modules/shebang-regex/readme.md create mode 100644 node_modules/siginfo/.travis.yml create mode 100644 node_modules/siginfo/LICENSE create mode 100644 node_modules/siginfo/README.md create mode 100644 node_modules/siginfo/index.js create mode 100644 node_modules/siginfo/package.json create mode 100644 node_modules/siginfo/test.js create mode 100644 node_modules/signal-exit/LICENSE.txt create mode 100644 node_modules/signal-exit/README.md create mode 100644 node_modules/signal-exit/dist/cjs/browser.d.ts create mode 100644 node_modules/signal-exit/dist/cjs/browser.d.ts.map create mode 100644 node_modules/signal-exit/dist/cjs/browser.js create mode 100644 node_modules/signal-exit/dist/cjs/browser.js.map create mode 100644 node_modules/signal-exit/dist/cjs/index.d.ts create mode 100644 node_modules/signal-exit/dist/cjs/index.d.ts.map create mode 100644 node_modules/signal-exit/dist/cjs/index.js create mode 100644 node_modules/signal-exit/dist/cjs/index.js.map create mode 100644 node_modules/signal-exit/dist/cjs/package.json create mode 100644 node_modules/signal-exit/dist/cjs/signals.d.ts create mode 100644 node_modules/signal-exit/dist/cjs/signals.d.ts.map create mode 100644 node_modules/signal-exit/dist/cjs/signals.js create mode 100644 node_modules/signal-exit/dist/cjs/signals.js.map create mode 100644 node_modules/signal-exit/dist/mjs/browser.d.ts create mode 100644 node_modules/signal-exit/dist/mjs/browser.d.ts.map create mode 100644 node_modules/signal-exit/dist/mjs/browser.js create mode 100644 node_modules/signal-exit/dist/mjs/browser.js.map create mode 100644 node_modules/signal-exit/dist/mjs/index.d.ts create mode 100644 node_modules/signal-exit/dist/mjs/index.d.ts.map create mode 100644 node_modules/signal-exit/dist/mjs/index.js create mode 100644 node_modules/signal-exit/dist/mjs/index.js.map create mode 100644 node_modules/signal-exit/dist/mjs/package.json create mode 100644 node_modules/signal-exit/dist/mjs/signals.d.ts create mode 100644 node_modules/signal-exit/dist/mjs/signals.d.ts.map create mode 100644 node_modules/signal-exit/dist/mjs/signals.js create mode 100644 node_modules/signal-exit/dist/mjs/signals.js.map create mode 100644 node_modules/signal-exit/package.json create mode 100644 node_modules/source-map-js/LICENSE create mode 100644 node_modules/source-map-js/README.md create mode 100644 node_modules/source-map-js/lib/array-set.js create mode 100644 node_modules/source-map-js/lib/base64-vlq.js create mode 100644 node_modules/source-map-js/lib/base64.js create mode 100644 node_modules/source-map-js/lib/binary-search.js create mode 100644 node_modules/source-map-js/lib/mapping-list.js create mode 100644 node_modules/source-map-js/lib/quick-sort.js create mode 100644 node_modules/source-map-js/lib/source-map-consumer.d.ts create mode 100644 node_modules/source-map-js/lib/source-map-consumer.js create mode 100644 node_modules/source-map-js/lib/source-map-generator.d.ts create mode 100644 node_modules/source-map-js/lib/source-map-generator.js create mode 100644 node_modules/source-map-js/lib/source-node.d.ts create mode 100644 node_modules/source-map-js/lib/source-node.js create mode 100644 node_modules/source-map-js/lib/util.js create mode 100644 node_modules/source-map-js/package.json create mode 100644 node_modules/source-map-js/source-map.d.ts create mode 100644 node_modules/source-map-js/source-map.js create mode 100644 node_modules/stackback/.npmignore create mode 100644 node_modules/stackback/.travis.yml create mode 100644 node_modules/stackback/README.md create mode 100644 node_modules/stackback/formatstack.js create mode 100644 node_modules/stackback/index.js create mode 100644 node_modules/stackback/package.json create mode 100644 node_modules/stackback/test.js create mode 100644 node_modules/std-env/LICENCE create mode 100644 node_modules/std-env/README.md create mode 100644 node_modules/std-env/dist/index.cjs create mode 100644 node_modules/std-env/dist/index.d.cts create mode 100644 node_modules/std-env/dist/index.d.mts create mode 100644 node_modules/std-env/dist/index.d.ts create mode 100644 node_modules/std-env/dist/index.mjs create mode 100644 node_modules/std-env/package.json create mode 100644 node_modules/stdin-discarder/index.d.ts create mode 100644 node_modules/stdin-discarder/index.js create mode 100644 node_modules/stdin-discarder/license create mode 100644 node_modules/stdin-discarder/package.json create mode 100644 node_modules/stdin-discarder/readme.md create mode 100644 node_modules/string-width/index.d.ts create mode 100644 node_modules/string-width/index.js create mode 100644 node_modules/string-width/license create mode 100644 node_modules/string-width/package.json create mode 100644 node_modules/string-width/readme.md create mode 100644 node_modules/strip-ansi/index.d.ts create mode 100644 node_modules/strip-ansi/index.js create mode 100644 node_modules/strip-ansi/license create mode 100644 node_modules/strip-ansi/package.json create mode 100644 node_modules/strip-ansi/readme.md create mode 100644 node_modules/strip-final-newline/index.js create mode 100644 node_modules/strip-final-newline/license create mode 100644 node_modules/strip-final-newline/package.json create mode 100644 node_modules/strip-final-newline/readme.md create mode 100644 node_modules/strip-literal/LICENSE create mode 100644 node_modules/strip-literal/README.md create mode 100644 node_modules/strip-literal/dist/index.cjs create mode 100644 node_modules/strip-literal/dist/index.d.cts create mode 100644 node_modules/strip-literal/dist/index.d.mts create mode 100644 node_modules/strip-literal/dist/index.d.ts create mode 100644 node_modules/strip-literal/dist/index.mjs create mode 100644 node_modules/strip-literal/package.json create mode 100644 node_modules/supports-color/browser.js create mode 100644 node_modules/supports-color/index.js create mode 100644 node_modules/supports-color/license create mode 100644 node_modules/supports-color/package.json create mode 100644 node_modules/supports-color/readme.md create mode 100644 node_modules/test-exclude/CHANGELOG.md create mode 100644 node_modules/test-exclude/LICENSE.txt create mode 100644 node_modules/test-exclude/README.md create mode 100644 node_modules/test-exclude/index.js create mode 100644 node_modules/test-exclude/is-outside-dir-posix.js create mode 100644 node_modules/test-exclude/is-outside-dir-win32.js create mode 100644 node_modules/test-exclude/is-outside-dir.js create mode 100644 node_modules/test-exclude/package.json create mode 100644 node_modules/tinybench/LICENSE create mode 100644 node_modules/tinybench/README.md create mode 100644 node_modules/tinybench/dist/index.cjs create mode 100644 node_modules/tinybench/dist/index.d.cts create mode 100644 node_modules/tinybench/dist/index.d.ts create mode 100644 node_modules/tinybench/dist/index.js create mode 100644 node_modules/tinybench/package.json create mode 100644 node_modules/tinypool/LICENSE create mode 100644 node_modules/tinypool/README.md create mode 100644 node_modules/tinypool/dist/entry/process.d.ts create mode 100644 node_modules/tinypool/dist/entry/utils.d.ts create mode 100644 node_modules/tinypool/dist/entry/worker.d.ts create mode 100644 node_modules/tinypool/dist/esm/chunk-DSRZHYCS.js create mode 100644 node_modules/tinypool/dist/esm/chunk-FJA3Y3DX.js create mode 100644 node_modules/tinypool/dist/esm/chunk-OECBSOR6.js create mode 100644 node_modules/tinypool/dist/esm/chunk-T6A5DJAH.js create mode 100644 node_modules/tinypool/dist/esm/entry/process.js create mode 100644 node_modules/tinypool/dist/esm/entry/utils.js create mode 100644 node_modules/tinypool/dist/esm/entry/worker.js create mode 100644 node_modules/tinypool/dist/esm/index.js create mode 100644 node_modules/tinypool/dist/index.d.ts create mode 100644 node_modules/tinypool/package.json create mode 100644 node_modules/tinyspy/LICENCE create mode 100644 node_modules/tinyspy/README.md create mode 100644 node_modules/tinyspy/dist/index.cjs create mode 100644 node_modules/tinyspy/dist/index.d.ts create mode 100644 node_modules/tinyspy/dist/index.js create mode 100644 node_modules/tinyspy/package.json create mode 100644 node_modules/type-detect/LICENSE create mode 100644 node_modules/type-detect/README.md create mode 100644 node_modules/type-detect/index.d.ts create mode 100644 node_modules/type-detect/index.js create mode 100644 node_modules/type-detect/index.ts create mode 100644 node_modules/type-detect/package.json create mode 100644 node_modules/type-detect/type-detect.js create mode 100644 node_modules/ufo/LICENSE create mode 100644 node_modules/ufo/README.md create mode 100644 node_modules/ufo/dist/index.cjs create mode 100644 node_modules/ufo/dist/index.d.cts create mode 100644 node_modules/ufo/dist/index.d.mts create mode 100644 node_modules/ufo/dist/index.d.ts create mode 100644 node_modules/ufo/dist/index.mjs create mode 100644 node_modules/ufo/package.json create mode 100644 node_modules/undici/LICENSE create mode 100644 node_modules/undici/README.md create mode 100644 node_modules/undici/docs/docs/api/Agent.md create mode 100644 node_modules/undici/docs/docs/api/BalancedPool.md create mode 100644 node_modules/undici/docs/docs/api/CacheStorage.md create mode 100644 node_modules/undici/docs/docs/api/CacheStore.md create mode 100644 node_modules/undici/docs/docs/api/Client.md create mode 100644 node_modules/undici/docs/docs/api/ClientStats.md create mode 100644 node_modules/undici/docs/docs/api/Connector.md create mode 100644 node_modules/undici/docs/docs/api/ContentType.md create mode 100644 node_modules/undici/docs/docs/api/Cookies.md create mode 100644 node_modules/undici/docs/docs/api/Debug.md create mode 100644 node_modules/undici/docs/docs/api/DiagnosticsChannel.md create mode 100644 node_modules/undici/docs/docs/api/Dispatcher.md create mode 100644 node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md create mode 100644 node_modules/undici/docs/docs/api/Errors.md create mode 100644 node_modules/undici/docs/docs/api/EventSource.md create mode 100644 node_modules/undici/docs/docs/api/Fetch.md create mode 100644 node_modules/undici/docs/docs/api/GlobalInstallation.md create mode 100644 node_modules/undici/docs/docs/api/H2CClient.md create mode 100644 node_modules/undici/docs/docs/api/MockAgent.md create mode 100644 node_modules/undici/docs/docs/api/MockCallHistory.md create mode 100644 node_modules/undici/docs/docs/api/MockCallHistoryLog.md create mode 100644 node_modules/undici/docs/docs/api/MockClient.md create mode 100644 node_modules/undici/docs/docs/api/MockErrors.md create mode 100644 node_modules/undici/docs/docs/api/MockPool.md create mode 100644 node_modules/undici/docs/docs/api/Pool.md create mode 100644 node_modules/undici/docs/docs/api/PoolStats.md create mode 100644 node_modules/undici/docs/docs/api/ProxyAgent.md create mode 100644 node_modules/undici/docs/docs/api/RedirectHandler.md create mode 100644 node_modules/undici/docs/docs/api/RetryAgent.md create mode 100644 node_modules/undici/docs/docs/api/RetryHandler.md create mode 100644 node_modules/undici/docs/docs/api/RoundRobinPool.md create mode 100644 node_modules/undici/docs/docs/api/SnapshotAgent.md create mode 100644 node_modules/undici/docs/docs/api/Socks5ProxyAgent.md create mode 100644 node_modules/undici/docs/docs/api/Util.md create mode 100644 node_modules/undici/docs/docs/api/WebSocket.md create mode 100644 node_modules/undici/docs/docs/api/api-lifecycle.md create mode 100644 node_modules/undici/docs/docs/best-practices/client-certificate.md create mode 100644 node_modules/undici/docs/docs/best-practices/crawling.md create mode 100644 node_modules/undici/docs/docs/best-practices/mocking-request.md create mode 100644 node_modules/undici/docs/docs/best-practices/proxy.md create mode 100644 node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md create mode 100644 node_modules/undici/docs/docs/best-practices/writing-tests.md create mode 100644 node_modules/undici/index-fetch.js create mode 100644 node_modules/undici/index.d.ts create mode 100644 node_modules/undici/index.js create mode 100644 node_modules/undici/lib/api/abort-signal.js create mode 100644 node_modules/undici/lib/api/api-connect.js create mode 100644 node_modules/undici/lib/api/api-pipeline.js create mode 100644 node_modules/undici/lib/api/api-request.js create mode 100644 node_modules/undici/lib/api/api-stream.js create mode 100644 node_modules/undici/lib/api/api-upgrade.js create mode 100644 node_modules/undici/lib/api/index.js create mode 100644 node_modules/undici/lib/api/readable.js create mode 100644 node_modules/undici/lib/cache/memory-cache-store.js create mode 100644 node_modules/undici/lib/cache/sqlite-cache-store.js create mode 100644 node_modules/undici/lib/core/connect.js create mode 100644 node_modules/undici/lib/core/constants.js create mode 100644 node_modules/undici/lib/core/diagnostics.js create mode 100644 node_modules/undici/lib/core/errors.js create mode 100644 node_modules/undici/lib/core/request.js create mode 100644 node_modules/undici/lib/core/socks5-client.js create mode 100644 node_modules/undici/lib/core/socks5-utils.js create mode 100644 node_modules/undici/lib/core/symbols.js create mode 100644 node_modules/undici/lib/core/tree.js create mode 100644 node_modules/undici/lib/core/util.js create mode 100644 node_modules/undici/lib/dispatcher/agent.js create mode 100644 node_modules/undici/lib/dispatcher/balanced-pool.js create mode 100644 node_modules/undici/lib/dispatcher/client-h1.js create mode 100644 node_modules/undici/lib/dispatcher/client-h2.js create mode 100644 node_modules/undici/lib/dispatcher/client.js create mode 100644 node_modules/undici/lib/dispatcher/dispatcher-base.js create mode 100644 node_modules/undici/lib/dispatcher/dispatcher.js create mode 100644 node_modules/undici/lib/dispatcher/env-http-proxy-agent.js create mode 100644 node_modules/undici/lib/dispatcher/fixed-queue.js create mode 100644 node_modules/undici/lib/dispatcher/h2c-client.js create mode 100644 node_modules/undici/lib/dispatcher/pool-base.js create mode 100644 node_modules/undici/lib/dispatcher/pool.js create mode 100644 node_modules/undici/lib/dispatcher/proxy-agent.js create mode 100644 node_modules/undici/lib/dispatcher/retry-agent.js create mode 100644 node_modules/undici/lib/dispatcher/round-robin-pool.js create mode 100644 node_modules/undici/lib/dispatcher/socks5-proxy-agent.js create mode 100644 node_modules/undici/lib/encoding/index.js create mode 100644 node_modules/undici/lib/global.js create mode 100644 node_modules/undici/lib/handler/cache-handler.js create mode 100644 node_modules/undici/lib/handler/cache-revalidation-handler.js create mode 100644 node_modules/undici/lib/handler/decorator-handler.js create mode 100644 node_modules/undici/lib/handler/deduplication-handler.js create mode 100644 node_modules/undici/lib/handler/redirect-handler.js create mode 100644 node_modules/undici/lib/handler/retry-handler.js create mode 100644 node_modules/undici/lib/handler/unwrap-handler.js create mode 100644 node_modules/undici/lib/handler/wrap-handler.js create mode 100644 node_modules/undici/lib/interceptor/cache.js create mode 100644 node_modules/undici/lib/interceptor/decompress.js create mode 100644 node_modules/undici/lib/interceptor/deduplicate.js create mode 100644 node_modules/undici/lib/interceptor/dns.js create mode 100644 node_modules/undici/lib/interceptor/dump.js create mode 100644 node_modules/undici/lib/interceptor/redirect.js create mode 100644 node_modules/undici/lib/interceptor/response-error.js create mode 100644 node_modules/undici/lib/interceptor/retry.js create mode 100644 node_modules/undici/lib/llhttp/.gitkeep create mode 100644 node_modules/undici/lib/llhttp/constants.d.ts create mode 100644 node_modules/undici/lib/llhttp/constants.js create mode 100644 node_modules/undici/lib/llhttp/llhttp-wasm.js create mode 100644 node_modules/undici/lib/llhttp/llhttp_simd-wasm.js create mode 100644 node_modules/undici/lib/llhttp/utils.d.ts create mode 100644 node_modules/undici/lib/llhttp/utils.js create mode 100644 node_modules/undici/lib/mock/mock-agent.js create mode 100644 node_modules/undici/lib/mock/mock-call-history.js create mode 100644 node_modules/undici/lib/mock/mock-client.js create mode 100644 node_modules/undici/lib/mock/mock-errors.js create mode 100644 node_modules/undici/lib/mock/mock-interceptor.js create mode 100644 node_modules/undici/lib/mock/mock-pool.js create mode 100644 node_modules/undici/lib/mock/mock-symbols.js create mode 100644 node_modules/undici/lib/mock/mock-utils.js create mode 100644 node_modules/undici/lib/mock/pending-interceptors-formatter.js create mode 100644 node_modules/undici/lib/mock/snapshot-agent.js create mode 100644 node_modules/undici/lib/mock/snapshot-recorder.js create mode 100644 node_modules/undici/lib/mock/snapshot-utils.js create mode 100644 node_modules/undici/lib/util/cache.js create mode 100644 node_modules/undici/lib/util/date.js create mode 100644 node_modules/undici/lib/util/promise.js create mode 100644 node_modules/undici/lib/util/runtime-features.js create mode 100644 node_modules/undici/lib/util/stats.js create mode 100644 node_modules/undici/lib/util/timers.js create mode 100644 node_modules/undici/lib/web/cache/cache.js create mode 100644 node_modules/undici/lib/web/cache/cachestorage.js create mode 100644 node_modules/undici/lib/web/cache/util.js create mode 100644 node_modules/undici/lib/web/cookies/constants.js create mode 100644 node_modules/undici/lib/web/cookies/index.js create mode 100644 node_modules/undici/lib/web/cookies/parse.js create mode 100644 node_modules/undici/lib/web/cookies/util.js create mode 100644 node_modules/undici/lib/web/eventsource/eventsource-stream.js create mode 100644 node_modules/undici/lib/web/eventsource/eventsource.js create mode 100644 node_modules/undici/lib/web/eventsource/util.js create mode 100644 node_modules/undici/lib/web/fetch/LICENSE create mode 100644 node_modules/undici/lib/web/fetch/body.js create mode 100644 node_modules/undici/lib/web/fetch/constants.js create mode 100644 node_modules/undici/lib/web/fetch/data-url.js create mode 100644 node_modules/undici/lib/web/fetch/formdata-parser.js create mode 100644 node_modules/undici/lib/web/fetch/formdata.js create mode 100644 node_modules/undici/lib/web/fetch/global.js create mode 100644 node_modules/undici/lib/web/fetch/headers.js create mode 100644 node_modules/undici/lib/web/fetch/index.js create mode 100644 node_modules/undici/lib/web/fetch/request.js create mode 100644 node_modules/undici/lib/web/fetch/response.js create mode 100644 node_modules/undici/lib/web/fetch/util.js create mode 100644 node_modules/undici/lib/web/infra/index.js create mode 100644 node_modules/undici/lib/web/subresource-integrity/Readme.md create mode 100644 node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js create mode 100644 node_modules/undici/lib/web/webidl/index.js create mode 100644 node_modules/undici/lib/web/websocket/connection.js create mode 100644 node_modules/undici/lib/web/websocket/constants.js create mode 100644 node_modules/undici/lib/web/websocket/events.js create mode 100644 node_modules/undici/lib/web/websocket/frame.js create mode 100644 node_modules/undici/lib/web/websocket/permessage-deflate.js create mode 100644 node_modules/undici/lib/web/websocket/receiver.js create mode 100644 node_modules/undici/lib/web/websocket/sender.js create mode 100644 node_modules/undici/lib/web/websocket/stream/websocketerror.js create mode 100644 node_modules/undici/lib/web/websocket/stream/websocketstream.js create mode 100644 node_modules/undici/lib/web/websocket/util.js create mode 100644 node_modules/undici/lib/web/websocket/websocket.js create mode 100644 node_modules/undici/package.json create mode 100644 node_modules/undici/scripts/strip-comments.js create mode 100644 node_modules/undici/types/README.md create mode 100644 node_modules/undici/types/agent.d.ts create mode 100644 node_modules/undici/types/api.d.ts create mode 100644 node_modules/undici/types/balanced-pool.d.ts create mode 100644 node_modules/undici/types/cache-interceptor.d.ts create mode 100644 node_modules/undici/types/cache.d.ts create mode 100644 node_modules/undici/types/client-stats.d.ts create mode 100644 node_modules/undici/types/client.d.ts create mode 100644 node_modules/undici/types/connector.d.ts create mode 100644 node_modules/undici/types/content-type.d.ts create mode 100644 node_modules/undici/types/cookies.d.ts create mode 100644 node_modules/undici/types/diagnostics-channel.d.ts create mode 100644 node_modules/undici/types/dispatcher.d.ts create mode 100644 node_modules/undici/types/env-http-proxy-agent.d.ts create mode 100644 node_modules/undici/types/errors.d.ts create mode 100644 node_modules/undici/types/eventsource.d.ts create mode 100644 node_modules/undici/types/fetch.d.ts create mode 100644 node_modules/undici/types/formdata.d.ts create mode 100644 node_modules/undici/types/global-dispatcher.d.ts create mode 100644 node_modules/undici/types/global-origin.d.ts create mode 100644 node_modules/undici/types/h2c-client.d.ts create mode 100644 node_modules/undici/types/handlers.d.ts create mode 100644 node_modules/undici/types/header.d.ts create mode 100644 node_modules/undici/types/index.d.ts create mode 100644 node_modules/undici/types/interceptors.d.ts create mode 100644 node_modules/undici/types/mock-agent.d.ts create mode 100644 node_modules/undici/types/mock-call-history.d.ts create mode 100644 node_modules/undici/types/mock-client.d.ts create mode 100644 node_modules/undici/types/mock-errors.d.ts create mode 100644 node_modules/undici/types/mock-interceptor.d.ts create mode 100644 node_modules/undici/types/mock-pool.d.ts create mode 100644 node_modules/undici/types/patch.d.ts create mode 100644 node_modules/undici/types/pool-stats.d.ts create mode 100644 node_modules/undici/types/pool.d.ts create mode 100644 node_modules/undici/types/proxy-agent.d.ts create mode 100644 node_modules/undici/types/readable.d.ts create mode 100644 node_modules/undici/types/retry-agent.d.ts create mode 100644 node_modules/undici/types/retry-handler.d.ts create mode 100644 node_modules/undici/types/round-robin-pool.d.ts create mode 100644 node_modules/undici/types/snapshot-agent.d.ts create mode 100644 node_modules/undici/types/socks5-proxy-agent.d.ts create mode 100644 node_modules/undici/types/util.d.ts create mode 100644 node_modules/undici/types/utility.d.ts create mode 100644 node_modules/undici/types/webidl.d.ts create mode 100644 node_modules/undici/types/websocket.d.ts create mode 100644 node_modules/vite-node/LICENSE create mode 100644 node_modules/vite-node/README.md create mode 100644 node_modules/vite-node/dist/chunk-hmr.cjs create mode 100644 node_modules/vite-node/dist/chunk-hmr.mjs create mode 100644 node_modules/vite-node/dist/cli.cjs create mode 100644 node_modules/vite-node/dist/cli.d.ts create mode 100644 node_modules/vite-node/dist/cli.mjs create mode 100644 node_modules/vite-node/dist/client.cjs create mode 100644 node_modules/vite-node/dist/client.d.ts create mode 100644 node_modules/vite-node/dist/client.mjs create mode 100644 node_modules/vite-node/dist/constants.cjs create mode 100644 node_modules/vite-node/dist/constants.d.ts create mode 100644 node_modules/vite-node/dist/constants.mjs create mode 100644 node_modules/vite-node/dist/hmr.cjs create mode 100644 node_modules/vite-node/dist/hmr.d.ts create mode 100644 node_modules/vite-node/dist/hmr.mjs create mode 100644 node_modules/vite-node/dist/index-O2IrwHKf.d.ts create mode 100644 node_modules/vite-node/dist/index.cjs create mode 100644 node_modules/vite-node/dist/index.d.ts create mode 100644 node_modules/vite-node/dist/index.mjs create mode 100644 node_modules/vite-node/dist/server.cjs create mode 100644 node_modules/vite-node/dist/server.d.ts create mode 100644 node_modules/vite-node/dist/server.mjs create mode 100644 node_modules/vite-node/dist/source-map.cjs create mode 100644 node_modules/vite-node/dist/source-map.d.ts create mode 100644 node_modules/vite-node/dist/source-map.mjs create mode 100644 node_modules/vite-node/dist/trace-mapping.d-xyIfZtPm.d.ts create mode 100644 node_modules/vite-node/dist/types.cjs create mode 100644 node_modules/vite-node/dist/types.d.ts create mode 100644 node_modules/vite-node/dist/types.mjs create mode 100644 node_modules/vite-node/dist/utils.cjs create mode 100644 node_modules/vite-node/dist/utils.d.ts create mode 100644 node_modules/vite-node/dist/utils.mjs create mode 100644 node_modules/vite-node/package.json create mode 100644 node_modules/vite-node/vite-node.mjs create mode 100644 node_modules/vite/LICENSE.md create mode 100644 node_modules/vite/README.md create mode 100644 node_modules/vite/bin/openChrome.applescript create mode 100644 node_modules/vite/bin/vite.js create mode 100644 node_modules/vite/client.d.ts create mode 100644 node_modules/vite/dist/client/client.mjs create mode 100644 node_modules/vite/dist/client/env.mjs create mode 100644 node_modules/vite/dist/node-cjs/publicUtils.cjs create mode 100644 node_modules/vite/dist/node/chunks/dep-BB45zftN.js create mode 100644 node_modules/vite/dist/node/chunks/dep-BK3b2jBa.js create mode 100644 node_modules/vite/dist/node/chunks/dep-D-7KCb9p.js create mode 100644 node_modules/vite/dist/node/chunks/dep-Dnp7gl8U.js create mode 100644 node_modules/vite/dist/node/chunks/dep-IQS-Za7F.js create mode 100644 node_modules/vite/dist/node/cli.js create mode 100644 node_modules/vite/dist/node/constants.js create mode 100644 node_modules/vite/dist/node/index.d.ts create mode 100644 node_modules/vite/dist/node/index.js create mode 100644 node_modules/vite/dist/node/runtime.d.ts create mode 100644 node_modules/vite/dist/node/runtime.js create mode 100644 node_modules/vite/dist/node/types.d-aGj9QkWt.d.ts create mode 100644 node_modules/vite/index.cjs create mode 100644 node_modules/vite/index.d.cts create mode 100644 node_modules/vite/package.json create mode 100644 node_modules/vite/types/customEvent.d.ts create mode 100644 node_modules/vite/types/hmrPayload.d.ts create mode 100644 node_modules/vite/types/hot.d.ts create mode 100644 node_modules/vite/types/import-meta.d.ts create mode 100644 node_modules/vite/types/importGlob.d.ts create mode 100644 node_modules/vite/types/importMeta.d.ts create mode 100644 node_modules/vite/types/metadata.d.ts create mode 100644 node_modules/vite/types/package.json create mode 100644 node_modules/vitest/LICENSE.md create mode 100644 node_modules/vitest/README.md create mode 100644 node_modules/vitest/browser.d.ts create mode 100644 node_modules/vitest/config.d.ts create mode 100644 node_modules/vitest/coverage.d.ts create mode 100644 node_modules/vitest/dist/browser.d.ts create mode 100644 node_modules/vitest/dist/browser.js create mode 100644 node_modules/vitest/dist/chunks/environments-node.vcoXCoKs.js create mode 100644 node_modules/vitest/dist/chunks/install-pkg.LE8oaA1t.js create mode 100644 node_modules/vitest/dist/chunks/integrations-globals.kw4co3rx.js create mode 100644 node_modules/vitest/dist/chunks/node-git.Hw101KjS.js create mode 100644 node_modules/vitest/dist/chunks/runtime-console.EO5ha7qv.js create mode 100644 node_modules/vitest/dist/chunks/runtime-runBaseTests.oAvMKtQC.js create mode 100644 node_modules/vitest/dist/cli-wrapper.js create mode 100644 node_modules/vitest/dist/cli.js create mode 100644 node_modules/vitest/dist/config.cjs create mode 100644 node_modules/vitest/dist/config.d.ts create mode 100644 node_modules/vitest/dist/config.js create mode 100644 node_modules/vitest/dist/coverage.d.ts create mode 100644 node_modules/vitest/dist/coverage.js create mode 100644 node_modules/vitest/dist/environments.d.ts create mode 100644 node_modules/vitest/dist/environments.js create mode 100644 node_modules/vitest/dist/execute.d.ts create mode 100644 node_modules/vitest/dist/execute.js create mode 100644 node_modules/vitest/dist/index.d.ts create mode 100644 node_modules/vitest/dist/index.js create mode 100644 node_modules/vitest/dist/node.d.ts create mode 100644 node_modules/vitest/dist/node.js create mode 100644 node_modules/vitest/dist/path.js create mode 100644 node_modules/vitest/dist/reporters-w_64AS5f.d.ts create mode 100644 node_modules/vitest/dist/reporters.d.ts create mode 100644 node_modules/vitest/dist/reporters.js create mode 100644 node_modules/vitest/dist/runners.d.ts create mode 100644 node_modules/vitest/dist/runners.js create mode 100644 node_modules/vitest/dist/snapshot.d.ts create mode 100644 node_modules/vitest/dist/snapshot.js create mode 100644 node_modules/vitest/dist/spy.js create mode 100644 node_modules/vitest/dist/suite-dWqIFb_-.d.ts create mode 100644 node_modules/vitest/dist/suite.d.ts create mode 100644 node_modules/vitest/dist/suite.js create mode 100644 node_modules/vitest/dist/utils.d.ts create mode 100644 node_modules/vitest/dist/utils.js create mode 100644 node_modules/vitest/dist/vendor/_commonjsHelpers.jjO7Zipk.js create mode 100644 node_modules/vitest/dist/vendor/base.5NT-gWu5.js create mode 100644 node_modules/vitest/dist/vendor/base.Ybri3C14.js create mode 100644 node_modules/vitest/dist/vendor/benchmark.yGkUTKnC.js create mode 100644 node_modules/vitest/dist/vendor/cac.cdAtVkJZ.js create mode 100644 node_modules/vitest/dist/vendor/cli-api.OdDWuB7Y.js create mode 100644 node_modules/vitest/dist/vendor/constants.5J7I254_.js create mode 100644 node_modules/vitest/dist/vendor/coverage.E7sG1b3r.js create mode 100644 node_modules/vitest/dist/vendor/date.Ns1pGd_X.js create mode 100644 node_modules/vitest/dist/vendor/env.AtSIuHFg.js create mode 100644 node_modules/vitest/dist/vendor/execute.fL3szUAI.js create mode 100644 node_modules/vitest/dist/vendor/global.CkGT_TMy.js create mode 100644 node_modules/vitest/dist/vendor/index.-xs08BYx.js create mode 100644 node_modules/vitest/dist/vendor/index.8bPxjt7g.js create mode 100644 node_modules/vitest/dist/vendor/index.DpVgvm2P.js create mode 100644 node_modules/vitest/dist/vendor/index.GVFv9dZ0.js create mode 100644 node_modules/vitest/dist/vendor/index.SMVOaj7F.js create mode 100644 node_modules/vitest/dist/vendor/index.dI9lHwVn.js create mode 100644 node_modules/vitest/dist/vendor/index.xL8XjTLv.js create mode 100644 node_modules/vitest/dist/vendor/inspector.IgLX3ur5.js create mode 100644 node_modules/vitest/dist/vendor/rpc.joBhAkyK.js create mode 100644 node_modules/vitest/dist/vendor/run-once.Olz_Zkd8.js create mode 100644 node_modules/vitest/dist/vendor/setup-common.8nJLd4ay.js create mode 100644 node_modules/vitest/dist/vendor/tasks.IknbGB2n.js create mode 100644 node_modules/vitest/dist/vendor/utils.0uYuCbzo.js create mode 100644 node_modules/vitest/dist/vendor/utils.dEtNIEgr.js create mode 100644 node_modules/vitest/dist/vendor/vi.YFlodzP_.js create mode 100644 node_modules/vitest/dist/vendor/vm.QEE48c0T.js create mode 100644 node_modules/vitest/dist/worker.js create mode 100644 node_modules/vitest/dist/workers.d.ts create mode 100644 node_modules/vitest/dist/workers.js create mode 100644 node_modules/vitest/dist/workers/forks.js create mode 100644 node_modules/vitest/dist/workers/runVmTests.js create mode 100644 node_modules/vitest/dist/workers/threads.js create mode 100644 node_modules/vitest/dist/workers/vmForks.js create mode 100644 node_modules/vitest/dist/workers/vmThreads.js create mode 100644 node_modules/vitest/environments.d.ts create mode 100644 node_modules/vitest/execute.d.ts create mode 100644 node_modules/vitest/globals.d.ts create mode 100644 node_modules/vitest/import-meta.d.ts create mode 100644 node_modules/vitest/importMeta.d.ts create mode 100644 node_modules/vitest/index.cjs create mode 100644 node_modules/vitest/index.d.cts create mode 100644 node_modules/vitest/jsdom.d.ts create mode 100644 node_modules/vitest/node.d.ts create mode 100644 node_modules/vitest/package.json create mode 100644 node_modules/vitest/reporters.d.ts create mode 100644 node_modules/vitest/runners.d.ts create mode 100644 node_modules/vitest/snapshot.d.ts create mode 100644 node_modules/vitest/suite.d.ts create mode 100644 node_modules/vitest/suppress-warnings.cjs create mode 100644 node_modules/vitest/utils.d.ts create mode 100644 node_modules/vitest/vitest.mjs create mode 100644 node_modules/vitest/workers.d.ts create mode 100644 node_modules/whatwg-encoding/LICENSE.txt create mode 100644 node_modules/whatwg-encoding/README.md create mode 100644 node_modules/whatwg-encoding/lib/labels-to-names.json create mode 100644 node_modules/whatwg-encoding/lib/supported-names.json create mode 100644 node_modules/whatwg-encoding/lib/whatwg-encoding.js create mode 100644 node_modules/whatwg-encoding/package.json create mode 100644 node_modules/whatwg-mimetype/LICENSE.txt create mode 100644 node_modules/whatwg-mimetype/README.md create mode 100644 node_modules/whatwg-mimetype/lib/mime-type-parameters.js create mode 100644 node_modules/whatwg-mimetype/lib/mime-type.js create mode 100644 node_modules/whatwg-mimetype/lib/parser.js create mode 100644 node_modules/whatwg-mimetype/lib/serializer.js create mode 100644 node_modules/whatwg-mimetype/lib/utils.js create mode 100644 node_modules/whatwg-mimetype/package.json create mode 100644 node_modules/which/CHANGELOG.md create mode 100644 node_modules/which/LICENSE create mode 100644 node_modules/which/README.md create mode 100644 node_modules/which/bin/node-which create mode 100644 node_modules/which/package.json create mode 100644 node_modules/which/which.js create mode 100644 node_modules/why-is-node-running/.github/FUNDING.yml create mode 100644 node_modules/why-is-node-running/LICENSE create mode 100644 node_modules/why-is-node-running/README.md create mode 100644 node_modules/why-is-node-running/cli.js create mode 100644 node_modules/why-is-node-running/example.js create mode 100644 node_modules/why-is-node-running/include.js create mode 100644 node_modules/why-is-node-running/index.js create mode 100644 node_modules/why-is-node-running/package.json create mode 100644 node_modules/wrappy/LICENSE create mode 100644 node_modules/wrappy/README.md create mode 100644 node_modules/wrappy/package.json create mode 100644 node_modules/wrappy/wrappy.js create mode 100644 node_modules/yocto-queue/index.d.ts create mode 100644 node_modules/yocto-queue/index.js create mode 100644 node_modules/yocto-queue/license create mode 100644 node_modules/yocto-queue/package.json create mode 100644 node_modules/yocto-queue/readme.md create mode 100644 package-lock.json diff --git a/lib/fetcher.js b/lib/fetcher.js index fe89ad7..ec7ed13 100644 --- a/lib/fetcher.js +++ b/lib/fetcher.js @@ -19,7 +19,7 @@ const HEADERS = { 'Sec-Fetch-Site': 'none', 'Sec-Fetch-User': '?1', 'Cache-Control': 'max-age=0', - Cookie: 'locale=zh; over18=1', // over18=1 跳过成人内容确认页 + Cookie: 'list_mode=h; theme=auto; locale=zh; over18=1; _jdb_session=wJkH2678EN3cZzzL2Pqbyr158quff0CaGzuh5hRxUXXADcKOQm1zKdOnlwow3wDfL5AX2NeKne52BgUZT6JpBGp5prKgUmKyBReopEABv30rItmWnxowjJ04Mki%2BO0jQ3OO%2F4F2BYE7TTZ8GlgpA3kuesTAsX8bAcL0HqWF4LDRdMeo9JYqzDn%2FoPAUFxnmwXBieXtMXqCP8JnudI2vQ44jtIhFRvSrzf832gRMi7STwMG7K8O9%2BH3AoJfMKbuBomnLMFuBNBbPbB3SShbi3SBja8bX8nudBILUX0ZiJtD%2FEOl%2BN3r6dVPw5--do%2Bi7mvLi5xyZ0HZ--gZT%2Fl7%2BX9Vr3GjRNK7FXOw%3D%3D', // over18=1 跳过成人内容确认页 }; async function fetchHtml(url) { diff --git a/node_modules/.bin/acorn b/node_modules/.bin/acorn new file mode 100644 index 0000000..679bd16 --- /dev/null +++ b/node_modules/.bin/acorn @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../acorn/bin/acorn" "$@" +else + exec node "$basedir/../acorn/bin/acorn" "$@" +fi diff --git a/node_modules/.bin/acorn.cmd b/node_modules/.bin/acorn.cmd new file mode 100644 index 0000000..a9324df --- /dev/null +++ b/node_modules/.bin/acorn.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\acorn\bin\acorn" %* diff --git a/node_modules/.bin/acorn.ps1 b/node_modules/.bin/acorn.ps1 new file mode 100644 index 0000000..6f6dcdd --- /dev/null +++ b/node_modules/.bin/acorn.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args + } else { + & "$basedir/node$exe" "$basedir/../acorn/bin/acorn" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../acorn/bin/acorn" $args + } else { + & "node$exe" "$basedir/../acorn/bin/acorn" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/esbuild b/node_modules/.bin/esbuild new file mode 100644 index 0000000..63bb6d4 --- /dev/null +++ b/node_modules/.bin/esbuild @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../esbuild/bin/esbuild" "$@" +else + exec node "$basedir/../esbuild/bin/esbuild" "$@" +fi diff --git a/node_modules/.bin/esbuild.cmd b/node_modules/.bin/esbuild.cmd new file mode 100644 index 0000000..cc920c5 --- /dev/null +++ b/node_modules/.bin/esbuild.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\esbuild\bin\esbuild" %* diff --git a/node_modules/.bin/esbuild.ps1 b/node_modules/.bin/esbuild.ps1 new file mode 100644 index 0000000..81ffbf9 --- /dev/null +++ b/node_modules/.bin/esbuild.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args + } else { + & "$basedir/node$exe" "$basedir/../esbuild/bin/esbuild" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../esbuild/bin/esbuild" $args + } else { + & "node$exe" "$basedir/../esbuild/bin/esbuild" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/nanoid b/node_modules/.bin/nanoid new file mode 100644 index 0000000..46220bd --- /dev/null +++ b/node_modules/.bin/nanoid @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../nanoid/bin/nanoid.cjs" "$@" +else + exec node "$basedir/../nanoid/bin/nanoid.cjs" "$@" +fi diff --git a/node_modules/.bin/nanoid.cmd b/node_modules/.bin/nanoid.cmd new file mode 100644 index 0000000..9c40107 --- /dev/null +++ b/node_modules/.bin/nanoid.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\nanoid\bin\nanoid.cjs" %* diff --git a/node_modules/.bin/nanoid.ps1 b/node_modules/.bin/nanoid.ps1 new file mode 100644 index 0000000..d8a4d7a --- /dev/null +++ b/node_modules/.bin/nanoid.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "$basedir/node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } else { + & "node$exe" "$basedir/../nanoid/bin/nanoid.cjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/node-which b/node_modules/.bin/node-which new file mode 100644 index 0000000..b49b03f --- /dev/null +++ b/node_modules/.bin/node-which @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../which/bin/node-which" "$@" +else + exec node "$basedir/../which/bin/node-which" "$@" +fi diff --git a/node_modules/.bin/node-which.cmd b/node_modules/.bin/node-which.cmd new file mode 100644 index 0000000..8738aed --- /dev/null +++ b/node_modules/.bin/node-which.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\which\bin\node-which" %* diff --git a/node_modules/.bin/node-which.ps1 b/node_modules/.bin/node-which.ps1 new file mode 100644 index 0000000..cfb09e8 --- /dev/null +++ b/node_modules/.bin/node-which.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args + } else { + & "$basedir/node$exe" "$basedir/../which/bin/node-which" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../which/bin/node-which" $args + } else { + & "node$exe" "$basedir/../which/bin/node-which" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/parser b/node_modules/.bin/parser new file mode 100644 index 0000000..7696ad4 --- /dev/null +++ b/node_modules/.bin/parser @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../@babel/parser/bin/babel-parser.js" "$@" +else + exec node "$basedir/../@babel/parser/bin/babel-parser.js" "$@" +fi diff --git a/node_modules/.bin/parser.cmd b/node_modules/.bin/parser.cmd new file mode 100644 index 0000000..1ad5c81 --- /dev/null +++ b/node_modules/.bin/parser.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\@babel\parser\bin\babel-parser.js" %* diff --git a/node_modules/.bin/parser.ps1 b/node_modules/.bin/parser.ps1 new file mode 100644 index 0000000..8926517 --- /dev/null +++ b/node_modules/.bin/parser.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } else { + & "$basedir/node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } else { + & "node$exe" "$basedir/../@babel/parser/bin/babel-parser.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/rollup b/node_modules/.bin/rollup new file mode 100644 index 0000000..998fc16 --- /dev/null +++ b/node_modules/.bin/rollup @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../rollup/dist/bin/rollup" "$@" +else + exec node "$basedir/../rollup/dist/bin/rollup" "$@" +fi diff --git a/node_modules/.bin/rollup.cmd b/node_modules/.bin/rollup.cmd new file mode 100644 index 0000000..b3f110b --- /dev/null +++ b/node_modules/.bin/rollup.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\rollup\dist\bin\rollup" %* diff --git a/node_modules/.bin/rollup.ps1 b/node_modules/.bin/rollup.ps1 new file mode 100644 index 0000000..10f657d --- /dev/null +++ b/node_modules/.bin/rollup.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } else { + & "$basedir/node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } else { + & "node$exe" "$basedir/../rollup/dist/bin/rollup" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver new file mode 100644 index 0000000..97c5327 --- /dev/null +++ b/node_modules/.bin/semver @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../semver/bin/semver.js" "$@" +else + exec node "$basedir/../semver/bin/semver.js" "$@" +fi diff --git a/node_modules/.bin/semver.cmd b/node_modules/.bin/semver.cmd new file mode 100644 index 0000000..9913fa9 --- /dev/null +++ b/node_modules/.bin/semver.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\semver\bin\semver.js" %* diff --git a/node_modules/.bin/semver.ps1 b/node_modules/.bin/semver.ps1 new file mode 100644 index 0000000..314717a --- /dev/null +++ b/node_modules/.bin/semver.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args + } else { + & "$basedir/node$exe" "$basedir/../semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../semver/bin/semver.js" $args + } else { + & "node$exe" "$basedir/../semver/bin/semver.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/vite b/node_modules/.bin/vite new file mode 100644 index 0000000..014463f --- /dev/null +++ b/node_modules/.bin/vite @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@" +else + exec node "$basedir/../vite/bin/vite.js" "$@" +fi diff --git a/node_modules/.bin/vite-node b/node_modules/.bin/vite-node new file mode 100644 index 0000000..4a9ad46 --- /dev/null +++ b/node_modules/.bin/vite-node @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../vite-node/vite-node.mjs" "$@" +else + exec node "$basedir/../vite-node/vite-node.mjs" "$@" +fi diff --git a/node_modules/.bin/vite-node.cmd b/node_modules/.bin/vite-node.cmd new file mode 100644 index 0000000..1532ec6 --- /dev/null +++ b/node_modules/.bin/vite-node.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite-node\vite-node.mjs" %* diff --git a/node_modules/.bin/vite-node.ps1 b/node_modules/.bin/vite-node.ps1 new file mode 100644 index 0000000..ce244c0 --- /dev/null +++ b/node_modules/.bin/vite-node.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../vite-node/vite-node.mjs" $args + } else { + & "$basedir/node$exe" "$basedir/../vite-node/vite-node.mjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../vite-node/vite-node.mjs" $args + } else { + & "node$exe" "$basedir/../vite-node/vite-node.mjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/vite.cmd b/node_modules/.bin/vite.cmd new file mode 100644 index 0000000..f62e966 --- /dev/null +++ b/node_modules/.bin/vite.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vite\bin\vite.js" %* diff --git a/node_modules/.bin/vite.ps1 b/node_modules/.bin/vite.ps1 new file mode 100644 index 0000000..a7759bc --- /dev/null +++ b/node_modules/.bin/vite.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "$basedir/node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../vite/bin/vite.js" $args + } else { + & "node$exe" "$basedir/../vite/bin/vite.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/vitest b/node_modules/.bin/vitest new file mode 100644 index 0000000..5c079d2 --- /dev/null +++ b/node_modules/.bin/vitest @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../vitest/vitest.mjs" "$@" +else + exec node "$basedir/../vitest/vitest.mjs" "$@" +fi diff --git a/node_modules/.bin/vitest.cmd b/node_modules/.bin/vitest.cmd new file mode 100644 index 0000000..fe3aa2b --- /dev/null +++ b/node_modules/.bin/vitest.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\vitest\vitest.mjs" %* diff --git a/node_modules/.bin/vitest.ps1 b/node_modules/.bin/vitest.ps1 new file mode 100644 index 0000000..13410d6 --- /dev/null +++ b/node_modules/.bin/vitest.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../vitest/vitest.mjs" $args + } else { + & "$basedir/node$exe" "$basedir/../vitest/vitest.mjs" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../vitest/vitest.mjs" $args + } else { + & "node$exe" "$basedir/../vitest/vitest.mjs" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.bin/why-is-node-running b/node_modules/.bin/why-is-node-running new file mode 100644 index 0000000..f908619 --- /dev/null +++ b/node_modules/.bin/why-is-node-running @@ -0,0 +1,16 @@ +#!/bin/sh +basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") + +case `uname` in + *CYGWIN*|*MINGW*|*MSYS*) + if command -v cygpath > /dev/null 2>&1; then + basedir=`cygpath -w "$basedir"` + fi + ;; +esac + +if [ -x "$basedir/node" ]; then + exec "$basedir/node" "$basedir/../why-is-node-running/cli.js" "$@" +else + exec node "$basedir/../why-is-node-running/cli.js" "$@" +fi diff --git a/node_modules/.bin/why-is-node-running.cmd b/node_modules/.bin/why-is-node-running.cmd new file mode 100644 index 0000000..77675cf --- /dev/null +++ b/node_modules/.bin/why-is-node-running.cmd @@ -0,0 +1,17 @@ +@ECHO off +GOTO start +:find_dp0 +SET dp0=%~dp0 +EXIT /b +:start +SETLOCAL +CALL :find_dp0 + +IF EXIST "%dp0%\node.exe" ( + SET "_prog=%dp0%\node.exe" +) ELSE ( + SET "_prog=node" + SET PATHEXT=%PATHEXT:;.JS;=;% +) + +endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\why-is-node-running\cli.js" %* diff --git a/node_modules/.bin/why-is-node-running.ps1 b/node_modules/.bin/why-is-node-running.ps1 new file mode 100644 index 0000000..ea56de1 --- /dev/null +++ b/node_modules/.bin/why-is-node-running.ps1 @@ -0,0 +1,28 @@ +#!/usr/bin/env pwsh +$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent + +$exe="" +if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) { + # Fix case when both the Windows and Linux builds of Node + # are installed in the same directory + $exe=".exe" +} +$ret=0 +if (Test-Path "$basedir/node$exe") { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "$basedir/node$exe" "$basedir/../why-is-node-running/cli.js" $args + } else { + & "$basedir/node$exe" "$basedir/../why-is-node-running/cli.js" $args + } + $ret=$LASTEXITCODE +} else { + # Support pipeline input + if ($MyInvocation.ExpectingInput) { + $input | & "node$exe" "$basedir/../why-is-node-running/cli.js" $args + } else { + & "node$exe" "$basedir/../why-is-node-running/cli.js" $args + } + $ret=$LASTEXITCODE +} +exit $ret diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..7da5e05 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,3058 @@ +{ + "name": "javinfo", + "version": "1.0.2", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmmirror.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmmirror.com/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", + "cpu": [ + "arm" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "cpu": [ + "arm" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "cpu": [ + "arm" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "cpu": [ + "loong64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", + "cpu": [ + "s390x" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", + "cpu": [ + "x64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", + "cpu": [ + "ia32" + ], + "dev": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.10", + "resolved": "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.27.10.tgz", + "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/coverage-v8": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@vitest/coverage-v8/-/coverage-v8-1.6.1.tgz", + "integrity": "sha512-6YeRZwuO4oTGKxD3bijok756oktHSIm3eczVVzNe3scqzuhLwltIF3S9ZL/vwOVIpURmU6SnZhziXXAfw8/Qlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.4", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.3", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "test-exclude": "^6.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "1.6.1" + } + }, + "node_modules/@vitest/expect": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@vitest/expect/-/expect-1.6.1.tgz", + "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@vitest/runner/-/runner-1.6.1.tgz", + "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "1.6.1", + "p-limit": "^5.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@vitest/snapshot/-/snapshot-1.6.1.tgz", + "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@vitest/spy/-/spy-1.6.1.tgz", + "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^2.2.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/@vitest/utils/-/utils-1.6.1.tgz", + "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.13.6", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.13.6.tgz", + "integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmmirror.com/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmmirror.com/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "ideallyInert": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmmirror.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/local-pkg": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz", + "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.3", + "pkg-types": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmmirror.com/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmmirror.com/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmmirror.com/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmmirror.com/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rollup": { + "version": "4.59.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.1.tgz", + "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinypool": { + "version": "0.8.4", + "resolved": "https://registry.npmmirror.com/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmmirror.com/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici": { + "version": "7.24.5", + "resolved": "https://registry.npmmirror.com/undici/-/undici-7.24.5.tgz", + "integrity": "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmmirror.com/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/vite-node/-/vite-node-1.6.1.tgz", + "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^5.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vitest": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/vitest/-/vitest-1.6.1.tgz", + "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "1.6.1", + "@vitest/runner": "1.6.1", + "@vitest/snapshot": "1.6.1", + "@vitest/spy": "1.6.1", + "@vitest/utils": "1.6.1", + "acorn-walk": "^8.3.2", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.3", + "vite": "^5.0.0", + "vite-node": "1.6.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "1.6.1", + "@vitest/ui": "1.6.1", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/node_modules/@ampproject/remapping/LICENSE b/node_modules/@ampproject/remapping/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/node_modules/@ampproject/remapping/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/@ampproject/remapping/README.md b/node_modules/@ampproject/remapping/README.md new file mode 100644 index 0000000..1463c9f --- /dev/null +++ b/node_modules/@ampproject/remapping/README.md @@ -0,0 +1,218 @@ +# @ampproject/remapping + +> Remap sequential sourcemaps through transformations to point at the original source code + +Remapping allows you to take the sourcemaps generated through transforming your code and "remap" +them to the original source locations. Think "my minified code, transformed with babel and bundled +with webpack", all pointing to the correct location in your original source code. + +With remapping, none of your source code transformations need to be aware of the input's sourcemap, +they only need to generate an output sourcemap. This greatly simplifies building custom +transformations (think a find-and-replace). + +## Installation + +```sh +npm install @ampproject/remapping +``` + +## Usage + +```typescript +function remapping( + map: SourceMap | SourceMap[], + loader: (file: string, ctx: LoaderContext) => (SourceMap | null | undefined), + options?: { excludeContent: boolean, decodedMappings: boolean } +): SourceMap; + +// LoaderContext gives the loader the importing sourcemap, tree depth, the ability to override the +// "source" location (where child sources are resolved relative to, or the location of original +// source), and the ability to override the "content" of an original source for inclusion in the +// output sourcemap. +type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; +} +``` + +`remapping` takes the final output sourcemap, and a `loader` function. For every source file pointer +in the sourcemap, the `loader` will be called with the resolved path. If the path itself represents +a transformed file (it has a sourcmap associated with it), then the `loader` should return that +sourcemap. If not, the path will be treated as an original, untransformed source code. + +```js +// Babel transformed "helloworld.js" into "transformed.js" +const transformedMap = JSON.stringify({ + file: 'transformed.js', + // 1st column of 2nd line of output file translates into the 1st source + // file, line 3, column 2 + mappings: ';CAEE', + sources: ['helloworld.js'], + version: 3, +}); + +// Uglify minified "transformed.js" into "transformed.min.js" +const minifiedTransformedMap = JSON.stringify({ + file: 'transformed.min.js', + // 0th column of 1st line of output file translates into the 1st source + // file, line 2, column 1. + mappings: 'AACC', + names: [], + sources: ['transformed.js'], + version: 3, +}); + +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + // The "transformed.js" file is an transformed file. + if (file === 'transformed.js') { + // The root importer is empty. + console.assert(ctx.importer === ''); + // The depth in the sourcemap tree we're currently loading. + // The root `minifiedTransformedMap` is depth 0, and its source children are depth 1, etc. + console.assert(ctx.depth === 1); + + return transformedMap; + } + + // Loader will be called to load transformedMap's source file pointers as well. + console.assert(file === 'helloworld.js'); + // `transformed.js`'s sourcemap points into `helloworld.js`. + console.assert(ctx.importer === 'transformed.js'); + // This is a source child of `transformed`, which is a source child of `minifiedTransformedMap`. + console.assert(ctx.depth === 2); + return null; + } +); + +console.log(remapped); +// { +// file: 'transpiled.min.js', +// mappings: 'AAEE', +// sources: ['helloworld.js'], +// version: 3, +// }; +``` + +In this example, `loader` will be called twice: + +1. `"transformed.js"`, the first source file pointer in the `minifiedTransformedMap`. We return the + associated sourcemap for it (its a transformed file, after all) so that sourcemap locations can + be traced through it into the source files it represents. +2. `"helloworld.js"`, our original, unmodified source code. This file does not have a sourcemap, so + we return `null`. + +The `remapped` sourcemap now points from `transformed.min.js` into locations in `helloworld.js`. If +you were to read the `mappings`, it says "0th column of the first line output line points to the 1st +column of the 2nd line of the file `helloworld.js`". + +### Multiple transformations of a file + +As a convenience, if you have multiple single-source transformations of a file, you may pass an +array of sourcemap files in the order of most-recent transformation sourcemap first. Note that this +changes the `importer` and `depth` of each call to our loader. So our above example could have been +written as: + +```js +const remapped = remapping( + [minifiedTransformedMap, transformedMap], + () => null +); + +console.log(remapped); +// { +// file: 'transpiled.min.js', +// mappings: 'AAEE', +// sources: ['helloworld.js'], +// version: 3, +// }; +``` + +### Advanced control of the loading graph + +#### `source` + +The `source` property can overridden to any value to change the location of the current load. Eg, +for an original source file, it allows us to change the location to the original source regardless +of what the sourcemap source entry says. And for transformed files, it allows us to change the +relative resolving location for child sources of the loaded sourcemap. + +```js +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + if (file === 'transformed.js') { + // We pretend the transformed.js file actually exists in the 'src/' directory. When the nested + // source files are loaded, they will now be relative to `src/`. + ctx.source = 'src/transformed.js'; + return transformedMap; + } + + console.assert(file === 'src/helloworld.js'); + // We could futher change the source of this original file, eg, to be inside a nested directory + // itself. This will be reflected in the remapped sourcemap. + ctx.source = 'src/nested/transformed.js'; + return null; + } +); + +console.log(remapped); +// { +// …, +// sources: ['src/nested/helloworld.js'], +// }; +``` + + +#### `content` + +The `content` property can be overridden when we encounter an original source file. Eg, this allows +you to manually provide the source content of the original file regardless of whether the +`sourcesContent` field is present in the parent sourcemap. It can also be set to `null` to remove +the source content. + +```js +const remapped = remapping( + minifiedTransformedMap, + (file, ctx) => { + + if (file === 'transformed.js') { + // transformedMap does not include a `sourcesContent` field, so usually the remapped sourcemap + // would not include any `sourcesContent` values. + return transformedMap; + } + + console.assert(file === 'helloworld.js'); + // We can read the file to provide the source content. + ctx.content = fs.readFileSync(file, 'utf8'); + return null; + } +); + +console.log(remapped); +// { +// …, +// sourcesContent: [ +// 'console.log("Hello world!")', +// ], +// }; +``` + +### Options + +#### excludeContent + +By default, `excludeContent` is `false`. Passing `{ excludeContent: true }` will exclude the +`sourcesContent` field from the returned sourcemap. This is mainly useful when you want to reduce +the size out the sourcemap. + +#### decodedMappings + +By default, `decodedMappings` is `false`. Passing `{ decodedMappings: true }` will leave the +`mappings` field in a [decoded state](https://github.com/rich-harris/sourcemap-codec) instead of +encoding into a VLQ string. diff --git a/node_modules/@ampproject/remapping/dist/remapping.mjs b/node_modules/@ampproject/remapping/dist/remapping.mjs new file mode 100644 index 0000000..f387599 --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/remapping.mjs @@ -0,0 +1,197 @@ +import { decodedMappings, traceSegment, TraceMap } from '@jridgewell/trace-mapping'; +import { GenMapping, maybeAddSegment, setSourceContent, setIgnore, toDecodedMap, toEncodedMap } from '@jridgewell/gen-mapping'; + +const SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false); +const EMPTY_SOURCES = []; +function SegmentObject(source, line, column, name, content, ignore) { + return { source, line, column, name, content, ignore }; +} +function Source(map, sources, source, content, ignore) { + return { + map, + sources, + source, + content, + ignore, + }; +} +/** + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). + */ +function MapSource(map, sources) { + return Source(map, sources, '', null, false); +} +/** + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. + */ +function OriginalSource(source, content, ignore) { + return Source(null, EMPTY_SOURCES, source, content, ignore); +} +/** + * traceMappings is only called on the root level SourceMapTree, and begins the process of + * resolving each mapping in terms of the original source files. + */ +function traceMappings(tree) { + // TODO: Eventually support sourceRoot, which has to be removed because the sources are already + // fully resolved. We'll need to make sources relative to the sourceRoot before adding them. + const gen = new GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = decodedMappings(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length !== 1) { + const source = rootSources[segment[1]]; + traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ''); + // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a + // respective segment into an original source. + if (traced == null) + continue; + } + const { column, line, name, content, source, ignore } = traced; + maybeAddSegment(gen, i, genCol, source, line, column, name); + if (source && content != null) + setSourceContent(gen, source, content); + if (ignore) + setIgnore(gen, source, true); + } + } + return gen; +} +/** + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. + */ +function originalPositionFor(source, line, column, name) { + if (!source.map) { + return SegmentObject(source.source, line, column, name, source.content, source.ignore); + } + const segment = traceSegment(source.map, line, column); + // If we couldn't find a segment, then this doesn't exist in the sourcemap. + if (segment == null) + return null; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length === 1) + return SOURCELESS_MAPPING; + return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name); +} + +function asArray(value) { + if (Array.isArray(value)) + return value; + return [value]; +} +/** + * Recursively builds a tree structure out of sourcemap files, with each node + * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of + * `OriginalSource`s and `SourceMapTree`s. + * + * Every sourcemap is composed of a collection of source files and mappings + * into locations of those source files. When we generate a `SourceMapTree` for + * the sourcemap, we attempt to load each source file's own sourcemap. If it + * does not have an associated sourcemap, it is considered an original, + * unmodified source file. + */ +function buildSourceMapTree(input, loader) { + const maps = asArray(input).map((m) => new TraceMap(m, '')); + const map = maps.pop(); + for (let i = 0; i < maps.length; i++) { + if (maps[i].sources.length > 1) { + throw new Error(`Transformation map ${i} must have exactly one source file.\n` + + 'Did you specify these with the most recent transformation maps first?'); + } + } + let tree = build(map, loader, '', 0); + for (let i = maps.length - 1; i >= 0; i--) { + tree = MapSource(maps[i], [tree]); + } + return tree; +} +function build(map, loader, importer, importerDepth) { + const { resolvedSources, sourcesContent, ignoreList } = map; + const depth = importerDepth + 1; + const children = resolvedSources.map((sourceFile, i) => { + // The loading context gives the loader more information about why this file is being loaded + // (eg, from which importer). It also allows the loader to override the location of the loaded + // sourcemap/original source, or to override the content in the sourcesContent field if it's + // an unmodified source file. + const ctx = { + importer, + depth, + source: sourceFile || '', + content: undefined, + ignore: undefined, + }; + // Use the provided loader callback to retrieve the file's sourcemap. + // TODO: We should eventually support async loading of sourcemap files. + const sourceMap = loader(ctx.source, ctx); + const { source, content, ignore } = ctx; + // If there is a sourcemap, then we need to recurse into it to load its source files. + if (sourceMap) + return build(new TraceMap(sourceMap, source), loader, source, depth); + // Else, it's an unmodified source file. + // The contents of this unmodified source file can be overridden via the loader context, + // allowing it to be explicitly null or a string. If it remains undefined, we fall back to + // the importing sourcemap's `sourcesContent` field. + const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; + const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false; + return OriginalSource(source, sourceContent, ignored); + }); + return MapSource(map, children); +} + +/** + * A SourceMap v3 compatible sourcemap, which only includes fields that were + * provided to it. + */ +class SourceMap { + constructor(map, options) { + const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map); + this.version = out.version; // SourceMap spec says this should be first. + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.ignoreList = out.ignoreList; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent; + } + } + toString() { + return JSON.stringify(this); + } +} + +/** + * Traces through all the mappings in the root sourcemap, through the sources + * (and their sourcemaps), all the way back to the original source location. + * + * `loader` will be called every time we encounter a source file. If it returns + * a sourcemap, we will recurse into that sourcemap to continue the trace. If + * it returns a falsey value, that source file is treated as an original, + * unmodified source file. + * + * Pass `excludeContent` to exclude any self-containing source file content + * from the output sourcemap. + * + * Pass `decodedMappings` to receive a SourceMap with decoded (instead of + * VLQ encoded) mappings. + */ +function remapping(input, loader, options) { + const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false }; + const tree = buildSourceMapTree(input, loader); + return new SourceMap(traceMappings(tree), opts); +} + +export { remapping as default }; +//# sourceMappingURL=remapping.mjs.map diff --git a/node_modules/@ampproject/remapping/dist/remapping.mjs.map b/node_modules/@ampproject/remapping/dist/remapping.mjs.map new file mode 100644 index 0000000..0eb007b --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/remapping.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"remapping.mjs","sources":["../src/source-map-tree.ts","../src/build-source-map-tree.ts","../src/source-map.ts","../src/remapping.ts"],"sourcesContent":["import { GenMapping, maybeAddSegment, setIgnore, setSourceContent } from '@jridgewell/gen-mapping';\nimport { traceSegment, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport type { TraceMap } from '@jridgewell/trace-mapping';\n\nexport type SourceMapSegmentObject = {\n column: number;\n line: number;\n name: string;\n source: string;\n content: string | null;\n ignore: boolean;\n};\n\nexport type OriginalSource = {\n map: null;\n sources: Sources[];\n source: string;\n content: string | null;\n ignore: boolean;\n};\n\nexport type MapSource = {\n map: TraceMap;\n sources: Sources[];\n source: string;\n content: null;\n ignore: false;\n};\n\nexport type Sources = OriginalSource | MapSource;\n\nconst SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false);\nconst EMPTY_SOURCES: Sources[] = [];\n\nfunction SegmentObject(\n source: string,\n line: number,\n column: number,\n name: string,\n content: string | null,\n ignore: boolean\n): SourceMapSegmentObject {\n return { source, line, column, name, content, ignore };\n}\n\nfunction Source(\n map: TraceMap,\n sources: Sources[],\n source: '',\n content: null,\n ignore: false\n): MapSource;\nfunction Source(\n map: null,\n sources: Sources[],\n source: string,\n content: string | null,\n ignore: boolean\n): OriginalSource;\nfunction Source(\n map: TraceMap | null,\n sources: Sources[],\n source: string | '',\n content: string | null,\n ignore: boolean\n): Sources {\n return {\n map,\n sources,\n source,\n content,\n ignore,\n } as any;\n}\n\n/**\n * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes\n * (which may themselves be SourceMapTrees).\n */\nexport function MapSource(map: TraceMap, sources: Sources[]): MapSource {\n return Source(map, sources, '', null, false);\n}\n\n/**\n * A \"leaf\" node in the sourcemap tree, representing an original, unmodified source file. Recursive\n * segment tracing ends at the `OriginalSource`.\n */\nexport function OriginalSource(\n source: string,\n content: string | null,\n ignore: boolean\n): OriginalSource {\n return Source(null, EMPTY_SOURCES, source, content, ignore);\n}\n\n/**\n * traceMappings is only called on the root level SourceMapTree, and begins the process of\n * resolving each mapping in terms of the original source files.\n */\nexport function traceMappings(tree: MapSource): GenMapping {\n // TODO: Eventually support sourceRoot, which has to be removed because the sources are already\n // fully resolved. We'll need to make sources relative to the sourceRoot before adding them.\n const gen = new GenMapping({ file: tree.map.file });\n const { sources: rootSources, map } = tree;\n const rootNames = map.names;\n const rootMappings = decodedMappings(map);\n\n for (let i = 0; i < rootMappings.length; i++) {\n const segments = rootMappings[i];\n\n for (let j = 0; j < segments.length; j++) {\n const segment = segments[j];\n const genCol = segment[0];\n let traced: SourceMapSegmentObject | null = SOURCELESS_MAPPING;\n\n // 1-length segments only move the current generated column, there's no source information\n // to gather from it.\n if (segment.length !== 1) {\n const source = rootSources[segment[1]];\n traced = originalPositionFor(\n source,\n segment[2],\n segment[3],\n segment.length === 5 ? rootNames[segment[4]] : ''\n );\n\n // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a\n // respective segment into an original source.\n if (traced == null) continue;\n }\n\n const { column, line, name, content, source, ignore } = traced;\n\n maybeAddSegment(gen, i, genCol, source, line, column, name);\n if (source && content != null) setSourceContent(gen, source, content);\n if (ignore) setIgnore(gen, source, true);\n }\n }\n\n return gen;\n}\n\n/**\n * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own\n * child SourceMapTrees, until we find the original source map.\n */\nexport function originalPositionFor(\n source: Sources,\n line: number,\n column: number,\n name: string\n): SourceMapSegmentObject | null {\n if (!source.map) {\n return SegmentObject(source.source, line, column, name, source.content, source.ignore);\n }\n\n const segment = traceSegment(source.map, line, column);\n\n // If we couldn't find a segment, then this doesn't exist in the sourcemap.\n if (segment == null) return null;\n // 1-length segments only move the current generated column, there's no source information\n // to gather from it.\n if (segment.length === 1) return SOURCELESS_MAPPING;\n\n return originalPositionFor(\n source.sources[segment[1]],\n segment[2],\n segment[3],\n segment.length === 5 ? source.map.names[segment[4]] : name\n );\n}\n","import { TraceMap } from '@jridgewell/trace-mapping';\n\nimport { OriginalSource, MapSource } from './source-map-tree';\n\nimport type { Sources, MapSource as MapSourceType } from './source-map-tree';\nimport type { SourceMapInput, SourceMapLoader, LoaderContext } from './types';\n\nfunction asArray(value: T | T[]): T[] {\n if (Array.isArray(value)) return value;\n return [value];\n}\n\n/**\n * Recursively builds a tree structure out of sourcemap files, with each node\n * being either an `OriginalSource` \"leaf\" or a `SourceMapTree` composed of\n * `OriginalSource`s and `SourceMapTree`s.\n *\n * Every sourcemap is composed of a collection of source files and mappings\n * into locations of those source files. When we generate a `SourceMapTree` for\n * the sourcemap, we attempt to load each source file's own sourcemap. If it\n * does not have an associated sourcemap, it is considered an original,\n * unmodified source file.\n */\nexport default function buildSourceMapTree(\n input: SourceMapInput | SourceMapInput[],\n loader: SourceMapLoader\n): MapSourceType {\n const maps = asArray(input).map((m) => new TraceMap(m, ''));\n const map = maps.pop()!;\n\n for (let i = 0; i < maps.length; i++) {\n if (maps[i].sources.length > 1) {\n throw new Error(\n `Transformation map ${i} must have exactly one source file.\\n` +\n 'Did you specify these with the most recent transformation maps first?'\n );\n }\n }\n\n let tree = build(map, loader, '', 0);\n for (let i = maps.length - 1; i >= 0; i--) {\n tree = MapSource(maps[i], [tree]);\n }\n return tree;\n}\n\nfunction build(\n map: TraceMap,\n loader: SourceMapLoader,\n importer: string,\n importerDepth: number\n): MapSourceType {\n const { resolvedSources, sourcesContent, ignoreList } = map;\n\n const depth = importerDepth + 1;\n const children = resolvedSources.map((sourceFile: string | null, i: number): Sources => {\n // The loading context gives the loader more information about why this file is being loaded\n // (eg, from which importer). It also allows the loader to override the location of the loaded\n // sourcemap/original source, or to override the content in the sourcesContent field if it's\n // an unmodified source file.\n const ctx: LoaderContext = {\n importer,\n depth,\n source: sourceFile || '',\n content: undefined,\n ignore: undefined,\n };\n\n // Use the provided loader callback to retrieve the file's sourcemap.\n // TODO: We should eventually support async loading of sourcemap files.\n const sourceMap = loader(ctx.source, ctx);\n\n const { source, content, ignore } = ctx;\n\n // If there is a sourcemap, then we need to recurse into it to load its source files.\n if (sourceMap) return build(new TraceMap(sourceMap, source), loader, source, depth);\n\n // Else, it's an unmodified source file.\n // The contents of this unmodified source file can be overridden via the loader context,\n // allowing it to be explicitly null or a string. If it remains undefined, we fall back to\n // the importing sourcemap's `sourcesContent` field.\n const sourceContent =\n content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;\n const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false;\n return OriginalSource(source, sourceContent, ignored);\n });\n\n return MapSource(map, children);\n}\n","import { toDecodedMap, toEncodedMap } from '@jridgewell/gen-mapping';\n\nimport type { GenMapping } from '@jridgewell/gen-mapping';\nimport type { DecodedSourceMap, EncodedSourceMap, Options } from './types';\n\n/**\n * A SourceMap v3 compatible sourcemap, which only includes fields that were\n * provided to it.\n */\nexport default class SourceMap {\n declare file?: string | null;\n declare mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings'];\n declare sourceRoot?: string;\n declare names: string[];\n declare sources: (string | null)[];\n declare sourcesContent?: (string | null)[];\n declare version: 3;\n declare ignoreList: number[] | undefined;\n\n constructor(map: GenMapping, options: Options) {\n const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map);\n this.version = out.version; // SourceMap spec says this should be first.\n this.file = out.file;\n this.mappings = out.mappings as SourceMap['mappings'];\n this.names = out.names as SourceMap['names'];\n this.ignoreList = out.ignoreList as SourceMap['ignoreList'];\n this.sourceRoot = out.sourceRoot;\n\n this.sources = out.sources as SourceMap['sources'];\n if (!options.excludeContent) {\n this.sourcesContent = out.sourcesContent as SourceMap['sourcesContent'];\n }\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n}\n","import buildSourceMapTree from './build-source-map-tree';\nimport { traceMappings } from './source-map-tree';\nimport SourceMap from './source-map';\n\nimport type { SourceMapInput, SourceMapLoader, Options } from './types';\nexport type {\n SourceMapSegment,\n EncodedSourceMap,\n EncodedSourceMap as RawSourceMap,\n DecodedSourceMap,\n SourceMapInput,\n SourceMapLoader,\n LoaderContext,\n Options,\n} from './types';\nexport type { SourceMap };\n\n/**\n * Traces through all the mappings in the root sourcemap, through the sources\n * (and their sourcemaps), all the way back to the original source location.\n *\n * `loader` will be called every time we encounter a source file. If it returns\n * a sourcemap, we will recurse into that sourcemap to continue the trace. If\n * it returns a falsey value, that source file is treated as an original,\n * unmodified source file.\n *\n * Pass `excludeContent` to exclude any self-containing source file content\n * from the output sourcemap.\n *\n * Pass `decodedMappings` to receive a SourceMap with decoded (instead of\n * VLQ encoded) mappings.\n */\nexport default function remapping(\n input: SourceMapInput | SourceMapInput[],\n loader: SourceMapLoader,\n options?: boolean | Options\n): SourceMap {\n const opts =\n typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };\n const tree = buildSourceMapTree(input, loader);\n return new SourceMap(traceMappings(tree), opts);\n}\n"],"names":[],"mappings":";;;AAgCA,MAAM,kBAAkB,mBAAmB,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACtF,MAAM,aAAa,GAAc,EAAE,CAAC;AAEpC,SAAS,aAAa,CACpB,MAAc,EACd,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,OAAsB,EACtB,MAAe,EAAA;AAEf,IAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACzD,CAAC;AAgBD,SAAS,MAAM,CACb,GAAoB,EACpB,OAAkB,EAClB,MAAmB,EACnB,OAAsB,EACtB,MAAe,EAAA;IAEf,OAAO;QACL,GAAG;QACH,OAAO;QACP,MAAM;QACN,OAAO;QACP,MAAM;KACA,CAAC;AACX,CAAC;AAED;;;AAGG;AACa,SAAA,SAAS,CAAC,GAAa,EAAE,OAAkB,EAAA;AACzD,IAAA,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;AAGG;SACa,cAAc,CAC5B,MAAc,EACd,OAAsB,EACtB,MAAe,EAAA;AAEf,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED;;;AAGG;AACG,SAAU,aAAa,CAAC,IAAe,EAAA;;;AAG3C,IAAA,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3C,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;AAC5B,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;AAE1C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAEjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxC,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5B,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAM,GAAkC,kBAAkB,CAAC;;;AAI/D,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACxB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,gBAAA,MAAM,GAAG,mBAAmB,CAC1B,MAAM,EACN,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAClD,CAAC;;;gBAIF,IAAI,MAAM,IAAI,IAAI;oBAAE,SAAS;AAC9B,aAAA;AAED,YAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AAE/D,YAAA,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,YAAA,IAAI,MAAM,IAAI,OAAO,IAAI,IAAI;AAAE,gBAAA,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtE,YAAA,IAAI,MAAM;AAAE,gBAAA,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C,SAAA;AACF,KAAA;AAED,IAAA,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;AAGG;AACG,SAAU,mBAAmB,CACjC,MAAe,EACf,IAAY,EACZ,MAAc,EACd,IAAY,EAAA;AAEZ,IAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACf,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACxF,KAAA;AAED,IAAA,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;;IAGvD,IAAI,OAAO,IAAI,IAAI;AAAE,QAAA,OAAO,IAAI,CAAC;;;AAGjC,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,kBAAkB,CAAC;IAEpD,OAAO,mBAAmB,CACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC1B,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAC3D,CAAC;AACJ;;ACpKA,SAAS,OAAO,CAAI,KAAc,EAAA;AAChC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AAAE,QAAA,OAAO,KAAK,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;;;;;AAUG;AACW,SAAU,kBAAkB,CACxC,KAAwC,EACxC,MAAuB,EAAA;IAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5D,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;AAExB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,mBAAA,EAAsB,CAAC,CAAuC,qCAAA,CAAA;AAC5D,gBAAA,uEAAuE,CAC1E,CAAC;AACH,SAAA;AACF,KAAA;AAED,IAAA,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACrC,IAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACzC,QAAA,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,KAAK,CACZ,GAAa,EACb,MAAuB,EACvB,QAAgB,EAChB,aAAqB,EAAA;IAErB,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;AAE5D,IAAA,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,UAAyB,EAAE,CAAS,KAAa;;;;;AAKrF,QAAA,MAAM,GAAG,GAAkB;YACzB,QAAQ;YACR,KAAK;YACL,MAAM,EAAE,UAAU,IAAI,EAAE;AACxB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,SAAS;SAClB,CAAC;;;QAIF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;;AAGxC,QAAA,IAAI,SAAS;AAAE,YAAA,OAAO,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;;;;;QAMpF,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9E,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAC5F,OAAO,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACxD,KAAC,CAAC,CAAC;AAEH,IAAA,OAAO,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAClC;;ACnFA;;;AAGG;AACW,MAAO,SAAS,CAAA;IAU5B,WAAY,CAAA,GAAe,EAAE,OAAgB,EAAA;AAC3C,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAiC,CAAC;AACtD,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAA2B,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAqC,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AAEjC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAA+B,CAAC;AACnD,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;AAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAA6C,CAAC;AACzE,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAC7B;AACF;;ACpBD;;;;;;;;;;;;;;AAcG;AACqB,SAAA,SAAS,CAC/B,KAAwC,EACxC,MAAuB,EACvB,OAA2B,EAAA;IAE3B,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;IAChG,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClD;;;;"} \ No newline at end of file diff --git a/node_modules/@ampproject/remapping/dist/remapping.umd.js b/node_modules/@ampproject/remapping/dist/remapping.umd.js new file mode 100644 index 0000000..6b7b3bb --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/remapping.umd.js @@ -0,0 +1,202 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@jridgewell/trace-mapping'), require('@jridgewell/gen-mapping')) : + typeof define === 'function' && define.amd ? define(['@jridgewell/trace-mapping', '@jridgewell/gen-mapping'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.remapping = factory(global.traceMapping, global.genMapping)); +})(this, (function (traceMapping, genMapping) { 'use strict'; + + const SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false); + const EMPTY_SOURCES = []; + function SegmentObject(source, line, column, name, content, ignore) { + return { source, line, column, name, content, ignore }; + } + function Source(map, sources, source, content, ignore) { + return { + map, + sources, + source, + content, + ignore, + }; + } + /** + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). + */ + function MapSource(map, sources) { + return Source(map, sources, '', null, false); + } + /** + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. + */ + function OriginalSource(source, content, ignore) { + return Source(null, EMPTY_SOURCES, source, content, ignore); + } + /** + * traceMappings is only called on the root level SourceMapTree, and begins the process of + * resolving each mapping in terms of the original source files. + */ + function traceMappings(tree) { + // TODO: Eventually support sourceRoot, which has to be removed because the sources are already + // fully resolved. We'll need to make sources relative to the sourceRoot before adding them. + const gen = new genMapping.GenMapping({ file: tree.map.file }); + const { sources: rootSources, map } = tree; + const rootNames = map.names; + const rootMappings = traceMapping.decodedMappings(map); + for (let i = 0; i < rootMappings.length; i++) { + const segments = rootMappings[i]; + for (let j = 0; j < segments.length; j++) { + const segment = segments[j]; + const genCol = segment[0]; + let traced = SOURCELESS_MAPPING; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length !== 1) { + const source = rootSources[segment[1]]; + traced = originalPositionFor(source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : ''); + // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a + // respective segment into an original source. + if (traced == null) + continue; + } + const { column, line, name, content, source, ignore } = traced; + genMapping.maybeAddSegment(gen, i, genCol, source, line, column, name); + if (source && content != null) + genMapping.setSourceContent(gen, source, content); + if (ignore) + genMapping.setIgnore(gen, source, true); + } + } + return gen; + } + /** + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. + */ + function originalPositionFor(source, line, column, name) { + if (!source.map) { + return SegmentObject(source.source, line, column, name, source.content, source.ignore); + } + const segment = traceMapping.traceSegment(source.map, line, column); + // If we couldn't find a segment, then this doesn't exist in the sourcemap. + if (segment == null) + return null; + // 1-length segments only move the current generated column, there's no source information + // to gather from it. + if (segment.length === 1) + return SOURCELESS_MAPPING; + return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name); + } + + function asArray(value) { + if (Array.isArray(value)) + return value; + return [value]; + } + /** + * Recursively builds a tree structure out of sourcemap files, with each node + * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of + * `OriginalSource`s and `SourceMapTree`s. + * + * Every sourcemap is composed of a collection of source files and mappings + * into locations of those source files. When we generate a `SourceMapTree` for + * the sourcemap, we attempt to load each source file's own sourcemap. If it + * does not have an associated sourcemap, it is considered an original, + * unmodified source file. + */ + function buildSourceMapTree(input, loader) { + const maps = asArray(input).map((m) => new traceMapping.TraceMap(m, '')); + const map = maps.pop(); + for (let i = 0; i < maps.length; i++) { + if (maps[i].sources.length > 1) { + throw new Error(`Transformation map ${i} must have exactly one source file.\n` + + 'Did you specify these with the most recent transformation maps first?'); + } + } + let tree = build(map, loader, '', 0); + for (let i = maps.length - 1; i >= 0; i--) { + tree = MapSource(maps[i], [tree]); + } + return tree; + } + function build(map, loader, importer, importerDepth) { + const { resolvedSources, sourcesContent, ignoreList } = map; + const depth = importerDepth + 1; + const children = resolvedSources.map((sourceFile, i) => { + // The loading context gives the loader more information about why this file is being loaded + // (eg, from which importer). It also allows the loader to override the location of the loaded + // sourcemap/original source, or to override the content in the sourcesContent field if it's + // an unmodified source file. + const ctx = { + importer, + depth, + source: sourceFile || '', + content: undefined, + ignore: undefined, + }; + // Use the provided loader callback to retrieve the file's sourcemap. + // TODO: We should eventually support async loading of sourcemap files. + const sourceMap = loader(ctx.source, ctx); + const { source, content, ignore } = ctx; + // If there is a sourcemap, then we need to recurse into it to load its source files. + if (sourceMap) + return build(new traceMapping.TraceMap(sourceMap, source), loader, source, depth); + // Else, it's an unmodified source file. + // The contents of this unmodified source file can be overridden via the loader context, + // allowing it to be explicitly null or a string. If it remains undefined, we fall back to + // the importing sourcemap's `sourcesContent` field. + const sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null; + const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false; + return OriginalSource(source, sourceContent, ignored); + }); + return MapSource(map, children); + } + + /** + * A SourceMap v3 compatible sourcemap, which only includes fields that were + * provided to it. + */ + class SourceMap { + constructor(map, options) { + const out = options.decodedMappings ? genMapping.toDecodedMap(map) : genMapping.toEncodedMap(map); + this.version = out.version; // SourceMap spec says this should be first. + this.file = out.file; + this.mappings = out.mappings; + this.names = out.names; + this.ignoreList = out.ignoreList; + this.sourceRoot = out.sourceRoot; + this.sources = out.sources; + if (!options.excludeContent) { + this.sourcesContent = out.sourcesContent; + } + } + toString() { + return JSON.stringify(this); + } + } + + /** + * Traces through all the mappings in the root sourcemap, through the sources + * (and their sourcemaps), all the way back to the original source location. + * + * `loader` will be called every time we encounter a source file. If it returns + * a sourcemap, we will recurse into that sourcemap to continue the trace. If + * it returns a falsey value, that source file is treated as an original, + * unmodified source file. + * + * Pass `excludeContent` to exclude any self-containing source file content + * from the output sourcemap. + * + * Pass `decodedMappings` to receive a SourceMap with decoded (instead of + * VLQ encoded) mappings. + */ + function remapping(input, loader, options) { + const opts = typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false }; + const tree = buildSourceMapTree(input, loader); + return new SourceMap(traceMappings(tree), opts); + } + + return remapping; + +})); +//# sourceMappingURL=remapping.umd.js.map diff --git a/node_modules/@ampproject/remapping/dist/remapping.umd.js.map b/node_modules/@ampproject/remapping/dist/remapping.umd.js.map new file mode 100644 index 0000000..d3f0f87 --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/remapping.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"remapping.umd.js","sources":["../src/source-map-tree.ts","../src/build-source-map-tree.ts","../src/source-map.ts","../src/remapping.ts"],"sourcesContent":["import { GenMapping, maybeAddSegment, setIgnore, setSourceContent } from '@jridgewell/gen-mapping';\nimport { traceSegment, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport type { TraceMap } from '@jridgewell/trace-mapping';\n\nexport type SourceMapSegmentObject = {\n column: number;\n line: number;\n name: string;\n source: string;\n content: string | null;\n ignore: boolean;\n};\n\nexport type OriginalSource = {\n map: null;\n sources: Sources[];\n source: string;\n content: string | null;\n ignore: boolean;\n};\n\nexport type MapSource = {\n map: TraceMap;\n sources: Sources[];\n source: string;\n content: null;\n ignore: false;\n};\n\nexport type Sources = OriginalSource | MapSource;\n\nconst SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null, false);\nconst EMPTY_SOURCES: Sources[] = [];\n\nfunction SegmentObject(\n source: string,\n line: number,\n column: number,\n name: string,\n content: string | null,\n ignore: boolean\n): SourceMapSegmentObject {\n return { source, line, column, name, content, ignore };\n}\n\nfunction Source(\n map: TraceMap,\n sources: Sources[],\n source: '',\n content: null,\n ignore: false\n): MapSource;\nfunction Source(\n map: null,\n sources: Sources[],\n source: string,\n content: string | null,\n ignore: boolean\n): OriginalSource;\nfunction Source(\n map: TraceMap | null,\n sources: Sources[],\n source: string | '',\n content: string | null,\n ignore: boolean\n): Sources {\n return {\n map,\n sources,\n source,\n content,\n ignore,\n } as any;\n}\n\n/**\n * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes\n * (which may themselves be SourceMapTrees).\n */\nexport function MapSource(map: TraceMap, sources: Sources[]): MapSource {\n return Source(map, sources, '', null, false);\n}\n\n/**\n * A \"leaf\" node in the sourcemap tree, representing an original, unmodified source file. Recursive\n * segment tracing ends at the `OriginalSource`.\n */\nexport function OriginalSource(\n source: string,\n content: string | null,\n ignore: boolean\n): OriginalSource {\n return Source(null, EMPTY_SOURCES, source, content, ignore);\n}\n\n/**\n * traceMappings is only called on the root level SourceMapTree, and begins the process of\n * resolving each mapping in terms of the original source files.\n */\nexport function traceMappings(tree: MapSource): GenMapping {\n // TODO: Eventually support sourceRoot, which has to be removed because the sources are already\n // fully resolved. We'll need to make sources relative to the sourceRoot before adding them.\n const gen = new GenMapping({ file: tree.map.file });\n const { sources: rootSources, map } = tree;\n const rootNames = map.names;\n const rootMappings = decodedMappings(map);\n\n for (let i = 0; i < rootMappings.length; i++) {\n const segments = rootMappings[i];\n\n for (let j = 0; j < segments.length; j++) {\n const segment = segments[j];\n const genCol = segment[0];\n let traced: SourceMapSegmentObject | null = SOURCELESS_MAPPING;\n\n // 1-length segments only move the current generated column, there's no source information\n // to gather from it.\n if (segment.length !== 1) {\n const source = rootSources[segment[1]];\n traced = originalPositionFor(\n source,\n segment[2],\n segment[3],\n segment.length === 5 ? rootNames[segment[4]] : ''\n );\n\n // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a\n // respective segment into an original source.\n if (traced == null) continue;\n }\n\n const { column, line, name, content, source, ignore } = traced;\n\n maybeAddSegment(gen, i, genCol, source, line, column, name);\n if (source && content != null) setSourceContent(gen, source, content);\n if (ignore) setIgnore(gen, source, true);\n }\n }\n\n return gen;\n}\n\n/**\n * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own\n * child SourceMapTrees, until we find the original source map.\n */\nexport function originalPositionFor(\n source: Sources,\n line: number,\n column: number,\n name: string\n): SourceMapSegmentObject | null {\n if (!source.map) {\n return SegmentObject(source.source, line, column, name, source.content, source.ignore);\n }\n\n const segment = traceSegment(source.map, line, column);\n\n // If we couldn't find a segment, then this doesn't exist in the sourcemap.\n if (segment == null) return null;\n // 1-length segments only move the current generated column, there's no source information\n // to gather from it.\n if (segment.length === 1) return SOURCELESS_MAPPING;\n\n return originalPositionFor(\n source.sources[segment[1]],\n segment[2],\n segment[3],\n segment.length === 5 ? source.map.names[segment[4]] : name\n );\n}\n","import { TraceMap } from '@jridgewell/trace-mapping';\n\nimport { OriginalSource, MapSource } from './source-map-tree';\n\nimport type { Sources, MapSource as MapSourceType } from './source-map-tree';\nimport type { SourceMapInput, SourceMapLoader, LoaderContext } from './types';\n\nfunction asArray(value: T | T[]): T[] {\n if (Array.isArray(value)) return value;\n return [value];\n}\n\n/**\n * Recursively builds a tree structure out of sourcemap files, with each node\n * being either an `OriginalSource` \"leaf\" or a `SourceMapTree` composed of\n * `OriginalSource`s and `SourceMapTree`s.\n *\n * Every sourcemap is composed of a collection of source files and mappings\n * into locations of those source files. When we generate a `SourceMapTree` for\n * the sourcemap, we attempt to load each source file's own sourcemap. If it\n * does not have an associated sourcemap, it is considered an original,\n * unmodified source file.\n */\nexport default function buildSourceMapTree(\n input: SourceMapInput | SourceMapInput[],\n loader: SourceMapLoader\n): MapSourceType {\n const maps = asArray(input).map((m) => new TraceMap(m, ''));\n const map = maps.pop()!;\n\n for (let i = 0; i < maps.length; i++) {\n if (maps[i].sources.length > 1) {\n throw new Error(\n `Transformation map ${i} must have exactly one source file.\\n` +\n 'Did you specify these with the most recent transformation maps first?'\n );\n }\n }\n\n let tree = build(map, loader, '', 0);\n for (let i = maps.length - 1; i >= 0; i--) {\n tree = MapSource(maps[i], [tree]);\n }\n return tree;\n}\n\nfunction build(\n map: TraceMap,\n loader: SourceMapLoader,\n importer: string,\n importerDepth: number\n): MapSourceType {\n const { resolvedSources, sourcesContent, ignoreList } = map;\n\n const depth = importerDepth + 1;\n const children = resolvedSources.map((sourceFile: string | null, i: number): Sources => {\n // The loading context gives the loader more information about why this file is being loaded\n // (eg, from which importer). It also allows the loader to override the location of the loaded\n // sourcemap/original source, or to override the content in the sourcesContent field if it's\n // an unmodified source file.\n const ctx: LoaderContext = {\n importer,\n depth,\n source: sourceFile || '',\n content: undefined,\n ignore: undefined,\n };\n\n // Use the provided loader callback to retrieve the file's sourcemap.\n // TODO: We should eventually support async loading of sourcemap files.\n const sourceMap = loader(ctx.source, ctx);\n\n const { source, content, ignore } = ctx;\n\n // If there is a sourcemap, then we need to recurse into it to load its source files.\n if (sourceMap) return build(new TraceMap(sourceMap, source), loader, source, depth);\n\n // Else, it's an unmodified source file.\n // The contents of this unmodified source file can be overridden via the loader context,\n // allowing it to be explicitly null or a string. If it remains undefined, we fall back to\n // the importing sourcemap's `sourcesContent` field.\n const sourceContent =\n content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;\n const ignored = ignore !== undefined ? ignore : ignoreList ? ignoreList.includes(i) : false;\n return OriginalSource(source, sourceContent, ignored);\n });\n\n return MapSource(map, children);\n}\n","import { toDecodedMap, toEncodedMap } from '@jridgewell/gen-mapping';\n\nimport type { GenMapping } from '@jridgewell/gen-mapping';\nimport type { DecodedSourceMap, EncodedSourceMap, Options } from './types';\n\n/**\n * A SourceMap v3 compatible sourcemap, which only includes fields that were\n * provided to it.\n */\nexport default class SourceMap {\n declare file?: string | null;\n declare mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings'];\n declare sourceRoot?: string;\n declare names: string[];\n declare sources: (string | null)[];\n declare sourcesContent?: (string | null)[];\n declare version: 3;\n declare ignoreList: number[] | undefined;\n\n constructor(map: GenMapping, options: Options) {\n const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map);\n this.version = out.version; // SourceMap spec says this should be first.\n this.file = out.file;\n this.mappings = out.mappings as SourceMap['mappings'];\n this.names = out.names as SourceMap['names'];\n this.ignoreList = out.ignoreList as SourceMap['ignoreList'];\n this.sourceRoot = out.sourceRoot;\n\n this.sources = out.sources as SourceMap['sources'];\n if (!options.excludeContent) {\n this.sourcesContent = out.sourcesContent as SourceMap['sourcesContent'];\n }\n }\n\n toString(): string {\n return JSON.stringify(this);\n }\n}\n","import buildSourceMapTree from './build-source-map-tree';\nimport { traceMappings } from './source-map-tree';\nimport SourceMap from './source-map';\n\nimport type { SourceMapInput, SourceMapLoader, Options } from './types';\nexport type {\n SourceMapSegment,\n EncodedSourceMap,\n EncodedSourceMap as RawSourceMap,\n DecodedSourceMap,\n SourceMapInput,\n SourceMapLoader,\n LoaderContext,\n Options,\n} from './types';\nexport type { SourceMap };\n\n/**\n * Traces through all the mappings in the root sourcemap, through the sources\n * (and their sourcemaps), all the way back to the original source location.\n *\n * `loader` will be called every time we encounter a source file. If it returns\n * a sourcemap, we will recurse into that sourcemap to continue the trace. If\n * it returns a falsey value, that source file is treated as an original,\n * unmodified source file.\n *\n * Pass `excludeContent` to exclude any self-containing source file content\n * from the output sourcemap.\n *\n * Pass `decodedMappings` to receive a SourceMap with decoded (instead of\n * VLQ encoded) mappings.\n */\nexport default function remapping(\n input: SourceMapInput | SourceMapInput[],\n loader: SourceMapLoader,\n options?: boolean | Options\n): SourceMap {\n const opts =\n typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };\n const tree = buildSourceMapTree(input, loader);\n return new SourceMap(traceMappings(tree), opts);\n}\n"],"names":["GenMapping","decodedMappings","maybeAddSegment","setSourceContent","setIgnore","traceSegment","TraceMap","toDecodedMap","toEncodedMap"],"mappings":";;;;;;IAgCA,MAAM,kBAAkB,mBAAmB,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACtF,MAAM,aAAa,GAAc,EAAE,CAAC;IAEpC,SAAS,aAAa,CACpB,MAAc,EACd,IAAY,EACZ,MAAc,EACd,IAAY,EACZ,OAAsB,EACtB,MAAe,EAAA;IAEf,IAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IACzD,CAAC;IAgBD,SAAS,MAAM,CACb,GAAoB,EACpB,OAAkB,EAClB,MAAmB,EACnB,OAAsB,EACtB,MAAe,EAAA;QAEf,OAAO;YACL,GAAG;YACH,OAAO;YACP,MAAM;YACN,OAAO;YACP,MAAM;SACA,CAAC;IACX,CAAC;IAED;;;IAGG;IACa,SAAA,SAAS,CAAC,GAAa,EAAE,OAAkB,EAAA;IACzD,IAAA,OAAO,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;;IAGG;aACa,cAAc,CAC5B,MAAc,EACd,OAAsB,EACtB,MAAe,EAAA;IAEf,IAAA,OAAO,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED;;;IAGG;IACG,SAAU,aAAa,CAAC,IAAe,EAAA;;;IAG3C,IAAA,MAAM,GAAG,GAAG,IAAIA,qBAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3C,IAAA,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC;IAC5B,IAAA,MAAM,YAAY,GAAGC,4BAAe,CAAC,GAAG,CAAC,CAAC;IAE1C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAC5C,QAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAEjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACxC,YAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,MAAM,GAAkC,kBAAkB,CAAC;;;IAI/D,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACxB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,gBAAA,MAAM,GAAG,mBAAmB,CAC1B,MAAM,EACN,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAClD,CAAC;;;oBAIF,IAAI,MAAM,IAAI,IAAI;wBAAE,SAAS;IAC9B,aAAA;IAED,YAAA,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE/D,YAAAC,0BAAe,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,YAAA,IAAI,MAAM,IAAI,OAAO,IAAI,IAAI;IAAE,gBAAAC,2BAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,YAAA,IAAI,MAAM;IAAE,gBAAAC,oBAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,SAAA;IACF,KAAA;IAED,IAAA,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;IAGG;IACG,SAAU,mBAAmB,CACjC,MAAe,EACf,IAAY,EACZ,MAAc,EACd,IAAY,EAAA;IAEZ,IAAA,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACf,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACxF,KAAA;IAED,IAAA,MAAM,OAAO,GAAGC,yBAAY,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;;QAGvD,IAAI,OAAO,IAAI,IAAI;IAAE,QAAA,OAAO,IAAI,CAAC;;;IAGjC,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;IAAE,QAAA,OAAO,kBAAkB,CAAC;QAEpD,OAAO,mBAAmB,CACxB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC1B,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,CAAC,CAAC,EACV,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAC3D,CAAC;IACJ;;ICpKA,SAAS,OAAO,CAAI,KAAc,EAAA;IAChC,IAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAAE,QAAA,OAAO,KAAK,CAAC;QACvC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;;;;IAUG;IACW,SAAU,kBAAkB,CACxC,KAAwC,EACxC,MAAuB,EAAA;QAEvB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAIC,qBAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAG,CAAC;IAExB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;IAC9B,YAAA,MAAM,IAAI,KAAK,CACb,CAAA,mBAAA,EAAsB,CAAC,CAAuC,qCAAA,CAAA;IAC5D,gBAAA,uEAAuE,CAC1E,CAAC;IACH,SAAA;IACF,KAAA;IAED,IAAA,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACrC,IAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;IACzC,QAAA,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,KAAA;IACD,IAAA,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,KAAK,CACZ,GAAa,EACb,MAAuB,EACvB,QAAgB,EAChB,aAAqB,EAAA;QAErB,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC;IAE5D,IAAA,MAAM,KAAK,GAAG,aAAa,GAAG,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,UAAyB,EAAE,CAAS,KAAa;;;;;IAKrF,QAAA,MAAM,GAAG,GAAkB;gBACzB,QAAQ;gBACR,KAAK;gBACL,MAAM,EAAE,UAAU,IAAI,EAAE;IACxB,YAAA,OAAO,EAAE,SAAS;IAClB,YAAA,MAAM,EAAE,SAAS;aAClB,CAAC;;;YAIF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAE1C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;;IAGxC,QAAA,IAAI,SAAS;IAAE,YAAA,OAAO,KAAK,CAAC,IAAIA,qBAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;;;;;YAMpF,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC9E,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;YAC5F,OAAO,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACxD,KAAC,CAAC,CAAC;IAEH,IAAA,OAAO,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAClC;;ICnFA;;;IAGG;IACW,MAAO,SAAS,CAAA;QAU5B,WAAY,CAAA,GAAe,EAAE,OAAgB,EAAA;IAC3C,QAAA,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,GAAGC,uBAAY,CAAC,GAAG,CAAC,GAAGC,uBAAY,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC3B,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAiC,CAAC;IACtD,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAA2B,CAAC;IAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAqC,CAAC;IAC5D,QAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAEjC,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAA+B,CAAC;IACnD,QAAA,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;IAC3B,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAA6C,CAAC;IACzE,SAAA;SACF;QAED,QAAQ,GAAA;IACN,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC7B;IACF;;ICpBD;;;;;;;;;;;;;;IAcG;IACqB,SAAA,SAAS,CAC/B,KAAwC,EACxC,MAAuB,EACvB,OAA2B,EAAA;QAE3B,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,IAAI,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD;;;;;;;;"} \ No newline at end of file diff --git a/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts b/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts new file mode 100644 index 0000000..f87fcea --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/types/build-source-map-tree.d.ts @@ -0,0 +1,14 @@ +import type { MapSource as MapSourceType } from './source-map-tree'; +import type { SourceMapInput, SourceMapLoader } from './types'; +/** + * Recursively builds a tree structure out of sourcemap files, with each node + * being either an `OriginalSource` "leaf" or a `SourceMapTree` composed of + * `OriginalSource`s and `SourceMapTree`s. + * + * Every sourcemap is composed of a collection of source files and mappings + * into locations of those source files. When we generate a `SourceMapTree` for + * the sourcemap, we attempt to load each source file's own sourcemap. If it + * does not have an associated sourcemap, it is considered an original, + * unmodified source file. + */ +export default function buildSourceMapTree(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader): MapSourceType; diff --git a/node_modules/@ampproject/remapping/dist/types/remapping.d.ts b/node_modules/@ampproject/remapping/dist/types/remapping.d.ts new file mode 100644 index 0000000..771fe30 --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/types/remapping.d.ts @@ -0,0 +1,20 @@ +import SourceMap from './source-map'; +import type { SourceMapInput, SourceMapLoader, Options } from './types'; +export type { SourceMapSegment, EncodedSourceMap, EncodedSourceMap as RawSourceMap, DecodedSourceMap, SourceMapInput, SourceMapLoader, LoaderContext, Options, } from './types'; +export type { SourceMap }; +/** + * Traces through all the mappings in the root sourcemap, through the sources + * (and their sourcemaps), all the way back to the original source location. + * + * `loader` will be called every time we encounter a source file. If it returns + * a sourcemap, we will recurse into that sourcemap to continue the trace. If + * it returns a falsey value, that source file is treated as an original, + * unmodified source file. + * + * Pass `excludeContent` to exclude any self-containing source file content + * from the output sourcemap. + * + * Pass `decodedMappings` to receive a SourceMap with decoded (instead of + * VLQ encoded) mappings. + */ +export default function remapping(input: SourceMapInput | SourceMapInput[], loader: SourceMapLoader, options?: boolean | Options): SourceMap; diff --git a/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts b/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts new file mode 100644 index 0000000..935bc69 --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/types/source-map-tree.d.ts @@ -0,0 +1,45 @@ +import { GenMapping } from '@jridgewell/gen-mapping'; +import type { TraceMap } from '@jridgewell/trace-mapping'; +export declare type SourceMapSegmentObject = { + column: number; + line: number; + name: string; + source: string; + content: string | null; + ignore: boolean; +}; +export declare type OriginalSource = { + map: null; + sources: Sources[]; + source: string; + content: string | null; + ignore: boolean; +}; +export declare type MapSource = { + map: TraceMap; + sources: Sources[]; + source: string; + content: null; + ignore: false; +}; +export declare type Sources = OriginalSource | MapSource; +/** + * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes + * (which may themselves be SourceMapTrees). + */ +export declare function MapSource(map: TraceMap, sources: Sources[]): MapSource; +/** + * A "leaf" node in the sourcemap tree, representing an original, unmodified source file. Recursive + * segment tracing ends at the `OriginalSource`. + */ +export declare function OriginalSource(source: string, content: string | null, ignore: boolean): OriginalSource; +/** + * traceMappings is only called on the root level SourceMapTree, and begins the process of + * resolving each mapping in terms of the original source files. + */ +export declare function traceMappings(tree: MapSource): GenMapping; +/** + * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own + * child SourceMapTrees, until we find the original source map. + */ +export declare function originalPositionFor(source: Sources, line: number, column: number, name: string): SourceMapSegmentObject | null; diff --git a/node_modules/@ampproject/remapping/dist/types/source-map.d.ts b/node_modules/@ampproject/remapping/dist/types/source-map.d.ts new file mode 100644 index 0000000..cbd7f0a --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/types/source-map.d.ts @@ -0,0 +1,18 @@ +import type { GenMapping } from '@jridgewell/gen-mapping'; +import type { DecodedSourceMap, EncodedSourceMap, Options } from './types'; +/** + * A SourceMap v3 compatible sourcemap, which only includes fields that were + * provided to it. + */ +export default class SourceMap { + file?: string | null; + mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings']; + sourceRoot?: string; + names: string[]; + sources: (string | null)[]; + sourcesContent?: (string | null)[]; + version: 3; + ignoreList: number[] | undefined; + constructor(map: GenMapping, options: Options); + toString(): string; +} diff --git a/node_modules/@ampproject/remapping/dist/types/types.d.ts b/node_modules/@ampproject/remapping/dist/types/types.d.ts new file mode 100644 index 0000000..4d78c4b --- /dev/null +++ b/node_modules/@ampproject/remapping/dist/types/types.d.ts @@ -0,0 +1,15 @@ +import type { SourceMapInput } from '@jridgewell/trace-mapping'; +export type { SourceMapSegment, DecodedSourceMap, EncodedSourceMap, } from '@jridgewell/trace-mapping'; +export type { SourceMapInput }; +export declare type LoaderContext = { + readonly importer: string; + readonly depth: number; + source: string; + content: string | null | undefined; + ignore: boolean | undefined; +}; +export declare type SourceMapLoader = (file: string, ctx: LoaderContext) => SourceMapInput | null | undefined | void; +export declare type Options = { + excludeContent?: boolean; + decodedMappings?: boolean; +}; diff --git a/node_modules/@ampproject/remapping/package.json b/node_modules/@ampproject/remapping/package.json new file mode 100644 index 0000000..091224c --- /dev/null +++ b/node_modules/@ampproject/remapping/package.json @@ -0,0 +1,75 @@ +{ + "name": "@ampproject/remapping", + "version": "2.3.0", + "description": "Remap sequential sourcemaps through transformations to point at the original source code", + "keywords": [ + "source", + "map", + "remap" + ], + "main": "dist/remapping.umd.js", + "module": "dist/remapping.mjs", + "types": "dist/types/remapping.d.ts", + "exports": { + ".": [ + { + "types": "./dist/types/remapping.d.ts", + "browser": "./dist/remapping.umd.js", + "require": "./dist/remapping.umd.js", + "import": "./dist/remapping.mjs" + }, + "./dist/remapping.umd.js" + ], + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "author": "Justin Ridgewell ", + "repository": { + "type": "git", + "url": "git+https://github.com/ampproject/remapping.git" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=6.0.0" + }, + "scripts": { + "build": "run-s -n build:*", + "build:rollup": "rollup -c rollup.config.js", + "build:ts": "tsc --project tsconfig.build.json", + "lint": "run-s -n lint:*", + "lint:prettier": "npm run test:lint:prettier -- --write", + "lint:ts": "npm run test:lint:ts -- --fix", + "prebuild": "rm -rf dist", + "prepublishOnly": "npm run preversion", + "preversion": "run-s test build", + "test": "run-s -n test:lint test:only", + "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand", + "test:lint": "run-s -n test:lint:*", + "test:lint:prettier": "prettier --check '{src,test}/**/*.ts'", + "test:lint:ts": "eslint '{src,test}/**/*.ts'", + "test:only": "jest --coverage", + "test:watch": "jest --coverage --watch" + }, + "devDependencies": { + "@rollup/plugin-typescript": "8.3.2", + "@types/jest": "27.4.1", + "@typescript-eslint/eslint-plugin": "5.20.0", + "@typescript-eslint/parser": "5.20.0", + "eslint": "8.14.0", + "eslint-config-prettier": "8.5.0", + "jest": "27.5.1", + "jest-config": "27.5.1", + "npm-run-all": "4.1.5", + "prettier": "2.6.2", + "rollup": "2.70.2", + "ts-jest": "27.1.4", + "tslib": "2.4.0", + "typescript": "4.6.3" + }, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } +} diff --git a/node_modules/@babel/helper-string-parser/LICENSE b/node_modules/@babel/helper-string-parser/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/helper-string-parser/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/helper-string-parser/README.md b/node_modules/@babel/helper-string-parser/README.md new file mode 100644 index 0000000..771b470 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/README.md @@ -0,0 +1,19 @@ +# @babel/helper-string-parser + +> A utility package to parse strings + +See our website [@babel/helper-string-parser](https://babeljs.io/docs/babel-helper-string-parser) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-string-parser +``` + +or using yarn: + +```sh +yarn add @babel/helper-string-parser +``` diff --git a/node_modules/@babel/helper-string-parser/lib/index.js b/node_modules/@babel/helper-string-parser/lib/index.js new file mode 100644 index 0000000..2d94115 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/lib/index.js @@ -0,0 +1,295 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.readCodePoint = readCodePoint; +exports.readInt = readInt; +exports.readStringContents = readStringContents; +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/helper-string-parser/lib/index.js.map b/node_modules/@babel/helper-string-parser/lib/index.js.map new file mode 100644 index 0000000..cd50797 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["isDigit","code","forbiddenNumericSeparatorSiblings","decBinOct","Set","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","type","input","pos","lineStart","curLine","errors","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","length","unterminated","slice","charCodeAt","isStringEnd","res","readEscapedChar","str","containsInvalid","inTemplate","throwOnInvalid","readHexChar","String","fromCharCode","readCodePoint","fromCodePoint","strictNumericEscape","startPos","match","exec","octalStr","octal","parseInt","next","len","forceLen","n","readInt","invalidEscapeSequence","radix","allowNumSeparator","bailOnError","start","forbiddenSiblings","isAllowedSibling","invalid","total","i","e","Infinity","val","prev","numericSeparatorInEscapeSequence","Number","isNaN","has","unexpectedNumericSeparator","_isDigit","invalidDigit","indexOf","invalidCodePoint"],"sources":["../src/index.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n"],"mappings":";;;;;;;;eAAA,SAASA,OAAOA,CAACC,IAAI,EAAE;EACrB,OAAOA,IAAI,MAAU,IAAIA,IAAI,MAAU;AACzC,CAAC;AAID,MAAMC,iCAAiC,GAAG;EACxCC,SAAS,EAAE,IAAIC,GAAG,CAAS,kCAS1B,CAAC;EACFC,GAAG,EAAE,IAAID,GAAG,CAAS,iBAKpB;AACH,CAAC;AAED,MAAME,gCAAgC,GAAG;EAEvCC,GAAG,EAAGC,EAAU,IAAKA,EAAE,OAAqB,IAAIA,EAAE,OAAqB;EAGvEC,GAAG,EAAGD,EAAU,IAAKA,EAAE,MAAoB,IAAIA,EAAE,MAAoB;EAGrEE,GAAG,EAAGF,EAAU,IAAKA,EAAE,MAAoB,IAAIA,EAAE,MAAoB;EAGrEH,GAAG,EAAGG,EAAU,IACbA,EAAE,MAAoB,IAAIA,EAAE,MAAoB,IAChDA,EAAE,MAAwB,IAAIA,EAAE,MAAyB,IACzDA,EAAE,MAAwB,IAAIA,EAAE;AACrC,CAAC;AAUM,SAASG,kBAAkBA,CAChCC,IAAsC,EACtCC,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfC,MAAmC,EACnC;EACA,MAAMC,UAAU,GAAGJ,GAAG;EACtB,MAAMK,gBAAgB,GAAGJ,SAAS;EAClC,MAAMK,cAAc,GAAGJ,OAAO;EAE9B,IAAIK,GAAG,GAAG,EAAE;EACZ,IAAIC,eAAe,GAAG,IAAI;EAC1B,IAAIC,UAAU,GAAGT,GAAG;EACpB,MAAM;IAAEU;EAAO,CAAC,GAAGX,KAAK;EACxB,SAAS;IACP,IAAIC,GAAG,IAAIU,MAAM,EAAE;MACjBP,MAAM,CAACQ,YAAY,CAACP,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACjEC,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC;MACnC;IACF;IACA,MAAMN,EAAE,GAAGK,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;IAChC,IAAIc,WAAW,CAAChB,IAAI,EAAEJ,EAAE,EAAEK,KAAK,EAAEC,GAAG,CAAC,EAAE;MACrCO,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC;MACnC;IACF;IACA,IAAIN,EAAE,OAAwB,EAAE;MAC9Ba,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC;MACnC,MAAMe,GAAG,GAAGC,eAAe,CACzBjB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACPJ,IAAI,KAAK,UAAU,EACnBK,MACF,CAAC;MACD,IAAIY,GAAG,CAACrB,EAAE,KAAK,IAAI,IAAI,CAACc,eAAe,EAAE;QACvCA,eAAe,GAAG;UAAER,GAAG;UAAEC,SAAS;UAAEC;QAAQ,CAAC;MAC/C,CAAC,MAAM;QACLK,GAAG,IAAIQ,GAAG,CAACrB,EAAE;MACf;MACA,CAAC;QAAEM,GAAG;QAAEC,SAAS;QAAEC;MAAQ,CAAC,GAAGa,GAAG;MAClCN,UAAU,GAAGT,GAAG;IAClB,CAAC,MAAM,IACLN,EAAE,SAA4B,IAC9BA,EAAE,SAAiC,EACnC;MACA,EAAEM,GAAG;MACL,EAAEE,OAAO;MACTD,SAAS,GAAGD,GAAG;IACjB,CAAC,MAAM,IAAIN,EAAE,OAAuB,IAAIA,EAAE,OAA6B,EAAE;MACvE,IAAII,IAAI,KAAK,UAAU,EAAE;QACvBS,GAAG,IAAIR,KAAK,CAACa,KAAK,CAACH,UAAU,EAAET,GAAG,CAAC,GAAG,IAAI;QAC1C,EAAEA,GAAG;QACL,IACEN,EAAE,OAA6B,IAC/BK,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC,OAAuB,EAC5C;UACA,EAAEA,GAAG;QACP;QACA,EAAEE,OAAO;QACTO,UAAU,GAAGR,SAAS,GAAGD,GAAG;MAC9B,CAAC,MAAM;QACLG,MAAM,CAACQ,YAAY,CAACP,UAAU,EAAEC,gBAAgB,EAAEC,cAAc,CAAC;MACnE;IACF,CAAC,MAAM;MACL,EAAEN,GAAG;IACP;EACF;EACA,OAEI;IACEA,GAAG;IACHiB,GAAG,EAAEV,GAAG;IACRC,eAAe;IACfP,SAAS;IACTC,OAAO;IACPgB,eAAe,EAAE,CAAC,CAACV;EACrB,CAAC;AACP;AAEA,SAASM,WAAWA,CAClBhB,IAAsC,EACtCJ,EAAU,EACVK,KAAa,EACbC,GAAW,EACX;EACA,IAAIF,IAAI,KAAK,UAAU,EAAE;IACvB,OACEJ,EAAE,OAA0B,IAC3BA,EAAE,OAAyB,IAC1BK,KAAK,CAACc,UAAU,CAACb,GAAG,GAAG,CAAC,CAAC,QAA8B;EAE7D;EACA,OACEN,EAAE,MAAMI,IAAI,KAAK,QAAQ,UAAiD,CAAC;AAE/E;AAOA,SAASkB,eAAeA,CACtBjB,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfiB,UAAmB,EACnBhB,MAAgC,EAChC;EACA,MAAMiB,cAAc,GAAG,CAACD,UAAU;EAClCnB,GAAG,EAAE;EAEL,MAAMe,GAAG,GAAIrB,EAAiB,KAAM;IAAEM,GAAG;IAAEN,EAAE;IAAEO,SAAS;IAAEC;EAAQ,CAAC,CAAC;EAEpE,MAAMR,EAAE,GAAGK,KAAK,CAACc,UAAU,CAACb,GAAG,EAAE,CAAC;EAClC,QAAQN,EAAE;IACR;MACE,OAAOqB,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB;MAA2B;QACzB,IAAI5B,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEa;QAAI,CAAC,GAAGqB,WAAW,CAC1BtB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACP,CAAC,EACD,KAAK,EACLkB,cAAc,EACdjB,MACF,CAAC;QACD,OAAOY,GAAG,CAAC5B,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGmC,MAAM,CAACC,YAAY,CAACpC,IAAI,CAAC,CAAC;MAC9D;IACA;MAA2B;QACzB,IAAIA,IAAI;QACR,CAAC;UAAEA,IAAI;UAAEa;QAAI,CAAC,GAAGwB,aAAa,CAC5BzB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACPkB,cAAc,EACdjB,MACF,CAAC;QACD,OAAOY,GAAG,CAAC5B,IAAI,KAAK,IAAI,GAAG,IAAI,GAAGmC,MAAM,CAACG,aAAa,CAACtC,IAAI,CAAC,CAAC;MAC/D;IACA;MACE,OAAO4B,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,OAAOA,GAAG,CAAC,QAAQ,CAAC;IACtB;MACE,OAAOA,GAAG,CAAC,IAAI,CAAC;IAClB;MACE,IAAIhB,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC,OAAuB,EAAE;QAChD,EAAEA,GAAG;MACP;IAEF;MACEC,SAAS,GAAGD,GAAG;MACf,EAAEE,OAAO;IAEX;IACA;MACE,OAAOa,GAAG,CAAC,EAAE,CAAC;IAChB;IACA;MACE,IAAII,UAAU,EAAE;QACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;MAClB,CAAC,MAAM;QACLZ,MAAM,CAACuB,mBAAmB,CAAC1B,GAAG,GAAG,CAAC,EAAEC,SAAS,EAAEC,OAAO,CAAC;MACzD;IAEF;MACE,IAAIR,EAAE,MAAoB,IAAIA,EAAE,MAAoB,EAAE;QACpD,MAAMiC,QAAQ,GAAG3B,GAAG,GAAG,CAAC;QACxB,MAAM4B,KAAK,GAAG,SAAS,CAACC,IAAI,CAAC9B,KAAK,CAACa,KAAK,CAACe,QAAQ,EAAE3B,GAAG,GAAG,CAAC,CAAC,CAAC;QAE5D,IAAI8B,QAAQ,GAAGF,KAAK,CAAC,CAAC,CAAC;QAEvB,IAAIG,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QACjC,IAAIC,KAAK,GAAG,GAAG,EAAE;UACfD,QAAQ,GAAGA,QAAQ,CAAClB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;UAChCmB,KAAK,GAAGC,QAAQ,CAACF,QAAQ,EAAE,CAAC,CAAC;QAC/B;QACA9B,GAAG,IAAI8B,QAAQ,CAACpB,MAAM,GAAG,CAAC;QAC1B,MAAMuB,IAAI,GAAGlC,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;QAClC,IACE8B,QAAQ,KAAK,GAAG,IAChBG,IAAI,OAAqB,IACzBA,IAAI,OAAqB,EACzB;UACA,IAAId,UAAU,EAAE;YACd,OAAOJ,GAAG,CAAC,IAAI,CAAC;UAClB,CAAC,MAAM;YACLZ,MAAM,CAACuB,mBAAmB,CAACC,QAAQ,EAAE1B,SAAS,EAAEC,OAAO,CAAC;UAC1D;QACF;QAEA,OAAOa,GAAG,CAACO,MAAM,CAACC,YAAY,CAACQ,KAAK,CAAC,CAAC;MACxC;MAEA,OAAOhB,GAAG,CAACO,MAAM,CAACC,YAAY,CAAC7B,EAAE,CAAC,CAAC;EACvC;AACF;AAOA,SAAS2B,WAAWA,CAClBtB,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfgC,GAAW,EACXC,QAAiB,EACjBf,cAAuB,EACvBjB,MAA4B,EAC5B;EACA,MAAMC,UAAU,GAAGJ,GAAG;EACtB,IAAIoC,CAAC;EACL,CAAC;IAAEA,CAAC;IAAEpC;EAAI,CAAC,GAAGqC,OAAO,CACnBtC,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACP,EAAE,EACFgC,GAAG,EACHC,QAAQ,EACR,KAAK,EACLhC,MAAM,EACY,CAACiB,cACrB,CAAC;EACD,IAAIgB,CAAC,KAAK,IAAI,EAAE;IACd,IAAIhB,cAAc,EAAE;MAClBjB,MAAM,CAACmC,qBAAqB,CAAClC,UAAU,EAAEH,SAAS,EAAEC,OAAO,CAAC;IAC9D,CAAC,MAAM;MACLF,GAAG,GAAGI,UAAU,GAAG,CAAC;IACtB;EACF;EACA,OAAO;IAAEjB,IAAI,EAAEiD,CAAC;IAAEpC;EAAI,CAAC;AACzB;AAuBO,SAASqC,OAAOA,CACrBtC,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfqC,KAAa,EACbL,GAAuB,EACvBC,QAAiB,EACjBK,iBAAmC,EACnCrC,MAAwB,EACxBsC,WAAoB,EACpB;EACA,MAAMC,KAAK,GAAG1C,GAAG;EACjB,MAAM2C,iBAAiB,GACrBJ,KAAK,KAAK,EAAE,GACRnD,iCAAiC,CAACG,GAAG,GACrCH,iCAAiC,CAACC,SAAS;EACjD,MAAMuD,gBAAgB,GACpBL,KAAK,KAAK,EAAE,GACR/C,gCAAgC,CAACD,GAAG,GACpCgD,KAAK,KAAK,EAAE,GACV/C,gCAAgC,CAACI,GAAG,GACpC2C,KAAK,KAAK,CAAC,GACT/C,gCAAgC,CAACG,GAAG,GACpCH,gCAAgC,CAACC,GAAG;EAE9C,IAAIoD,OAAO,GAAG,KAAK;EACnB,IAAIC,KAAK,GAAG,CAAC;EAEb,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,CAAC,GAAGd,GAAG,IAAI,IAAI,GAAGe,QAAQ,GAAGf,GAAG,EAAEa,CAAC,GAAGC,CAAC,EAAE,EAAED,CAAC,EAAE;IAC5D,MAAM5D,IAAI,GAAGY,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;IAClC,IAAIkD,GAAG;IAEP,IAAI/D,IAAI,OAAyB,IAAIqD,iBAAiB,KAAK,MAAM,EAAE;MACjE,MAAMW,IAAI,GAAGpD,KAAK,CAACc,UAAU,CAACb,GAAG,GAAG,CAAC,CAAC;MACtC,MAAMiC,IAAI,GAAGlC,KAAK,CAACc,UAAU,CAACb,GAAG,GAAG,CAAC,CAAC;MAEtC,IAAI,CAACwC,iBAAiB,EAAE;QACtB,IAAIC,WAAW,EAAE,OAAO;UAAEL,CAAC,EAAE,IAAI;UAAEpC;QAAI,CAAC;QACxCG,MAAM,CAACiD,gCAAgC,CAACpD,GAAG,EAAEC,SAAS,EAAEC,OAAO,CAAC;MAClE,CAAC,MAAM,IACLmD,MAAM,CAACC,KAAK,CAACrB,IAAI,CAAC,IAClB,CAACW,gBAAgB,CAACX,IAAI,CAAC,IACvBU,iBAAiB,CAACY,GAAG,CAACJ,IAAI,CAAC,IAC3BR,iBAAiB,CAACY,GAAG,CAACtB,IAAI,CAAC,EAC3B;QACA,IAAIQ,WAAW,EAAE,OAAO;UAAEL,CAAC,EAAE,IAAI;UAAEpC;QAAI,CAAC;QACxCG,MAAM,CAACqD,0BAA0B,CAACxD,GAAG,EAAEC,SAAS,EAAEC,OAAO,CAAC;MAC5D;MAGA,EAAEF,GAAG;MACL;IACF;IAEA,IAAIb,IAAI,MAAwB,EAAE;MAChC+D,GAAG,GAAG/D,IAAI,KAAuB,KAAqB;IACxD,CAAC,MAAM,IAAIA,IAAI,MAAwB,EAAE;MACvC+D,GAAG,GAAG/D,IAAI,KAAuB,KAAqB;IACxD,CAAC,MAAM,IAAIsE,QAAA,CAAkBtE,IAAI,CAAC,EAAE;MAClC+D,GAAG,GAAG/D,IAAI,KAAmB;IAC/B,CAAC,MAAM;MACL+D,GAAG,GAAGD,QAAQ;IAChB;IACA,IAAIC,GAAG,IAAIX,KAAK,EAAE;MAGhB,IAAIW,GAAG,IAAI,CAAC,IAAIT,WAAW,EAAE;QAC3B,OAAO;UAAEL,CAAC,EAAE,IAAI;UAAEpC;QAAI,CAAC;MACzB,CAAC,MAAM,IACLkD,GAAG,IAAI,CAAC,IACR/C,MAAM,CAACuD,YAAY,CAAC1D,GAAG,EAAEC,SAAS,EAAEC,OAAO,EAAEqC,KAAK,CAAC,EACnD;QACAW,GAAG,GAAG,CAAC;MACT,CAAC,MAAM,IAAIf,QAAQ,EAAE;QACnBe,GAAG,GAAG,CAAC;QACPL,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM;QACL;MACF;IACF;IACA,EAAE7C,GAAG;IACL8C,KAAK,GAAGA,KAAK,GAAGP,KAAK,GAAGW,GAAG;EAC7B;EACA,IAAIlD,GAAG,KAAK0C,KAAK,IAAKR,GAAG,IAAI,IAAI,IAAIlC,GAAG,GAAG0C,KAAK,KAAKR,GAAI,IAAIW,OAAO,EAAE;IACpE,OAAO;MAAET,CAAC,EAAE,IAAI;MAAEpC;IAAI,CAAC;EACzB;EAEA,OAAO;IAAEoC,CAAC,EAAEU,KAAK;IAAE9C;EAAI,CAAC;AAC1B;AAMO,SAASwB,aAAaA,CAC3BzB,KAAa,EACbC,GAAW,EACXC,SAAiB,EACjBC,OAAe,EACfkB,cAAuB,EACvBjB,MAA8B,EAC9B;EACA,MAAMT,EAAE,GAAGK,KAAK,CAACc,UAAU,CAACb,GAAG,CAAC;EAChC,IAAIb,IAAI;EAER,IAAIO,EAAE,QAA6B,EAAE;IACnC,EAAEM,GAAG;IACL,CAAC;MAAEb,IAAI;MAAEa;IAAI,CAAC,GAAGqB,WAAW,CAC1BtB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACPH,KAAK,CAAC4D,OAAO,CAAC,GAAG,EAAE3D,GAAG,CAAC,GAAGA,GAAG,EAC7B,IAAI,EACJoB,cAAc,EACdjB,MACF,CAAC;IACD,EAAEH,GAAG;IACL,IAAIb,IAAI,KAAK,IAAI,IAAIA,IAAI,GAAG,QAAQ,EAAE;MACpC,IAAIiC,cAAc,EAAE;QAClBjB,MAAM,CAACyD,gBAAgB,CAAC5D,GAAG,EAAEC,SAAS,EAAEC,OAAO,CAAC;MAClD,CAAC,MAAM;QACL,OAAO;UAAEf,IAAI,EAAE,IAAI;UAAEa;QAAI,CAAC;MAC5B;IACF;EACF,CAAC,MAAM;IACL,CAAC;MAAEb,IAAI;MAAEa;IAAI,CAAC,GAAGqB,WAAW,CAC1BtB,KAAK,EACLC,GAAG,EACHC,SAAS,EACTC,OAAO,EACP,CAAC,EACD,KAAK,EACLkB,cAAc,EACdjB,MACF,CAAC;EACH;EACA,OAAO;IAAEhB,IAAI;IAAEa;EAAI,CAAC;AACtB","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-string-parser/package.json b/node_modules/@babel/helper-string-parser/package.json new file mode 100644 index 0000000..c4c86e4 --- /dev/null +++ b/node_modules/@babel/helper-string-parser/package.json @@ -0,0 +1,31 @@ +{ + "name": "@babel/helper-string-parser", + "version": "7.27.1", + "description": "A utility package to parse strings", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-string-parser" + }, + "homepage": "https://babel.dev/docs/en/next/babel-helper-string-parser", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "devDependencies": { + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, + "./package.json": "./package.json" + }, + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/LICENSE b/node_modules/@babel/helper-validator-identifier/LICENSE new file mode 100644 index 0000000..f31575e --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/@babel/helper-validator-identifier/README.md b/node_modules/@babel/helper-validator-identifier/README.md new file mode 100644 index 0000000..05c19e6 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/README.md @@ -0,0 +1,19 @@ +# @babel/helper-validator-identifier + +> Validate identifier/keywords name + +See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/babel-helper-validator-identifier) for more information. + +## Install + +Using npm: + +```sh +npm install --save @babel/helper-validator-identifier +``` + +or using yarn: + +```sh +yarn add @babel/helper-validator-identifier +``` diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/node_modules/@babel/helper-validator-identifier/lib/identifier.js new file mode 100644 index 0000000..b12e6e4 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js @@ -0,0 +1,70 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isIdentifierChar = isIdentifierChar; +exports.isIdentifierName = isIdentifierName; +exports.isIdentifierStart = isIdentifierStart; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +function isIdentifierName(name) { + let isFirst = true; + for (let i = 0; i < name.length; i++) { + let cp = name.charCodeAt(i); + if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) { + const trail = name.charCodeAt(++i); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + if (isFirst) { + isFirst = false; + if (!isIdentifierStart(cp)) { + return false; + } + } else if (!isIdentifierChar(cp)) { + return false; + } + } + return !isFirst; +} + +//# sourceMappingURL=identifier.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map new file mode 100644 index 0000000..71d32ff --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/identifier.js.map @@ -0,0 +1 @@ +{"version":3,"names":["nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","test","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail"],"sources":["../src/identifier.ts"],"sourcesContent":["// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n"],"mappings":";;;;;;;;AAaA,IAAIA,4BAA4B,GAAG,spIAAspI;AAEzrI,IAAIC,uBAAuB,GAAG,4lFAA4lF;AAE1nF,MAAMC,uBAAuB,GAAG,IAAIC,MAAM,CACxC,GAAG,GAAGH,4BAA4B,GAAG,GACvC,CAAC;AACD,MAAMI,kBAAkB,GAAG,IAAID,MAAM,CACnC,GAAG,GAAGH,4BAA4B,GAAGC,uBAAuB,GAAG,GACjE,CAAC;AAEDD,4BAA4B,GAAGC,uBAAuB,GAAG,IAAI;AAQ7D,MAAMI,0BAA0B,GAAG,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,CAAC;AAEjnD,MAAMC,qBAAqB,GAAG,CAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,CAAC,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,MAAM,EAAC,GAAG,CAAC;AAK52B,SAASC,aAAaA,CAACC,IAAY,EAAEC,GAAsB,EAAW;EACpE,IAAIC,GAAG,GAAG,OAAO;EACjB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEC,MAAM,GAAGH,GAAG,CAACG,MAAM,EAAED,CAAC,GAAGC,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;IACvDD,GAAG,IAAID,GAAG,CAACE,CAAC,CAAC;IACb,IAAID,GAAG,GAAGF,IAAI,EAAE,OAAO,KAAK;IAE5BE,GAAG,IAAID,GAAG,CAACE,CAAC,GAAG,CAAC,CAAC;IACjB,IAAID,GAAG,IAAIF,IAAI,EAAE,OAAO,IAAI;EAC9B;EACA,OAAO,KAAK;AACd;AAIO,SAASK,iBAAiBA,CAACL,IAAY,EAAW;EACvD,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,MAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,OAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OACEA,IAAI,IAAI,IAAI,IAAIN,uBAAuB,CAACY,IAAI,CAACC,MAAM,CAACC,YAAY,CAACR,IAAI,CAAC,CAAC;EAE3E;EACA,OAAOD,aAAa,CAACC,IAAI,EAAEH,0BAA0B,CAAC;AACxD;AAIO,SAASY,gBAAgBA,CAACT,IAAY,EAAW;EACtD,IAAIA,IAAI,KAAmB,EAAE,OAAOA,IAAI,OAAyB;EACjE,IAAIA,IAAI,KAAkB,EAAE,OAAO,IAAI;EACvC,IAAIA,IAAI,KAAuB,EAAE,OAAO,KAAK;EAC7C,IAAIA,IAAI,MAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,KAAuB,EAAE,OAAOA,IAAI,OAAyB;EACrE,IAAIA,IAAI,OAAwB,EAAE,OAAO,IAAI;EAC7C,IAAIA,IAAI,IAAI,MAAM,EAAE;IAClB,OAAOA,IAAI,IAAI,IAAI,IAAIJ,kBAAkB,CAACU,IAAI,CAACC,MAAM,CAACC,YAAY,CAACR,IAAI,CAAC,CAAC;EAC3E;EACA,OACED,aAAa,CAACC,IAAI,EAAEH,0BAA0B,CAAC,IAC/CE,aAAa,CAACC,IAAI,EAAEF,qBAAqB,CAAC;AAE9C;AAIO,SAASY,gBAAgBA,CAACC,IAAY,EAAW;EACtD,IAAIC,OAAO,GAAG,IAAI;EAClB,KAAK,IAAIT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGQ,IAAI,CAACP,MAAM,EAAED,CAAC,EAAE,EAAE;IAKpC,IAAIU,EAAE,GAAGF,IAAI,CAACG,UAAU,CAACX,CAAC,CAAC;IAC3B,IAAI,CAACU,EAAE,GAAG,MAAM,MAAM,MAAM,IAAIV,CAAC,GAAG,CAAC,GAAGQ,IAAI,CAACP,MAAM,EAAE;MACnD,MAAMW,KAAK,GAAGJ,IAAI,CAACG,UAAU,CAAC,EAAEX,CAAC,CAAC;MAClC,IAAI,CAACY,KAAK,GAAG,MAAM,MAAM,MAAM,EAAE;QAC/BF,EAAE,GAAG,OAAO,IAAI,CAACA,EAAE,GAAG,KAAK,KAAK,EAAE,CAAC,IAAIE,KAAK,GAAG,KAAK,CAAC;MACvD;IACF;IACA,IAAIH,OAAO,EAAE;MACXA,OAAO,GAAG,KAAK;MACf,IAAI,CAACP,iBAAiB,CAACQ,EAAE,CAAC,EAAE;QAC1B,OAAO,KAAK;MACd;IACF,CAAC,MAAM,IAAI,CAACJ,gBAAgB,CAACI,EAAE,CAAC,EAAE;MAChC,OAAO,KAAK;IACd;EACF;EACA,OAAO,CAACD,OAAO;AACjB","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js b/node_modules/@babel/helper-validator-identifier/lib/index.js new file mode 100644 index 0000000..76b2282 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/index.js @@ -0,0 +1,57 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "isIdentifierChar", { + enumerable: true, + get: function () { + return _identifier.isIdentifierChar; + } +}); +Object.defineProperty(exports, "isIdentifierName", { + enumerable: true, + get: function () { + return _identifier.isIdentifierName; + } +}); +Object.defineProperty(exports, "isIdentifierStart", { + enumerable: true, + get: function () { + return _identifier.isIdentifierStart; + } +}); +Object.defineProperty(exports, "isKeyword", { + enumerable: true, + get: function () { + return _keyword.isKeyword; + } +}); +Object.defineProperty(exports, "isReservedWord", { + enumerable: true, + get: function () { + return _keyword.isReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindOnlyReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindOnlyReservedWord; + } +}); +Object.defineProperty(exports, "isStrictBindReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictBindReservedWord; + } +}); +Object.defineProperty(exports, "isStrictReservedWord", { + enumerable: true, + get: function () { + return _keyword.isStrictReservedWord; + } +}); +var _identifier = require("./identifier.js"); +var _keyword = require("./keyword.js"); + +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/index.js.map b/node_modules/@babel/helper-validator-identifier/lib/index.js.map new file mode 100644 index 0000000..d985f3b --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"names":["_identifier","require","_keyword"],"sources":["../src/index.ts"],"sourcesContent":["export {\n isIdentifierName,\n isIdentifierChar,\n isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"./keyword.ts\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/node_modules/@babel/helper-validator-identifier/lib/keyword.js new file mode 100644 index 0000000..054cf84 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js @@ -0,0 +1,35 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isKeyword = isKeyword; +exports.isReservedWord = isReservedWord; +exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord; +exports.isStrictBindReservedWord = isStrictBindReservedWord; +exports.isStrictReservedWord = isStrictReservedWord; +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} + +//# sourceMappingURL=keyword.js.map diff --git a/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map new file mode 100644 index 0000000..3471f78 --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/lib/keyword.js.map @@ -0,0 +1 @@ +{"version":3,"names":["reservedWords","keyword","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword"],"sources":["../src/keyword.ts"],"sourcesContent":["const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n"],"mappings":";;;;;;;;;;AAAA,MAAMA,aAAa,GAAG;EACpBC,OAAO,EAAE,CACP,OAAO,EACP,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,CACT;EACDC,MAAM,EAAE,CACN,YAAY,EACZ,WAAW,EACX,KAAK,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,CACR;EACDC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW;AAClC,CAAC;AACD,MAAMC,QAAQ,GAAG,IAAIC,GAAG,CAACL,aAAa,CAACC,OAAO,CAAC;AAC/C,MAAMK,sBAAsB,GAAG,IAAID,GAAG,CAACL,aAAa,CAACE,MAAM,CAAC;AAC5D,MAAMK,0BAA0B,GAAG,IAAIF,GAAG,CAACL,aAAa,CAACG,UAAU,CAAC;AAK7D,SAASK,cAAcA,CAACC,IAAY,EAAEC,QAAiB,EAAW;EACvE,OAAQA,QAAQ,IAAID,IAAI,KAAK,OAAO,IAAKA,IAAI,KAAK,MAAM;AAC1D;AAOO,SAASE,oBAAoBA,CAACF,IAAY,EAAEC,QAAiB,EAAW;EAC7E,OAAOF,cAAc,CAACC,IAAI,EAAEC,QAAQ,CAAC,IAAIJ,sBAAsB,CAACM,GAAG,CAACH,IAAI,CAAC;AAC3E;AAMO,SAASI,4BAA4BA,CAACJ,IAAY,EAAW;EAClE,OAAOF,0BAA0B,CAACK,GAAG,CAACH,IAAI,CAAC;AAC7C;AAOO,SAASK,wBAAwBA,CACtCL,IAAY,EACZC,QAAiB,EACR;EACT,OACEC,oBAAoB,CAACF,IAAI,EAAEC,QAAQ,CAAC,IAAIG,4BAA4B,CAACJ,IAAI,CAAC;AAE9E;AAEO,SAASM,SAASA,CAACN,IAAY,EAAW;EAC/C,OAAOL,QAAQ,CAACQ,GAAG,CAACH,IAAI,CAAC;AAC3B","ignoreList":[]} \ No newline at end of file diff --git a/node_modules/@babel/helper-validator-identifier/package.json b/node_modules/@babel/helper-validator-identifier/package.json new file mode 100644 index 0000000..1aea38d --- /dev/null +++ b/node_modules/@babel/helper-validator-identifier/package.json @@ -0,0 +1,31 @@ +{ + "name": "@babel/helper-validator-identifier", + "version": "7.28.5", + "description": "Validate identifier/keywords name", + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-helper-validator-identifier" + }, + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "main": "./lib/index.js", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, + "./package.json": "./package.json" + }, + "devDependencies": { + "@unicode/unicode-17.0.0": "^1.6.10", + "charcodes": "^0.2.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "author": "The Babel Team (https://babel.dev/team)", + "type": "commonjs" +} \ No newline at end of file diff --git a/node_modules/@babel/parser/CHANGELOG.md b/node_modules/@babel/parser/CHANGELOG.md new file mode 100644 index 0000000..b3840ac --- /dev/null +++ b/node_modules/@babel/parser/CHANGELOG.md @@ -0,0 +1,1073 @@ +# Changelog + +> **Tags:** +> - :boom: [Breaking Change] +> - :eyeglasses: [Spec Compliance] +> - :rocket: [New Feature] +> - :bug: [Bug Fix] +> - :memo: [Documentation] +> - :house: [Internal] +> - :nail_care: [Polish] + +> Semver Policy: https://github.com/babel/babel/tree/main/packages/babel-parser#semver + +_Note: Gaps between patch versions are faulty, broken or test releases._ + +See the [Babel Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) for the pre-6.8.0 version Changelog. + +## 6.17.1 (2017-05-10) + +### :bug: Bug Fix + * Fix typo in flow spread operator error (Brian Ng) + * Fixed invalid number literal parsing ([#473](https://github.com/babel/babylon/pull/473)) (Alex Kuzmenko) + * Fix number parser ([#433](https://github.com/babel/babylon/pull/433)) (Alex Kuzmenko) + * Ensure non pattern shorthand props are checked for reserved words ([#479](https://github.com/babel/babylon/pull/479)) (Brian Ng) + * Remove jsx context when parsing arrow functions ([#475](https://github.com/babel/babylon/pull/475)) (Brian Ng) + * Allow super in class properties ([#499](https://github.com/babel/babylon/pull/499)) (Brian Ng) + * Allow flow class field to be named constructor ([#510](https://github.com/babel/babylon/pull/510)) (Brian Ng) + +## 6.17.0 (2017-04-20) + +### :bug: Bug Fix + * Cherry-pick #418 to 6.x ([#476](https://github.com/babel/babylon/pull/476)) (Sebastian McKenzie) + * Add support for invalid escapes in tagged templates ([#274](https://github.com/babel/babylon/pull/274)) (Kevin Gibbons) + * Throw error if new.target is used outside of a function ([#402](https://github.com/babel/babylon/pull/402)) (Brian Ng) + * Fix parsing of class properties ([#351](https://github.com/babel/babylon/pull/351)) (Kevin Gibbons) + * Fix parsing yield with dynamicImport ([#383](https://github.com/babel/babylon/pull/383)) (Brian Ng) + * Ensure consistent start args for parseParenItem ([#386](https://github.com/babel/babylon/pull/386)) (Brian Ng) + +## 7.0.0-beta.8 (2017-04-04) + +### New Feature +* Add support for flow type spread (#418) (Conrad Buck) +* Allow statics in flow interfaces (#427) (Brian Ng) + +### Bug Fix +* Fix predicate attachment to match flow parser (#428) (Brian Ng) +* Add extra.raw back to JSXText and JSXAttribute (#344) (Alex Rattray) +* Fix rest parameters with array and objects (#424) (Brian Ng) +* Fix number parser (#433) (Alex Kuzmenko) + +### Docs +* Fix CONTRIBUTING.md [skip ci] (#432) (Alex Kuzmenko) + +### Internal +* Use babel-register script when running babel smoke tests (#442) (Brian Ng) + +## 7.0.0-beta.7 (2017-03-22) + +### Spec Compliance +* Remove babylon plugin for template revision since it's stage-4 (#426) (Henry Zhu) + +### Bug Fix + +* Fix push-pop logic in flow (#405) (Daniel Tschinder) + +## 7.0.0-beta.6 (2017-03-21) + +### New Feature +* Add support for invalid escapes in tagged templates (#274) (Kevin Gibbons) + +### Polish +* Improves error message when super is called outside of constructor (#408) (Arshabh Kumar Agarwal) + +### Docs + +* [7.0] Moved value field in spec from ObjectMember to ObjectProperty as ObjectMethod's don't have it (#415) [skip ci] (James Browning) + +## 7.0.0-beta.5 (2017-03-21) + +### Bug Fix +* Throw error if new.target is used outside of a function (#402) (Brian Ng) +* Fix parsing of class properties (#351) (Kevin Gibbons) + +### Other + * Test runner: Detect extra property in 'actual' but not in 'expected'. (#407) (Andy) + * Optimize travis builds (#419) (Daniel Tschinder) + * Update codecov to 2.0 (#412) (Daniel Tschinder) + * Fix spec for ClassMethod: It doesn't have a function, it *is* a function. (#406) [skip ci] (Andy) + * Changed Non-existent RestPattern to RestElement which is what is actually parsed (#409) [skip ci] (James Browning) + * Upgrade flow to 0.41 (Daniel Tschinder) + * Fix watch command (#403) (Brian Ng) + * Update yarn lock (Daniel Tschinder) + * Fix watch command (#403) (Brian Ng) + * chore(package): update flow-bin to version 0.41.0 (#395) (greenkeeper[bot]) + * Add estree test for correct order of directives (Daniel Tschinder) + * Add DoExpression to spec (#364) (Alex Kuzmenko) + * Mention cloning of repository in CONTRIBUTING.md (#391) [skip ci] (Sumedh Nimkarde) + * Explain how to run only one test (#389) [skip ci] (Aaron Ang) + + ## 7.0.0-beta.4 (2017-03-01) + +* Don't consume async when checking for async func decl (#377) (Brian Ng) +* add `ranges` option [skip ci] (Henry Zhu) +* Don't parse class properties without initializers when classProperties is disabled and Flow is enabled (#300) (Andrew Levine) + +## 7.0.0-beta.3 (2017-02-28) + +- [7.0] Change RestProperty/SpreadProperty to RestElement/SpreadElement (#384) +- Merge changes from 6.x + +## 7.0.0-beta.2 (2017-02-20) + +- estree: correctly change literals in all cases (#368) (Daniel Tschinder) + +## 7.0.0-beta.1 (2017-02-20) + +- Fix negative number literal typeannotations (#366) (Daniel Tschinder) +- Update contributing with more test info [skip ci] (#355) (Brian Ng) + +## 7.0.0-beta.0 (2017-02-15) + +- Reintroduce Variance node (#333) (Daniel Tschinder) +- Rename NumericLiteralTypeAnnotation to NumberLiteralTypeAnnotation (#332) (Charles Pick) +- [7.0] Remove ForAwaitStatement, add await flag to ForOfStatement (#349) (Brandon Dail) +- chore(package): update ava to version 0.18.0 (#345) (greenkeeper[bot]) +- chore(package): update babel-plugin-istanbul to version 4.0.0 (#350) (greenkeeper[bot]) +- Change location of ObjectTypeIndexer to match flow (#228) (Daniel Tschinder) +- Rename flow AST Type ExistentialTypeParam to ExistsTypeAnnotation (#322) (Toru Kobayashi) +- Revert "Temporary rollback for erroring on trailing comma with spread (#154)" (#290) (Daniel Tschinder) +- Remove classConstructorCall plugin (#291) (Brian Ng) +- Update yarn.lock (Daniel Tschinder) +- Update cross-env to 3.x (Daniel Tschinder) +- [7.0] Remove node 0.10, 0.12 and 5 from Travis (#284) (Sergey Rubanov) +- Remove `String.fromCodePoint` shim (#279) (Mathias Bynens) + +## 6.16.1 (2017-02-23) + +### :bug: Regression + +- Revert "Fix export default async function to be FunctionDeclaration" ([#375](https://github.com/babel/babylon/pull/375)) + +Need to modify Babel for this AST node change, so moving to 7.0. + +- Revert "Don't parse class properties without initializers when classProperties plugin is disabled, and Flow is enabled" ([#376](https://github.com/babel/babylon/pull/376)) + +[react-native](https://github.com/facebook/react-native/issues/12542) broke with this so we reverted. + +## 6.16.0 (2017-02-23) + +### :rocket: New Feature + +***ESTree*** compatibility as plugin ([#277](https://github.com/babel/babylon/pull/277)) (Daniel Tschinder) + +We finally introduce a new compatibility layer for ESTree. To put babylon into ESTree-compatible mode the new plugin `estree` can be enabled. In this mode the parser will output an AST that is compliant to the specs of [ESTree](https://github.com/estree/estree/) + +We highly recommend everyone who uses babylon outside of babel to use this plugin. This will make it much easier for users to switch between different ESTree-compatible parsers. We so far tested several projects with different parsers and exchanged their parser to babylon and in nearly all cases it worked out of the box. Some other estree-compatible parsers include `acorn`, `esprima`, `espree`, `flow-parser`, etc. + +To enable `estree` mode simply add the plugin in the config: +```json +{ + "plugins": [ "estree" ] +} +``` + +If you want to migrate your project from non-ESTree mode to ESTree, have a look at our [Readme](https://github.com/babel/babylon/#output), where all deviations are mentioned. + +Add a parseExpression public method ([#213](https://github.com/babel/babylon/pull/213)) (jeromew) + +Babylon exports a new function to parse a single expression + +```js +import { parseExpression } from 'babylon'; + +const ast = parseExpression('x || y && z', options); +``` + +The returned AST will only consist of the expression. The options are the same as for `parse()` + +Add startLine option ([#346](https://github.com/babel/babylon/pull/346)) (Raphael Mu) + +A new option was added to babylon allowing to change the initial linenumber for the first line which is usually `1`. +Changing this for example to `100` will make line `1` of the input source to be marked as line `100`, line `2` as `101`, line `3` as `102`, ... + +Function predicate declaration ([#103](https://github.com/babel/babylon/pull/103)) (Panagiotis Vekris) + +Added support for function predicates which flow introduced in version 0.33.0 + +```js +declare function is_number(x: mixed): boolean %checks(typeof x === "number"); +``` + +Allow imports in declare module ([#315](https://github.com/babel/babylon/pull/315)) (Daniel Tschinder) + +Added support for imports within module declarations which flow introduced in version 0.37.0 + +```js +declare module "C" { + import type { DT } from "D"; + declare export type CT = { D: DT }; +} +``` + +### :eyeglasses: Spec Compliance + +Forbid semicolons after decorators in classes ([#352](https://github.com/babel/babylon/pull/352)) (Kevin Gibbons) + +This example now correctly throws an error when there is a semicolon after the decorator: + +```js +class A { +@a; +foo(){} +} +``` + +Keywords are not allowed as local specifier ([#307](https://github.com/babel/babylon/pull/307)) (Daniel Tschinder) + +Using keywords in imports is not allowed anymore: + +```js +import { default } from "foo"; +import { a as debugger } from "foo"; +``` + +Do not allow overwritting of primitive types ([#314](https://github.com/babel/babylon/pull/314)) (Daniel Tschinder) + +In flow it is now forbidden to overwrite the primitive types `"any"`, `"mixed"`, `"empty"`, `"bool"`, `"boolean"`, `"number"`, `"string"`, `"void"` and `"null"` with your own type declaration. + +Disallow import type { type a } from … ([#305](https://github.com/babel/babylon/pull/305)) (Daniel Tschinder) + +The following code now correctly throws an error + +```js +import type { type a } from "foo"; +``` + +Don't parse class properties without initializers when classProperties is disabled and Flow is enabled ([#300](https://github.com/babel/babylon/pull/300)) (Andrew Levine) + +Ensure that you enable the `classProperties` plugin in order to enable correct parsing of class properties. Prior to this version it was possible to parse them by enabling the `flow` plugin but this was not intended the behaviour. + +If you enable the flow plugin you can only define the type of the class properties, but not initialize them. + +Fix export default async function to be FunctionDeclaration ([#324](https://github.com/babel/babylon/pull/324)) (Daniel Tschinder) + +Parsing the following code now returns a `FunctionDeclaration` AST node instead of `FunctionExpression`. + +```js +export default async function bar() {}; +``` + +### :nail_care: Polish + +Improve error message on attempt to destructure named import ([#288](https://github.com/babel/babylon/pull/288)) (Brian Ng) + +### :bug: Bug Fix + +Fix negative number literal typeannotations ([#366](https://github.com/babel/babylon/pull/366)) (Daniel Tschinder) + +Ensure takeDecorators is called on exported class ([#358](https://github.com/babel/babylon/pull/358)) (Brian Ng) + +ESTree: correctly change literals in all cases ([#368](https://github.com/babel/babylon/pull/368)) (Daniel Tschinder) + +Correctly convert RestProperty to Assignable ([#339](https://github.com/babel/babylon/pull/339)) (Daniel Tschinder) + +Fix #321 by allowing question marks in type params ([#338](https://github.com/babel/babylon/pull/338)) (Daniel Tschinder) + +Fix #336 by correctly setting arrow-param ([#337](https://github.com/babel/babylon/pull/337)) (Daniel Tschinder) + +Fix parse error when destructuring `set` with default value ([#317](https://github.com/babel/babylon/pull/317)) (Brian Ng) + +Fix ObjectTypeCallProperty static ([#298](https://github.com/babel/babylon/pull/298)) (Dan Harper) + + +### :house: Internal + +Fix generator-method-with-computed-name spec ([#360](https://github.com/babel/babylon/pull/360)) (Alex Rattray) + +Fix flow type-parameter-declaration test with unintended semantic ([#361](https://github.com/babel/babylon/pull/361)) (Alex Rattray) + +Cleanup and splitup parser functions ([#295](https://github.com/babel/babylon/pull/295)) (Daniel Tschinder) + +chore(package): update flow-bin to version 0.38.0 ([#313](https://github.com/babel/babylon/pull/313)) (greenkeeper[bot]) + +Call inner function instead of 1:1 copy to plugin ([#294](https://github.com/babel/babylon/pull/294)) (Daniel Tschinder) + +Update eslint-config-babel to the latest version 🚀 ([#299](https://github.com/babel/babylon/pull/299)) (greenkeeper[bot]) + +Update eslint-config-babel to the latest version 🚀 ([#293](https://github.com/babel/babylon/pull/293)) (greenkeeper[bot]) + +devDeps: remove eslint-plugin-babel ([#292](https://github.com/babel/babylon/pull/292)) (Kai Cataldo) + +Correct indent eslint rule config ([#276](https://github.com/babel/babylon/pull/276)) (Daniel Tschinder) + +Fail tests that have expected.json and throws-option ([#285](https://github.com/babel/babylon/pull/285)) (Daniel Tschinder) + +### :memo: Documentation + +Update contributing with more test info [skip ci] ([#355](https://github.com/babel/babylon/pull/355)) (Brian Ng) + +Update API documentation ([#330](https://github.com/babel/babylon/pull/330)) (Timothy Gu) + +Added keywords to package.json ([#323](https://github.com/babel/babylon/pull/323)) (Dmytro) + +AST spec: fix casing of `RegExpLiteral` ([#318](https://github.com/babel/babylon/pull/318)) (Mathias Bynens) + +## 6.15.0 (2017-01-10) + +### :eyeglasses: Spec Compliance + +Add support for Flow shorthand import type ([#267](https://github.com/babel/babylon/pull/267)) (Jeff Morrison) + +This change implements flows new shorthand import syntax +and where previously you had to write this code: + +```js +import {someValue} from "blah"; +import type {someType} from "blah"; +import typeof {someOtherValue} from "blah"; +``` + +you can now write it like this: + +```js +import { + someValue, + type someType, + typeof someOtherValue, +} from "blah"; +``` + +For more information look at [this](https://github.com/facebook/flow/pull/2890) pull request. + +flow: allow leading pipes in all positions ([#256](https://github.com/babel/babylon/pull/256)) (Vladimir Kurchatkin) + +This change now allows a leading pipe everywhere types can be used: +```js +var f = (x): | 1 | 2 => 1; +``` + +Throw error when exporting non-declaration ([#241](https://github.com/babel/babylon/pull/241)) (Kai Cataldo) + +Previously babylon parsed the following exports, although they are not valid: +```js +export typeof foo; +export new Foo(); +export function() {}; +export for (;;); +export while(foo); +``` + +### :bug: Bug Fix + +Don't set inType flag when parsing property names ([#266](https://github.com/babel/babylon/pull/266)) (Vladimir Kurchatkin) + +This fixes parsing of this case: + +```js +const map = { + [age <= 17] : 'Too young' +}; +``` + +Fix source location for JSXEmptyExpression nodes (fixes #248) ([#249](https://github.com/babel/babylon/pull/249)) (James Long) + +The following case produced an invalid AST +```js +
{/* foo */}
+``` + +Use fromCodePoint to convert high value unicode entities ([#243](https://github.com/babel/babylon/pull/243)) (Ryan Duffy) + +When high value unicode entities (e.g. 💩) were used in the input source code they are now correctly encoded in the resulting AST. + +Rename folder to avoid Windows-illegal characters ([#281](https://github.com/babel/babylon/pull/281)) (Ryan Plant) + +Allow this.state.clone() when parsing decorators ([#262](https://github.com/babel/babylon/pull/262)) (Alex Rattray) + +### :house: Internal + +User external-helpers ([#254](https://github.com/babel/babylon/pull/254)) (Daniel Tschinder) + +Add watch script for dev ([#234](https://github.com/babel/babylon/pull/234)) (Kai Cataldo) + +Freeze current plugins list for "*" option, and remove from README.md ([#245](https://github.com/babel/babylon/pull/245)) (Andrew Levine) + +Prepare tests for multiple fixture runners. ([#240](https://github.com/babel/babylon/pull/240)) (Daniel Tschinder) + +Add some test coverage for decorators stage-0 plugin ([#250](https://github.com/babel/babylon/pull/250)) (Andrew Levine) + +Refactor tokenizer types file ([#263](https://github.com/babel/babylon/pull/263)) (Sven SAULEAU) + +Update eslint-config-babel to the latest version 🚀 ([#273](https://github.com/babel/babylon/pull/273)) (greenkeeper[bot]) + +chore(package): update rollup to version 0.41.0 ([#272](https://github.com/babel/babylon/pull/272)) (greenkeeper[bot]) + +chore(package): update flow-bin to version 0.37.0 ([#255](https://github.com/babel/babylon/pull/255)) (greenkeeper[bot]) + +## 6.14.1 (2016-11-17) + +### :bug: Bug Fix + +Allow `"plugins": ["*"]` ([#229](https://github.com/babel/babylon/pull/229)) (Daniel Tschinder) + +```js +{ + "plugins": ["*"] +} +``` + +Will include all parser plugins instead of specifying each one individually. Useful for tools like babel-eslint, jscodeshift, and ast-explorer. + +## 6.14.0 (2016-11-16) + +### :eyeglasses: Spec Compliance + +Throw error for reserved words `enum` and `await` ([#195](https://github.com/babel/babylon/pull/195)) (Kai Cataldo) + +[11.6.2.2 Future Reserved Words](http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words) + +Babylon will throw for more reserved words such as `enum` or `await` (in strict mode). + +``` +class enum {} // throws +class await {} // throws in strict mode (module) +``` + +Optional names for function types and object type indexers ([#197](https://github.com/babel/babylon/pull/197)) (Gabe Levi) + +So where you used to have to write + +```js +type A = (x: string, y: boolean) => number; +type B = (z: string) => number; +type C = { [key: string]: number }; +``` + +you can now write (with flow 0.34.0) + +```js +type A = (string, boolean) => number; +type B = string => number; +type C = { [string]: number }; +``` + +Parse flow nested array type annotations like `number[][]` ([#219](https://github.com/babel/babylon/pull/219)) (Bernhard Häussner) + +Supports these form now of specifying array types: + +```js +var a: number[][][][]; +var b: string[][]; +``` + +### :bug: Bug Fix + +Correctly eat semicolon at the end of `DelcareModuleExports` ([#223](https://github.com/babel/babylon/pull/223)) (Daniel Tschinder) + +``` +declare module "foo" { declare module.exports: number } +declare module "foo" { declare module.exports: number; } // also allowed now +``` + +### :house: Internal + + * Count Babel tests towards Babylon code coverage ([#182](https://github.com/babel/babylon/pull/182)) (Moti Zilberman) + * Fix strange line endings ([#214](https://github.com/babel/babylon/pull/214)) (Thomas Grainger) + * Add node 7 (Daniel Tschinder) + * chore(package): update flow-bin to version 0.34.0 ([#204](https://github.com/babel/babylon/pull/204)) (Greenkeeper) + +## v6.13.1 (2016-10-26) + +### :nail_care: Polish + +- Use rollup for bundling to speed up startup time ([#190](https://github.com/babel/babylon/pull/190)) ([@drewml](https://github.com/DrewML)) + +```js +const babylon = require('babylon'); +const ast = babylon.parse('var foo = "lol";'); +``` + +With that test case, there was a ~95ms savings by removing the need for node to build/traverse the dependency graph. + +**Without bundling** +![image](https://cloud.githubusercontent.com/assets/5233399/19420264/3133497e-93ad-11e6-9a6a-2da59c4f5c13.png) + +**With bundling** +![image](https://cloud.githubusercontent.com/assets/5233399/19420267/388f556e-93ad-11e6-813e-7c5c396be322.png) + +- add clean command [skip ci] ([#201](https://github.com/babel/babylon/pull/201)) (Henry Zhu) +- add ForAwaitStatement (async generator already added) [skip ci] ([#196](https://github.com/babel/babylon/pull/196)) (Henry Zhu) + +## v6.13.0 (2016-10-21) + +### :eyeglasses: Spec Compliance + +Property variance type annotations for Flow plugin ([#161](https://github.com/babel/babylon/pull/161)) (Sam Goldman) + +> See https://flowtype.org/docs/variance.html for more information + +```js +type T = { +p: T }; +interface T { -p: T }; +declare class T { +[k:K]: V }; +class T { -[k:K]: V }; +class C2 { +p: T = e }; +``` + +Raise error on duplicate definition of __proto__ ([#183](https://github.com/babel/babylon/pull/183)) (Moti Zilberman) + +```js +({ __proto__: 1, __proto__: 2 }) // Throws an error now +``` + +### :bug: Bug Fix + +Flow: Allow class properties to be named `static` ([#184](https://github.com/babel/babylon/pull/184)) (Moti Zilberman) + +```js +declare class A { + static: T; +} +``` + +Allow "async" as identifier for object literal property shorthand ([#187](https://github.com/babel/babylon/pull/187)) (Andrew Levine) + +```js +var foo = { async, bar }; +``` + +### :nail_care: Polish + +Fix flowtype and add inType to state ([#189](https://github.com/babel/babylon/pull/189)) (Daniel Tschinder) + +> This improves the performance slightly (because of hidden classes) + +### :house: Internal + +Fix .gitattributes line ending setting ([#191](https://github.com/babel/babylon/pull/191)) (Moti Zilberman) + +Increase test coverage ([#175](https://github.com/babel/babylon/pull/175) (Moti Zilberman) + +Readd missin .eslinignore for IDEs (Daniel Tschinder) + +Error on missing expected.json fixture in CI ([#188](https://github.com/babel/babylon/pull/188)) (Moti Zilberman) + +Add .gitattributes and .editorconfig for LF line endings ([#179](https://github.com/babel/babylon/pull/179)) (Moti Zilberman) + +Fixes two tests that are failing after the merge of #172 ([#177](https://github.com/babel/babylon/pull/177)) (Moti Zilberman) + +## v6.12.0 (2016-10-14) + +### :eyeglasses: Spec Compliance + +Implement import() syntax ([#163](https://github.com/babel/babylon/pull/163)) (Jordan Gensler) + +#### Dynamic Import + +- Proposal Repo: https://github.com/domenic/proposal-dynamic-import +- Championed by [@domenic](https://github.com/domenic) +- stage-2 +- [sept-28 tc39 notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-09/sept-28.md#113a-import) + +> This repository contains a proposal for adding a "function-like" import() module loading syntactic form to JavaScript + +```js +import(`./section-modules/${link.dataset.entryModule}.js`) +.then(module => { + module.loadPageInto(main); +}) +``` + +Add EmptyTypeAnnotation ([#171](https://github.com/babel/babylon/pull/171)) (Sam Goldman) + +#### EmptyTypeAnnotation + +Just wasn't covered before. + +```js +type T = empty; +``` + +### :bug: Bug Fix + +Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels) + +```js +// was failing due to sparse array +export const { foo: [ ,, qux7 ] } = bar; +``` + +Allow keyword in Flow object declaration property names with type parameters ([#146](https://github.com/babel/babylon/pull/146)) (Dan Harper) + +```js +declare class X { + foobar(): void; + static foobar(): void; +} +``` + +Allow keyword in object/class property names with Flow type parameters ([#145](https://github.com/babel/babylon/pull/145)) (Dan Harper) + +```js +class Foo { + delete(item: T): T { + return item; + } +} +``` + +Allow typeAnnotations for yield expressions ([#174](https://github.com/babel/babylon/pull/174))) (Daniel Tschinder) + +```js +function *foo() { + const x = (yield 5: any); +} +``` + +### :nail_care: Polish + +Annotate more errors with expected token ([#172](https://github.com/babel/babylon/pull/172))) (Moti Zilberman) + +```js +// Unexpected token, expected ; (1:6) +{ set 1 } +``` + +### :house: Internal + +Remove kcheck ([#173](https://github.com/babel/babylon/pull/173))) (Daniel Tschinder) + +Also run flow, linting, babel tests on separate instances (add back node 0.10) + +## v6.11.6 (2016-10-12) + +### :bug: Bug Fix/Regression + +Fix crash when exporting with destructuring and sparse array ([#170](https://github.com/babel/babylon/pull/170)) (Jeroen Engels) + +```js +// was failing with `Cannot read property 'type' of null` because of null identifiers +export const { foo: [ ,, qux7 ] } = bar; +``` + +## v6.11.5 (2016-10-12) + +### :eyeglasses: Spec Compliance + +Fix: Check for duplicate named exports in exported destructuring assignments ([#144](https://github.com/babel/babylon/pull/144)) (Kai Cataldo) + +```js +// `foo` has already been exported. Exported identifiers must be unique. (2:20) +export function foo() {}; +export const { a: [{foo}] } = bar; +``` + +Fix: Check for duplicate named exports in exported rest elements/properties ([#164](https://github.com/babel/babylon/pull/164)) (Kai Cataldo) + +```js +// `foo` has already been exported. Exported identifiers must be unique. (2:22) +export const foo = 1; +export const [bar, ...foo] = baz; +``` + +### :bug: Bug Fix + +Fix: Allow identifier `async` for default param in arrow expression ([#165](https://github.com/babel/babylon/pull/165)) (Kai Cataldo) + +```js +// this is ok now +const test = ({async = true}) => {}; +``` + +### :nail_care: Polish + +Babylon will now print out the token it's expecting if there's a `SyntaxError` ([#150](https://github.com/babel/babylon/pull/150)) (Daniel Tschinder) + +```bash +# So in the case of a missing ending curly (`}`) +Module build failed: SyntaxError: Unexpected token, expected } (30:0) + 28 | } + 29 | +> 30 | + | ^ +``` + +## v6.11.4 (2016-10-03) + +Temporary rollback for erroring on trailing comma with spread (#154) (Henry Zhu) + +## v6.11.3 (2016-10-01) + +### :eyeglasses: Spec Compliance + +Add static errors for object rest (#149) ([@danez](https://github.com/danez)) + +> https://github.com/sebmarkbage/ecmascript-rest-spread + +Object rest copies the *rest* of properties from the right hand side `obj` starting from the left to right. + +```js +let { x, y, ...z } = { x: 1, y: 2, z: 3 }; +// x = 1 +// y = 2 +// z = { z: 3 } +``` + +#### New Syntax Errors: + +**SyntaxError**: The rest element has to be the last element when destructuring (1:10) +```bash +> 1 | let { ...x, y, z } = { x: 1, y: 2, z: 3}; + | ^ +# Previous behavior: +# x = { x: 1, y: 2, z: 3 } +# y = 2 +# z = 3 +``` + +Before, this was just a more verbose way of shallow copying `obj` since it doesn't actually do what you think. + +**SyntaxError**: Cannot have multiple rest elements when destructuring (1:13) + +```bash +> 1 | let { x, ...y, ...z } = { x: 1, y: 2, z: 3}; + | ^ +# Previous behavior: +# x = 1 +# y = { y: 2, z: 3 } +# z = { y: 2, z: 3 } +``` + +Before y and z would just be the same value anyway so there is no reason to need to have both. + +**SyntaxError**: A trailing comma is not permitted after the rest element (1:16) + +```js +let { x, y, ...z, } = obj; +``` + +The rationale for this is that the use case for trailing comma is that you can add something at the end without affecting the line above. Since a RestProperty always has to be the last property it doesn't make sense. + +--- + +get / set are valid property names in default assignment (#142) ([@jezell](https://github.com/jezell)) + +```js +// valid +function something({ set = null, get = null }) {} +``` + +## v6.11.2 (2016-09-23) + +### Bug Fix + +- [#139](https://github.com/babel/babylon/issues/139) Don't do the duplicate check if not an identifier (#140) @hzoo + +```js +// regression with duplicate export check +SyntaxError: ./typography.js: `undefined` has already been exported. Exported identifiers must be unique. (22:13) + 20 | + 21 | export const { rhythm } = typography; +> 22 | export const { TypographyStyle } = typography +``` + +Bail out for now, and make a change to account for destructuring in the next release. + +## 6.11.1 (2016-09-22) + +### Bug Fix +- [#137](https://github.com/babel/babylon/pull/137) - Fix a regression with duplicate exports - it was erroring on all keys in `Object.prototype`. @danez + +```javascript +export toString from './toString'; +``` + +```bash +`toString` has already been exported. Exported identifiers must be unique. (1:7) +> 1 | export toString from './toString'; + | ^ + 2 | +``` + +## 6.11.0 (2016-09-22) + +### Spec Compliance (will break CI) + +- Disallow duplicate named exports ([#107](https://github.com/babel/babylon/pull/107)) @kaicataldo + +```js +// Only one default export allowed per module. (2:9) +export default function() {}; +export { foo as default }; + +// Only one default export allowed per module. (2:0) +export default {}; +export default function() {}; + +// `Foo` has already been exported. Exported identifiers must be unique. (2:0) +export { Foo }; +export class Foo {}; +``` + +### New Feature (Syntax) + +- Add support for computed class property names ([#121](https://github.com/babel/babylon/pull/121)) @motiz88 + +```js +// AST +interface ClassProperty <: Node { + type: "ClassProperty"; + key: Identifier; + value: Expression; + computed: boolean; // added +} +``` + +```js +// with "plugins": ["classProperties"] +class Foo { + [x] + ['y'] +} + +class Bar { + [p] + [m] () {} +} + ``` + +### Bug Fix + +- Fix `static` property falling through in the declare class Flow AST ([#135](https://github.com/babel/babylon/pull/135)) @danharper + +```js +declare class X { + a: number; + static b: number; // static + c: number; // this was being marked as static in the AST as well +} +``` + +### Polish + +- Rephrase "assigning/binding to rvalue" errors to include context ([#119](https://github.com/babel/babylon/pull/119)) @motiz88 + +```js +// Used to error with: +// SyntaxError: Assigning to rvalue (1:0) + +// Now: +// Invalid left-hand side in assignment expression (1:0) +3 = 4 + +// Invalid left-hand side in for-in statement (1:5) +for (+i in {}); +``` + +### Internal + +- Fix call to `this.parseMaybeAssign` with correct arguments ([#133](https://github.com/babel/babylon/pull/133)) @danez +- Add semver note to changelog ([#131](https://github.com/babel/babylon/pull/131)) @hzoo + +## 6.10.0 (2016-09-19) + +> We plan to include some spec compliance bugs in patch versions. An example was the multiple default exports issue. + +### Spec Compliance + +* Implement ES2016 check for simple parameter list in strict mode ([#106](https://github.com/babel/babylon/pull/106)) (Timothy Gu) + +> It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false. https://tc39.github.io/ecma262/2016/#sec-function-definitions-static-semantics-early-errors + +More Context: [tc39-notes](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-29.md#611-the-scope-of-use-strict-with-respect-to-destructuring-in-parameter-lists) + +For example: + +```js +// this errors because it uses destructuring and default parameters +// in a function with a "use strict" directive +function a([ option1, option2 ] = []) { + "use strict"; +} + ``` + +The solution would be to use a top level "use strict" or to remove the destructuring or default parameters when using a function + "use strict" or to. + +### New Feature + +* Exact object type annotations for Flow plugin ([#104](https://github.com/babel/babylon/pull/104)) (Basil Hosmer) + +Added to flow in https://github.com/facebook/flow/commit/c710c40aa2a115435098d6c0dfeaadb023cd39b8 + +Looks like: + +```js +var a : {| x: number, y: string |} = { x: 0, y: 'foo' }; +``` + +### Bug Fixes + +* Include `typeParameter` location in `ArrowFunctionExpression` ([#126](https://github.com/babel/babylon/pull/126)) (Daniel Tschinder) +* Error on invalid flow type annotation with default assignment ([#122](https://github.com/babel/babylon/pull/122)) (Dan Harper) +* Fix Flow return types on arrow functions ([#124](https://github.com/babel/babylon/pull/124)) (Dan Harper) + +### Misc + +* Add tests for export extensions ([#127](https://github.com/babel/babylon/pull/127)) (Daniel Tschinder) +* Fix Contributing guidelines [skip ci] (Daniel Tschinder) + +## 6.9.2 (2016-09-09) + +The only change is to remove the `babel-runtime` dependency by compiling with Babel's ES2015 loose mode. So using babylon standalone should be smaller. + +## 6.9.1 (2016-08-23) + +This release contains mainly small bugfixes but also updates babylons default mode to es2017. The features for `exponentiationOperator`, `asyncFunctions` and `trailingFunctionCommas` which previously needed to be activated via plugin are now enabled by default and the plugins are now no-ops. + +### Bug Fixes + +- Fix issues with default object params in async functions ([#96](https://github.com/babel/babylon/pull/96)) @danez +- Fix issues with flow-types and async function ([#95](https://github.com/babel/babylon/pull/95)) @danez +- Fix arrow functions with destructuring, types & default value ([#94](https://github.com/babel/babylon/pull/94)) @danharper +- Fix declare class with qualified type identifier ([#97](https://github.com/babel/babylon/pull/97)) @danez +- Remove exponentiationOperator, asyncFunctions, trailingFunctionCommas plugins and enable them by default ([#98](https://github.com/babel/babylon/pull/98)) @danez + +## 6.9.0 (2016-08-16) + +### New syntax support + +- Add JSX spread children ([#42](https://github.com/babel/babylon/pull/42)) @calebmer + +(Be aware that React is not going to support this syntax) + +```js +
+ {...todos.map(todo => )} +
+``` + +- Add support for declare module.exports ([#72](https://github.com/babel/babylon/pull/72)) @danez + +```js +declare module "foo" { + declare module.exports: {} +} +``` + +### New Features + +- If supplied, attach filename property to comment node loc. ([#80](https://github.com/babel/babylon/pull/80)) @divmain +- Add identifier name to node loc field ([#90](https://github.com/babel/babylon/pull/90)) @kittens + +### Bug Fixes + +- Fix exponential operator to behave according to spec ([#75](https://github.com/babel/babylon/pull/75)) @danez +- Fix lookahead to not add comments to arrays which are not cloned ([#76](https://github.com/babel/babylon/pull/76)) @danez +- Fix accidental fall-through in Flow type parsing. ([#82](https://github.com/babel/babylon/pull/82)) @xiemaisi +- Only allow declares inside declare module ([#73](https://github.com/babel/babylon/pull/73)) @danez +- Small fix for parsing type parameter declarations ([#83](https://github.com/babel/babylon/pull/83)) @gabelevi +- Fix arrow param locations with flow types ([#57](https://github.com/babel/babylon/pull/57)) @danez +- Fixes SyntaxError position with flow optional type ([#65](https://github.com/babel/babylon/pull/65)) @danez + +### Internal + +- Add codecoverage to tests @danez +- Fix tests to not save expected output if we expect the test to fail @danez +- Make a shallow clone of babel for testing @danez +- chore(package): update cross-env to version 2.0.0 ([#77](https://github.com/babel/babylon/pull/77)) @greenkeeperio-bot +- chore(package): update ava to version 0.16.0 ([#86](https://github.com/babel/babylon/pull/86)) @greenkeeperio-bot +- chore(package): update babel-plugin-istanbul to version 2.0.0 ([#89](https://github.com/babel/babylon/pull/89)) @greenkeeperio-bot +- chore(package): update nyc to version 8.0.0 ([#88](https://github.com/babel/babylon/pull/88)) @greenkeeperio-bot + +## 6.8.4 (2016-07-06) + +### Bug Fixes + +- Fix the location of params, when flow and default value used ([#68](https://github.com/babel/babylon/pull/68)) @danez + +## 6.8.3 (2016-07-02) + +### Bug Fixes + +- Fix performance regression introduced in 6.8.2 with conditionals ([#63](https://github.com/babel/babylon/pull/63)) @danez + +## 6.8.2 (2016-06-24) + +### Bug Fixes + +- Fix parse error with yielding jsx elements in generators `function* it() { yield ; }` ([#31](https://github.com/babel/babylon/pull/31)) @eldereal +- When cloning nodes do not clone its comments ([#24](https://github.com/babel/babylon/pull/24)) @danez +- Fix parse errors when using arrow functions with an spread element and return type `(...props): void => {}` ([#10](https://github.com/babel/babylon/pull/10)) @danez +- Fix leading comments added from previous node ([#23](https://github.com/babel/babylon/pull/23)) @danez +- Fix parse errors with flow's optional arguments `(arg?) => {}` ([#19](https://github.com/babel/babylon/pull/19)) @danez +- Support negative numeric type literals @kittens +- Remove line terminator restriction after await keyword @kittens +- Remove grouped type arrow restriction as it seems flow no longer has it @kittens +- Fix parse error with generic methods that have the name `get` or `set` `class foo { get() {} }` ([#55](https://github.com/babel/babylon/pull/55)) @vkurchatkin +- Fix parse error with arrow functions that have flow type parameter declarations `(x: T): T => x;` ([#54](https://github.com/babel/babylon/pull/54)) @gabelevi + +### Documentation + +- Document AST differences from ESTree ([#41](https://github.com/babel/babylon/pull/41)) @nene +- Move ast spec from babel/babel ([#46](https://github.com/babel/babylon/pull/46)) @hzoo + +### Internal + +- Enable skipped tests ([#16](https://github.com/babel/babylon/pull/16)) @danez +- Add script to test latest version of babylon with babel ([#21](https://github.com/babel/babylon/pull/21)) @danez +- Upgrade test runner ava @kittens +- Add missing generate-identifier-regex script @kittens +- Rename parser context types @kittens +- Add node v6 to travis testing @hzoo +- Update to Unicode v9 ([#45](https://github.com/babel/babylon/pull/45)) @mathiasbynens + +## 6.8.1 (2016-06-06) + +### New Feature + +- Parse type parameter declarations with defaults like `type Foo = T` + +### Bug Fixes +- Type parameter declarations need 1 or more type parameters. +- The existential type `*` is not a valid type parameter. +- The existential type `*` is a primary type + +### Spec Compliance +- The param list for type parameter declarations now consists of `TypeParameter` nodes +- New `TypeParameter` AST Node (replaces using the `Identifier` node before) + +``` +interface TypeParameter <: Node { + bound: TypeAnnotation; + default: TypeAnnotation; + name: string; + variance: "plus" | "minus"; +} +``` + +## 6.8.0 (2016-05-02) + +#### New Feature + +##### Parse Method Parameter Decorators ([#12](https://github.com/babel/babylon/pull/12)) + +> [Method Parameter Decorators](https://goo.gl/8MmCMG) is now a TC39 [stage 0 proposal](https://github.com/tc39/ecma262/blob/master/stage0.md). + +Examples: + +```js +class Foo { + constructor(@foo() x, @bar({ a: 123 }) @baz() y) {} +} + +export default function func(@foo() x, @bar({ a: 123 }) @baz() y) {} + +var obj = { + method(@foo() x, @bar({ a: 123 }) @baz() y) {} +}; +``` + +##### Parse for-await statements (w/ `asyncGenerators` plugin) ([#17](https://github.com/babel/babylon/pull/17)) + +There is also a new node type, `ForAwaitStatement`. + +> [Async generators and for-await](https://github.com/tc39/proposal-async-iteration) are now a [stage 2 proposal](https://github.com/tc39/ecma262#current-proposals). + +Example: + +```js +async function f() { + for await (let x of y); +} +``` diff --git a/node_modules/@babel/parser/LICENSE b/node_modules/@babel/parser/LICENSE new file mode 100644 index 0000000..d4c7fc5 --- /dev/null +++ b/node_modules/@babel/parser/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2012-2014 by various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/@babel/parser/README.md b/node_modules/@babel/parser/README.md new file mode 100644 index 0000000..a9463e8 --- /dev/null +++ b/node_modules/@babel/parser/README.md @@ -0,0 +1,19 @@ +# @babel/parser + +> A JavaScript parser + +See our website [@babel/parser](https://babeljs.io/docs/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%22+is%3Aopen) associated with this package. + +## Install + +Using npm: + +```sh +npm install --save-dev @babel/parser +``` + +or using yarn: + +```sh +yarn add @babel/parser --dev +``` diff --git a/node_modules/@babel/parser/bin/babel-parser.js b/node_modules/@babel/parser/bin/babel-parser.js new file mode 100644 index 0000000..4808c5e --- /dev/null +++ b/node_modules/@babel/parser/bin/babel-parser.js @@ -0,0 +1,15 @@ +#!/usr/bin/env node +/* eslint-disable no-var, unicorn/prefer-node-protocol */ + +var parser = require(".."); +var fs = require("fs"); + +var filename = process.argv[2]; +if (!filename) { + console.error("no filename specified"); +} else { + var file = fs.readFileSync(filename, "utf8"); + var ast = parser.parse(file); + + console.log(JSON.stringify(ast, null, " ")); +} diff --git a/node_modules/@babel/parser/lib/index.js b/node_modules/@babel/parser/lib/index.js new file mode 100644 index 0000000..154aba2 --- /dev/null +++ b/node_modules/@babel/parser/lib/index.js @@ -0,0 +1,14582 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +function _objectWithoutPropertiesLoose(r, e) { + if (null == r) return {}; + var t = {}; + for (var n in r) if ({}.hasOwnProperty.call(r, n)) { + if (-1 !== e.indexOf(n)) continue; + t[n] = r[n]; + } + return t; +} +class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } +} +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } +} +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); +} +const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; +var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } +}; +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; +const toNodeDescription = node => node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[`${node.prefix}`] : NodeDescriptions[node.type]; +var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArity: `\`import()\` requires exactly one or two arguments.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverDiscardElement: "'void' must be followed by an expression when not used in a binding position.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.", + UnexpectedVoidPattern: "Unexpected void binding.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationExport: "Using declaration cannot be exported.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + VoidPatternCatchClauseParam: "A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.", + VoidPatternInitializer: "A void binding may not have an initializer.", + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + YieldNotInGeneratorFunction: "'yield' is only allowed within generator functions.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}; +var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." +}; +var ParseExpressionErrors = { + ParseExpressionEmptyInput: "Unexpected parseExpression() input: The input is empty or contains only comments.", + ParseExpressionExpectsEOF: ({ + unexpected + }) => `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \`${String.fromCodePoint(unexpected)}\`.` +}; +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = Object.assign({ + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.` +}, { + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' +}); +const _excluded = ["message"]; +function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); +} +function toParseErrorConstructor({ + toMessage, + code, + reasonCode, + syntaxPlugin +}) { + const hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins"; + const oldReasonCodes = { + AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter", + AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference", + SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter", + SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter", + SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType" + }; + if (oldReasonCodes[reasonCode]) { + reasonCode = oldReasonCodes[reasonCode]; + } + return function constructor(loc, details) { + const error = new SyntaxError(); + error.code = code; + error.reasonCode = reasonCode; + error.loc = loc; + error.pos = loc.index; + error.syntaxPlugin = syntaxPlugin; + if (hasMissingPlugin) { + error.missingPlugin = details.missingPlugin; + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details)); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref, + rest = _objectWithoutPropertiesLoose(_ref, _excluded); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; +} +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(ParseExpressionErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); +function createDefaultOptions() { + return { + sourceType: "script", + sourceFilename: undefined, + startIndex: 0, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + allowYieldOutsideFunction: false, + plugins: [], + strictMode: undefined, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true + }; +} +function getOptions(opts) { + const options = createDefaultOptions(); + if (opts == null) { + return options; + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + for (const key of Object.keys(options)) { + if (opts[key] != null) options[key] = opts[key]; + } + if (options.startLine === 1) { + if (opts.startIndex == null && options.startColumn > 0) { + options.startIndex = options.startColumn; + } else if (opts.startColumn == null && options.startIndex > 0) { + options.startColumn = options.startIndex; + } + } else if (opts.startColumn == null || opts.startIndex == null) { + if (opts.startIndex != null) { + throw new Error("With a `startLine > 1` you must also specify `startIndex` and `startColumn`."); + } + } + if (options.sourceType === "commonjs") { + if (opts.allowAwaitOutsideFunction != null) { + throw new Error("The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`."); + } + if (opts.allowReturnOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`."); + } + if (opts.allowNewTargetOutsideFunction != null) { + throw new Error("`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`."); + } + } + return options; +} +const { + defineProperty +} = Object; +const toUnenumerable = (object, key) => { + if (object) { + defineProperty(object, key, { + enumerable: false, + value: object[key] + }); + } +}; +function toESTreeLocation(node) { + toUnenumerable(node.loc.start, "index"); + toUnenumerable(node.loc.end, "index"); + return node; +} +var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.optionFlags & 256) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (_) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + estreeParseChainExpression(node, endLoc) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNodeAt(chain, "ChainExpression", endLoc); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + this.castNodeTo(expression, "Literal"); + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = this.castNodeTo(directive, "ExpressionStatement"); + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + fillOptionalPropertiesForTSESLint(node) {} + cloneEstreeStringLiteral(node) { + const { + start, + end, + loc, + range, + raw, + value + } = node; + const cloned = Object.create(node.constructor.prototype); + cloned.type = "Literal"; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.raw = raw; + cloned.value = value; + return cloned; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + parsePrivateName() { + const node = super.parsePrivateName(); + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + delete node.id; + node.name = name; + return this.castNodeTo(node, "PrivateIdentifier"); + } + isPrivateName(node) { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + delete funcNode.kind; + const { + typeParameters + } = node; + if (typeParameters) { + delete node.typeParameters; + funcNode.typeParameters = typeParameters; + this.resetStartLocationFromNode(funcNode, typeParameters); + } + const valueNode = this.castNodeTo(funcNode, "FunctionExpression"); + node.value = valueNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + if (type === "ObjectMethod") { + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + return this.finishNode(node, "Property"); + } else { + return this.finishNode(node, "MethodDefinition"); + } + } + nameIsConstructor(key) { + if (key.type === "Literal") return key.value === "constructor"; + return super.nameIsConstructor(key); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + this.castNodeTo(propertyNode, "PropertyDefinition"); + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + this.castNodeTo(propertyNode, "PropertyDefinition"); + propertyNode.computed = false; + return propertyNode; + } + parseClassAccessorProperty(node) { + const accessorPropertyNode = super.parseClassAccessorProperty(node); + if (!this.getPluginOption("estree", "classFeatures")) { + return accessorPropertyNode; + } + if (accessorPropertyNode.abstract && this.hasPlugin("typescript")) { + delete accessorPropertyNode.abstract; + this.castNodeTo(accessorPropertyNode, "TSAbstractAccessorProperty"); + } else { + this.castNodeTo(accessorPropertyNode, "AccessorProperty"); + } + return accessorPropertyNode; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + this.castNodeTo(node, "Property"); + } + return node; + } + finishObjectProperty(node) { + node.kind = "init"; + return this.finishNode(node, "Property"); + } + isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) { + this.raise(Errors.PatternHasAccessor, prop.key); + } else if (prop.type === "Property" && prop.method) { + this.raise(Errors.PatternHasMethod, prop.key); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + var _ref, _ref2; + this.castNodeTo(node, "ImportExpression"); + node.source = node.arguments[0]; + node.options = (_ref = node.arguments[1]) != null ? _ref : null; + node.attributes = (_ref2 = node.arguments[1]) != null ? _ref2 : null; + delete node.arguments; + delete node.callee; + } else if (node.type === "OptionalCallExpression") { + this.castNodeTo(node, "CallExpression"); + } else { + node.optional = false; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + this.castNodeTo(node, "ExportAllDeclaration"); + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + stopParseSubscript(base, state) { + const node = super.stopParseSubscript(base, state); + if (state.optionalChainMember) { + return this.estreeParseChainExpression(node, base.loc.end); + } + return node; + } + parseMember(base, startLoc, state, computed, optional) { + const node = super.parseMember(base, startLoc, state, computed, optional); + if (node.type === "OptionalMemberExpression") { + this.castNodeTo(node, "MemberExpression"); + } else { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set"); + } + castNodeTo(node, type) { + const result = super.castNodeTo(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + this.fillOptionalPropertiesForTSESLint(cloned); + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Literal") { + return this.cloneEstreeStringLiteral(node); + } + return super.cloneStringLiteral(node); + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + finishNode(node, type) { + const result = super.finishNode(node, type); + this.fillOptionalPropertiesForTSESLint(result); + return result; + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } +}; +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } +} +const types = { + brace: new TokContext("{"), + j_oTag: new TokContext("...", true) +}; +types.template = new TokContext("`", true); +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + this.updateContext = null; + } +} +const keywords$1 = new Map(); +function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; +} +function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); +} +let tokenTypeCounter = -1; +const tokenTypes = []; +const tokenLabels = []; +const tokenBinops = []; +const tokenBeforeExprs = []; +const tokenStartsExprs = []; +const tokenPrefixes = []; +function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; +} +function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; +} +const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("/<=/>=", 7), + gt: createBinop("/<=/>=", 7), + relational: createBinop("/<=/>=", 7), + bitShift: createBinop("<>/>>>", 8), + bitShiftL: createBinop("<>/>>>", 8), + bitShiftR: createBinop("<>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + placeholder: createToken("%%", { + startsExpr + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr + }), + jsxTagEnd: createToken("jsxTagEnd") +}; +function tokenIsIdentifier(token) { + return token >= 93 && token <= 133; +} +function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; +} +function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 133; +} +function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 137; +} +function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; +} +function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; +} +function tokenIsAssignment(token) { + return token >= 29 && token <= 33; +} +function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; +} +function tokenIsLoop(token) { + return token >= 90 && token <= 92; +} +function tokenIsKeyword(token) { + return token >= 58 && token <= 92; +} +function tokenIsOperator(token) { + return token >= 39 && token <= 59; +} +function tokenIsPostfix(token) { + return token === 34; +} +function tokenIsPrefix(token) { + return tokenPrefixes[token]; +} +function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; +} +function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; +} +function tokenLabelName(token) { + return tokenLabels[token]; +} +function tokenOperatorPrecedence(token) { + return tokenBinops[token]; +} +function tokenIsRightAssociative(token) { + return token === 57; +} +function tokenIsTemplate(token) { + return token >= 24 && token <= 25; +} +function getExportedToken(token) { + return tokenTypes[token]; +} +tokenTypes[8].updateContext = context => { + context.pop(); +}; +tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { + context.push(types.brace); +}; +tokenTypes[22].updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } +}; +tokenTypes[143].updateContext = context => { + context.push(types.j_expr, types.j_oTag); +}; +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} +function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} +class Scope { + constructor(flags) { + this.flags = 0; + this.names = new Map(); + this.firstLexicalName = ""; + this.flags = flags; + } +} +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get allowNewTarget() { + return (this.currentThisScopeFlags() & 512) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (1667 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get inBareCaseStatement() { + return (this.currentScope().flags & 256) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + let type = scope.names.get(name) || 0; + if (bindingType & 16) { + type = type | 4; + } else { + if (!scope.firstLexicalName) { + scope.firstLexicalName = name; + } + type = type | 2; + } + scope.names.set(name, type); + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.names.set(name, (scope.names.get(name) || 0) | 1); + this.maybeExportDefined(scope, name); + if (scope.flags & 1667) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.names.has(name); + } + const type = scope.names.get(name) || 0; + if (bindingType & 16) { + return (type & 2) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & 1) > 0; + } + return (type & 2) > 0 && !(scope.flags & 8 && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & 4) > 0; + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.names.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 1667) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (1667 | 64) && !(flags & 4)) { + return flags; + } + } + } +} +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } +} +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048 && !scope.declareFunctions.has(name)) { + const type = scope.names.get(name); + return (type & 4) > 0 || (type & 2) > 0; + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } +} +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}); +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; +function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; +} +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + finishToken(type, val) { + if (type !== 134 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } + throw this.unexpected(); + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(134)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + const bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc); + } + body.push(super.parseImport(bodyNode)); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + body.push(this.flowParseDeclare(bodyNode, true)); + } + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, { + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.default = false; + delete node.exportKind; + return this.castNodeTo(node, "DeclareExportDeclaration"); + } else { + return this.castNodeTo(node, "DeclareExportAllDeclaration"); + } + } + } + throw this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + this.castNodeTo(finished, "DeclareTypeAlias"); + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + this.castNodeTo(finished, "DeclareOpaqueType"); + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, { + reservedType: word + }); + } + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifier(liberal); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + flowParseTypeParameterInstantiationInExpression() { + if (this.reScan_lt() !== 47) return; + return this.flowParseTypeParameterInstantiation(); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + this.state.inType = true; + node.params = []; + this.flowInTopLevelContext(() => { + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + }); + this.state.inType = oldInType; + if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + if (this.reScan_lt() !== 47) return null; + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(135) || this.match(134) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, variance); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, variance); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, node.value.this); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value.this); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, property); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, node); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, node); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + { + const node = this.startNode(); + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 10: + { + const node = this.startNode(); + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + case 134: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(136)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc); + } + throw this.unexpected(); + case 135: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 136: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + throw this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + if (this.match(14)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + return ident; + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (type === 126 || tokenIsFlowInterfaceOrTypeOrOpaque(type)) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(514 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = newNode; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return newNode; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, startLoc); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, member.value); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, this.state.curPosition(), { + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation); + } + } + return exprList; + } + parseArrayLike(close, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, isTuple, refExpressionErrors); + if (refExpressionErrors != null && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, disallowCallExpression, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, method); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + node.superTypeParameters = this.flowParseTypeParameterInstantiationInExpression(); + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, param); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, param); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseFunctionParamType(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, param); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, param); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, param); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, param); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = this.cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = this.cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(this.offsetToSourcePos(node.start))) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && !this.state.noArrowAt.includes(this.sourceToOffsetPos(this.state.start))); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && (this.match(47) || this.match(51))) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition()); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, { + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext); + } + flowEnumErrorNumberMemberNotInitialized(loc, details) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, details) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 135: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 134: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, id, { + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, id, { + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, { + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, { + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, { + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + jsxParseOpeningElementAfterName(node) { + if (this.shouldParseTypes()) { + if (this.match(47) || this.match(51)) { + node.typeArguments = this.flowParseTypeParameterInstantiationInExpression(); + } + } + return super.jsxParseOpeningElementAfterName(node); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } +}; +const entities = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; +const lineBreak = /\r\n|[\r\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } +} +function hasNewLine(input, start, end) { + for (let i = start; i < end; i++) { + if (isNewLine(input.charCodeAt(i))) { + return true; + } + } + return false; +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } +} +const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?" +}); +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); +} +var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(143); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(142, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, this.state.startLoc); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(134, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(141, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(141)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, node); + } + return node; + case 143: + case 134: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(144)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(144); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(144)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(144); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 143: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 142: + children.push(this.parseLiteral(this.state.value, "JSXText")); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, closingElement); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, closingElement, { + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(143)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(143); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(144); + return; + } + if ((code === 34 || code === 39) && context === types.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(143); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 143) { + context.splice(-2, 2, types.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 143) { + context.push(types.j_oTag); + } else if (type === 144) { + const out = context[context.length - 1]; + if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; + } else { + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } +}; +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.tsNames = new Map(); + } +} +class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags === 1024) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags === 1024) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, loc, { + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + let type = scope.tsNames.get(name) || 0; + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.tsNames.set(name, type | 16); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + type = type | 1; + } + if (bindingType & 256) { + type = type | 2; + } + if (bindingType & 512) { + type = type | 4; + } + if (bindingType & 128) { + type = type | 8; + } + if (type) scope.tsNames.set(name, type); + } + isRedeclaredInScope(scope, name, bindingType) { + const type = scope.tsNames.get(name); + if ((type & 2) > 0) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = (type & 4) > 0; + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && (type & 8) > 0) { + if (scope.names.get(name) & 2) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && (type & 1) > 0) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + const type = scope.tsNames.get(name); + if ((type & 1) > 0 || (type & 16) > 0) { + return; + } + } + super.checkLocalExport(id); + } +} +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); +} +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + sourceToOffsetPos(sourcePos) { + return sourcePos + this.startIndex; + } + offsetToSourcePos(offsetPos) { + return offsetPos - this.startIndex; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } +} +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } +} +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } +} +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + const { + commentsLen + } = this.state; + if (this.comments.length !== commentsLen) { + this.comments.length = commentsLen; + } + this.comments.push(comment); + this.state.commentsLen++; + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + var _node$options; + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const node = commentWS.containingNode; + const commentStart = commentWS.start; + if (this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "ImportExpression": + adjustInnerComments(node, [node.source, (_node$options = node.options) != null ? _node$options : null], commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + case "TSEnumDeclaration": + adjustInnerComments(node, node.members, commentWS); + break; + case "TSEnumBody": + adjustInnerComments(node, node.members, commentWS); + break; + default: + { + if (node.type === "RecordExpression") { + adjustInnerComments(node, node.properties, commentWS); + break; + } + if (node.type === "TupleExpression") { + adjustInnerComments(node, node.elements, commentWS); + break; + } + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } +} +class State { + constructor() { + this.flags = 1024; + this.startIndex = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.labels = []; + this.commentsLen = 0; + this.commentStack = []; + this.pos = 0; + this.type = 140; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.context = [types.brace]; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + get strict() { + return (this.flags & 1) > 0; + } + set strict(v) { + if (v) this.flags |= 1;else this.flags &= -2; + } + init({ + strictMode, + sourceType, + startIndex, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.startIndex = startIndex; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position(startLine, startColumn, startIndex); + } + get maybeInArrowParameters() { + return (this.flags & 2) > 0; + } + set maybeInArrowParameters(v) { + if (v) this.flags |= 2;else this.flags &= -3; + } + get inType() { + return (this.flags & 4) > 0; + } + set inType(v) { + if (v) this.flags |= 4;else this.flags &= -5; + } + get noAnonFunctionType() { + return (this.flags & 8) > 0; + } + set noAnonFunctionType(v) { + if (v) this.flags |= 8;else this.flags &= -9; + } + get hasFlowComment() { + return (this.flags & 16) > 0; + } + set hasFlowComment(v) { + if (v) this.flags |= 16;else this.flags &= -17; + } + get isAmbientContext() { + return (this.flags & 32) > 0; + } + set isAmbientContext(v) { + if (v) this.flags |= 32;else this.flags &= -33; + } + get inAbstractClass() { + return (this.flags & 64) > 0; + } + set inAbstractClass(v) { + if (v) this.flags |= 64;else this.flags &= -65; + } + get inDisallowConditionalTypesContext() { + return (this.flags & 128) > 0; + } + set inDisallowConditionalTypesContext(v) { + if (v) this.flags |= 128;else this.flags &= -129; + } + get soloAwait() { + return (this.flags & 256) > 0; + } + set soloAwait(v) { + if (v) this.flags |= 256;else this.flags &= -257; + } + get inFSharpPipelineDirectBody() { + return (this.flags & 512) > 0; + } + set inFSharpPipelineDirectBody(v) { + if (v) this.flags |= 512;else this.flags &= -513; + } + get canStartJSXElement() { + return (this.flags & 1024) > 0; + } + set canStartJSXElement(v) { + if (v) this.flags |= 1024;else this.flags &= -1025; + } + get containsEsc() { + return (this.flags & 2048) > 0; + } + set containsEsc(v) { + if (v) this.flags |= 2048;else this.flags &= -2049; + } + get hasTopLevelAwait() { + return (this.flags & 4096) > 0; + } + set hasTopLevelAwait(v) { + if (v) this.flags |= 4096;else this.flags &= -4097; + } + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart, this.pos + this.startIndex); + } + clone() { + const state = new State(); + state.flags = this.flags; + state.startIndex = this.startIndex; + state.curLine = this.curLine; + state.lineStart = this.lineStart; + state.startLoc = this.startLoc; + state.endLoc = this.endLoc; + state.errors = this.errors.slice(); + state.potentialArrowAt = this.potentialArrowAt; + state.noArrowAt = this.noArrowAt.slice(); + state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice(); + state.topicContext = this.topicContext; + state.labels = this.labels.slice(); + state.commentsLen = this.commentsLen; + state.commentStack = this.commentStack.slice(); + state.pos = this.pos; + state.type = this.type; + state.value = this.value; + state.start = this.start; + state.end = this.end; + state.lastTokEndLoc = this.lastTokEndLoc; + state.lastTokStartLoc = this.lastTokStartLoc; + state.context = this.context.slice(); + state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos; + state.strictErrors = this.strictErrors; + state.tokensLength = this.tokensLength; + return state; + } +} +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2)); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} +function buildPosition(pos, lineStart, curLine) { + return new Position(curLine, pos - lineStart, pos); +} +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); +class Token { + constructor(state) { + const startIndex = state.startIndex || 0; + this.type = state.type; + this.value = state.value; + this.start = startIndex + state.start; + this.end = startIndex + state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } +} +class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!(this.optionFlags & 2048)) return false; + this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), { + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine)); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine)); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine)); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.comments = []; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.optionFlags & 256) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.lookaheadCharCodeSince(this.state.pos); + } + lookaheadCharCodeSince(pos) { + return this.input.charCodeAt(this.nextTokenStartSince(pos)); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, at)); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(140); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, this.state.curPosition()); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end + commentEnd.length), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start: this.sourceToOffsetPos(start), + end: this.sourceToOffsetPos(end), + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.optionFlags & 256) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = this.optionFlags & 4096 ? [] : null; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.optionFlags & 8192) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + comments == null || comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if ((comments == null ? void 0 : comments.length) > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: this.sourceToOffsetPos(spaceStart), + end: this.sourceToOffsetPos(end), + comments: comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition()); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(139, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(139, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition()); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), { + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1)); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, nextPos()); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, nextPos()); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, nextPos()); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(138, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), { + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, startLoc); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + if (isBigInt) { + const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(136, str); + return; + } + this.finishToken(135, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, this.state.curPosition()); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos)); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, startLoc); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, startLoc); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, startLoc); + } + ++this.state.pos; + var isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, this.state.curPosition()); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(136, str); + return; + } + if (isDecimal) { + this.finishToken(137, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(135, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(134, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, this.sourceToOffsetPos(firstInvalidLoc.pos)); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, at) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, at); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, this.state.curPosition()); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, escStart); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, { + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError(loc, details); + if (!(this.optionFlags & 2048)) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, at, details = {}) { + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError(loc, details); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, at, details); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, { + expected: type ? tokenLabelName(type) : null + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, { + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, { + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, buildPosition(pos, lineStart, curLine)); + }; + } +} +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } +} +class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, loc, { + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, { + identifierName: name + }); + } + } +} +class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } +} +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, at) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } +} +class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, node) { + const origin = node.loc.start; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, node) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = node.loc.start; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError(at) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, loc); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } +} +function newParameterDeclarationScope() { + return new ExpressionScope(3); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); +} +function newExpressionScope() { + return new ExpressionScope(); +} +class UtilParser extends Tokenizer { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + let { + extra + } = node; + if (extra == null) { + extra = {}; + node.extra = extra; + } + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + if (this.input.startsWith(name, nameStart)) { + const nextCh = this.input.charCodeAt(nameStart + name.length); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, this.state.startLoc); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(140) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return hasNewLine(this.input, this.offsetToSourcePos(this.state.lastTokEndLoc.index), this.state.start); + } + hasFollowingLineBreak() { + return hasNewLine(this.input, this.state.end, this.nextTokenStart()); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc); + } + expect(type, loc) { + if (!this.eat(type)) { + this.unexpected(loc, type); + } + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node: node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc, + voidPatternLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc || !!voidPatternLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, doubleProtoLoc); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + if (voidPatternLoc != null) { + this.raise(Errors.InvalidCoverDiscardElement, voidPatternLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule || this.optionFlags & 1) { + paramFlags |= 2; + } + if (this.optionFlags & 32) { + paramFlags |= 1; + } + const isCommonJS = !this.inModule && this.options.sourceType === "commonjs"; + if (isCommonJS || this.optionFlags & 2) { + paramFlags |= 4; + } + this.prodParam.enter(paramFlags); + let scopeFlags = isCommonJS ? 514 : 1; + if (this.optionFlags & 4) { + scopeFlags |= 512; + } + this.scope.enter(scopeFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } +} +class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + this.voidPatternLoc = null; + } +} +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if ((parser == null ? void 0 : parser.optionFlags) & 128) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } +} +const NodePrototype = Node.prototype; +NodePrototype.__clone = function () { + const newNode = new Node(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; +}; +class NodeUtils extends UtilParser { + startNode() { + const loc = this.state.startLoc; + return new Node(this, loc.index, loc); + } + startNodeAt(loc) { + return new Node(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + if (this.optionFlags & 4096) { + this.processComment(node); + } + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.optionFlags & 128) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.optionFlags & 128) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } + castNodeTo(node, type) { + node.type = type; + return node; + } + cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.name = name; + if (node.extra) cloned.extra = node.extra; + return cloned; + } + cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.value = node.value; + return cloned; + } +} +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node); + } else if (parenthesized.type !== "CallExpression" && parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, node); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + break; + case "ObjectExpression": + this.castNodeTo(node, "ObjectPattern"); + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + this.castNodeTo(node, "ArrayPattern"); + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, node.left.loc.end); + } + this.castNodeTo(node, "AssignmentPattern"); + delete node.operator; + if (node.left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, node.left); + } + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key); + } else if (prop.type === "SpreadElement") { + this.castNodeTo(prop, "RestElement"); + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, prop); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + this.toAssignableListItem(exprList, i, isLHS); + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, elt); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, trailingCommaLoc); + } + } + } + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "SpreadElement") { + this.castNodeTo(node, "RestElement"); + const arg = node.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(node, isLHS); + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + case "VoidPattern": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + const argument = this.parseBindingAtom(); + if (argument.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, argument); + } + node.argument = argument; + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + case 88: + return this.parseVoidPattern(null); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + let rest = this.parseRestBinding(); + if (this.hasPlugin("flow") || flags & 2) { + rest = this.parseFunctionParamType(rest); + } + elts.push(rest); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (flags & 2) { + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + elts.push(this.parseBindingElement(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + if (this.hasPlugin("discardBinding") && this.match(88)) { + prop.argument = this.parseVoidPattern(null); + this.raise(Errors.UnexpectedVoidPattern, prop.argument); + } else { + prop.argument = this.parseIdentifier(); + } + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(this.startNode()); + } + const prop = this.startNode(); + if (type === 139) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseBindingElement(flags, decorators) { + const left = this.parseMaybeDefault(); + if (this.hasPlugin("flow") || flags & 2) { + this.parseFunctionParamType(left); + } + if (decorators.length) { + left.decorators = decorators; + this.resetStartLocationFromNode(left, decorators[0]); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + return elt; + } + parseFunctionParamType(param) { + return param; + } + parseMaybeDefault(startLoc, left) { + startLoc != null ? startLoc : startLoc = this.state.startLoc; + left = left != null ? left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + if (left.type === "VoidPattern") { + this.raise(Errors.VoidPatternInitializer, left); + } + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) { + switch (type) { + case "AssignmentPattern": + return "left"; + case "RestElement": + return "argument"; + case "ObjectProperty": + return "value"; + case "ParenthesizedExpression": + return "expression"; + case "ArrayPattern": + return "elements"; + case "ObjectPattern": + return "properties"; + case "VoidPattern": + return true; + case "CallExpression": + if (!disallowCallExpression && !this.state.strict && this.optionFlags & 8192) { + return true; + } + } + return false; + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, ancestor, binding = 64, checkClashes = false, strictModeChanged = false, hasParenthesizedAncestor = false, disallowCallExpression = false) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, expression, { + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, expression); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, expression); + } else { + checkClashes.add(name); + } + } + return; + } else if (type === "VoidPattern" && ancestor.type === "CatchClause") { + this.raise(Errors.VoidPatternCatchClauseParam, expression); + } + const unwrappedExpression = unwrapParenthesizedExpression(expression); + disallowCallExpression || (disallowCallExpression = unwrappedExpression.type === "CallExpression" && (unwrappedExpression.callee.type === "Import" || unwrappedExpression.callee.type === "Super")); + const validity = this.isValidLVal(type, disallowCallExpression, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, expression, { + ancestor + }); + return; + } + let key, isParenthesizedExpression; + if (typeof validity === "string") { + key = validity; + isParenthesizedExpression = type === "ParenthesizedExpression"; + } else { + [key, isParenthesizedExpression] = validity; + } + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + const val = expression[key]; + if (Array.isArray(val)) { + for (const child of val) { + if (child) { + this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, true); + } + } + } else if (val) { + this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression, disallowCallExpression); + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, at, { + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, at, { + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, at); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, node); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc); + return true; + } +} +const keywordAndTSRelationalOperator = /in(?:stanceof)?|as|satisfies/y; +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; +} +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} +const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen: '${modifier}'.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidHeritageClauseType: ({ + token + }) => `'${token}' list can only include identifiers or qualified-names with optional type arguments.`, + InvalidModifierOnAwaitUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on an await using declaration.`, + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifierOnUsingDeclaration: modifier => `'${modifier}' modifier cannot appear on a using declaration.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifier: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`, + UsingDeclarationInAmbientContext: kind => `'${kind}' declarations are not allowed in ambient contexts.` +}); +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } +} +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} +var typescript = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(139) || this.isLiteralPropertyName(); + } + tsNextTokenOnSameLineAndCanFollowModifier() { + this.next(); + if (this.hasPrecedingLineBreak()) { + return false; + } + return this.tsTokenCanFollowModifier(); + } + tsNextTokenCanFollowModifier() { + if (this.match(106)) { + this.next(); + return this.tsTokenCanFollowModifier(); + } + return this.tsNextTokenOnSameLineAndCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock, hasSeenStaticModifier) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.includes(modifier)) { + if (hasSeenStaticModifier && this.match(106)) { + return undefined; + } + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, loc, { + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, loc, { + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock, modified.static); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, startLoc, { + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, startLoc, { + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStartLoc.index; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(134)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc); + node.argument = super.parseExprAtom(); + } else { + node.argument = this.parseStringLiteral(this.state.value); + } + if (this.eat(12)) { + node.options = this.tsParseImportTypeOptions(); + } else { + node.options = null; + } + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(1 | 2); + } + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSImportType"); + } + tsParseImportTypeOptions() { + const node = this.startNode(); + this.expect(5); + const withProperty = this.startNode(); + if (this.isContextual(76)) { + withProperty.method = false; + withProperty.key = this.parseIdentifier(true); + withProperty.computed = false; + withProperty.shorthand = false; + } else { + this.unexpected(null, 76); + } + this.expect(14); + withProperty.value = this.tsParseImportTypeWithPropertyValue(); + node.properties = [this.finishObjectProperty(withProperty)]; + this.eat(12); + this.expect(8); + return this.finishNode(node, "ObjectExpression"); + } + tsParseImportTypeWithPropertyValue() { + const node = this.startNode(); + const properties = []; + this.expect(5); + while (!this.match(8)) { + const type = this.state.type; + if (tokenIsIdentifier(type) || type === 134) { + properties.push(super.parsePropertyDefinition(null)); + } else { + this.unexpected(); + } + this.eat(12); + } + node.properties = properties; + this.next(); + return this.finishNode(node, "ObjectExpression"); + } + tsParseEntityName(flags) { + let entity; + if (flags & 1 && this.match(78)) { + if (flags & 2) { + entity = this.parseIdentifier(true); + } else { + const node = this.startNode(); + this.next(); + entity = this.finishNode(node, "ThisExpression"); + } + } else { + entity = this.parseIdentifier(!!(flags & 1)); + } + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(!!(flags & 1)); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(1); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + node.exprName = this.tsParseEntityName(1 | 2); + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(143)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, node); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, { + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, node); + } + const method = node; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition()); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, this.state.curPosition()); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, this.state.curPosition()); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition()); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition()); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition()); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = node; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + if (!this.match(10) && !this.match(47)) { + this.unexpected(null, 10); + } + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsExpectThenParseType(58); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const restStartLoc = this.state.startLoc; + const rest = this.eat(21); + const { + startLoc + } = this.state; + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc); + } + } else { + labeledNode = this.startNodeAt(startLoc); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, type); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAt(startLoc); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(restStartLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 135: + case 136: + case 134: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 134: + case 135: + case 136: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 135 && nextToken.type !== 136) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + throw this.unexpected(); + } + tsParseArrayTypeOrHigher() { + const { + startLoc + } = this.state; + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAt(startLoc); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAt(startLoc); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, node); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, { + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.isLookaheadContextual("new"); + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + const node = this.startNode(); + node.expression = this.tsParseEntityName(1 | 2); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, { + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, this.state.startLoc); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInTopLevelContext(cb) { + if (this.curContext() !== types.brace) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } else { + return cb(); + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(134) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseEnumBody() { + const node = this.startNode(); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumBody"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.kind = "global"; + node.global = true; + node.id = this.parseIdentifier(); + } else if (this.match(134)) { + node.kind = "module"; + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(1024); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + node.isExport = isExport || false; + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, moduleReference); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(0); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(134)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(node) { + if (this.isLineTerminator()) { + return; + } + const startType = this.state.type; + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + node.declare = true; + return super.parseFunctionStatement(node, false, false); + case 80: + node.declare = true; + return this.parseClass(node, true, false); + case 126: + return this.tsParseEnumDeclaration(node, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(node); + case 100: + if (this.state.containsEsc) { + return; + } + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + node.declare = true; + return this.parseVarStatement(node, this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true, + declare: true + }); + case 107: + if (this.isUsing()) { + this.raise(TSErrors.InvalidModifierOnUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + return this.parseVarStatement(node, "using", true); + } + break; + case 96: + if (this.isAwaitUsing()) { + this.raise(TSErrors.InvalidModifierOnAwaitUsingDeclaration, this.state.startLoc, "declare"); + node.declare = true; + this.next(); + return this.parseVarStatement(node, "await using", true); + } + break; + case 129: + { + const result = this.tsParseInterfaceDeclaration(node, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(node, this.state.type, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.type, true, null); + } + tsParseDeclaration(node, type, next, decorators) { + switch (type) { + case 124: + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case 127: + if (this.tsCheckLineTerminator(next)) { + if (this.match(134)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + node.kind = "module"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case 128: + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + node.kind = "namespace"; + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case 130: + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInTopLevelContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, node); + } else if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseBindingElement(flags, decorators) { + const startLoc = decorators.length ? decorators[0].loc.start : this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, startLoc); + } + const left = this.parseMaybeDefault(); + if (flags & 2) { + this.parseFunctionParamType(left); + } + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, pp); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, param); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, node); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + state.stop = true; + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + result.typeParameters = typeArguments; + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(); + this.tsCheckForInvalidTypeCasts(node.arguments); + node.typeParameters = typeArguments; + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenType !== 93 && tokenType !== 120 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + node.typeParameters = typeArguments; + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression") { + if (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc); + } + if (!this.match(16) && !this.match(18)) { + result.expression = super.stopParseSubscript(base, state); + } + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + node.typeParameters = callee.typeParameters; + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, this.state.startLoc, { + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(134)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + const nodeImportEquals = node; + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false); + } else { + nodeImportEquals.importKind = "value"; + } + const declaration = this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true); + return declaration; + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.isLookaheadContextual("class"); + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + if (!node.declare && (kind === "using" || kind === "await using")) { + this.raiseOverwrite(TSErrors.UsingDeclarationInAmbientContext, node, kind); + return declaration; + } + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind === "var" || kind === "let" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (!this.state.containsEsc) { + switch (this.state.type) { + case 75: + { + if (this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + break; + } + case 124: + case 125: + { + if (this.nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine()) { + const token = this.state.type; + const node = this.startNode(); + this.next(); + const declaration = token === 125 ? this.tsTryParseDeclare(node) : this.tsParseAbstractDeclaration(node, decorators); + if (declaration) { + if (token === 125) { + declaration.declare = true; + } + return declaration; + } else { + node.expression = this.createIdentifier(this.startNodeAt(node.loc.start), token === 125 ? "declare" : "abstract"); + this.semicolon(false); + return this.finishNode(node, "ExpressionStatement"); + } + } + break; + } + case 126: + return this.tsParseEnumDeclaration(this.startNode()); + case 112: + { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 123) { + const node = this.startNode(); + return this.tsParseAmbientExternalModuleDeclaration(node); + } + break; + } + case 129: + { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + break; + } + case 127: + { + if (this.nextTokenIsIdentifierOrStringLiteralOnSameLine()) { + const node = this.startNode(); + this.next(); + return this.tsParseDeclaration(node, 127, false, decorators); + } + break; + } + case 128: + { + if (this.nextTokenIsIdentifierOnSameLine()) { + const node = this.startNode(); + this.next(); + return this.tsParseDeclaration(node, 128, false, decorators); + } + break; + } + case 130: + { + if (this.nextTokenIsIdentifierOnSameLine()) { + const node = this.startNode(); + this.next(); + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, this.state.curPosition()); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, member); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, member, { + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, member); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, member); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, member); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp); + } + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + parseParenItem(node, startLoc) { + const newNode = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + newNode.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare && declaration.type !== "TSImportEqualsDeclaration") { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, { + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, node); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, node, { + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, node); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, method, { + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && node.value.body == null) { + return; + } + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass) { + if (node.superClass.type === "TSInstantiationExpression") { + const tsInstantiationExpression = node.superClass; + const superClass = tsInstantiationExpression.expression; + this.takeSurroundingComments(superClass, superClass.start, superClass.end); + const superTypeArguments = tsInstantiationExpression.typeParameters; + this.takeSurroundingComments(superTypeArguments, superTypeArguments.start, superTypeArguments.end); + node.superClass = superClass; + node.superTypeParameters = superTypeArguments; + } else if (this.match(47) || this.match(51)) { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(143) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra2; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra2 = node.extra) != null && _node$extra2.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, node); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseFunctionParamType(param) { + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, node); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding) { + switch (type) { + case "TSTypeCastExpression": + return true; + case "TSParameterProperty": + return "parameter"; + case "TSNonNullExpression": + return "expression"; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + return (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true]; + default: + return super.isValidLVal(type, disallowCallExpression, isUnparenthesizedInAssign, binding); + } + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr, startLoc); + call.typeParameters = typeArguments; + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr, startLoc); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableListItem(exprList, index, isLHS) { + const node = exprList[index]; + if (node.type === "TSTypeCastExpression") { + exprList[index] = this.typeCastToParameter(node); + } + super.toAssignableListItem(exprList, index, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) { + node.typeParameters = typeArguments; + } + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const { + isAmbientContext: oldIsAmbientContext, + strict: oldStrict + } = this.state; + this.state.isAmbientContext = true; + this.state.strict = false; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + this.state.strict = oldStrict; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifier, node); + return this.tsParseInterfaceDeclaration(node); + } else { + return null; + } + } + throw this.unexpected(null, 80); + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract || method.type === "TSAbstractMethodDefinition") { + const hasEstreePlugin = this.hasPlugin("estree"); + const methodFn = hasEstreePlugin ? method.value : method; + if (methodFn.body) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, method, { + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = this.cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } + fillOptionalPropertiesForTSESLint(node) { + var _node$directive, _node$decorators, _node$optional, _node$typeAnnotation, _node$accessibility, _node$decorators2, _node$override, _node$readonly, _node$static, _node$declare, _node$returnType, _node$typeParameters, _node$optional2, _node$optional3, _node$accessibility2, _node$readonly2, _node$static2, _node$declare2, _node$definite, _node$readonly3, _node$typeAnnotation2, _node$accessibility3, _node$decorators3, _node$override2, _node$optional4, _node$id, _node$abstract, _node$declare3, _node$decorators4, _node$implements, _node$superTypeArgume, _node$typeParameters2, _node$declare4, _node$definite2, _node$const, _node$declare5, _node$computed, _node$qualifier, _node$options, _node$declare6, _node$extends, _node$optional5, _node$readonly4, _node$declare7, _node$global, _node$const2, _node$in, _node$out; + switch (node.type) { + case "ExpressionStatement": + (_node$directive = node.directive) != null ? _node$directive : node.directive = undefined; + return; + case "RestElement": + node.value = undefined; + case "Identifier": + case "ArrayPattern": + case "AssignmentPattern": + case "ObjectPattern": + (_node$decorators = node.decorators) != null ? _node$decorators : node.decorators = []; + (_node$optional = node.optional) != null ? _node$optional : node.optional = false; + (_node$typeAnnotation = node.typeAnnotation) != null ? _node$typeAnnotation : node.typeAnnotation = undefined; + return; + case "TSParameterProperty": + (_node$accessibility = node.accessibility) != null ? _node$accessibility : node.accessibility = undefined; + (_node$decorators2 = node.decorators) != null ? _node$decorators2 : node.decorators = []; + (_node$override = node.override) != null ? _node$override : node.override = false; + (_node$readonly = node.readonly) != null ? _node$readonly : node.readonly = false; + (_node$static = node.static) != null ? _node$static : node.static = false; + return; + case "TSEmptyBodyFunctionExpression": + node.body = null; + case "TSDeclareFunction": + case "FunctionDeclaration": + case "FunctionExpression": + case "ClassMethod": + case "ClassPrivateMethod": + (_node$declare = node.declare) != null ? _node$declare : node.declare = false; + (_node$returnType = node.returnType) != null ? _node$returnType : node.returnType = undefined; + (_node$typeParameters = node.typeParameters) != null ? _node$typeParameters : node.typeParameters = undefined; + return; + case "Property": + (_node$optional2 = node.optional) != null ? _node$optional2 : node.optional = false; + return; + case "TSMethodSignature": + case "TSPropertySignature": + (_node$optional3 = node.optional) != null ? _node$optional3 : node.optional = false; + case "TSIndexSignature": + (_node$accessibility2 = node.accessibility) != null ? _node$accessibility2 : node.accessibility = undefined; + (_node$readonly2 = node.readonly) != null ? _node$readonly2 : node.readonly = false; + (_node$static2 = node.static) != null ? _node$static2 : node.static = false; + return; + case "TSAbstractPropertyDefinition": + case "PropertyDefinition": + case "TSAbstractAccessorProperty": + case "AccessorProperty": + (_node$declare2 = node.declare) != null ? _node$declare2 : node.declare = false; + (_node$definite = node.definite) != null ? _node$definite : node.definite = false; + (_node$readonly3 = node.readonly) != null ? _node$readonly3 : node.readonly = false; + (_node$typeAnnotation2 = node.typeAnnotation) != null ? _node$typeAnnotation2 : node.typeAnnotation = undefined; + case "TSAbstractMethodDefinition": + case "MethodDefinition": + (_node$accessibility3 = node.accessibility) != null ? _node$accessibility3 : node.accessibility = undefined; + (_node$decorators3 = node.decorators) != null ? _node$decorators3 : node.decorators = []; + (_node$override2 = node.override) != null ? _node$override2 : node.override = false; + (_node$optional4 = node.optional) != null ? _node$optional4 : node.optional = false; + return; + case "ClassExpression": + (_node$id = node.id) != null ? _node$id : node.id = null; + case "ClassDeclaration": + (_node$abstract = node.abstract) != null ? _node$abstract : node.abstract = false; + (_node$declare3 = node.declare) != null ? _node$declare3 : node.declare = false; + (_node$decorators4 = node.decorators) != null ? _node$decorators4 : node.decorators = []; + (_node$implements = node.implements) != null ? _node$implements : node.implements = []; + (_node$superTypeArgume = node.superTypeArguments) != null ? _node$superTypeArgume : node.superTypeArguments = undefined; + (_node$typeParameters2 = node.typeParameters) != null ? _node$typeParameters2 : node.typeParameters = undefined; + return; + case "TSTypeAliasDeclaration": + case "VariableDeclaration": + (_node$declare4 = node.declare) != null ? _node$declare4 : node.declare = false; + return; + case "VariableDeclarator": + (_node$definite2 = node.definite) != null ? _node$definite2 : node.definite = false; + return; + case "TSEnumDeclaration": + (_node$const = node.const) != null ? _node$const : node.const = false; + (_node$declare5 = node.declare) != null ? _node$declare5 : node.declare = false; + return; + case "TSEnumMember": + (_node$computed = node.computed) != null ? _node$computed : node.computed = false; + return; + case "TSImportType": + (_node$qualifier = node.qualifier) != null ? _node$qualifier : node.qualifier = null; + (_node$options = node.options) != null ? _node$options : node.options = null; + return; + case "TSInterfaceDeclaration": + (_node$declare6 = node.declare) != null ? _node$declare6 : node.declare = false; + (_node$extends = node.extends) != null ? _node$extends : node.extends = []; + return; + case "TSMappedType": + (_node$optional5 = node.optional) != null ? _node$optional5 : node.optional = false; + (_node$readonly4 = node.readonly) != null ? _node$readonly4 : node.readonly = undefined; + return; + case "TSModuleDeclaration": + (_node$declare7 = node.declare) != null ? _node$declare7 : node.declare = false; + (_node$global = node.global) != null ? _node$global : node.global = node.kind === "global"; + return; + case "TSTypeParameter": + (_node$const2 = node.const) != null ? _node$const2 : node.const = false; + (_node$in = node.in) != null ? _node$in : node.in = false; + (_node$out = node.out) != null ? _node$out : node.out = false; + return; + } + } + chStartsBindingIdentifierAndNotRelationalOperator(ch, pos) { + if (isIdentifierStart(ch)) { + keywordAndTSRelationalOperator.lastIndex = pos; + if (keywordAndTSRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordAndTSRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + nextTokenIsIdentifierAndNotTSRelationalOperatorOnSameLine() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifierAndNotRelationalOperator(nextCh, next); + } + nextTokenIsIdentifierOrStringLiteralOnSameLine() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next) || nextCh === 34 || nextCh === 39; + } +}; +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; +} +function isNumber(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; +} +function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber(argument, estree)) { + return true; + } + } + return false; +} +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." +}); +var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(133)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(133); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + let placeholder = node; + if (!placeholder.expectedNode || !placeholder.type) { + placeholder = this.finishNode(placeholder, "Placeholder"); + } + placeholder.expectedNode = expectedNode; + return placeholder; + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(133, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + cloneIdentifier(node) { + const cloned = super.cloneIdentifier(node); + if (cloned.type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; + } + cloneStringLiteral(node) { + if (node.type === "Placeholder") { + return this.cloneIdentifier(node); + } + return super.cloneStringLiteral(node); + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, disallowCallExpression, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, disallowCallExpression, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 37 && this.input.charCodeAt(next + 1) === 37) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + var _node$label; + if (((_node$label = node.label) == null ? void 0 : _node$label.type) === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + const stmtPlaceholder = node; + stmtPlaceholder.name = expr.name; + return this.finishPlaceholder(stmtPlaceholder, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(133) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + const node2 = node; + if (!this.isContextual(98) && !this.match(12)) { + node2.specifiers = []; + node2.source = null; + node2.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node2, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node2, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(133), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.offsetToSourcePos(this.state.lastTokEndLoc.index)) { + this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc); + } + } +}; +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + this.castNodeTo(identifier, "V8IntrinsicIdentifier"); + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } +}; +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; +function validatePlugins(pluginsMap) { + if (pluginsMap.has("decorators")) { + if (pluginsMap.has("decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport; + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized; + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (pluginsMap.has("flow") && pluginsMap.has("typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (pluginsMap.has("pipelineOperator")) { + var _pluginsMap$get2; + const proposal = pluginsMap.get("pipelineOperator").proposal; + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + if (proposal === "hack") { + var _pluginsMap$get; + if (pluginsMap.has("placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (pluginsMap.has("v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = pluginsMap.get("pipelineOperator").topicToken; + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + if (topicToken === "#" && ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "hack", topicToken: "#" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } else if (proposal === "smart" && ((_pluginsMap$get2 = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get2.syntaxType) === "hash") { + throw new Error(`Plugin conflict between \`["pipelineOperator", { proposal: "smart" }]\` and \`${JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")])}\`.`); + } + } + if (pluginsMap.has("moduleAttributes")) { + if (pluginsMap.has("deprecatedImportAssert") || pluginsMap.has("importAssertions")) { + throw new Error("Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version; + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + if (pluginsMap.has("importAssertions")) { + if (pluginsMap.has("deprecatedImportAssert")) { + throw new Error("Cannot combine importAssertions and deprecatedImportAssert plugins."); + } + } + if (pluginsMap.has("deprecatedImportAssert")) ;else if (pluginsMap.has("importAttributes") && pluginsMap.get("importAttributes").deprecatedAssertSyntax) { + pluginsMap.set("deprecatedImportAssert", {}); + } + if (pluginsMap.has("recordAndTuple")) { + const syntaxType = pluginsMap.get("recordAndTuple").syntaxType; + if (syntaxType != null) { + const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; + if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + } + } + if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } + if (pluginsMap.has("discardBinding") && pluginsMap.get("discardBinding").syntaxType !== "void") { + throw new Error("The 'discardBinding' plugin requires a 'syntaxType' option. Currently the only supported value is 'void'."); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, sawProto, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return sawProto; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, key); + return true; + } + if (sawProto) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, key); + } + } + return true; + } + return sawProto; + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && this.offsetToSourcePos(expr.start) === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + if (this.match(140)) { + throw this.raise(Errors.ParseExpressionEmptyInput, this.state.startLoc); + } + const expr = this.parseExpression(); + if (!this.match(140)) { + throw this.raise(Errors.ParseExpressionExpectsEOF, this.state.startLoc, { + unexpected: this.input.codePointAt(this.state.start) + }); + } + this.finalizeRemainingComments(); + expr.comments = this.comments; + expr.errors = this.state.errors; + if (this.optionFlags & 256) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors) { + refExpressionErrors.optionalParametersLoc = this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + const isYield = this.isContextual(108); + if (isYield) { + if (this.prodParam.hasYield) { + this.next(); + let left = this.parseYield(startLoc); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + if (refExpressionErrors.voidPatternLoc != null && refExpressionErrors.voidPatternLoc.index >= startIndex) { + refExpressionErrors.voidPatternLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, this.finishNode(node, "AssignmentExpression"), undefined, undefined, undefined, undefined, operator === "||=" || operator === "&&=" || operator === "??="); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (isYield) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.YieldNotInGeneratorFunction, startLoc); + return this.parseYield(startLoc); + } + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(139) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, left, { + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + if (this.getPluginOption("pipelineOperator", "proposal") === "smart") { + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, startLoc, { + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, startLoc); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.recordAwaitIfAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, node); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, node); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousPrefixOrIdentifier()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression")); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, expr = this.finishNode(node, "UpdateExpression")); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, noCalls, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, this.state.startLoc); + if (this.lookaheadCharCode() === 40) { + return this.stopParseSubscript(base, state); + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + return this.stopParseSubscript(base, state); + } + } + } + stopParseSubscript(base, state) { + state.stop = true; + return base; + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(139)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, startLoc); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, noCalls, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(); + } else { + node.arguments = this.parseCallExpressionArguments(base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, startLoc); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && this.offsetToSourcePos(base.start) === this.state.potentialArrowAt; + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, node); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, arg); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(11)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(11)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(11, false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaPropertyOrPhaseCall(node); + } + if (this.match(10)) { + if (this.optionFlags & 512) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 135: + return this.parseNumericLiteral(this.state.value); + case 136: + return this.parseBigIntLiteral(this.state.value); + case 134: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 0: + { + return this.parseArrayLike(3, false, refExpressionErrors); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, callee); + } + } + case 139: + { + this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, { + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + throw this.unexpected(); + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + throw this.expectOnePlugin(["jsx", "flow", "typescript"]); + } + throw this.unexpected(); + } + default: + if (type === 137) { + return this.parseDecimalLiteral(this.state.value); + } else if (type === 2 || type === 1) { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, true); + } else if (type === 6 || type === 7) { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (canBeArrow && this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + throw this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } + throw this.unexpected(); + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + if (pipeProposal === "hack") { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PipeTopicUnbound, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "TopicReference"); + } else { + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(Errors.PrimaryTopicNotAllowed, startLoc); + } + this.registerTopicReference(); + return this.finishNode(node, "PipelinePrimaryTopicReference"); + } + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, { + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition()); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper) { + if (!(this.optionFlags & 16)) { + this.raise(Errors.SuperNotAllowed, node); + } + } else if (!this.scope.allowSuper) { + if (!(this.optionFlags & 16)) { + this.raise(Errors.UnexpectedSuper, node); + } + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, node); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, node.property, { + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaPropertyOrPhaseCall(node) { + this.next(); + if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } else { + const id = this.createIdentifierAt(this.startNodeAtNode(node), "import", this.state.lastTokStartLoc); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, id); + } + this.sawUnambiguousESM = true; + } + return this.parseMetaProperty(node, id, "meta"); + } + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + return this.parseLiteral(value, "BigIntLiteral"); + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.startNode(); + this.addExtra(node, "raw", this.input.slice(this.offsetToSourcePos(node.start), this.state.end)); + node.pattern = value.pattern; + node.flags = value.flags; + this.next(); + return this.finishNode(node, "RegExpLiteral"); + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowInOrVoidPattern(11, refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!(this.optionFlags & 1024)) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.allowNewTarget) { + this.raise(Errors.UnexpectedNewTarget, metaProp); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) { + this.raise(Errors.ImportCallNotNewExpression, callee); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1)); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + let curElt = this.parseTemplateElement(isTagged); + const quasis = [curElt]; + const substitutions = []; + while (!curElt.tail) { + substitutions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + node.expressions = substitutions; + node.quasis = quasis; + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + let sawProto = false; + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + sawProto = this.checkProto(prop, isRecord, sawProto, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, prop); + } + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const { + key + } = prop; + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), { + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, method); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowInOrVoidPattern(8, refExpressionErrors); + return this.finishObjectProperty(prop); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc); + } + prop.value = this.parseMaybeDefault(startLoc, this.cloneIdentifier(prop.key)); + } else { + prop.value = this.cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishObjectProperty(prop); + } + } + finishObjectProperty(node) { + return this.finishNode(node, "ObjectProperty"); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 135: + key = this.parseNumericLiteral(value); + break; + case 134: + key = this.parseStringLiteral(value); + break; + case 136: + key = this.parseBigIntLiteral(value); + break; + case 139: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, privateKeyLoc); + } + key = this.parsePrivateName(); + break; + } + default: + if (type === 137) { + key = this.parseDecimalLiteral(value); + break; + } + this.unexpected(); + } + } + prop.key = key; + if (type !== 139) { + prop.computed = false; + } + } + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(514 | 16 | (inClassScope ? 576 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(514 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, formalParameters, 5, checkClashes, strictModeChanged); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(close, allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(close, allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, this.state.curPosition(), { + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + createIdentifierAt(node, name, endLoc) { + node.name = name; + node.loc.identifierName = name; + return this.finishNodeAt(node, "Identifier", endLoc); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, startLoc, { + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, startLoc, { + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, startLoc); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, startLoc); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc); + return; + } + this.expressionScope.recordAsyncArrowParametersError(startLoc); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, startLoc); + return; + } + } + } + recordAwaitIfAllowed() { + const isAwaitAllowed = this.prodParam.hasAwait; + if (isAwaitAllowed && !this.scope.inFunction) { + this.state.hasTopLevelAwait = true; + } + return isAwaitAllowed; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, node); + } + if (!this.scope.inFunction && !(this.optionFlags & 1)) { + if (this.isAmbiguousPrefixOrIdentifier()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousPrefixOrIdentifier() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 138 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 140: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + node.options = null; + if (this.eat(12)) { + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + if (this.eat(12)) { + this.addTrailingCommaExtraToNode(node.options); + if (!this.match(11)) { + do { + this.parseMaybeAssignAllowIn(); + } while (this.eat(12) && !this.match(11)); + this.raise(Errors.ImportCallArity, node); + } + } + } else { + this.addTrailingCommaExtraToNode(node.source); + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, startLoc); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parseVoidPattern(refExpressionErrors) { + this.expectPlugin("discardBinding"); + const node = this.startNode(); + if (refExpressionErrors != null) { + refExpressionErrors.voidPatternLoc = this.state.startLoc; + } + this.next(); + return this.finishNode(node, "VoidPattern"); + } + parseMaybeAssignAllowInOrVoidPattern(close, refExpressionErrors, afterLeftParse) { + if (refExpressionErrors != null && this.match(88)) { + const nextCode = this.lookaheadCharCode(); + if (nextCode === 44 || nextCode === (close === 3 ? 93 : close === 8 ? 125 : 41) || nextCode === 61) { + return this.parseMaybeDefault(this.state.startLoc, this.parseVoidPattern(refExpressionErrors)); + } + } + return this.parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse); + } + parsePropertyNamePrefixOperator(prop) {} +} +const loopLabel = { + kind: 1 + }, + switchLabel = { + kind: 2 + }; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; +function babel7CompatTokens(tokens, input, startIndex) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + if (type === 139) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start - startIndex) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + token.type = getExportedToken(type); + } + } + return tokens; +} +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program, 140, this.options.sourceType === "module" ? "module" : "script"); + file.comments = this.comments; + if (this.optionFlags & 256) { + file.tokens = babel7CompatTokens(this.tokens, this.input, this.startIndex); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end, sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule) { + if (!(this.optionFlags & 64) && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, at, { + localName + }); + } + } + this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait); + } + let finishedProgram; + if (end === 140) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = this.castNodeTo(stmt, "Directive"); + const directiveLiteral = this.castNodeTo(stmt.expression, "DirectiveLiteral"); + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(this.offsetToSourcePos(directiveLiteral.start), this.offsetToSourcePos(directiveLiteral.end)); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directive.value = directiveLiteral; + delete stmt.expression; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + isUsing() { + if (!this.isContextual(107)) { + return false; + } + return this.nextTokenIsIdentifierOnSameLine(); + } + isForUsing() { + if (!this.isContextual(107)) { + return false; + } + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + if (this.isUnparsedContextual(next, "of")) { + const nextCharAfterOf = this.lookaheadCharCodeSince(next + 2); + if (nextCharAfterOf !== 61 && nextCharAfterOf !== 58 && nextCharAfterOf !== 59) { + return false; + } + } + if (this.chStartsBindingIdentifier(nextCh, next) || this.isUnparsedContextual(next, "void")) { + return true; + } + return false; + } + nextTokenIsIdentifierOnSameLine() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next); + } + isAwaitUsing() { + if (!this.isContextual(96)) { + return false; + } + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + return true; + } + } + return false; + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifierOrBrace() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next); + } + allowsUsing() { + return (this.scope.inModule || !this.scope.inTopLevel) && !this.scope.inBareCaseStatement; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const startType = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (startType) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (this.isAwaitUsing()) { + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, node); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, node); + } else if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, node); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) { + break; + } + if (!this.allowsUsing()) { + this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!(this.optionFlags & 8) && !topLevel) { + this.raise(Errors.UnexpectedImportExport, this.state.startLoc); + } + this.next(); + let result; + if (startType === 83) { + result = this.parseImport(node); + } else { + result = this.parseExport(node, decorators); + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!(this.optionFlags & 8) && !this.inModule) { + this.raise(Errors.ImportOutsideModule, node); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + var _classNode$decorators; + if ((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, this.state.startLoc); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(139)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr, startLoc); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr, startLoc) { + if (this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === 1)) { + break; + } + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, node, { + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isContextual(96) && this.recordAwaitIfAllowed()) { + awaitAt = this.state.startLoc; + this.next(); + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isForUsing(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.recordAwaitIfAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, init); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, init); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, init); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + type + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn) { + this.raise(Errors.IllegalReturn, this.state.startLoc); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(256); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + type: "CatchClause" + }, 9); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, node); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, this.state.startLoc); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, expr, { + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? 1 : this.match(71) ? 2 : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.sourceToOffsetPos(this.state.start); + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.sourceToOffsetPos(this.state.start) + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, init, { + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, init, { + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind: "destructuring" + }); + } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, { + kind + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + if (kind === "using" || kind === "await using") { + if (id.type === "ArrayPattern" || id.type === "ObjectPattern") { + this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start); + } + } else { + if (id.type === "VoidPattern") { + this.raise(Errors.UnexpectedVoidPattern, id.loc.start); + } + } + this.checkLVal(id, { + type: "VariableDeclarator" + }, kind === "var" ? 5 : 8201); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(514); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + nameIsConstructor(key) { + return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor"; + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && this.nameIsConstructor(method.key); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, this.state.lastTokEndLoc); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, member); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, this.state.startLoc); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type); + const key = this.parseClassElementName(member); + const maybeContextualKw = isContextual ? key.name : null; + const isPrivate = this.isPrivateName(key); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, key); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, key); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (maybeContextualKw === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(139); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = maybeContextualKw; + const isPrivate = this.match(139); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, publicMethod.key); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(139); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 134) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, this.state.startLoc); + } + if (type === 139) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + this.parsePropertyName(member); + return member.key; + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(576 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, member); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) { + this.raise(Errors.ConstructorClassField, prop.key); + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(576 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, this.state.startLoc); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, true); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, node); + } + this.checkExport(node2, true, true); + this.sawUnambiguousESM = true; + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + throw this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + var _ref, _ref$specifiers; + (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + const node2 = node; + if (!node2.specifiers) node2.specifiers = []; + const isTypeExport = node2.exportKind === "type"; + node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node2.source = null; + if (this.hasPlugin("importAssertions")) { + node2.assertions = []; + } else { + node2.attributes = []; + } + node2.declaration = null; + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } else { + node.attributes = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet() || this.isUsing() || this.isAwaitUsing()) { + throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const next = this.nextTokenStart(); + const nextChar = this.input.charCodeAt(next); + if (nextChar === 123 || this.chStartsBindingIdentifier(nextChar, next) && !this.input.startsWith("from", next)) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, this.state.startLoc); + } + return true; + } + } + if (this.isUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + if (this.isAwaitUsing()) { + this.raise(Errors.UsingDeclarationExport, this.state.startLoc); + return true; + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, declaration); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, specifier, { + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + const decl = node.declaration; + if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") { + const { + id + } = decl; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (decl.type === "VariableDeclaration") { + for (const declaration of decl.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, node); + } else { + this.raise(Errors.DuplicateExport, node, { + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(134); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = this.cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = this.cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(134)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = loneSurrogate.exec(result.value); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, { + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.startNode(); + const phaseIdentifierName = this.parseIdentifierName(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.applyImportPhase(node, isExport, phaseIdentifierName, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return this.createIdentifier(phaseIdentifier, phaseIdentifierName); + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(134)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(134)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + type + }, bindingType); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, { + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(134)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, node.key); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, { + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(134)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + var useWith = false; + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + this.addExtra(node, "deprecatedWithLegacySyntax", true); + } else { + attributes = this.parseImportAttributes(); + } + useWith = true; + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (!this.hasPlugin("deprecatedImportAssert") && !this.hasPlugin("importAssertions")) { + this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc); + } + if (!this.hasPlugin("importAssertions")) { + this.addExtra(node, "deprecatedAssertSyntax", true); + } + this.next(); + attributes = this.parseImportAttributes(); + } else { + attributes = []; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, this.state.startLoc); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(134); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, specifier, { + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = this.cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } +} +class Parser extends StatementParser { + constructor(options, input, pluginsMap) { + const normalizedOptions = getOptions(options); + super(normalizedOptions, input); + this.options = normalizedOptions; + this.initializeScopes(); + this.plugins = pluginsMap; + this.filename = normalizedOptions.sourceFilename; + this.startIndex = normalizedOptions.startIndex; + let optionFlags = 0; + if (normalizedOptions.allowAwaitOutsideFunction) { + optionFlags |= 1; + } + if (normalizedOptions.allowReturnOutsideFunction) { + optionFlags |= 2; + } + if (normalizedOptions.allowImportExportEverywhere) { + optionFlags |= 8; + } + if (normalizedOptions.allowSuperOutsideMethod) { + optionFlags |= 16; + } + if (normalizedOptions.allowUndeclaredExports) { + optionFlags |= 64; + } + if (normalizedOptions.allowNewTargetOutsideFunction) { + optionFlags |= 4; + } + if (normalizedOptions.allowYieldOutsideFunction) { + optionFlags |= 32; + } + if (normalizedOptions.ranges) { + optionFlags |= 128; + } + if (normalizedOptions.tokens) { + optionFlags |= 256; + } + if (normalizedOptions.createImportExpressions) { + optionFlags |= 512; + } + if (normalizedOptions.createParenthesizedExpressions) { + optionFlags |= 1024; + } + if (normalizedOptions.errorRecovery) { + optionFlags |= 2048; + } + if (normalizedOptions.attachComment) { + optionFlags |= 4096; + } + if (normalizedOptions.annexB) { + optionFlags |= 8192; + } + this.optionFlags = optionFlags; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + const result = this.parseTopLevel(file, program); + result.errors = this.state.errors; + result.comments.length = this.state.commentsLen; + return result; + } +} +function parse(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); +} +function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; +} +const tokTypes = generateExportedTokenTypes(tt); +function getParser(options, input) { + let cls = Parser; + const pluginsMap = new Map(); + if (options != null && options.plugins) { + for (const plugin of options.plugins) { + let name, opts; + if (typeof plugin === "string") { + name = plugin; + } else { + [name, opts] = plugin; + } + if (!pluginsMap.has(name)) { + pluginsMap.set(name, opts || {}); + } + } + validatePlugins(pluginsMap); + cls = getParserClass(pluginsMap); + } + return new cls(options, input, pluginsMap); +} +const parserClassCache = new Map(); +function getParserClass(pluginsMap) { + const pluginList = []; + for (const name of mixinPluginNames) { + if (pluginsMap.has(name)) { + pluginList.push(name); + } + } + const key = pluginList.join("|"); + let cls = parserClassCache.get(key); + if (!cls) { + cls = Parser; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache.set(key, cls); + } + return cls; +} +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = tokTypes; +//# sourceMappingURL=index.js.map diff --git a/node_modules/@babel/parser/lib/index.js.map b/node_modules/@babel/parser/lib/index.js.map new file mode 100644 index 0000000..deeef61 --- /dev/null +++ b/node_modules/@babel/parser/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/util/location.ts","../src/parse-error/module-errors.ts","../src/parse-error/to-node-description.ts","../src/parse-error/standard-errors.ts","../src/parse-error/strict-mode-errors.ts","../src/parse-error/parse-expression-errors.ts","../src/parse-error/pipeline-operator-errors.ts","../src/parse-error.ts","../src/options.ts","../src/plugins/estree.ts","../src/tokenizer/context.ts","../src/tokenizer/types.ts","../../babel-helper-validator-identifier/src/identifier.ts","../../babel-helper-validator-identifier/src/keyword.ts","../src/util/identifier.ts","../src/util/scope.ts","../src/plugins/flow/scope.ts","../src/plugins/flow/index.ts","../src/plugins/jsx/xhtml.ts","../src/util/whitespace.ts","../src/plugins/jsx/index.ts","../src/plugins/typescript/scope.ts","../src/util/production-parameter.ts","../src/parser/base.ts","../src/parser/comments.ts","../src/tokenizer/state.ts","../../babel-helper-string-parser/src/index.ts","../src/tokenizer/index.ts","../src/util/class-scope.ts","../src/util/expression-scope.ts","../src/parser/util.ts","../src/parser/node.ts","../src/parser/lval.ts","../src/plugins/typescript/index.ts","../src/plugins/placeholders.ts","../src/plugins/v8intrinsic.ts","../src/plugin-utils.ts","../src/parser/expression.ts","../src/parser/statement.ts","../src/parser/index.ts","../src/index.ts"],"sourcesContent":["export type Pos = {\n start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n line: number;\n column: number;\n index: number;\n\n constructor(line: number, col: number, index: number) {\n this.line = line;\n this.column = col;\n this.index = index;\n }\n}\n\nexport class SourceLocation {\n start: Position;\n end: Position;\n filename: string | undefined;\n identifierName: string | undefined | null;\n\n constructor(start: Position, end?: Position) {\n this.start = start;\n // (may start as null, but initialized later)\n this.end = end!;\n }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n position: Position,\n columnOffset: number,\n) {\n const { line, column, index } = position;\n return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n ImportMetaOutsideModule: {\n message: `import.meta may appear only with 'sourceType: \"module\"'`,\n code,\n },\n ImportOutsideModule: {\n message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n code,\n },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n ArrayPattern: \"array destructuring pattern\",\n AssignmentExpression: \"assignment expression\",\n AssignmentPattern: \"assignment expression\",\n ArrowFunctionExpression: \"arrow function expression\",\n ConditionalExpression: \"conditional expression\",\n CatchClause: \"catch clause\",\n ForOfStatement: \"for-of statement\",\n ForInStatement: \"for-in statement\",\n ForStatement: \"for-loop\",\n FormalParameters: \"function parameter list\",\n Identifier: \"identifier\",\n ImportSpecifier: \"import specifier\",\n ImportDefaultSpecifier: \"import default specifier\",\n ImportNamespaceSpecifier: \"import namespace specifier\",\n ObjectPattern: \"object destructuring pattern\",\n ParenthesizedExpression: \"parenthesized expression\",\n RestElement: \"rest element\",\n UpdateExpression: {\n true: \"prefix operation\",\n false: \"postfix operation\",\n },\n VariableDeclarator: \"variable declaration\",\n YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n typeof NodeDescriptions,\n \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n | {\n type: \"UpdateExpression\";\n prefix: boolean;\n }\n | {\n type: NodeTypesWithDescriptions;\n };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n node.type === \"UpdateExpression\"\n ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n | { type: \"UpdateExpression\"; prefix: boolean }\n | {\n type:\n | \"ArrayPattern\"\n | \"AssignmentExpression\"\n | \"CatchClause\"\n | \"ForOfStatement\"\n | \"FormalParameters\"\n | \"ForInStatement\"\n | \"ForStatement\"\n | \"ImportSpecifier\"\n | \"ImportNamespaceSpecifier\"\n | \"ImportDefaultSpecifier\"\n | \"ParenthesizedExpression\"\n | \"ObjectPattern\"\n | \"RestElement\"\n | \"VariableDeclarator\";\n };\n\nexport default {\n AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n `A ${kind}ter cannot be a generator.`,\n ArgumentsInClass:\n \"'arguments' is only allowed in functions and class methods.\",\n AsyncFunctionInSingleStatementContext:\n \"Async functions can only be declared at the top level or inside a block.\",\n AwaitBindingIdentifier:\n \"Can not use 'await' as identifier inside an async function.\",\n AwaitBindingIdentifierInStaticBlock:\n \"Can not use 'await' as identifier inside a static block.\",\n AwaitExpressionFormalParameter:\n \"'await' is not allowed in async function parameters.\",\n AwaitUsingNotInAsyncContext:\n \"'await using' is only allowed within async functions and at the top levels of modules.\",\n AwaitNotInAsyncContext:\n \"'await' is only allowed within async functions and at the top levels of modules.\",\n BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n BadSetterRestParameter:\n \"A 'set' accessor function argument must not be a rest parameter.\",\n ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n ConstructorClassPrivateField:\n \"Classes may not have a private field named '#constructor'.\",\n ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n ConstructorIsAsync: \"Constructor can't be an async function.\",\n ConstructorIsGenerator: \"Constructor can't be a generator.\",\n DeclarationMissingInitializer: ({\n kind,\n }: {\n kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n }) => `Missing initializer in ${kind} declaration.`,\n DecoratorArgumentsOutsideParentheses:\n \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n DecoratorBeforeExport:\n \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n DecoratorsBeforeAfterExport:\n \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n DecoratorConstructor:\n \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n DecoratorExportClass:\n \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n DeferImportRequiresNamespace:\n 'Only `import defer * as x from \"./module\"` is valid.',\n DeletePrivateField: \"Deleting a private field is not allowed.\",\n DestructureNamedImport:\n \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n DuplicateConstructor: \"Duplicate constructor in the same class.\",\n DuplicateDefaultExport: \"Only one default export allowed per module.\",\n DuplicateExport: ({ exportName }: { exportName: string }) =>\n `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n DuplicateProto: \"Redefinition of __proto__ property.\",\n DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n ElementAfterRest: \"Rest element must be last element.\",\n EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n ExportBindingIsString: ({\n localName,\n exportName,\n }: {\n localName: string;\n exportName: string;\n }) =>\n `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n ExportDefaultFromAsIdentifier:\n \"'from' is not allowed as an identifier after 'export default'.\",\n\n ForInOfLoopInitializer: ({\n type,\n }: {\n type: \"ForInStatement\" | \"ForOfStatement\";\n }) =>\n `'${\n type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n }' loop variable declaration may not have an initializer.`,\n ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n GeneratorInSingleStatementContext:\n \"Generators can only be declared at the top level or inside a block.\",\n\n IllegalBreakContinue: ({\n type,\n }: {\n type: \"BreakStatement\" | \"ContinueStatement\";\n }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n IllegalLanguageModeDirective:\n \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n IllegalReturn: \"'return' outside of function.\",\n ImportAttributesUseAssert:\n \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n ImportBindingIsString: ({ importName }: { importName: string }) =>\n `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n ImportJSONBindingNotDefault:\n \"A JSON module can only be imported with `default`.\",\n ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n ImportReflectionNotBinding:\n 'Only `import module x from \"./module\"` is valid.',\n IncompatibleRegExpUVFlags:\n \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n InvalidCodePoint: \"Code point out of bounds.\",\n InvalidCoverDiscardElement:\n \"'void' must be followed by an expression when not used in a binding position.\",\n InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n InvalidDecimal: \"Invalid decimal.\",\n InvalidDigit: ({ radix }: { radix: number }) =>\n `Expected number in radix ${radix}.`,\n InvalidEscapeSequence: \"Bad character escape sequence.\",\n InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Escape sequence in keyword ${reservedWord}.`,\n InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n `Invalid identifier ${identifierName}.`,\n InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n ancestor,\n )}.`,\n InvalidNumber: \"Invalid number.\",\n InvalidOrMissingExponent:\n \"Floating-point numbers require a valid exponent after the 'e'.\",\n InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n `Unexpected character '${unexpected}'.`,\n InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n InvalidPrivateFieldResolution: ({\n identifierName,\n }: {\n identifierName: string;\n }) => `Private name #${identifierName} is not defined.`,\n InvalidPropertyBindingPattern: \"Binding member expression.\",\n InvalidRecordProperty:\n \"Only properties and spread elements are allowed in record definitions.\",\n InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n `Label '${labelName}' is already declared.`,\n LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n MalformedRegExpFlags: \"Invalid regular expression flag.\",\n MissingClassName: \"A class name is required.\",\n MissingEqInAssignment:\n \"Only '=' operator can be used for specifying default value.\",\n MissingSemicolon: \"Missing semicolon.\",\n MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n // FIXME: Would be nice to make this \"missingPlugins\" instead.\n // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n .map(name => JSON.stringify(name))\n .join(\", \")}.`,\n MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n MixingCoalesceWithLogical:\n \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n ModuleAttributeDifferentFromType:\n \"The only accepted module attribute is `type`.\",\n ModuleAttributeInvalidValue:\n \"Only string literals are allowed as module attribute values.\",\n ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n `Duplicate key \"${key}\" is not allowed in module attributes.`,\n ModuleExportNameHasLoneSurrogate: ({\n surrogateCharCode,\n }: {\n surrogateCharCode: number;\n }) =>\n `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n 16,\n )}'.`,\n ModuleExportUndefined: ({ localName }: { localName: string }) =>\n `Export '${localName}' is not defined.`,\n MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n NewlineAfterThrow: \"Illegal newline after throw.\",\n NoCatchOrFinally: \"Missing catch or finally clause.\",\n NumberIdentifier: \"Identifier directly after number.\",\n NumericSeparatorInEscapeSequence:\n \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n ObsoleteAwaitStar:\n \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n OptionalChainingNoNew:\n \"Constructors in/after an Optional Chain are not allowed.\",\n OptionalChainingNoTemplate:\n \"Tagged Template Literals are not allowed in optionalChain.\",\n OverrideOnConstructor:\n \"'override' modifier cannot appear on a constructor declaration.\",\n ParamDupe: \"Argument name clash.\",\n PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n PatternHasMethod: \"Object pattern can't contain methods.\",\n PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Duplicate private name #${identifierName}.`,\n RecordExpressionBarIncorrectEndSyntaxType:\n \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionBarIncorrectStartSyntaxType:\n \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n RecordExpressionHashIncorrectStartSyntaxType:\n \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n SloppyFunction:\n \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n SloppyFunctionAnnexB:\n \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n SourcePhaseImportRequiresDefault:\n 'Only `import source x from \"./module\"` is valid.',\n StaticPrototype: \"Classes may not have static property named prototype.\",\n SuperNotAllowed:\n \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n SuperPrivateField: \"Private fields can't be accessed on super.\",\n TrailingDecorator: \"Decorators must be attached to a class element.\",\n TupleExpressionBarIncorrectEndSyntaxType:\n \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionBarIncorrectStartSyntaxType:\n \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n TupleExpressionHashIncorrectStartSyntaxType:\n \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n UnexpectedAwaitAfterPipelineBody:\n 'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n UnexpectedImportExport:\n \"'import' and 'export' may only appear at the top level.\",\n UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n `Unexpected keyword '${keyword}'.`,\n UnexpectedLeadingDecorator:\n \"Leading decorators must be attached to a class declaration.\",\n UnexpectedLexicalDeclaration:\n \"Lexical declaration cannot appear in a single-statement context.\",\n UnexpectedNewTarget:\n \"`new.target` can only be used in functions or class properties.\",\n UnexpectedNumericSeparator:\n \"A numeric separator is only allowed between two digits.\",\n UnexpectedPrivateField: \"Unexpected private name.\",\n UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n `Unexpected reserved word '${reservedWord}'.`,\n UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n UnexpectedToken: ({\n expected,\n unexpected,\n }: {\n expected?: string | null;\n unexpected?: string | null;\n }) =>\n `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n expected ? `, expected \"${expected}\"` : \"\"\n }`,\n UnexpectedTokenUnaryExponentiation:\n \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n UnexpectedUsingDeclaration:\n \"Using declaration cannot appear in the top level when source type is `script` or in the bare case statement.\",\n UnexpectedVoidPattern: \"Unexpected void binding.\",\n UnsupportedBind: \"Binding should be performed on object property.\",\n UnsupportedDecoratorExport:\n \"A decorated export must export a class declaration.\",\n UnsupportedDefaultExport:\n \"Only expressions, functions or classes are allowed as the `default` export.\",\n UnsupportedImport:\n \"`import` can only be used in `import()` or `import.meta`.\",\n UnsupportedMetaProperty: ({\n target,\n onlyValidPropertyName,\n }: {\n target: string;\n onlyValidPropertyName: string;\n }) =>\n `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n UnsupportedParameterDecorator:\n \"Decorators cannot be used to decorate parameters.\",\n UnsupportedPropertyDecorator:\n \"Decorators cannot be used to decorate object literal properties.\",\n UnsupportedSuper:\n \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n UnterminatedComment: \"Unterminated comment.\",\n UnterminatedRegExp: \"Unterminated regular expression.\",\n UnterminatedString: \"Unterminated string constant.\",\n UnterminatedTemplate: \"Unterminated template.\",\n UsingDeclarationExport: \"Using declaration cannot be exported.\",\n UsingDeclarationHasBindingPattern:\n \"Using declaration cannot have destructuring patterns.\",\n VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n `Identifier '${identifierName}' has already been declared.`,\n VoidPatternCatchClauseParam:\n \"A void binding can not be the catch clause parameter. Use `try { ... } catch { ... }` if you want to discard the caught error.\",\n VoidPatternInitializer: \"A void binding may not have an initializer.\",\n YieldBindingIdentifier:\n \"Can not use 'yield' as identifier inside a generator.\",\n YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n YieldNotInGeneratorFunction:\n \"'yield' is only allowed within generator functions.\",\n ZeroDigitNumericSeparator:\n \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n StrictDelete: \"Deleting local variable in strict mode.\",\n\n // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n // is represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n `Assigning to '${referenceName}' in strict mode.`,\n\n // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n // represented as just an `Identifier`[3] in the Babel AST.\n // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n `Binding '${bindingName}' in strict mode.`,\n\n StrictFunction:\n \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nexport default {\n ParseExpressionEmptyInput:\n \"Unexpected parseExpression() input: The input is empty or contains only comments.\",\n ParseExpressionExpectsEOF: ({ unexpected }: { unexpected: number }) =>\n `Unexpected parseExpression() input: The input should contain exactly one expression, but the first expression is followed by the unexpected character \\`${String.fromCodePoint(unexpected)}\\`.`,\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n \"ArrowFunctionExpression\",\n \"AssignmentExpression\",\n \"ConditionalExpression\",\n \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType> =\n T extends Set ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n // This error is only used by the smart-mix proposal\n PipeBodyIsTighter:\n \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n PipeTopicRequiresHackPipes: process.env.BABEL_8_BREAKING\n ? 'Topic references are only supported when using the `\"proposal\": \"hack\"` version of the pipeline proposal.'\n : 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n PipeTopicUnbound:\n \"Topic reference is unbound; it must be inside a pipe body.\",\n PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n PipeTopicUnused:\n \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n type,\n })}; please wrap it in parentheses.`,\n\n ...(process.env.BABEL_8_BREAKING\n ? {}\n : {\n // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n // are retained for backwards compatibility\n // with the deprecated smart-mix pipe operator proposal plugin.\n // They are subject to removal in a future major version.\n PipelineBodyNoArrow:\n 'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n PipelineBodySequenceExpression:\n \"Pipeline body may not be a comma-separated sequence expression.\",\n PipelineHeadSequenceExpression:\n \"Pipeline head should not be a comma-separated sequence expression.\",\n PipelineTopicUnused:\n \"Pipeline is in topic style but does not use topic reference.\",\n PrimaryTopicNotAllowed:\n \"Topic reference was used in a lexical context without topic binding.\",\n PrimaryTopicRequiresSmartPipeline:\n 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n }),\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n | \"flow\"\n | \"typescript\"\n | \"jsx\"\n | \"pipelineOperator\"\n | \"placeholders\";\n\ntype ParseErrorCode =\n | \"BABEL_PARSER_SYNTAX_ERROR\"\n | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification {\n // Look, these *could* be readonly, but then Flow complains when we initially\n // set them. We could do a whole dance and make a special interface that's not\n // readonly for when we create the error, then cast it to the readonly\n // interface for public use, but the previous implementation didn't have them\n // as readonly, so let's just not worry about it for now.\n code: ParseErrorCode;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n missingPlugin?: string | string[];\n loc: Position;\n details: ErrorDetails;\n\n // We should consider removing this as it now just contains the same\n // information as `loc.index`.\n pos: number;\n}\n\nexport type ParseError = SyntaxError &\n ParseErrorSpecification;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor = (\n loc: Position,\n details: ErrorDetails,\n) => ParseError;\n\ntype ToMessage = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials = {\n code: string;\n reasonCode: string;\n syntaxPlugin?: SyntaxPlugin;\n toMessage: ToMessage;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n Object.defineProperty(obj, key, {\n enumerable: false,\n configurable: true,\n value,\n });\n}\n\nfunction toParseErrorConstructor({\n toMessage,\n code,\n reasonCode,\n syntaxPlugin,\n}: ParseErrorCredentials): ParseErrorConstructor {\n const hasMissingPlugin =\n reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n if (!process.env.BABEL_8_BREAKING) {\n const oldReasonCodes: Record = {\n AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n SetAccessorCannotHaveOptionalParameter:\n \"SetAccesorCannotHaveOptionalParameter\",\n SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n };\n if (oldReasonCodes[reasonCode]) {\n reasonCode = oldReasonCodes[reasonCode];\n }\n }\n\n return function constructor(loc: Position, details: ErrorDetails) {\n const error: ParseError = new SyntaxError() as any;\n\n error.code = code as ParseErrorCode;\n error.reasonCode = reasonCode;\n error.loc = loc;\n error.pos = loc.index;\n\n error.syntaxPlugin = syntaxPlugin;\n if (hasMissingPlugin) {\n error.missingPlugin = (details as any).missingPlugin;\n }\n\n type Overrides = {\n loc?: Position;\n details?: ErrorDetails;\n };\n defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n const { line, column, index } = overrides.loc ?? loc;\n return constructor(new Position(line, column, index), {\n ...details,\n ...overrides.details,\n });\n });\n\n defineHidden(error, \"details\", details);\n\n Object.defineProperty(error, \"message\", {\n configurable: true,\n get(this: ParseError): string {\n const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n this.message = message;\n return message;\n },\n set(value: string) {\n Object.defineProperty(this, \"message\", { value, writable: true });\n },\n });\n\n return error;\n };\n}\n\ntype ParseErrorTemplate =\n | string\n | ToMessage\n | { message: string | ToMessage; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = Record;\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n T extends ParseErrorTemplates,\n>(\n parseErrorTemplates: T,\n) => {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage }\n ? T[K][\"message\"] extends ToMessage\n ? Parameters[0]\n : object\n : T[K] extends ToMessage\n ? Parameters[0]\n : object\n >;\n};\n\nexport function ParseErrorEnum(\n parseErrorTemplates: T,\n syntaxPlugin?: SyntaxPlugin,\n): {\n [K in keyof T]: ParseErrorConstructor<\n T[K] extends { message: string | ToMessage }\n ? T[K][\"message\"] extends ToMessage\n ? Parameters[0]\n : object\n : T[K] extends ToMessage\n ? Parameters[0]\n : object\n >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n// the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n// and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n// ErrorWithStaticMessage: \"message\",\n// ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n// ErrorWithOverriddenCodeAndOrReasonCode: {\n// message: ({ type }: { type: string }) => `${type}`),\n// code: \"AN_ERROR_CODE\",\n// ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n// }\n// });\n//\nexport function ParseErrorEnum(\n argument: TemplateStringsArray | ParseErrorTemplates,\n syntaxPlugin?: SyntaxPlugin,\n) {\n // If the first parameter is an array, that means we were called with a tagged\n // template literal. Extract the syntaxPlugin from this, and call again in\n // the \"normalized\" form.\n if (Array.isArray(argument)) {\n return (parseErrorTemplates: ParseErrorTemplates) =>\n ParseErrorEnum(parseErrorTemplates, argument[0]);\n }\n\n const ParseErrorConstructors = {} as Record<\n string,\n ParseErrorConstructor\n >;\n\n for (const reasonCode of Object.keys(argument)) {\n const template = (argument as ParseErrorTemplates)[reasonCode];\n const { message, ...rest } =\n typeof template === \"string\"\n ? { message: () => template }\n : typeof template === \"function\"\n ? { message: template }\n : template;\n const toMessage = typeof message === \"string\" ? () => message : message;\n\n ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n code: \"BABEL_PARSER_SYNTAX_ERROR\",\n reasonCode,\n toMessage,\n ...(syntaxPlugin ? { syntaxPlugin } : {}),\n ...rest,\n });\n }\n\n return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport ParseExpressionErrors from \"./parse-error/parse-expression-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n ...ParseErrorEnum(ModuleErrors),\n ...ParseErrorEnum(StandardErrors),\n ...ParseErrorEnum(StrictModeErrors),\n ...ParseErrorEnum(ParseExpressionErrors),\n ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { Plugin } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"commonjs\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n /**\n * By default, import and export declarations can only appear at a program's top level.\n * Setting this option to true allows them anywhere where a statement is allowed.\n */\n allowImportExportEverywhere?: boolean;\n\n /**\n * By default, await use is not allowed outside of an async function.\n * Set this to true to accept such code.\n */\n allowAwaitOutsideFunction?: boolean;\n\n /**\n * By default, a return statement at the top level raises an error.\n * Set this to true to accept such code.\n */\n allowReturnOutsideFunction?: boolean;\n\n /**\n * By default, new.target use is not allowed outside of a function or class.\n * Set this to true to accept such code.\n */\n allowNewTargetOutsideFunction?: boolean;\n\n /**\n * By default, super calls are not allowed outside of a method.\n * Set this to true to accept such code.\n */\n allowSuperOutsideMethod?: boolean;\n\n /**\n * By default, exported identifiers must refer to a declared variable.\n * Set this to true to allow export statements to reference undeclared variables.\n */\n allowUndeclaredExports?: boolean;\n\n /**\n * By default, yield use is not allowed outside of a generator function.\n * Set this to true to accept such code.\n */\n\n allowYieldOutsideFunction?: boolean;\n\n /**\n * By default, Babel parser JavaScript code according to Annex B syntax.\n * Set this to `false` to disable such behavior.\n */\n annexB?: boolean;\n\n /**\n * By default, Babel attaches comments to adjacent AST nodes.\n * When this option is set to false, comments are not attached.\n * It can provide up to 30% performance improvement when the input code has many comments.\n * @babel/eslint-parser will set it for you.\n * It is not recommended to use attachComment: false with Babel transform,\n * as doing so removes all the comments in output code, and renders annotations such as\n * /* istanbul ignore next *\\/ nonfunctional.\n */\n attachComment?: boolean;\n\n /**\n * By default, Babel always throws an error when it finds some invalid code.\n * When this option is set to true, it will store the parsing error and\n * try to continue parsing the invalid input file.\n */\n errorRecovery?: boolean;\n\n /**\n * Indicate the mode the code should be parsed in.\n * Can be one of \"script\", \"commonjs\", \"module\", or \"unambiguous\". Defaults to \"script\".\n * \"unambiguous\" will make @babel/parser attempt to guess, based on the presence\n * of ES6 import or export statements.\n * Files with ES6 imports and exports are considered \"module\" and are otherwise \"script\".\n *\n * Use \"commonjs\" to parse code that is intended to be run in a CommonJS environment such as Node.js.\n */\n sourceType?: SourceType;\n\n /**\n * Correlate output AST nodes with their source filename.\n * Useful when generating code and source maps from the ASTs of multiple input files.\n */\n sourceFilename?: string;\n\n /**\n * By default, all source indexes start from 0.\n * You can provide a start index to alternatively start with.\n * Useful for integration with other source tools.\n */\n startIndex?: number;\n\n /**\n * By default, the first line of code parsed is treated as line 1.\n * You can provide a line number to alternatively start with.\n * Useful for integration with other source tools.\n */\n startLine?: number;\n\n /**\n * By default, the parsed code is treated as if it starts from line 1, column 0.\n * You can provide a column number to alternatively start with.\n * Useful for integration with other source tools.\n */\n startColumn?: number;\n\n /**\n * Array containing the plugins that you want to enable.\n */\n plugins?: Plugin[];\n\n /**\n * Should the parser work in strict mode.\n * Defaults to true if sourceType === 'module'. Otherwise, false.\n */\n strictMode?: boolean;\n\n /**\n * Adds a ranges property to each node: [node.start, node.end]\n */\n ranges?: boolean;\n\n /**\n * Adds all parsed tokens to a tokens property on the File node.\n */\n tokens?: boolean;\n\n /**\n * By default, the parser adds information about parentheses by setting\n * `extra.parenthesized` to `true` as needed.\n * When this option is `true` the parser creates `ParenthesizedExpression`\n * AST nodes instead of using the `extra` property.\n */\n createParenthesizedExpressions?: boolean;\n\n /**\n * The default is false in Babel 7 and true in Babel 8\n * Set this to true to parse it as an `ImportExpression` node.\n * Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.\n */\n createImportExpressions?: boolean;\n}\n\nexport const enum OptionFlags {\n AllowAwaitOutsideFunction = 1 << 0,\n AllowReturnOutsideFunction = 1 << 1,\n AllowNewTargetOutsideFunction = 1 << 2,\n AllowImportExportEverywhere = 1 << 3,\n AllowSuperOutsideMethod = 1 << 4,\n AllowYieldOutsideFunction = 1 << 5,\n AllowUndeclaredExports = 1 << 6,\n Ranges = 1 << 7,\n Tokens = 1 << 8,\n CreateImportExpressions = 1 << 9,\n CreateParenthesizedExpressions = 1 << 10,\n ErrorRecovery = 1 << 11,\n AttachComment = 1 << 12,\n AnnexB = 1 << 13,\n}\n\ntype KeepOptionalKeys = \"sourceFilename\" | \"strictMode\";\nexport type OptionsWithDefaults = Omit, KeepOptionalKeys> &\n Pick;\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n return {\n // Source type (\"script\" or \"module\") for different semantics\n sourceType: \"script\",\n // Source filename.\n sourceFilename: undefined,\n // Index (0-based) from which to start counting source. Useful for\n // integration with other tools.\n startIndex: 0,\n // Column (0-based) from which to start counting source. Useful for\n // integration with other tools.\n startColumn: 0,\n // Line (1-based) from which to start counting source. Useful for\n // integration with other tools.\n startLine: 1,\n // When enabled, await at the top level is not considered an\n // error.\n allowAwaitOutsideFunction: false,\n // When enabled, a return at the top level is not considered an\n // error.\n allowReturnOutsideFunction: false,\n // When enabled, new.target outside a function or class is not\n // considered an error.\n allowNewTargetOutsideFunction: false,\n // When enabled, import/export statements are not constrained to\n // appearing at the top of the program.\n allowImportExportEverywhere: false,\n // When enabled, super outside a method is not considered an error.\n allowSuperOutsideMethod: false,\n // When enabled, export statements can reference undeclared variables.\n allowUndeclaredExports: false,\n allowYieldOutsideFunction: false,\n // An array of plugins to enable\n plugins: [],\n // TODO\n strictMode: undefined,\n // Nodes have their start and end characters offsets recorded in\n // `start` and `end` properties (directly on the node, rather than\n // the `loc` object, which holds line/column data. To also add a\n // [semi-standardized][range] `range` property holding a `[start,\n // end]` array with the same numbers, set the `ranges` option to\n // `true`.\n //\n // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678\n ranges: false,\n // Adds all parsed tokens to a `tokens` property on the `File` node\n tokens: false,\n // Whether to create ImportExpression AST nodes (if false\n // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n // Whether to create ParenthesizedExpression AST nodes (if false\n // the parser sets extra.parenthesized on the expression nodes instead).\n createParenthesizedExpressions: false,\n // When enabled, errors are attached to the AST instead of being directly thrown.\n // Some errors will still throw, because @babel/parser can't always recover.\n errorRecovery: false,\n // When enabled, comments will be attached to adjacent AST nodes as one of\n // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n // is vital to preserve comments after transform. If you don't print AST back,\n // consider set this option to `false` for performance\n attachComment: true,\n // When enabled, the parser will support Annex B syntax.\n // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n annexB: true,\n };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n // https://github.com/babel/babel/pull/16918\n // `options` is accessed frequently, please make sure it is a fast object.\n // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n const options: any = createDefaultOptions();\n\n if (opts == null) {\n return options;\n }\n if (opts.annexB != null && opts.annexB !== false) {\n throw new Error(\"The `annexB` option can only be set to `false`.\");\n }\n\n for (const key of Object.keys(options) as (keyof Options)[]) {\n if (opts[key] != null) options[key] = opts[key];\n }\n\n if (options.startLine === 1) {\n if (opts.startIndex == null && options.startColumn > 0) {\n options.startIndex = options.startColumn;\n } else if (opts.startColumn == null && options.startIndex > 0) {\n options.startColumn = options.startIndex;\n }\n } else if (opts.startColumn == null || opts.startIndex == null) {\n if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n throw new Error(\n \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n );\n }\n }\n\n if (options.sourceType === \"commonjs\") {\n if (opts.allowAwaitOutsideFunction != null) {\n throw new Error(\n \"The `allowAwaitOutsideFunction` option cannot be used with `sourceType: 'commonjs'`.\",\n );\n }\n if (opts.allowReturnOutsideFunction != null) {\n throw new Error(\n \"`sourceType: 'commonjs'` implies `allowReturnOutsideFunction: true`, please remove the `allowReturnOutsideFunction` option or use `sourceType: 'script'`.\",\n );\n }\n if (opts.allowNewTargetOutsideFunction != null) {\n throw new Error(\n \"`sourceType: 'commonjs'` implies `allowNewTargetOutsideFunction: true`, please remove the `allowNewTargetOutsideFunction` option or use `sourceType: 'script'`.\",\n );\n }\n }\n\n return options;\n}\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport { OptionFlags } from \"../options.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { ParseResult, File } from \"../index.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n if (object) {\n defineProperty(object, key, { enumerable: false, value: object[key] });\n }\n};\n\nfunction toESTreeLocation(node: any) {\n toUnenumerable(node.loc.start, \"index\");\n toUnenumerable(node.loc.end, \"index\");\n\n return node;\n}\n\nexport default (superClass: typeof Parser) =>\n class ESTreeParserMixin extends superClass implements Parser {\n parse(): ParseResult {\n const file = toESTreeLocation(super.parse());\n\n if (this.optionFlags & OptionFlags.Tokens) {\n file.tokens = file.tokens.map(toESTreeLocation);\n }\n\n return file;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n let regex: RegExp | null = null;\n try {\n regex = new RegExp(pattern, flags);\n } catch (_) {\n // In environments that don't support these flags value will\n // be null as the regex can't be represented natively.\n }\n const node = this.estreeParseLiteral(regex);\n node.regex = { pattern, flags };\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseBigIntLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n let bigInt: bigint | null;\n try {\n bigInt = BigInt(value);\n } catch {\n bigInt = null;\n }\n const node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n\n return node;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseDecimalLiteral(value: any): N.Node {\n // https://github.com/estree/estree/blob/master/experimental/decimal.md\n // todo: use BigDecimal when node supports it.\n const decimal: null = null;\n const node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n\n return node;\n }\n\n estreeParseLiteral(value: any) {\n // @ts-expect-error ESTree plugin changes node types\n return this.parseLiteral(value, \"Literal\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseStringLiteral(value: any): N.Node {\n return this.estreeParseLiteral(value);\n }\n\n parseNumericLiteral(value: any): any {\n return this.estreeParseLiteral(value);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n parseNullLiteral(): N.Node {\n return this.estreeParseLiteral(null);\n }\n\n parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n // @ts-expect-error ESTree plugin changes node types\n return this.estreeParseLiteral(value);\n }\n\n // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n estreeParseChainExpression(\n node: N.Expression,\n endLoc: Position,\n ): N.EstreeChainExpression {\n const chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNodeAt(chain, \"ChainExpression\", endLoc);\n }\n\n // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n const expression = directive.value as any as N.EstreeLiteral;\n // @ts-expect-error delete non-optional properties\n delete directive.value;\n\n this.castNodeTo(expression, \"Literal\");\n expression.raw = expression.extra!.raw;\n expression.value = expression.extra!.expressionValue;\n\n const stmt = this.castNodeTo(directive, \"ExpressionStatement\");\n stmt.expression = expression;\n stmt.directive = expression.extra!.rawValue;\n\n delete expression.extra;\n\n return stmt;\n }\n\n /**\n * The TS-ESLint always define optional AST properties, here we provide the\n * default value for such properties immediately after `finishNode` was invoked.\n * This hook will be implemented by the typescript plugin.\n *\n * Note: This hook should be manually invoked when we change the `type` of a given AST\n * node, to ensure that the optional properties are correctly filled.\n * @param node The AST node finished by finishNode\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n fillOptionalPropertiesForTSESLint(node: NodeType) {}\n\n cloneEstreeStringLiteral(node: N.EstreeLiteral): N.EstreeLiteral {\n const { start, end, loc, range, raw, value } = node;\n const cloned = Object.create(node.constructor.prototype);\n cloned.type = \"Literal\";\n cloned.start = start;\n cloned.end = end;\n cloned.loc = loc;\n cloned.range = range;\n cloned.raw = raw;\n cloned.value = value;\n return cloned;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n super.initFunction(node, isAsync);\n node.expression = false;\n }\n\n checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n if (node != null && this.isObjectProperty(node)) {\n // @ts-expect-error plugin typings\n this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n } else {\n super.checkDeclaration(node);\n }\n }\n\n getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n return (method as unknown as N.EstreeMethodDefinition).value.params;\n }\n\n isValidDirective(stmt: N.Statement): stmt is N.ExpressionStatement {\n return (\n stmt.type === \"ExpressionStatement\" &&\n stmt.expression.type === \"Literal\" &&\n typeof stmt.expression.value === \"string\" &&\n !stmt.expression.extra?.parenthesized\n );\n }\n\n parseBlockBody(\n node: N.BlockStatementLike,\n allowDirectives: boolean | undefined | null,\n topLevel: boolean,\n end: TokenType,\n afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n ): void {\n super.parseBlockBody(\n node,\n allowDirectives,\n topLevel,\n end,\n afterBlockParse,\n );\n\n const directiveStatements = node.directives.map(d =>\n this.directiveToStmt(d),\n );\n // @ts-expect-error estree plugin typings\n node.body = directiveStatements.concat(node.body);\n // @ts-expect-error delete non-optional properties\n delete node.directives;\n }\n\n parsePrivateName(): any {\n const node = super.parsePrivateName();\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n\n convertPrivateNameToPrivateIdentifier(\n node: N.PrivateName,\n ): N.EstreePrivateIdentifier {\n const name = super.getPrivateNameSV(node);\n // @ts-expect-error delete non-optional properties\n delete node.id;\n // @ts-expect-error mutate AST types\n node.name = name;\n return this.castNodeTo(node, \"PrivateIdentifier\");\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.isPrivateName(node);\n }\n }\n return node.type === \"PrivateIdentifier\";\n }\n\n // @ts-expect-error ESTree plugin changes node types\n getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return super.getPrivateNameSV(node as unknown as N.PrivateName);\n }\n }\n return node.name;\n }\n\n // @ts-expect-error plugin may override interfaces\n parseLiteral(value: any, type: T[\"type\"]): T {\n const node = super.parseLiteral(value, type);\n // @ts-expect-error mutating AST types\n node.raw = node.extra.raw;\n delete node.extra;\n\n return node;\n }\n\n parseFunctionBody(\n node: N.Function,\n allowExpression?: boolean | null,\n isMethod: boolean = false,\n ): void {\n super.parseFunctionBody(node, allowExpression, isMethod);\n node.expression = node.body.type !== \"BlockStatement\";\n }\n\n // @ts-expect-error plugin may override interfaces\n parseMethod<\n T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n >(\n node: Undone,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowDirectSuper: boolean,\n type: T[\"type\"],\n inClassScope: boolean = false,\n ):\n | N.EstreeProperty\n | N.EstreeMethodDefinition\n | N.EstreeTSAbstractMethodDefinition {\n let funcNode = this.startNode();\n funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n funcNode = super.parseMethod(\n funcNode,\n isGenerator,\n isAsync,\n isConstructor,\n allowDirectSuper,\n type,\n inClassScope,\n );\n // @ts-expect-error delete non-optional properties\n delete funcNode.kind;\n const { typeParameters } = node;\n if (typeParameters) {\n delete node.typeParameters;\n funcNode.typeParameters = typeParameters;\n this.resetStartLocationFromNode(funcNode, typeParameters);\n }\n const valueNode = this.castNodeTo(\n funcNode as N.MethodLike,\n process.env.BABEL_8_BREAKING &&\n this.hasPlugin(\"typescript\") &&\n !funcNode.body\n ? \"TSEmptyBodyFunctionExpression\"\n : \"FunctionExpression\",\n );\n (\n node as unknown as Undone<\n | N.EstreeProperty\n | N.EstreeMethodDefinition\n | N.EstreeTSAbstractMethodDefinition\n >\n ).value = valueNode;\n if (type === \"ClassPrivateMethod\") {\n node.computed = false;\n }\n if (process.env.BABEL_8_BREAKING && this.hasPlugin(\"typescript\")) {\n // @ts-expect-error todo(flow->ts) property not defined for all types in union\n if (node.abstract) {\n // @ts-expect-error remove abstract from TSAbstractMethodDefinition\n delete node.abstract;\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"TSAbstractMethodDefinition\",\n );\n }\n }\n if (type === \"ObjectMethod\") {\n if ((node as any as N.ObjectMethod).kind === \"method\") {\n (node as any as N.EstreeProperty).kind = \"init\";\n }\n (node as any as N.EstreeProperty).shorthand = false;\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"Property\",\n );\n } else {\n return this.finishNode(\n // @ts-expect-error cast methods to estree types\n node as Undone,\n \"MethodDefinition\",\n );\n }\n }\n\n nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n if (key.type === \"Literal\") return key.value === \"constructor\";\n return super.nameIsConstructor(key);\n }\n\n parseClassProperty(...args: [N.ClassProperty]): any {\n const propertyNode = super.parseClassProperty(...args);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as unknown as N.EstreePropertyDefinition;\n }\n }\n if (\n process.env.BABEL_8_BREAKING &&\n propertyNode.abstract &&\n this.hasPlugin(\"typescript\")\n ) {\n delete propertyNode.abstract;\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n return propertyNode;\n }\n\n parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n const propertyNode = super.parseClassPrivateProperty(...args);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return propertyNode as unknown as N.EstreePropertyDefinition;\n }\n }\n if (\n process.env.BABEL_8_BREAKING &&\n propertyNode.abstract &&\n this.hasPlugin(\"typescript\")\n ) {\n this.castNodeTo(propertyNode, \"TSAbstractPropertyDefinition\");\n } else {\n this.castNodeTo(propertyNode, \"PropertyDefinition\");\n }\n propertyNode.computed = false;\n return propertyNode;\n }\n\n parseClassAccessorProperty(\n this: Parser,\n node: N.ClassAccessorProperty,\n ): any {\n const accessorPropertyNode = super.parseClassAccessorProperty(node);\n if (!process.env.BABEL_8_BREAKING) {\n if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n return accessorPropertyNode;\n }\n }\n if (accessorPropertyNode.abstract && this.hasPlugin(\"typescript\")) {\n delete accessorPropertyNode.abstract;\n this.castNodeTo(accessorPropertyNode, \"TSAbstractAccessorProperty\");\n } else {\n this.castNodeTo(accessorPropertyNode, \"AccessorProperty\");\n }\n return accessorPropertyNode;\n }\n\n parseObjectProperty(\n prop: N.ObjectProperty,\n startLoc: Position | undefined | null,\n isPattern: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ObjectProperty | undefined | null {\n const node: N.EstreeProperty = super.parseObjectProperty(\n prop,\n startLoc,\n isPattern,\n refExpressionErrors,\n ) as any;\n\n if (node) {\n node.kind = \"init\";\n this.castNodeTo(node, \"Property\");\n }\n\n return node as any;\n }\n\n finishObjectProperty(node: Undone): N.ObjectProperty {\n (node as unknown as Undone).kind = \"init\";\n return this.finishNode(\n node as unknown as Undone,\n \"Property\",\n ) as any;\n }\n\n isValidLVal(\n type: string,\n disallowCallExpression: boolean,\n isUnparenthesizedInAssign: boolean,\n binding: BindingFlag,\n ) {\n return type === \"Property\"\n ? \"value\"\n : super.isValidLVal(\n type,\n disallowCallExpression,\n isUnparenthesizedInAssign,\n binding,\n );\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n return super.isAssignable(node, isBinding);\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (node != null && this.isObjectProperty(node)) {\n const { key, value } = node;\n if (this.isPrivateName(key)) {\n this.classScope.usePrivateName(\n this.getPrivateNameSV(key),\n key.loc.start,\n );\n }\n this.toAssignable(value, isLHS);\n } else {\n super.toAssignable(node, isLHS);\n }\n }\n\n toAssignableObjectExpressionProp(\n prop: N.Node,\n isLast: boolean,\n isLHS: boolean,\n ) {\n if (\n prop.type === \"Property\" &&\n (prop.kind === \"get\" || prop.kind === \"set\")\n ) {\n this.raise(Errors.PatternHasAccessor, prop.key);\n } else if (prop.type === \"Property\" && prop.method) {\n this.raise(Errors.PatternHasMethod, prop.key);\n } else {\n super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n }\n }\n\n finishCallExpression(\n unfinished: Undone,\n optional: boolean,\n ): T {\n const node = super.finishCallExpression(unfinished, optional);\n\n if (node.callee.type === \"Import\") {\n this.castNodeTo(node, \"ImportExpression\");\n (node as N.Node as N.EstreeImportExpression).source = node\n .arguments[0] as N.Expression;\n (node as N.Node as N.EstreeImportExpression).options =\n (node.arguments[1] as N.Expression) ?? null;\n if (!process.env.BABEL_8_BREAKING) {\n // compatibility with previous ESTree AST\n (node as N.Node as N.EstreeImportExpression).attributes =\n (node.arguments[1] as N.Expression) ?? null;\n }\n // arguments isn't optional in the type definition\n // @ts-expect-error delete non-optional properties\n delete node.arguments;\n // callee isn't optional in the type definition\n // @ts-expect-error delete non-optional properties\n delete node.callee;\n } else if (node.type === \"OptionalCallExpression\") {\n this.castNodeTo(node, \"CallExpression\");\n } else {\n node.optional = false;\n }\n\n return node;\n }\n\n toReferencedArguments(\n node:\n | N.CallExpression\n | N.OptionalCallExpression\n | N.EstreeImportExpression,\n /* isParenthesizedExpr?: boolean, */\n ) {\n // ImportExpressions do not have an arguments array.\n if (node.type === \"ImportExpression\") {\n return;\n }\n\n super.toReferencedArguments(node);\n }\n\n parseExport(\n unfinished: Undone,\n decorators: N.Decorator[] | null,\n ) {\n const exportStartLoc = this.state.lastTokStartLoc!;\n const node = super.parseExport(unfinished, decorators);\n\n switch (node.type) {\n case \"ExportAllDeclaration\":\n // @ts-expect-error mutating AST types\n node.exported = null;\n break;\n\n case \"ExportNamedDeclaration\":\n if (\n node.specifiers.length === 1 &&\n node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n ) {\n this.castNodeTo(node, \"ExportAllDeclaration\");\n // @ts-expect-error mutating AST types\n node.exported = node.specifiers[0].exported;\n // @ts-expect-error The ESTree AST shape differs from the Babel AST\n delete node.specifiers;\n }\n\n // fallthrough\n case \"ExportDefaultDeclaration\":\n {\n const { declaration } = node;\n if (\n declaration?.type === \"ClassDeclaration\" &&\n // @ts-expect-error comparing undefined and number\n declaration.decorators?.length > 0 &&\n // decorator comes before export\n declaration.start === node.start\n ) {\n this.resetStartLocation(\n node,\n // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n // export declaration must start with export.\n // https://github.com/babel/babel/issues/15085\n // Here we reset export declaration's start to be the start of the export token\n exportStartLoc,\n );\n }\n }\n\n break;\n }\n\n return node;\n }\n\n stopParseSubscript(base: N.Expression, state: N.ParseSubscriptState) {\n const node = super.stopParseSubscript(base, state);\n if (state.optionalChainMember) {\n return this.estreeParseChainExpression(node, base.loc.end);\n }\n return node;\n }\n\n parseMember(\n base: N.Expression,\n startLoc: Position,\n state: N.ParseSubscriptState,\n computed: boolean,\n optional: boolean,\n ) {\n const node = super.parseMember(base, startLoc, state, computed, optional);\n if (node.type === \"OptionalMemberExpression\") {\n this.castNodeTo(node, \"MemberExpression\");\n } else {\n node.optional = false;\n }\n return node;\n }\n\n isOptionalMemberExpression(node: N.Node) {\n if (node.type === \"ChainExpression\") {\n return node.expression.type === \"MemberExpression\";\n }\n return super.isOptionalMemberExpression(node);\n }\n\n hasPropertyAsPrivateName(node: N.Node): boolean {\n if (node.type === \"ChainExpression\") {\n node = node.expression;\n }\n return super.hasPropertyAsPrivateName(node);\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isObjectProperty(node: N.Node): node is N.EstreeProperty {\n return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n }\n\n // @ts-expect-error ESTree plugin changes node types\n isObjectMethod(node: N.Node): node is N.EstreeProperty {\n return (\n node.type === \"Property\" &&\n (node.method || node.kind === \"get\" || node.kind === \"set\")\n );\n }\n\n /* ============================================================ *\n * parser/node.ts *\n * ============================================================ */\n\n castNodeTo(\n node: N.Node,\n type: T,\n ): Extract {\n const result = super.castNodeTo(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n\n cloneIdentifier(node: T): T {\n const cloned = super.cloneIdentifier(node);\n this.fillOptionalPropertiesForTSESLint(cloned);\n return cloned;\n }\n\n cloneStringLiteral<\n T extends N.EstreeLiteral | N.StringLiteral | N.Placeholder,\n >(node: T): T {\n if (node.type === \"Literal\") {\n return this.cloneEstreeStringLiteral(node) as T;\n }\n return super.cloneStringLiteral(node);\n }\n\n finishNodeAt(\n node: Undone,\n type: T[\"type\"],\n endLoc: Position,\n ): T {\n return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n }\n\n // Override for TS-ESLint that does not allow optional AST properties\n finishNode(node: Undone, type: T[\"type\"]): T {\n const result = super.finishNode(node, type);\n this.fillOptionalPropertiesForTSESLint(result);\n return result;\n }\n\n resetStartLocation(node: N.Node, startLoc: Position) {\n super.resetStartLocation(node, startLoc);\n toESTreeLocation(node);\n }\n\n resetEndLocation(\n node: NodeBase,\n endLoc: Position = this.state.lastTokEndLoc!,\n ): void {\n super.resetEndLocation(node, endLoc);\n toESTreeLocation(node);\n }\n };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n constructor(token: string, preserveSpace?: boolean) {\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n }\n\n token: string;\n preserveSpace: boolean;\n}\n\nconst types: Record = {\n brace: new TokContext(\"{\"), // normal JavaScript expression\n j_oTag: new TokContext(\"...\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\n// ## Token types\n\n// The assignment of fine-grained, information-carrying type objects\n// allows the tokenizer to store the information it has about a\n// token in a way that is very cheap for the parser to look up.\n\n// All token type variables start with an underscore, to make them\n// easy to recognize.\n\n// The `beforeExpr` property is used to disambiguate between 1) binary\n// expression (<) and JSX Tag start (); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\n\n// `isLoop` marks a keyword as starting a loop, which is important\n// to know when parsing a label, in order to allow or disallow\n// continue jumps to that label.\n\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n keyword?: string;\n beforeExpr?: boolean;\n startsExpr?: boolean;\n rightAssociative?: boolean;\n isLoop?: boolean;\n isAssign?: boolean;\n prefix?: boolean;\n postfix?: boolean;\n binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n label: string;\n keyword: string | undefined | null;\n beforeExpr: boolean;\n startsExpr: boolean;\n rightAssociative: boolean;\n isLoop: boolean;\n isAssign: boolean;\n prefix: boolean;\n postfix: boolean;\n binop: number | undefined | null;\n // todo(Babel 8): remove updateContext from exposed token layout\n declare updateContext: ((context: TokContext[]) => void) | undefined | null;\n\n constructor(label: string, conf: TokenOptions = {}) {\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n if (!process.env.BABEL_8_BREAKING) {\n this.updateContext = null;\n }\n }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n options.keyword = name;\n const token = createToken(name, options);\n keywords.set(name, token);\n return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n tokenTypes.push(new ExportedTokenType(name, options));\n\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n name: string,\n options: TokenOptions = {},\n): TokenType {\n ++tokenTypeCounter;\n keywords.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push(options.binop ?? -1);\n tokenBeforeExprs.push(options.beforeExpr ?? false);\n tokenStartsExprs.push(options.startsExpr ?? false);\n tokenPrefixes.push(options.prefix ?? false);\n // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n // Punctuation token types.\n bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n bracketR: createToken(\"]\"),\n // TODO: Remove this in Babel 8\n bracketBarR: createToken(\"|]\"),\n braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n // TODO: Remove this in Babel 8\n braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n braceR: createToken(\"}\"),\n braceBarR: createToken(\"|}\"),\n parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n parenR: createToken(\")\"),\n comma: createToken(\",\", { beforeExpr }),\n semi: createToken(\";\", { beforeExpr }),\n colon: createToken(\":\", { beforeExpr }),\n doubleColon: createToken(\"::\", { beforeExpr }),\n dot: createToken(\".\"),\n question: createToken(\"?\", { beforeExpr }),\n questionDot: createToken(\"?.\"),\n arrow: createToken(\"=>\", { beforeExpr }),\n template: createToken(\"template\"),\n ellipsis: createToken(\"...\", { beforeExpr }),\n backQuote: createToken(\"`\", { startsExpr }),\n dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n // start: isTemplate\n templateTail: createToken(\"...`\", { startsExpr }),\n templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n // end: isTemplate\n at: createToken(\"@\"),\n hash: createToken(\"#\", { startsExpr }),\n\n // Special hashbang token.\n interpreterDirective: createToken(\"#!...\"),\n\n // Operators. These carry several kinds of properties to help the\n // parser use them properly (the presence of these properties is\n // what categorizes them as operators).\n //\n // `binop`, when present, specifies that this operator is a binary\n // operator, and will refer to its precedence.\n //\n // `prefix` and `postfix` mark the operator as a prefix or postfix\n // unary operator.\n //\n // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as\n // binary operators with a very low precedence, that should result\n // in AssignmentExpression nodes.\n\n // start: isAssign\n eq: createToken(\"=\", { beforeExpr, isAssign }),\n assign: createToken(\"_=\", { beforeExpr, isAssign }),\n slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // These are only needed to support % and ^ as a Hack-pipe topic token.\n // When the proposal settles on a token, the others can be merged with\n // tt.assign.\n xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n // end: isAssign\n\n incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n // More possible topic tokens.\n // When the proposal settles on a token, at least one of these may be removed.\n doubleCaret: createToken(\"^^\", { startsExpr }),\n doubleAt: createToken(\"@@\", { startsExpr }),\n\n // start: isBinop\n pipeline: createBinop(\"|>\", 0),\n nullishCoalescing: createBinop(\"??\", 1),\n logicalOR: createBinop(\"||\", 1),\n logicalAND: createBinop(\"&&\", 2),\n bitwiseOR: createBinop(\"|\", 3),\n bitwiseXOR: createBinop(\"^\", 4),\n bitwiseAND: createBinop(\"&\", 5),\n equality: createBinop(\"==/!=/===/!==\", 6),\n lt: createBinop(\"/<=/>=\", 7),\n gt: createBinop(\"/<=/>=\", 7),\n relational: createBinop(\"/<=/>=\", 7),\n bitShift: createBinop(\"<>/>>>\", 8),\n bitShiftL: createBinop(\"<>/>>>\", 8),\n bitShiftR: createBinop(\"<>/>>>\", 8),\n plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n // startsExpr: required by v8intrinsic plugin\n modulo: createToken(\"%\", { binop: 10, startsExpr }),\n // unset `beforeExpr` as it can be `function *`\n star: createToken(\"*\", { binop: 10 }),\n slash: createBinop(\"/\", 10),\n exponent: createToken(\"**\", {\n beforeExpr,\n binop: 11,\n rightAssociative: true,\n }),\n\n // Keywords\n // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n // when new keywords are added\n // start: isLiteralPropertyName\n // start: isKeyword\n _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n // end: isBinop\n _break: createKeyword(\"break\"),\n _case: createKeyword(\"case\", { beforeExpr }),\n _catch: createKeyword(\"catch\"),\n _continue: createKeyword(\"continue\"),\n _debugger: createKeyword(\"debugger\"),\n _default: createKeyword(\"default\", { beforeExpr }),\n _else: createKeyword(\"else\", { beforeExpr }),\n _finally: createKeyword(\"finally\"),\n _function: createKeyword(\"function\", { startsExpr }),\n _if: createKeyword(\"if\"),\n _return: createKeyword(\"return\", { beforeExpr }),\n _switch: createKeyword(\"switch\"),\n _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n _try: createKeyword(\"try\"),\n _var: createKeyword(\"var\"),\n _const: createKeyword(\"const\"),\n _with: createKeyword(\"with\"),\n _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n _this: createKeyword(\"this\", { startsExpr }),\n _super: createKeyword(\"super\", { startsExpr }),\n _class: createKeyword(\"class\", { startsExpr }),\n _extends: createKeyword(\"extends\", { beforeExpr }),\n _export: createKeyword(\"export\"),\n _import: createKeyword(\"import\", { startsExpr }),\n _null: createKeyword(\"null\", { startsExpr }),\n _true: createKeyword(\"true\", { startsExpr }),\n _false: createKeyword(\"false\", { startsExpr }),\n _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n // start: isLoop\n _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n _for: createKeyword(\"for\", { isLoop }),\n _while: createKeyword(\"while\", { isLoop }),\n // end: isLoop\n // end: isKeyword\n\n // Primary literals\n // start: isIdentifier\n _as: createKeywordLike(\"as\", { startsExpr }),\n _assert: createKeywordLike(\"assert\", { startsExpr }),\n _async: createKeywordLike(\"async\", { startsExpr }),\n _await: createKeywordLike(\"await\", { startsExpr }),\n _defer: createKeywordLike(\"defer\", { startsExpr }),\n _from: createKeywordLike(\"from\", { startsExpr }),\n _get: createKeywordLike(\"get\", { startsExpr }),\n _let: createKeywordLike(\"let\", { startsExpr }),\n _meta: createKeywordLike(\"meta\", { startsExpr }),\n _of: createKeywordLike(\"of\", { startsExpr }),\n _sent: createKeywordLike(\"sent\", { startsExpr }),\n _set: createKeywordLike(\"set\", { startsExpr }),\n _source: createKeywordLike(\"source\", { startsExpr }),\n _static: createKeywordLike(\"static\", { startsExpr }),\n _using: createKeywordLike(\"using\", { startsExpr }),\n _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n // Flow and TypeScript Keywordlike\n _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n _checks: createKeywordLike(\"checks\", { startsExpr }),\n _exports: createKeywordLike(\"exports\", { startsExpr }),\n _global: createKeywordLike(\"global\", { startsExpr }),\n _implements: createKeywordLike(\"implements\", { startsExpr }),\n _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n _infer: createKeywordLike(\"infer\", { startsExpr }),\n _is: createKeywordLike(\"is\", { startsExpr }),\n _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n _proto: createKeywordLike(\"proto\", { startsExpr }),\n _require: createKeywordLike(\"require\", { startsExpr }),\n _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n // start: isTSTypeOperator\n _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n _unique: createKeywordLike(\"unique\", { startsExpr }),\n // end: isTSTypeOperator\n // start: isTSDeclarationStart\n _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n _declare: createKeywordLike(\"declare\", { startsExpr }),\n _enum: createKeywordLike(\"enum\", { startsExpr }),\n _module: createKeywordLike(\"module\", { startsExpr }),\n _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n // start: isFlowInterfaceOrTypeOrOpaque\n _interface: createKeywordLike(\"interface\", { startsExpr }),\n _type: createKeywordLike(\"type\", { startsExpr }),\n // end: isTSDeclarationStart\n _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n // end: isFlowInterfaceOrTypeOrOpaque\n name: createToken(\"name\", { startsExpr }),\n\n // placeholder plugin\n placeholder: createToken(\"%%\", { startsExpr }),\n // end: isIdentifier\n\n string: createToken(\"string\", { startsExpr }),\n num: createToken(\"num\", { startsExpr }),\n bigint: createToken(\"bigint\", { startsExpr }),\n // TODO: Remove this in Babel 8\n decimal: createToken(\"decimal\", { startsExpr }),\n // end: isLiteralPropertyName\n regexp: createToken(\"regexp\", { startsExpr }),\n privateName: createToken(\"#name\", { startsExpr }),\n eof: createToken(\"eof\"),\n\n // jsx plugin\n jsxName: createToken(\"jsxName\"),\n jsxText: createToken(\"jsxText\", { beforeExpr }),\n jsxTagStart: createToken(\"jsxTagStart\", { startsExpr }),\n jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n // we can remove the token >= tt._in check when we\n // know a token is either keyword or identifier\n return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n tokenTypes[tt.braceR].updateContext = context => {\n context.pop();\n };\n\n tokenTypes[tt.braceL].updateContext =\n tokenTypes[tt.braceHashL].updateContext =\n tokenTypes[tt.dollarBraceL].updateContext =\n context => {\n context.push(tc.brace);\n };\n\n tokenTypes[tt.backQuote].updateContext = context => {\n if (context[context.length - 1] === tc.template) {\n context.pop();\n } else {\n context.push(tc.template);\n }\n };\n\n tokenTypes[tt.jsxTagStart].updateContext = context => {\n context.push(tc.j_expr, tc.j_oTag);\n };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet nonASCIIidentifierStartChars = \"\\xaa\\xb5\\xba\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02c1\\u02c6-\\u02d1\\u02e0-\\u02e4\\u02ec\\u02ee\\u0370-\\u0374\\u0376\\u0377\\u037a-\\u037d\\u037f\\u0386\\u0388-\\u038a\\u038c\\u038e-\\u03a1\\u03a3-\\u03f5\\u03f7-\\u0481\\u048a-\\u052f\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05d0-\\u05ea\\u05ef-\\u05f2\\u0620-\\u064a\\u066e\\u066f\\u0671-\\u06d3\\u06d5\\u06e5\\u06e6\\u06ee\\u06ef\\u06fa-\\u06fc\\u06ff\\u0710\\u0712-\\u072f\\u074d-\\u07a5\\u07b1\\u07ca-\\u07ea\\u07f4\\u07f5\\u07fa\\u0800-\\u0815\\u081a\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086a\\u0870-\\u0887\\u0889-\\u088f\\u08a0-\\u08c9\\u0904-\\u0939\\u093d\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098c\\u098f\\u0990\\u0993-\\u09a8\\u09aa-\\u09b0\\u09b2\\u09b6-\\u09b9\\u09bd\\u09ce\\u09dc\\u09dd\\u09df-\\u09e1\\u09f0\\u09f1\\u09fc\\u0a05-\\u0a0a\\u0a0f\\u0a10\\u0a13-\\u0a28\\u0a2a-\\u0a30\\u0a32\\u0a33\\u0a35\\u0a36\\u0a38\\u0a39\\u0a59-\\u0a5c\\u0a5e\\u0a72-\\u0a74\\u0a85-\\u0a8d\\u0a8f-\\u0a91\\u0a93-\\u0aa8\\u0aaa-\\u0ab0\\u0ab2\\u0ab3\\u0ab5-\\u0ab9\\u0abd\\u0ad0\\u0ae0\\u0ae1\\u0af9\\u0b05-\\u0b0c\\u0b0f\\u0b10\\u0b13-\\u0b28\\u0b2a-\\u0b30\\u0b32\\u0b33\\u0b35-\\u0b39\\u0b3d\\u0b5c\\u0b5d\\u0b5f-\\u0b61\\u0b71\\u0b83\\u0b85-\\u0b8a\\u0b8e-\\u0b90\\u0b92-\\u0b95\\u0b99\\u0b9a\\u0b9c\\u0b9e\\u0b9f\\u0ba3\\u0ba4\\u0ba8-\\u0baa\\u0bae-\\u0bb9\\u0bd0\\u0c05-\\u0c0c\\u0c0e-\\u0c10\\u0c12-\\u0c28\\u0c2a-\\u0c39\\u0c3d\\u0c58-\\u0c5a\\u0c5c\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdc-\\u0cde\\u0ce0\\u0ce1\\u0cf1\\u0cf2\\u0d04-\\u0d0c\\u0d0e-\\u0d10\\u0d12-\\u0d3a\\u0d3d\\u0d4e\\u0d54-\\u0d56\\u0d5f-\\u0d61\\u0d7a-\\u0d7f\\u0d85-\\u0d96\\u0d9a-\\u0db1\\u0db3-\\u0dbb\\u0dbd\\u0dc0-\\u0dc6\\u0e01-\\u0e30\\u0e32\\u0e33\\u0e40-\\u0e46\\u0e81\\u0e82\\u0e84\\u0e86-\\u0e8a\\u0e8c-\\u0ea3\\u0ea5\\u0ea7-\\u0eb0\\u0eb2\\u0eb3\\u0ebd\\u0ec0-\\u0ec4\\u0ec6\\u0edc-\\u0edf\\u0f00\\u0f40-\\u0f47\\u0f49-\\u0f6c\\u0f88-\\u0f8c\\u1000-\\u102a\\u103f\\u1050-\\u1055\\u105a-\\u105d\\u1061\\u1065\\u1066\\u106e-\\u1070\\u1075-\\u1081\\u108e\\u10a0-\\u10c5\\u10c7\\u10cd\\u10d0-\\u10fa\\u10fc-\\u1248\\u124a-\\u124d\\u1250-\\u1256\\u1258\\u125a-\\u125d\\u1260-\\u1288\\u128a-\\u128d\\u1290-\\u12b0\\u12b2-\\u12b5\\u12b8-\\u12be\\u12c0\\u12c2-\\u12c5\\u12c8-\\u12d6\\u12d8-\\u1310\\u1312-\\u1315\\u1318-\\u135a\\u1380-\\u138f\\u13a0-\\u13f5\\u13f8-\\u13fd\\u1401-\\u166c\\u166f-\\u167f\\u1681-\\u169a\\u16a0-\\u16ea\\u16ee-\\u16f8\\u1700-\\u1711\\u171f-\\u1731\\u1740-\\u1751\\u1760-\\u176c\\u176e-\\u1770\\u1780-\\u17b3\\u17d7\\u17dc\\u1820-\\u1878\\u1880-\\u18a8\\u18aa\\u18b0-\\u18f5\\u1900-\\u191e\\u1950-\\u196d\\u1970-\\u1974\\u1980-\\u19ab\\u19b0-\\u19c9\\u1a00-\\u1a16\\u1a20-\\u1a54\\u1aa7\\u1b05-\\u1b33\\u1b45-\\u1b4c\\u1b83-\\u1ba0\\u1bae\\u1baf\\u1bba-\\u1be5\\u1c00-\\u1c23\\u1c4d-\\u1c4f\\u1c5a-\\u1c7d\\u1c80-\\u1c8a\\u1c90-\\u1cba\\u1cbd-\\u1cbf\\u1ce9-\\u1cec\\u1cee-\\u1cf3\\u1cf5\\u1cf6\\u1cfa\\u1d00-\\u1dbf\\u1e00-\\u1f15\\u1f18-\\u1f1d\\u1f20-\\u1f45\\u1f48-\\u1f4d\\u1f50-\\u1f57\\u1f59\\u1f5b\\u1f5d\\u1f5f-\\u1f7d\\u1f80-\\u1fb4\\u1fb6-\\u1fbc\\u1fbe\\u1fc2-\\u1fc4\\u1fc6-\\u1fcc\\u1fd0-\\u1fd3\\u1fd6-\\u1fdb\\u1fe0-\\u1fec\\u1ff2-\\u1ff4\\u1ff6-\\u1ffc\\u2071\\u207f\\u2090-\\u209c\\u2102\\u2107\\u210a-\\u2113\\u2115\\u2118-\\u211d\\u2124\\u2126\\u2128\\u212a-\\u2139\\u213c-\\u213f\\u2145-\\u2149\\u214e\\u2160-\\u2188\\u2c00-\\u2ce4\\u2ceb-\\u2cee\\u2cf2\\u2cf3\\u2d00-\\u2d25\\u2d27\\u2d2d\\u2d30-\\u2d67\\u2d6f\\u2d80-\\u2d96\\u2da0-\\u2da6\\u2da8-\\u2dae\\u2db0-\\u2db6\\u2db8-\\u2dbe\\u2dc0-\\u2dc6\\u2dc8-\\u2dce\\u2dd0-\\u2dd6\\u2dd8-\\u2dde\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303c\\u3041-\\u3096\\u309b-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u31a0-\\u31bf\\u31f0-\\u31ff\\u3400-\\u4dbf\\u4e00-\\ua48c\\ua4d0-\\ua4fd\\ua500-\\ua60c\\ua610-\\ua61f\\ua62a\\ua62b\\ua640-\\ua66e\\ua67f-\\ua69d\\ua6a0-\\ua6ef\\ua717-\\ua71f\\ua722-\\ua788\\ua78b-\\ua7dc\\ua7f1-\\ua801\\ua803-\\ua805\\ua807-\\ua80a\\ua80c-\\ua822\\ua840-\\ua873\\ua882-\\ua8b3\\ua8f2-\\ua8f7\\ua8fb\\ua8fd\\ua8fe\\ua90a-\\ua925\\ua930-\\ua946\\ua960-\\ua97c\\ua984-\\ua9b2\\ua9cf\\ua9e0-\\ua9e4\\ua9e6-\\ua9ef\\ua9fa-\\ua9fe\\uaa00-\\uaa28\\uaa40-\\uaa42\\uaa44-\\uaa4b\\uaa60-\\uaa76\\uaa7a\\uaa7e-\\uaaaf\\uaab1\\uaab5\\uaab6\\uaab9-\\uaabd\\uaac0\\uaac2\\uaadb-\\uaadd\\uaae0-\\uaaea\\uaaf2-\\uaaf4\\uab01-\\uab06\\uab09-\\uab0e\\uab11-\\uab16\\uab20-\\uab26\\uab28-\\uab2e\\uab30-\\uab5a\\uab5c-\\uab69\\uab70-\\uabe2\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufb00-\\ufb06\\ufb13-\\ufb17\\ufb1d\\ufb1f-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc\";\n/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\xb7\\u0300-\\u036f\\u0387\\u0483-\\u0487\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u0669\\u0670\\u06d6-\\u06dc\\u06df-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u06f0-\\u06f9\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07c0-\\u07c9\\u07eb-\\u07f3\\u07fd\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0859-\\u085b\\u0897-\\u089f\\u08ca-\\u08e1\\u08e3-\\u0903\\u093a-\\u093c\\u093e-\\u094f\\u0951-\\u0957\\u0962\\u0963\\u0966-\\u096f\\u0981-\\u0983\\u09bc\\u09be-\\u09c4\\u09c7\\u09c8\\u09cb-\\u09cd\\u09d7\\u09e2\\u09e3\\u09e6-\\u09ef\\u09fe\\u0a01-\\u0a03\\u0a3c\\u0a3e-\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a66-\\u0a71\\u0a75\\u0a81-\\u0a83\\u0abc\\u0abe-\\u0ac5\\u0ac7-\\u0ac9\\u0acb-\\u0acd\\u0ae2\\u0ae3\\u0ae6-\\u0aef\\u0afa-\\u0aff\\u0b01-\\u0b03\\u0b3c\\u0b3e-\\u0b44\\u0b47\\u0b48\\u0b4b-\\u0b4d\\u0b55-\\u0b57\\u0b62\\u0b63\\u0b66-\\u0b6f\\u0b82\\u0bbe-\\u0bc2\\u0bc6-\\u0bc8\\u0bca-\\u0bcd\\u0bd7\\u0be6-\\u0bef\\u0c00-\\u0c04\\u0c3c\\u0c3e-\\u0c44\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0c66-\\u0c6f\\u0c81-\\u0c83\\u0cbc\\u0cbe-\\u0cc4\\u0cc6-\\u0cc8\\u0cca-\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0ce6-\\u0cef\\u0cf3\\u0d00-\\u0d03\\u0d3b\\u0d3c\\u0d3e-\\u0d44\\u0d46-\\u0d48\\u0d4a-\\u0d4d\\u0d57\\u0d62\\u0d63\\u0d66-\\u0d6f\\u0d81-\\u0d83\\u0dca\\u0dcf-\\u0dd4\\u0dd6\\u0dd8-\\u0ddf\\u0de6-\\u0def\\u0df2\\u0df3\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0e50-\\u0e59\\u0eb1\\u0eb4-\\u0ebc\\u0ec8-\\u0ece\\u0ed0-\\u0ed9\\u0f18\\u0f19\\u0f20-\\u0f29\\u0f35\\u0f37\\u0f39\\u0f3e\\u0f3f\\u0f71-\\u0f84\\u0f86\\u0f87\\u0f8d-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102b-\\u103e\\u1040-\\u1049\\u1056-\\u1059\\u105e-\\u1060\\u1062-\\u1064\\u1067-\\u106d\\u1071-\\u1074\\u1082-\\u108d\\u108f-\\u109d\\u135d-\\u135f\\u1369-\\u1371\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b4-\\u17d3\\u17dd\\u17e0-\\u17e9\\u180b-\\u180d\\u180f-\\u1819\\u18a9\\u1920-\\u192b\\u1930-\\u193b\\u1946-\\u194f\\u19d0-\\u19da\\u1a17-\\u1a1b\\u1a55-\\u1a5e\\u1a60-\\u1a7c\\u1a7f-\\u1a89\\u1a90-\\u1a99\\u1ab0-\\u1abd\\u1abf-\\u1add\\u1ae0-\\u1aeb\\u1b00-\\u1b04\\u1b34-\\u1b44\\u1b50-\\u1b59\\u1b6b-\\u1b73\\u1b80-\\u1b82\\u1ba1-\\u1bad\\u1bb0-\\u1bb9\\u1be6-\\u1bf3\\u1c24-\\u1c37\\u1c40-\\u1c49\\u1c50-\\u1c59\\u1cd0-\\u1cd2\\u1cd4-\\u1ce8\\u1ced\\u1cf4\\u1cf7-\\u1cf9\\u1dc0-\\u1dff\\u200c\\u200d\\u203f\\u2040\\u2054\\u20d0-\\u20dc\\u20e1\\u20e5-\\u20f0\\u2cef-\\u2cf1\\u2d7f\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\u30fb\\ua620-\\ua629\\ua66f\\ua674-\\ua67d\\ua69e\\ua69f\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua823-\\ua827\\ua82c\\ua880\\ua881\\ua8b4-\\ua8c5\\ua8d0-\\ua8d9\\ua8e0-\\ua8f1\\ua8ff-\\ua909\\ua926-\\ua92d\\ua947-\\ua953\\ua980-\\ua983\\ua9b3-\\ua9c0\\ua9d0-\\ua9d9\\ua9e5\\ua9f0-\\ua9f9\\uaa29-\\uaa36\\uaa43\\uaa4c\\uaa4d\\uaa50-\\uaa59\\uaa7b-\\uaa7d\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uaaeb-\\uaaef\\uaaf5\\uaaf6\\uabe3-\\uabea\\uabec\\uabed\\uabf0-\\uabf9\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe2f\\ufe33\\ufe34\\ufe4d-\\ufe4f\\uff10-\\uff19\\uff3f\\uff65\";\n\nconst nonASCIIidentifierStart = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\n\n// These are a run-length and offset-encoded representation of the\n// >0xffff code points that are a valid part of identifiers. The\n// offset starts at 0x10000, and each pair of numbers represents an\n// offset to the next range, and then a size of the range. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489];\n/* prettier-ignore */\nconst astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239];\n\n// This has a complexity linear to the value of the code. The\n// assumption is that looking up astral identifier characters is\n// rare.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n let pos = 0x10000;\n for (let i = 0, length = set.length; i < length; i += 2) {\n pos += set[i];\n if (pos > code) return false;\n\n pos += set[i + 1];\n if (pos >= code) return true;\n }\n return false;\n}\n\n// Test whether a given character code starts an identifier.\n\nexport function isIdentifierStart(code: number): boolean {\n if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return (\n code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n );\n }\n return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n if (code < charCodes.digit0) return code === charCodes.dollarSign;\n if (code < charCodes.colon) return true;\n if (code < charCodes.uppercaseA) return false;\n if (code <= charCodes.uppercaseZ) return true;\n if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n if (code <= charCodes.lowercaseZ) return true;\n if (code <= 0xffff) {\n return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n }\n return (\n isInAstralSet(code, astralIdentifierStartCodes) ||\n isInAstralSet(code, astralIdentifierCodes)\n );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n let isFirst = true;\n for (let i = 0; i < name.length; i++) {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = name.charCodeAt(i);\n if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n const trail = name.charCodeAt(++i);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n if (isFirst) {\n isFirst = false;\n if (!isIdentifierStart(cp)) {\n return false;\n }\n } else if (!isIdentifierChar(cp)) {\n return false;\n }\n }\n return !isFirst;\n}\n","const reservedWords = {\n keyword: [\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n ],\n strict: [\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n ],\n strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n word: string,\n inModule: boolean,\n): boolean {\n return (\n isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n );\n}\n\nexport function isKeyword(word: string): boolean {\n return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n isIdentifierStart,\n isIdentifierChar,\n isReservedWord,\n isStrictBindOnlyReservedWord,\n isStrictBindReservedWord,\n isStrictReservedWord,\n isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n current: number,\n next: number,\n next2: number,\n): boolean {\n return (\n current === charCodes.atSign &&\n next === charCodes.atSign &&\n isIdentifierStart(next2)\n );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n \"break\",\n \"case\",\n \"catch\",\n \"continue\",\n \"debugger\",\n \"default\",\n \"do\",\n \"else\",\n \"finally\",\n \"for\",\n \"function\",\n \"if\",\n \"return\",\n \"switch\",\n \"throw\",\n \"try\",\n \"var\",\n \"const\",\n \"while\",\n \"with\",\n \"new\",\n \"this\",\n \"super\",\n \"class\",\n \"extends\",\n \"export\",\n \"import\",\n \"null\",\n \"true\",\n \"false\",\n \"in\",\n \"instanceof\",\n \"typeof\",\n \"void\",\n \"delete\",\n // strict\n \"implements\",\n \"interface\",\n \"let\",\n \"package\",\n \"private\",\n \"protected\",\n \"public\",\n \"static\",\n \"yield\",\n // strictBind\n \"eval\",\n \"arguments\",\n // reservedWorkLike\n \"enum\",\n \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n // var-declared names in the current lexical scope\n Var = 1 << 0,\n // lexically-declared names in the current lexical scope\n Lexical = 1 << 1,\n // lexically-declared FunctionDeclaration names in the current lexical scope\n Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n flags: ScopeFlag = 0;\n names = new Map();\n firstLexicalName = \"\";\n\n constructor(flags: ScopeFlag) {\n this.flags = flags;\n }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler {\n parser: Tokenizer;\n scopeStack: IScope[] = [];\n inModule: boolean;\n undefinedExports = new Map();\n\n constructor(parser: Tokenizer, inModule: boolean) {\n this.parser = parser;\n this.inModule = inModule;\n }\n\n get inTopLevel() {\n return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n }\n get inFunction() {\n return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n }\n get allowSuper() {\n return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n }\n get allowDirectSuper() {\n return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n }\n get allowNewTarget() {\n return (this.currentThisScopeFlags() & ScopeFlag.NEW_TARGET) > 0;\n }\n get inClass() {\n return (this.currentThisScopeFlags() & ScopeFlag.CLASS_BASE) > 0;\n }\n get inClassAndNotInNonArrowFunction() {\n const flags = this.currentThisScopeFlags();\n return (\n (flags & ScopeFlag.CLASS_BASE) > 0 &&\n (flags & ScopeFlag.FUNCTION_BASE) === 0\n );\n }\n get inStaticBlock() {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & ScopeFlag.STATIC_BLOCK) {\n return true;\n }\n if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE)) {\n // function body, module body, class property initializers\n return false;\n }\n }\n }\n get inNonArrowFunction() {\n return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION_BASE) > 0;\n }\n get inBareCaseStatement() {\n return (this.currentScope().flags & ScopeFlag.SWITCH) > 0;\n }\n get treatFunctionsAsVar() {\n return this.treatFunctionsAsVarInScope(this.currentScope());\n }\n\n createScope(flags: ScopeFlag): Scope {\n return new Scope(flags);\n }\n\n enter(flags: ScopeFlag) {\n /*:: +createScope: (flags:ScopeFlag) => IScope; */\n // @ts-expect-error This method will be overwritten by subclasses\n this.scopeStack.push(this.createScope(flags));\n }\n\n exit(): ScopeFlag {\n const scope = this.scopeStack.pop()!;\n return scope.flags;\n }\n\n // The spec says:\n // > At the top level of a function, or script, function declarations are\n // > treated like var declarations rather than like lexical declarations.\n treatFunctionsAsVarInScope(scope: IScope): boolean {\n return !!(\n scope.flags & (ScopeFlag.FUNCTION_BASE | ScopeFlag.STATIC_BLOCK) ||\n (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n );\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n let scope = this.currentScope();\n if (\n bindingType & BindingFlag.SCOPE_LEXICAL ||\n bindingType & BindingFlag.SCOPE_FUNCTION\n ) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n let type = scope.names.get(name) || 0;\n\n if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n type = type | NameType.Function;\n } else {\n if (!scope.firstLexicalName) {\n scope.firstLexicalName = name;\n }\n type = type | NameType.Lexical;\n }\n\n scope.names.set(name, type);\n\n if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n this.maybeExportDefined(scope, name);\n }\n } else if (bindingType & BindingFlag.SCOPE_VAR) {\n for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n scope = this.scopeStack[i];\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n this.maybeExportDefined(scope, name);\n\n if (scope.flags & ScopeFlag.VAR) break;\n }\n }\n if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n maybeExportDefined(scope: IScope, name: string) {\n if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n this.undefinedExports.delete(name);\n }\n }\n\n checkRedeclarationInScope(\n scope: IScope,\n name: string,\n bindingType: BindingFlag,\n loc: Position,\n ) {\n if (this.isRedeclaredInScope(scope, name, bindingType)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name,\n });\n }\n }\n\n isRedeclaredInScope(\n scope: IScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n return scope.names.has(name);\n }\n\n const type = scope.names.get(name) || 0;\n\n if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n return (\n (type & NameType.Lexical) > 0 ||\n (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n );\n }\n\n return (\n ((type & NameType.Lexical) > 0 &&\n // Annex B.3.4\n // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n !(\n scope.flags & ScopeFlag.SIMPLE_CATCH &&\n scope.firstLexicalName === name\n )) ||\n (!this.treatFunctionsAsVarInScope(scope) &&\n (type & NameType.Function) > 0)\n );\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n const topLevelScope = this.scopeStack[0];\n if (!topLevelScope.names.has(name)) {\n this.undefinedExports.set(name, id.loc.start);\n }\n }\n\n currentScope(): IScope {\n return this.scopeStack[this.scopeStack.length - 1];\n }\n\n currentVarScopeFlags(): ScopeFlag {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (flags & ScopeFlag.VAR) {\n return flags;\n }\n }\n }\n\n // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n currentThisScopeFlags(): ScopeFlag {\n for (let i = this.scopeStack.length - 1; ; i--) {\n const { flags } = this.scopeStack[i];\n if (\n flags & (ScopeFlag.VAR | ScopeFlag.CLASS_BASE) &&\n !(flags & ScopeFlag.ARROW)\n ) {\n return flags;\n }\n }\n }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n // declare function foo(): type;\n declareFunctions = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler {\n createScope(flags: ScopeFlag): FlowScope {\n return new FlowScope(flags);\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n const scope = this.currentScope();\n if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n scope.declareFunctions.add(name);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n }\n\n isRedeclaredInScope(\n scope: FlowScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n if (\n bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n !scope.declareFunctions.has(name)\n ) {\n const type = scope.names.get(name)!;\n return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n }\n\n return false;\n }\n\n checkLocalExport(id: N.Identifier) {\n if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n super.checkLocalExport(id);\n }\n }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n tokenIsIdentifier,\n tokenIsKeyword,\n tokenIsKeywordOrIdentifier,\n tokenIsLiteralPropertyName,\n tokenLabelName,\n tt,\n type TokenType,\n tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\n\nconst reservedTypes = new Set([\n \"_\",\n \"any\",\n \"bool\",\n \"boolean\",\n \"empty\",\n \"extends\",\n \"false\",\n \"interface\",\n \"mixed\",\n \"null\",\n \"number\",\n \"static\",\n \"string\",\n \"true\",\n \"typeof\",\n \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n AmbiguousConditionalArrow:\n \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n AmbiguousDeclareModuleKind:\n \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n // TODO: When we get proper string enums in typescript make this ReservedType.\n // Not really worth it to do the whole $Values dance with reservedTypes set.\n AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n `Cannot overwrite reserved type ${reservedType}.`,\n DeclareClassElement:\n \"The `declare` modifier can only appear on class fields.\",\n DeclareClassFieldInitializer:\n \"Initializers are not allowed in fields with the `declare` modifier.\",\n DuplicateDeclareModuleExports:\n \"Duplicate `declare module.exports` statement.\",\n EnumBooleanMemberNotInitialized: ({\n memberName,\n enumName,\n }: {\n memberName: string;\n enumName: string;\n }) =>\n `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n EnumDuplicateMemberName: ({\n memberName,\n enumName,\n }: {\n memberName: string;\n enumName: string;\n }) =>\n `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n EnumInvalidExplicitType: ({\n invalidEnumType,\n enumName,\n }: {\n invalidEnumType: string;\n enumName: string;\n }) =>\n `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n EnumInvalidExplicitTypeUnknownSupplied: ({\n enumName,\n }: {\n enumName: string;\n }) =>\n `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n // TODO: When moving to typescript, we should either have each of the\n // following errors only accept the specific strings they want:\n //\n // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n // ...SymbolType: explicitType: \"symbol\"\n // ...UnknownType: explicitType: null\n //\n // Or, alternatively, merge these three errors together into one\n // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n // without alteration, and then just have its message change based on the\n // explicitType.\n EnumInvalidMemberInitializerPrimaryType: ({\n enumName,\n memberName,\n explicitType,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n EnumInvalidMemberInitializerSymbolType: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n EnumInvalidMemberInitializerUnknownType: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n explicitType: EnumExplicitType;\n }) =>\n `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n EnumInvalidMemberName: ({\n enumName,\n memberName,\n suggestion,\n }: {\n enumName: string;\n memberName: string;\n suggestion: string;\n }) =>\n `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n EnumNumberMemberNotInitialized: ({\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n }) =>\n `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n EnumStringMemberInconsistentlyInitialized: ({\n enumName,\n }: {\n enumName: string;\n }) =>\n `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n ImportReflectionHasImportType:\n \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n ImportTypeShorthandOnlyInPureImport:\n \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n InexactInsideExact:\n \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n InexactInsideNonObject:\n \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n InvalidNonTypeImportInDeclareModule:\n \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n MissingTypeParamDefault:\n \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n NestedDeclareModule:\n \"`declare module` cannot be used inside another `declare module`.\",\n NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n PatternIsOptional: {\n message:\n \"A binding pattern parameter cannot be optional in an implementation signature.\",\n // For consistency in TypeScript and Flow error codes\n ...(!process.env.BABEL_8_BREAKING\n ? { reasonCode: \"OptionalBindingPattern\" }\n : {}),\n },\n SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n SpreadVariance: \"Spread properties cannot have variance.\",\n ThisParamAnnotationRequired:\n \"A type annotation is required for the `this` parameter.\",\n ThisParamBannedInConstructor:\n \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n ThisParamMustBeFirst:\n \"The `this` parameter must be the first function parameter.\",\n ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n TypeBeforeInitializer:\n \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n TypeCastInPattern:\n \"The type cast expression is expected to be wrapped with parenthesis.\",\n UnexpectedExplicitInexactInObject:\n \"Explicit inexact syntax must appear at the end of an inexact object.\",\n UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n `Unexpected reserved type ${reservedType}.`,\n UnexpectedReservedUnderscore:\n \"`_` is only allowed as a type argument to call or new.\",\n UnexpectedSpaceBetweenModuloChecks:\n \"Spaces between `%` and `checks` are not allowed here.\",\n UnexpectedSpreadType:\n \"Spread operator cannot appear in class or interface definitions.\",\n UnexpectedSubtractionOperand:\n 'Unexpected token, expected \"number\" or \"bigint\".',\n UnexpectedTokenAfterTypeParameter:\n \"Expected an arrow function after this type parameter declaration.\",\n UnexpectedTypeParameterBeforeAsyncArrowFunction:\n \"Type parameters must come after the async keyword, e.g. instead of ` async () => {}`, use `async () => {}`.\",\n UnsupportedDeclareExportKind: ({\n unsupportedExportKind,\n suggestion,\n }: {\n unsupportedExportKind: string;\n suggestion: string;\n }) =>\n `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n UnsupportedStatementInDeclareModule:\n \"Only declares and type imports are allowed inside declare module.\",\n UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n return (\n bodyElement.type === \"DeclareExportAllDeclaration\" ||\n (bodyElement.type === \"DeclareExportDeclaration\" &&\n (!bodyElement.declaration ||\n (bodyElement.declaration.type !== \"TypeAlias\" &&\n bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n );\n}\n\nfunction hasTypeImportKind(\n node: Undone,\n): boolean {\n return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n const: \"declare export var\",\n let: \"declare export var\",\n type: \"export type\",\n interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition(\n list: T[],\n test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n const list1: T[] = [];\n const list2: T[] = [];\n for (let i = 0; i < list.length; i++) {\n (test(list[i], i, list) ? list1 : list2).push(list[i]);\n }\n return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n enumName: string;\n explicitType: EnumExplicitType;\n memberName: string;\n};\n\ntype EnumMemberInit =\n | {\n type: \"number\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"string\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"boolean\";\n loc: Position;\n value: N.Node;\n }\n | {\n type: \"invalid\";\n loc: Position;\n }\n | {\n type: \"none\";\n loc: Position;\n };\n\nexport default (superClass: ClassWithMixin) =>\n class FlowParserMixin extends superClass implements Parser {\n // The value of the @flow/@noflow pragma. Initially undefined, transitions\n // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n // past the initial comment.\n flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n getScopeHandler(): new (...args: any) => FlowScopeHandler {\n return FlowScopeHandler;\n }\n\n shouldParseTypes(): boolean {\n return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n }\n\n finishToken(type: TokenType, val: any): void {\n if (\n type !== tt.string &&\n type !== tt.semi &&\n type !== tt.interpreterDirective\n ) {\n if (this.flowPragma === undefined) {\n this.flowPragma = null;\n }\n }\n super.finishToken(type, val);\n }\n\n addComment(comment: N.Comment): void {\n if (this.flowPragma === undefined) {\n // Try to parse a flow pragma.\n const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n if (!matches) {\n // do nothing\n } else if (matches[1] === \"flow\") {\n this.flowPragma = \"flow\";\n } else if (matches[1] === \"noflow\") {\n this.flowPragma = \"noflow\";\n } else {\n throw new Error(\"Unexpected flow pragma\");\n }\n }\n super.addComment(comment);\n }\n\n flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tok || tt.colon);\n\n const type = this.flowParseType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParsePredicate(): N.FlowPredicate {\n const node = this.startNode();\n const moduloLoc = this.state.startLoc;\n this.next(); // eat `%`\n this.expectContextual(tt._checks);\n // Force '%' and 'checks' to be adjacent\n if (this.state.lastTokStartLoc!.index > moduloLoc.index + 1) {\n this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n }\n if (this.eat(tt.parenL)) {\n node.value = super.parseExpression();\n this.expect(tt.parenR);\n return this.finishNode(node, \"DeclaredPredicate\");\n } else {\n return this.finishNode(node, \"InferredPredicate\");\n }\n }\n\n flowParseTypeAndPredicateInitialiser(): [\n N.FlowType | null,\n N.FlowPredicate | null,\n ] {\n const oldInType = this.state.inType;\n this.state.inType = true;\n this.expect(tt.colon);\n let type = null;\n let predicate = null;\n if (this.match(tt.modulo)) {\n this.state.inType = oldInType;\n predicate = this.flowParsePredicate();\n } else {\n type = this.flowParseType();\n this.state.inType = oldInType;\n if (this.match(tt.modulo)) {\n predicate = this.flowParsePredicate();\n }\n }\n return [type, predicate];\n }\n\n flowParseDeclareClass(\n node: Undone,\n ): N.FlowDeclareClass {\n this.next();\n this.flowParseInterfaceish(node, /*isClass*/ true);\n return this.finishNode(node, \"DeclareClass\");\n }\n\n flowParseDeclareFunction(\n node: Undone,\n ): N.FlowDeclareFunction {\n this.next();\n\n const id = (node.id = this.parseIdentifier());\n\n const typeNode = this.startNode();\n const typeContainer = this.startNode();\n\n if (this.match(tt.lt)) {\n typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n typeNode.typeParameters = null;\n }\n\n this.expect(tt.parenL);\n const tmp = this.flowParseFunctionTypeParams();\n typeNode.params = tmp.params;\n typeNode.rest = tmp.rest;\n typeNode.this = tmp._this;\n this.expect(tt.parenR);\n\n [typeNode.returnType, node.predicate] =\n this.flowParseTypeAndPredicateInitialiser();\n\n typeContainer.typeAnnotation = this.finishNode(\n typeNode,\n \"FunctionTypeAnnotation\",\n );\n\n id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n this.resetEndLocation(id);\n this.semicolon();\n\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_FLOW_DECLARE_FN,\n node.id.loc.start,\n );\n\n return this.finishNode(node, \"DeclareFunction\");\n }\n\n flowParseDeclare(\n node: Undone,\n insideModule?: boolean,\n ): N.FlowDeclare {\n if (this.match(tt._class)) {\n return this.flowParseDeclareClass(node);\n } else if (this.match(tt._function)) {\n return this.flowParseDeclareFunction(node);\n } else if (this.match(tt._var)) {\n return this.flowParseDeclareVariable(node);\n } else if (this.eatContextual(tt._module)) {\n if (this.match(tt.dot)) {\n return this.flowParseDeclareModuleExports(node);\n } else {\n if (insideModule) {\n this.raise(\n FlowErrors.NestedDeclareModule,\n this.state.lastTokStartLoc!,\n );\n }\n return this.flowParseDeclareModule(node);\n }\n } else if (this.isContextual(tt._type)) {\n return this.flowParseDeclareTypeAlias(node);\n } else if (this.isContextual(tt._opaque)) {\n return this.flowParseDeclareOpaqueType(node);\n } else if (this.isContextual(tt._interface)) {\n return this.flowParseDeclareInterface(node);\n } else if (this.match(tt._export)) {\n return this.flowParseDeclareExportDeclaration(node, insideModule);\n }\n throw this.unexpected();\n }\n\n flowParseDeclareVariable(\n node: Undone,\n ): N.FlowDeclareVariable {\n this.next();\n node.id = this.flowParseTypeAnnotatableIdentifier(\n /*allowPrimitiveOverride*/ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_VAR,\n node.id.loc.start,\n );\n this.semicolon();\n return this.finishNode(node, \"DeclareVariable\");\n }\n\n flowParseDeclareModule(\n node: Undone,\n ): N.FlowDeclareModule {\n this.scope.enter(ScopeFlag.OTHER);\n\n if (this.match(tt.string)) {\n node.id = super.parseExprAtom();\n } else {\n node.id = this.parseIdentifier();\n }\n\n const bodyNode = (node.body = this.startNode());\n const body: N.Statement[] = (bodyNode.body = []);\n this.expect(tt.braceL);\n while (!this.match(tt.braceR)) {\n const bodyNode = this.startNode();\n\n if (this.match(tt._import)) {\n this.next();\n if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n this.raise(\n FlowErrors.InvalidNonTypeImportInDeclareModule,\n this.state.lastTokStartLoc!,\n );\n }\n body.push(super.parseImport(bodyNode));\n } else {\n this.expectContextual(\n tt._declare,\n FlowErrors.UnsupportedStatementInDeclareModule,\n );\n body.push(this.flowParseDeclare(bodyNode, true));\n }\n }\n\n this.scope.exit();\n\n this.expect(tt.braceR);\n\n this.finishNode(bodyNode, \"BlockStatement\");\n\n let kind: \"CommonJS\" | \"ES\" | null = null;\n let hasModuleExport = false;\n body.forEach(bodyElement => {\n if (isEsModuleType(bodyElement)) {\n if (kind === \"CommonJS\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"ES\";\n } else if (bodyElement.type === \"DeclareModuleExports\") {\n if (hasModuleExport) {\n this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n }\n if (kind === \"ES\") {\n this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n }\n kind = \"CommonJS\";\n hasModuleExport = true;\n }\n });\n\n node.kind = kind || \"CommonJS\";\n return this.finishNode(node, \"DeclareModule\");\n }\n\n flowParseDeclareExportDeclaration(\n node: Undone,\n insideModule?: boolean | null,\n ): N.FlowDeclareExportDeclaration {\n this.expect(tt._export);\n\n if (this.eat(tt._default)) {\n if (this.match(tt._function) || this.match(tt._class)) {\n // declare export default class ...\n // declare export default function ...\n node.declaration = this.flowParseDeclare(this.startNode());\n } else {\n // declare export default [type];\n node.declaration = this.flowParseType();\n this.semicolon();\n }\n node.default = true;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else {\n if (\n this.match(tt._const) ||\n this.isLet() ||\n ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n !insideModule)\n ) {\n const label = this.state.value as\n | \"const\"\n | \"let\"\n | \"type\"\n | \"interface\";\n throw this.raise(\n FlowErrors.UnsupportedDeclareExportKind,\n this.state.startLoc,\n {\n unsupportedExportKind: label,\n suggestion: exportSuggestions[label],\n },\n );\n }\n\n if (\n this.match(tt._var) || // declare export var ...\n this.match(tt._function) || // declare export function ...\n this.match(tt._class) || // declare export class ...\n this.isContextual(tt._opaque) // declare export opaque ..\n ) {\n node.declaration = this.flowParseDeclare(this.startNode());\n node.default = false;\n\n return this.finishNode(node, \"DeclareExportDeclaration\");\n } else if (\n this.match(tt.star) || // declare export * from ''\n this.match(tt.braceL) || // declare export {} ...\n this.isContextual(tt._interface) || // declare export interface ...\n this.isContextual(tt._type) || // declare export type ...\n this.isContextual(tt._opaque) // declare export opaque type ...\n ) {\n node = this.parseExport(\n node as Undone,\n /* decorators */ null,\n );\n if (node.type === \"ExportNamedDeclaration\") {\n node.default = false;\n delete node.exportKind;\n return this.castNodeTo(\n node as N.ExportNamedDeclaration,\n \"DeclareExportDeclaration\",\n );\n } else {\n return this.castNodeTo(\n node as N.ExportAllDeclaration,\n \"DeclareExportAllDeclaration\",\n );\n }\n }\n }\n\n throw this.unexpected();\n }\n\n flowParseDeclareModuleExports(\n node: Undone,\n ): N.FlowDeclareModuleExports {\n this.next();\n this.expectContextual(tt._exports);\n node.typeAnnotation = this.flowParseTypeAnnotation();\n this.semicolon();\n\n return this.finishNode(node, \"DeclareModuleExports\");\n }\n\n flowParseDeclareTypeAlias(\n node: Undone,\n ): N.FlowDeclareTypeAlias {\n this.next();\n const finished = this.flowParseTypeAlias(\n node,\n ) as unknown as N.FlowDeclareTypeAlias;\n // Don't do finishNode as we don't want to process comments twice\n this.castNodeTo(finished, \"DeclareTypeAlias\");\n return finished;\n }\n\n flowParseDeclareOpaqueType(\n node: Undone,\n ): N.FlowDeclareOpaqueType {\n this.next();\n const finished = this.flowParseOpaqueType(\n node,\n true,\n ) as unknown as N.FlowDeclareOpaqueType;\n // Don't do finishNode as we don't want to process comments twice\n this.castNodeTo(finished, \"DeclareOpaqueType\");\n return finished;\n }\n\n flowParseDeclareInterface(\n node: Undone,\n ): N.FlowDeclareInterface {\n this.next();\n this.flowParseInterfaceish(node, /* isClass */ false);\n return this.finishNode(node, \"DeclareInterface\");\n }\n\n // Interfaces\n\n flowParseInterfaceish(node: Undone, isClass: boolean): void {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ !isClass,\n /* declaration */ true,\n );\n\n this.scope.declareName(\n node.id.name,\n isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.extends = [];\n\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (!isClass && this.eat(tt.comma));\n }\n\n if (isClass) {\n node.implements = [];\n node.mixins = [];\n\n if (this.eatContextual(tt._mixins)) {\n do {\n node.mixins.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n if (this.eatContextual(tt._implements)) {\n do {\n node.implements.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: isClass,\n allowExact: false,\n allowSpread: false,\n allowProto: isClass,\n allowInexact: false,\n });\n }\n\n flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n const node = this.startNode();\n\n node.id = this.flowParseQualifiedTypeIdentifier();\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n\n return this.finishNode(node, \"InterfaceExtends\");\n }\n\n flowParseInterface(node: Undone): N.FlowInterface {\n this.flowParseInterfaceish(node, /* isClass */ false);\n return this.finishNode(node, \"InterfaceDeclaration\");\n }\n\n checkNotUnderscore(word: string) {\n if (word === \"_\") {\n this.raise(\n FlowErrors.UnexpectedReservedUnderscore,\n this.state.startLoc,\n );\n }\n }\n\n checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n if (!reservedTypes.has(word)) return;\n\n this.raise(\n declaration\n ? FlowErrors.AssignReservedType\n : FlowErrors.UnexpectedReservedType,\n startLoc,\n {\n reservedType: word,\n },\n );\n }\n\n flowParseRestrictedIdentifier(\n liberal?: boolean,\n declaration?: boolean,\n ): N.Identifier {\n this.checkReservedType(\n this.state.value,\n this.state.startLoc,\n declaration,\n );\n return this.parseIdentifier(liberal);\n }\n\n // Type aliases\n\n flowParseTypeAlias(node: Undone): N.FlowTypeAlias {\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ false,\n /* declaration */ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n node.right = this.flowParseTypeInitialiser(tt.eq);\n this.semicolon();\n\n return this.finishNode(node, \"TypeAlias\");\n }\n\n flowParseOpaqueType(\n node: Undone,\n declare: boolean,\n ): N.FlowOpaqueType {\n this.expectContextual(tt._type);\n node.id = this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n );\n this.scope.declareName(\n node.id.name,\n BindingFlag.TYPE_LEXICAL,\n node.id.loc.start,\n );\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n } else {\n node.typeParameters = null;\n }\n\n // Parse the supertype\n node.supertype = null;\n if (this.match(tt.colon)) {\n node.supertype = this.flowParseTypeInitialiser(tt.colon);\n }\n\n node.impltype = null;\n if (!declare) {\n node.impltype = this.flowParseTypeInitialiser(tt.eq);\n }\n this.semicolon();\n\n return this.finishNode(node, \"OpaqueType\");\n }\n\n // Type annotations\n\n flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n const nodeStartLoc = this.state.startLoc;\n\n const node = this.startNode();\n\n const variance = this.flowParseVariance();\n\n const ident = this.flowParseTypeAnnotatableIdentifier();\n node.name = ident.name;\n // @ts-expect-error migrate to Babel types\n node.variance = variance;\n // @ts-expect-error migrate to Babel types\n node.bound = ident.typeAnnotation;\n\n if (this.match(tt.eq)) {\n this.eat(tt.eq);\n // @ts-expect-error migrate to Babel types\n node.default = this.flowParseType();\n } else {\n if (requireDefault) {\n this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n }\n }\n\n return this.finishNode(node, \"TypeParameter\");\n }\n\n flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n const oldInType = this.state.inType;\n const node = this.startNode();\n node.params = [];\n\n this.state.inType = true;\n\n // istanbul ignore else: this condition is already checked at all call sites\n if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n this.next();\n } else {\n this.unexpected();\n }\n\n let defaultRequired = false;\n\n do {\n const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n node.params.push(typeParameter);\n\n if (typeParameter.default) {\n defaultRequired = true;\n }\n\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n } while (!this.match(tt.gt));\n this.expect(tt.gt);\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterDeclaration\");\n }\n\n // Parse in top level normal context if we are in a JSX context\n flowInTopLevelContext(cb: () => T): T {\n if (this.curContext() !== tc.brace) {\n const oldContext = this.state.context;\n this.state.context = [oldContext[0]];\n try {\n return cb();\n } finally {\n this.state.context = oldContext;\n }\n } else {\n return cb();\n }\n }\n\n // Used when parsing type arguments from ES or JSX productions, where the first token\n // has been created without state.inType. Thus we need to re-scan the lt token.\n flowParseTypeParameterInstantiationInExpression():\n | N.TypeParameterInstantiation\n | undefined {\n if (this.reScan_lt() !== tt.lt) return;\n return this.flowParseTypeParameterInstantiation();\n }\n\n flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n const node = this.startNode();\n const oldInType = this.state.inType;\n\n this.state.inType = true;\n node.params = [];\n this.flowInTopLevelContext(() => {\n this.expect(tt.lt);\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = false;\n while (!this.match(tt.gt)) {\n node.params.push(this.flowParseType());\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n }\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n });\n\n this.state.inType = oldInType;\n if (!this.state.inType && this.curContext() === tc.brace) {\n // rescan `>` when we are no longer in type context and JSX parsing context\n // since it was tokenized when `inType` is `true`.\n this.reScan_lt_gt();\n }\n this.expect(tt.gt);\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation | null {\n if (this.reScan_lt() !== tt.lt) return null;\n const node = this.startNode();\n const oldInType = this.state.inType;\n node.params = [];\n\n this.state.inType = true;\n\n this.expect(tt.lt);\n while (!this.match(tt.gt)) {\n node.params.push(this.flowParseTypeOrImplicitInstantiation());\n if (!this.match(tt.gt)) {\n this.expect(tt.comma);\n }\n }\n this.expect(tt.gt);\n\n this.state.inType = oldInType;\n\n return this.finishNode(node, \"TypeParameterInstantiation\");\n }\n\n flowParseInterfaceType(): N.FlowInterfaceType {\n const node = this.startNode();\n this.expectContextual(tt._interface);\n\n node.extends = [];\n if (this.eat(tt._extends)) {\n do {\n node.extends.push(this.flowParseInterfaceExtends());\n } while (this.eat(tt.comma));\n }\n\n node.body = this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: false,\n allowProto: false,\n allowInexact: false,\n });\n\n return this.finishNode(node, \"InterfaceTypeAnnotation\");\n }\n\n flowParseObjectPropertyKey(): N.Expression {\n return this.match(tt.num) || this.match(tt.string)\n ? super.parseExprAtom()\n : this.parseIdentifier(true);\n }\n\n flowParseObjectTypeIndexer(\n node: Undone,\n isStatic: boolean,\n variance?: N.FlowVariance | null,\n ): N.FlowObjectTypeIndexer {\n node.static = isStatic;\n\n // Note: bracketL has already been consumed\n if (this.lookahead().type === tt.colon) {\n node.id = this.flowParseObjectPropertyKey();\n node.key = this.flowParseTypeInitialiser();\n } else {\n node.id = null;\n node.key = this.flowParseType();\n }\n this.expect(tt.bracketR);\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n\n return this.finishNode(node, \"ObjectTypeIndexer\");\n }\n\n flowParseObjectTypeInternalSlot(\n node: Undone,\n isStatic: boolean,\n ): N.FlowObjectTypeInternalSlot {\n node.static = isStatic;\n // Note: both bracketL have already been consumed\n node.id = this.flowParseObjectPropertyKey();\n this.expect(tt.bracketR);\n this.expect(tt.bracketR);\n if (this.match(tt.lt) || this.match(tt.parenL)) {\n node.method = true;\n node.optional = false;\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.loc.start),\n );\n } else {\n node.method = false;\n if (this.eat(tt.question)) {\n node.optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n }\n return this.finishNode(node, \"ObjectTypeInternalSlot\");\n }\n\n flowParseObjectTypeMethodish(\n node: Undone,\n ): N.FlowFunctionTypeAnnotation {\n node.params = [];\n node.rest = null;\n node.typeParameters = null;\n node.this = null;\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n this.expect(tt.parenL);\n if (this.match(tt._this)) {\n node.this = this.flowParseFunctionTypeParam(/* first */ true);\n // match Flow parser behavior\n node.this.name = null;\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n node.params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n\n if (this.eat(tt.ellipsis)) {\n node.rest = this.flowParseFunctionTypeParam(false);\n }\n this.expect(tt.parenR);\n node.returnType = this.flowParseTypeInitialiser();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n flowParseObjectTypeCallProperty(\n node: Undone,\n isStatic: boolean,\n ): N.FlowObjectTypeCallProperty {\n const valueNode = this.startNode();\n node.static = isStatic;\n node.value = this.flowParseObjectTypeMethodish(valueNode);\n return this.finishNode(node, \"ObjectTypeCallProperty\");\n }\n\n flowParseObjectType({\n allowStatic,\n allowExact,\n allowSpread,\n allowProto,\n allowInexact,\n }: {\n allowStatic: boolean;\n allowExact: boolean;\n allowSpread: boolean;\n allowProto: boolean;\n allowInexact: boolean;\n }): N.FlowObjectTypeAnnotation {\n const oldInType = this.state.inType;\n this.state.inType = true;\n\n const nodeStart = this.startNode();\n\n nodeStart.callProperties = [];\n nodeStart.properties = [];\n nodeStart.indexers = [];\n nodeStart.internalSlots = [];\n\n let endDelim;\n let exact;\n let inexact = false;\n if (allowExact && this.match(tt.braceBarL)) {\n this.expect(tt.braceBarL);\n endDelim = tt.braceBarR;\n exact = true;\n } else {\n this.expect(tt.braceL);\n endDelim = tt.braceR;\n exact = false;\n }\n\n nodeStart.exact = exact;\n\n while (!this.match(endDelim)) {\n let isStatic = false;\n let protoStartLoc: Position | undefined | null = null;\n let inexactStartLoc: Position | undefined | null = null;\n const node = this.startNode();\n\n if (allowProto && this.isContextual(tt._proto)) {\n const lookahead = this.lookahead();\n\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n protoStartLoc = this.state.startLoc;\n allowStatic = false;\n }\n }\n\n if (allowStatic && this.isContextual(tt._static)) {\n const lookahead = this.lookahead();\n\n // static is a valid identifier name\n if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n this.next();\n isStatic = true;\n }\n }\n\n const variance = this.flowParseVariance();\n\n if (this.eat(tt.bracketL)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (this.eat(tt.bracketL)) {\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.internalSlots.push(\n this.flowParseObjectTypeInternalSlot(node, isStatic),\n );\n } else {\n nodeStart.indexers.push(\n this.flowParseObjectTypeIndexer(node, isStatic, variance),\n );\n }\n } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n nodeStart.callProperties.push(\n this.flowParseObjectTypeCallProperty(node, isStatic),\n );\n } else {\n let kind = \"init\";\n\n if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n const lookahead = this.lookahead();\n if (tokenIsLiteralPropertyName(lookahead.type)) {\n kind = this.state.value;\n this.next();\n }\n }\n\n const propOrInexact = this.flowParseObjectTypeProperty(\n node,\n isStatic,\n protoStartLoc,\n variance,\n kind,\n allowSpread,\n allowInexact ?? !exact,\n );\n\n if (propOrInexact === null) {\n inexact = true;\n inexactStartLoc = this.state.lastTokStartLoc;\n } else {\n nodeStart.properties.push(propOrInexact);\n }\n }\n\n this.flowObjectTypeSemicolon();\n\n if (\n inexactStartLoc &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.raise(\n FlowErrors.UnexpectedExplicitInexactInObject,\n inexactStartLoc,\n );\n }\n }\n\n this.expect(endDelim);\n\n /* The inexact flag should only be added on ObjectTypeAnnotations that\n * are not the body of an interface, declare interface, or declare class.\n * Since spreads are only allowed in object types, checking that is\n * sufficient here.\n */\n if (allowSpread) {\n nodeStart.inexact = inexact;\n }\n\n const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n this.state.inType = oldInType;\n\n return out;\n }\n\n flowParseObjectTypeProperty(\n node: Undone,\n isStatic: boolean,\n protoStartLoc: Position | undefined | null,\n variance: N.FlowVariance | undefined | null,\n kind: string,\n allowSpread: boolean,\n allowInexact: boolean,\n ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n if (this.eat(tt.ellipsis)) {\n const isInexactToken =\n this.match(tt.comma) ||\n this.match(tt.semi) ||\n this.match(tt.braceR) ||\n this.match(tt.braceBarR);\n\n if (isInexactToken) {\n if (!allowSpread) {\n this.raise(\n FlowErrors.InexactInsideNonObject,\n this.state.lastTokStartLoc!,\n );\n } else if (!allowInexact) {\n this.raise(\n FlowErrors.InexactInsideExact,\n this.state.lastTokStartLoc!,\n );\n }\n if (variance) {\n this.raise(FlowErrors.InexactVariance, variance);\n }\n\n return null;\n }\n\n if (!allowSpread) {\n this.raise(\n FlowErrors.UnexpectedSpreadType,\n this.state.lastTokStartLoc!,\n );\n }\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.raise(FlowErrors.SpreadVariance, variance);\n }\n\n node.argument = this.flowParseType();\n return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n } else {\n node.key = this.flowParseObjectPropertyKey();\n node.static = isStatic;\n node.proto = protoStartLoc != null;\n node.kind = kind;\n\n let optional = false;\n if (this.match(tt.lt) || this.match(tt.parenL)) {\n // This is a method property\n node.method = true;\n\n if (protoStartLoc != null) {\n this.unexpected(protoStartLoc);\n }\n if (variance) {\n this.unexpected(variance.loc.start);\n }\n\n node.value = this.flowParseObjectTypeMethodish(\n this.startNodeAt(node.loc.start),\n );\n if (kind === \"get\" || kind === \"set\") {\n this.flowCheckGetterSetterParams(node);\n }\n /** Declared classes/interfaces do not allow spread */\n if (\n !allowSpread &&\n node.key.name === \"constructor\" &&\n node.value.this\n ) {\n this.raise(\n FlowErrors.ThisParamBannedInConstructor,\n node.value.this,\n );\n }\n } else {\n if (kind !== \"init\") this.unexpected();\n\n node.method = false;\n\n if (this.eat(tt.question)) {\n optional = true;\n }\n node.value = this.flowParseTypeInitialiser();\n node.variance = variance;\n }\n\n node.optional = optional;\n\n return this.finishNode(node, \"ObjectTypeProperty\");\n }\n }\n\n // This is similar to checkGetterSetterParams, but as\n // @babel/parser uses non estree properties we cannot reuse it here\n flowCheckGetterSetterParams(\n property: Undone<\n N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n >,\n ): void {\n const paramCount = property.kind === \"get\" ? 0 : 1;\n const length =\n property.value.params.length + (property.value.rest ? 1 : 0);\n\n if (property.value.this) {\n this.raise(\n property.kind === \"get\"\n ? FlowErrors.GetterMayNotHaveThisParam\n : FlowErrors.SetterMayNotHaveThisParam,\n property.value.this,\n );\n }\n\n if (length !== paramCount) {\n this.raise(\n property.kind === \"get\"\n ? Errors.BadGetterArity\n : Errors.BadSetterArity,\n property,\n );\n }\n\n if (property.kind === \"set\" && property.value.rest) {\n this.raise(Errors.BadSetterRestParameter, property);\n }\n }\n\n flowObjectTypeSemicolon(): void {\n if (\n !this.eat(tt.semi) &&\n !this.eat(tt.comma) &&\n !this.match(tt.braceR) &&\n !this.match(tt.braceBarR)\n ) {\n this.unexpected();\n }\n }\n\n flowParseQualifiedTypeIdentifier(\n startLoc?: Position,\n id?: N.Identifier,\n ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n startLoc ??= this.state.startLoc;\n let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n id || this.flowParseRestrictedIdentifier(true);\n\n while (this.eat(tt.dot)) {\n const node2 = this.startNodeAt(startLoc);\n node2.qualification = node;\n node2.id = this.flowParseRestrictedIdentifier(true);\n node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n }\n\n return node;\n }\n\n flowParseGenericType(\n startLoc: Position,\n id: N.Identifier,\n ): N.FlowGenericTypeAnnotation {\n const node = this.startNodeAt(startLoc);\n\n node.typeParameters = null;\n node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n }\n\n return this.finishNode(node, \"GenericTypeAnnotation\");\n }\n\n flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n const node = this.startNode();\n this.expect(tt._typeof);\n node.argument = this.flowParsePrimaryType();\n return this.finishNode(node, \"TypeofTypeAnnotation\");\n }\n\n flowParseTupleType(): N.FlowTupleTypeAnnotation {\n const node = this.startNode();\n node.types = [];\n this.expect(tt.bracketL);\n // We allow trailing commas\n while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n node.types.push(this.flowParseType());\n if (this.match(tt.bracketR)) break;\n this.expect(tt.comma);\n }\n this.expect(tt.bracketR);\n return this.finishNode(node, \"TupleTypeAnnotation\");\n }\n\n flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n let name = null;\n let optional = false;\n let typeAnnotation = null;\n const node = this.startNode();\n const lh = this.lookahead();\n const isThis = this.state.type === tt._this;\n\n if (lh.type === tt.colon || lh.type === tt.question) {\n if (isThis && !first) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node);\n }\n name = this.parseIdentifier(isThis);\n if (this.eat(tt.question)) {\n optional = true;\n if (isThis) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n }\n }\n typeAnnotation = this.flowParseTypeInitialiser();\n } else {\n typeAnnotation = this.flowParseType();\n }\n node.name = name;\n node.optional = optional;\n node.typeAnnotation = typeAnnotation;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n reinterpretTypeAsFunctionTypeParam(\n type: N.FlowType,\n ): N.FlowFunctionTypeParam {\n const node = this.startNodeAt(type.loc.start);\n node.name = null;\n node.optional = false;\n node.typeAnnotation = type;\n return this.finishNode(node, \"FunctionTypeParam\");\n }\n\n flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n params: N.FlowFunctionTypeParam[];\n rest: N.FlowFunctionTypeParam | undefined | null;\n _this: N.FlowFunctionTypeParam | undefined | null;\n } {\n let rest: N.FlowFunctionTypeParam | undefined | null = null;\n let _this: N.FlowFunctionTypeParam | undefined | null = null;\n if (this.match(tt._this)) {\n _this = this.flowParseFunctionTypeParam(/* first */ true);\n // match Flow parser behavior\n _this.name = null;\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n params.push(this.flowParseFunctionTypeParam(false));\n if (!this.match(tt.parenR)) {\n this.expect(tt.comma);\n }\n }\n if (this.eat(tt.ellipsis)) {\n rest = this.flowParseFunctionTypeParam(false);\n }\n return { params, rest, _this };\n }\n\n flowIdentToTypeAnnotation(\n startLoc: Position,\n node: Undone,\n id: N.Identifier,\n ): N.FlowType {\n switch (id.name) {\n case \"any\":\n return this.finishNode(node, \"AnyTypeAnnotation\");\n\n case \"bool\":\n case \"boolean\":\n return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n case \"mixed\":\n return this.finishNode(node, \"MixedTypeAnnotation\");\n\n case \"empty\":\n return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n case \"number\":\n return this.finishNode(node, \"NumberTypeAnnotation\");\n\n case \"string\":\n return this.finishNode(node, \"StringTypeAnnotation\");\n\n case \"symbol\":\n return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n default:\n this.checkNotUnderscore(id.name);\n return this.flowParseGenericType(startLoc, id);\n }\n }\n\n // The parsing of types roughly parallels the parsing of expressions, and\n // primary types are kind of like primary expressions...they're the\n // primitives with which other types are constructed.\n flowParsePrimaryType(): N.FlowType {\n const startLoc = this.state.startLoc;\n const node = this.startNode();\n let tmp;\n let type;\n let isGroupedType = false;\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n switch (this.state.type) {\n case tt.braceL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: false,\n allowSpread: true,\n allowProto: false,\n allowInexact: true,\n });\n\n case tt.braceBarL:\n return this.flowParseObjectType({\n allowStatic: false,\n allowExact: true,\n allowSpread: true,\n allowProto: false,\n allowInexact: false,\n });\n\n case tt.bracketL:\n this.state.noAnonFunctionType = false;\n type = this.flowParseTupleType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n return type;\n\n case tt.lt: {\n const node = this.startNode();\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n this.expect(tt.parenL);\n tmp = this.flowParseFunctionTypeParams();\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n case tt.parenL: {\n const node = this.startNode();\n this.next();\n\n // Check to see if this is actually a grouped type\n if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n const token = this.lookahead().type;\n isGroupedType = token !== tt.question && token !== tt.colon;\n } else {\n isGroupedType = true;\n }\n }\n\n if (isGroupedType) {\n this.state.noAnonFunctionType = false;\n type = this.flowParseType();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n // A `,` or a `) =>` means this is an anonymous function type\n if (\n this.state.noAnonFunctionType ||\n !(\n this.match(tt.comma) ||\n (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n )\n ) {\n this.expect(tt.parenR);\n return type;\n } else {\n // Eat a comma if there is one\n this.eat(tt.comma);\n }\n }\n\n if (type) {\n tmp = this.flowParseFunctionTypeParams([\n this.reinterpretTypeAsFunctionTypeParam(type),\n ]);\n } else {\n tmp = this.flowParseFunctionTypeParams();\n }\n\n node.params = tmp.params;\n node.rest = tmp.rest;\n node.this = tmp._this;\n\n this.expect(tt.parenR);\n\n this.expect(tt.arrow);\n\n node.returnType = this.flowParseType();\n\n node.typeParameters = null;\n\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n\n case tt.string:\n return this.parseLiteral(\n this.state.value,\n \"StringLiteralTypeAnnotation\",\n );\n\n case tt._true:\n case tt._false:\n node.value = this.match(tt._true);\n this.next();\n return this.finishNode(\n node as Undone,\n \"BooleanLiteralTypeAnnotation\",\n );\n\n case tt.plusMin:\n if (this.state.value === \"-\") {\n this.next();\n if (this.match(tt.num)) {\n return this.parseLiteralAtNode(\n -this.state.value,\n \"NumberLiteralTypeAnnotation\",\n node,\n );\n }\n\n if (this.match(tt.bigint)) {\n return this.parseLiteralAtNode(\n -this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n node,\n );\n }\n\n throw this.raise(\n FlowErrors.UnexpectedSubtractionOperand,\n this.state.startLoc,\n );\n }\n throw this.unexpected();\n case tt.num:\n return this.parseLiteral(\n this.state.value,\n \"NumberLiteralTypeAnnotation\",\n );\n\n case tt.bigint:\n return this.parseLiteral(\n this.state.value,\n \"BigIntLiteralTypeAnnotation\",\n );\n\n case tt._void:\n this.next();\n return this.finishNode(node, \"VoidTypeAnnotation\");\n\n case tt._null:\n this.next();\n return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n case tt._this:\n this.next();\n return this.finishNode(node, \"ThisTypeAnnotation\");\n\n case tt.star:\n this.next();\n return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n case tt._typeof:\n return this.flowParseTypeofType();\n\n default:\n if (tokenIsKeyword(this.state.type)) {\n const label = tokenLabelName(this.state.type);\n this.next();\n return super.createIdentifier(node as Undone, label);\n } else if (tokenIsIdentifier(this.state.type)) {\n if (this.isContextual(tt._interface)) {\n return this.flowParseInterfaceType();\n }\n\n return this.flowIdentToTypeAnnotation(\n startLoc,\n node,\n this.parseIdentifier(),\n );\n }\n }\n\n throw this.unexpected();\n }\n\n flowParsePostfixType(): N.FlowType {\n const startLoc = this.state.startLoc;\n let type = this.flowParsePrimaryType();\n let seenOptionalIndexedAccess = false;\n while (\n (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n !this.canInsertSemicolon()\n ) {\n const node = this.startNodeAt(startLoc);\n const optional = this.eat(tt.questionDot);\n seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n this.expect(tt.bracketL);\n if (!optional && this.match(tt.bracketR)) {\n node.elementType = type;\n this.next(); // eat `]`\n type = this.finishNode(node, \"ArrayTypeAnnotation\");\n } else {\n node.objectType = type;\n node.indexType = this.flowParseType();\n this.expect(tt.bracketR);\n if (seenOptionalIndexedAccess) {\n node.optional = optional;\n type = this.finishNode(\n // @ts-expect-error todo(flow->ts)\n node,\n \"OptionalIndexedAccessType\",\n );\n } else {\n type = this.finishNode(\n // @ts-expect-error todo(flow->ts)\n node,\n \"IndexedAccessType\",\n );\n }\n }\n }\n return type;\n }\n\n flowParsePrefixType(): N.FlowType {\n const node = this.startNode();\n if (this.eat(tt.question)) {\n node.typeAnnotation = this.flowParsePrefixType();\n return this.finishNode(node, \"NullableTypeAnnotation\");\n } else {\n return this.flowParsePostfixType();\n }\n }\n\n flowParseAnonFunctionWithoutParens(): N.FlowType {\n const param = this.flowParsePrefixType();\n if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n const node = this.startNodeAt(\n param.loc.start,\n );\n node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n node.rest = null;\n node.this = null;\n node.returnType = this.flowParseType();\n node.typeParameters = null;\n return this.finishNode(node, \"FunctionTypeAnnotation\");\n }\n return param;\n }\n\n flowParseIntersectionType(): N.FlowType {\n const node = this.startNode();\n this.eat(tt.bitwiseAND);\n const type = this.flowParseAnonFunctionWithoutParens();\n node.types = [type];\n while (this.eat(tt.bitwiseAND)) {\n node.types.push(this.flowParseAnonFunctionWithoutParens());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"IntersectionTypeAnnotation\");\n }\n\n flowParseUnionType(): N.FlowType {\n const node = this.startNode();\n this.eat(tt.bitwiseOR);\n const type = this.flowParseIntersectionType();\n node.types = [type];\n while (this.eat(tt.bitwiseOR)) {\n node.types.push(this.flowParseIntersectionType());\n }\n return node.types.length === 1\n ? type\n : this.finishNode(node, \"UnionTypeAnnotation\");\n }\n\n flowParseType(): N.FlowType {\n const oldInType = this.state.inType;\n this.state.inType = true;\n const type = this.flowParseUnionType();\n this.state.inType = oldInType;\n return type;\n }\n\n flowParseTypeOrImplicitInstantiation(): N.FlowType {\n if (this.state.type === tt.name && this.state.value === \"_\") {\n const startLoc = this.state.startLoc;\n const node = this.parseIdentifier();\n return this.flowParseGenericType(startLoc, node);\n } else {\n return this.flowParseType();\n }\n }\n\n flowParseTypeAnnotation(): N.TypeAnnotation {\n const node = this.startNode();\n node.typeAnnotation = this.flowParseTypeInitialiser();\n return this.finishNode(node, \"TypeAnnotation\");\n }\n\n flowParseTypeAnnotatableIdentifier(\n allowPrimitiveOverride?: boolean,\n ): N.Identifier {\n const ident = allowPrimitiveOverride\n ? this.parseIdentifier()\n : this.flowParseRestrictedIdentifier();\n if (this.match(tt.colon)) {\n ident.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(ident);\n }\n return ident;\n }\n\n typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n return node.expression;\n }\n\n flowParseVariance(): N.FlowVariance | undefined | null {\n let variance = null;\n if (this.match(tt.plusMin)) {\n variance = this.startNode();\n if (this.state.value === \"+\") {\n variance.kind = \"plus\";\n } else {\n variance.kind = \"minus\";\n }\n this.next();\n return this.finishNode(variance, \"Variance\");\n }\n return variance;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseFunctionBody(\n node: N.Function,\n allowExpressionBody?: boolean | null,\n isMethod: boolean = false,\n ): void {\n if (allowExpressionBody) {\n this.forwardNoArrowParamsConversionAt(node, () =>\n super.parseFunctionBody(node, true, isMethod),\n );\n return;\n }\n\n super.parseFunctionBody(node, false, isMethod);\n }\n\n parseFunctionBodyAndFinish<\n T extends\n | N.Function\n | N.TSDeclareMethod\n | N.TSDeclareFunction\n | N.ClassPrivateMethod,\n >(node: Undone, type: T[\"type\"], isMethod: boolean = false): T {\n if (this.match(tt.colon)) {\n const typeNode = this.startNode();\n\n [\n typeNode.typeAnnotation,\n // @ts-expect-error predicate may not exist\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser() as [\n N.FlowType,\n N.FlowPredicate,\n ];\n\n node.returnType = typeNode.typeAnnotation\n ? this.finishNode(typeNode, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseFunctionBodyAndFinish(node, type, isMethod);\n }\n\n // interfaces and enums\n parseStatementLike(flags: ParseStatementFlag): N.Statement {\n // strict mode handling of `interface` since it's a reserved word\n if (this.state.strict && this.isContextual(tt._interface)) {\n const lookahead = this.lookahead();\n if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n const node = this.startNode();\n this.next();\n return this.flowParseInterface(node);\n }\n } else if (this.isContextual(tt._enum)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n const stmt = super.parseStatementLike(flags);\n // We will parse a flow pragma in any comment before the first statement.\n if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n this.flowPragma = null;\n }\n return stmt;\n }\n\n // declares, interfaces and type aliases\n parseExpressionStatement(\n node: N.ExpressionStatement,\n expr: N.Expression,\n decorators: N.Decorator[] | null,\n ): N.ExpressionStatement {\n if (expr.type === \"Identifier\") {\n if (expr.name === \"declare\") {\n if (\n this.match(tt._class) ||\n tokenIsIdentifier(this.state.type) ||\n this.match(tt._function) ||\n this.match(tt._var) ||\n this.match(tt._export)\n ) {\n // @ts-expect-error: refine typings\n return this.flowParseDeclare(node);\n }\n } else if (tokenIsIdentifier(this.state.type)) {\n if (expr.name === \"interface\") {\n // @ts-expect-error: refine typings\n return this.flowParseInterface(node);\n } else if (expr.name === \"type\") {\n // @ts-expect-error: refine typings\n return this.flowParseTypeAlias(node);\n } else if (expr.name === \"opaque\") {\n // @ts-expect-error: refine typings\n return this.flowParseOpaqueType(node, false);\n }\n }\n }\n\n return super.parseExpressionStatement(node, expr, decorators);\n }\n\n // export type\n shouldParseExportDeclaration(): boolean {\n const { type } = this.state;\n if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return !this.state.containsEsc;\n }\n return super.shouldParseExportDeclaration();\n }\n\n isExportDefaultSpecifier(): boolean {\n const { type } = this.state;\n if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n return this.state.containsEsc;\n }\n\n return super.isExportDefaultSpecifier();\n }\n\n parseExportDefaultExpression() {\n if (this.isContextual(tt._enum)) {\n const node = this.startNode();\n this.next();\n return this.flowParseEnumDeclaration(node);\n }\n return super.parseExportDefaultExpression();\n }\n\n parseConditional(\n expr: N.Expression,\n\n startLoc: Position,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.Expression {\n if (!this.match(tt.question)) return expr;\n\n if (this.state.maybeInArrowParameters) {\n const nextCh = this.lookaheadCharCode();\n // These tokens cannot start an expression, so if one of them follows\n // ? then we are probably in an arrow function parameters list and we\n // don't parse the conditional expression.\n if (\n nextCh === charCodes.comma || // (a?, b) => c\n nextCh === charCodes.equalsTo || // (a? = b) => c\n nextCh === charCodes.colon || // (a?: b) => c\n nextCh === charCodes.rightParenthesis // (a?) => c\n ) {\n /*:: invariant(refExpressionErrors != null) */\n this.setOptionalParametersError(refExpressionErrors!);\n return expr;\n }\n }\n\n this.expect(tt.question);\n const state = this.state.clone();\n const originalNoArrowAt = this.state.noArrowAt;\n const node = this.startNodeAt(startLoc);\n let { consequent, failed } = this.tryParseConditionalConsequent();\n let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n if (failed || invalid.length > 0) {\n const noArrowAt = [...originalNoArrowAt];\n\n if (invalid.length > 0) {\n this.state = state;\n this.state.noArrowAt = noArrowAt;\n\n for (let i = 0; i < invalid.length; i++) {\n noArrowAt.push(invalid[i].start);\n }\n\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n [valid, invalid] = this.getArrowLikeExpressions(consequent);\n }\n\n if (failed && valid.length > 1) {\n // if there are two or more possible correct ways of parsing, throw an\n // error.\n // e.g. Source: a ? (b): c => (d): e => f\n // Result 1: a ? b : (c => ((d): e => f))\n // Result 2: a ? ((b): c => d) : (e => f)\n this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n }\n\n if (failed && valid.length === 1) {\n this.state = state;\n noArrowAt.push(valid[0].start);\n this.state.noArrowAt = noArrowAt;\n ({ consequent, failed } = this.tryParseConditionalConsequent());\n }\n }\n\n this.getArrowLikeExpressions(consequent, true);\n\n this.state.noArrowAt = originalNoArrowAt;\n this.expect(tt.colon);\n\n node.test = expr;\n node.consequent = consequent;\n node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n this.parseMaybeAssign(undefined, undefined),\n );\n\n return this.finishNode(node, \"ConditionalExpression\");\n }\n\n tryParseConditionalConsequent(): {\n consequent: N.Expression;\n failed: boolean;\n } {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n\n const consequent = this.parseMaybeAssignAllowIn();\n const failed = !this.match(tt.colon);\n\n this.state.noArrowParamsConversionAt.pop();\n\n return { consequent, failed };\n }\n\n // Given an expression, walks through out its arrow functions whose body is\n // an expression and through out conditional expressions. It returns every\n // function which has been parsed with a return type but could have been\n // parenthesized expressions.\n // These functions are separated into two arrays: one containing the ones\n // whose parameters can be converted to assignable lists, one containing the\n // others.\n getArrowLikeExpressions(\n node: N.Expression,\n disallowInvalid?: boolean,\n ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n const stack = [node];\n const arrows: N.ArrowFunctionExpression[] = [];\n\n while (stack.length !== 0) {\n const node = stack.pop()!;\n if (\n node.type === \"ArrowFunctionExpression\" &&\n node.body.type !== \"BlockStatement\"\n ) {\n if (node.typeParameters || !node.returnType) {\n // This is an arrow expression without ambiguity, so check its parameters\n this.finishArrowValidation(node);\n } else {\n arrows.push(node);\n }\n stack.push(node.body);\n } else if (node.type === \"ConditionalExpression\") {\n stack.push(node.consequent);\n stack.push(node.alternate);\n }\n }\n\n if (disallowInvalid) {\n arrows.forEach(node => this.finishArrowValidation(node));\n return [arrows, []];\n }\n\n return partition(arrows, node =>\n node.params.every(param => this.isAssignable(param, true)),\n );\n }\n\n finishArrowValidation(node: N.ArrowFunctionExpression) {\n this.toAssignableList(\n // node.params is Expression[] instead of $ReadOnlyArray because it\n // has not been converted yet.\n node.params as any as N.Expression[],\n node.extra?.trailingCommaLoc,\n /* isLHS */ false,\n );\n // Enter scope, as checkParams defines bindings\n this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n // Use super's method to force the parameters to be checked\n super.checkParams(node, false, true);\n this.scope.exit();\n }\n\n forwardNoArrowParamsConversionAt(\n node: Undone,\n parse: () => T,\n ): T {\n let result: T;\n if (\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n this.state.noArrowParamsConversionAt.push(this.state.start);\n result = parse();\n this.state.noArrowParamsConversionAt.pop();\n } else {\n result = parse();\n }\n\n return result;\n }\n\n parseParenItem(\n node: T,\n startLoc: Position,\n ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n const newNode = super.parseParenItem(node, startLoc);\n if (this.eat(tt.question)) {\n (newNode as N.Identifier).optional = true;\n // Include questionmark in location of node\n // Don't use this.finishNode() as otherwise we might process comments twice and\n // include already consumed parens\n this.resetEndLocation(node);\n }\n\n if (this.match(tt.colon)) {\n const typeCastNode = this.startNodeAt(startLoc);\n typeCastNode.expression = newNode as N.Expression;\n typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n return this.finishNode(typeCastNode, \"TypeCastExpression\");\n }\n\n return newNode;\n }\n\n assertModuleNodeAllowed(node: N.Node) {\n if (\n (node.type === \"ImportDeclaration\" &&\n (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n (node.type === \"ExportNamedDeclaration\" &&\n node.exportKind === \"type\") ||\n (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n ) {\n // Allow Flowtype imports and exports in all conditions because\n // Flow itself does not care about 'sourceType'.\n return;\n }\n\n super.assertModuleNodeAllowed(node);\n }\n\n parseExportDeclaration(\n node: N.ExportNamedDeclaration,\n ): N.Declaration | undefined | null {\n if (this.isContextual(tt._type)) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n\n if (this.match(tt.braceL)) {\n // export type { foo, bar };\n node.specifiers = this.parseExportSpecifiers(\n /* isInTypeExport */ true,\n );\n super.parseExportFrom(node);\n return null;\n } else {\n // export type Foo = Bar;\n // @ts-expect-error: refine typings\n return this.flowParseTypeAlias(declarationNode);\n }\n } else if (this.isContextual(tt._opaque)) {\n node.exportKind = \"type\";\n\n const declarationNode = this.startNode();\n this.next();\n // export opaque type Foo = Bar;\n // @ts-expect-error: refine typings\n return this.flowParseOpaqueType(declarationNode, false);\n } else if (this.isContextual(tt._interface)) {\n node.exportKind = \"type\";\n const declarationNode = this.startNode();\n this.next();\n // @ts-expect-error: refine typings\n return this.flowParseInterface(declarationNode);\n } else if (this.isContextual(tt._enum)) {\n node.exportKind = \"value\";\n const declarationNode = this.startNode();\n this.next();\n // @ts-expect-error: refine typings\n return this.flowParseEnumDeclaration(declarationNode);\n } else {\n return super.parseExportDeclaration(node);\n }\n }\n\n eatExportStar(\n node: Undone,\n ): node is Undone {\n if (super.eatExportStar(node)) return true;\n\n if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n (\n node as Undone\n ).exportKind = \"type\";\n this.next();\n this.next();\n return true;\n }\n\n return false;\n }\n\n maybeParseExportNamespaceSpecifier(\n node: Undone,\n ): node is Undone {\n const { startLoc } = this.state;\n const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n if (hasNamespace && node.exportKind === \"type\") {\n this.unexpected(startLoc);\n }\n return hasNamespace;\n }\n\n parseClassId(\n node: N.Class,\n isStatement: boolean,\n optionalId?: boolean | null,\n ) {\n super.parseClassId(node, isStatement, optionalId);\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n }\n\n parseClassMember(\n classBody: N.ClassBody,\n member: any,\n state: N.ParseClassMemberState,\n ): void {\n const { startLoc } = this.state;\n if (this.isContextual(tt._declare)) {\n if (super.parseClassMemberFromModifier(classBody, member)) {\n // 'declare' is a class element name\n return;\n }\n\n member.declare = true;\n }\n\n super.parseClassMember(classBody, member, state);\n\n if (member.declare) {\n if (\n member.type !== \"ClassProperty\" &&\n member.type !== \"ClassPrivateProperty\" &&\n member.type !== \"PropertyDefinition\" // Used by estree plugin\n ) {\n this.raise(FlowErrors.DeclareClassElement, startLoc);\n } else if (member.value) {\n this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n }\n }\n }\n\n isIterator(word: string): boolean {\n return word === \"iterator\" || word === \"asyncIterator\";\n }\n\n readIterator(): void {\n const word = super.readWord1();\n const fullWord = \"@@\" + word;\n\n // Allow @@iterator and @@asyncIterator as a identifier only inside type\n if (!this.isIterator(word) || !this.state.inType) {\n this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n identifierName: fullWord,\n });\n }\n\n this.finishToken(tt.name, fullWord);\n }\n\n // ensure that inside flow types, we bypass the jsx parser plugin\n getTokenFromCode(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n this.finishOp(tt.braceBarL, 2);\n } else if (\n this.state.inType &&\n (code === charCodes.greaterThan || code === charCodes.lessThan)\n ) {\n this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n } else if (this.state.inType && code === charCodes.questionMark) {\n if (next === charCodes.dot) {\n this.finishOp(tt.questionDot, 2);\n } else {\n // allow double nullable types in Flow: ??string\n this.finishOp(tt.question, 1);\n }\n } else if (\n isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n ) {\n this.state.pos += 2; // eat \"@@\"\n this.readIterator();\n } else {\n super.getTokenFromCode(code);\n }\n }\n\n isAssignable(node: N.Node, isBinding?: boolean): boolean {\n if (node.type === \"TypeCastExpression\") {\n return this.isAssignable(node.expression, isBinding);\n } else {\n return super.isAssignable(node, isBinding);\n }\n }\n\n toAssignable(node: N.Node, isLHS: boolean = false): void {\n if (\n !isLHS &&\n node.type === \"AssignmentExpression\" &&\n node.left.type === \"TypeCastExpression\"\n ) {\n node.left = this.typeCastToParameter(node.left) as N.Assignable;\n }\n super.toAssignable(node, isLHS);\n }\n\n // turn type casts that we found in function parameter head into type annotated params\n toAssignableList(\n exprList: N.Expression[],\n trailingCommaLoc: Position | undefined | null,\n isLHS: boolean,\n ): void {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (expr?.type === \"TypeCastExpression\") {\n exprList[i] = this.typeCastToParameter(expr);\n }\n }\n super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n }\n\n // this is a list of nodes, from something like a call expression, we need to filter the\n // type casts that we've found that are illegal in this context\n toReferencedList(\n exprList:\n | readonly (N.Expression | N.SpreadElement | null)[]\n | readonly (N.Expression | N.RestElement)[],\n isParenthesizedExpr?: boolean,\n ):\n | readonly (N.Expression | N.SpreadElement | null)[]\n | readonly (N.Expression | N.RestElement)[] {\n for (let i = 0; i < exprList.length; i++) {\n const expr = exprList[i];\n if (\n expr &&\n expr.type === \"TypeCastExpression\" &&\n !expr.extra?.parenthesized &&\n (exprList.length > 1 || !isParenthesizedExpr)\n ) {\n this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n }\n }\n\n return exprList;\n }\n\n parseArrayLike(\n close: TokenType,\n isTuple: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): N.ArrayExpression | N.TupleExpression {\n const node = super.parseArrayLike(close, isTuple, refExpressionErrors);\n\n // This could be an array pattern:\n // ([a: string, b: string]) => {}\n // In this case, we don't have to call toReferencedList. We will\n // call it, if needed, when we are sure that it is a parenthesized\n // expression by calling toReferencedListDeep.\n if (refExpressionErrors != null && !this.state.maybeInArrowParameters) {\n this.toReferencedList(node.elements);\n }\n\n return node;\n }\n\n isValidLVal(\n type: string,\n disallowCallExpression: boolean,\n isParenthesized: boolean,\n binding: BindingFlag,\n ) {\n return (\n type === \"TypeCastExpression\" ||\n super.isValidLVal(\n type,\n disallowCallExpression,\n isParenthesized,\n binding,\n )\n );\n }\n\n // parse class property type annotations\n parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassProperty(node);\n }\n\n parseClassPrivateProperty(\n node: N.ClassPrivateProperty,\n ): N.ClassPrivateProperty {\n if (this.match(tt.colon)) {\n node.typeAnnotation = this.flowParseTypeAnnotation();\n }\n return super.parseClassPrivateProperty(node);\n }\n\n // determine whether or not we're currently in the position where a class method would appear\n isClassMethod(): boolean {\n return this.match(tt.lt) || super.isClassMethod();\n }\n\n // determine whether or not we're currently in the position where a class property would appear\n isClassProperty(): boolean {\n return this.match(tt.colon) || super.isClassProperty();\n }\n\n isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n }\n\n // parse type parameters for class methods\n pushClassMethod(\n classBody: N.ClassBody,\n method: N.ClassMethod,\n isGenerator: boolean,\n isAsync: boolean,\n isConstructor: boolean,\n allowsDirectSuper: boolean,\n ): void {\n if ((method as any).variance) {\n this.unexpected((method as any).variance.loc.start);\n }\n delete (method as any).variance;\n if (this.match(tt.lt)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassMethod(\n classBody,\n method,\n isGenerator,\n isAsync,\n isConstructor,\n allowsDirectSuper,\n );\n\n if (method.params && isConstructor) {\n const params = method.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n // estree support\n } else if (\n // @ts-expect-error TS does not know about the fact that estree can replace ClassMethod with MethodDefinition\n method.type === \"MethodDefinition\" &&\n isConstructor &&\n // @ts-expect-error estree\n method.value.params\n ) {\n // @ts-expect-error estree\n const params = method.value.params;\n if (params.length > 0 && this.isThisParam(params[0])) {\n this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n }\n }\n }\n\n pushClassPrivateMethod(\n classBody: N.ClassBody,\n method: N.ClassPrivateMethod,\n isGenerator: boolean,\n isAsync: boolean,\n ): void {\n if ((method as any).variance) {\n this.unexpected((method as any).variance.loc.start);\n }\n delete (method as any).variance;\n if (this.match(tt.lt)) {\n method.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n\n super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n }\n\n // parse a the super class type parameters and implements\n parseClassSuper(node: N.Class): void {\n super.parseClassSuper(node);\n if (\n node.superClass &&\n (this.match(tt.lt) ||\n // handles `class extends C<`\n this.match(tt.bitShiftL))\n ) {\n if (process.env.BABEL_8_BREAKING) {\n node.superTypeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n } else {\n node.superTypeParameters =\n this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n if (this.isContextual(tt._implements)) {\n this.next();\n const implemented: N.FlowClassImplements[] = (node.implements = []);\n do {\n const node = this.startNode();\n node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n if (this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterInstantiation();\n } else {\n node.typeParameters = null;\n }\n implemented.push(this.finishNode(node, \"ClassImplements\"));\n } while (this.eat(tt.comma));\n }\n }\n\n checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n super.checkGetterSetterParams(method);\n const params = this.getObjectOrClassMethodParams(method);\n if (params.length > 0) {\n const param = params[0];\n if (this.isThisParam(param) && method.kind === \"get\") {\n this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n }\n }\n }\n\n parsePropertyNamePrefixOperator(\n node: N.ObjectOrClassMember | N.ClassMember,\n ): void {\n node.variance = this.flowParseVariance();\n }\n\n // parse type parameters for object method shorthand\n parseObjPropValue(\n prop: Undone,\n startLoc: Position | undefined | null,\n isGenerator: boolean,\n isAsync: boolean,\n isPattern: boolean,\n isAccessor: boolean,\n refExpressionErrors?: ExpressionErrors | null,\n ): T {\n if ((prop as any).variance) {\n this.unexpected((prop as any).variance.loc.start);\n }\n delete (prop as any).variance;\n\n let typeParameters;\n\n // method shorthand\n if (this.match(tt.lt) && !isAccessor) {\n typeParameters = this.flowParseTypeParameterDeclaration();\n if (!this.match(tt.parenL)) this.unexpected();\n }\n\n const result = super.parseObjPropValue(\n prop,\n startLoc,\n isGenerator,\n isAsync,\n isPattern,\n isAccessor,\n refExpressionErrors,\n );\n\n // add typeParameters if we found them\n if (typeParameters) {\n // @ts-expect-error: refine typings\n (result.value || result).typeParameters = typeParameters;\n }\n return result;\n }\n\n parseFunctionParamType(param: N.Pattern): N.Pattern {\n if (this.eat(tt.question)) {\n if (param.type !== \"Identifier\") {\n this.raise(FlowErrors.PatternIsOptional, param);\n }\n if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n }\n\n (param as any as N.Identifier).optional = true;\n }\n if (this.match(tt.colon)) {\n param.typeAnnotation = this.flowParseTypeAnnotation();\n } else if (this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n }\n\n if (this.match(tt.eq) && this.isThisParam(param)) {\n this.raise(FlowErrors.ThisParamNoDefault, param);\n }\n\n this.resetEndLocation(param);\n return param;\n }\n\n parseMaybeDefault

(\n startLoc?: Position | null,\n left?: P | null,\n ): P | N.AssignmentPattern {\n const node = super.parseMaybeDefault(startLoc, left);\n\n if (\n node.type === \"AssignmentPattern\" &&\n node.typeAnnotation &&\n node.right.start < node.typeAnnotation.start\n ) {\n this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n }\n\n return node;\n }\n\n checkImportReflection(node: Undone) {\n super.checkImportReflection(node);\n if (node.module && node.importKind !== \"value\") {\n this.raise(\n FlowErrors.ImportReflectionHasImportType,\n node.specifiers[0].loc.start,\n );\n }\n }\n\n parseImportSpecifierLocal<\n T extends\n | N.ImportSpecifier\n | N.ImportDefaultSpecifier\n | N.ImportNamespaceSpecifier,\n >(node: N.ImportDeclaration, specifier: Undone, type: T[\"type\"]): void {\n specifier.local = hasTypeImportKind(node)\n ? this.flowParseRestrictedIdentifier(\n /* liberal */ true,\n /* declaration */ true,\n )\n : this.parseIdentifier();\n\n node.specifiers.push(this.finishImportSpecifier(specifier, type));\n }\n\n isPotentialImportPhase(isExport: boolean): boolean {\n if (super.isPotentialImportPhase(isExport)) return true;\n if (this.isContextual(tt._type)) {\n if (!isExport) return true;\n const ch = this.lookaheadCharCode();\n return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n }\n return !isExport && this.isContextual(tt._typeof);\n }\n\n applyImportPhase(\n node: Undone,\n isExport: boolean,\n phase: string | null,\n loc?: Position,\n ): void {\n super.applyImportPhase(node, isExport, phase, loc);\n if (isExport) {\n if (!phase && this.match(tt._default)) {\n // TODO: Align with our TS AST and always add .exportKind\n return;\n }\n (node as N.ExportNamedDeclaration).exportKind =\n phase === \"type\" ? phase : \"value\";\n } else {\n if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n (node as N.ImportDeclaration).importKind =\n phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n }\n }\n\n // parse import-type/typeof shorthand\n parseImportSpecifier(\n specifier: any,\n importedIsString: boolean,\n isInTypeOnlyImport: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isMaybeTypeOnly: boolean,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n bindingType: BindingFlag | undefined,\n ): N.ImportSpecifier {\n const firstIdent = specifier.imported;\n\n let specifierTypeKind = null;\n if (firstIdent.type === \"Identifier\") {\n if (firstIdent.name === \"type\") {\n specifierTypeKind = \"type\";\n } else if (firstIdent.name === \"typeof\") {\n specifierTypeKind = \"typeof\";\n }\n }\n\n let isBinding = false;\n if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n const as_ident = this.parseIdentifier(true);\n if (\n specifierTypeKind !== null &&\n !tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n // `import {type as ,` or `import {type as }`\n specifier.imported = as_ident;\n specifier.importKind = specifierTypeKind;\n specifier.local = this.cloneIdentifier(as_ident);\n } else {\n // `import {type as foo`\n specifier.imported = firstIdent;\n specifier.importKind = null;\n specifier.local = this.parseIdentifier();\n }\n } else {\n if (\n specifierTypeKind !== null &&\n tokenIsKeywordOrIdentifier(this.state.type)\n ) {\n // `import {type foo`\n specifier.imported = this.parseIdentifier(true);\n specifier.importKind = specifierTypeKind;\n } else {\n if (importedIsString) {\n /*:: invariant(firstIdent instanceof N.StringLiteral) */\n throw this.raise(Errors.ImportBindingIsString, specifier, {\n importName: firstIdent.value,\n });\n }\n /*:: invariant(firstIdent instanceof N.Node) */\n specifier.imported = firstIdent;\n specifier.importKind = null;\n }\n\n if (this.eatContextual(tt._as)) {\n specifier.local = this.parseIdentifier();\n } else {\n isBinding = true;\n specifier.local = this.cloneIdentifier(specifier.imported);\n }\n }\n\n const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n if (isInTypeOnlyImport && specifierIsTypeImport) {\n this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n }\n\n if (isInTypeOnlyImport || specifierIsTypeImport) {\n this.checkReservedType(\n specifier.local.name,\n specifier.local.loc.start,\n /* declaration */ true,\n );\n }\n\n if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n this.checkReservedWord(\n specifier.local.name,\n specifier.loc.start,\n true,\n true,\n );\n }\n\n return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n }\n\n parseBindingAtom(): N.Pattern {\n switch (this.state.type) {\n case tt._this:\n // \"this\" may be the name of a parameter, so allow it.\n return this.parseIdentifier(/* liberal */ true);\n default:\n return super.parseBindingAtom();\n }\n }\n\n // parse function type parameters - function foo() {}\n parseFunctionParams(\n node: Undone,\n isConstructor: boolean,\n ): void {\n // @ts-expect-error kind may not index node\n const kind = node.kind;\n if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n node.typeParameters = this.flowParseTypeParameterDeclaration();\n }\n super.parseFunctionParams(node, isConstructor);\n }\n\n // parse flow type annotations on variable declarator heads - let foo: string = bar\n parseVarId(\n decl: N.VariableDeclarator,\n kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n ): void {\n super.parseVarId(decl, kind);\n if (this.match(tt.colon)) {\n decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n this.resetEndLocation(decl.id); // set end position to end of type\n }\n }\n\n // parse the return type of an async arrow function - let foo = (async (): number => {});\n parseAsyncArrowFromCallExpression(\n node: N.ArrowFunctionExpression,\n call: N.CallExpression,\n ): N.ArrowFunctionExpression {\n if (this.match(tt.colon)) {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n node.returnType = this.flowParseTypeAnnotation();\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n }\n\n return super.parseAsyncArrowFromCallExpression(node, call);\n }\n\n // todo description\n shouldParseAsyncArrow(): boolean {\n return this.match(tt.colon) || super.shouldParseAsyncArrow();\n }\n\n // We need to support type parameter declarations for arrow functions. This\n // is tricky. There are three situations we need to handle\n //\n // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n // fails, we'll try an arrow function. If that fails, we'll throw the JSX\n // error.\n // 2. This is an arrow function. We'll parse the type parameter declaration,\n // parse the rest, make sure the rest is an arrow function, and go from\n // there\n // 3. This is neither. Just call the super method\n parseMaybeAssign(\n refExpressionErrors?: ExpressionErrors | null,\n afterLeftParse?: Function,\n ): N.Expression {\n let state = null;\n\n let jsx;\n\n if (\n this.hasPlugin(\"jsx\") &&\n (this.match(tt.jsxTagStart) || this.match(tt.lt))\n ) {\n state = this.state.clone();\n\n jsx = this.tryParse(\n () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n state,\n );\n\n /*:: invariant(!jsx.aborted) */\n /*:: invariant(jsx.node != null) */\n if (!jsx.error) return jsx.node!;\n\n // Remove `tc.j_expr` and `tc.j_oTag` from context added\n // by parsing `jsxTagStart` to stop the JSX plugin from\n // messing with the tokens\n const { context } = this.state;\n const currentContext = context[context.length - 1];\n if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n context.pop();\n }\n }\n\n if (jsx?.error || this.match(tt.lt)) {\n state = state || this.state.clone();\n\n let typeParameters: N.TypeParameterDeclaration;\n\n const arrow = this.tryParse((abort: () => never) => {\n typeParameters = this.flowParseTypeParameterDeclaration();\n\n const arrowExpression = this.forwardNoArrowParamsConversionAt(\n typeParameters,\n () => {\n const result = super.parseMaybeAssign(\n refExpressionErrors,\n afterLeftParse,\n );\n\n this.resetStartLocationFromNode(result, typeParameters);\n\n return result;\n },\n );\n\n // (() => {});\n // (() => {}: any);\n if (arrowExpression.extra?.parenthesized) abort();\n\n // The above can return a TypeCastExpression when the arrow\n // expression is not wrapped in parens. See also `this.parseParenItem`.\n // (() => {}: any);\n const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n expr.typeParameters = typeParameters;\n this.resetStartLocationFromNode(expr, typeParameters);\n\n return arrowExpression;\n }, state);\n\n let arrowExpression:\n | N.ArrowFunctionExpression\n | N.TypeCastExpression\n | undefined\n | null = null;\n\n if (\n arrow.node &&\n this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n \"ArrowFunctionExpression\"\n ) {\n if (!arrow.error && !arrow.aborted) {\n // async () => {}\n // @ts-expect-error: refine tryParse typings\n if (arrow.node.async) {\n /*:: invariant(typeParameters) */\n this.raise(\n FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n typeParameters!,\n );\n }\n return arrow.node;\n }\n\n // @ts-expect-error: refine typings\n arrowExpression = arrow.node;\n }\n\n // If we are here, both JSX and Flow parsing attempts failed.\n // Give the precedence to the JSX error, except if JSX had an\n // unrecoverable error while Flow didn't.\n // If the error is recoverable, we can only re-report it if there is\n // a node we can return.\n\n if (jsx?.node) {\n /*:: invariant(jsx.failState) */\n this.state = jsx.failState;\n return jsx.node;\n }\n\n if (arrowExpression) {\n /*:: invariant(arrow.failState) */\n this.state = arrow.failState!;\n return arrowExpression;\n }\n\n if (jsx?.thrown) throw jsx.error;\n if (arrow.thrown) throw arrow.error;\n\n /*:: invariant(typeParameters) */\n throw this.raise(\n FlowErrors.UnexpectedTokenAfterTypeParameter,\n typeParameters!,\n );\n }\n\n return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n }\n\n // handle return types for arrow functions\n parseArrow(\n node: Undone,\n ): Undone | undefined | null {\n if (this.match(tt.colon)) {\n // @ts-expect-error todo(flow->ts)\n const result = this.tryParse(() => {\n const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n this.state.noAnonFunctionType = true;\n\n const typeNode = this.startNode();\n\n [\n typeNode.typeAnnotation,\n // @ts-expect-error (destructuring not supported yet)\n node.predicate,\n ] = this.flowParseTypeAndPredicateInitialiser() as [\n N.FlowType,\n N.FlowPredicate,\n ];\n\n this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n if (this.canInsertSemicolon()) this.unexpected();\n if (!this.match(tt.arrow)) this.unexpected();\n\n return typeNode;\n });\n\n if (result.thrown) return null;\n /*:: invariant(result.node) */\n\n if (result.error) this.state = result.failState;\n\n // assign after it is clear it is an arrow\n // @ts-expect-error todo(flow->ts)\n node.returnType = result.node.typeAnnotation\n ? this.finishNode(result.node!, \"TypeAnnotation\")\n : null;\n }\n\n return super.parseArrow(node);\n }\n\n shouldParseArrow(params: N.Node[]): boolean {\n return this.match(tt.colon) || super.shouldParseArrow(params);\n }\n\n setArrowFunctionParameters(\n node: Undone,\n params:\n | (N.Expression | N.SpreadElement)[]\n | (N.Expression | N.RestElement)[],\n ): void {\n if (\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n node.params = params as N.ArrowFunctionExpression[\"params\"];\n } else {\n super.setArrowFunctionParameters(node, params);\n }\n }\n\n checkParams(\n node: N.Function,\n allowDuplicates: boolean,\n isArrowFunction?: boolean | null,\n strictModeChanged: boolean = true,\n ): void {\n if (\n isArrowFunction &&\n this.state.noArrowParamsConversionAt.includes(\n this.offsetToSourcePos(node.start),\n )\n ) {\n return;\n }\n\n // ensure the `this` param is first, if it exists\n for (let i = 0; i < node.params.length; i++) {\n if (this.isThisParam(node.params[i]) && i > 0) {\n this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n }\n }\n\n super.checkParams(\n node,\n allowDuplicates,\n isArrowFunction,\n strictModeChanged,\n );\n }\n\n parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n return super.parseParenAndDistinguishExpression(\n canBeArrow &&\n !this.state.noArrowAt.includes(\n this.sourceToOffsetPos(this.state.start),\n ),\n );\n }\n\n parseSubscripts(\n base: N.Expression,\n startLoc: Position,\n noCalls?: boolean | null,\n ): N.Expression {\n if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.state.noArrowAt.includes(startLoc.index)\n ) {\n this.next();\n\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.arguments = super.parseCallExpressionArguments();\n base = this.finishNode(node, \"CallExpression\");\n } else if (\n base.type === \"Identifier\" &&\n base.name === \"async\" &&\n this.match(tt.lt)\n ) {\n const state = this.state.clone();\n const arrow = this.tryParse(\n abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n state,\n );\n\n /*:: invariant(arrow.node != null) */\n // @ts-expect-error: refine tryParse typings\n if (!arrow.error && !arrow.aborted) return arrow.node;\n\n const result = this.tryParse(\n () => super.parseSubscripts(base, startLoc, noCalls),\n state,\n );\n\n if (result.node && !result.error) return result.node;\n\n if (arrow.node) {\n this.state = arrow.failState;\n // @ts-expect-error: refine tryParse typings\n return arrow.node;\n }\n\n if (result.node) {\n this.state = result.failState!;\n return result.node;\n }\n\n throw arrow.error || result.error!;\n }\n\n return super.parseSubscripts(base, startLoc, noCalls);\n }\n\n parseSubscript(\n base: N.Expression,\n startLoc: Position,\n noCalls: boolean | undefined | null,\n subscriptState: N.ParseSubscriptState,\n ): N.Expression {\n if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n subscriptState.optionalChainMember = true;\n if (noCalls) {\n subscriptState.stop = true;\n return base;\n }\n this.next();\n const node = this.startNodeAt(startLoc);\n node.callee = base;\n node.typeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n this.expect(tt.parenL);\n node.arguments = this.parseCallExpressionArguments();\n node.optional = true;\n return this.finishCallExpression(node, /* optional */ true);\n } else if (\n !noCalls &&\n this.shouldParseTypes() &&\n (this.match(tt.lt) ||\n // also handles `new C<`\n this.match(tt.bitShiftL))\n ) {\n const node = this.startNodeAt<\n N.OptionalCallExpression | N.CallExpression\n >(startLoc);\n node.callee = base;\n\n const result = this.tryParse(() => {\n node.typeArguments =\n this.flowParseTypeParameterInstantiationCallOrNew();\n this.expect(tt.parenL);\n node.arguments = super.parseCallExpressionArguments();\n if (subscriptState.optionalChainMember) {\n (node as Undone).optional = false;\n }\n return this.finishCallExpression(\n node,\n subscriptState.optionalChainMember,\n );\n });\n\n if (result.node) {\n if (result.error) this.state = result.failState;\n return result.node;\n }\n }\n\n return super.parseSubscript(base, startLoc, noCalls, subscriptState);\n }\n\n parseNewCallee(node: N.NewExpression): void {\n super.parseNewCallee(node);\n\n let targs = null;\n if (this.shouldParseTypes() && this.match(tt.lt)) {\n targs = this.tryParse(() =>\n this.flowParseTypeParameterInstantiationCallOrNew(),\n ).node;\n }\n node.typeArguments = targs;\n }\n\n parseAsyncArrowWithTypeParameters(\n startLoc: Position,\n ): N.ArrowFunctionExpression | undefined | null {\n const node = this.startNodeAt(startLoc);\n this.parseFunctionParams(node, false);\n if (!this.parseArrow(node)) return;\n return super.parseArrowExpression(\n node,\n /* params */ undefined,\n /* isAsync */ true,\n );\n }\n\n readToken_mult_modulo(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.asterisk &&\n next === charCodes.slash &&\n this.state.hasFlowComment\n ) {\n this.state.hasFlowComment = false;\n this.state.pos += 2;\n this.nextToken();\n return;\n }\n\n super.readToken_mult_modulo(code);\n }\n\n readToken_pipe_amp(code: number): void {\n const next = this.input.charCodeAt(this.state.pos + 1);\n if (\n code === charCodes.verticalBar &&\n next === charCodes.rightCurlyBrace\n ) {\n // '|}'\n this.finishOp(tt.braceBarR, 2);\n return;\n }\n\n super.readToken_pipe_amp(code);\n }\n\n parseTopLevel(file: N.File, program: N.Program): N.File {\n const fileNode = super.parseTopLevel(file, program);\n if (this.state.hasFlowComment) {\n this.raise(\n FlowErrors.UnterminatedFlowComment,\n this.state.curPosition(),\n );\n }\n return fileNode;\n }\n\n skipBlockComment(): N.CommentBlock | undefined {\n if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n if (this.state.hasFlowComment) {\n throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n }\n this.hasFlowCommentCompletion();\n const commentSkip = this.skipFlowComment();\n if (commentSkip) {\n this.state.pos += commentSkip;\n this.state.hasFlowComment = true;\n }\n return;\n }\n\n return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n }\n\n skipFlowComment(): number | false {\n const { pos } = this.state;\n let shiftToFirstNonWhiteSpace = 2;\n while (\n [charCodes.space, charCodes.tab].includes(\n // @ts-expect-error testing whether a number is included\n this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n )\n ) {\n shiftToFirstNonWhiteSpace++;\n }\n\n const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n return shiftToFirstNonWhiteSpace + 2; // check for /*::\n }\n if (\n this.input.slice(\n shiftToFirstNonWhiteSpace + pos,\n shiftToFirstNonWhiteSpace + pos + 12,\n ) === \"flow-include\"\n ) {\n return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n }\n if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n }\n return false;\n }\n\n hasFlowCommentCompletion(): void {\n const end = this.input.indexOf(\"*/\", this.state.pos);\n if (end === -1) {\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n }\n\n // Flow enum parsing\n\n flowEnumErrorBooleanMemberNotInitialized(\n loc: Position,\n {\n enumName,\n memberName,\n }: {\n enumName: string;\n memberName: string;\n },\n ): void {\n this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n memberName,\n enumName,\n });\n }\n\n flowEnumErrorInvalidMemberInitializer(\n loc: Position,\n enumContext: EnumContext,\n ) {\n return this.raise(\n !enumContext.explicitType\n ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n : enumContext.explicitType === \"symbol\"\n ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n loc,\n enumContext,\n );\n }\n\n flowEnumErrorNumberMemberNotInitialized(\n loc: Position,\n details: {\n enumName: string;\n memberName: string;\n },\n ): void {\n this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n }\n\n flowEnumErrorStringMemberInconsistentlyInitialized(\n node: N.Node,\n details: {\n enumName: string;\n },\n ): void {\n this.raise(\n FlowErrors.EnumStringMemberInconsistentlyInitialized,\n node,\n details,\n );\n }\n\n flowEnumMemberInit(): EnumMemberInit {\n const startLoc = this.state.startLoc;\n const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n switch (this.state.type) {\n case tt.num: {\n const literal = this.parseNumericLiteral(this.state.value);\n if (endOfInit()) {\n return { type: \"number\", loc: literal.loc.start, value: literal };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n case tt.string: {\n const literal = this.parseStringLiteral(this.state.value);\n if (endOfInit()) {\n return { type: \"string\", loc: literal.loc.start, value: literal };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n case tt._true:\n case tt._false: {\n const literal = this.parseBooleanLiteral(this.match(tt._true));\n if (endOfInit()) {\n return {\n type: \"boolean\",\n loc: literal.loc.start,\n value: literal,\n };\n }\n return { type: \"invalid\", loc: startLoc };\n }\n default:\n return { type: \"invalid\", loc: startLoc };\n }\n }\n\n flowEnumMemberRaw(): {\n id: N.Identifier;\n init: EnumMemberInit;\n } {\n const loc = this.state.startLoc;\n const id = this.parseIdentifier(true);\n const init = this.eat(tt.eq)\n ? this.flowEnumMemberInit()\n : { type: \"none\" as const, loc };\n return { id, init };\n }\n\n flowEnumCheckExplicitTypeMismatch(\n loc: Position,\n context: EnumContext,\n expectedType: EnumExplicitType,\n ): void {\n const { explicitType } = context;\n if (explicitType === null) {\n return;\n }\n if (explicitType !== expectedType) {\n this.flowEnumErrorInvalidMemberInitializer(loc, context);\n }\n }\n\n flowEnumMembers({\n enumName,\n explicitType,\n }: {\n enumName: string;\n explicitType: EnumExplicitType;\n }): {\n members: {\n booleanMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumBooleanMember\" }\n >[];\n numberMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumNumberMember\" }\n >[];\n stringMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumStringMember\" }\n >[];\n defaultedMembers: Extract<\n N.FlowEnumMember,\n { type: \"EnumDefaultedMember\" }\n >[];\n };\n hasUnknownMembers: boolean;\n } {\n const seenNames = new Set();\n const members = {\n booleanMembers: [],\n numberMembers: [],\n stringMembers: [],\n defaultedMembers: [],\n };\n let hasUnknownMembers = false;\n while (!this.match(tt.braceR)) {\n if (this.eat(tt.ellipsis)) {\n hasUnknownMembers = true;\n break;\n }\n const memberNode = this.startNode();\n const { id, init } = this.flowEnumMemberRaw();\n const memberName = id.name;\n if (memberName === \"\") {\n continue;\n }\n if (/^[a-z]/.test(memberName)) {\n this.raise(FlowErrors.EnumInvalidMemberName, id, {\n memberName,\n suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n enumName,\n });\n }\n if (seenNames.has(memberName)) {\n this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n memberName,\n enumName,\n });\n }\n seenNames.add(memberName);\n const context = { enumName, explicitType, memberName };\n memberNode.id = id;\n switch (init.type) {\n case \"boolean\": {\n this.flowEnumCheckExplicitTypeMismatch(\n init.loc,\n context,\n \"boolean\",\n );\n memberNode.init = init.value;\n members.booleanMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumBooleanMember\"),\n );\n break;\n }\n case \"number\": {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n memberNode.init = init.value;\n members.numberMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumNumberMember\"),\n );\n break;\n }\n case \"string\": {\n this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n memberNode.init = init.value;\n members.stringMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumStringMember\"),\n );\n break;\n }\n case \"invalid\": {\n throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n }\n case \"none\": {\n switch (explicitType) {\n case \"boolean\":\n this.flowEnumErrorBooleanMemberNotInitialized(\n init.loc,\n context,\n );\n break;\n case \"number\":\n this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n break;\n default:\n members.defaultedMembers.push(\n // @ts-expect-error NodeAny not supported\n this.finishNode(memberNode, \"EnumDefaultedMember\"),\n );\n }\n }\n }\n\n if (!this.match(tt.braceR)) {\n this.expect(tt.comma);\n }\n }\n return { members, hasUnknownMembers };\n }\n\n flowEnumStringMembers(\n initializedMembers: N.Node[],\n defaultedMembers: N.Node[],\n {\n enumName,\n }: {\n enumName: string;\n },\n ): N.Node[] {\n if (initializedMembers.length === 0) {\n return defaultedMembers;\n } else if (defaultedMembers.length === 0) {\n return initializedMembers;\n } else if (defaultedMembers.length > initializedMembers.length) {\n for (const member of initializedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName,\n });\n }\n return defaultedMembers;\n } else {\n for (const member of defaultedMembers) {\n this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n enumName,\n });\n }\n return initializedMembers;\n }\n }\n\n flowEnumParseExplicitType({\n enumName,\n }: {\n enumName: string;\n }): EnumExplicitType {\n if (!this.eatContextual(tt._of)) return null;\n\n if (!tokenIsIdentifier(this.state.type)) {\n throw this.raise(\n FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n this.state.startLoc,\n {\n enumName,\n },\n );\n }\n\n const { value } = this.state;\n this.next();\n\n if (\n value !== \"boolean\" &&\n value !== \"number\" &&\n value !== \"string\" &&\n value !== \"symbol\"\n ) {\n this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n enumName,\n invalidEnumType: value,\n });\n }\n\n return value;\n }\n\n flowEnumBody(node: Undone, id: N.Identifier): N.Node {\n const enumName = id.name;\n const nameLoc = id.loc.start;\n const explicitType = this.flowEnumParseExplicitType({ enumName });\n this.expect(tt.braceL);\n const { members, hasUnknownMembers } = this.flowEnumMembers({\n enumName,\n explicitType,\n });\n node.hasUnknownMembers = hasUnknownMembers;\n\n switch (explicitType) {\n case \"boolean\":\n node.explicitType = true;\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n case \"number\":\n node.explicitType = true;\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n case \"string\":\n node.explicitType = true;\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n case \"symbol\":\n node.members = members.defaultedMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumSymbolBody\");\n default: {\n // `explicitType` is `null`\n const empty = () => {\n node.members = [];\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n };\n node.explicitType = false;\n\n const boolsLen = members.booleanMembers.length;\n const numsLen = members.numberMembers.length;\n const strsLen = members.stringMembers.length;\n const defaultedLen = members.defaultedMembers.length;\n\n if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n return empty();\n } else if (!boolsLen && !numsLen) {\n node.members = this.flowEnumStringMembers(\n members.stringMembers,\n members.defaultedMembers,\n { enumName },\n );\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumStringBody\");\n } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.booleanMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumBooleanBody\");\n } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n for (const member of members.defaultedMembers) {\n this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n enumName,\n memberName: member.id.name,\n });\n }\n node.members = members.numberMembers;\n this.expect(tt.braceR);\n return this.finishNode(node, \"EnumNumberBody\");\n } else {\n this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n enumName,\n });\n return empty();\n }\n }\n }\n }\n\n flowParseEnumDeclaration(\n node: Undone,\n ): N.FlowEnumDeclaration {\n const id = this.parseIdentifier();\n node.id = id;\n node.body = this.flowEnumBody(this.startNode(), id);\n return this.finishNode(node, \"EnumDeclaration\");\n }\n\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement {\n if (this.shouldParseTypes()) {\n if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n node.typeArguments =\n this.flowParseTypeParameterInstantiationInExpression();\n }\n }\n\n return super.jsxParseOpeningElementAfterName(node);\n }\n\n // check if the next token is a tt.lt\n isLookaheadToken_lt(): boolean {\n const next = this.nextTokenStart();\n if (this.input.charCodeAt(next) === charCodes.lessThan) {\n const afterNext = this.input.charCodeAt(next + 1);\n return (\n afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n );\n }\n return false;\n }\n\n // used after we have finished parsing types\n reScan_lt_gt() {\n const { type } = this.state;\n if (type === tt.lt) {\n this.state.pos -= 1;\n this.readToken_lt();\n } else if (type === tt.gt) {\n this.state.pos -= 1;\n this.readToken_gt();\n }\n }\n\n reScan_lt() {\n const { type } = this.state;\n if (type === tt.bitShiftL) {\n this.state.pos -= 2;\n this.finishOp(tt.lt, 1);\n return tt.lt;\n }\n return type;\n }\n\n maybeUnwrapTypeCastExpression(node: N.Node) {\n return node.type === \"TypeCastExpression\" ? node.expression : node;\n }\n };\n","const entities: Record = {\n // @ts-expect-error __proto__ is not an actual property: https://github.com/microsoft/TypeScript/issues/38385\n __proto__: null,\n quot: \"\\u0022\",\n amp: \"&\",\n apos: \"\\u0027\",\n lt: \"<\",\n gt: \">\",\n nbsp: \"\\u00A0\",\n iexcl: \"\\u00A1\",\n cent: \"\\u00A2\",\n pound: \"\\u00A3\",\n curren: \"\\u00A4\",\n yen: \"\\u00A5\",\n brvbar: \"\\u00A6\",\n sect: \"\\u00A7\",\n uml: \"\\u00A8\",\n copy: \"\\u00A9\",\n ordf: \"\\u00AA\",\n laquo: \"\\u00AB\",\n not: \"\\u00AC\",\n shy: \"\\u00AD\",\n reg: \"\\u00AE\",\n macr: \"\\u00AF\",\n deg: \"\\u00B0\",\n plusmn: \"\\u00B1\",\n sup2: \"\\u00B2\",\n sup3: \"\\u00B3\",\n acute: \"\\u00B4\",\n micro: \"\\u00B5\",\n para: \"\\u00B6\",\n middot: \"\\u00B7\",\n cedil: \"\\u00B8\",\n sup1: \"\\u00B9\",\n ordm: \"\\u00BA\",\n raquo: \"\\u00BB\",\n frac14: \"\\u00BC\",\n frac12: \"\\u00BD\",\n frac34: \"\\u00BE\",\n iquest: \"\\u00BF\",\n Agrave: \"\\u00C0\",\n Aacute: \"\\u00C1\",\n Acirc: \"\\u00C2\",\n Atilde: \"\\u00C3\",\n Auml: \"\\u00C4\",\n Aring: \"\\u00C5\",\n AElig: \"\\u00C6\",\n Ccedil: \"\\u00C7\",\n Egrave: \"\\u00C8\",\n Eacute: \"\\u00C9\",\n Ecirc: \"\\u00CA\",\n Euml: \"\\u00CB\",\n Igrave: \"\\u00CC\",\n Iacute: \"\\u00CD\",\n Icirc: \"\\u00CE\",\n Iuml: \"\\u00CF\",\n ETH: \"\\u00D0\",\n Ntilde: \"\\u00D1\",\n Ograve: \"\\u00D2\",\n Oacute: \"\\u00D3\",\n Ocirc: \"\\u00D4\",\n Otilde: \"\\u00D5\",\n Ouml: \"\\u00D6\",\n times: \"\\u00D7\",\n Oslash: \"\\u00D8\",\n Ugrave: \"\\u00D9\",\n Uacute: \"\\u00DA\",\n Ucirc: \"\\u00DB\",\n Uuml: \"\\u00DC\",\n Yacute: \"\\u00DD\",\n THORN: \"\\u00DE\",\n szlig: \"\\u00DF\",\n agrave: \"\\u00E0\",\n aacute: \"\\u00E1\",\n acirc: \"\\u00E2\",\n atilde: \"\\u00E3\",\n auml: \"\\u00E4\",\n aring: \"\\u00E5\",\n aelig: \"\\u00E6\",\n ccedil: \"\\u00E7\",\n egrave: \"\\u00E8\",\n eacute: \"\\u00E9\",\n ecirc: \"\\u00EA\",\n euml: \"\\u00EB\",\n igrave: \"\\u00EC\",\n iacute: \"\\u00ED\",\n icirc: \"\\u00EE\",\n iuml: \"\\u00EF\",\n eth: \"\\u00F0\",\n ntilde: \"\\u00F1\",\n ograve: \"\\u00F2\",\n oacute: \"\\u00F3\",\n ocirc: \"\\u00F4\",\n otilde: \"\\u00F5\",\n ouml: \"\\u00F6\",\n divide: \"\\u00F7\",\n oslash: \"\\u00F8\",\n ugrave: \"\\u00F9\",\n uacute: \"\\u00FA\",\n ucirc: \"\\u00FB\",\n uuml: \"\\u00FC\",\n yacute: \"\\u00FD\",\n thorn: \"\\u00FE\",\n yuml: \"\\u00FF\",\n OElig: \"\\u0152\",\n oelig: \"\\u0153\",\n Scaron: \"\\u0160\",\n scaron: \"\\u0161\",\n Yuml: \"\\u0178\",\n fnof: \"\\u0192\",\n circ: \"\\u02C6\",\n tilde: \"\\u02DC\",\n Alpha: \"\\u0391\",\n Beta: \"\\u0392\",\n Gamma: \"\\u0393\",\n Delta: \"\\u0394\",\n Epsilon: \"\\u0395\",\n Zeta: \"\\u0396\",\n Eta: \"\\u0397\",\n Theta: \"\\u0398\",\n Iota: \"\\u0399\",\n Kappa: \"\\u039A\",\n Lambda: \"\\u039B\",\n Mu: \"\\u039C\",\n Nu: \"\\u039D\",\n Xi: \"\\u039E\",\n Omicron: \"\\u039F\",\n Pi: \"\\u03A0\",\n Rho: \"\\u03A1\",\n Sigma: \"\\u03A3\",\n Tau: \"\\u03A4\",\n Upsilon: \"\\u03A5\",\n Phi: \"\\u03A6\",\n Chi: \"\\u03A7\",\n Psi: \"\\u03A8\",\n Omega: \"\\u03A9\",\n alpha: \"\\u03B1\",\n beta: \"\\u03B2\",\n gamma: \"\\u03B3\",\n delta: \"\\u03B4\",\n epsilon: \"\\u03B5\",\n zeta: \"\\u03B6\",\n eta: \"\\u03B7\",\n theta: \"\\u03B8\",\n iota: \"\\u03B9\",\n kappa: \"\\u03BA\",\n lambda: \"\\u03BB\",\n mu: \"\\u03BC\",\n nu: \"\\u03BD\",\n xi: \"\\u03BE\",\n omicron: \"\\u03BF\",\n pi: \"\\u03C0\",\n rho: \"\\u03C1\",\n sigmaf: \"\\u03C2\",\n sigma: \"\\u03C3\",\n tau: \"\\u03C4\",\n upsilon: \"\\u03C5\",\n phi: \"\\u03C6\",\n chi: \"\\u03C7\",\n psi: \"\\u03C8\",\n omega: \"\\u03C9\",\n thetasym: \"\\u03D1\",\n upsih: \"\\u03D2\",\n piv: \"\\u03D6\",\n ensp: \"\\u2002\",\n emsp: \"\\u2003\",\n thinsp: \"\\u2009\",\n zwnj: \"\\u200C\",\n zwj: \"\\u200D\",\n lrm: \"\\u200E\",\n rlm: \"\\u200F\",\n ndash: \"\\u2013\",\n mdash: \"\\u2014\",\n lsquo: \"\\u2018\",\n rsquo: \"\\u2019\",\n sbquo: \"\\u201A\",\n ldquo: \"\\u201C\",\n rdquo: \"\\u201D\",\n bdquo: \"\\u201E\",\n dagger: \"\\u2020\",\n Dagger: \"\\u2021\",\n bull: \"\\u2022\",\n hellip: \"\\u2026\",\n permil: \"\\u2030\",\n prime: \"\\u2032\",\n Prime: \"\\u2033\",\n lsaquo: \"\\u2039\",\n rsaquo: \"\\u203A\",\n oline: \"\\u203E\",\n frasl: \"\\u2044\",\n euro: \"\\u20AC\",\n image: \"\\u2111\",\n weierp: \"\\u2118\",\n real: \"\\u211C\",\n trade: \"\\u2122\",\n alefsym: \"\\u2135\",\n larr: \"\\u2190\",\n uarr: \"\\u2191\",\n rarr: \"\\u2192\",\n darr: \"\\u2193\",\n harr: \"\\u2194\",\n crarr: \"\\u21B5\",\n lArr: \"\\u21D0\",\n uArr: \"\\u21D1\",\n rArr: \"\\u21D2\",\n dArr: \"\\u21D3\",\n hArr: \"\\u21D4\",\n forall: \"\\u2200\",\n part: \"\\u2202\",\n exist: \"\\u2203\",\n empty: \"\\u2205\",\n nabla: \"\\u2207\",\n isin: \"\\u2208\",\n notin: \"\\u2209\",\n ni: \"\\u220B\",\n prod: \"\\u220F\",\n sum: \"\\u2211\",\n minus: \"\\u2212\",\n lowast: \"\\u2217\",\n radic: \"\\u221A\",\n prop: \"\\u221D\",\n infin: \"\\u221E\",\n ang: \"\\u2220\",\n and: \"\\u2227\",\n or: \"\\u2228\",\n cap: \"\\u2229\",\n cup: \"\\u222A\",\n int: \"\\u222B\",\n there4: \"\\u2234\",\n sim: \"\\u223C\",\n cong: \"\\u2245\",\n asymp: \"\\u2248\",\n ne: \"\\u2260\",\n equiv: \"\\u2261\",\n le: \"\\u2264\",\n ge: \"\\u2265\",\n sub: \"\\u2282\",\n sup: \"\\u2283\",\n nsub: \"\\u2284\",\n sube: \"\\u2286\",\n supe: \"\\u2287\",\n oplus: \"\\u2295\",\n otimes: \"\\u2297\",\n perp: \"\\u22A5\",\n sdot: \"\\u22C5\",\n lceil: \"\\u2308\",\n rceil: \"\\u2309\",\n lfloor: \"\\u230A\",\n rfloor: \"\\u230B\",\n lang: \"\\u2329\",\n rang: \"\\u232A\",\n loz: \"\\u25CA\",\n spades: \"\\u2660\",\n clubs: \"\\u2663\",\n hearts: \"\\u2665\",\n diams: \"\\u2666\",\n} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n switch (code) {\n case charCodes.lineFeed:\n case charCodes.carriageReturn:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return true;\n\n default:\n return false;\n }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n for (let i = start; i < end; i++) {\n if (isNewLine(input.charCodeAt(i))) {\n return true;\n }\n }\n return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n switch (code) {\n case 0x0009: // CHARACTER TABULATION\n case 0x000b: // LINE TABULATION\n case 0x000c: // FORM FEED\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.oghamSpaceMark:\n case 0x2000: // EN QUAD\n case 0x2001: // EM QUAD\n case 0x2002: // EN SPACE\n case 0x2003: // EM SPACE\n case 0x2004: // THREE-PER-EM SPACE\n case 0x2005: // FOUR-PER-EM SPACE\n case 0x2006: // SIX-PER-EM SPACE\n case 0x2007: // FIGURE SPACE\n case 0x2008: // PUNCTUATION SPACE\n case 0x2009: // THIN SPACE\n case 0x200a: // HAIR SPACE\n case 0x202f: // NARROW NO-BREAK SPACE\n case 0x205f: // MEDIUM MATHEMATICAL SPACE\n case 0x3000: // IDEOGRAPHIC SPACE\n case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n return true;\n\n default:\n return false;\n }\n}\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n tokenComesBeforeExpression,\n tokenIsKeyword,\n tokenLabelName,\n type TokenType,\n tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n AttributeIsEmpty:\n \"JSX attributes must only be assigned a non-empty expression.\",\n MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n UnexpectedSequenceExpression:\n \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n // FIXME: Unify with Errors.UnexpectedToken\n UnexpectedToken: ({\n unexpected,\n HTMLEntity,\n }: {\n unexpected: string;\n HTMLEntity: string;\n }) =>\n `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n UnsupportedJsxValue:\n \"JSX value should be either an expression or a quoted JSX text.\",\n UnterminatedJsxContent: \"Unterminated JSX contents.\",\n UnwrappedAdjacentJSXElements:\n \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n return object\n ? object.type === \"JSXOpeningFragment\" ||\n object.type === \"JSXClosingFragment\"\n : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n if (object.type === \"JSXIdentifier\") {\n return object.name;\n }\n\n if (object.type === \"JSXNamespacedName\") {\n return object.namespace.name + \":\" + object.name.name;\n }\n\n if (object.type === \"JSXMemberExpression\") {\n return (\n getQualifiedJSXName(object.object) +\n \".\" +\n getQualifiedJSXName(object.property)\n );\n }\n\n // istanbul ignore next\n // @ts-expect-error - object is 'never'\n throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n jsxParseOpeningElementAfterName(\n node: N.JSXOpeningElement,\n ): N.JSXOpeningElement;\n}\n\nexport type ClassWithMixin<\n T extends new (...args: any) => any,\n M extends object,\n> = T extends new (...args: infer P) => infer I\n ? new (...args: P) => I & M\n : never;\n\nexport default (superClass: typeof Parser) =>\n class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n // Reads inline JSX contents token.\n\n jsxReadToken(): void {\n let out = \"\";\n let chunkStart = this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(\n JsxErrors.UnterminatedJsxContent,\n this.state.startLoc,\n );\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n\n switch (ch) {\n case charCodes.lessThan:\n case charCodes.leftCurlyBrace:\n if (this.state.pos === this.state.start) {\n if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagStart);\n } else {\n super.getTokenFromCode(ch);\n }\n return;\n }\n out += this.input.slice(chunkStart, this.state.pos);\n this.finishToken(tt.jsxText, out);\n return;\n\n case charCodes.ampersand:\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n break;\n\n case charCodes.greaterThan:\n case charCodes.rightCurlyBrace:\n if (process.env.BABEL_8_BREAKING) {\n this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n unexpected: this.input[this.state.pos],\n HTMLEntity:\n ch === charCodes.rightCurlyBrace ? \"}\" : \">\",\n });\n }\n /* falls through */\n\n default:\n if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(true);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n }\n }\n\n jsxReadNewLine(normalizeCRLF: boolean): string {\n const ch = this.input.charCodeAt(this.state.pos);\n let out;\n ++this.state.pos;\n if (\n ch === charCodes.carriageReturn &&\n this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n } else {\n out = String.fromCharCode(ch);\n }\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n\n return out;\n }\n\n jsxReadString(quote: number): void {\n let out = \"\";\n let chunkStart = ++this.state.pos;\n for (;;) {\n if (this.state.pos >= this.length) {\n throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n }\n\n const ch = this.input.charCodeAt(this.state.pos);\n if (ch === quote) break;\n if (ch === charCodes.ampersand) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadEntity();\n chunkStart = this.state.pos;\n } else if (isNewLine(ch)) {\n out += this.input.slice(chunkStart, this.state.pos);\n out += this.jsxReadNewLine(false);\n chunkStart = this.state.pos;\n } else {\n ++this.state.pos;\n }\n }\n out += this.input.slice(chunkStart, this.state.pos++);\n this.finishToken(tt.string, out);\n }\n\n jsxReadEntity(): string {\n const startPos = ++this.state.pos;\n if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n ++this.state.pos;\n\n let radix = 10;\n if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n radix = 16;\n ++this.state.pos;\n }\n\n const codePoint = this.readInt(\n radix,\n /* len */ undefined,\n /* forceLen */ false,\n /* allowNumSeparator */ \"bail\",\n );\n if (\n codePoint !== null &&\n this.codePointAtPos(this.state.pos) === charCodes.semicolon\n ) {\n ++this.state.pos;\n return String.fromCodePoint(codePoint);\n }\n } else {\n let count = 0;\n let semi = false;\n while (\n count++ < 10 &&\n this.state.pos < this.length &&\n !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n ) {\n ++this.state.pos;\n }\n\n if (semi) {\n const desc = this.input.slice(startPos, this.state.pos);\n const entity = XHTMLEntities[desc];\n ++this.state.pos;\n\n if (entity) {\n return entity;\n }\n }\n }\n\n // Not a valid entity\n this.state.pos = startPos;\n return \"&\";\n }\n\n // Read a JSX identifier (valid tag or attribute name).\n //\n // Optimized version since JSX identifiers can\"t contain\n // escape characters and so can be read as single slice.\n // Also assumes that first character was already checked\n // by isIdentifierStart in readToken.\n\n jsxReadWord(): void {\n let ch;\n const start = this.state.pos;\n do {\n ch = this.input.charCodeAt(++this.state.pos);\n } while (isIdentifierChar(ch) || ch === charCodes.dash);\n this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n }\n\n // Parse next token as JSX identifier\n\n jsxParseIdentifier(): N.JSXIdentifier {\n const node = this.startNode();\n if (this.match(tt.jsxName)) {\n node.name = this.state.value;\n } else if (tokenIsKeyword(this.state.type)) {\n node.name = tokenLabelName(this.state.type);\n } else {\n this.unexpected();\n }\n this.next();\n return this.finishNode(node, \"JSXIdentifier\");\n }\n\n // Parse namespaced identifier.\n\n jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n const startLoc = this.state.startLoc;\n const name = this.jsxParseIdentifier();\n if (!this.eat(tt.colon)) return name;\n\n const node = this.startNodeAt(startLoc);\n node.namespace = name;\n node.name = this.jsxParseIdentifier();\n return this.finishNode(node, \"JSXNamespacedName\");\n }\n\n // Parses element name in any form - namespaced, member\n // or single identifier.\n\n jsxParseElementName():\n | N.JSXIdentifier\n | N.JSXNamespacedName\n | N.JSXMemberExpression {\n const startLoc = this.state.startLoc;\n let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n this.jsxParseNamespacedName();\n if (node.type === \"JSXNamespacedName\") {\n return node;\n }\n while (this.eat(tt.dot)) {\n const newNode = this.startNodeAt(startLoc);\n newNode.object = node;\n newNode.property = this.jsxParseIdentifier();\n node = this.finishNode(newNode, \"JSXMemberExpression\");\n }\n return node;\n }\n\n // Parses any type of JSX attribute value.\n\n jsxParseAttributeValue():\n | N.JSXExpressionContainer\n | N.JSXElement\n | N.StringLiteral {\n let node;\n switch (this.state.type) {\n case tt.braceL:\n node = this.startNode();\n this.setContext(tc.brace);\n this.next();\n node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n if (node.expression.type === \"JSXEmptyExpression\") {\n this.raise(JsxErrors.AttributeIsEmpty, node);\n }\n return node;\n\n case tt.jsxTagStart:\n case tt.string:\n return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n default:\n throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\n }\n }\n\n // JSXEmptyExpression is unique type since it doesn't actually parse anything,\n // and so it should start at the end of last read token (left brace) and finish\n // at the beginning of the next one (right brace).\n\n jsxParseEmptyExpression(): N.JSXEmptyExpression {\n const node = this.startNodeAt(this.state.lastTokEndLoc!);\n return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n }\n\n // Parse JSX spread child\n\n jsxParseSpreadChild(node: Undone): N.JSXSpreadChild {\n this.next(); // ellipsis\n node.expression = this.parseExpression();\n this.setContext(tc.j_expr);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXSpreadChild\");\n }\n\n // Parses JSX expression enclosed into curly brackets.\n\n jsxParseExpressionContainer(\n node: Undone,\n previousContext: TokContext,\n ): N.JSXExpressionContainer {\n if (this.match(tt.braceR)) {\n node.expression = this.jsxParseEmptyExpression();\n } else {\n const expression = this.parseExpression();\n\n if (process.env.BABEL_8_BREAKING) {\n if (\n expression.type === \"SequenceExpression\" &&\n !expression.extra?.parenthesized\n ) {\n this.raise(\n JsxErrors.UnexpectedSequenceExpression,\n expression.expressions[1],\n );\n }\n }\n\n node.expression = expression;\n }\n this.setContext(previousContext);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n\n return this.finishNode(node, \"JSXExpressionContainer\");\n }\n\n // Parses following JSX attribute name-value pair.\n\n jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n const node = this.startNode();\n if (this.match(tt.braceL)) {\n this.setContext(tc.brace);\n this.next();\n this.expect(tt.ellipsis);\n node.argument = this.parseMaybeAssignAllowIn();\n this.setContext(tc.j_oTag);\n this.state.canStartJSXElement = true;\n this.expect(tt.braceR);\n return this.finishNode(node, \"JSXSpreadAttribute\");\n }\n node.name = this.jsxParseNamespacedName();\n node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n return this.finishNode(node, \"JSXAttribute\");\n }\n\n // Parses JSX opening tag starting after \"<\".\n\n jsxParseOpeningElementAt(\n startLoc: Position,\n ): N.JSXOpeningElement | N.JSXOpeningFragment {\n const node = this.startNodeAt(\n startLoc,\n );\n if (this.eat(tt.jsxTagEnd)) {\n return this.finishNode(node, \"JSXOpeningFragment\");\n }\n node.name = this.jsxParseElementName();\n return this.jsxParseOpeningElementAfterName(\n node as Undone,\n );\n }\n\n jsxParseOpeningElementAfterName(\n node: Undone,\n ): N.JSXOpeningElement {\n const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n attributes.push(this.jsxParseAttribute());\n }\n node.attributes = attributes;\n node.selfClosing = this.eat(tt.slash);\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXOpeningElement\");\n }\n\n // Parses JSX closing tag starting after \"(\n startLoc,\n );\n if (this.eat(tt.jsxTagEnd)) {\n return this.finishNode(node, \"JSXClosingFragment\");\n }\n node.name = this.jsxParseElementName();\n this.expect(tt.jsxTagEnd);\n return this.finishNode(node, \"JSXClosingElement\");\n }\n\n // Parses entire JSX element, including it\"s opening tag\n // (starting after \"<\"), attributes, contents and closing tag.\n\n jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n const node = this.startNodeAt(startLoc);\n const children = [];\n const openingElement = this.jsxParseOpeningElementAt(startLoc);\n let closingElement = null;\n\n if (!openingElement.selfClosing) {\n contents: for (;;) {\n switch (this.state.type) {\n case tt.jsxTagStart:\n startLoc = this.state.startLoc;\n this.next();\n if (this.eat(tt.slash)) {\n closingElement = this.jsxParseClosingElementAt(startLoc);\n break contents;\n }\n children.push(this.jsxParseElementAt(startLoc));\n break;\n\n case tt.jsxText:\n children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n break;\n\n case tt.braceL: {\n const node = this.startNode<\n N.JSXSpreadChild | N.JSXExpressionContainer\n >();\n this.setContext(tc.brace);\n this.next();\n if (this.match(tt.ellipsis)) {\n children.push(this.jsxParseSpreadChild(node));\n } else {\n children.push(\n this.jsxParseExpressionContainer(node, tc.j_expr),\n );\n }\n\n break;\n }\n // istanbul ignore next - should never happen\n default:\n this.unexpected();\n }\n }\n\n if (\n isFragment(openingElement) &&\n !isFragment(closingElement) &&\n closingElement !== null\n ) {\n this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name),\n });\n } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n if (\n getQualifiedJSXName(closingElement.name) !==\n getQualifiedJSXName(openingElement.name)\n ) {\n this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n openingTagName: getQualifiedJSXName(openingElement.name),\n });\n }\n }\n }\n\n if (isFragment(openingElement)) {\n node.openingFragment = openingElement;\n node.closingFragment = closingElement;\n } else {\n node.openingElement = openingElement;\n node.closingElement = closingElement;\n }\n node.children = children;\n if (this.match(tt.lt)) {\n throw this.raise(\n JsxErrors.UnwrappedAdjacentJSXElements,\n this.state.startLoc,\n );\n }\n\n return isFragment(openingElement)\n ? this.finishNode(node, \"JSXFragment\")\n : this.finishNode(node, \"JSXElement\");\n }\n\n // Parses entire JSX element from current position.\n\n jsxParseElement(): N.JSXElement | N.JSXFragment {\n const startLoc = this.state.startLoc;\n this.next();\n return this.jsxParseElementAt(startLoc);\n }\n\n setContext(newContext: TokContext) {\n const { context } = this.state;\n context[context.length - 1] = newContext;\n }\n\n // ==================================\n // Overrides\n // ==================================\n\n parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n if (this.match(tt.jsxTagStart)) {\n return this.jsxParseElement();\n } else if (\n this.match(tt.lt) &&\n this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n ) {\n // In case we encounter an lt token here it will always be the start of\n // jsx as the lt sign is not allowed in places that expect an expression\n this.replaceToken(tt.jsxTagStart);\n return this.jsxParseElement();\n } else {\n return super.parseExprAtom(refExpressionErrors);\n }\n }\n\n skipSpace() {\n const curContext = this.curContext();\n if (!curContext.preserveSpace) super.skipSpace();\n }\n\n getTokenFromCode(code: number): void {\n const context = this.curContext();\n\n if (context === tc.j_expr) {\n this.jsxReadToken();\n return;\n }\n\n if (context === tc.j_oTag || context === tc.j_cTag) {\n if (isIdentifierStart(code)) {\n this.jsxReadWord();\n return;\n }\n\n if (code === charCodes.greaterThan) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagEnd);\n return;\n }\n\n if (\n (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n context === tc.j_oTag\n ) {\n this.jsxReadString(code);\n return;\n }\n }\n\n if (\n code === charCodes.lessThan &&\n this.state.canStartJSXElement &&\n this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n ) {\n ++this.state.pos;\n this.finishToken(tt.jsxTagStart);\n return;\n }\n\n super.getTokenFromCode(code);\n }\n\n updateContext(prevType: TokenType): void {\n const { context, type } = this.state;\n if (type === tt.slash && prevType === tt.jsxTagStart) {\n // do not consider JSX expr -> JSX open tag -> ... anymore\n // reconsider as closing tag context\n context.splice(-2, 2, tc.j_cTag);\n this.state.canStartJSXElement = false;\n } else if (type === tt.jsxTagStart) {\n // start opening tag context\n context.push(tc.j_oTag);\n } else if (type === tt.jsxTagEnd) {\n const out = context[context.length - 1];\n if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n context.pop();\n this.state.canStartJSXElement =\n context[context.length - 1] === tc.j_expr;\n } else {\n this.setContext(tc.j_expr);\n this.state.canStartJSXElement = true;\n }\n } else {\n this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n }\n }\n };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n Types = 1 << 0,\n // enums (which are also in .types)\n Enums = 1 << 1,\n // const enums (which are also in .enums and .types)\n ConstEnums = 1 << 2,\n // classes (which are also in .lexical) and interface (which are also in .types)\n Classes = 1 << 3,\n // namespaces and ambient functions (or classes) are too difficult to track,\n // especially without type analysis.\n // We need to track them anyway, to avoid \"X is not defined\" errors\n // when exporting them.\n ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n tsNames = new Map();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler {\n importsStack: Set[] = [];\n\n createScope(flags: ScopeFlag): TypeScriptScope {\n this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n return new TypeScriptScope(flags);\n }\n\n enter(flags: ScopeFlag): void {\n if (flags === ScopeFlag.TS_MODULE) {\n this.importsStack.push(new Set());\n }\n\n super.enter(flags);\n }\n\n exit() {\n const flags = super.exit();\n\n if (flags === ScopeFlag.TS_MODULE) {\n this.importsStack.pop();\n }\n\n return flags;\n }\n\n hasImport(name: string, allowShadow?: boolean) {\n const len = this.importsStack.length;\n if (this.importsStack[len - 1].has(name)) {\n return true;\n }\n if (!allowShadow && len > 1) {\n for (let i = 0; i < len - 1; i++) {\n if (this.importsStack[i].has(name)) return true;\n }\n }\n return false;\n }\n\n declareName(name: string, bindingType: BindingFlag, loc: Position) {\n if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n if (this.hasImport(name, true)) {\n this.parser.raise(Errors.VarRedeclaration, loc, {\n identifierName: name,\n });\n }\n this.importsStack[this.importsStack.length - 1].add(name);\n return;\n }\n\n const scope = this.currentScope();\n let type = scope.tsNames.get(name) || 0;\n\n if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n this.maybeExportDefined(scope, name);\n scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n return;\n }\n\n super.declareName(name, bindingType, loc);\n\n if (bindingType & BindingFlag.KIND_TYPE) {\n if (!(bindingType & BindingFlag.KIND_VALUE)) {\n // \"Value\" bindings have already been registered by the superclass.\n this.checkRedeclarationInScope(scope, name, bindingType, loc);\n this.maybeExportDefined(scope, name);\n }\n type = type | TsNameType.Types;\n }\n if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n type = type | TsNameType.Enums;\n }\n if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n type = type | TsNameType.ConstEnums;\n }\n if (bindingType & BindingFlag.FLAG_CLASS) {\n type = type | TsNameType.Classes;\n }\n if (type) scope.tsNames.set(name, type);\n }\n\n isRedeclaredInScope(\n scope: TypeScriptScope,\n name: string,\n bindingType: BindingFlag,\n ): boolean {\n const type = scope.tsNames.get(name)!;\n if ((type & TsNameType.Enums) > 0) {\n if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n // Enums can be merged with other enums if they are both\n // const or both non-const.\n const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n const wasConst = (type & TsNameType.ConstEnums) > 0;\n return isConst !== wasConst;\n }\n return true;\n }\n if (\n bindingType & BindingFlag.FLAG_CLASS &&\n (type & TsNameType.Classes) > 0\n ) {\n if (scope.names.get(name)! & NameType.Lexical) {\n // Classes can be merged with interfaces\n return !!(bindingType & BindingFlag.KIND_VALUE);\n } else {\n // Interface can be merged with other classes or interfaces\n return false;\n }\n }\n if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n return true;\n }\n\n return super.isRedeclaredInScope(scope, name, bindingType);\n }\n\n checkLocalExport(id: N.Identifier) {\n const { name } = id;\n\n if (this.hasImport(name)) return;\n\n const len = this.scopeStack.length;\n for (let i = len - 1; i >= 0; i--) {\n const scope = this.scopeStack[i];\n const type = scope.tsNames.get(name)!;\n if (\n (type & TsNameType.Types) > 0 ||\n (type & TsNameType.ExportOnlyBindings) > 0\n ) {\n return;\n }\n }\n\n super.checkLocalExport(id);\n }\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n// async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n// ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n // Initial Parameter flags\n PARAM = 0b0000,\n // track [Yield] production parameter\n PARAM_YIELD = 0b0001,\n // track [Await] production parameter\n PARAM_AWAIT = 0b0010,\n // track [Return] production parameter\n PARAM_RETURN = 0b0100,\n // track [In] production parameter\n PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n// type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n// | typeof PARAM\n// | typeof PARAM_AWAIT\n// | typeof PARAM_IN\n// | typeof PARAM_RETURN\n// | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n stacks: ParamKind[] = [];\n enter(flags: ParamKind) {\n this.stacks.push(flags);\n }\n\n exit() {\n this.stacks.pop();\n }\n\n currentFlags(): ParamKind {\n return this.stacks[this.stacks.length - 1];\n }\n\n get hasAwait(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n }\n\n get hasYield(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n }\n\n get hasReturn(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n }\n\n get hasIn(): boolean {\n return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n }\n}\n\nexport function functionFlags(\n isAsync: boolean,\n isGenerator: boolean,\n): ParamKind {\n return (\n (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n (isGenerator ? ParamKind.PARAM_YIELD : 0)\n );\n}\n","import type { OptionFlags, Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n ParserPluginWithOptions,\n PluginConfig,\n PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n // Properties set by constructor in index.js\n declare options: Options;\n declare optionFlags: OptionFlags;\n declare inModule: boolean;\n declare scope: ScopeHandler;\n declare classScope: ClassScopeHandler;\n declare prodParam: ProductionParameterHandler;\n declare expressionScope: ExpressionScopeHandler;\n declare plugins: PluginsMap;\n declare filename: string | undefined | null;\n declare startIndex: number;\n // Names of exports store. `default` is stored as a name for both\n // `export default foo;` and `export { foo as default };`.\n declare exportedIdentifiers: Set;\n sawUnambiguousESM: boolean = false;\n ambiguousScriptDifferentAst: boolean = false;\n\n // Initialized by Tokenizer\n declare state: State;\n // input and length are not in state as they are constant and we do\n // not want to ever copy them, which happens if state gets cloned\n declare input: string;\n declare length: number;\n // Comment store for Program.comments\n declare comments: N.Comment[];\n\n sourceToOffsetPos(sourcePos: number) {\n return sourcePos + this.startIndex;\n }\n\n offsetToSourcePos(offsetPos: number) {\n return offsetPos - this.startIndex;\n }\n\n // This method accepts either a string (plugin name) or an array pair\n // (plugin name and options object). If an options object is given,\n // then each value is non-recursively checked for identity with that\n // plugin’s actual option value.\n hasPlugin(pluginConfig: PluginConfig): boolean {\n if (typeof pluginConfig === \"string\") {\n return this.plugins.has(pluginConfig);\n } else {\n const [pluginName, pluginOptions] = pluginConfig;\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n const actualOptions = this.plugins.get(pluginName);\n for (const key of Object.keys(\n pluginOptions,\n ) as (keyof typeof pluginOptions)[]) {\n if (actualOptions?.[key] !== pluginOptions[key]) {\n return false;\n }\n }\n return true;\n }\n }\n\n getPluginOption<\n PluginName extends ParserPluginWithOptions[0],\n OptionName extends keyof PluginOptions,\n >(plugin: PluginName, name: OptionName) {\n return (this.plugins.get(plugin) as null | PluginOptions)?.[\n name\n ];\n }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n /**\n * the start of the whitespace token.\n */\n start: number;\n /**\n * the end of the whitespace token.\n */\n end: number;\n /**\n * the containing comments\n */\n comments: Comment[];\n /**\n * the immediately preceding AST node of the whitespace token\n */\n leadingNode: Node | null;\n /**\n * the immediately following AST node of the whitespace token\n */\n trailingNode: Node | null;\n /**\n * the innermost AST node containing the whitespace with minimal size (|end - start|)\n */\n containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone, comments: Comment[]) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n node.trailingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone, comments: Comment[]) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n node.leadingComments.unshift(...comments);\n }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(node: Undone, comments: Comment[]) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n node.innerComments.unshift(...comments);\n }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n node: Undone,\n elements: (Node | null)[],\n commentWS: CommentWhitespace,\n) {\n let lastElement = null;\n let i = elements.length;\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nexport default class CommentsParser extends BaseParser {\n addComment(comment: Comment): void {\n if (this.filename) comment.loc.filename = this.filename;\n const { commentsLen } = this.state;\n if (this.comments.length !== commentsLen) {\n this.comments.length = commentsLen;\n }\n this.comments.push(comment);\n this.state.commentsLen++;\n }\n\n /**\n * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n * {@see {@link CommentWhitespace}}\n */\n processComment(node: Node): void {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n const lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n const { start: nodeStart } = node;\n // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n if (commentEnd > nodeStart) {\n // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n // so node can be a containingNode candidate. At this time we can finalize the comment\n // whitespace, because\n // 1) its leadingNode or trailingNode, if exists, will not change\n // 2) its containingNode have been assigned and will not change because it is the\n // innermost minimal-sized AST node\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n // stop the loop when commentEnd <= nodeStart\n break;\n }\n }\n }\n\n /**\n * Assign the comments of comment whitespaces to related AST nodes.\n * Also adjust innerComments following trailing comma.\n */\n finalizeComment(commentWS: CommentWhitespace) {\n const { comments } = commentWS;\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n /*:: invariant(commentWS.containingNode !== null) */\n const node = commentWS.containingNode!;\n const commentStart = commentWS.start;\n if (\n this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n charCodes.comma\n ) {\n // If a commentWhitespace follows a comma and the containingNode allows\n // list structures with trailing comma, merge it to the trailingComment\n // of the last non-null list element\n switch (node.type) {\n case \"ObjectExpression\":\n case \"ObjectPattern\":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n case \"CallExpression\":\n case \"OptionalCallExpression\":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n case \"ImportExpression\":\n adjustInnerComments(\n node,\n [node.source, node.options ?? null],\n commentWS,\n );\n break;\n case \"FunctionDeclaration\":\n case \"FunctionExpression\":\n case \"ArrowFunctionExpression\":\n case \"ObjectMethod\":\n case \"ClassMethod\":\n case \"ClassPrivateMethod\":\n adjustInnerComments(node, node.params, commentWS);\n break;\n case \"ArrayExpression\":\n case \"ArrayPattern\":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n case \"ExportNamedDeclaration\":\n case \"ImportDeclaration\":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n case \"TSEnumDeclaration\":\n if (!process.env.BABEL_8_BREAKING) {\n adjustInnerComments(node, node.members!, commentWS);\n } else {\n setInnerComments(node, comments);\n }\n break;\n case \"TSEnumBody\":\n adjustInnerComments(node, node.members, commentWS);\n break;\n default: {\n if (!process.env.BABEL_8_BREAKING) {\n if (node.type === \"RecordExpression\") {\n adjustInnerComments(node, node.properties, commentWS);\n break;\n }\n if (node.type === \"TupleExpression\") {\n adjustInnerComments(node, node.elements, commentWS);\n break;\n }\n }\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n\n /**\n * Drains remaining commentStack and applies finalizeComment\n * to each comment whitespace. Used only in parseExpression\n * where the top level AST node is _not_ Program\n * {@see {@link CommentsParser#finalizeComment}}\n */\n finalizeRemainingComments() {\n const { commentStack } = this.state;\n for (let i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n this.state.commentStack = [];\n }\n\n /* eslint-disable no-irregular-whitespace */\n /**\n * Reset previous node trailing comments. Used in object / class\n * property parsing. We parse `async`, `static`, `set` and `get`\n * as an identifier but may reinterpret it into an async/static/accessor\n * method later. In this case the identifier is not part of the AST and we\n * should sync the knowledge to commentStacks\n *\n * For example, when parsing\n * ```\n * async /* 1 *​/ function f() {}\n * ```\n * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n * we see the function token, we create a Function node and mark `/* 1 *​/` as\n * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n *\n * @param node the last finished AST node _before_ current token\n */\n /* eslint-enable no-irregular-whitespace */\n resetPreviousNodeTrailingComments(node: Node) {\n const { commentStack } = this.state;\n const { length } = commentStack;\n if (length === 0) return;\n const commentWS = commentStack[length - 1];\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n\n /**\n * Attach a node to the comment whitespaces right before/after\n * the given range.\n *\n * This is used to properly attach comments around parenthesized\n * expressions as leading/trailing comments of the inner expression.\n */\n takeSurroundingComments(node: Node, start: number, end: number) {\n const { commentStack } = this.state;\n const commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n let i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n const commentWS = commentStack[i];\n const commentEnd = commentWS.end;\n const commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n}\n","import type { OptionsWithDefaults } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n | typeof Errors.StrictNumericEscape\n | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n // When a topic binding has been currently established,\n // then this is 1. Otherwise, it is 0. This is forwards compatible\n // with a future plugin for multiple lexical topics.\n maxNumOfResolvableTopics: number;\n // When a topic binding has been currently established, and if that binding\n // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n // `null`. This is forwards compatible with a future plugin for multiple\n // lexical topics.\n maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n Loop = 1,\n Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator;\n\nexport default class State {\n @bit.storage flags: number = 0;\n\n @bit accessor strict = false;\n\n startIndex!: number;\n curLine!: number;\n lineStart!: number;\n\n // And, if locations are used, the {line, column} object\n // corresponding to those offsets\n startLoc!: Position;\n endLoc!: Position;\n\n init({\n strictMode,\n sourceType,\n startIndex,\n startLine,\n startColumn,\n }: OptionsWithDefaults): void {\n this.strict =\n strictMode === false\n ? false\n : strictMode === true\n ? true\n : sourceType === \"module\";\n\n this.startIndex = startIndex;\n this.curLine = startLine;\n this.lineStart = -startColumn;\n this.startLoc = this.endLoc = new Position(\n startLine,\n startColumn,\n startIndex,\n );\n }\n\n errors: ParseError[] = [];\n\n // Used to signify the start of a potential arrow function\n potentialArrowAt: number = -1;\n\n // Used to signify the start of an expression which looks like a\n // typed arrow function, but it isn't\n // e.g. a ? (b) : c => d\n // ^\n noArrowAt: number[] = [];\n\n // Used to signify the start of an expression whose params, if it looks like\n // an arrow function, shouldn't be converted to assignable nodes.\n // This is used to defer the validation of typed arrow functions inside\n // conditional expressions.\n // e.g. a ? (b) : c => d\n // ^\n noArrowParamsConversionAt: number[] = [];\n\n // Flags to track\n @bit accessor maybeInArrowParameters = false;\n @bit accessor inType = false;\n @bit accessor noAnonFunctionType = false;\n @bit accessor hasFlowComment = false;\n @bit accessor isAmbientContext = false;\n @bit accessor inAbstractClass = false;\n @bit accessor inDisallowConditionalTypesContext = false;\n\n // For the Hack-style pipelines plugin\n topicContext: TopicContextState = {\n maxNumOfResolvableTopics: 0,\n maxTopicIndex: null,\n };\n\n // For the F#-style pipelines plugin\n @bit accessor soloAwait = false;\n @bit accessor inFSharpPipelineDirectBody = false;\n\n // Labels in scope.\n labels: {\n kind: LoopLabelKind | null;\n name?: string | null;\n statementStart?: number;\n }[] = [];\n\n commentsLen = 0;\n // Comment attachment store\n commentStack: CommentWhitespace[] = [];\n\n // The current position of the tokenizer in the input.\n pos: number = 0;\n\n // Properties of the current token:\n // Its type\n type: TokenType = tt.eof;\n\n // For tokens that include more information than their type, the value\n value: any = null;\n\n // Its start and end offset\n start: number = 0;\n end: number = 0;\n\n // Position information for the previous token\n // this is initialized when generating the second token.\n lastTokEndLoc: Position | null = null;\n // this is initialized when generating the second token.\n lastTokStartLoc: Position | null = null;\n\n // The context stack is used to track whether the apostrophe \"`\" starts\n // or ends a string template\n context: TokContext[] = [ct.brace];\n\n // Used to track whether a JSX element is allowed to form\n @bit accessor canStartJSXElement = true;\n\n // Used to signal to callers of `readWord1` whether the word\n // contained any escape sequences. This is needed because words with\n // escape sequences must not be interpreted as keywords.\n @bit accessor containsEsc = false;\n\n // Used to track invalid escape sequences in template literals,\n // that must be reported if the template is not tagged.\n firstInvalidTemplateEscapePos: null | Position = null;\n\n @bit accessor hasTopLevelAwait = false;\n\n // This property is used to track the following errors\n // - StrictNumericEscape\n // - StrictOctalLiteral\n //\n // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n // todo(JLHwung): set strictErrors to null and avoid recording string errors\n // after a non-directive is parsed\n strictErrors = new Map();\n\n // Tokens length in token store\n tokensLength: number = 0;\n\n /**\n * When we add a new property, we must manually update the `clone` method\n * @see State#clone\n */\n\n curPosition(): Position {\n return new Position(\n this.curLine,\n this.pos - this.lineStart,\n this.pos + this.startIndex,\n );\n }\n\n clone(): State {\n const state = new State();\n state.flags = this.flags;\n state.startIndex = this.startIndex;\n state.curLine = this.curLine;\n state.lineStart = this.lineStart;\n state.startLoc = this.startLoc;\n state.endLoc = this.endLoc;\n state.errors = this.errors.slice();\n state.potentialArrowAt = this.potentialArrowAt;\n state.noArrowAt = this.noArrowAt.slice();\n state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n state.topicContext = this.topicContext;\n state.labels = this.labels.slice();\n state.commentsLen = this.commentsLen;\n state.commentStack = this.commentStack.slice();\n state.pos = this.pos;\n state.type = this.type;\n state.value = this.value;\n state.start = this.start;\n state.end = this.end;\n state.lastTokEndLoc = this.lastTokEndLoc;\n state.lastTokStartLoc = this.lastTokStartLoc;\n state.context = this.context.slice();\n state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n state.strictErrors = this.strictErrors;\n state.tokensLength = this.tokensLength;\n\n return state;\n }\n}\n\nexport type LookaheadState = {\n pos: number;\n value: any;\n type: TokenType;\n start: number;\n end: number;\n context: TokContext[];\n startLoc: Position;\n lastTokEndLoc: Position | null;\n curLine: number;\n lineStart: number;\n curPosition: State[\"curPosition\"];\n /* Used only in readToken_mult_modulo */\n inType: boolean;\n // These boolean properties are not initialized in createLookaheadState()\n // instead they will only be set by the tokenizer\n containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n decBinOct: new Set([\n charCodes.dot,\n charCodes.uppercaseB,\n charCodes.uppercaseE,\n charCodes.uppercaseO,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseB,\n charCodes.lowercaseE,\n charCodes.lowercaseO,\n ]),\n hex: new Set([\n charCodes.dot,\n charCodes.uppercaseX,\n charCodes.underscore, // multiple separators are not allowed\n charCodes.lowercaseX,\n ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n // 0 - 1\n bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n // 0 - 7\n oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n // 0 - 9\n dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n // 0 - 9, A - F, a - f,\n hex: (ch: number) =>\n (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n unterminated(\n initialPos: number,\n initialLineStart: number,\n initialCurLine: number,\n ): void;\n};\n\nexport function readStringContents(\n type: \"single\" | \"double\" | \"template\",\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n errors: StringContentsErrorHandlers,\n) {\n const initialPos = pos;\n const initialLineStart = lineStart;\n const initialCurLine = curLine;\n\n let out = \"\";\n let firstInvalidLoc = null;\n let chunkStart = pos;\n const { length } = input;\n for (;;) {\n if (pos >= length) {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n out += input.slice(chunkStart, pos);\n break;\n }\n const ch = input.charCodeAt(pos);\n if (isStringEnd(type, ch, input, pos)) {\n out += input.slice(chunkStart, pos);\n break;\n }\n if (ch === charCodes.backslash) {\n out += input.slice(chunkStart, pos);\n const res = readEscapedChar(\n input,\n pos,\n lineStart,\n curLine,\n type === \"template\",\n errors,\n );\n if (res.ch === null && !firstInvalidLoc) {\n firstInvalidLoc = { pos, lineStart, curLine };\n } else {\n out += res.ch;\n }\n ({ pos, lineStart, curLine } = res);\n chunkStart = pos;\n } else if (\n ch === charCodes.lineSeparator ||\n ch === charCodes.paragraphSeparator\n ) {\n ++pos;\n ++curLine;\n lineStart = pos;\n } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n if (type === \"template\") {\n out += input.slice(chunkStart, pos) + \"\\n\";\n ++pos;\n if (\n ch === charCodes.carriageReturn &&\n input.charCodeAt(pos) === charCodes.lineFeed\n ) {\n ++pos;\n }\n ++curLine;\n chunkStart = lineStart = pos;\n } else {\n errors.unterminated(initialPos, initialLineStart, initialCurLine);\n }\n } else {\n ++pos;\n }\n }\n return process.env.BABEL_8_BREAKING\n ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n : {\n pos,\n str: out,\n firstInvalidLoc,\n lineStart,\n curLine,\n containsInvalid: !!firstInvalidLoc,\n };\n}\n\nfunction isStringEnd(\n type: \"single\" | \"double\" | \"template\",\n ch: number,\n input: string,\n pos: number,\n) {\n if (type === \"template\") {\n return (\n ch === charCodes.graveAccent ||\n (ch === charCodes.dollarSign &&\n input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n );\n }\n return (\n ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n CodePointErrorHandlers & {\n strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n };\n\nfunction readEscapedChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n inTemplate: boolean,\n errors: EscapedCharErrorHandlers,\n) {\n const throwOnInvalid = !inTemplate;\n pos++; // skip '\\'\n\n const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n const ch = input.charCodeAt(pos++);\n switch (ch) {\n case charCodes.lowercaseN:\n return res(\"\\n\");\n case charCodes.lowercaseR:\n return res(\"\\r\");\n case charCodes.lowercaseX: {\n let code;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 2,\n false,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCharCode(code));\n }\n case charCodes.lowercaseU: {\n let code;\n ({ code, pos } = readCodePoint(\n input,\n pos,\n lineStart,\n curLine,\n throwOnInvalid,\n errors,\n ));\n return res(code === null ? null : String.fromCodePoint(code));\n }\n case charCodes.lowercaseT:\n return res(\"\\t\");\n case charCodes.lowercaseB:\n return res(\"\\b\");\n case charCodes.lowercaseV:\n return res(\"\\u000b\");\n case charCodes.lowercaseF:\n return res(\"\\f\");\n case charCodes.carriageReturn:\n if (input.charCodeAt(pos) === charCodes.lineFeed) {\n ++pos;\n }\n // fall through\n case charCodes.lineFeed:\n lineStart = pos;\n ++curLine;\n // fall through\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n return res(\"\");\n case charCodes.digit8:\n case charCodes.digit9:\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(pos - 1, lineStart, curLine);\n }\n // fall through\n default:\n if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n const startPos = pos - 1;\n const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n let octalStr = match[0];\n\n let octal = parseInt(octalStr, 8);\n if (octal > 255) {\n octalStr = octalStr.slice(0, -1);\n octal = parseInt(octalStr, 8);\n }\n pos += octalStr.length - 1;\n const next = input.charCodeAt(pos);\n if (\n octalStr !== \"0\" ||\n next === charCodes.digit8 ||\n next === charCodes.digit9\n ) {\n if (inTemplate) {\n return res(null);\n } else {\n errors.strictNumericEscape(startPos, lineStart, curLine);\n }\n }\n\n return res(String.fromCharCode(octal));\n }\n\n return res(String.fromCharCode(ch));\n }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n len: number,\n forceLen: boolean,\n throwOnInvalid: boolean,\n errors: HexCharErrorHandlers,\n) {\n const initialPos = pos;\n let n;\n ({ n, pos } = readInt(\n input,\n pos,\n lineStart,\n curLine,\n 16,\n len,\n forceLen,\n false,\n errors,\n /* bailOnError */ !throwOnInvalid,\n ));\n if (n === null) {\n if (throwOnInvalid) {\n errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n } else {\n pos = initialPos - 1;\n }\n }\n return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n numericSeparatorInEscapeSequence(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n unexpectedNumericSeparator(\n pos: number,\n lineStart: number,\n curLine: number,\n ): void;\n // It can return \"true\" to indicate that the error was handled\n // and the int parsing should continue.\n invalidDigit(\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n ): boolean;\n};\n\nexport function readInt(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n radix: number,\n len: number | undefined,\n forceLen: boolean,\n allowNumSeparator: boolean | \"bail\",\n errors: IntErrorHandlers,\n bailOnError: boolean,\n) {\n const start = pos;\n const forbiddenSiblings =\n radix === 16\n ? forbiddenNumericSeparatorSiblings.hex\n : forbiddenNumericSeparatorSiblings.decBinOct;\n const isAllowedSibling =\n radix === 16\n ? isAllowedNumericSeparatorSibling.hex\n : radix === 10\n ? isAllowedNumericSeparatorSibling.dec\n : radix === 8\n ? isAllowedNumericSeparatorSibling.oct\n : isAllowedNumericSeparatorSibling.bin;\n\n let invalid = false;\n let total = 0;\n\n for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n const code = input.charCodeAt(pos);\n let val;\n\n if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n const prev = input.charCodeAt(pos - 1);\n const next = input.charCodeAt(pos + 1);\n\n if (!allowNumSeparator) {\n if (bailOnError) return { n: null, pos };\n errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n } else if (\n Number.isNaN(next) ||\n !isAllowedSibling(next) ||\n forbiddenSiblings.has(prev) ||\n forbiddenSiblings.has(next)\n ) {\n if (bailOnError) return { n: null, pos };\n errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n }\n\n // Ignore this _ character\n ++pos;\n continue;\n }\n\n if (code >= charCodes.lowercaseA) {\n val = code - charCodes.lowercaseA + charCodes.lineFeed;\n } else if (code >= charCodes.uppercaseA) {\n val = code - charCodes.uppercaseA + charCodes.lineFeed;\n } else if (charCodes.isDigit(code)) {\n val = code - charCodes.digit0; // 0-9\n } else {\n val = Infinity;\n }\n if (val >= radix) {\n // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n // breaking the loop (this is used for error recovery).\n if (val <= 9 && bailOnError) {\n return { n: null, pos };\n } else if (\n val <= 9 &&\n errors.invalidDigit(pos, lineStart, curLine, radix)\n ) {\n val = 0;\n } else if (forceLen) {\n val = 0;\n invalid = true;\n } else {\n break;\n }\n }\n ++pos;\n total = total * radix + val;\n }\n if (pos === start || (len != null && pos - start !== len) || invalid) {\n return { n: null, pos };\n }\n\n return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n input: string,\n pos: number,\n lineStart: number,\n curLine: number,\n throwOnInvalid: boolean,\n errors: CodePointErrorHandlers,\n) {\n const ch = input.charCodeAt(pos);\n let code;\n\n if (ch === charCodes.leftCurlyBrace) {\n ++pos;\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n input.indexOf(\"}\", pos) - pos,\n true,\n throwOnInvalid,\n errors,\n ));\n ++pos;\n if (code !== null && code > 0x10ffff) {\n if (throwOnInvalid) {\n errors.invalidCodePoint(pos, lineStart, curLine);\n } else {\n return { code: null, pos };\n }\n }\n } else {\n ({ code, pos } = readHexChar(\n input,\n pos,\n lineStart,\n curLine,\n 4,\n false,\n throwOnInvalid,\n errors,\n ));\n }\n return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport type { OptionsWithDefaults } from \"../options.ts\";\nimport { OptionFlags } from \"../options.ts\";\nimport {\n Position,\n SourceLocation,\n createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n tokenIsKeyword,\n tokenLabelName,\n tt,\n keywords as keywordTypes,\n type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n Errors,\n type ParseError,\n type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n lineBreakG,\n isNewLine,\n isWhitespace,\n skipWhiteSpace,\n skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n readInt,\n readCodePoint,\n readStringContents,\n type IntErrorHandlers,\n type CodePointErrorHandlers,\n type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n charCodes.lowercaseG,\n charCodes.lowercaseM,\n charCodes.lowercaseS,\n charCodes.lowercaseI,\n charCodes.lowercaseY,\n charCodes.lowercaseU,\n charCodes.lowercaseD,\n charCodes.lowercaseV,\n]);\n\n// Object type used to represent tokens. Note that normally, tokens\n// simply exist as properties on the parser object. This is only\n// used for the onToken callback and the external tokenizer.\n\nexport class Token {\n constructor(state: State) {\n const startIndex = state.startIndex || 0;\n this.type = state.type;\n this.value = state.value;\n this.start = startIndex + state.start;\n this.end = startIndex + state.end;\n this.loc = new SourceLocation(state.startLoc, state.endLoc);\n }\n\n declare type: TokenType;\n declare value: any;\n declare start: number;\n declare end: number;\n declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n isLookahead: boolean;\n\n // Token store.\n tokens: (Token | N.Comment)[] = [];\n\n constructor(options: OptionsWithDefaults, input: string) {\n super();\n this.state = new State();\n this.state.init(options);\n this.input = input;\n this.length = input.length;\n this.comments = [];\n this.isLookahead = false;\n }\n\n pushToken(token: Token | N.Comment) {\n // Pop out invalid tokens trapped by try-catch parsing.\n // Those parsing branches are mainly created by typescript and flow plugins.\n this.tokens.length = this.state.tokensLength;\n this.tokens.push(token);\n ++this.state.tokensLength;\n }\n\n // Move to the next token\n\n next(): void {\n this.checkKeywordEscapes();\n if (this.optionFlags & OptionFlags.Tokens) {\n this.pushToken(new Token(this.state));\n }\n\n this.state.lastTokEndLoc = this.state.endLoc;\n this.state.lastTokStartLoc = this.state.startLoc;\n this.nextToken();\n }\n\n eat(type: TokenType): boolean {\n if (this.match(type)) {\n this.next();\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Whether current token matches given type\n */\n match(type: TokenType): boolean {\n return this.state.type === type;\n }\n\n /**\n * Create a LookaheadState from current parser state\n */\n createLookaheadState(state: State): LookaheadState {\n return {\n pos: state.pos,\n value: null,\n type: state.type,\n start: state.start,\n end: state.end,\n context: [this.curContext()],\n inType: state.inType,\n startLoc: state.startLoc,\n lastTokEndLoc: state.lastTokEndLoc,\n curLine: state.curLine,\n lineStart: state.lineStart,\n curPosition: state.curPosition,\n };\n }\n\n /**\n * lookahead peeks the next token, skipping changes to token context and\n * comment stack. For performance it returns a limited LookaheadState\n * instead of full parser state.\n *\n * The { column, line } Loc info is not included in lookahead since such usage\n * is rare. Although it may return other location properties e.g. `curLine` and\n * `lineStart`, these properties are not listed in the LookaheadState interface\n * and thus the returned value is _NOT_ reliable.\n *\n * The tokenizer should make best efforts to avoid using any parser state\n * other than those defined in LookaheadState\n */\n lookahead(): LookaheadState {\n const old = this.state;\n // @ts-expect-error For performance we use a simplified tokenizer state structure\n this.state = this.createLookaheadState(old);\n\n this.isLookahead = true;\n this.nextToken();\n this.isLookahead = false;\n\n const curr = this.state;\n this.state = old;\n return curr;\n }\n\n nextTokenStart(): number {\n return this.nextTokenStartSince(this.state.pos);\n }\n\n nextTokenStartSince(pos: number): number {\n skipWhiteSpace.lastIndex = pos;\n return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n }\n\n lookaheadCharCode(): number {\n return this.lookaheadCharCodeSince(this.state.pos);\n }\n\n lookaheadCharCodeSince(pos: number): number {\n return this.input.charCodeAt(this.nextTokenStartSince(pos));\n }\n\n /**\n * Similar to nextToken, but it will stop at line break when it is seen before the next token\n *\n * @returns {number} position of the next token start or line break, whichever is seen first.\n * @memberof Tokenizer\n */\n nextTokenInLineStart(): number {\n return this.nextTokenInLineStartSince(this.state.pos);\n }\n\n nextTokenInLineStartSince(pos: number): number {\n skipWhiteSpaceInLine.lastIndex = pos;\n return skipWhiteSpaceInLine.test(this.input)\n ? skipWhiteSpaceInLine.lastIndex\n : pos;\n }\n\n /**\n * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n * seen before the next token\n *\n * @returns {number} char code of the next token start or line break, whichever is seen first.\n * @memberof Tokenizer\n */\n lookaheadInLineCharCode(): number {\n return this.input.charCodeAt(this.nextTokenInLineStart());\n }\n\n codePointAtPos(pos: number): number {\n // The implementation is based on\n // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n let cp = this.input.charCodeAt(pos);\n if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n const trail = this.input.charCodeAt(pos);\n if ((trail & 0xfc00) === 0xdc00) {\n cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n }\n }\n return cp;\n }\n\n // Toggle strict mode. Re-reads the next number or string to please\n // pedantic tests (`\"use strict\"; 010;` should fail).\n\n setStrict(strict: boolean): void {\n this.state.strict = strict;\n if (strict) {\n // Throw an error for any string decimal escape found before/immediately\n // after a \"use strict\" directive. Strict mode will be set at parse\n // time for any literals that occur after the next node of the strict\n // directive.\n this.state.strictErrors.forEach(([toParseError, at]) =>\n this.raise(toParseError, at),\n );\n this.state.strictErrors.clear();\n }\n }\n\n curContext(): TokContext {\n return this.state.context[this.state.context.length - 1];\n }\n\n // Read a single token, updating the parser object's token-related properties.\n nextToken(): void {\n this.skipSpace();\n this.state.start = this.state.pos;\n if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n if (this.state.pos >= this.length) {\n this.finishToken(tt.eof);\n return;\n }\n\n this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n }\n\n // Skips a block comment, whose end is marked by commentEnd.\n // *-/ is used by the Flow plugin, when parsing block comments nested\n // inside Flow comments.\n skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n const start = this.state.pos;\n const end = this.input.indexOf(commentEnd, start + 2);\n if (end === -1) {\n // We have to call this again here because startLoc may not be set...\n // This seems to be for performance reasons:\n // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n }\n\n this.state.pos = end + commentEnd.length;\n lineBreakG.lastIndex = start + 2;\n while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n ++this.state.curLine;\n this.state.lineStart = lineBreakG.lastIndex;\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n /*:: invariant(startLoc) */\n\n const comment: N.CommentBlock = {\n type: \"CommentBlock\",\n value: this.input.slice(start + 2, end),\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end + commentEnd.length),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n loc: new SourceLocation(startLoc!, this.state.curPosition()),\n };\n if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n return comment;\n }\n\n skipLineComment(startSkip: number): N.CommentLine | undefined {\n const start = this.state.pos;\n let startLoc;\n if (!this.isLookahead) startLoc = this.state.curPosition();\n let ch = this.input.charCodeAt((this.state.pos += startSkip));\n if (this.state.pos < this.length) {\n while (!isNewLine(ch) && ++this.state.pos < this.length) {\n ch = this.input.charCodeAt(this.state.pos);\n }\n }\n\n // If we are doing a lookahead right now we need to advance the position (above code)\n // but we do not want to push the comment to the state.\n if (this.isLookahead) return;\n\n const end = this.state.pos;\n const value = this.input.slice(start + startSkip, end);\n\n const comment: N.CommentLine = {\n type: \"CommentLine\",\n value,\n start: this.sourceToOffsetPos(start),\n end: this.sourceToOffsetPos(end),\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n loc: new SourceLocation(startLoc!, this.state.curPosition()),\n };\n if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n return comment;\n }\n\n // Called at the start of the parse and after every token. Skips\n // whitespace and comments, and.\n\n skipSpace(): void {\n const spaceStart = this.state.pos;\n const comments: N.Comment[] | null =\n this.optionFlags & OptionFlags.AttachComment ? [] : null;\n loop: while (this.state.pos < this.length) {\n const ch = this.input.charCodeAt(this.state.pos);\n switch (ch) {\n case charCodes.space:\n case charCodes.nonBreakingSpace:\n case charCodes.tab:\n ++this.state.pos;\n break;\n case charCodes.carriageReturn:\n if (\n this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n ) {\n ++this.state.pos;\n }\n // fall through\n case charCodes.lineFeed:\n case charCodes.lineSeparator:\n case charCodes.paragraphSeparator:\n ++this.state.pos;\n ++this.state.curLine;\n this.state.lineStart = this.state.pos;\n break;\n\n case charCodes.slash:\n switch (this.input.charCodeAt(this.state.pos + 1)) {\n case charCodes.asterisk: {\n const comment = this.skipBlockComment(\"*/\");\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n\n case charCodes.slash: {\n const comment = this.skipLineComment(2);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n break;\n }\n\n default:\n break loop;\n }\n break;\n\n default:\n if (isWhitespace(ch)) {\n ++this.state.pos;\n } else if (\n ch === charCodes.dash &&\n !this.inModule &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.dash &&\n this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n (spaceStart === 0 || this.state.lineStart > spaceStart)\n ) {\n // A `-->` line comment\n const comment = this.skipLineComment(3);\n if (comment !== undefined) {\n this.addComment(comment);\n comments?.push(comment);\n }\n } else {\n break loop;\n }\n } else if (\n ch === charCodes.lessThan &&\n !this.inModule &&\n this.optionFlags & OptionFlags.AnnexB\n ) {\n const pos = this.state.pos;\n if (\n this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n this.input.charCodeAt(pos + 2) === charCodes.dash &&\n this.input.charCodeAt(pos + 3) === charCodes.dash\n ) {\n // `dfIj8y|cXBl7}S zbM$HW^67@ap4p<2g|-{Q_PGdt#w6kg9qbjrcF}V5d7PU$a?3G;u7aa{Bs?tRyogw9 zMm!X=$?Q^_uV@=r@c+K(K-QfJNRsx4CbSQOHE)p@1}XQ~NPGbO*9}WC2axcBE)(JN zvnP;olANMf%Xf@mnJqWg#0=_>~4a6?k`$1-R}?go;V_u zzF|aY(gyeF(D)5rf6=PxC*V|)vJs&(SC0r)ug2rj)yNgOUajW2IgQPp2Zed^!K+Le z-GX=u^%g_4f}41|9Jfuep6f}{m>1%4B})?rmp@<5mvQ)q#N|=t27mAJG~5P1oj;sD zadfELQgnYQIy-5pcSQKirK7{SOL@XD==_bRVLZQszYxQ7P?M1;d?myQn3TI!C%;|M<@&MnvLgNr4e1?wv~<6J$B zAN2A9QImEeBg`$jus_%h^^V`^jw0jGEVv#Y<#)l){lN{Yuaqy(21Rl}3{S%&;ENHV zer*9l%D}~!z7yzU-~H^npM6Ig;eqJ(^~iymt{WZ^OkX+zZ{5*MbvME_c&zE|U^vsg z58l_yU%`H+dx!FbnJ46fuW29AZvk<%-2<@!ukZLi>kAnYw%T%(gsuLL?h>6w#tK`tXQ5ah*@N?qy0alnTdQI#U{m7aE3go6 zWfYt3#_lRC2TGG6s|)MZpu5=!a!PVBC+r&j{n#`*`1h(UdwDK{KJtrcYp5UKf5&^n zUwGd{pY0SZrDRnjBaR6b0h?7peoTCTN<%-Bnfo&Y7V~gf&JW+ZBW?zs#qlXK@C61Z z3v_siNrS~nxsC!5P)&LccBugS0oM>pMmH272?Gn&xAh;9X^`+W0HREQb}zx6G$BgfzsSaR%-qmci9KQ$9Wg-m+iN-nN7482Dx zgdR3wB0)Fyg)-~E{;jek#Kun^fF?%;;0PaMA)pFgfgDx+&_nNZ7Ga8KkxYt2Cv4&~Pt$=GGBJ+S8N$YcBM7)r{QDqFtX<3UsP z+r4DK;8VG7VMKF9PqO9tgSk0!eO1myCqGl}`0-wI+yc|%=e3IspP5tuR!0?W z_B39Nl^3yH_9CsIdi>(=5t}s^MR4Fc#&a3pS|Ex4-XAV&)%hFCkjTVy+dG*oFAhZ4 zwV79>4QtJ9X@b<#X_Y)LVg&G*dm@lUO4zGmU#A(^YKT4OQiA{;>KUDYN9aXAslnjF^IET_=vjCnJ+L1Bvln8a z8}>;L%(E+c;RLRRedxjahY$+$IE3@tkv4DEfZ3^0mjXwrkqPKBW}J<`UAV1df#z1A z?poO&=#JsS^I}(o;7G`KU+IZqfS0-w4n%%?Ev$vQMhEKn0_+%!;S!ID%Wj~DFr7hh zYFwK5gp3)m&-Zn4;`3@el8$LycwX!k9gjzdMc3SH9>3Hp%EDcl6i7b`_2TZvebOl# zk2p=RVIMk`DV?$(bN!@f{j>o!|2uv&buvpbC3bamke!2wkSG6j_cUIL!+$NrV{b7u-KvF zT7)~y|K6ghgczIt&*Hbl*gTFK)gVDAbM*olOwTmh1Q6+aNE)Q%>c<0TgS&C$Y#CfG zo>#u=QvChO9KWY@MN`x}9N|413bsVMm>Wv>CKTk z11^_(;~~Cl=3(8)<)GsassYx=l@?graEJJxwH8?K;kSUb9yjVKoP$N9OA!o!wS!lH zCBFgIk=UOzqR;T)YV3eKa#U~)Hr+VIhFC*q%t|^iYb5P?1OuZ0S8ysST{68Vn5+nDflD1 zh*=5ZvaNb$|DK%tY|;gClC@E-7y>gK`%*_azr=7}DBZy%Q$37tpkEuC|5xo@&>WHd z>xoEX207$cLnb4Nj;c0A$7X&3(NTq1*`Gmlv|(aknp7!?+WE0 zuv^IJx1v3sJAPw0M>qR8~Dwpz{ z;D~%uGk2jsaHq{ZIkimi}bBZq~#Ie;7-UExofV_~B2e z;1{~tDi(awS@2P-prhFpEY(4mI)kMGrj*H7(PMENP=;BsB`i>OKtb#uc9z`uiXHbF z2j+z=c9$-;x)a)SnNmG8R_}khjrRJpV1+Jt7Yn`-)p#)lFS80d!2A4RlscNFIDbUo z`yRu7&)|v_qe4p&#+X8c```LLqVskgi#;1_m!Ni;>OT@-dROdk*s|cjQMbGQK);q_ zj?clFBLR>)>bCa|d&=+dG15QonKziWgd@g|A}!Cv|5)+YO)>8u)_@rQZU<6hMkR67 zFVG5L9Q9%ND?!c@M{Pw>{}!($in>oy6t!n=2*`0nQWO3%MpGZoXll$LI@B<4eedc+ zBYjvA=a=}6#_-pQsQ!(KsP;7OLVe=vM96krM74x$cbE9$&{PwnCT9C$)CnPBJ#%yg z4fLMT%kD-le^+~=zih&dGol;q_rt@(18_btKR}Ac4>i+sbMGuj&L}f z=;6$ft)CJOPW?Dh@~5@Sn{a5wZ|P0JpRm=)pZWCVBAT0j&{8>FCh(|D;{E_J9G3!R zUGMNiPko?WhB%*rLkb2Vf<()+#am=H&y;ifAZucZAx`D3=gOU@w~Q9TRzVT7osy09oNLS~=@P;qE((%tg5l+UZOo;-fbV89`{tK)PVAgydwBjQmG21x5uC zfQO)0?9r0Fl<4B*rm~`SvwuZLavqM~z)qv0jh+T1Vs4F2=bH;)pKX|Z0lN91Zvocg zGQ+sY;^XmHFG5CY5I6@eH9x|;$DRj5qVYU-BZu9<1|#^_st@&tGXKotp{z%7iFVd_ z!0M$xh!b%g`?}U~$w48!tSJ@sVw|fU`CV!{#);GtuH0z)tq>G;7<36^|^bu0f;PD|iS;d)1~+|B%nVVok*-)hHV_KD~Za=CUA44-i3 z{@-$U!peg0F_l7Y79ol{m;A&p;lEl}edH~@kU^7Pxc(=dCroj&T-eP9NddR6U`xR& z@`&}IjZv+__qBtTw$6{Nf#;|l-ZmT!7RH8`Y8O4X9!2kIjA=2fe|-aXWQ6;_aWh=t zD;p0edL-vL<m^3pIY5-O@-j@zK?y! z^Cr1k4tz6#3A?VjodOCuME0_OGhY??i4d*u499XkAOrDli-qvfH1a2^&o3C*q9}^GQ~r(6k6>eSi(lP}Guny(GidP(kEVZs9wK zPYgff-?$ZEWA|7@H#HuDvuK^?wvX5_BxpVt7wYgss>GlIBv@70NL10(WsQx^w_uG5 z0*40`b8`tqSC%!T&M1{3H3S#RS?*Kou!1kErTwC%fnO3^l^n2z%w#(^M`i+9Pn@$L z4db)_?{E#AM?@Ek2nJ`YS62?>8bUGU8&-$#iX$|NJt%ffe2Dlaj_P|+17zrZyy#;d z4W6;gu^2+*0K!h65AfVQ2RBd<{T!#rB)(!Q#y7aZiu=(NKu8JroAUiMIC*dFB-|qS zMpircn?g09AWpn!ZhcoHb-*wPHP*rCA3#+XvHjKqw0T@?$FVR9qO>QY`{)`(fZkgQQlv)aaySan~-FL zaXkPu+T_Dx0qG;T#6SfZ^~ZWZTX15i?o$I7wE?FH8gx_Q8q(ZK6VW@+;`keG0F73 zE6;JuyOrm7d2JXv`4wvU&c0x$rYKnXL-qZ002}%3Pb|YYwuXSnch&c}2HfBdNFU(PY8_fK+wRI*>N5nQ{6hH!rRj33cP=18_t)Z%I6{&yLv2=xMKMQE;L z2}ndr+|V@eKDMEb#LJl=Df~%D8)FSt*o8RC5kr7RBHGH~V1()83ZX6N=}%4|C{V2G z<{Gpc%3ORFd4(Sq^?wZa2$Z8A6r)Vl4&|mhMzrxY8p>nIVq(GvVSqCq_{=g<%p)k! zaONeaVIp$T)7JhTkqRnuXFLx@-lLh;=6@Q0e@lTsqD~`GvfhMU&(85<{{OtF>*`{} zn#|(p7xSCun@DDZgcU1C0|`JW{JVc6f6((@^cQGh8zw0)fT9^HQ>#2;)Lfkh>GIfr zKg2G-{)zbVhH<&QaL*kMfCt1g3+K71_})Uuf!+)MPfXx{VG`h`kiyqTEI|yDVu&IN zyMpz8FxJ~@>vMoS)%tjQ5C|sttq-aT!O|2nVzLFKCX{{KL zYdmw_WRt)pMloz3e+c>m;RXZVDnm}(-5>gvv|^t27D5#Z5u5@wk2w)cNHbA`%^?#t z*f#G@n41FXR5qkqC zv{}D30fk9HPoU#NnPI~Mghw74oHnu8c0f{arz&NvTkt*bFK(LRn04fWcxG*i3~6_G zn)%ftZGQtHcBC@S<=N(^|8Enx4F1tWh`n&;TcfmdB%C>HHYY}zGtc01&$rK0;$juc zH66b>sTz7MZn*yPSM(?B>W#|O*Bf(sZ|I@1L`&*>0F;ds#c3tPOF77%%3pc7j z*R*;oYWlOO3E>Fr)$tcwH9e(k`d1Nqb%|ZmoA@m?Eys=eoaelSU3IK!qN%BquIZdK ztES6!O%tW2-gZsnSQFtJfg8a0fUav0>++boy6d`rg+o_;I4d!nd8n@IQmL!u?-s5m zur9(k8aL{EUDFpIp{Cd0)tEX_*L1`aI;&wg^Nm@8sZR?D-)y_4f8)2*^bT%R7hTgr z)-==9WN`lHMOL5Y=$iIRO@r*3cCjYH_XTbM-(sE;7j}(jU8gwf8gAEhx~}VwQkQzp zg703|MfmQ(jk;0S)Ri@T`Y#P%e+}Q;ITn1|X9|4Z{etlQ!LI2`{Fa(N!HqheHDN@+ zONvN&RS|>=KP|PBOXTY>AzyRI+u593Leya#Qte87Z?8Z;hmUAk+^u6s_PM9aa7A3Z zXpS-&x0sfU@Y)gJY(H@;l3F{T9kZNq(K%*+7LHSj-vwaB?IR$M*<>Iy^65dt*(ekj zD!7{~D>igD-|bMp{5)G-ITYdi-zc z@kWDx?ym-(t@)FM|0$$9NG^(23?e;k7T*EVq#sC)YLogs$%JIlJf=&oeyM`Ua~qk0;r;wL#Jas_T; z{F-SiZBI{ujhlqbs7+_B>&(ZnQX?(m0>nB zGN*l+dodG~*))k<=j^V=zeIdHWH2yUznS*UL?o4gu{1*NA7u-<)KZ54Nu0g0wc}!hBbX_;zWz}`4uIo;ztK~_nuG?4__2X>ZsPlDA zUu;56uOp`edu5h~FMQmp>5XdXRhHB=+pa0oswtf{bpI0**IysAdUd+4>sL~j`ilkM)vSx~U4k2RBWsH3wTJ5^ zf6v4N+ov@{;-!>|z#?rJI)|-HZW5dG?4wOPr{hLtNIP0FG%ZtSpq=Q;iF|AQ*8E}e zlS3EK%K~W)Z6OO@n{kkO@6ezooRQiAZd?Rm`8=aOWOO}TZl7~Zg74)^YSgf6R0Z9* zo7GhFq7OWG`~@sh8cM&vq<&A@rnIzaeTIkUr@?Vq zQoolzjOmA4`3Z{N@-#e;k0+M~(`$XLE2IA?sc*(Aw>f_nF>He&=v8or!^FNY&p z){;G4OX@#rg;C3|(SQ{9htI=2YDvw6lKQQDH#}UQhNCy|uC%tJuVH1!$S*N^P|@_0 zCa+9q9DM7_$O!#t2DbL?C;7CyNxY4F$sdn`s@R%z8m@3QsuRucW6ZTLu1&-dB$(w> zRF6v1I)~1TOiRfKnm(uL`DeV0L1iG9$Q8PT-Wdg#(AO(8*7HU87OX1R(iH9NYh5Bp zU+uYr+2cI(-s9hw&KxcF&E)#lv`y2x@bb~Lp1z{@JoD(R2%dRgbOq%nU%Wqkte$}` zon7XcM`4Xz(f-jLf z%myRZ2uk0pIeumOegA32`JEN|!8G7lmeVZ5lKHv*O#H$yT(8z~SnJ!@aVtxM>(wi< zr+<^%7JmB(Zj;b{%5086C)yuKiFRvvVE-TYQ&eC)wBi2?LCzyPOB=7v{PGY@KOe_e zv8>;{oQ_8z-$1%&X#msT@j>VF_}3)qJdT1*<1I0>E_XKrsjr-~M|*uW3Kflkgi) zkGcREx}wJt1x)Pk3mLHLmlN99XLm4>7ng7te?oat4t`gKLP9Hpu`J8Fmj9av0KmR^ zU?nlF*OEy5a&^t`@g$u2@LXt0vyDrVah5+q8pA7mo;%vp7oGs7#bHPr)n-Oez~uus zmB#T5B%wP-K9-FYT<-G)CwLKLAD-Zqr7OJ#DD5xC`F%qCrpe>d7GZx6zTJq_!gqW* z7TIG#4=j9{;9GESg^B`u*1DrFcoFs}z5FNBuaX>`;1s?oN1cZrNu6hLUY&?6j2if$ zUBmW{68mEXptaX0eOTk3BK66h1>JS8*(;@ctuo}qLD?@??$xtDCpp?86Q3_pBNj^M zf=l%H8iJp3f<~>mDPG1jMf#?mms0MB(l8yu$d_d8f1*U)L5aFUJ@^nY ze?4|8yS}?(9Gs)%la&||nklR4Z)g7PaMp3-X}B>20S6VM75*zNH5JK%p*S807io3ln*M z90Edw=SSS6d0yyVzntsXaX2PWhCP8A6m=AljUO%2 zg>vj794)QNpl;R=-Plbj@gMhSG=C{!DYE8LPKyme8-@c-PvXZ$d=K^5I2l7LZZOE4 zO)aWnKb%_EWsM4%KQVs*7{}f}51#X3&Yvyu3zw5+%={?_YDWd{O|8jeXhup;d!>8*mKW{;9Ov7|(XSYA9;xXEG{D?5^pizza1!$}w@tqx<2C&%1kE7V;4%@U z)gT?{S4jHd4#5;`hV;ux3ycQ+(0$6^2QU)giqvPY5ZM)68AVo6*p=Az5E|iCoAzoF z`$^&okQl>&Bo_VK_vm;s=fuc-q!vygLuP;`sk^6QXvvx<$c%d6e-Q8w^s(f3MFj`( zvC6wZvqW-}U=jgrV_k?(PsHa&8nmLM&VN8 zfWSiQbDB^bdo;Es!7Dwdph+T;wC>v6k*XM09^PK1Sm9##Y4n;j8>bS3;mfd(vMVAA}cN0^;Xz zra-<3yYBYssrz4E*3*wXp^wZzUNw>oGI|-n1zl0Cdgx5VQ)6Eqj=CQ_7-4fr6(T2* z9fL-Zu5gn~X)^oz5m5Jie;NscJ@_iP1ch^v)j9(^NyCGGfVShxD>hNwb}itJdXxJ} zgd-`<`Wev8_UuM&L&UiqJd63v*w%fmivW6BOq3BneG#9hmD63nweD`i9R{_fBvhZO zcuGX(#|bKp|1NFge?MOt+pDMG|1I=^lK_K1Cm9YEx4oP~8tbQ!A~!~gF6Rj;^!R?s zkOP#cxt^Ua#6Sjqm+0jD`KqXxJ=hZX1?Gdfm=8Xy=YxiRiD-+0U*H)KM%4nJ*kKGZ zvtw9FKz;HX3t1Q2cjdT?Lz|XgTW)aR?u|IyQ66jjNmyY*e6_3(3pvvP%_PYr?M+kH zb^pHAz^k!Me=QyiCU~^j2+xgkc#4lW0H!|@LdaI5Hh5eGNg(+tjdZDu;MsWe-!`(1ZD+4rC?P1r~r4n4=et|$Zg9`{@IXynnqhmPwV~yab+^2D* z7toPC$XB%1bH}YQ>ho@#w9a#33&d3_jA$m5YUnL0wX(J2q>$oELP6v`Xxy{Ow zU^Ak!IWVUXu|5X-Rajm<@9=Pw_Ui3R%Yj#~OgvE^PCp$UHwxChRy0EvAXDBHaFwFs zVhIcflhRRF@neKLxr`IA$@2eIH~AWtb@UaPy5Vx)`%kgZ!-E%{gSwv=!aMuVx=XFP zhXUW&%7b|$X`2>)q~1Y+g;#Fg*H z@?BUS;PO*2R&cMys+xi^$p!mr;&qPkH`Ow%4X2VnYiM6P^c%!C9J_GF!jJp*>_a>+ z4Jx19_<%?trxKNBb}-?br$s zKSv?QuI!&|MPOFrmKsF9T1&oKTyJYarD50pVvOK$|K$^)Moy`4=u(l76CG_w6Z3;H z|A+!k^b~s`g?0V*`#4;KI3Zb&p)q`*uv`({sZCs&x~}|4YR%E<$-7wq4U@~@p9U!F!|IeEUK%Z#*m#! z@`@rDdrZ+J1ax9y^$g14`|3;SR^mt0Zxf$HI(C`D#x{IS#vzER;|`L{09U`9Ffa2h z*_Mu3)8`K$hAx!e0|T}POibrD!5xjwHAjc5%>M5BAKCrslRPiYsxF+|(Au^71N_ab z-b4pTF|fIp@1dIED}#NoW)Xj?;SneQys$gDGq1>(GZ9S}+@VW-jj$}OVAR|xhNTX0 zK9rWfC!x(m9+y>ZvEj^orq~zC$~sh{l{(`Rz#eq5QQ$4UFpKMPo<^!}F>Z`i$C9C} zXR@TwL%0OS#R?sTLQRODF5t)cK*UQZU7dj&%*@jQUBnoPcELuqa;)I#)alwZOm5zMvxt)x-)7V9B@nZO;UfSg!(anVq;Z0hm0u55*YW?)^>UX zXI-5%f+G)6mHURm$D32__6;3^s|D0izM*hznAid}#c$p2o9T3M!4`zAU(* zVOuAdSbz{e>!SU*9Z>%$mcwy7>L1N=48t1i%0HrP_tIi~>lwZ|_@3vLT}L#mNyno! zjC;@Ux3N2KTd!&P@GlkOn>0F__;DJpK65S1How8V5EYm!vhGpXWKh4Y8IQ!iDy!ee z`#=}jyB94P6@0Ix{^MeFUB{=C)$ivIyvN_P=uvF9^Yku@(TlVw6BKRBz%Lhnx#W!0 zQb2qke)3h9$xWU)9ngHk{*Io;O?XPlUQU*%fB`j-GXq8ezV#X_D0#UKf3f*#5ll$z z|2sy1o=;n03d>Z&wKnhu*cwG|2Trjk0Nb)5xxec{F6K#2{5G8B(x2G_p)zoqUErIu zQD8X=P`;oL#+NR%?s};^uFzR_p#^N^PHCkYfxd(Sj9-D7!$6eI6X#3xh*(iwCq{`@ zsjm^VhW(ua-Rk$@t}c*{j1q?d@{-^V3*z7hP>chQ2Gn*jE4h*J>RYv0kHh`@v&-Sk z5BkJgU|PR*yxkIZM4(s3q3ksXUXe5wIYWwkd_4*bied_R#^j+Gtxt%V1$7 z8MgD!*05pWCDv8FDKWll`bmNbqr2v5t7`{}kN+2tj6Px%OywxRABds(dZ+6^uJJhYPqBr6IisY&i53qIG3V6JI{!s~BuK zD!5ur^aGvnSPg;R`4j__DV#D7Rkx$AtUkD4sRz!$3mU{rf5)}pL#ASEVQ?)dSqWFg z6i`*q{q!&6xL7*cVQj_tGg6sEK+T^CQ$OKQt)Ks{@dHe7f(iV9n$*uAVjfV>1C~Yz@Fj$Ph2Bo?v){W z%oPJfpM?15ljFcb@Oh!bxqAM}_+af|5UybWB=BMip*1&qsz;~#`qCuG4|x6(?9Vhb zq3zGt2y6ZJI>>6;pS8S(^;K-l9NL(0#@vd<8Dk&D?8^*^dAvSN>`AUJA|B-{7&&oDoV*1s9F@lP zUwvU~Yg$@OFBya3%0|fRR}L0$u-5Q-8lcvHGDMQU8%r{~(XIxSOX(F`{Cd`z`L*c01T=2|=C@ zYia7Oxq#|~ZTN)-1=#>O!VR41`sE9JNiRhA()p$Co{UvNLcFiS(`bvm z0-r&j?wm)8X`qt;Co&?za!>PIH=^J zPQDJ9C3{2XXJZSs$6MkCrr>K`CZj6sYWby>JdkGa0~>&QT_uDa2!P4u`W;#t(u^g& zcOT=DR_aE|(wPd>u6(4Uaw4o@@6=nmdtR(Qq$5|AzU1#2*ona<8Ms8C^zZwWlP@^X ze8EexKJJ@~`3d6yxo z?*GoCZh`#dAJHw46vY|~Arr1bH3`YnVgk7|3AEIQfsn28hwF|Q+9U}7ofpLqY_VH# zV%^W#{vClluJJ<7hvet9kv4l@;RnoCVI7??A03!|p=rU_~4Z!lJTAy*wAVgIsREDfs0qVDK3 zv5}$g*gwxa;faRjb!?-SW2Ba2q>5JW6vjzl=cQPuS^cHXS-DlrT!1}dh?fBGoSEyt zVrxn8yTx6|7TksW8B){1R2mhGs56EEF<1sVhDIFXcU)TwE@#xMS)bfeE0$;PN<4&# zMEi}~vp$jDKQ&n4?1Cp@+q25}JlqQeCXcGTOu zZ@}Aj&-;+EsGyvPEd~~jdCD*Tx&04m(O!&HIuO2VC=>OG$oLfbHxTlO@CD2V)cLgl z6UYg>K0i+j$SNohW-~CkxI$%^De2%7oNnwCX8KbIGsyW0VCGC>rjnSM!aDK8r*?1! z6L>e(+IWvm&YXxB|LXqn@yHjk$2M{juzwGgL5lzAf6cb--xElO`t4JU{ab15U%4X0 zPus(@U=wODE9|Q{`IK=BdxGF%G>EwT3*6 z;~~X@6C~#eX1Wu42PfpOz(UZ%i17 z$8c~~=MIw;-WyZP&mI!gdwm*@T;5X_ZaP(E^5Q5)M%{O0{H_6;&%-2i)k5ddgD4UIHn&i`N1(cxC{!8$;G8GI0pC~17s4bMXQNlKk>^)V>EuT zg&&iU)cAeY(4UJG`+VWso%mf_eT0QyPmekA=*7AC>P+GzW><8G01wF{_uS zLqtHahFxD>Oe+jKcj@J5KsKc&GZ`Ozwlx`7*Pd@WEA!U_<)4U)uf;TjgKr@(un$Bh zg!R=9uPvn*)RNC#gVS zGpAX|d-fuOJZChg!Qif;76$G4yyzO)#1>OFgsoV0E;l%Kx~L?qKBjW09*ZOQ$8k%t z0Mz>DRl?x(4{0<2$DHR=a}-l^0Q=Y*4cAS#-NY?|RDs)d>hvv|ui!sr+^RT;Am`~I zszdS8;0L^AP4E>_=%Who9lf?h9ehO_)Tw90W6z_8-Dn}Mw!-GRN^sp26S|`DyZB5C zZ|t9!IvUCnBOd!YWPU!{pvqRx&<^k$%4>5zWHMUpCmKIbv!e<2iNQz}M;COMEK0*E zMp6N~%>CbK<|BeyRMvYML6aN^s$w@_#TZRkL4s+_VD&;{M)fUnqUFRY3oVyTu+gF| z6~jqS3~^v2rafb?O|u6|p5hih<&p57GiRczL8mhcT2 zK*yi$zXA9{{O^TC)>1L?HqgF{_b(d6Rh{8L99c<*pt_enO!Uxg^N=8m_D5t(yTi-G zmtb>Af_w(AmJ@k-faviZnpL!n{$is+*gS)ZADnu&mgQWvnPy|v=La}X(F>1IQ<`+s3kO}$lSC>EV> z2{=8zpCf{k><9K?V5|@4n?B5Hw-1M~4=^5v5$|4b_u=b=AN%4GEr>&RW)Jmtr8hu@QxX{i}@+&RHfhJMjDz$W3XGTt3)Bv9NQ3 z8exD`zD$3$MN)m9p@N9W1cky;s%OF4B)K{^0yO{qK#VnPucCaw@+=ZIGu6 zG=BYtd9!}`rU;EoaEZpRU}cThFD~GVqscMFG-Qdf5+k1bXk&Q32sGu zXa4dF&Cz1D$ozWZdV|^|{S6!o?%LAam*vwb3sE50#JP}}o;QSBy|_e&Km?b9SaGX@ zY5H{szP9z#kgJ7nt4F8cTQW-wo9dZUEmS6Ota`UJHFr*KIyn8kifq-eJx+g#TsF!p zbEDE&(+YgRI#FJvyN{JzdhPtD`fgxF+J0~7Bk!}exRP&FSAArZHTrfThHTK@QMQeoL#V zTjQWjo?ohyG_1qXzNIC;T_xathl>;3sD81XF9h5Zt`cysK-_i;gD&1+5&nH3-vU{! zqbHEMIAMLzGtby(3G@Y!+*}rN&G?-36-De{Yleg9gLq{On$9vBnf959uU7j9YG7^q zwW|i`5CY`1U(@uP4tx{i|0^~Bk4y=!gSyY0Vu33BujfZwN)Cd)IzDZA9qFt6uaLi# zmr#6k+vAM0g}6{nQo@$v@#DA>Cy*&{(gI1Bf2NUC*`$ttld(;8_(JplQr=innYux{ zZ#f9WduxK6f*Wxo&Ap48g(y@KT#q|835|$5HtN6PJ@NCZ%YfM?oX^-AIG=i--^txpv->naw0gZ*9an5?7NCYneCWfjX2rDG6gmi6WmN# zyW)J4N-?(-kMh)&#RlyZ+khCE#PAUWrdaa1rFet@c+4MW9*q2!xIc$|hL%WVY`Mui z>eG1X^W+-CpmzdS_AsOd_LT;g@am7BMqmbU(Fy1((P(SEt5*mbr{Ln$dY9-Im-2;R zFpn6#?=r#QdWLap4CWV+Gni)%MO)+Teu$i-HEDaUm~yJ2;17Gk$XTfrYJ^IJSg3++Rf>YrfF# zuV1e+d?7I&vB798TJU3S`|d9307vLEXu2f04tMNCys28D-potDZolP%-Tt^ZvD-_( z=*<^`-LaPnc0=c;z^=hY{cD%H5-^neS1rMPAj?+kT=)a|cr|)oa;wh?MZ08HX(+QUdo~{_40#DAVpVof^EG%jN zWJ>*KxVw`RmXRnA0Jl#bB_8S8Q5TcoR6j!hX0W(1_11P;drQbxSXZD ztdXucid6ap3VRGrug|N=`HpxanFA*#?N;*{Uuu$Hv*yDnX7)}PISfnV{7b#haYF+3 z|ANIKfer+=>NYR>Q%sH39hu7^UN_UgqC@jX)`}r5$0cZC_iM(VncP_^M72IXg44HT3=d@-vr$u}_S38qSgXnxRT|Fy|EKsVW8nU0wU3*G8c<)#;XqdqB-or6(I` zYX8>(?3#D6Dp~FL>jdrV#SgvqHFDigwXan2RkeL}Brex~f&7#0>m#+Vxc(PjV|<_w z?rkZ8v^TBg^r{GDU|?)tG2R^C7jtAYKCn1Gscq0r-o8o{a0f0yH<_my)0p9#+TSi0 z1(@@F1yq%Pd`B$uZ`D4~OOvQ5NLr(X-*{Gz}1}9%ZkJspqAI*I7R(014x4Yhql3?*;zZiM)>UC zZ6hqMY7V;Ggznw$6I|E&he{ceG5%Rr>6_=S5KG9zC1?pZXvRcl_?Ga^9yD!QiS5AyyJ22HXmph^T#sZH--By z6;s%Oh;8SUt2%{%_1ACXWFY?GyfZET<&CSe1l9i+YX6hj{sa316vG(1J0L6AiRZnm z4I*5s>t9P&S&{tNwu-Qd1bdHuc*5>#ma^^s^O948{qv9)MMzOxs`k%Wnw8Bgkxv$T zty_nRe4b}uwXTkwbWgy1-pa|x^A5TT-IzEt8! zBkQY_%E|2Kc>W>V5zdE>*`X$buJy(hRsez3GcH-mRPTYUY-0tyy^UId^pX@(6w>Yl< zIO{oKyALkG{-c{_bZ3Uo^tCy{^aE%81k+ys@lLAa+SGF#|NQ>L#vjD{54WRhmpR}> zWW!gZo9c*ETy)cjm#knUf*s=s>q0OAr3>Md5D`vxo3`56rYo95NpQ8^xFYdcimQ1Y zT!OvJ56?)(zj4vt<-8~*m7Lp~k~%JaCAj}}ij$Ey7ZuMTdx>T{7d``nE^!|c@l*cp ziF}CqkFSsOzl=l9XDZeLbj5&z#9*Q(NBpv_=m$e3ZrtjevT5+56(-`0Wl-h|^F$I1 z+pTl%&^ByVMUt!kCIVZ7OHh)}X~y%+kbe5>!6M1id;PQ|$F&GZQq~rIQA#wPnZ>0} zPo7nFyva(2*yqpMpFQ#V_L{d3wj*Ph!~~zmFP^L7gS;Vo z24^#Y2q^WxOByS`-u~JXe-(b8#HGsq+EUF~#vE^dZC6;BZkF-WOb>15m=@1lz-3$- z0Q=*U$3Gn(|1~cz{wwJ%>evlmKY!MWAQ=A@dI{`jhh94DEgsP17y*SZP}c)j?q*J%%z#m{a< z9;PIu((qjEeNU?W<5I=`HREn(sQnLA`|t77q8QM`iGrp8Mw*!^T;X-*0M%&xZ~3tk zc~+h4sDJ%W`={IARB37S?TWuyi}|nnr#w2zLUcfKzPp)8-)ybKRv=^l3BZZ6M*rb$gf#g5DrfzRMn*1j7?Ne6nYgrP5 ztnoTebNiE{xI=IaW9p6%nd9z*?nn||g9b=I{NCgkTGI&Ayin}+qvKVDp=KI3NDwLz+#om;Yr$1i#u*->1`se1 z+#$Hex|KNnyidUu?5|cocK>*RY@t9~kMUWkDPOL#SA$Rvss}HfN%&mi6j2X$m`lyC zpA_BXO{88%s9vl>(N3WkC{zLzsUZmZcnvKDj)ZqS%p30IkOJsT!W_-L^~rd3LNvP? zI{7(I3+X{0h@_~xzj6Spn*k3D;lYXU$tu#@=sD%M{V)4+lGt^X{jcDL7sFqw+P4!S zy0V)$s&l4YZ#Au+uy*}-Fzng2-SLu!;0M7hb;6;P)S%Ujci1g2226_?Ut5pUZ|xub z_`1J6EVld%F4e`?E!FI0%=X7W7m8Ik>s+l>=Yx=NVAsnGZr~K+d2wh2^*N0&04Bp+ z&81Y&{m`9*@VMPBM!;ks{_bbQznmyOdc}J6+87(Z_?TMg$>XDMs!N)Jo8;!!`i>v- zH>`^a%~j*0AEFon@u~5?jZ;2|AdKbM97|GGsp$ZcxW2kB?>AI?mbdIA8l+hcrCFjB z))Q(2z%DqQP9jkXM>O}`T#DDPGB1FJ0zZltqdv zVLKFH*qn+LSW%X@?g`^clXVOBir6y8>YN0YvkwZFN8%M3r$6i8tJRPmvs1k zVLpYWp$x8jgoEF@P8~c0tG1eRAGQjUO;XWzu%cgw)sr}E@&-IB;Kc0WDvh=}W zLSHir3!i=)f)3EtI=#s9hv?;}{CnK^#p*{)rt0`o<4rNXq(R#zp z>RIxTRgdd`$EYJ#<&x02@k_i~q(O6}qHSnfoPs{9VHJe-5wD*!|1A2+z@<9Zi3UOzC?_(KUk<&vZ4_dWH%CC42~@bmiL(40F- zMsWUay9e$;?fE+ej>QOZV5ct=fg>mvZJ`T=%~s0bQ`!ffk6S*6f8JGz@2#M_b1xeY zIS2BP-mai6MH2V2v2`GuYeE1}c#_zsIf@lQkI(XGl})5T{}#W0EbpFi?EyXpomBJl zgbB9*aqUv}a5}y^ZhzgqcNV$&fY-axrFJomz>Mco2Xg(-_I1h4mWXLI$0az;XrLJl znIY4R!T7c*8f;;kY78Ry!kO%UtgdmKIhfCyR@MDa?5`icKE*Z$HeztvdTdiJ27pMk2@L$=-mp{ZwC14-lEf&dq zk4w-#Dl}t1GsHelKT8C1b*pLx62Da@_OYb$aQva@Xr`&=b*`CuZHB(#C+uUJw*R3V zANuj3(sr`g^3i~jTds<#|E&qHRX+Z8LACU9qW*|Nde${h#4FXhR{#3=`#SdO_ul8-*cbxxY zjnG=+#1+&U+Ip$Ed5LY@Za6Q_n{vQ|wuNis?tD~yc5WTM+EyWNUod_k<6f$&PfuJb z&aWnZAWiezGav1ni~ktbkL*dcHD8!YwaKs^$?k2rcyl&ee{fneiCpFV`R)7X*zc5= zW(d)>SC1qaQsL)A$oagj)+4lY5d{IF0m z{*8-D<-9XRD!DDHl}gb6A9YgU%);#DQXl2MYsbMfv%vTC7nN@v z*9=>%;~I2%Zd?<384qTMUfxutebfcd#{~p7A$6=e$qWKzEStpf*UxFc2h{(LA&nzA zKOX@OC&TgPVo03NOd%QbsG(?wn_eK@Zuk1WKU#e~$mc+NSjS|jAaeDw{t!-XbKHHfIz^s;x9F=MEsUeG|Kf}I5b3Uc&j~lHLotf&drWRxr4%rk%aE6k+0&7#dE_&oDH zJ+WKFPaP*Oz;B$#9_v?#8;K8Mv`S&W8}KtBH2XeOB8MGfm96prI)86IRzrNZ5pKq2niW64s`$M6Ay#s4RO$5`IK+{9zPv5d&~Q?WJFkqQsiW zEbLdyQPk$>CQ!tWJb#TF^Cn*Q6MpCk#)S3jTMViz#9Qg~S$bz`e|}h8nEiPV79~&E zzE1xAD|tTw6(<2AWrKOL&VTg%t7z=u^kOI z!iZyu#W_Q8Nq+zBVF_y+LPloslLsp|Ce+~hRTFTSX+6fSzMhrJyuyATo=Md;gF2R@ zK$u6@7AM~O1Z0M@C8wt#{Z6EtTt?5t`rU>M6PC!2HWL)CrNVu@0dNfn*VTi&gK+mT zJQQ%ugB^Hqe?gA4q^jo1@ExyC`ZhtFyzm{m_W?otTX z&B8ISu-^|o9Cw$ZfQ8%icpP_`NH_PAqgcPcA;Vm+a3u+2*{S@* z@bpyqX{NK}>scw<`kG&rFr1v>u*3(X5So4B|7slI>RUK9|6SdkfrLbOV*angvOV)Zv=wl93imWJOhn^ISan~ws{KH}k~Al=kaxIu*bP~s}u9Q%uK_f$lL`MM{})i|11 zxob?g?iNm4+rPUx?(X%4c?6c`ad$g~`A2dT>$e9P<_3jZpm6;ZZjuKV_23@5_7eI2 zG{ZMN?Je*C&+`FG;{iJou#*DbLcpUE_t2)50=^j*{=V`6cP)4P^#q`a2H@IwaIg4q zUE|@F6Ygd56zi8lxDthX>LC&5Zxyb^3g=BGdT{Hn5&m{DQWN~CKY8kOE70Um#h*x9 zTL(LL0!`jRf6_?-A4P^~DS*irvoT;BWS#iz#G*g*0PCy-GXwP(_Pb2##R=l}f#Ptg zeEAhEP*cnfR)a>^0(J!NUf!RLkSCU&Dn;1{SC9_&bbll6L-N*J@)nvYH*6KRA#hDy z!Q9i8ya=Xb5)+^NW2@K4g}y6;xN|++Wh`FGPCs#w1HOR3T@`qk1%5_>7v2xxI}yxT z*zYn9UUP{4<<@S4dG}KIky-C1$o_UT-m%D&~_*fVq4K`Mkr&luTm6 zv8jNW!tv2D)&f>7><8T)Y&J_<`8wPSh`U*$B$B_O1%ubcirbsGJp{L|k1Lr0UYTO% zSWx*cRV;buM^3(PcBYs_zFeT5TMoBRtHT9OgJ;?v>ZdlIvT{d5SrNm;(i~osTJ*0r@h8@?Ap8Az!+Cw41MG z)In3)+sTt}J15^3lkAwsmU-=i$44M#EqyfVdfvY?jN`&&C+ zCrVMuw}Hc~NzCshbR)T~#hk8~qlr0EFnjx$k{Q5cig}J?gV83+Xj)^3dH6J^)3=>` zH&VU@iuuG+<#V!PRxAeQJ_Lmp_FF3jMW>P(kS|jx-}5YNV}<=|EeBh`(rUk>9qtvx zt*5xXEbe&4ol4wEf;-5^mCOLIOfef-1$fmFN%E+J&VCzuymoY$Es1%LL}Mhs@}TlM zMlmb@2+X4h0LAzx-P5UL1~8dohFMJZtT3e1mmKC|DN3Dw22+(b^D%Brd&L}VF-It7 z2{Gpg=4c;NG6V8u3gx?twSd)Rh0T^hI_Hcii-U@%$mgPqnKA&%&=lUcrP&TLsV&Dzo|Z^WCk#q zV!mM&zD`rWcbI)W%m>jtM85ap#*|59NAl-?Rz9;7vl}rx31(#nk59=A$d@UU?~EYq zv)?(`GL}~Pp6PHq5jUc^w_4o3iu?RMz z*@Bp374z=}zX3vc zU5*=5F7Xb@EiG=E;tnV7C4$@8$Cb`qWg#+`SN(A6`sepO=Edt7HZ+nPPfb%v8l}b-BZw?qR-<>V?m@aARsHW-p7G zqL?=jbDUsa=wnJ|K)y_&d{?s;uqub%W0_=vgRQ~RD&OlI?p4Gs#;a>s^;>nH@|vW$ z-`)+}FA?Hd*zfgr6q4{NnE_szVg_2!QE{UB=QX-*yhS1#!D7?nsM!KyerT0l0T&Q@+>vxRM#* zl__Q)s{pTQD&O&sIMD7=l=6KZ)r)+ez>RqkZ=^w|UoKW&jbgSVW=p~RwvETDWCk#q zVy0M3+oy*2JNd4VqQv~lVeTVlwqo9DG509ulcm61o<%o9)= zZ)PuF^(sm3U@%M{9Y2`TsG``v>Mc5f?Bz9ENOhrCWu+~@99 zUe_t^jyr+-7D6#G{$)w^50V++l_{o^1?3Vgl-hs31Dz;EDc>ciUhMa7+?ekrVk7wi zi@8EEM-y|TVD|PgB{P7@6!RR(_8C3%0f%|GrPJw|4zm+63l#H>dz8;-6tf}*%zX&8 z#Q0YVicTdnAYZ0XzUNt3J1p$|go7<$X|>;w!>vQydWt*D;y$LhQ;9oCa0mIgk{RHY zDP|+90I#;KPBad*p~ve6R4?*fg&T8^#DgS%yhwRns+g4vfO+(M^19F3}yy-z-#KOBJ^%aT^KlXQ>{qk{RHYDQ27nwQaTjE(iLQ6eX`S z9Oe{a_EF5+E#^GMe6R$V_aQ(O<6j?BG6R@QG2gHXFlrZg2KRP8zpsZGa+r09StgMX z$@MK}zG8MGW+%a{JjLTvG6V8u3gtV)!dm|uUgB6SV`-J|gMbkE-isR(QQW)lR{2g> z+~?;5_vv%V>s%jKG6TFa#niE&b}TyhO$Qp4qLlA>4zm|A-<5cWz8LOC2{6YB~ub5kkfw>Vur5OK8 zLGcfg8IUhiDBo5V)(#8L8scEbvb4%~w8OoExaE8qtt7dZ#T}!#!-;!|;CA+LB{RS) zQ_OOb?l+n@9&z&B-`w%qz+u)TW}afcQmVX;P|V%)fcYT;G%@~_g2Jn01~8dodRfdi z>htH`?iii!VLk|!)Q)gtYAEJli#b#=Zy@G4!MxDNl+1v9nL_!lW-VaVHr3nScdXW6 zX_fDp4!09=izQAZdHY?;Yglo=oeSJA5qyd9Z!-!>c$LfmuS_umgP^B)pbMlZZD|+S z5?;6C#xz&Vt1M=gV%|Z_TLp8tk13e}Os1Iatispn#Sc41Q$5U^9OgJ;E|d6=8k2%<7EUogb1Y5%ELEM-SKfZFgUx1XmG8?CrO5Yb+?dT0_mJGg;-)HYZ{qe4+`2xlWCnO;ikV|U zZKElA$AP}tm|`NYLmcKs#JpTFA6TIBO;OCXMZjEzcub6crJ%GK$qZmJ#Wb;)R;TxG zbeJPN%-vu~_M0rh6+#Q9$eG4I$82_@Q`UlAj@X8d^$%5KJ%U``o%|t0m`8IHv zHHrB>f;GVF1s3x#f-Nvt9Zk%Ug4x^0l*|AoQ_OQD8;n|=9^3BZdpP8D`Z7eRc7z*K zpqOvWS3VCYX2mRE?(0Q9*GfUrsbmJ^%M{A@JPT{>ciG1dwt%J8eg`?+3y51!afex4 zqqtLvJ4tW{`M8o9;FT$6BdhTJ!#vsi5@X8dkoTP(SyC{12GRN!w`i|FH4)Z8vYVs8GmD$ScV#VBj8!$ga+$P4q zQc!r6%m5}+OfQRReg6O4=NjsC5A%V0*kYC{<_*LgCzu!dn35TgFHmN@f6)DP}vX@EIMy(_yB1 zn4=x$6~tUtL-_o>Q2Cs$m<@HOLz$;VC91CjY`^9Dl`eq%9iM*cYFnba6a>ab0K;=7BG1vYcn5(*y*M(A0 z+KgldFqvYSSWMeya{uBmM|hZT!(@cdjkqy;@d_Ef&3+I8@}>`uxG7G2sn#D7kn}y1 zI%v|9n)Dr$LYg#>NhQf&=PR*cCAJBPO%`JJC3?mnnE_&%Vy-2>(25-ZY&zzMeNu`x z04=A3M!bK{c%ybCw-?DRNuFU*vlR9I=|KHs7m8@I6is1tkz@iD1wdaor_II^Cj^&8}$4oI(EwWY5 z-er#Cl~R<*VIq^?3vpvEQs9z1RLU6&{M0Sr_tDPeH{ZvUOk#TRRZNlis$;AMlD5O1 zo6}sg%Vu%4|My{b0{j+k%x1hqNBg(HT@<)CfqMvWT_0F71I#kT%(0+$(XV{2WA;s$ zj@o~r!@QN4mn-H2w=1)0in(?gFjsXF`IR zg5o}RoAR2XxI6NI`_^gX^--48{!uamyfVdfvY>X+28>e@cABYOo3v)F;n?WP|S*4 zVD3vNpKGO{=u|QT@?{F;d!B{0to~(&gDqfbwcnc@?l|JsQ`}(|_b}f*h$T)X?j*q- zD0TWWOjYFjG;U0L#k}5P8pSLj<{ZHs?PE%2K)y_&e0Q-H zuxh)irms0x+q1OFcaX!qfVhtz7GA%(Re9Z`xJ`-MNN_)^EOquPnE_szV#ZleJLqYm zv96e3KP5%U>n@n8@VXs0rjKIYZZUT%=7Up!d0z+0cdCymnE_0um~U8x-%#`a>=^Cq zVcz60#}Ttk-ZD$BZ!xzjW;bGX63ogUJw7EfAYZ0XzB4Rrb9GDmylGJxORIbF6Gr%iTOdShq_eVdPHy7^|X@Y?bDRk#ftmwB;bD8mb|`xj6xD#B{RS)Q_MgM z+Cdx5vOhUq7f4asQg4TOIx(9o=2aH6R59-$=BwH|v4DiYnvyWAPSKDY-$Qw5j|1L!--*3@8gxAk; zV_y75c>OU~d7ZA9?TFb@Fuy(G@hX`COs1GA7BfY4y29I&T_Ht@IoDy{PRwk@oNqBF zE9R3Efw{aj`Mkr&l+1v9nL_yEU2C9-k#~~_szo;6M0>YW-0Q04maj<#e86@%6E)nuDt=6t6GuQ zg;G%3jARBdnPQq)OlwFBy_lF09_Ftc=0IZZJs^CZZZStF<`7~I6wG!$rep@>%M{9Y z2`Pts?Xa-In|AI!F~f>EnwTR6v$u~anE_0unCD2g&uD9p(ZdIw zP6s*63y4{um~Y&yd}b+T#ROpPJC%H{m4c#E$qdMsDU|Pd7S@h`AH3PITENn3zwg5p zh(JLW&o2ZW|+maK561nhq+jaQl}R}eSZcKZ{oMJJ% zC}s&U=LqI#A5$^|@?{F;yNk7eRXcxcyvV_}XK9shC7Ouf9>k4#{0rf=ro~ND+@{2B zB)Fe_=kY3;0bZG6##zu5^@SgKgYKuKD0%&hsmQ-`AZjy+T`xDDD%Jl-DH1eSREppKd{3=lZyk8Q_&Erj7-*iyj|& zgYKvlrF^$I%=N^4w?cTmz+xsS=7q#OS1_CUn35U5WQw_)WJA7|(aByQ+0Jh$CSu+J zlMy?bh8r_hG2ggR`8+JPkhtYqU~X(qJ|C2V;vXb4AYZ0XzO90=+49;ayYjItt@1s` z@!EsDmVYk1jZYuK_B&7NUCL^;X=N zJjMKSqVj4KbN4mC{ID5$eO?L*uaX(SWQyr!F>RpJx1F5*PWLc7!&C*cEpAK=#hhg^ z_bBEK#2hD>7y6iz8IUhiDBsnr1+3cs?L}|fr3Oo@eD89+&LOYGlZ1JK)~ggz~-4$Cbm%}8bdlPRW&#k2#ZVdEX<2oLivhdGCsd;drH z{GG*Ite8WHIZ!a$`IwR!kS|jx-zB8nZ#HjCaj<)NQn<>uox^QG+zE>N`E|-Gp5prC zj?utr{o{XfSj{~a7Z6I$pTUjj|5K4{Yl}7+Xh}q?C1@XgPT2_B^ z#3qDF7N~unc~;*y2-VlzV4>_VRBm7s~_*6Mic5>gyAC0ecEy zeIF3#bH;0|i@D2US&h{m;;`P`=j`KtLeV}J;)eEdrJ&g}mI_|o3YWgY%=!DV%JQ-J zESj93HSKDgot4J3)lzvj9nQ}PCxuIzhD&h1e>ihUQr@XNu?N(Q;)#z3aJr*8ZN&GL zMeFiv_gsgALvWB-mvG@a?2Pk)!VM`aCqWpd2A<)GRH-;PDs2O+NRrbIO%l-kgAU7o zf3g$w!X-)J%m#UxAc>Up480s~I4*NY!@TymYc#GD_l@$JmxNO?hos~sgYssexLIgX zSw+pBn~OJn13&eAIq80@$N=n2h8TtbziHm2cnNF`7k_ICCwz}H))I== zE5X9WOYkzx=$DNl(uYopuiNn?n62QNKw!CF9a^X8#Mq#QEg2 z*X82a_yp7YQbcI@$9!G$+V}R@Qu7;!TJcw#b3w*_#dY*8bd1hbRR4S>AMXnB2hz|({?+q{ZP-r3>e zojgIh_-oT_yoe2l5JzcHM-ri8)?cn4qL(_Pf>AtLzRzz_+{(XAgjK=&xvDl_CspBl z>#VBa$jdO++*%Ncp{0&&Y#T(CWIUhhyE-o!&=N>6f8pQU3);Iwd5e3IFHe#!-2?J3p}C z2)vEv-w~Hz9|eDp-(aM8Q@8{Gg|8-UFlUell9nP?a<5oPX`sage^f``g{1E+kG}r| z|F7!<_%8|mGeO9}FSh?_7lVqE`9BZ%c-qm=gN`B`*hvxvM(-D}wkXDL_BF zWN2-a&m3Nxgbalj9G;X1n+~HH3(tA^cbAe+2(x zAHVN$g6Kp+SbRu>`bmRa(meglzVyUWG4o!E7s<){pOPf>J`F(t1TZ8iv}j$G4n^p1 z1Np`ISJU~LcwZ_#pK0nqD?HwL!}6gykJ6I_&iAAX7|N0vI20D&P@(fOUkyUN@dr|0 z*R!(cL8Ral6F6_Oi#Vj>4LvvGpnkM?d@6w5Y=(LNT9#Xv+caGKK^XbcyV&zLrT6Z+ ztLJ8VB1vO@@i92vU`m;JX4kR!qpZb2@zWpXoEPH-Dn5#zk`Vvg>g4?s&xd^M-|l?K zGQO))uzx2*d2l}DRtf3Rt9PI$hBA_k4?o}_%t44JEJ}X{Dg49HocM$be#p&I+?ZY0 z9^p}eA8o$^RTfEE7UOA>2_=yPe(m%F)8Yp{v?e_tb)er?*RJ-39_;{ov;(HzKgs2d z2`dxWcf}UT(~#W3o|P4?(KSRXF~~U(E`C3Zk50@J8sDNU#`E(VBlsDTF{B_LIZ!T7 zZVlu7;C}(q^)TbZnQw$<-Nd3LMYam`e%s8wVHy;_-Br1sRgMW~Zktk{-&JL873Z_w zQbEM2z%0vTG|IK?%W&Xmi}{fR)0j-+FxKJ^`Ghk>aoUo!E!R`sa5SeS}_(AFN$0 zT;ZT&oUYh$%~+0a`TdS=n7zCc8=GLh8qJ5?^? z17I!of;=Gy;z>1Xw&46o$|i`HJ9%^ zRw+l;n=S97k(<{R^7vRsf#bmP>~ZEes=@(B`ljQv)+g{doXUXDi~phi?lD9rmYDha1$FO}<>bX_sqN!#0b5#5`f(;o`Y-W8g2CF-MVl=J&x zAE0Oi9ApN{LYZ0#+9Spo`e7QjSXNkZHa^-#j}T!){t>6;!zoV2&}RAu*m~)_NCM!> z55d$~7#@=LP5sP17@8v=;gZoTs?Oqg7A+snI2_|=Q;Oe<#`+Tx{FrgDZaU-{FyxUd z#X$3}pv#A0@m&8{a_thDcNX?vek-HZ9xy=^#&^iXMZmxEij{XmcL5_=#>4 z753cBGygY6ig!}KTl_~{g<&|IDQ(eOGe{dqrpJ+{=s#=vyyxuWNw@;Flx4UpmCnr{ zuU7fe5XL91{&rm7K-Z8a-+z+t43!^-|Bttc_fR6HR>K_|anO%6e#x4C}C%LDGw^f7-j^UxSTds$b zhDtv$r(ax2Pj;4ctq|yR7-l~D#Gbo~kBBHK7EQ##+cQUDx>C~THeB=(@&E1tmvkt~ zL$F;cJn(8_ihi%GMv7+NUyl>o3BPalaQcBmuK#SN{bwl_BiMh=<27cl5ZF>lr=yec zgy1i^&~H3Vr18+Nk$LU^W>D`cM8oO}b|40+c}F+~ zZ@E^FNP=a;r{l|bW_WGV(tP4eV(qyNdv2Ec%U@whc8fyW{psTcBe~&NXa6H<|9P!Y zHiKp99{C8|Dj)5+x#A8q&6!^fOIXd_STlrf5`E3=d+`hQxB7yr{Jm$LgX1sna^jD% zl`4-_If(Giorh5C)YwCKd_{-#x6^8GbHwWG0U$A=twNYF zZ(CKd{FUy9xfFMC{fXK8SiF+Tr&L|qkZvOG`*V9q{0Y9FyC(e^x4xaQ{A7Q zFF&H}PIB$%a}imZ715<&ejjj?X?Yg4xi0Vbl*O3%kI&JJ@$tE+{dg`vpa7MgpN_!< z(ewkb>*Q{G+}GzOECgS1Uramo4Xl&0K_~v|S$Gxp(eM|fEcoHLKiuO!AK~}6oPLq^ zF8-Gn&Et>8%S{ySb-4W4gMM(ae7(pszJJ}1eqka#0RF*rFcgs1Jc_M9u~wKuLFrPH z)SF{-og{&g$%bM+(}H0mN${ex7L&^4D=*{c9L{>X)b3#p$8YWl_8W{F z_D`>qmNp*^gm`0#vHgQ_N#2EkdinMN)^`TG^TWSR!ujD170!PA;Gb`?S{^q4xP;)# z>F*I#<&N`i{s*L+TQ&hB)-MAYW{BcVRJ=BdR~Ng=`mKfT9^5Rzaee7);m-n2bb!h4 z=;l-k_EYu@@Bx$8Al>XENUY!M$S@ynB!kJ%ok!(8d$(YC${S zN6QMLWtlS4>2ucSZiiOaLtBnog|R>5#*`}51Pj#{Q2)LVP=~)FW82>J80#B^>T9mB zP?oXHw>YT#r4Sjr*g>63sM8ec$BUJ#3_#sYsF*;F^Pw_=P#LCzCBc=Aw@LNl#d>;B zdr+%z^*(OQs#isT3oTR^Ky@Zm2Z1`a#p4Q{WW0TJQTv!-@$A-fS)pUCj3w1RZgGH< z2pCbo(=8x6;KY|M0N}GanhK zL$iK`D(wD%RCyNbMwO9OsO#K}jB_(`GPmWml1h?TLtd!-7F6Nqqq0QNA8R}-H0v{{ zPpaC18&c=^bM&Q1Wwn)@5lRl}WBIc~v;N@9-&Sq;bMuLO&zDNK%ABMN)Ii)`SpBR8#~daaz*#t!V6$f9Djx5jpfhr0mFr zIqf%L#S>lokF`QY3-HiDw6cWk!gUWi1wj<2hUVT(C40tQeifz)zJ78-v#-Le5c*MG z%Y@g_2tW|~M3W2SUf3nKIXCGCHN_?%>Z6nLZiRO0Ksz&ggl09yv(e0Lp}GG?pjrQt z)-|#Vj^*4m=^C-%QNrP|v0&+2$ltMa1z6e?l}T50B!JsT&Ba_(7XtZ(QCh_Ijf&@0cob| z@b!~_BqvnVHYmTgsL_|-$k6Pz@Mx$~d=<3)5hkPY{-q4R=@cNnk#trav@x@Nk$yNV zrN0j7M+@5r`cYdw=Cj504$aC%4PtqmDyyqPO($?wJA{9ikD3x$3v`p}YN>4r8dvH_ z3izkBNDGe<;!qw{7^Yh<)L(DLU9dZd=v@0OWodCueU_y zbIx2%_B_Wwg9MzZ1We95*AdWx1X%k4eorm0{_Dn2kt)Dr;H$%6z;Atf@H5 zhtsNm_}|q&+^*`wuKm(`&Z5|}W0$@idTG1z@*{RhsxV%7v`(mSDjtl+66@YOCm~YO zY^$#2MvJixp+ogYKc=Xs?Wnv-8eSYJTtm;wo=iwQ_y<#MIRNPYWc2-=G|iH(O8W zHIAzt603>C=<&83u()sN?T0MXHDE=~SwJ<4_nMBp`x_5e3W1-M*Yl?&6RMuk z6N|EO)dFJY-!WB0^kcOeYhJaKK3u&UkU@GpFZyuxZa}{7aQws7yMffIja6$7D8&=0 ze8S=Qngb2bdsxn9h<_NK7oE?JnIkxMn>7Tw%;EmeIk+jo5N=$l8hS2!sEV_djsVeO z98nm@an_C@r1*dMmw%F>lgM4)f{OE~;zj0or2@=&23^0ZIfBM17n}^IMOFRk=2g7= zDqhE>;C%>5iz4m_x2^o!t#T_5B+4xu;0NaDDn2Wzf7559*inC2Znt48#+<6DeD*Co zi#5M!ahWNURIH(XXb$_SH~Oic_^H44Q{VJcv;EYU{M2qt6gL6#*iMY4pe0j|I{ zOTSQhlS?f#|B_-t-fvv$W}!b?yqQE_>{83j3jf(N{M3j1)Ker?q_sd&MOtNuJhMWc z=BGX>seIPb&-k?Btt-)`;QbiMl+whvrKck`uK!N^8r^wi8EokG!x%hC%r4xp75+Ut|5&|g>p4qW)d5-At2*L;B-DR92k~7uM=CeNL-ojOnq9EB z60^`q+1`|By*JQWDp~}S!l6~4w?_Ju^k~-|95^4^6)ro5al?m^*!eZJr}Ujv-h$K<1kqKq ze!xB0zF0)48;)I+f`tTZ+uV-GpY_p_tfXj3QZ#ep%>O~$ZV#@%4l2QDII$8J9Lt3* z954mmM`sHe5hvJ2lx%P!oK1{LO&y2-_~trbPlt_U=7 zy}ER|t?NQy+*)SHlIx91H?Xb!8qr}V;E(J3dvyQhKHc103IpKg=3-uB_KJo5$M}18 z z*2kB;udy)lEH?qUVKOv|y_B#Je*W%X#r`;{Nug4mq~iDiqg~45-`TNYBA)En&=bmM zc4ao=@?ewjJ4Y)za;rATi|8o=6Q=#au(!iZZrMq4$A_`$l}|3ZZmdY6{xiarZy{3P z_OoF{oIjG+&m?xsna})j(By0HsU}&L+dyL&$uPd+@6j5xy_xlXy2 z`4lQ@7R5GQtWTIV6ru(x#N9xwRKli5aUY7iNnH_ba#m`znDJ!d|7kS&d@4Pmr%@74r#r_xy^MQH(d3rp#eGIqe;vJAc@f*xaeIc-MXLl3b&XhSdhLR8u z;#fyvMh2=={Roh9d|u0~g~rEyxO?57Y9|IC*ngq+LNC8p%1E8EA5#kU(fxz-j@S;F zeK0qXJFSS2a|^GLvcs*Ri@c=l6+IxxiaOaVx>KMq+@Z4X-G3gU0!(|LJJG+fIf4T83lO4&nWYucwS)#!%9R zRd08TE+{vJJKG+K2sk3;9k5nd2fHV?%laag=W_Qkxq*f3yFRxTV+x9YtU#Xw`G0K| zKX+33|Ec6;@?Rp`fKJ@UUE}sw7l{knueNG;DB*wA(b+gE7s7=7v3~hQ!xLVCze+HN zuxLTXN1zk_qhux*;lQj6W&gE! z$I37mnD7RliFSP(MC3JH!C`&R?XS>#@w4pXE6{_?3AP7q28IJuLl0=vI^5Ehrbq4gnxCca`4~$4hmlB?^J^#`g36ZW_!z&VJetZ2V zzu6X!95UguqxEx&*TYX-811^Aeqls(!g{{Zn1i1yis$JcOfGWh^JtCjcs`LGBbHpF zUAK!LiQcgN{G6^kqTo8qt=~ink2DC){Q(q4W5cn&xs5&NsPyqsh*Mk6fhgj1(LmT` z_80^6n6Q<81|EZik6?TcAB@6zW`VB=!*@}^>$Tf*eu4wwTG02?#)~Eccq+vsLL+2CxFzeJ9MfG)b?y){kjRpmuz3qEC z;>)w3XguZ09!gkXH0A-+GB{Sd1!kDx;v?n~3G?RzB+&(nRN(!9186ij)Es_oI98Ij zO>J+h*x?39y$L*tz?Q*ruh&lPo`z@?YIO{XW54*s#lO1>#m_uZ@ewHg+{uc+$l?dy zIsy7n6rXys;?r3C*%KAdLh-XsR{R_mpK@IBsO{*Z@Q0j&^Y>y=TTwcXKjCjSMdtGe z7OINRapF^1d12&gER5^`_6i)XdqTOd{w=T%{-Y}Au5R|3bumTg{$VkiGfW_wnV5$A zP|<84>G-DTR)S|HCLld8GaMUPpH|jlEgL6H>NiAKLWa$S;25u0V!i{ydm14q*q+k;o`GW!mr$P_1N4AH%)@e z$W5seDM^X&g+5N~zBQ+zU!sQ{j}bB6szLBiIP*P5)UOeft{6i1mM#tS?jAUYT`e{(8^PugD4 zS;&|!^8=EifE6H5?_3{J56GrJVA+RstvCa6!^&%@ERcuR{Snw)YjeGI6%D`CHPmUEF zCpkL2G#X_WydSdqL_N0-)pUG(C!0?&J_&AGW)qHe&b%OH`VTj{r30r3+1^U!x=6GV zDZ~b0(O-}<4(q>1JBDWOliW?=Seu)N4o_IgH5k*OwZ1=*mu+J^8NuTO$ZFY`@^NK@ zmFlgOqnOMrMY`}`UV=MYfe2q}u{{zrA@tb_vgOrG^Z00%a07cz>SApge>N;(C0Be+ zNh^sL9{67pWu6pzTS>Ml0J1k|M>gM)AxF+(zNk1prr89K{el1V`?3&1A85RLC4z4Q79}H{;b1KCPv+7V{VN3MYqF?M)h2I^`6)50NVvSFJ$k72`-U6|b|6 zyjwtQ?7AA{Osaz|EEUNqJ;LcuFw0_si`qmR&^2)@npcZMQ=l?)5X2p$DnM1eP~kne zi(q*sZjPa57%6@?BFk?nSV4~JOe3f3`+$$1Y<$JZMzr{Fq^uH?2kaXyQV=XoP1w#U zN3`o!DdNpKFy$!TlM_pC5-Iy35i3{{>CyF_oEzRbAF~gd0jaFG3{R0{atKm#P+`f# zYQuO$+JJks>(73aM!?!hrc_a^RkAgRj-g6zPF6wqO@$#$VQ*=q;0LZ&hVB}G=py{! zj&A6#X-Vi?Lfn6f6#mdLbXR@Me{gpS0<$=2iCva%Z2Sk8Q$lm^s6~rLvnLs7jk6cx zM#|%5`qbQ1{BMP03<{5&n%fZnTgn^vt@9>hv=hnPHTAdAViPU?zzv`_4a1nH)&^|{ zQe_ouIo=dh0(2zgI8yvt1QQ;Z68XMpWB+cIBg=1Mm`w4j{!}qcrLALK#E8~d&nY8? zn8GS_p2_u(P>iptSW<7KKTg5}L6V!30I zv-Eg;?cvbQ>PCSk7!tisW0I1fOK!(@RQ4_}3A9HlWuu+|F~ z5{3%_8C=mQ#%jXrO2qno$~e_ooz>6|C}j1iPDjqbx4_1oftMqM9uZ(abhr%%tf&tt ze+OQQKeEU-YB`Z*(BYJk)mVCioXk(B_7p4rlrN{m`n+-pJH-#o!B>u;?V?eCB<)(ua?wq?Bs)xq z!tbdi-Y=?;#QL{^4DOeakQu(5<2dyQ6wH4kc2*_`xN4);0ZMsOuoUzy4&i6`7;!Q4 zXa(vGPvByn%YpHI@%LZS#cT!WaW1A}x}^idH!iXTT=N+uV!RN6yyMNbs=5A@lk+GL zmttLs->Tq35Ij?p?t^ZGn|Rf@km;YQZJw~b|JpwA-{>3$7vI#nVx0)xB!hwSZp?{| zVY_QE?HrlzPDY~KMvrB_*{x3@*8>LsI#ClmIHDjq;{A)LXivdX)RU6i>cYiti20 z8ODcE9LtGmzbfgUmQ?;Rg8hZCB1hpo+=SS_S0S?uC%S^nKl)@QpsX7g%)T8+xApNw*UB6WXp)C&|OX8kWfFMYx8%}GW^F6#!!W3zXJhsQ-74E+?N`FCo(P9q%c)!)H)|KRU!nAQG#M*L3owma@ax z1+&j!`8W)}U3j?8v`i6U7?5%k#SQmI*5%e;B`ThY4KB#;N~CA3po-all+P1K-28=x z)bVLA;u6VxH8f`elgswhj+Ug?ME6`Xsr(MaojaZo0h42Sif{wP@f4Bm!6qEIf~On| zFdgUKNEfT$Rd~@QaN*&WZqbtFU6qv6al!fliTMFzKN6DzVseC-M;cfzM>%%K;3kgQ z=_mqbZ}ONe-yUxp(#4T~vupP+W*>iLU`oLc4D$;WagR#vgUvoP`%MTOi~03$yTQ7z zDuc?YVR){mSLl#o1=U~8NbTf(?s0?4G}jj1#wzYNAOB*EzIp)XM~UB!7Qd~dg+;$y z?c?HW2jQ8&T-6OwH8jMy%Ftcqm=th+!N|7IUA>Wp9}GGR6;aN1eo^oPqgiura1YLI zi9IgIe5LI6nLqyX7ZdG-uP9n92fqFa$Rm)+{N-wIfZE|Jt_j8dNeipofcACV^rn0O zEHVA1|BWTacS+KLrvdeZrazs4&%gM;0j$pSDa4)!DZxX#elh)Q{-UxHmQe)p!BE8i zHxrYgmB2lIC!f$iZx66mwD^6u2N-KMEL`?UO-ut2e6R`* zEFm1~&oM3x0_~vZFULhKaN%s&&N+5`_>0Ntk^QW_GJ;5`*_Dw{w9*eR^5!0O0&|aR zF!vC8bnd|+^~Jv&JStUs*fjmxHL}BFlg8kcA$;-~R3|#`KM{ z?4t|!TnflQmqPpE3c7>^ZDr_AK7SRwIuDl(j4wUhEHsy6`fzOWeum8AWu|a@gkr3z z&9N~;qrx%l(8vRAhBd}E7skP;4#!C)p3{14g54Br_63`$?mYaoN$Lu56x49B++WuG zkc$jheBiQ&=Ra$OW<5d3*zj7B%pLTh52vTG7#D94?ef7|j&!h^GPxgG>yv*aAytbKHR9%i1Iin0HMZOls8KMi>K! z7!h4@DKGz@%F30b2aDt~KR6H3Z!0-}GSA{JyYSTvSrylK%7OD9ZYHwFdSmfXCkISJ zrs0qleIyzirb{m_^fz+oUmEv&K0+uz%jx<9Txhc?%PSaKP<{qB=&hj-1L23>Uf#96t&j!SPmjUyN zmRyrQec-%BI2n?B>T)PFTE#5nq{YQ#5Sp7Fjr|TT$QcGpF-s@W2n@FdauiEA&893; z1NlGc)|)PKA@br)Y6eU2BOBq<1Lx`LnQJSKIN6GL*aloHKUmY6 z)|Z=9sAZAnct)T>hERSpc!y7NFf0Z^rL+oqiF+#=fEqNH@_KQO!u)y;eZ(H@)tV@8 zW9e`cpH3afy^k)|O$-$`!J(_ViCTRloWGd!9#c<&XhD70N%12mHEvK#tA*2%R&3X^ zt*1bM$~JS)UH^ApqWtnbbP-^$%-lHJS-X0Ps@BdWPHXKu)!Nez2CTh*bI;n_?>m{7 zsJc>Iy|s&XSm$)^BvyVawBuRG??JP(5UxkLr>j_qtgu7bY;-{jk(`rT2p_3pA@9ap zNS~tPgRV{-Q}XCTp!v zvR{8Y&fMUM5bHy;@-QHgx0A=>1}>|1BOF_B_^Y*f%^1|*2(RrQ{yX1H;JBq?Q1%Lu z1mZV$hGYHHqh`f^8oDEdY*r^hdOT7mV+4sXM!XtAZOVU(>aq(DcgU@S|D*B-V%aF1 zxqE76e+0($N7Sy{^nA8A{PzC8sNY_Pnw&g%j#qzIJvPp`J2}dVx+r}qpJYgL zG1wkwq$Uc<)y7xydB#_2EUOo13I4PuynM!Zm5!i>@s(GSAPuhMd+fH9gl@u8@=+PL zY_w?g@s%qv@?vX1JhDV4FOsLr7b0rPilSMZ6rSt_DeQYl_h37C0g*5Ki*m8nUhpa# z!G`|xM%BWbjO%l7s^XnD)_{&>Lo0SA4q4be6(KozStnY&iz_-rV~temjD)AQ|dLMGS`?HT{xUdgEy3C!skF0T+o~Sp%nfwCuA(-2#9h(Y z88;6dmM|#v(kSdqf`)53(98!mNKL;uj?342viHFLj5&rd&7YlS@MDjxW3>42m zf0%+)SaN9w9)in~hbGyFhVr4laSx@1OCnw5p)DrDhhj7FdQ`hCP&&~aEV(0}jNb^N zldtMY?Xh{{jhe~W7y`NCJ{dHMJG9{i>G@2KB@cf4Qar1c$+On!4$%{!gjlJLdHExY zqoJizsQJ6u1h7#TJfI!P*uIiNAl{7&F9Q?!v5q-_*u*QI-ioV0K&(3@@BZ{XxZ*{a z7#xiq{JyR8yItBaMGXb7QagyE=7$qh_UFl)I_@2Y2qsk7Su2HO_ijzB&95?WX5IFG zR#Op_mSjd;VJ)WoOZbeSji_NEI_%CxKn}f>Qn-F=K0}sf^C$YJ!ecdV525*F)xa2H zD?EL@X%`f2&c!DS`sFvoYquqR3V7kL4iUr~c*I9+2xgp{!iPQxmmRsVa4(LkZ%r$K zG4tJ7eWcmleBm(?YlioehTu35|M8l5yhhyP06Im1QsaRv8@6HKojkmo#@EWW;Z+X4 zkB;-SuM54@IR7X=s(@on6Z89~<(*SnF^NAe=$nGGLFGjogrj_jSdY76404xxw}g%T7)a{mdS_q&F#WZ@yt%n{VjF5d-w(&UJK{(-RsJGAjZUf zUjh9xG_fDXHW9~M$M_E;g%NB;Fm;9;L(y5#)v39)dv32d9TCNASGkDd%&)#fyYZu& z{~vQ_0$){i?f(Q42t&A02u5TG8Y?M^LB%EvnqZJ~^+toDqS!VTi%@BckN_$}@FtXN zyqdPOwbl2ueI2y5uli~Q!D<2&f>>p60@^z3xn65QEkm&8|NZTK&K*K<`uF`me_C_T zw5PS!UVH5|Z3@D7VA$p0w_!(Z&$UeVjQALepJa-YkA6t-B;QZE{oSJ%FIRbztmgme zKEf-a+25LL6M!la@C%kd@3}W4qr9Pm92{z~Q$MiIH>qUPnA`YqFV--dG`jG{(hYu~ zwY~EYeYKLzDFT!67i#}-^QEcmQ1urW|8p-tsQin|VUd;vP8~%9%ik%_<_8v7s$W>3 z`Nf?zgZmJ3cCLBaL4w`Cg z9ol;7Yl$e5>cr&sa$iZ^#DT3cT+R2dR9knNwrsr~{(lEIm%PUt_M%SldqKpFTOL1E z?4_JlerMo2zvM<$Yj>xvj4;2pjFFB^7r>8sjz6NgN0NR?0+l)>IH-dzr~R^2c@L?| zE<#>a2<)b6`an+YNe7O7Kug_dwdfC*vuhcK< zc3vG`Lt~cyLeuHye-W;c;3(al%*_&D3_3xb0X4m}>-WP&BAY5Xl*BwVM$X z{3edpp=8rShRD$;CF9d#0*wq|(S${j1xf5QItqI|xrex|k6YWeaI9}Xdmj))aYv4A z$9V@V6a;R29`6!Qz6*C0$mh1h_}q4!z)5MWc#FSWUwRdoAUIu%icQfKeiMehDb$qv z@_$9>MAw+mtQ97Lk;4kKIT8~gIze+M)CK~QU%4y{G(IAXgb(*vf-h!naki3LSQH+u znIwF@vHcS_r20kO$JVNbx3WG*4Zo)bboi{+i?Tw|3)_=f1}nm^^ay6Q5-rNJP&Bu- zWlBbD7+V4(A9M_pOK8WSx>`oi-HhP6&(r>yiT01Ad+3^WgR~2I6PkUldhj36A@+xk z!L_~lJ3P?%2MfhsrVp=m{~R#*U7m$vU61-jJuEEm`aJbqM?FbcIz5Sy=ukO+Aqec z)k;kYAU=1sy!wllIW_R1;a4XH8c))=T08QVzoje@q39LLg=!G^VaDe`U>o}fAw~NY zA*Ec^M|R-~f)I}w_p2{)fWp_<5U698JwI$eDtj+*%Ns@Nxfc~syx!?RVok25WZANC zbTZAQ*2+)fW>r#hzb6D1nw}tx2r3XmsqSe@i0KS7LR1Jl1IX& zQMDw{1b^+P){)l!k!q8^c3!ShF)i#ldP^*yRsNGYb_AQfomLWSyXb@UUtXtyI|lKW z8#%rP8kzyDU0?k7jWcpIg8Wlo*V>VN8b2`VQTj3aIJ4o|;Qsv)C^cG59FQGz=d~^v zc~)ZEowOpWgVui2M}JjKUnvv7c>&>s#=rfVX?!j}G=77AQX8N9zti|tl8lzO8#mS4 zi|Kg^0QJJStQwGUV}z;3vk{@_?@OEp!sc{HIB7H`GUBtq>dlWZ>b+tkgA-QO7h!p1TXB>rkv zofYk$W0aR@QZq`cOU^!H^fijVy6cX#aiRc8jj*sDwCo8R&E5VYT#M-ZRJ&A1(eQuCGiT@i8lER+L)pP5&SPF4+ zW1SVZ(oAA~%hyhz@sD;+So)ZG@N>||8MKYO`caxV*$r`$t#%;>rw=Qt>her?jm0Nk zEd1$tbyZ#8$LSGEA$#38TIt+34%})NM)T;CCS+{29h~(nd^B|=cT>?P6;DndZ!OOWP*L<_CZ^}qc)+pxktkWoleYR2TgXw&!dyA(ZYkNp)TG&(2GS zs82d7Gc12iJqj~*%<51NoHg0T2X0xcs|1;U?gmW~&x9Bm9dhGSQvG|0b5g!AMAJM(QBbR1c-S`5|K2NT!l2FZD0_QOu;U+*l$U`-} zhKK4;fw?Ckfqv)m!KTCQkmIRJSn6pzYN6S6qM6eiD|o*|B}F zk+De%)f@FfTM+e1TM+d!_OR)i*JVD^%Qa%vv1>G_ql~yY)|P+tx2zwr`*;uEF#el& zJRm$T?=Uy^{B!qaIUR-%l2|Um3Lkt_tZ?!XtZ?%GQ&#w2wy%c!F)?;392H_s>F1iZ z&MX^NpYd5)b`603zhK!3%qXn9RLUhqjJ|HXe=EV>Z>5UBzSCI2rjOKoMdzck=NNjj zc+xQXllHz#`Z?kCeK~T;dx%hTb;F08>N}jk z@3sXWdvIuDe9D@k*`~z$@xjNQw<$ph2zz$kh+z2e__|}NBD>d$D4!U@pZMsR%}aY! zMKA4$cjv|E9UNpl)W67=MHMLAWYn-{wEhB46`H<+^Rplf**u&`bxwG~h#82c7}a=a4I+8$HQ1MV_wJUfWs#XG zN0#b>@PtEO)93y4+IFfsk0miAw2- z`!zMQx!gHXbQjHE@{ugI)#c_i!RUmI_S<<7z zxSVMPztcS0QSlhREI^@WZ5B@%v0mm$D6$(~bHf;TO}ITXaNENgUbwwmU0t(tV6)hF z-HasPHrhNdMMDpz=Fz;nt(|>q8251D+ zfyB(juCJN7E?LTUDwUG-#Jx(*KuIk9;)CnYPot#A&OQnyiOicdOvw$dE_krb5(Y;m z|H44YW`xow4O7g6{MT2al9M0fc5T#=*(AP5ES2mpv9y$5GH|;ml~N^BI>)RVc<`EE zezTw9`p2RdsrdVOmp5zXjB$M=^&Y^?Io|4P$Y zYoKm+r`H&xW@CVMwbZ?6hH$9+QWD|WZ)YwaH@T{=qWbb-H?n&c^8??4|s?3)*U{9+M@aG zXLCkq**5u}E1nYTL(1Tr=a2A4A6(;)UYT~#z!`uo$K@G-0fln~%rxN9EellRR^!Ml zk-pSvCoU*Ohy;|a@N}lt`&b@J~9B@3!_G%y{t@mVf z3rAcpOF{LmXNlgDs0N>@y+10wnZ84B8mOf=A21dg>W{wZ0t*}LGS3(iovwULJlLBS zUs}rz{ngmr-edVJn*Z9FM^1|*j6Xv!nUsRMKS-~aEP$q?N6v~*q&ab~ubV{m#UXGeuw4tb(@Y0u3{jYScT)?%H6`JBgI;$?Hx1xydJtY3SSvVp?0yu$aHGT9qB5!BG{T{mgvy3Lc{ z9pv{}S2TaD{N8Jd6@t_ayL6pxN*E!?_Azzo(i8W&>crB8#=;h4_4?Q4YRVL}{bTiF zC$*?V=+YC`UrOpu@S-&*JfSUF$O5yv+=%|=`bnP*N`F}b6DC?Ug$rP9i2*QPX zzX7);P1;{=;aBg$uZ7O10lzI3_}@$^8?f@XSALOKevJkn&90o_!T*FCJ4+7kWgid! z$i)^S>WPK_Bc_A_qwQuY{Po1W%qug(LUBZR!YwL;d}2zqna))g#`6Jwq2Q<|hCWX4 zN}7Hfk;6&0W(Soja_EWs)W;ZY&de?LW&}6p3jL6K0ynH( z_Dw%-tdQ3g;`SO)dpzYeq`xF9qC91j872OUVUNpVFyJ%KtzBelcmF{Uu>)|mkJAY1i*p{#H%HK<+29JBy zD$LLE%BxTA-wo<43E1*`es9Z9^UB|8ie+ys^Z8$0XN1nWo_PGvlrYG# z-AqNOp199l=*`&#Lc6JqKmQUaP0T+%vHaO9Y5Hx@+BPLY3U*Mb^G{FQ>%208wdI+s zl4V{rfJo(;dg7i*8INb)_r;@;04(xlMtyWMmzDF=&BVqt(lko`TJavRr>u1;CXoT%JstZyqAACWk0WQY^9h@Cx80!1S6OX3TMzTP?7ewkl2fS; z{V|T*&hY1re+@kfW^$Yb!YYRjyr^D1NPX;Fh-rx(qm6}*gW2w02{+SuUL1yi8DPmc z6x7PXQ+Jy1Ba8GfS)}uE-qzU#);rQVZ^zqs632ICcl>evc@&E_5lis^)mBXPqUuo!bN*bAJmv!ymbi!zee4bX>VMQa*z@?USo+jj^0 ziJ=r*_?1vGjsL}KJT!bOp5w$w<9B>CO8`OQNu@tQm)0_sM2$6qkYC|3lfR*jN$FOL z!^lgCbccd`^u|oie>uGLxWI}xp$h8D%q*|}sAOIb{+2C3$w1(eJ~R^=EPcB_So-2z zi=~5_K48gwA-|y?8OmxfbqDb!EZz|8*jh!n?twi)PBIG(|CpebhQqs%;QbssX1*e`8&zhE9g zNbB9Zc-q{RbGlCD8KKi#O57KU#2qR>CY~`i6}d7!GQ-~4{OHCwbL2_u@OMn|-2=D% zMzEGc!l_Mp%iGVJb?MaFepbJ-yuIq{mrku4um-T&Fh)7p=iy*qumP`QHpUKK$5ZPj z5{AJsh)*V>HgGp?^XjkbX+n>sxY_AmXeh(!PF#>tKP9Wf?W(?gWNmJJ`)Rc~IPZPY z$`|^cL!|Cur{*_2x@9yT#r~a+cncru5s3akqu{VNjJyLlNb3oe=d9-if8%xcWrh6h zwqSv->z0~O!%pqJ zUGW;E!%i?_e@WNs`la_c{m#^G=1=f&hv^ub5BEH7Qs~0nd15LJ#EOUj6NW8*za=1b zitn)T88Y3hsN}VQ?rF6Iw2Z9nE48*CCZTYfRK($=+(tyo{&)|kgVRn9aWKS^*?~vK zmsCb4!*ve!S~xAZ#v`@9oPXT9kn@rIM#v+1u@hakEhzK1{?(iHHB|P@g4KAW|NKR^ zYmt{=aAI*S@iLw@cY1a*O$EMV?LaR%#qXyF({P9$u{4~0)40E`G+4I1w#Voe_*=0e zIYyY64rP@uWP7F=*6^5(Ix)coh6f z3?o-XO`bIy&Z&mn+wRbEY7P)gq~*Qypu_n>vusG{X^M`SX0pea`8mCd0@ta)&r%D_ zwdrq0b@B07eO%{#JQb2B>u=i8MaB-OGx}1FE)rmna>z*5=?Eh)ue8!rUZ)CVAuZBka0OGj^ z7|Cz0L!Q)$J%|mPD$gWqa%8XV!f3Ax6itA3f{HAnh|PFRImdpS#m9k1Y>s6Nt|3HP zFSroZ-h&2nUgRP7YrK0)8mo$0ynB6Ta}7H)+8;kDqgRIez;}TIK&Y0ja#Uwb|Mz~n z6PszfbCvXghDw)j+(u2zD^8V4BxJ_f_rTj;B4(-hrS>NgGpXyVylTg3fnP~UVXL0s z6j)W#lA)iQX-%60^Bowm-x<)IMn2m3nO)q-srODwVxbK>_W zTC?lhV?x#u>sx_cz@ym*Hh`yjFTwE{=m=F&;J#);q!~AIjOM7Lv zeFDX3m+u^q(B=kv+hG)@t|1VEo9B-&_65LhhiKq8wJZ2R$f`8*qFbP$Xa#e^t+W6- z+uUnSBPn1#bDsh0oE${x>vDXU8Ul2GG{^(2BI)zuO$q2)`C$R^9O<#4inN4uF<<51 zwVrx$w;(=(2kxmHk*1ff0D~<<$Va-vO<<3CRNENHq7RKN9m_SNhLXX~s+m zv;Mk=k5BEJq5s%*3GjIGP1NEajLi|8^@rw}K*aBJex^DkJpbcv@cj1IwP6nljYL65 zbH6uEXmlu+8~DA@=zzwbPfU{@Wv5lMu7^T z>5fesKx`HF%7r!-$V5cbus{?iz(lI>gn_{A89q&9rKRa0QLGFS1Cp4#;XE4n{ z$;%7*;N18?Zvkn2bEwnndFp!iTqjbZ5c3>IXNQ$-58T~~lvy6QXH$9U({)UZ>YVsV zJXxBT!eXc~-p?_SI<#4@7B;Atf`tWSS8P%U!7wsa_}=Oa-)@F7?nT)WEeebY`nYf%l@{cr|Dh%__}<1eq6>Dr7fy9UAWmpRcataRcRmKmf?6nDdbBj$bV zA8A_;10o9_vxhhu4@!kkm9}K;t&;HBGsM7Ws(}yI_Js8^X>HGZPw<%vd>&6RT@FOg zdrkq~&t)yOmq>Wa;{f&=GDFo4HSj4&!Y8+?DW|Hbn*Yl4;zQi~3Vi@2>LbAe3Npne zVBE&KAJ3~;%XSJKR|~;{_e5}{Oo7|@LFTMJax)^=91VcC^gj}SPagq5!@rB+-!Sat z+QZSbqsfk1$%g4>wAfv(3x=H`pPq1JGx1;h)a$Je3p=k5T82(kex7KvpLbuLk$#%` z^wj$frCx-S|`#f0QE4<2rKSU5MZe zr}Z#&YBPowzwccC{&*C*%xU)jM;~L;F-MN^OGh809p7Kjelfms(LkxzaD;|U@_lIB zFE^GzXfGy`#YMyk@^^%@{39K#JpTp`YW~uEafB&6a-rAxc|1D%TccYZh3jO*Pb2^7 z@{h_V1~TUN*V)cv*8joie;#GdWyAye_M24*xik~Jw zOD~&OwVANh#{Ct6AGA*5VL?z%tl@*h0^#pt)Cq4YnYgkx>$v!xR2~05A7Gv^E~|Vn ziw`zc4mfU|ma{|GuV-hyiIzCLJX+C#GC#0lfT^JGaV2rM zM_YVgW%P2+c%Rz$I0Pl7e}xxBo+LlY{spIpR3?2;(1{Cucv!@_m3-y3ZT z`=1>PE^(p`qd8O<2siU|Q)Sk1-!!!(x40yCk!w+E2aj{2=Y8ZL6NE1}g$55SiLD0M z>f?<>J}hCznRvRw`HreQP2*pWw_M>u(yCnWvQON@pG0IHP(W?~X_fZ5m;PA$U>}jP zXckgyvwL_9^y=NYqqyl34xb(j!Lk?UJr*NqNQ`760`^$H-uDGtoqCTHm@b#huWw$_L6oo+H~)7XPl*R zwV6@6mvbZX43 zi{B+k{ZJoxWXlKt!3UcF)u?zDZ_y7QEL^w@^k_+KMVlewDBHFGMv!$J@ruA;TdYm2 zp1yIYVCYO?_#(g^8VsdF<}JeQsis^yi61#{rHoyVSfg6k$A3Xt=;sW<*+R=5MeWj# zzR5!jS>n%oxNJ63xI4EmZ)IkP^+@O%B*)KI-+t^IIE)mv2%^>k@qjZRy`KzGKtTwjm)_ zC)OFue}`(;rt26`@xX-54*6>BrX-%NdFqm@?z;E%HI+)!-`YM{+H24GboP5<$?6X0 z$`%GAdzTZB(Q$5Nv@h8a59!_Feon`FZljTmv%kJEJ|ucpzvv@+F{yD23^WjW+KJBV z;0AX8d~o^8jIYI+u_f3G@=`aVrY}3)Ti*kjNQ;G5o+JakWG7l>;TS&;f;`YT% ziTz7QGC$gvp4{Ap%!%1i<(6MtWcOi^kCqnDgI+-+HUcRO!`foH+D94v(p{c5f^C#^ zQIukPMDC;5&y1{N;j2^_o!2*Q>e-`K3$)WbRcEaZZm&d*%$Ud|M#?norXg6F*;q|e z@A$q|l+f6+a1`lt3$E-un_GBQLl&XqHMtD`b+au(D_x^4&Vn-Oy5ZvDNwV(7c`{ zXq#_<74UPP-KWps6N$Nz99~zD5hzPiKKa;fvipdqq3Dd{q!KaK{|M36%rW7A!6I-E z-sVV+qd#DrML-?ks$5i13Wi@kcm5#v)DKyvMrQwORI?lv?Z0|V*8SXLv3^O%AYidT zqaj$V5kU6>6}7a9^W0{Ds7AsYtKrb;o0@lfdK@T8tg)*=OM)F7aq(IEKj*ON|AZs^ ze~DzgME^k_>;+2@w*PG&GJu8ql*CzPUDy2|^||^VSmEtoYlMSo!T}TRv7&mwD+`aW zLPurAy*X8vz#QRbQM0ijuG;(w7aB zeuaPfqKjfo7Xfo=fFWqy) zz?%1uzb^5Stu}{hd&`(bl9kyzl)F`5udVp*yYH=IzOhW7VeS9Q_thc5-LLI--C|Ae zWP~33waoXN#}mc4VVZ02hLAwip0;o%TyH%Y8CpNeaf+XIW6@ zH-*>rt*?p(iLUDvDtnTpH?lY0-;NLYEO-9tRne^asu?IWr)7rdatB5}aVt@aZQ6J~ zCGM=}+E0rmOzpKdtGH?If=CQ~)WjKHz$L zIFqrq$eFPdJ<5UaE;L@k(ZM|kNB`v&N?igUqKdE#I?~3@*x>Zq3tx86W&SppFSeRa zdmmZ-#9iGEcf=MPm4}-CeYrCg8&M`9R>3SJ%p5J$f`Fcc+9#86h&J~v69?hLt}~PG zMUTW$Qx>aO-O)Oz{smSXuZ?5)otjksn8pXC--CLdRMwLG`pX3^WPcW;eNI{KT<+_R zF;e|n+93)cW)v2Y?eK@g+LEMfNTKK_Azdm5*;*7$nu+vr{z~PiMtYbf4pj{XP~#`mlS%D%<{%ys zIjvv)p>DN(A0?zUW3B$gPg|GAk9pvm(ocR--IsoCx^syBPc53XvO2I<-%+&rJ9Ch%S${`pAuShv6%G9=VwI+JAW9nE<3^$e^qIR=`};?cziIGQ>Lhb5_A4!(hzq3D$d zh;8m3SkXu=lbf<~uoAuxb8Daxjp|TlU_}kDDEof0Y}Vw!>cPEdRsKEe!JH?j4=q`AHEj>$(|?s>52Jcbm_O_5l5u#l$`4jgpI2`H~BT0TBV zii*Xw;p;&0gp$cc3nHSTJ!M@=*CniQmv_~MRPdeJctN?X7HdK7r`&5#_71!x$8t^ep&6*&}aeXASa1T+6q zHG7NXc3xG@e#)Guz(?W3L^Eqy)U+9avFq&vjTsk5`~DbVmXr|31P>@zT1FlFL1?Sb z3pVFPPDY9X@a)6Zp=ZNj1o5PRnN!&=iPcP7?WiKtuMwPsb93$3g&ka*ZJKMtKm%-w; z3rQ6(W28}a<$pT_d&jd;eZ*S(;9+jd_C3y>B59vCdrM~qCY)L{6;C8&?#!3OlUQr; zDl>~1YrrWoG}&b!#jzlhbYmzu{8h|ojHEH4UnS}UYsef=RlvU3?i9W;1o1bT9saZN z*SY)knhbaK>j%1Ki^&bLd|OL(zDBvbWq;SKGPzY2g`ss(_hWlF4dD~`=Yp?wlK-*M zo&)DEU#n%Yt!_kfQ|`v0%^3um4iOa=(*1|I$BS!1!R7cb?*7mST!qQ~5?@Sg7x2?I z0d7CP>+$b+eKPxxQ)oX=vKKor{g4eQYITQDnY2(m}hke?v{Ug1iLd^bZa-&F1Gbxwo{C;Xiwd@QNWYtxqZ;WuZL`) zcc^T0-IdKvW7ZAWU z8K~04*B(p))cS7!UCvstoHzJw7FZ!L@d{>Ffjjs8BPLdJ?5?Bj98%?vd6xcYKdHZC zLxz0s-enYqI*+5e0Qn=(uoGB@njAbKw$zSxniio^BiBt3lfVcZNTvnL-di#(*pwM; zx-uu&6jZ=Z1w`X-cFe~VF9|hG8$tc5<@luiCxDx01CjgZGEsOnDxMPIX?m=KJ z{8l?nQ|QN)h`%q+U&?{>*`cPsJh(b9hidckLQPjfd^eV4)Mi&Toe=LGlqyL7mf?b0 znO9&eY1?6x_FsJ{^0#EiAo_w?7^Jlrjoy;{$a&n>(XkBEb;{=w4_S5H>G-d43VT%~ zCcS*|J~lj=OUtSve@0(_ZdGP1xcyKtb6==zYhZ=ESj>x8vMz4w+sBlzLZ8zTio9DD zd4pv4@jtLg1j0|z2POY(eN)E*U3+GZIWp)zJ#BqGJJ>X!Z&lNrzPOt#?weQDH26$D zs_a`3iq7b$Dtm%oEAE_gaDhKOt?Hn&y?+3at5=m{-&Ia zy13KiKyTFq(VUkf`)%t2lzwQOUd|?fE3cruVLzT!9b4m*Ejm5@7$-0}ayBSyTQaoM z=XGz&Ai$XYPm|Xu+z`t5EN;;kt*_C-)%^<^_SC(V{KOs0WbR6{X6K*I=O}@~Y>36l zI7<*>Q7wXxJYWO-qTVk)=+n&e$Gli^D;Kz9DZ`)w4eN{n!$eAWp|p}3aQU{1wNf^Y!o=AGs1_hMQ?*jFTs>F@p8YaVz} zXTe~P&C5>un0MO8!`^Yjw|U>)W_l3FBk2j>2ad6UHM*B#LHFuU z^P~n?@)DR9j5N?t%SA;@Y?OlOzv{~t}p(j_}rbm0tua_nb z!;Nvb!*G*hVD5+Z+*Z`Wcj|$@R}VCP-RpbZ3k;@1PqLm^{j|E(Xw^R?V^Mu6er{R4 zNAGcOQUXNye7Tqry1ynbR0z5EUg{H}+-H6tHX~N99oZlyBUWpv{YkzCArlcLTg;cY z*{}}?dYe~LJyXe-&98SD7E*4xJ6*-8YY|hwB5-$$ls$nEgt&Vwrik%MaX4zodFqmAlJ!dj^qb$Rg7qFyQ2%)g<|>sM$fnCU41ZmR)2F& z>UN*;q|Z!&eo?6G`HH}Q;5RwonBcmUdis+%Q56VhvxL%`t}96v3M#V_d(=;8^^-Zq z|En*gt9m<-wsacNPh?i;&W)umqJlty)j|D;Gt`csuP+^6tHT4bDZmOm+zuRz`Af)dERk0DM^)zQuZU+2-2P*54;#+P4 zldRbK<0a}go%N6GRAb=K$S)P)gXh%!PPN=}3nirvo;TNtP9Zru{zFoD*^|pSb0f&1 z5L@S+?-Xz4=pf$vhmnPbKjTFE_B65ziMw7fNrsc1J=zdp0lUx-j|1Fm7_D@=8tal{Bz2JX7Wc65cfb4ZNv2Ui)r;5p!1p`c!Z zeYb_%doBD8!|T3eVAnm;xDc`Y(}@`50Q73Im~|SEB7l!piH>UP{5iAmOE1zX&hpm&N8@-6M_8w{g;SgN;TLGgm4W zK@w|nyoea;x&m`t+~3kN4)9!>o4-{AR<%fi9fm5euAicE_XD*Zv0M={Dvd%dZ!2k$ zH#_2kJ&3aAv(%doE#Ihqnmlf0`vOsI`k>IhIXF|*b1fWB$s{2aIGiOu%Tn{c`;VI} zF5xbEg8xCG5s`;gaAY1!KMRc7oD{usTSfSAuZ7r42YjyzAFJqqDd=CfVO`TwwltFH zaC7`C*7S#FcR=E4Jeah9(7W%v&SH+~Ie8v{GkhP)$Q(nL>Y@2C4)48~UqA&Z+5{aYuAo zBLs6rD=4Hj0o==Pw1}B2X+d2RZXAmnEwm*SntjCFd$X^GQ{%VU`okX@Je~DO)r=i1 z1oKevZbQL4E^zzxh~)`T#4i`^;t95Y3Gnsc6R%)@u{H3W@rXOY;$6XxEgTT#*{DpC zirqFOXON14A-`B}b7|f+Ahj)5hmEpvFY5l<^Xtcst*Z!J>? zjSzLt6?HBWDq=sU9?`qO3jmUbcM>mq%`S|Xg6*FTFStdYLAnk3o+hdb1t#G&*an(` z{%5OB2kHvVlE^gU`lrk|Fg!^ZW;;?Vc`yaTwF?s%_FR9;ee?ndGyjt4oi-_YjhA1u zLiqgxlLh=T56`+GiQjqP*9TW@AU6pN2mHt62lt$OPUKA|eT@}5cBMrl$Xx~8w zjq=cyqutZ7KkIwYo$J>TTgMagkq$b1A3Xh9pG00X^ylu8>l>kSJIya3-RHJ(*(@yQ zShjrUD;m3R5ROGsHKN)-E=uelXUIUf{2e2=!-9<*4+}QGFvL9Ovf0Xr1*Y$E#FxyI zHU345f1wEpXaWr;%Z9gsfr*>`*SB9#SMGF?f`L^ivzGmjzeBVK>;jbiu?KUY(-sS# z*qPkaw^!Aj*HtC#@2Ex$evjBYWlu@j*@?&RrE{jzq2iI=7*%!rf{z)guZ6d64BBQs z&9W1WD0_{T2m`R?8wE#}h*w0gw?AOuq3kuw57%?8CE}V)4m@WP!jjOPyU)~GBCXN- z0M8*a&R^7&;I7?C0l$-?*RweMtJlJl?c%V9#ocVNP@HjKpAcdOA0irIW=2`R+hRhtZB0@e%@3H$Q(DZBhg64(~Pf zq<0Ys5F+!s7=ag)VsuVPo#CK&$R((afPE_?#sTN_JgEPJS-|57Bj)-}Y zx4!N)_V2?tSejlWn5;BoVrfm%wkF^av|SvEo(jVy`P1O*tD@7lVFm0PxLr(y{ z`Bcowdk}cWj;af4RMU>211Fj_h~60<^Sa?Ndtz5HC6rFdj24P;8KU;@Beb-}tNv{$ z0{?G2Wlsj8Pg|rEb>kS6dalJ# zYObieX8$xPy0{2l)6r`o(Jlk-s+#dSyk@F+O+vf`e(l+T+vgh0c;kA`rYa zk$H&|IJ0^O!yjhWo)U^&D^VVI8FPH91_nM}=2t9U^cmZ(8@rfv{M*6j2o-2mBuNl> z2#&YQ5n^H}@@nkorj{K`lut^6YDaVIyF4*NiG#q0Ox7x`$r zdmoozXqb;7V3WX*!N^}?i_v)en=q2XJfEc@!#vZuX1SO}z3Bvj6;kdC ztCM{5puX=c6O8P{H)l2nmmii?V40@}wLP(q3>?wnTmF}uc=3i_lx<%)rEA7H*fLIp zOj6<-{u}$fN{ERjE4i0P9!mC!<;CvMHxl=^yQhBCo+_K-Kli+bnh;Ls{4-tE)X9D$ zE-Lyhk;baji1`Z0!Q7Um^A{^_W*o!F6o70sJqFkhf|c?YFc0I7G$@AzfjW0np-lYk=qb)4 zk$2^~5^VkZIaSfAV^pM@8pRU>KcncpOlQr>!S5C6|0aXuyUzA@iV{1_+p{jAv3bE_ z_NAAgyT@OzaR&F}oU zOHj|eMBv&5(JXw?+mePbCwhJ+IVK?@r)+cJ_CL{6@(DM2t?eHNW_$%0KA? zfi0SU@y^DKiA{rl5{#Zl@Mt{`Aw`{E^CVXjM_&CCPGcZDI-uv&_B%$xADiVOw_D%a z4~<`TG`|NGT@W4c6DW})$I4qMcwoI5;+$0Alc>w5K@^i74O%Cs7ixP5Hk|95Kmo@D zwI@+vQdcp`Cz7LlVO~F#S&AFV;L%QWdZsgbt0*A$Z6>hw-g)3qyLa_7t`bf?Kj5ZI zBc;_3OF7R>hPTaOu158T`8!uDbB$S!+}gj0MaYUH^Q)QROzBz3OW0Mvid~g0e@yUf znwy8y0Lc>?1YZ1e4hO=ERXtRL1r?Vl%-v0W&kPY@@h7zczraOFO%+Pzzyel-?$w>~ z%@4p)2BB*M#eQg4Tt#gf({((e2dsy9WU(mrrqQeEFk$xk*v)>4?()ton0!EBW7E_# z2yEO{P>qBT*(_AX4Es~)+D;RYE z!M-IoGIZP&$_t2eoqrPnM^5W23^`QBkO!0z+fnzNTE`?WFD0=^bK0^Q@)mcl?TSBM zFFp#>JRisJPKx;}-x0%c4q~5`UgDeXJ zx2H0BwNzj%3#|X2pdYsMBfBI}sTch$68$Wa*-Rc&$Iz|0 zLS?3kGI3-&?gkv0i1#=!9rlRR80JVLmh6v{J5DZe(IKzakN{flzwRaYN}JsZOXB`` zi3k$Xl;PX^^uffZr|45DCpn$ed|*DspQlX`y)-niYA7-+OwaZ$VWK&Bh!c!hh_@Styqzyl2~H`-gQ zF~3YXyFV-2SL>b5P^3=N^Scd_kRiLK_rY(tFcDAzKsuR{e^0Z%`X=d@O zD(>~(yLZ|0V^RyEBmWQSKb$Z49G!>i@Vb+#VqtwWOi#7-CIW=%^J-rO>upy*>tb@^tiCN- zkynBApTr8LSEK4zs`_wCo~Wuuj#f}1sY6kQnuLZBCe-PD)>I&tUat~Lt;V}*^;F;% zKiI~v9593qKc%(dC+=>xYJj)ycBcQWYPFtERPDX`HT;tsjXZ%UgTE9geRd$>`xPDX z$R(F#Jc>e+RyuVwntlAROUUql953A)rx0=t+F7%tiHT;|6H@~%WDB_UUlLHe7w`$F-r)A*5~Fx!Td@{%^-fb@xN3Zpf$7{ zZkguSZ`QwcSKInE=T$%0Hx=`}opdzmo{fSC*`e-q8eczGLWkG*Ux(YqFFUev+z5|T ztBG2yXu=tv_&RQr>8WeIl+z0EqmO?3*86WSd8O;)9S8g}^ zY7v21dhHX5do{j;MoOn9MXR5v2)7@<@XH}$T{x+3{sooHmC6tlzS4kXuif-nD`9lZ zg+IX2`uxD5j!LF>rC5PJ)9wyw3E!*K5uYEa{NabOu}Ii>bHvWzmwC&;yGzfG+Vb{Sc@6*uj83sCUzw@=On7N&HJm09^j^NQ zwo>r#9=^&#B2lp*F-xpW-)U)_<{Ov2u82uuUw*=@&)6T24}9ll4S^#T%AT2jMI}nz za;Y=xRX);!-!lX9!E@>=z;jAJMwU95N--K46;uW{w4ibgJtJ6|#X~Jlj!a$oVT`#3 zjLZ>FxZqU6y{1nUlzfs*e10VHpu%xS{mGmAu?BClTlxKwOhD2pep%ZoFbyd3pE*8~ z5mP#) zki7gILn4s}?CeFpGP8Jd_JI|*X7B-F6eHfzQkRFmEL3uj8#!EU zfJT;zOD`_n0_sn!+oExphxlz})A>^?yZ5M?(NcAN%f?V-BFjO3Ce?SH7vx{Ru5KJ$@gxc0b3N(cxU*v5`+pHcc$e46MHV zd_~F+4Xl3rCwwpyK7?CT_9-&RL92xw2F4RgIofDnyV? z(5I!K%9(LC+FC$5FORen_Fugd8T0)HXn~=af6I7qD-Xzjt<-Vk&yM8Z!ae6Nh@cj7 z=^pzU6cNq-%~yau^$Ygm|Lb}J{>|Bid}5w%&K}}jh9?X)m5Db0753ox0T=GCjKfC0 z%QbOQz4+dVuo=pKK@Y+c^pmk*z@~{gy!Iy8@{O8zoCOR=aeKarY7Tf+<71m;13|K# zk(FnlI=Z%K)`gL*!Gtmt4LWaS?OpkaBDX~yU;*NX$MZw4z4^Dopx;q zO@Q&b;dq^k=s~FI|RtGur9&rn1vhtmzi3*ebx1*{D0k|ADnZN z`n!FB6+acY=toIVp2}}!5x8ReYq@eHYpnWv0+=0}6O5LlEXaS#RFwN?{Scz@Wl;~U zd+L-CVo}qKe08&J|2Fe|{t~Z!C$;_WY=f04b4EHWS;N_Xtz-JRkC@rM*Zptvi|*?c z_rJI_s&gq5f5?pm{cT)Xrs)oUTpWgFG4?{L$4&Y!HD!OgT2NTt<^I%c7@@Sq=*^gUs$9}VC zohkO4eI>69`>o~z3ZBAax9BBR)=Atq758Q^o!_`){@C6TQyfbA==}J^xF%eBd}1{F znqP-9)^R$AW{SHi%S@A>-gs+}Dy?bgbKiIxehya`WHl=;juZ zI&q4<4#El_>=(Ghn&6eDJ(_*!GR~!YHV5e(@*u2_7HKn@o%yIkeBnC1@SZUR3NU(@ z;9YXye@rOgwWdpnP(Z?n5GeQlm99jydr_}@t*ZS@p@7FEs!R_B{E2FnN#w{-z^~?+ zP{6>7dPWqU@XYIi6P^012?tzQBgg;90ryUUNC(UhIcJfk-KXb#Zc?aBT>WTeW_o!ohPi+{^KKF+(ERX)VYIeV{ zjxRI$(#v1pLrZD8{0IJzQGS?lJq7>roB;+YxkL7eCNV(dPW){RSGnWZYlSC#@S0Bo zXL8Rf9G&n*E|{M;|HS}(0F}A_=wa*XZ|nNS-~77vKVa$#n7Zyu)YVgUiGhE_p2{6< zYkD$|nttKclxJ%?{FqD2PJ}5!bpfmgZ{>cH(8cEN!8j8Q#Z|_}Ga=sCQ5Vv~1Dr9qlnYei*d)GDI zq~FGcdFZa#4S;|804#%i5s~a~zjTK>oEHFd@hnRNhKodV|K}W=y(60Y-meV}jQqAR z_w!eLdOC@FgSkOmxTjGuHLW=If{b-dbP$2#syvHFbZ@X8vr0;ng+ajRrz;_Y94^cq<bRraVW-zG&uC1sC1-J*e78HV$*5{7>Q7{3zZ}^wMg*G{ z_h&tx+OI&XSs{jM78-hU@EFMD`&ZKq+9w4sa!Y$fm0P)9MKze6)3({d4Vl?-K zulXRo=Y9jy`@SiVPD#{sFZTwdKjOmO{USBNFzi0V?X#M;-$b8bR|>m7%(CkPLqe^q z)vN#&3Zoc7L<-$p8fg5reQWVk zw#W%I8XX985#SMvYB%TZHB&z5z`wnAsbE&(G+hOBP+2=o=W}sUfm`9d|BC;<(0|Xx zMI+qd-urX>_tas_b8%6ro9VqD>c2171@%wl;sVEgrJD9-w-9s+&~6uQNZD<@_6LD2 z;TQ3&m}wXPEc`+iehg3P{eT~kB>RF{|F;BI$o&B!xO+wY!BMrj{3XCo8w$M-cl2I5 zh&^cUz%B3c=!xF^c~pPA{U@-%$A7%z_d01D-c;E+8xEKO^GR5yI(>T-jQfE-e zjxqD2v1KvfRN#Mj{eGPAuzg)=mNU}H4tcf(tJE>76A%;v0_7!q32#~%(o&u^O_+MU zS-CFb$Cx77Hz$j5PFpmqUYm-t=NFSO=*Sw3q{d|aEu2|>##(uzy)=B?EA|(xP@8OQxGbJUIxQo=n8W@! zldkRrt^%vpD~$`8*ADDbYKHJD97ea5sRTfF#MyuH(_p;S@IQbFMGiv$`VXUa9h!&)&>nxCx!Vp*HM=p$>HN!gWx1$AO3JmT)DLR8w z{66fp;4i8ygW=|pgFbKyJF1@E6ZuZJ!~@hpx|jNkqggY^475$2L`zPhj;s4;s}egu zOjXaBf)$3y;`t;W!keSL&w@TFkAu=O)j9_@X~C|Wk>;lo#CqbV0781(>pSq^L<4@e zb>RxxFLn)olg?n(`KwimJqmx+ZOIS~|IC~O4ENX( zu4Tq�M(8WN|irKTExlo96~m0%j+KbX#(~0cM|0wSkdb8aplx9eX@gcs#msjfbI9@RyCTn@Ueldg-Xpjx7{^qRH0*(J;u6lAMu3CR{ z@2P>t|1?**V*`z=%vBy&w{j(m-OKuoPWgK<@?0W%t$&DMQnZ!b7SGU58XFIVbWU9Bw^tGV79<0aOCz{ZB%8=vBSum(gjRId^y>_ z7|cz<(dJHw9%{i1`AWQ|{83qC$3={d9Ka78KY5(ci37sp4Eg)_5;J_Qw`XLcdk<=i zzUv}{LHbBfIR<*YtNL@U!WSH8(K^nuq)Ste)+H(G?ll$qRxI0q)p|E|+NO38+ndFK zoP9ZzH3)7Gc3UzC@Rej%Mkj*WgNeCM{yxzfCt!M0e+wNjq)!cfzen0LoIXVQ)F5K5 z?2$Do>QKd@UJESg^EDN;kMk?o;n9YCD=5$d{2e^4wl{xA1{yEpVg1tX5WF9ScfYOU&-Dl6>vx@&|VJw{et^^kHyy=OFFbmDpG>o|K@FHH`>5nbm1^o%>p ze{McSqCD3jDnq!BIjoApC$?et^3^mO%|G2Vl9v9@JJiu+SEUV|pD@fx$&!dha+Nh( zr?p`nL0I2nuMl5)RI-8Tl)b$qa6WTsY~s-9me>MJ@!=Do@RasSZaXy5vS%~yDSBf-D z9LzuI-l~I{-ZtkAB!;Ue*aF}sORSL`tK8i-gUn}=>IWpF9zfUYvA(oxP@<3I)0OTC+&|e z%uz}nwti(d=hYn-cw|vQdFjmsb!d3@%Ct7U@`H|}Z9?duJKb;HSbgGmbV9Pyl$G_V z8xnZL$tk6&0bKMdy|7nZA1->AUf7#JYqZiEIu%RY8v6X^C-lEU#&r5$Q1>O#A={kf zF7B@LH99R@tG!Euu!42 z(nq9eG4&SiND+;WvR31#f@o^b*fKP~!xu{PIz-UJbN+}vZXC@p0*7^aO{jW%j< zU@>H!t<;xVCT_~=dAifVBV$OsnyMxEf7nU_~oA zlh|~TAF8~*<8-Wx1lC}?i0|TdRG?9@q#<%RFn>68sdfXoi79|Q5X#I%csRZGp@atC z7I;fSS{dJ6!gqW@9Z&O!YP;d!TsttZqS#hYnb{370a)K}#5yyc^-FR|n`%VB*w2yU z4Kf-`HU;*r1}OZ-ylK`Ov78LEWA*sMf`HP{)7T zK|y|lrN~YWst5VapZyG@GNaiBb!arB4DtD+`PGr5(fS@Fp%@2rt)h%Zlw-yd@R5Z7 z^mkK6^pBhEh$hEB6`G8GMn}$%qV|+gWxFd7Mm{yF%%EO_9#aOzqy>eQ%=z`a5JkrG z%-`PTZ>5#btN<`Kvu>~+1sc8%qcBfA{ZpXfQtydKR~s$SWTECWvK0zqL&U+d zgG+}7Rw$1+2@Cp`X_B$RVbx>?%#A62T0|{U-g=W`w=y38IpOV31uMgRUQ<_+*v~QR zBhpzCRHkcY{pm#CMjEuFjTcW~MU<+NBpts2U;fyg^70b#OG7l?m@vitX32)v4*_)E zd81q0k*6N&i03D`B7*#r^S)rhJNHUvv)qbtUO(*!9_F5o@0|M${+Oh9TbJGn56ct> ztF8CR@DCn@Vg8GYhFXqEmjE-HhAL&Z3xqfE4a7Kr2>y(U()PMO!RVq)1L^oLt%f_A zeeI0`Gkcj`?xXIfgz)nVuSW@-9hXBqr5=q?~GL8?XaAv-DyeM zusf~wXzTW4M~Q4Ej0H2_WF=tK!7gQ6m%S~;V!3pER$niFkZ9kbCbKe=9@AKM?m~w! zSa;@|A}P;X&wLC&sHW;Y@e|CRlZ{%vD0%rtb!P**XPfBp>A>y()N`sse1T3vxR{GI zl!uyni*{?Ixel;q)^0WQr@2?Dv-HYdnvd|A@Uv@J;GHkA&g;rtU#TI~Qkz*Haj~PJ zO_kj{IAUc0Q9CcphwUNN7@x*NA&j!oF=bTc)>2JcNqICH`3DYGElF#Z^gHMys3x*i z;z)!DT=Lr+_j?UTWbb!E{IS}TpC}qLr+mnx6w5Ig}hYu#2$uU?L zfQ)~=JN-XW(Xa6o#Cj$b-bOyY1QDqqRm+W?z1fM*??AtTP5x={y0|yIro>1~?>f+i{Hxw5I!jKo%GxdHv(TC-xJzAPREK&6qB3#P=xYQK zb=}>QL_)+?hZT|Q!uMvHJhAis42IvEu_a9pF6G<$oc1ozT1*=^GfQ?v)nX`{M~Q- z1b;g&V#7t{_^S;IeD4$XuQ!1E8sUDLa1RwQ<=BKXdeY4{1wrGs4gw^!uW7=Bd_zvC zsUk0AUSt(%zU9dDLTKwgd=c6)wVM=cp=kd7eWzqptV62FaQmNRhd7NP)-XhRXvVkh z$KLFSDc(M9Zs^8#V;bbt*5w}D%%5}Ue~J1(Lj9-9)9AXxP4a?Zp z#S6ysqQ;|7!yN2lI^&+m>{%vbb&;ByW4Cc@JiR2G7WzJ2M>8CPs zG|A?|ZBr5aU*5ey{x7dv{^a?rl&|;s)5Kd1e;R43`k=+Zitkk z$2R4lXV=_!ns^=N)G_zsdr`_s2bX7baOC1a2e%^ui>@xr{5qRf@==i{@R+4r@o7p$;*nO(*Lq!`c)-=stCOQILy1taRx@Pgw1FlTH z*rl?|c||V8ex@B^1{4u+si;DncziD5-muU{8m2sheh;t0ALMKw9Y=uB!0%(@1J^Fp z@d63R^`XAc5FcpiSDWunJdgpF8bDy=&;R8_rZq`zhOr3VxCTI!y;qBG%9tPOxm~Dh ziJ|V{7to@I%Bm3k6s0&7e8Q@GCR3`t?lh+fU!4Uxr~?TDw(kQ@(t`B+1o(| zF&}0u9P+)3=8pLie7NL)e4;Qinw4+XeLsz`bzF5S5I^1cHdQ3Y_v6*c@jasFpK5#$ z|L4b#j~V}QSrf(X0{&e@_YB=YN5qGpNj3c#M{MyE_H`zfLu|o7eaf zIQlKWe_hKLW`6!V`v*7P>i+WNF8cQny|Vo~C8dAsnmza(y?=ofX78DPMk;)l93HJm z<@t8Um~cP}w{$}Uo*6F9sC!@Yck#tc!^b6rX@VYjbM9E{^TY;r`G(poPL;@Uw=6#Lv>*3_+f%23*=Cylo1N({s&EzGP3L%_X|NiGvF=U@Ivu-K~c*D(HBiSgge_~~B` z{bM$Uw3^DJj?kMz_noNSeb9DaK>;inZ#&+_^12`pJN{?v_#ucnjF$12Q-8I{141#F z&Yf|Zh8=<~gsw@)D>{Jvu_29yRMJpfWpyPZpy5&tw8RV>%xAdoF6=}gLyk2BGL)Zm z0vTXmX$N!cc ze~rd(_h1ZtF6RAuy#N;Fss;Sz)}Cs?AndnEe=@GXn;$>Yr=4ivC5^wjvgvM9(In;H zh61w8m(Uf_iKKINOFgJm`qQT8F$O9*{KU^poi-oknHL@W;AIzSlYZg94P2)Fpi8*e z-JUmbns4+c4x@u;fD43E=&t!c%zX=ZR7KKu0vQOGae@$uLNr3upeSJlHvuCP2yy}g z1_h16Y81sNs9DHB6x4)CfN?mQRaQk@7jNqgck!~wO$`?zfU8_qMRC0=Jv*oQK#>eSP$bf%7z}dxS(-tLfTC@xM|TT9k4mp)F^=*B9A)FBAovk)Sy6Ko85W9C zXB=#TVDVWPO8wG9L=5~2m&o8445fakU;K+NdRZe^uYO!gB&GI4gt?Uz#S0Mw1$jH1wlq_`P4ZaWwuu)c7kReZd8XKd2Jeq{zisc!9OE z&eT}T5v+Zg8p~g%g*vd4MxB>TR$9RPE}$o}7Kbfc-CZ7!rq_-WG`)^XJevNlUo7Vf zK~omF`t9cgP09B;Xv%7iCIgICWHFldk3cI&lW7@|s)#CeeXu#2!aw{9iZp&UYy5zO zZ27|)(IyI@kb6iU&2-rSRIfI7`-PiZNiOJj?9>EFqw#}6&eQ~vg{i50dNaxMxLa81 z30&eO&qMmfV!jZ`v+`Ntui>wWxc+zj zZ~8y2dH*}>{^QcD|N6yZzR>-DM)$w=DEjYj+5dS*(f?NFAMt-jX&|-h8Ja&x1KZRa z$H(%Ah#-jG==hUAN}BUWmb#hAWMdVSKXno;Jc3I+78dFkf8-0n!b?vJ7WUqAWGrNr z$6-NOV%*$VG*EKH&OaXQ-ztfjf56|M{;4QjhTJTbAoT()f@onYzWLNer)!LeBBEaE zV#(Q8$Q7~kP-)?$t<*)P7EU@Ox=G=r{nSZf<|XJVw*1Aa0aypo0&ss8V9H)xhK2_k zn*3uZdl71sdP7GMDmUT+|9qVEy;8rr3YQq^Tk({Ll^4WeE-9&6NZ+`5N=*a)C{cib z&Oktl=r>evnA#yzCD%lC97n~Wxy(_|lpSY|g2(*i#o#%;#N@|b0W2}`1S6*K$>7zr zuA%e?PXj_tSK-z|T-*6rQU$2*S)8LvV|p6mY9DrFT;_xbY6S+Z=G)z5=+& z+p)b{v()ZgW)xgPEV#}Dcc})qrx(DTslkoX;C|XHy?fCC*U15QHNe6D7zfYiz^jbH zdl1z+*eoTyuL#4;yOZ!%Jt5uOjYeUF7HD{b`U0D>l(6^=8=K#KiSBi_!0}xm?_bZ^ z-Rpn?7B>6Gg8L3z&D2Z{E{)(uX>e0DxO5H9i!^GlcOtFyb->L5IOu1K-_rQx+d$q_ z2cR28EP(Z=#`Nz$Sm{vhG{C>%h5F!e>E9s$NB@@A3qG&Q0YL7uQL9h4``3m2>uZ7I zyFlL0&szO+4?qDPPYL3@ItHA(C!VXB?30;i5Zn|2=kAPqMv12hi@4rNACsWA{R64i z@}7}8;e@kZ28}dssYQUD^+aW{x=r4cRI~w%bk|A&jg5IXOVJK!!-V@(12xQd({*1z(J=pf z5@0^Gh4`Hwg()xNVDgFjo>icuvYpLzkDX`3%yD4eW5b+Fm}@1l!hNF!bC-sB7Ga() zFq{73^iy8O;g?T{-&q#eZc^O+%yTx_wJdGn7a*jsm*PehYPbh`>b`E%a9=tRaR0iQ zeVrGDD=*{v$|tIw1(a$A2KC$|8>ml;62G6LdV%=?Zqz%E$e7NxVAgAxLkM$_!0Z}@ zDKFz-@`<{a%?5st*D#Z6ZJ4{BB$^2GP8;S7!n|6;Jl=v?r(teQ1I&%}?B}1Qpzw^m zjKeRV5WhVvuonGZE-7nx2=Ub{t?}!z;kF~(utZF_AL^m;yF$aggmA|Q+%uwZjPuP8Z9Mubc2}k)g%+oEH%QVc7y94G2o7mTvq@eUwUdF-X z6ZIPlrX;j8-Df9p@sJ&@aA5w{hItNQCTf^3o}~Nvw1zo_FeeMlAyJs}G7i6dLj0~~ zE$HfrQrtb^GrOyaEUodo2_U4eui-`oB_6~*$b!2>!`*)Z;C{1_eckjpktBVUmvMdN z6Lp~l)S{(tOdIF|DN0(JV8gtaFjF)mp^iy8O;g?T{-w77j<22ad zAud_aPLb6+`Hc(ey@+hm6vgSa&6Nm7>J&xi-u*3G?p=xYNL06w#Uot(o`IA5X@Ju?;Hgfy=<+6ZT z6U?whHn33w4Ecdv*8qliyJtNK>Us?-%>q>lQ2*=-P;aki&z_c2(y!8ZP^Ic@3zQ}8<_)ny zO?N=;K&=x0uo*X4zj#o(we$py#S*|OC9FvT>-;FJl6Y7pYAsudZdtI-aA37}VBJhu zjGMR)H>y^HDzres(d+v8cz|kH$8K%^Gm#ra^s_s(V!gQ1=p)DWE1tK^4V=DpC=aM6WDRV;oTZ9Zd+%jui#w+5h72TCPJh)pnX5ff@dk~-Im#1Tg#G~zrRJ@(zma0qY5>^ zjut>K050zWfG?~i8t;k%^v3tit2`DgOV_ydaU0fnDMU2(B`6O@tT%2be|AgYh5Lza z8k1PPav6j+OrZ6QLd%JVmZKhJJAug)G}(W?!iKizPd3?4My=AZ-{D4;X;8TqD6Dq6 z{*?kyyO13ykoSU=68gxF2bHbPvp{v%pvJyogPQGtYHNc!*cG5$8q{03r|ifAsA&Xs zlYqJ~3JN~ZSjmy4wz4F8WsleMHmEKRsC}qadbNk39+LPE_Y@0M20*nZs5Sy>_rnf- zWC$pSJ~A|YOt9ct(@teC8{VTVY3VO^-`Ww4eFUK8RjJxQXUlpu4*u8hE#I_Qp)~aV zuZ{@!VV;f_o4rEG*u69;W17wd`PR^*DmS7$K zk-*Qk;3I4ZQAvc4?P4+TJ8Ad`h2btBM9M`sto?sc{x??p&ve?K5!e3XE&O2=h`(5L zSmTqc$H(8F(f-|NZym`?&Z3rsmuQ~HSe(ZKRR&gG znBHU@{GsNsWVP->%6;e2{ONnp;r0T--;G7UpKBtrWt*$*=mf5#zw~ejy}?CM%T4bUiyv&~(W~C3^n9 zA`UH`Z?dRO(1Q3N7SI@#BeD`oJlvCZ=7sR>!#7fj{~e#`Bw@()I_&U_5&{4Of@Raa?4Po0={E z>HP=X-yPFF5_d+m4zW}Szv2F5q+q~9<&J|d%dV<%iiMKMi!Bi#{cpYg{=3C~M*f3n z{m(-+i}p{~zvxKyd*&_zGquu(kbCrf_atE12xkT}agpiD!*9rt)8~#)P*oQ(@RH9% z!&1~sr=b_vEQ9r=Lr$2`H{Z@jb5g&>B_jAg+vHM`dvbXR^d^v7Js0qu@gQr02NIi& z3zw2aLa4WHv`{6iOZ_1{xcP|0<52V0Pr83G{Dm#|q91Ynxte<@=VMo^8gmBf2RIN! zL*kvofM2dQwv){pSMiyDCN}YA=HN_Y1X{TJ!Pr9gvT1yI(XD%KLAT7*6}9&yM6z}M z8Ria=h^d|52rB-G3!J2ZhPM8`sKKpkIF1(w8Jd-BB z1mtQoe|I}D>_ZHWx?X=*cY&a}a3s+D!}u0x*7|pk(w4Y>DvE32?>^u?*d$ZQV*G=s zo}$;nXfNZV*=#g1W~+rYTVmAsCE|asj|D*{f|mj>B9B@7qgt(hny!EGk?Sx1uj-$v z>mPjN`Wq%6zWtuL{SbW#9F-AArNmLGeeg+4oO=o4&riWFdjziog-jiQX{(4R!j@3P zHx)|mX-Q~o6mI{d5DBOYSK7&QMkm%scz75KU?rMDpn~!RI|2QvQar!v6Ns82!|?#o zjgdao54pj$QB_!$aqTy+W~Q7L}%mcb-MLh%=9E_R2>oie2aDv>L9 z0a&NKoL)fv3HcbFLSj3lzM{^OnN1a&XD^m zu{|Z215rwXW-3r6&bdn2>?q~|4oqM}8MIs=MxXE0BU6qq!I;FB`%Tlk6yYt);X7`} z1UEpP!y#x+jmS$pSlI2~7lPetE(W_1KdQ$F&7XiS^*IHcS%YMtIfX-;rGnSCPHr5u ztZ)ePY0MNN{CU{@2T&6rAe{XNp-KP6{(}pM^T1wEtQ|iUL)SS#Tz5TwX_}Vy*@nqk z(0ZT~uhS&7m8`~7Fhm790Xp2|S}1XE(}p4WYy|nd=8%v3_gzHtPQwKuGNyZbX$fbq zgF%o_GN(M^7eOP)^`|jNmDv%pUJSIs!-B|daJLF3u~oHq z86Go^l$*c=m0Ow<6r-*^LN+zM>B&;hF)s}wpVUL@I(K){l;^6+_O^3;ypJ* zVkCT-J=LD!j3wGFa;ldRvMR3HKzQJ(_}@)ybL;Oo)0nhfc3I}&sEBe%n9#UxSxCy& zW!fjrzu)M(wB{Z}(=@9F_QuK#bW7be55es!6KEp+97(@td=JyFYrNcR;YCCgn#n8i zf~!y(^nXS}n|E$=;s?Po`wYwo`_$bMwRjVb;o@uoY{0>U`Fo_qRh6Fx=j7jxll^ZX zaPgX_KZW1oXnO=V>h}SJ=KIhV=^8-;W4NqWmzBWzb#beTrq++vFo8x~d@Z(q<`{uh zVo`dkyYoHBzJfBhm|Re1m@kT?1-ld(lZvxE%kLsmtBRlm`noE7)Ulb=KD%XQt4i>D?P zO;VlYGf#E0;6(Pl=VLNNxVK8tq5S0rT95=`Ch{wHTX}n(;0N0_7^;gVLO!`C(UJ;QOvq7MZ`NWwnX?g%|zp$oI^oT@Pc7@F1>85C|cCT&z3?u>)?cMb2G$$+=H zql^U)3i$}X*=1nNJrtj)=jENwrd1Xi3Ph!^l5eCTHnpH7X8L0-pQAv0t6Ds;_r}Cf zp6M!n32OSej8cV~ejY^tl1y)~_O7N6f+K+&b?RcufcRxE3H0MxBRL@uVcbuRam#7i zzOol9L2`xQN7B@1;Gt9(f8Nlf&K9&#^>2GF6F4CLALVN~GRY*56g6dH?Cen+?$O$* zW%lf0`)|HW0=&S6O3vRElty55ouCA#WaM_Fns)XeTyUzPr)C*Gj`B~SG0Ah!Ii#&X zV;g_!4q|YH#{ETslHq)@FwV|o|-oxf$-)$PxTPI2`|S_R8v05-w{s%un(T%f&W@h z%|rUrGJ)@@W^8MCE(I8yS~DAW$Yj+UiEqpAEJA*zpUUp+TQzv{4O6f4civc;0k%vG ze}*^kJSL;?N0ZFq}3FP~I~7QSNNqfO7@KHLi*vITtkki5h_Uf!+mZ@!_z zQ$2?tHUb73)85~|YVf36Zl3O`Vg9ViRkM>DOgfPnt5B?>#m1@etJ~UssO)JJlhX zf<6G!9&5u%p{5T^tXx5CBzXQW``xRRFd@cK-DA%i7v8uw@J4Ok3mfKar zIr337uaHAbeH(+MqVmz4NlK_}m5mN1VL!rqzTjt)>US5EZzQ$J=NW+2nWPT8a!QgC zBc$sRQRaZd$>}wBW1#6Sy}dH8{B}%{<>lZHAgrywnh*rZ{@tOf{)ePybsmtv4?(O-_|l3k^Ua0pu;&G zHZXAkVH;=gKenLesNE*LrMIVTj(|EkBOR>^Re))dIN z{%3Li$l&~e{y_t&MtsGDFU7w*O;i%ytG0gZJvUNF!u6^L_YF{8iA4_vwO-}-(2%p$ zD+--Kg=sRy5nI_YeY^Zj{T*gcOn~e|2Kt7jDt=eFGHNh-+ls-Mj|*dA+)L;^GgCLu zf=}473$3!z{*OOw|CvAP6RrF|0l5OBXo(EqQk?_J)K@6~w!pAYkJd-J(hXE61s2GG zzA!h>z*%LW7Ch88L$U3N@2@e5-S%rFqcCN0ZKR+5v+{MPr>U2=VNVBMh6{U|y8LqX zbl}Igp{Ep;oG-*6!DOGhi0y_n#+<(eeeGE zXS7CtUb%`@xAm8x8G(r<)US-({YcO8V+6`K^=^o#9Lp`Yi%ufbz58sao#!P`NXZUO zT@y($huh;&$Xop*(%*&B*CudK-0OI$*)2<5P?9&kCezXE+Tdjnd>54j^6Ej43I2}8 zrV%CRLIU#pqocvMv5D+&e$XPs9da`C3*;@4?<7oc8NR~-OC{VY#BZ5Ki_fTET4l@; zY2fnIo5o}R$M>ADbwg#mXbpJbX)8aKj zu!P2|L?BjeSb|U1JIr92p5^>R+93IcntiR_JU7Oj_A51_3&~oNIG!~%V64UFmJqRh z&_|;`&p51q?SpgU@_U?BbZq_?t{)z@{y|@GG#&rl){Bn0e$U)JqNMMwp!|kq&p*)r zsq(<8^HkH7Pvx*uu6C|l>x00GPdIIPYQExIgj1Zs6n86A&cHM1C$k=4syj=tY?`O| zEkE2eZy#>?RUq%(3Q|16uja8T5WM*SZ=e)n{@|85#Q*79y$?fM$cnErfpn^?q*2XJ z0(k+a$_7@6eG?Dx2JUXAM{mbUndtx$#6BWgcPG-@(qn+pGE5^CP;py)1jQ!>khFbX zOZc99?qcns`RtT&)_itT%L&u9=yc@A>$aE@!iL3N$Z`fM#MZ-^m27q1bVxid+BL+olQ~w`*K^zvj zEx&1}=oj>F)O;ua^ceU;f@CA~fCl8tEX@yfFxuWD;BiXuoR#Pgeb^=JfPsOs$IKTJ z9Qs0kCZ2&O#CL=<*weu4tPJPtOvMYU1RkJQudpAJ3xcN`!3T&aUr-7M@;;k^F-LrA z2VYQXjift61PKOf;9Y6ITFw1`ka?Tt5#{`sAIJr@T?a=O=qvmI;aiyj$p+S-g=AQa z&@vhI&;rJF#mTq4#KWQ-2uI9dX`>7g# zxs7*phrO6|0rD1~%!PO)0+$lBVA%YL-DG?Yq90P<`#jcYr*0NPs z6s;v(hmx%@UpPZ*Y*3$qiN!P4e}@{6?Zs*v9;i{=XdK)J3(}$=Jj4$pcu-~IRV};R zLi(RK3Wd;q7!uP=pY)!uy|Q98vHuNY*xLYiVosB^86 zgMj2_7ruacb*?CUIryR9FToAhNhFXc1y1aQX=nM&p~=otTMYz&n9AGsjrP2d$fY(e zvtga&GZe#{>1X9zdT%Wk+EPa};P{h}%fN+_F!d?8q_EJotqdzAE;%hov_kqNq+xYv z0X{2Xhj4rafBLX5u3jGN-+cZFezX0FNPvJ_sD&$eF|c1aO}J8bnqtJu@-nSM$4tS? z{&kYCabLdYg+J8cHx_#e%_`ni@9>{udm^}g+=tVrHf?!YIxCSziq2!EP7rCR&+K5a z6?ku$_V0yq-US=k76)X&#nr=U4-&)5MI<_U$2KphJmBVH&k&hNgUDN`F zajG_upF|7H!Hoc0B3J$4kwF|g1bwE958Y$8bo+ukkyErqt4!DIbXnm`?E}Ow8^9I5 zk$toVdgMN}B8l`0?^6;e*-{+o72Y7yY}?{T$8TlF`yTB4d>J|!;ZQ7ws)b+D%(2aT z_2h79iR;;lnU2g@q8jdSEL7`XC#k;bcVL3}LC^MTz*mQWshr_enA(NpsQDv&1C zvI*wEnIec^wo*{*)2$5C{{6DeeP<-vU}pBOJE9?8tmntYnc5o1)U6F@0bHp8KO(~Q zitn)k0iyipPb}V3}6|o!QLgo1~M1eW5+*blg zpfMD_7hfCjDacnJNe-U_YT75{F#UzDs;&PzlpMs8;zigI$tV00P9Kn-vY59^dlCMa z4*9X~+x@6PY+$}K2R4n00%a^LiXk4NJ0!Y)9|gO61}->C(H!^=zpU9U-AyR;46h5< zppCT!!FgF25}$cbHZFm@n?PZ7^=_KS-~5MD?}7&<@OUev#5V{nf!gN_zQ+vW8G*d> zr2s6m2Us9-oQ_gfU&(h!{yk5j4)_(`mv=IBlnZKHff_*So@$C*NR#Bk-0jl~snHM?RRD@$*e}B5Z-cr=b?3nln^j;Q z6W;6hVgSL!K<*l=Q51Jlf$c2OE-@dpW-gzOGLur&rxIZgbqNnZhpX7oK;D+?$)eqj zO>@{r{^LoqYow*vm}cF9SBD}(1#3Wb^$`z+$g>LQ^HG5MmCPJy1)(u^>aEwQX!^`* zQF4*hEHYZonJDb@fzjvV(ZPQf9{8Ye?ZF|wQ+N7M{Am>PB_gz0Bio0Xh^j&y#0fWp z1yWY*cor?>1;Z3eL^&qXmf%~mGNdeYL;m2}t9d^gM;YB8ZGlmZGb2yyv8YB4o1t`(3!{}2=D@StrArbN4mc|ZFBkhPB53Rso|Q|2MAk( z+%B;FJi&tdf1QPOroT$dIX~wvVlw<_&BFP8xZoQ5K1raU;MKeGXlS;gjl0}}fbuvsi?a8eS*)Cw$ z=1>@$T|$y)Zzy5!+*lH(Y6At&dUma-u+Lg(9JJnWE&+pW8^Id&Vt}&u ziS37@qM2B?Mqm>TB>Pfa7hDg(q-M}idJv^x!Fh=jd!%r7M+#k6CcN)V1-Kr4 zR8vmS>$%-PHC}7FTDAfuZDdA*!KPvb_&xqSK)#WmI;w{n`9B${0jW0QoDjToWB^4;!^Ck znSM9;SOwpwUq@IC21yE>tUPl$Zt_!4=C)|n;qv321XyTeG22)~|1}WrBSVW9lZs;S zLC)Fvn<|&!QjY&J^IL~oz}GQ=HGq!LB{6NeAOZye2c6UzCIWNSPMRT5VP*;&RJX@& zt`uq*rK_28cx9)ugoM|UQLoz4R~zhu2|YvODwO)e0&58uB@q2)x)Q&^+I&Y8;23AH z(k$9%ML2NNGe$)bE)lp5wg)f z9%o_p!A)ZOp|5(Cba?+ShWG!PE3^8y6Z4K>sx@EG_&fVmTq4I|`s;aq31;Q9hyU&# zhQ;_Vminu$^5V7MzNuPV_L!;~KjqzBsVVY>d5kC|r09IP#X*ovqChV1(+m zpd3M`cnG`AauiZor%17BZW$f#CfG58Ygu$7FZC7XVKv~Wja&VeC@Zbd{ zm?ggRV|PP)__X;A-2YGVFZ>IIfd+5+eT7vG7h)x;{H~+xEL#E9#IiRaHT3oY&;X|i z)GQW83<{tL#NmNc1p03yVt@W5D~o+I3Fb7cE#(8f6XYis{wvhOHA_i6c= zO8%_c%VDSdl#W7v@~Wj0@C$_v;v@r)^fNI^WQQwg#63kh}ZSP1y=d6!6PP$rS@YwIR^d#7w!*A-FIFIq~O34i)DWhqF=;+ zjc}Il?B*bTB=z3{NIX2V!K9|#X%Wf}U~{HkdGNgOfVJ>og{WZR;cSWmVF%~|mXjt+ zRdmrVGGUQyI;1dF<2%6$f;LjSTOdJ(R5$<24O!D8ZfC@c6xAlQKsabIKq zcRO)a-*`M+O|Fye{YQ(B*Tj7|NDkSu;b|&4JC=6YxU}%g@!O6Z5Khde* zG12dl>%R@V+Nf06`(MsE=K4KzH`56i*icCw2a_}YI2r|3ob}Mf@kNmp>4x~`M6#8$ z`epf0VLNgV;W(b~x+o6_6B`wzR$1-z&Nh*W! z%UJ*p>N{^CDT5L0IG-0;3upBMyBR!y+kL8cTxHapZ(}KMw3NUmeP_d)@xz<3u=#m! zQZs#W>(PGa2)AP{p!tt`H7zFG z&rlPPoo;|rF{DKwiZP4|3>EjlWZp|#EoMj4?LwSVvV4j1q8w^ZRSo=VZ9_&7@dF&A2F8PpfI-%tst{!8A2-Mh@ZG0IY~|jrO4LH9Gc+~mH&MblYTP-bcC;mq_B*xF9V675 z69apxXJIYQa?ffh&Rq7ci6hIGlfb|+@?{jFQIBDLiuHTuUPS(hvtMK6i-B(U)|{Q? z?4Q)rZQr=K0QxXx|Kv6%!Dz?0fLaCyyk*a?@f#>pvvaQ#+@l!(HSy!0^V8=$szesFD)Q!lXsED%Xo75ky@rMt1D(4$| z*cedQ`5bc!zJN18%zm+7smeR@4B~D{#K%GnuT_x_dc48a@gH-%QFDqg zHK;8^TpR^>oK2Tv4#PLRK73)Q5ocIrfGSc%e{uXBOyQnQH6C6Jeoyr)eA%y2$IVnSZ!9GjuUpF1{7yy6O*J+6aElUrFY|AgL#C#w{_K z4YJD7?lo1!>=x)>a^#tK{mf|YzhV8Ug}2dDbJA!HNtDUZe9>B(WOZ9|6*16|aJ0)t zM5|Ivr6O=1)%HtXeEm-Q&0ZBApHt~lr}4NE{v3Mv z`VDj0GN47kM1fq>xh0Tu93W3wK(u^jcoSfxaST#82KeK;dX}7j`Fl8DHhGhe=O?Cn zUOw~FCF5>r_Y&N>x9$kS3ID@r%RlN`kKa_^@>byn@@p1jJxo_ORHnWy({=UMb=}=y z*Y)EGQrA6F*V9g2^H>+tOWuJS)nC`N zrUKTq2QeHR)D#d8PSQ-v#P;F+t@8k|g1NMB-1(Ck2qWU5fv%K)ArVOin-Ibm0Ukm5 z=GoZPD@Raj{ZisXkoF3vL2iy6SNp!T`cGi}ow&Wnu62e}tJL?g)b~E?IJ)xZ{c3rk zuNzv7{dKq6`;!LWqQ}g_bo#e8riZ4=n04AN<3GwC|F-xo<9~3Q9)HBM#Nc{qFNlY` z?A~ko_RO749LDEZ0SZR;-wgjcU)9vD!X*LQ3AWq&3ig96zBOPPc!oFlLP?pFX&9*n zL|Gs>6^k^Cm%tcjVO($oZYb}X_r%(sgbUrzTxy8Eb|zER2@MqHru-Y?X3ga%c&NB-N9z&PWJ5mnCO;FGFNyipyHM9o+ z=PAGt(4l;)VJJmZ>e!P@1OfY`b=8@)CoD?g{PPxKY|zz0ESWJF*c#ZX4IFPwKrn_h z?yv{X4kqPjR^qh}eXZjar6{TM*8mYvW!^7jNYEkbv~XI=0yf;NB#^lAtG>;}vRR`; z&vTHV;*{b7_izC{#f&M?K}OI_%cy*mio@4hXT8#YWB zhP%7g%cr`Y!ln)4J@Vy#su!^9@G|mS;*)n!=Ill57k?Om{qvK#nrzj@RhbX@T4=o`(@I|;KXy1N1ErK6UaMpgwWW?VA44ems*PO4_2Uw((Wue2D)g`U)?JV zauiLv!{N&?fVG%Gez))<+=RyB&rh|I#DFk&XlXWh zsxY{#F!)_8dD(meCW>;DEo8uYg-vgVOW|{u_!RaJ6Py7VXCmU8=}3@{(cNd;RouT? zFVWP9unx;rw{J9gcF}f<`wzKX=n%z4264%jzFc@ay8r=d% z?ra~;T_Xszgt7)9|CSA`IS3dc4V%PFZN$ay31^N5H1_D{A8Yq;2F=4PoF7VT@)^37 z!Tx83$089{3;l)pheO3soa)!Nc*h6W$9!Ndm^)$Ba{OJLi9epgOyNuU~LMDdWL@xGIE$cBe`m8LPADTqyv)( zBzaavP7Hnk=M7JBZymh0e_$uY*(R77vPjVx^p6B+ep=4OEcNDJFj+zDXw_cqHBKZc z>fAJq5p)+nBeC|+jKkGGE581zzgGXw?!R9DrD(sGwiP@{{3FcB9qyqb3=q!ZR#Q@Rz0E_;A zK{MT(`|y!|8XW$oE)dN*=Yzu~tzI3pEWY3-{bt&;+Hrz~fXH((?a=n+J0P3ZaDb74 zy9DAzG!~jYUa)k1H?TB>6qs%pXm>(Z!`4#_>o7EW0@?<- z#X7S+)Q^nZwf=KR0YWf%+o*0>Pl@NLVUV81BlwzRktIS8wN5@o!*Us+uE?YT8it~^ zAAjldL6ZjlV|`HTUq-HbCGP#dksbC><-SuLq<&`AV5mx<(S=;MVJ&$Cj?}39u(bibRl<26adA%p2LTh~^ z*WH1&pBt_H23{!-ggYI+2lI;?I3jwEcCj1Shs<^0a6UMlq5RJ@8CH6KNYA`Cu{ z6kpjD?uBl@Vn*uzFQo1r*icCsQ9&6|K?Q3*TFE?rmYs#fCr#KzxZBzz5coXNNZjQM zBJam$>?W0kik<8iuv1Drl@%bI`$EK!Cg)c+X3RVZe>;@7Lq+ z2d2W?QMvGMI0-6gq|?TN!A%p5rp-*cQ?vOFEW=-!Xz}+4(?64zi|y~gul~0MfAtj* znHE6wFY+?4j3=$B6%gvsKu$F)?Nf6EO8F?&U(&A5teaH2YYlzr8E~~6a?ByS+_grt84uOE)AmG#iF_s_} zI3O_TG_M$q&TZ<2J-;BthzBYuWazI~|Gh%>XCJwG#H4~2L{(XX!SmJlaDd5l)%0?(g_|v~modz7TJ}cFAN#op@>*oSUYDTOhAa&4!`+C+MxU)!Ndug)&qZzv1L2EWP7=`1ag;!) zO1r)m(e)LlDeM0IN$78H5&H)-kAE=OB@#bWSFW>~G11bM>%<3o6)w*DHXJHG7Dpd3 zhAGu;kkyEb6m3>;;HX%mD&UKxh5Yg7qne9WN6Y7?=i(P~$n1!mZbdy~gMn+6-s;L0L8LK1$0FGR2%rInV#OU1egQEi2*{q2XK75DC0j$DqAc|iPSE4~A%?xVe6jX9LuYO;Tij`xrrusBOWt?jV(EW$m~r=?txzDK zVm1ndT^w`l@4Xrd{$-Z|cW7Z57kWGzft!D}9R02n3xM7M`~+{U6D6x2aIAc4DZhf@ zkIrq5VUu~f%+z*2Uxfw{$E)QN!EqU$WXbtig5xrcp9xYT{bdOxv9e5R;Vf9@7R9Js z0pbj!&nDSRY0FXL)J>c%v6r%EE^o35%>jw@5U}C&2r(A7L^wbcCy5tjJ#?AM8mq+> zWQwm})4Y#8ihK+6Uq~{yenudiEp^De#4Jjo)T|Xk-6!G#{;1>j2AjgaTpqI(G6!=s zh@(C%>RTwa@)fdIHJS&^=BD3(pRwHW49e>L@99^*CfsoqE}A<^$Q?Nj#};FRuNaEq z^N)|?j`QXo&G4P_o94s!mV}bXE&>kTFa7y}3|_Gep2Hx;>T!N*rvKEg1k?dsMUoKm zUni;iwnaw_`ZeO=YFlFuK|R(FlUwHxiQZ@a3Oka;5&3a9GJjkS*`Gn#2$Pn7Y=M@; z_zzn?!q=2~!K=jQz#+WAuXB7XBd37@GuEq7928KT{@JYI>L2Y}v^IQeOQ{}hqO@-c z+6PjL%5H9VLL*C@@Dsm~zsMoRn3=98!Xv@H7;AOg8Dw6paEX#LJF`?4uc71MtCLd@ zSFq?7?GkBK5~&`ow3wT5tR`ytvxB7Ftc|VBFTY?a0REa{<_F53D&Y*yFA#pE7CT|k zx52&|yp|kgukZQ5P>koxT_=e>PX4>pcM2|`9~eTSK=rb!%hr>UOa-CTRWIY)-1O&g zk=Y2_oOfCC$;_8xW}_@U8(HUna556>GnCpvS8(v9cy=3v!WO%I%jqiQ-iJ%fWR#`n zAv7ZcD34qKc58RBW;Yj!#dL3kF9*gbhv?TPqnFNU&TH2o(1yqW;gZ+xl@D5kJ>EopaGr^hV#wO$MCl=ij%fKR64^C(5>nsFZXRe z{F5Y@WgMjyhyOnLK!zW%Vs()$mBUZX^gkrZ@MD}Io^l|qu*HZOOQXN)qBNo3Hy2;W zwQVu@VI=Lgg+WwoId>wzhC?=>RrGjZ>@glP2QisJt&#iw%v1sUwpvEZ1+B?I+mOBz z0v7heq5B(~aK2+>i%CFLwQ13qNUa0dy3zDEP}5(W4266WX+ynM{T;h!3`8(zVX$?m zSvG!o`3ofVTcISV2E+%X3YrgAEk$v!==O#Qoe;Zx@K!p9fp!n;RDwww5~tqZ13#1g zbyb4${Ef8Y-)gCYpa{+{It4UnW7{CmMr3rHX!y9=p^Xx~rv1#B)}$(KQ6ojP&J>Xy z>KsI>@D8moKooaGKLwc>j)DpeQ?=!%m=;XetxaGUpxxF@wK39M1fa8N>bS&Mlmk#& zc=2I}U;F1v;^)`U$h6>FRi8Eit3f1f3U@lN5o-Zh251a6dRBegkw3lo`L?|6z@I66 zivR&TM=Oz_ic{ns2_{fB;O(W|4Y|FNU1fAQh#_hCtQnU1eHj!x35y<$2BmrB5ZVOm#s zOF4@>QN`FkjGqX?93fl1p2iRUlXbdf_6-eyS{m$XIp#LbDK&HPhy+t6Up~lRrh5g3 zKX!-15_xRr`&!_DN>qQPm_f!VYWrL%$-zXz-LQtF5JNSq5?GhVhpYmmPt*0`J0rMD zV&HIkZxAgiWQXhpFvWCwCcug|+X$kk52E54YJg{7(u zL>{Oc9h9YA7~9+cEP&CVV(deljrse^L?id3>8C<{u-&->(M(n5G?JlJ_)#i0S3HPP-`z?LhL>WdW)K1$Slz_hsG8?L5=FdZ^@1HbJBuhiQIQRb9S@koY@(3 zg@`Tntjy={w9O+i3B2*uT{N`wM{hBzkxIO_bfyeWu zKJho|UIU-RCDMykLf%vN3bj!yJFx@uWSu1C=W{3*9$kJn~Y1)Cb7#L)ar9 zML%-dt@)E=>Yj~+Nm{CVcyNFHrwe~Y)>v8llfpn_kL z{QjyTlX=$1O(b1NIeZ39Hxq5bR5md)Q{DACG%Ji}Hm8ANb!a0MEpkuI=9LnB387hm zsM;;?(+#5G3i>X?Z>})R;OkF>n$}6TAq{jgh5SSNpTInwM6x$A?TY?Ig z>H2MOG|t~0iU*uEpsA)z-c*?mVUP$%ocKEC)3F`Md;S#azTk~|DZi_E|v zm0ySBJ=!)^9_$DEs`B7OKjb9~ZhtPm;6#x>yJs~tMNZaVl$2UACxXv{%=3Z2)p)Nf z=PXsvMgxagkE4|cIm z`tO=B7qs!Nm&AfxO!5rjNC3t6g#TyKr_L&C1lx;#u#ukuJCJz`GC#o&(bgWeZw7Ad}Sr{_Z;V3E?95;0@FOK1Rq=k|%H_ znG%$P1*O!1bZF;p^VIZ}hYw4uK$2fR1+%bW3Dpx%btieJyRvZ}V|YRSvX1d*23{KG zJ&eO-pQy_Q^8VbD+<-U|n;z!zJ^cJkfUolog1#Ac1JCr%6R@%(=NRj#=EyjzJA%+q zmDC$rL@4Ua01>J`GJ+5B8R8!V6hay12#Br>L;=#-4z-fu97t}A1ghNuNgG1V(wFK9 zd5v_tmXmTORBBpO93-^k6I5hC9}=RsbDj$B=(*JI`FZ>ocw(l1a0sY1-Ov4nR&0y+ zhXZf~_;@YhHm%f(yeyL-R`|tQbvf>8qcTB-zl#+D;gf7t%bt?suAKiobKm8-2KGW6 zV>`8B@(-xJl1PD2y$#apn(b!Ec1yNl(fxEaUXDZ+UC2p_E}_XYzM#NFZzRgHodo z%2zd@CU&`mY?cK|;M-th)gCeG55kJ?bYQJE>fZ~#hoHZX{7Iw!V32P+@F$J>_c*$> ztQwAhuC>Tbf973eC}{a|U>gVr8X~C#`41Y=zTBN+Jt5p#v@_Ga?g_Ba-~XijchKhX zEt%;l)`@PjZtnk_))9XZK5~~lXUoZ2uN_6uOp5lhF%ir$bjL zC#18ct3C^3{rTXyu{Ngau?Duppp)$lkEFF6@2;`q&H3$kj5y{u)J{L)6e%KpLf|#l zPgtr__^FwG!`Cgz0QO_0AkG4B=B>UFa{&oa;Y4MeJER?nnrbv({5@3h91VHmX2V0J2B>2q+|UxNaFL;ee@5iL%DjK zt)+mXTdZ*wdo-jKn)~#QmLlwEdF}*u1QrV%e|ksDpcFm8sGb9SmwX@t3|O%PoTK{j zQ`0>^0y2dA0U+SrsB>s915}UmE55<`6`NJ>FVHTuIzu>$s=gNz!Jxyi^hZ*2`ib?p zM4tl-$?EI9*3gEBX=O)`9}@C&{6K?I8$?tpY;Ur+7QyPcm^6|>G{G?%YNPF+zi~S9 z5rw(j*Ys>E5x^9#_8`Ims&_VF+(t7B2XT@pAPrA57_q?luj{JADBNnG-EQ_4;*y@t ze3~h`{bgD{7qk7K75+hYMfjDfTf2Zvy4?{KBW@8R{ZYnNYOF)B%E^Ut0IKVYOb)*n zfDQ_!zWTyL>~@uK_F8<(sWi z_^G&j=Z5vr6=6uRvmAZNQO7S8DdwpbV*+E~<#S+>FW*^by`*sDb0KDff+YisaR?4X z^StVu2ZaeBH^qsH;*pzm1uw5)1-rS9y$e=#W3BgH^{dODv)Z4xjOGX~?%E8&kl36u zfne%)oylH~OZ}|q$G}f4e!XfLKNb9*u43^kLHb}6jqSK!wUX+NTx7qbM$sO8T1zYg zTOddEKsZ)lhD&2s+BAL6Yn{JHAG2l=J9>WWfDxE+iA9wDoc_BJdDJB5FEOoHMjOP{ zsVPtCfr|5Y+u~hY`%%Tnw*R%jF9P$$G~2SDR9xGAF}6PyA?CkjB&BxYJ`O1e7p{)B zSejW(Vl%BP6e7y`7#D64e!~6MPpkJ{{1QE1;w%D(l4d7Y(7_yog% zP|tBGi7;-e@q?kU2M2kosdV6zB+r6ZaTn^A;=HdqIDX8qi8`N~VNP#==g&Csk+Jrd zA%U-w3eEHT1GQ%Qf37G>urkZMs|s(X#q~ev5w{<**FIFz3>_K`v?%yNYv_Prb{&|D zDCTw3aE64eU&)3$mf`r&)l77$Ye1!ZzZ=JiQNW1K1ebPdxGhJ5%dB_|X)1RMGwsn# zln;vy6COd7hs51SiMvm&kqFD15>{Rd9I_ZPxF>{Pzz-RA8Aptj3_p69BaK<8e_P{g zcTA%0wi}`Nk&daR+N$PZtC|H?H46n{(P}=X>#$ihSYgLB=EX#L)vF`W)2(Xe+4SD? znT{>M>i1^P-07TDS9Y86>5I#qc`kSrFxQ(Ijn!aHF zCwcBp#-||mi9|`Z2cH)_d2BIE>cr+V zv>YkLFTsB?ZV-RmV6o#Ouq&R==CWMs@YZFRT@#KYpPgB}G9j7p*Y&U4Z#)MlE6fT0 z-nRPbgbrG^A}v`lrd|N@!ICV%HhDGWajnhNyaiH)%qXsE1gs^VY9@)UYUFM@DWoWGNOO_1o9O-Ad?oZPDiAFs_4gwZx28QPckbjQ_jx<^NV7h*xo(hms-gLdPQ2%TNk|iiKpynO1Z~{49 z$&OhaGKfHRXiQU+ngJ8`SiAN=>6zUnaQFXCU!q7um3lxHSfjYm!oH0Zn?MkEE;C>( zN|d=)O9R0_XL2C~djMM}jHonF-+UA+3~1kkC$wVJN5zAV4>|1mJB4f{F&N_07FBPxcAR?jEEdq z0kG1#wzrH3J(D<5IrynoB+!Hy$0})|t9H((Fxp}*^fYDSQ@WMhU+gBSTW2_Dz)Z_p zueGtMFu3?D2J00-2~DA7F|OZNnqXFO2e%d$kX@%>%r&{j)%iZ(L8sagOe)MSKau?(B@sL6GG%_ zV+LpU?zq8eZvXts_;?n~Myox`vpvfz60!SdkpJug^TKWUl?@$cbi>`Bad+a3j<|cB zcQZY!+pw2*v({rIU9(4GewUFU_WStz#4em*xhO)T%k_kM+kAcfrh)7*yM5M&d>cStIs`Z4^BJBZ#_ zUw~0a3)c9f_pSJsD)VOiayQUevzExII@Ca%E_fDyk)C9ttZ#X$#raGFMO+68&IHDD z-k|k$^Kz)FI&$;k7pcs@ubw?sEAxmvYizrU$l?+wPIG{rc3u(WLhi0|5F#i~`*)yd zkvTKC1_*Z)tpIo&bNcUCEr`BAoEVnF#I~n7kYZ~if3|%abLZpcDNFy)-R`-YTP;0v z?*J3S`b_E$ikMj5S?m9}@8@raG>M6k&A30ukE0YvVvpSB@^p{nhnYJ>7aP|-5wG(dQr+Vmswx9ow2*#Uny@+NBwPlxogV@d*(7ohwlf0yrA&l z{lxN2{OwnMGRD;tScdl-lhP)_L`jU4W7`{S>F`+)Sq6QtA^^0PLAM`-+|KX8%5}RL z*&Ds>Ca#tx=-mA?vD5?}2K%Y^ui=0=sN>`BRRO}@R)|jx`=wt&4B3VAJ15{YlR|7x z%-w#+JT$R$ckl@!1y!ztiDraxW!{tD%X1H zpPHb5s7vI#ZE6&*as2;YJpae|Za59bZPtpJ7wucopU1Z*C9vT>h5l{0DG^h8ve1}v zFVWC4)UYRbXNxSz`5n)Le$DjVuU>`tb140~k!rBrzQ{rwX6#kq7dGcD%Q=Ys5o&M& zh7NIRp#0TIWCl<;e6_PPz0AbbM)6qm*wJyETI=48MNH)WSg6taBf?)jOyHk;Dd39_ zJr;gO8?{>66r~Oa{?Ma`e+l}Z!C4f6z5IjF8H9(zMHrie3nxCLsIRH<1M50070U&k zLtG2UbK_#mQ0pBeL^8+k9SaSu-AK)ZWyBBM_SwMA*>2#*$Y_q6)SnNJo8>=pkl{R%HgFy1 z^PgDaaQK-cWwbg8t?|WZ0o@=dj$8?V_Z&<8Xrda60EsS>!OQ)L0!!=nWR9JO=@*?gkD_#qzI1CT7KC7m7%vIVj9Eff-c zE&Ze9YH}}PLf||SLRu@1NZcyFl&RKi0TWQOg9RSMPqq=(C$)%tV9tFOPi9Tc83~>{ z&1mtgBu$)cm^$iI=D!&K?7b3wcoS;VBg=5I*{a8ESx@j(e`F0J^sEJ$N)O^k9l%bF zJ@p8>^$7YNZ)F5uZamTmUb3GoCb3{NvI5Zp0xNC=`9$?X0d&ZbG}GStpN^oq=)RvZ zt(vZ}eO@VYc(X>ag~$8juaOYUncUO3_%fSP~}eMLQX4p!IP)g$fGYBr|4024@%tOtxUU zvXd~pP|6HA7K&s&Sp#E@+3F#(6WjycIC#-y4EkfIF22xfyPvgcz3b4~P90EzV# z<*2LisrZUkY^LP0d_`6#sa>*FDMCnU{MHuq6V7LZhR{b3j2*u2D_M+HAGSM$AAt?Y zwd>VMC>q%n)yU)TSl%=DUOoO8w5dP_bmSbkyVJa=2q=cq>>B@=UJ1MDc%;q1rbTD{ z6P_2(T!Y2Y;%v-%2<$?P2}-S?HV^&cd=LcVZ+>92@KJ_E8L6M{wDb$iNbZFQV^e>d zDd7iGIcm9pGP4SxSDlSqjDI{qkI8YY#B}F9?TiVkGg1P1m+W`O1VmPpCcElju8#xr zH6S=d5Pi|s7(~k^0gS)tDkg+;<00&RsyT%3zW;Ry_uCM@MueC%lmcNrF~|cd^>{$^S5Ng)i@t!~hcher z!*pGc2!6i2o2H$UCSfd&Mf1tG4ntJL%eD$t!%xlhk2d^T=b?276zD@s&?wa{%z2|avl2h- zsUsr~Q^(@t(e&ulF-3q%5?uXhGzl($tIhxnZYz)^yAqkeEW6C*A!&BC#LmQnYnf;l z+sBw`7rPOHMa8(31&b!)QXVWS!3DW^2iVcj^Vu$Y8;k@FFmclv7@)L!OzQ)>5 zGeSkMK9jn%^cEc^|7MR?@^7|h{>|XF^~aEab5~2CF;hUOD9c#;Sw^S~ff3&uQ+8Zy z!0mJYOFvXkzS1zyKcUvBYD(Dh(BNq!jTLWRe8u7={ZEI7OJ4I^}Uk=l0&H7PMcu0V?91gQz3nnMl75FlV43Y!Xj$@)HKw0th5 zxtDs6p~ig$`o#yB<*$NCsI@@V zaiTN*py5RcCUio{v&QhP{C78N?CQ~XdjSw%`hu~g~-;z@C zMck-?(gXKjbdd*ikvb`It5al!UF2^p(nc2FMMg`J3!Ngv?IP#1$lG7AQ|@eC z#6J=-c5=8wa zcbt45ZOM1jefvuk!0x$HQ$M>V*By3Ee%7=?LO@)L_S}s@Y-sXxcQaJU^c{#OHFt4sm#*|-t?YW1gr z#&IVAjr}@nH2zi^=w8|HVjwRWojniL0F77qIqXW=eZCC8W!T5yM*Uvb)R8rP*-6)Q zimqwN6g}aZ?!7NaO)jbF5vQh~%dMJzz>PYCH94%QieHBccwg)5@S6W#A((g{cgO(i zBEl96xucRjH8OvNDvFHUSw;RkLKVfivx@yQLKPEpXHE3q9I7bEomJwWjMd6(y*ab4 z^~1C;ptZ(GD=ygWR4-jFy7@2)1=w}WVJ~4=(^FOsAaqFqs7(D8^jxY5p(`L*p@Adu z18znZshjZ{6F?n1CvJ4wU$)>;Wv{W@w#*5i%5`wvKS`W**#14qHiTxS8Mzf{o|*^b zS49@$4|8W_d1@rSwt0^}E#BW$i={%Cue!1563lTP_GN^|q^Y&m`_cCM4EsH9#$>5S zt@mf!ePo9*n@D9Nt^AKh?$B(VEHHLF|4q%?Z__5nXH>F3KiXQ0+J@`qVlXuMU_`DEYYsRbi9!B9yqyVr zRn@is2_zCGZ%~jhSc60fP7R8h2-E}u+zU4lL?w#WR1wi?MMwZ;3fu&9y;onDz@$^ZM?`; zsiSwUH?j5=b3KF zE6%kX+&N;`YZs9Q?^scM@mWo!vi?fs+X1*}R#_W9F{&{0rW&pEkobeQ!2> zztryiMW?Aztn%zej`(1CWqaO=P0np}UmZ>Q4jz7~n@(F>c{6&%@tr z!H4|1Mpl{GwESrW;bM$QdnS0_^QlZPGYdw<5;Ve~F}4U2 z3E)BlaMS>NcM?Ja-v#Z%N6rg@rj5uFaBx}fKLf~_+yN}w>i0l+!hrCI3xd|)>)g#p z?J+F>aGR0VHi3#i>i)&0f6%;t*1c%qMSGN!_v_62hwU{m@`v-=IpZvee4Ar&OYO6~ zGTR#ZCTI8_^VhqN;aSsGkR{(IsvC%?kge;FfK0zKzV04lqn2w`)tKtEW3|?|oAfU7 z8v{w?c?}@V|5SIQabF$FsJ^N8dBrDms=ff;{KN!29d)kS&)GtAtmD_D7ISV{qJR!} zrJ3kMYlFzQ?O5G}A(7uS(Uh2APRcz3_(q=2>VR*< zz9^5({Kt{<;y+eD5sW-yP-^rWZ+t5wA~~xye_+FV34BhB3>q*o5*#3WUimQiocc%b zDR)gsP=MG9;#Gts((dfESL6u3_^70}t4!%@h-X%X@NO>|Pqtcn?;qR~sf5k@gcOQd zM+uQSZo=lw6O^ynA6*9iulSSj&y6@_agO(QhVH@Ti_})v1`h6FGJPc2-mtp{6yC+P zS7i4V=^6~&9{0oc@OSJ%7JZDc&swPN%Sfa8fw$XGom6nJu;l`SKWB!CPYKEa!^IK? zB(q5UsVZ~78LXDrJj;o5>z-Ped+xvNH5^+`2LN5USF0p^&|c~ zZ0I(=8tD(;$}%xvTK=6x{1_)qR=sHmSE#Gz#%Bj3lWFmyiP4^2pkIKPuV}sDFWnG? zV1*EjU-Kr9GUy;}%S5v-h*%GQwQa#P?$aqB zwoO^v%Li|q9L+q1d&GN7L0ji|X+xhP=DWYRdD(yaBPjGK+*3CNxpmckaUrgji*dD- zn`j)bj)J{LB6@=1SDeq86Dcg>ba^_JCt|DH@ok6^EdKA5wH*2ogW^^;#89V9E}v@n;)HAY}4;j(9LIM3{q+QG$WEZJe3YVYbU{o$*7*=?nO(>S6^ zNx50Ny=a=B9PQ%^z+&jkVDZj*XSz4R?&gN{72yfYA7}kh(aV+=ri;u44E&W)EEJh4 zxycAJ0;gG|9d!!K^3p6*7Hgw!I$w>~YdYxczE9{hskkfsVV_NeS?R3aZP5kz?CUu< zG7YW${|f{D4hP>Ea0E3z+&l8Oan+dz7(PCdb={F8dymXx`3jGKgr72u^$lbmJ9NY{ zT~VTfvd&bij9Gzddy!0H(vUmMNSv7m1&=!h_&RM2pd)ftbXgZ((lPyF5uOyc?m7TI*TY4D60=Fm9 zVv}6Qvn$2^Px#lla)+4L5cjHFKg@e)cQ^ld3jgYEBM?v`gnD!Yv0YOTdzOb-&4JWEY9Xw9{ve(zcFU{cbjuR zzy2ru+g#5WE;3^fPrEbGWKH@q{(Z#6{CB{=E8lFFEplEL{Qo}xRsy2-Lj0IC|=z zhv7?PO+$PNwH4oW>csPSm8DnOe-W;Xm&vZr8<;^(Pp@;|T7Ggq;77^6+IzC|XO#7C zBTRJA8~G0+Ofq?ytI>*r+J)UZaSe-fc<5;6(x5+jM>jA2`FPo~t}m4VQ{3oUcvViO zXx7Hi1VqH=3Q6zxxu$?wp{iBmg|a72tKz4ax@Mg5?#X9YI+`6WMBt*WY zC8yK;OjPGts2=I(hwhNOfFdHIUz~3`D3YB9^!R#OO6pp)VRAS&1hvH#EG@y}ExwhP zp!2qrozgP2e*cng{;gZ(i-=zvYF@UihcQ&+Q)QpgBQdSZy1q>5PVujmMMIqmh{axh zM6VYl>YX9TOgS*gW$hMFs)>H_u5R-I)@;L$bHz-meZI}N;t``xt9AYP2LG^6Ilh1d zc29o<25+Aj&Fn6LqIjrRom;lrfc+8(b6g`Y!uw<-jfS(a#{-gEw2%-&&3T( zdz450VE^?6e~B*&MCa)Ib@Ac(H=1H+^WwOEPSVfgR}ca3KT%gT4c$_5VyED+t^Uwf zGG!cfub1%;=I9SQYvI?OBI1iU)t*08oK@9uB__9*ufVL5k2+UMvS`74)S1L%5NJr{ zdm3Epj5NQS^r~D-c)V^Qa zn~U!JV@_j#q33VKU}65j30PO~H@r(u3XI@~H)?0GZdY{|&L%Zzu$16_8%@q^GOm~@ zdS?(*JJ_W%FA&;A}G8HDJKKxWDFF%^yIoxm=WlkY|dJ zS`0WR{I@8^8%^4ZhKYt^C73P#O~!;iO=GI=uhHO<>{+|8hZ$k7PSx1~u5Riwj&PUI z(d=bsHu8sS83W-jVs9E5c9gwUd$S&eqGWxiC=t4_`>Z%M&H`x?Ov~?!gxh_*r9*UP8`jt85!VT-^waJmq*K6#`)HkT?iYPT86)h-{W`1Da9?{#|lW*(v7|mL87fLvK>e@OSgTMLqAw0Q@3JqV%^TLJ5A4?-t*f}0* z?(SQ04t7N_dV7n1-5*>Lz{`&N7> zrTS~Oy7d1d>ZizGvxF#VUw2>Qxkgb@G<9^ZQNsU9{;pPrd^Lc z`;#{4Qx|!${T(>`}LROk3~@m5{18A@spgvpIH;v3*b1WgK;rL?8(bpYH4r@ z&cVAf;v=*ubMfS&e5dp03oW=TSPVu~f@z*B8wwM##8P0%6WAX+=i*!08E4o`QH-pO z&TP)#w8nz-jC*n|m4DE0v4NP4o-%Leuf{)rR6D$5s0;r;Btsr!%!cp6pn1;hzoien zo#pWvZJ{ybh~L)=28;h+Wg7mSBmSK&{+%r!t&k{Bx?HF7F3TaVC?;%A-?-Pr+_M_1 zy9Fa9c{s2Zb4TK~a*jjpJXnqscvUSLz=-10;M}U7<>9w+9(QJ2vD`Oq)0AjtL3y+U z`!3$ke4Y|LXJC2sHuwAQD6NxA51Nj>{N)xP$r20|3zbM)DNJFfSok!f{l+?&F6*GN zym-%&^4f*nJJn1mAGQhO#d#tw>}it#+oDo_HkLw+6~>-HDiDD{lmt18Q+?#{s#k&y=Hs~ zML{C_a6988{mW*#J-G98Xk$EEN`5|(D~8$da#rRBm~&)d=#DiW9Ja|Rc2ZdnTS>l{ z_cs{(M~{2W;}L|b^P2bgsk4bk*A&|6tWEv#I6qp8-{gL^1OPUL>i{ls20qljVlrL^ zaeblj8tbmvlGxu`X?M^6{R-4WMlY0noFn;&q_ml2y_j83)!UsLEpdkLlKmO$MOEXS z;0A52#f=Jbepk_K{l~hfdky4G?#QYTLdk4KnbjMXZi%rl58zcRU3WUAOHFnM((Mf2 z|GbuN&fmx4I3nwZ*Bg`rOUslrL`p- z@xMMJPNq9;qR4jg%%h!7@p+=4ZO_{p(-cBHQ!WtxqlYe*eyl5(JS3gn6LvEAucfD? z>i#96WUYC}Ir3l|7KvrLW{c6!ir>Ma^WrPW`Dy((FZ=_aj&H&~KXk$|w7}O;Szzd4 z^O2BsT>C=d9p+v50QaDr`y7^-T@>@dYW3aD_e}6?+fWSIuQSqsYd3z!x6;JAr@?5u zZVRSaIAIcbFugPs?3b<+MPUjc{KdF5PGSJgkw3#iUu{)q-0-Gxg!S)t?rK|MD-~ow z=D|8?nO;_XFBQ{^q98wUYZhsXEmZ`A%ZvyYwWg?X3(oitgA z&2UV?#nwZKeGHQtx`bah^k6)~@4yVktBbi;*3-UkZAC`yv2&}lYLA`G2`4V(wwFP7 z+0yB3=@PYBdlw7Lp^5ut$+%of&Dx@~Yfh@Y3r9rHEuHd`@foJ+lPLhZmyn|3NWfS3 zD6P2lc`?~nx7swTMgDs{mBH*9gz!@uI&!_Q?hm}>>852l{5zrg6g^kx#Per0@-&~E z7oj5yYfh0Mt74(vQu=~2N0j@@Ucr9=StWUpU3JEY;ef`jL9{9HToK#8ECfzemqvj(Y(Xi{+?YpPmt~r z!pz#)CD`)K2YJKpABgI!^^G!CUrATs&sUeNhr3P$4{tO6+Pk!^xLf2bzB<>pYCBJC z5}GRgDd`UD8cAb2HgKF>9>F%N#9f?FA96 z?y%oSzN5L|2B~Ok(7XCZfhXh|I=qjQ1f=04e&|_y$B{V?uvmI#IyLXe=1{@KggIbs zl;*I37$`n6FW_0nl9$F-e~jS~qb~QqFzzJ>>^dfXIMaWt zCek?|jb*-TkkqO`^iD*jx2ol~@L)6(C*&kvLO?j}u+eWb+No;KkS!-z%swsPiHtqc zD-}xOvP$kZp|F;*XywqrUpWQFLy*%+E?+-MhS%UnDwepnuqF%8n}R)#~lwHyIbf zb6?CGFPlPG77ccozw)4HNgBOy^(}I}HaoxHr#&q9JNggv`FDZv?{Th(qPF%-?Zjfd z29c6$XlGKi>{N!k7pytwY!oT%Y|+}6Rgh(Bu}3Y1J>kRFjFuVWL55Ma7D-aM>=>&D z=(&dSvHw6*GWI#uL;1I`)c3&FvTis6?`$dYt$ho-oAn-B3AU5id}-tV6(S-xTSRQy z`@ciP5Uj}mTSSoO4NsT7!D<|C>6zkBR7>ZYZivppnl1sUlTF+hIqxDdou-*5gMK?3 z8T1JUp*>7#NumNS!fmU%kLOnFC3GG><$Zh%(qDXm~D9)n`yWtvG5_E)ryJa(lq#r)ZyC{NrYR?sYa|YI&ov z6;jzQc8nY*#_Z5;!kY*PJ5_(rllR)p@AbTBlr@w6nXh-5VgN{IMb~*U`MLjKhFnNtrJWi>qZd49mRtVtj1uL{UsU3Z|BaBcb*x_{_!}^PMVRD{@2j-Bbhw}U z4W1;X*f|++W8Z3HY+3leP&4W9Enk>JP-~~9XK?g%At833trZY#XsRoAFm=jzm;6&t z5o?#N^Wu8%53SqApX{aQP;FfkkD<})OieQ0*GhHhKOIh9ryoRy&Y->*DjFJnuPNJ; z7kMfOetQrR$6Cs{z?Li0>(J<#rd(ISRsbxdk)cSAibNL{@|a~x*EXp%|KZ}EHUI>p z9iv&X;)YI6{yfm0f-M-x`Q%=gm12K!t$)S8`73>EEB!1X+Qg=b)O=?PtP+LX!S_(} zkY#5e1@fu~@b8eCOKTSfi2*ZfsCXtjUlr8EG%Q!nyR&Qh)GnNq_IV1Q`Eo8-1c#an ztGf(uQt8S1XCe?;`n{$xrtJ@EnpA4qRA`=7`6CtCL2VNgOBKXGVzLw6Z;B9uVN4=4 zs)Bvao+>c3efoD3z&&Xf?EBJ9n+|vd%Mt;SbJ4B5^mF1sJmVaQF zWPFD;2P9<|iiPHgB30s<*+J|RqeWaL=JX@DL7#D4NHJKm;>G-0wTf9`$|C%w&zwou z=%t#9l;o-?mAJ!1v2u6jC`yuVShPFI?n8_452s7je~CU6IYD*BQ=z)@t3Dr+yZLRI z#)O+BokC8Ja2rG!&v+|;Q0zU6H;W$=+)LKo3ea4cdOoieo|8N!aaiI!z4A-Y-rCVv@6Ae!{~ucZ0!Ya}_^U+2oUI<= zFC)Z_tcHV}Crqwq_ALc2tR;*w>N%XRvzV;#W)>w{&nzhH&McTkqooH%OKZ+&YL}Tsb(7#W=5B_dP z(}sS%zxltS-}%DQzfZqr{6(skE#&5ioj{{x3F1oj^S?sBDbNpO%i#z8;4D{gE5GJL zU;je(`zxV$P9u_}50_ttMt0Kuthi@oUq5us7sw3mizb=3>ZW@PlXK3wtOGz}cXmu2 z-On;J|A_S;Dhdbxp|p`ns;|G%C-ZB~Z}-Rz8f}gFZM7BgXY72{X+a_jit{W%0?`$Z zPB8i`%~2+l@vWivOgINI6WhJz*TJh1O#@$*X!5ozwR`f|FQn{GP+;~6tY01x{>?(% zw6;&u%T<;l$sB*UBAWn~&MlYvUifRbxhw#BP5G3=NCX@2u>k~5zoo(<+4RCk4Dh;> z+g(2z%^DrS{YH0U_z``6c;2O=PnG5db4~%^5|_xt1B%9sUU-(EzVQ_+P;oEt5kK{x z#3NM#h)Tx5tCpi4T^&?lI{q#+(hlbjEKJ;4>J6DqBZkLR*4UqXLSr|VBq80%Phn%z zXFDVQLn|7)jy>N);E%5YlzrPpZ4fdwAEWXqqaVbiYd~m`1j&R*( zbQ(EhWcjkj+Bpwbw!9b`+3uIKgt6#_Bh=OHbY%w2nIqQ?#(*nIw`S&!`qs_25_g!J z$;o0E!Q@;z@VEw(73AnTZ?-z0Fow4MgCoAC>1k(WtxC3?bg^=L2npGu2l20)KWGS` zc9=iNs#F|EYZ%X#+GqGTqtROZV>;WhXKRUnkw}gKzl~MCw-;Sh$=K&@vlOokgo!TQ zBLqB1BN5x;EO5~KjKRS$2Q|&u-+Rm*d$t{WAJI>HAfp1&3fOGtymL$xW#UlR?&)-L zqB;q~;_zx(`(qle>E03_NR{vbxv8>#bPP)1%QTb_AW5{(Zq@bop?{-4dNsZ7op%XM zc7@B}v!O9{hH|2YKY{FzylA!L$S z=;kj)l`VerDJ~GA+xQ{bNl?q=G@|ma>yuMr&Ib zF3fv*KG<{qI#?*Q3=lhDgsb1&DO7ij`9V&eNM#{6f^=&%^6t71LGFo?FX!HAC7t-f z6?QwUuru`4G9oGLWFNQ!&xkD}^$ho?p}P1AhE)B#_RwqvoFP2kJ>@8l1(lw0(Av13C--#p?_x- zByk;|k4Q)phl+2ShhdF%nJy3W0m81&0VF9CEtV^B;;D7h81UztS`WC^Hf4FL&ktJ%ay~H|HD=3JHiD?Na5&7Ji9=WbIeYZeT1D4hm(% z6?*3@LoGM>?t20_LM>M;J3G`e#aAcyWMY4l*S`8uRCiJJ`#-d_#Afk3)KXa;oYfd= zxxTu;8mZSB(=GJ#gA^)F{0_hV()Ai?G%J_v$9CAyW30h|oG;%&*}kb|D{a~ROA=*; zJ7<>)e#ld(<@RM&p_ZA|=Tn~_zWRrGYr76}x+3f8L`}AWvsL%Is{2&3)ax(JdM+qpR&Ksz~IS>45Figg&8rXnqkZq?Ed zT8fu|pM}-k*w^X9A~ZhS1@iTm7TQYL$x3F7e|w!$JzOkifJN~^AvSYSD?UIm408E@ zq05#@hQPcZ6zh`e-yr9i=wB%M7l{4^p`(?{F4Fjpj$d|q=;*lWkv!GhZo7Vd7Uf^o zRx$DgDB=r3M<-N&jXKrE@kybhvzDC}I(mKexu*V&i;Hb7Q^7e~wzBslF+9OvBwcKBZSCv&mY4uO$h0~fgC|IC-R zKM?C|W`*Vd2O%5dM>Tr>FW_I+FFJL7=ve3Z!!)pbjp($POo8ashxGa+5B_ez@2eln z7nTpT0ujMb1u%HcnC6q1<`WvRC)kf}3P!SnkqR8J8|RTVnDcxFW?X7A$cTpW^z0*( zJ^lZZTD!)(nejCfQh}ABZp{d1W4yWc3=#l~r6ilMz-){fbmoTm zrT&cF{+-Rn?y&Vua2N1yDVdaET9{*O3%5;YKi`qx0w97ZADxCZIR!D^Rhr{W*M8aU znUWusBgzYsAfu)+aAsjZ-#pCtgv}s+_9G2K7FZ+ZLNOySVR#J_CK)N4traqiZ9FiR zu`Oi{N)gno>JhmG2L6#XY4l|TW(7+TL~sG?SI^UuW>zPDSo;4?L~H9mH}m_BWuqm_ z`ZD8dzHa%@`O99!z)C9F-%7b32!9fc_8NaDLg@v`ZRe+N=>Ev~4WX8K)fJ(Z`89)# znCM|N%A+(8$B~C}Ikt;Oy0CJ93|z$8v~IRjve`*A8$Zz&06u3u)rG7Qq(B?DIbtBs z>0g~H0b~N&>#8#}0kpo@W7o&mFrisrJSJSYJIDU0-Q?BI^g7-Lv48jQm#y<1rkLIM z3mv~>*)5^tl?aLBGplR(>8pPT0S=T=j9lliayhUCED7rmZ7fNw7v&$=11hf|YSs=3 z#~tAnVDgIv9wrsPqS&dayD51#B}2#O`Ra61NAx*9-&cR8R`$%jCIgcNRmkSMuWlvt z5(ci|kaHjQKPp)Tk{)RHyh++EJ!oo>|I!wZ~zV(p4mD)pR(}N{Co@L9AEG^BtgJrAu z)%Bg6)G}lEuGmxnU=c zj0(>__zA{>jN>&Lu1f+xre-j_+ZZ#$Ic<~mGqqt1O)alhamrPkPDBBjTf8U{cVf9X zb)oa(-xSR$`$~)05(e7mWQM%-dk`3Pw~4tHjLb&ey*&>dXPiw3iGmM?V;=Xep8%;3 zJ=dDlp$Ai#so%H7ydD_zR(Ppvf0vKeWt4R2kJn$duj+BG(SoL(c{wNX% z^V)#WDHVj(jewB0rsen|{>#`8&@ZfXt>Jef(p!EVzrqH+N$bvf36CZa6)5I(go4^- zCHQ@72NBTLwDd&`gelqO(Wyqg1|z2_-Nj_ZF;_|7vB2L0-8?nBay$@kSSzG?$&IXN z@j9`gfV!ND87p{@KNYjaZq4j*PF_&SB8(pX%J+oi>|pq`STSe{hX3UB1l6%~EY6Tp z!dX|N@L97JdNk{*?#Gz!J&7iX^ZIvFXm*3*GF(BkBvvgeL(3%%CMW6DWmBdgxsl?0 z>oyU(tzS&O=;RhkY{Jommn_9UmXj$y|4Mha#SxhlS<2VRt%(SAEgq z@?fZW=CWbNK5QoZ>l`YEnu+5aVjgDt>IU#&`R7dYYRN?wBzIq=IBCeoB zdIUqCX1FfaCq6|D{sWC?>W7-qe_N&h+`_eYq4({N_@%Y28NOO>vMzFyi92zC^^vP)EV<^i_eRaEUz)*-|5fqR}c8Fm4AU5vDLX!CHJKiQwLO!!$Kml6fT*k*o-s*IV^s)_D`B>`uU?{N(jMu)S2RDr~nTf89DOd#{{?b?h$^jIW1(*f0nld5yaF((t!y*}a3ot^Ex?nvf1nKySV zX<|Po$iQ78NWL7j_VFO=e_ta~AYTj~kS`V=4;wu#E7BSwT)Sn;S@usv{qkM%hvREa z`W#*DilZIQ{nv8cin6EuSYnLHTuTAr5C3z7M@*FKhR8(WEJxq3^As9=-M5AR-jez2 zC=m>2P3C?4E7&OGc<|mkm5_#WI&Lv#pOZ`!tVUMSmwwAqIn}rJvVNuEouPM6BQu(x zWb4=|8}fp_vR#ew6HSbGQ~U(`w=o#rRjPuaW2gA)bpnCgv%2|KC{}`}uJba>Bb^#` z7O;M?num2XbaxfWeoSH&i47_1IJp_~^Go5kcYkg9%~X;aql~)|gC5&YIu6@~r*7@ouNxIT0es7~3rz_@nLWP9;O*&R}JHd4m{8Yu;Fu?@Z zF+-*kL8ZNvDOj&Qi2$6oMmB9rkpmxo4bX=g(D~+d%!1qq1y>W#No=P~V4_NOuD;I< zAxOfhEN2@bDveO3iT*>!mMs`BzXAPSY`p}Y>|Rb+oR9w1;TE@SvNz)a@bvy14*F%c z#Luv`!*4l{)#*5}MTzSzNR$nRJ&-a466*&G(+I)D){a^B7fUXc(4J_<(FTd8&qp)x z^8m(cS^ApOId%`n8#oq7MnOgC2#?&eg2o~RFrVrFxcK_Vh3EClieB?WMor&*i1_$=@{~W6}c6XGM2}X znrJi_QTrpE1%kIfvM_ajWTEr(yR9PVHVe3ts-T<2L~Im5tvO}o$d(m` zzdfB#HZM=-U*IuKP{7^&WRgsl|N3}cYyajkg>;0ENzqHs50fUpNv`DEbr(RxL{OGK zznu9~z56(m_MLnWCPc*8ch3Dcv=O+8Fau-S#lGFzH!l&a`y-1mv8@Q6XGO5zST|4R zm*_7dSbxp!aJB2S@!82&U#NlzxC*|6nitfJWCf6`4JhJ29}kdT@{#c8$@@ii8j)*D z*RC^Rx4yc~yj(BmEpp-6Icb*o4!js z>@j~I&Q~$!)j7O!^eW2iaX(4l_@j0CYxwIN8GWb)HD9LLQ{;~X=(^4T#?D-LFH|P3 z+$eM5$GPW2F0cIa*h9wW$Dt~hjLSERs+*iwJNg0&ZWrpA1Tdh*4gQJ!ce@zLazR^Y z{t|)GF-F!<#9-tx?_r%PMK7Fe^un|GDj4;QRYokbi+citS+0XmTH9eqkLOf>5)bdY8L3rC#{&pw>5VlIwyOpVp~wkSnZ6s~c^ zH5*4BV*bE4<-%2o$2S7a?&ykJ{Gkmc#;Qcs{K+^-K6SSLCm4IAv;&Me_jL3{)1}b> zi#FI`Y zEiGou&Mh5Pa4I_bVytMyP>%D5Yh5YMEX0Aw`DVqZCcNowAI$!$@{<=O_ZGeUt&XTjj_)@&>E$5kQFk*kBqlqOZ(>Sh;e9k|{*SGC6 z_07N8|2O`q{!t#>FOuH>1^-|AKmYIQAC=Dd$v-5=zTMt)o|*CgWBhNuo4~*FAEoqv z!T+p(t)CpLyzj$O#6M%#OHbOh2g=*5L71AxMq*k$#o$@NlIl?Rj4i5@O~h7_KQG>s z(}0+--IgA02_NQ&ND(Dj2349O?pct0Hq#5(uWfr+q2jkH`|bBj@@{LtKP&|l_Zt^T?pK6|;Quyu$J^Hasvs90N3CHX$^d7;rA z=JL%N{iaaM9AABuCl+=0^wpw{jkHt4JcUNz6ViaYbKA;tem9!yRTl8%oTP!+HH(QB zB$aN8e|Zf4;$L>mx~<$-w!`?BcbUK>x!B)&X%785ze5SPhRR)qSqiX1 zm5#^00adSJD3nE}<&-Wz_Q0(xqQ1L(AXlt^j91qjnR}VuUjvL||h$ z_zM0$cKNY8!}A_6?a%SrAIK-)THF3Wwf}owP;%_sZ+_pPcFP%z&A?~I7ngdD zxU~4-k5tg^r3b$mTK!g)iT3Sz%th~W{H6~G@%(-&++ut9&h&Y&F8C&0{q(($H`JU@ zg@;<)3fhMRiBmKAr$3l{h5t9LcSlsC5osHfs%pbmKi&3sO}>k>3Ht59I9@Ow=8eXG zf58oV&G?@>*Db4LGrs5C@vG?Xc|pl3Yd$~VtJf_FY_N9z!4&WpET*rx-b4bh$yKmR zZ_bqZ>a?c=eFKL#ROzYyUjEhko1F+*`3NGvIrqTcofq=#+;;&^Ue=;(OxZEq1@Yoi zSA1Wcr%2z$`4!GR3P=g>h}a!EXCPU;>Y8fuWUiQcSQc_2Ncto*v&4ZdU52u<2p?yQ zj9n47YMp9E82dAI80LFNhsJ6KfcpdI7=&=QyXJOp(P<+^2)B6@C%U1p@~`}gcSzz+ zIg-Sqj4MI=e?GJSw?qTL$7aQ1Fx=|{-p3I)qu=4dd++pNRB}-oH-x9e%)YWYpP@|y zcPH>NB=v4N&dS4YAgSeH+oYYqcku;}8~(oXFc3rPB141QP6kLeyo3)gZN*2qAA z5wS*$K|h5Q;A*{Ox94hYegxlXSBCsF+vlz8wQ`S|aDfk|xh9@gTAYjTR2444YYmyO`g-@{w0_~EPnq0r(*#2asip|8_iD4u-LZF~YeS+H0n z#qoAs9`@r&{^*oE6RP^U^RZ${a4dz7z@36h@(JHF{5f1CIVgbO1OpgF1Q?Vt@Y99h zmJdq9vJ7hmzI?Oru_<}T_2-KOfG$YM1L#iifiiUh3jTcy?JXMr3_#%Oa_x&REDDXT zachJt3$TO=O%0N(s)lokfX2XaJ|)hBN{zT~*v<0vlXkA|Zt)2@FXkViJ21)Y-~8L_ ztp04tKkBPr&-+Fijv9548&5x6P7;4F`$?~o3O%A9~OE+Kr;{yQeIeK#EPpGAPO(um&6yDNx(Hb#y$a6Wau!I#EZkWb#c-s#*{z-&f6)t|^5^H`^rU|AdIqsggR zD3d+c#*dR0J?pfWw5qoARU4CaX6EXRX0o$qqC`Z4CI>xP=fgp@(spC=O05|33~%F1 zFcmzWZ%Pf{|MQu$5X)$M;P>QfwS`i4D&1B9!M5_EnK^PVXaaaMC^gjFxr23&U^X)( zA<+~{ghVxm&*i6*jh&`rdmAI@vHGiCg4u+LC<$UFXWA@DkLzH8mWX6)K= zv3<24?ep$@`oTYr9PJwWc@G-DgT`Y&A6jvl9!1tN6?Y@r}=F1Gw(c%c=4Sg9)hIIHGM_~Tb5{=z!ygpOH_ z^9Y%%Gt(qK#O&(z@_v^`vg17xKf)WZ8mqsdfDtyXOT6udw}(LDTr)&Z1q+Brs|AD` zDps7*sn?ztIkHFzjX;7lZ7iFA+U4E_>gDPCJ7T1EV%73f0a$md5a*gHuC^u|$FFdl z%#?`1>lHC5>?VQ)P5ORR$)VE$V7LLmBF|+%4M*01%tTd81Ppd$O|U=K^R{oynGxiW z8F5UY>aKYPRl#r`sW8G@%gMI*m=NZgIy;>K-xGJ%<>wfFL0!&aN?LXqzMcE|2u9_u z$d>rHWR<%wk`!(7Jz(Motf*_(s`20_r4%Bp6Frb`-dFcCd2$i}>^)roylxM8_FZri z$2@y;K~m^w-|ABuV}H~P2p#QLO%Tn|{=WL(^BV!N+89&8$V8&VHUuLlX`?DwynSAc zW=)lb!jMFD&mc7Gj8{Frsvqph*Y)2{CA*l*KUWx2bg|A??!QIIIwoBq__?vbr0hyp z0m1M@g^cxXInx`lks^B&QiLev9ZrskOHShxoiFsP1`mT4Q6AU2O~mH1vVW?%STGJvJ*o!LdnFpuebRRf}K7N`V zzCHGyRCH^l8d7a$uA!x?mWNY|1P>PX&NnXA$>8FwZXYxlGmpEyr=iSdYi;}a%69a%}DK|IP1S+)WLD?;he2qU85PuiEZpDVAA__4s}yo8)J`}kN*nv&S#@q{b9_b?!;) zPy(Z$X_c${Fv^nyiIbkNg!7}b(#MzR!3(1H_}QCHT1$0`y_YT4@muL;!kx>DU!6DK zO0kqk=NAV7(&2kkaUhWDZc9;+xdsG})zcJAYc5TSw}WQNTg@2^`>lAJfo~yZ;{25v zB9M()-^|&z*k37Z8GNLwB?S=H(7W9Ioyy=(Fm1ow8XDkQLuUPA`P(~QZ~0pMUO-2! zETX3df{S>h1O8S8O>8UR{ssOnWkn`}rt`O5Wf~jFq$V10tIOZ3-8E}JE#2)8@%Q>0 zX+^=s>G*FY-aRRiPIBst>NmHc`j!EVG{cNE)ht@|%@nGiK2zYQ_u9&=aH(xWpQS7l zgkChfMR&dz;mT1-1o&te5*DX5lg=Dzo;=NAx>6QMfEc5hN}s} z8f(K^BAvmn;%`QJYm1aPteO2KU^IWZ=h$n->&L`m+2x3iCMhJE-N*1mCSH$QToQDS z-(ePXZ#mz;UL5dx{2S`sL_{aTYDRjJVHYPK=XRrBe#jMHsY3PvM-qT2S58C1*Ko?JY5 zZ~kmiKl)<+9P_tYG1<4~f8u9n^%Lj&#uUB{yu06-aHhPxZYNP8#dI^*1|l+vD(2=! zY_~C5w%VCxgUdvhA}Z-7!RUoM`+=jL4OY}W264q*)+*jB4zVSzp)3heA^2Pul6#*Z z6mf20nW^HYBfvC*4q+^0IfmsWK*!D&<~vvhZ>^#U9d9o||E9#Xe^n6Pa(8QCeE6mm zDn?Y-mHqf{L_8M;mx*Ifa1n_|(Y7pek;gI{PqFL2m94vLFx`3f>p;_AA{c8)Y^0j^ zCXig;R}J{$U!JJtWaIXH))?Lb)7XRv7OODQc`3nwx*H23wQJf60jZXfR!L7m2%oWU zLM{Es6ptq*et80FXV$4=(e{OeXLGl1mEvmEwcZ7-=*M-HzEzL&UYi!H-e=Nqyb`TT zq83s(RB`g;jd@G$;R$l7dbl6o7eX(uZ;kmAXQdGOr(YMJrNj77VdMN!%8J0#z7^8G z16uN8Wx&S_`m)0)zvu&Kf2nH?+PoW6Kb6u+n~=T*a7z?63+CK$O66KbeV?UBpbN{Hkd9DN~o?%b0>+%H2yoX6C5VtReG zy9k%oOmI0;MT5~fnV$BX40j$NOb*>3^}*x zPBCD4vP$ylKTMOZC3`WkC7w)K61$p>7RkMX8W;H8WB#trFEOB!V$L5~tNA9xW%G_q zc@V^u5_b9GvMKIHECdy^RD9Sp;dI*~`IK%qn+*ATG0Kn5Tjur_^t!eNF`f4o47%7k5(78Nv3%SlODKGx> zym>*&3qo@%I4RC!-szMpb6~=6*V?&Zd$;gOc6Xv>%?4bI;o?F!n1|nk&7^!WoMF0i=h4TNR%9DIGm?L0q~0|; z-tg?O%87lpX9#t0!eU?amov{A!**R^cfS+!ZHM#WyGFu$Q?9k7$5c(E(%EpL_Me)U zwjNT$b;4jm|7%QXvi=eYIC=ZvA9!zKo&eO415C^nqyNEr?nQp7l$get&Q}=IIo)_o z#Do_Ch%>JZ9GwgtE^1d#7Z@pK$g_lpwbSUuo{D|1mkeSY2{>b3&iFo)_`A!~Ch_?d9Zce16)}lpr*o1fnsquASzpX>tLjWX^Z%2v9aNpC zs=uNt`=@0cpHp;R9U&f5iNyA};u`W2M-*c*QdcB4%58puSD^zjkOi`|^JHn~sS}c{ zAWWNmtM1{mZ{-hE2o!JlD>qq;C?Y7nh{aB?tBHdN7Qa@L#l;5k6G~rT9L%p^_|0{c z?-V;O2?z>C+Lq?mk!}nb$0EsYis_70?b(2WB4vx;!wOCy{$`t;@y+AxB~VRZVjwq z<8vDGpptW=JIq!wTCOr+zh^gm9&czpGW*-||LdB3>G{PKMP&H@@KT>|xFlT6U9>gF+sd%-*Jzqld!7a5Lj7D5VkkxEXp19}E6qR9e_!TM+ zi|DIuDgKV?Y-ISa7fP4#EqUIo3Mn-^aoo&1X>`U_k_#N|aGyH2muGW}rxSgQxO4S|QmP()Uz_e+B$=ppi zqBq$xduOLm=QmfTkLlft_6c*#xhaHU|FR>>SZXQ0ywS#&*P-GGKKn#06n@hBf}-wU z3~OUC;a18MEp?2;{C&|i%I`HxDH+@{hvk0K^1#X%t|`E89w%Pns61I%d!{a?v#c(e zg=&+l&0th47ebD3Nr0&>wGt*7oTQEUPgH>*Nn(n3Ez71vY$8>R{M+eU@k|b1x#(}j zk9n|%9Ea@+gx_#42MP|}<A}1>E9;7I9o@KzM%SCORlWu;BFk8 z`)(1c_%+|ErRoQ%Q(0PjY(7i-;@4uwslu-XzItn1KiI?zlfz_ z6F+oa(AYLhmB)^Z@8k@bCv;oSm_K})P+p<=GO{Wh=m9F3z$mL21iLrWhg%18F@#N&VleN#^K`D0vgo{ ztUqJ06xZ}XFgz%CYguk~+2#IW!SECuO1d25!Kp?tDqbPWIcFlPR zayW?RtfYr~oLfSFjm!NKuU;D-`K9c{r=swxHQ8E#7@mm?4mF=qvm{`* z*UBRU0&b=n!l3qe{)GGg0RdjSElB`-aDB$)l*#k)c*#s}W~56Vb7`6Doj0@6rm-2= zaz-p4hihr=3&!&I)oHEdNoK_lZ}6?UjaR^kW;h5g0+Amy@dsy0Ao87cJe5aQNW63H z?Oas*hS)FpQ3lJFA?k=<^G5LP&lo|^v=O*!;k)G;1Q}XdsRdV|q8SQPG($Ht%GIu< zd)B308|BbG8p=R?nZbpeN=#6T3p=84*}fz3Zj5w(%}@ryQv0$Xf}x^x%b1{UFTQLN zzozgDh0x87FVg+=gA@<8;UI1cHxFB6&2qSnb1Rz>0mB zgrBC~e#vKN(U)+p9fv!J7ztF|iq6kmdC(psrd4W;4W(A?x~Cu+lHnNt8uQ>&9>@Wb zZcZRGSZYM4b+Zxj=KL#ad*1Y<$dH9+lG$lCN^bm-^FmI)Z;EX@FdJpQn5=cgzPQ#@ zsyrE2dHH3f<>5gCu&2oukz7%IV-ie5{B1By;M{BRKE`3Om82|A_BcdJ@oSh*vl@LX zlshOGex-aEDM)tsH@uq}*l_gH;NVyM8OMUdw#X6|3!pMs7`xW;^39*{ifgAf=E$cl z7j}PIk$9|7bgQ_Xgi>0N&z2M0+wn7w>?inWFclvf*#_NS>)!$vADp@ zs|ud{W|{K6@AdST$xri>B*6r=n6cWB+}q=Lq3+OFg8 z_6rg0^Vk$P%7?<@!>kq5gHtd@Yt!WZJ-R31RKN8w(Ej|U)@oveY0~v&Zz}5Z$!a+*z2KW3B6+BEv5bElzy>@7@LD;PS=FSzFrFrC~6rZp2ZOc$mRZD1mO9Q+j{ zZyKcE=I0#A9OkubY^^VUZ4R)NpsVZHlE79UbTX#c88ruD5AcOj-uWLD{x&kyxAGEO zunz@~4OwuemESz))ts=Uq&y@3ir)L`Uq^Og|7XNsko@J{+4?>yBmM->=hmFKr37oV zWOAqY58UsCBzvU}FjPz|4SkkT)=)9oY~VqnV06&h($K~o7!$iDMMqri`WZ1amSGUe z{#&^MNr*)T|P)?E?WH5<@ zJm~`W?)Dr>*Zv*UKX{`Org;kxJ{u7t0pm%J!1I{slc!uc?y~Z5&s=$yavve6ckgIdBfavBs-;)QRh{W5g^yd;YWp zHs*eX`)7|8FX-0_4KKGf;H%Kgfx2D3`lBEyuysro-FHG$2Qp%R<&E3-f`E25P*Oaj zLrDeaI^(SW?Fo1UM{uq7PZnzbWT8iHEzt}m5kC?)!c3g&RgJJVmrdODvgYwMEKft5 za*TJ>O>U~<5&|CKiYhKHS95$0e)Nqo5~O$r$sT z`}?;~_Sk?gb?{mGR~q_%I9v3u68)>xJWSxN&q?w)d{_MZRJyPDPfPbokM1Rg?v&Ix zYr(MOm!bI&`C(kpYLzr%T|{oszVz2^5qzWQj`dp&;C?!QKR zz1xj2#&ECoo3&B7x;9 zU1!?zC)%2>wtCXmWFDNIMH-WLd56=PA(B5~B z;*)Et(R|rO)3R&6$wRlIY29kB=b^j#UNo(H&E@>+Q8cYb%_JUr7ES9}Glqv=?)P3b zBlvY<(XrbeK^$3KG>$*=Pw5iXV`B(Ye6_PX)MX@F+1U$ zb52Pm+`l%y`M0&&nd~+}5+J6!4Gi57Tv;iT@gGfn^=5UF@zpkvhv^?t1Pyp*!8DW)Kv?mT4 z4I-U}GyPhdah078yp=4QX-=}cwBefGEkxjkci7#pDHj|=B%8E{iE^^-F>7;Kf8qZf zE#PqdRAiG5A-XV|_=Jm%nk5Ce+3(~|0A21G&3f+x@`3=9Sp z$680orM_Nf2y@#!%;bTY0)i_~eSAX$!n4;C{IQe3{etMkFqwpiZEVj3aeAMe%4xO> z$t>SOVSrO>VKe>Q2X7rw+FlX?h8E+KlKYU-O&>-^cN z51K-~zR#aDghaEJ&PHlp^>r(O&(t8Iy?)hoDsmS;#;H}AlE53%>Hw6LBuUk6Y&U0j z@Ak20%(mEnb;N|Nv_g_i7@ed{A&6Rf>ii3RYe$?S{mkZ3_!E!hIgmV8BV7BkA^CIs zvCz6-v_5A3GIZT~T zeJexMVNI2JerfHI+Ib}Py^=_dikz~r7aziDy0rfD{KG!gX}QCD{djo%gJ1JUGtYNM z4wFwd2)krll{0*MTBQUvdR_675Ip)y{-g~I{tAEMT#O90bISR>&mCgybTe!0_#}G4 zF_YQ5KS;^~77t?OCVD|wL>5|_zqQOD(8@fL9&9e$H1|#+vB*E{En_fp3rNDje9WJL zdlM1CCdWm}aB-Be>KH zL=XSjNY>Aqzb^Y?{TF{nKkUHc;p8NSDd=;|3~=_J*oN<8U6TSs`_Jp_{_`I*LBjG6 zw+R<)n>Oih)cqT&$b-HG5Vw#Rp3c7d$MjVWZ ztmfRS7@}Fhm4w6Hef8%pq0v8w>z!|;QKis41Bgxi1?|K*-OI`IaZw6wnrhMLQbh#`mfs$O`}=gsU|=# zde!GG9AVpnD}z@*t^*l&@k$6!EP#L+$4(o+%jgI4A#YgAeCPZ16p0TMu0aM;aNcOwXq>G`67ad?)2#t=8 z5G{K9!z*mV7OBdsWS^W~3J&26F-a6~&6)OPi21{&Z?0`<(U2#GuQ?%mVsz9Aq0u8v ziziGBXP&_B>TBm~>Bm`(F1|#Ji36VzoFd|%LjTZz{$xY@38MY{ODxIRdzl=`JYg33 z*S9ZtEa)=3bB2qP$u61snR|cS`eB+;+oVM_A>4I+^i2K26$fg^J*xLSb?7E{VqrbSu_k9z$CToGhTW zR-#Lu#EwxqxcCp~IX=QKlaC~k;W^o%(L+t|+`qy7l+6X_8Cqm72G$YvL!0Md zcY04adbG4CG{Of-w%0j>N8|n>{|1kNmd%0UHG#gDBxRho0Mauq#!u#9o>9x?X|$*-v=|^Q#UsgFC1SXNnK@}Qbs&yqVYs^ zyjjOGz+9xFAbt%P8+8>X31>06bjm{rmI84OPgP(CATLbrJ2)qto^;|;1qShjH?iv7)Fm=rH?P=_@U@t=gM*|kX;T@ zG73Ye@RTBaU?ri^YtM6`m{1r$1!-1jm8|SvXXH?IcYx~^m|hO=&!`^5uv7X_%7!L)dSx=R`SSh0`o+Q#VR##1Jts!a|NDVImE;(|qFX=5tyJIAA~7)W#T<}=iy zMJx9C&ba{qA~Y%i&nr4zR0~2t^2r2Lbu?;^qnzoSZH(P!V#anjw@6fI8L-Rn&wev+ z4{G96@WqMn+gT~`(1gMzznlH;T);=G!ji_lS!g7;CgjvDaz5xR@Y^2nNbXOVw3M-p z<`OEaKfZt<=nu3;EB`b$SV_Z+MzV5wTX^H}L+13vc5{WwezZXRq@WPIn=NDXuP%`c z|4pfR>K2K{T%8sy{@aqFc>b$d+-$7r5eWZ17~aChFqft4ZZ$vRb4#f?4-oH`_^6He zx)G)Y>6e8? z*>M;IrPd`^5$__j62T_5lo!l+6Zy-%A#;O4@!#t%{{;u{M2z%@VI)Ki(sv++W7Q}M zen}rS#o6^?KC)8TP$uR-C|yv6R+!Dc(hldZX2Lc>IrIz9t@%pZHhIoZI<;XWZK~wO zwxt{h36eik9)7!oJWcDGd3CH(qGOu&X|P%G^nY6uY1;Q zwJF0=t1EX%b!Pnj;(bf=d@Hr@s;mba-otwA*&or_KYKUOxcXf@=<2PNzOCQ+X)x~|^- zy{)_CE1+gj34AVvzt9f`b1UNe*=WnHXxS3qrBRm%x`-b(BAY(n6+2^v*)(^*oK>UW-Tcg7Ao!dV+LqkquxP)fuK^IUC+q zJ`4`nMwp7TM;oZdEDbdg(NbsXOE_7GY&%L+hSToU`4=ddhee1#GKj+0&{lMe7R3v` zA4k|>Xu0%UzFB16!MNM-I^!(`|uOOJZiJ}@-n^oQpZEMXe9x#-sJF@E(QZE&I9@?wWTVtdxV^$+@1 z{vYBe{)WZRka7PWe(q--*&%*v&gc+715Z=Ee}*5Y&lhb_W7kK`9iqk{%&hOG!#mJL zcM-rl@B~{Nu0)r+f}cjf7f9tIGmknam@FUo=d2@(Fn;z!FsR`OyNJUJmUd^kltiv2 z;w{Z>AhkriqrH`!yq7g zBOVwdYQeSst)sZUp zdB499DgWKR&Nvl7^c;V;s{CJLHpz;pCOQni|@ zZSmTus1XvSf)WS_r(tWJ)>f^yrD|KB);?nEi>S1Qi-KTlP%9u-@mBXSwnc3?UTn|G4Ih6M!c8+lW!WsQ*QRWdQzdJ=rH6;nSEh8d0e zPg><@;7<+q-%H>$Afl_fJM;;Pe}__P%)Lp&L2Z+)BG6W3B{gr<8|^ERM5cVxsk(^^ zwAy4alv;ZaXie&mQUXdwoBZbp-lzMcLH*my`qw9SJ9D5dbNqQ2_+A@FPnp0ZRFo`b z1skbqiIGnwbBSZ!AWLX!t3-$J$Psa!JJ~71uQD@fLhV%z#HRhWj0#qTEINy4s%mL>?%69o!px-X2|uKP}XMo)u-b6`vrbTfVV@p~RK$@+SDpu%$O&G74>J71l%;qwn>>} zAzIn-k=AESNFuesNb_Wj;bnMVY-pqJ5gKzwPJR&nFnm(^i`IaJGmmrn zY@NoNxy*`iC2VCxP&^mAA#*40rKiGWBQ?MJ#t_G~60)AvVi4i#`>;*>m|Kmw*+1 z4?y}(MCc#qZRt1vq4L{-b@2Hv{x6KAE5wh+(v|f0DAh5oD4=?yf|DF%)(Tv@s>-7Kc zYZB>We?tlCi4P@M6#H9in|UZ(7v&U5V9Jwvu%ZPEjGk2*+?Q3)PnNKEyb(5Oy|KVe zNv-IZwsZm=&xLzy{}h46SPC3DheYyMOjjnfxRoiqHW$MIr3dov*hEpLMSQ=f!!nAYw-hJisH1S&aL;Oa8T z)@H#@PjR24vA1!WwA8QXdJJH)O{AWR_RqvCUXI-?#|{KCbl-`=h{Wlw=dZ{4IAXoy z4;XiPqGEMy-rW>JXHBvXsbXy+mSi{1iki~ZiDg|U){NYc$ZfBwSl&2ZBx|68R0s@P zoJ`NxN@JtLz^eJz0c-(iSpZ8gA*1=~^dN7a^jUQL(l(l&dhmq#L)kRjPV4Ctgr^iC z4dI2BjDd;DoAuhmS^~sqFf1Ux&aB7iC*kot6t8@FVvtvfFTEXIq$>7hrVmIzQymN zKQ?lpXp+{}LH^N?BBP)AvKvxNJozh5InC^2=atJoXo9yE-`8P#YB7tAP2`v&KaVnH z*j+eWp*^WKO-cL|^V2f!-y>Aq9B&Zw63tWO0uJm#6j&KF$l4-S63+{IFW#$r zeEG`8mJE~&1!W?4U7~bjO~r<5FG&Pn?>;Sc{_|bw^TiPeWEXkLE@ain7QKo!H>RW? zFN+1&QUnN+8o_hBaYavNmT$~Mx-9I1 zu)GWPZ+5v^_WsxGk_FkT;d)mg9Dhv&|L_-F)ngy+(QQ!L!?T9CFuF;Y0cH?QyLtu#yIO<` z&8~1fSoSzPcv_j`!E(j6DdiBvRM#0pIv`qDI)Pp3mQYl2GMK=ifnPUYm<8;7w_Yhj zBk=vtRl}MVI74yXj~QOkWs%V(@(D;{EwlBMdD#VAVQ@{IpQHGfoOmgl3f5&JP?6#o zs91~b+cNH;;czzob(}^ca?;;mw8D-dgtD9|a+v$UjU#;^O%C?!u}FgV3MB~$q#42X zmhk5kwOJlzSSXW8HY`-A9QN`!zga_~iKi(1{#)7OBJju8Ja>!wf-JR>V@@_DD$J`8gI5A| zS9jwGO{mymx>S^bTsHOBPz1w>WQke{zc;Ku)=Vabb${)LI#pP#`qP`xH3ynF{4?S2 z+R@-{lyFz9xuaNA3z*oY#6RVrmi6+Ft;fZTBtg~`K%hr4kPeDx-y9f<&bvOLd7s~E zi__0)1w*g-E6GBG@w-Ul*ECckM$$4neUWSgjR#!XMzWmXoNgRO7spq%Lz-El%J>cz z+#2r9z_J@*D3f+ZkPT3LL(kh}a8h^mWq0e9Wplw6ZEFXn$C>%+$_TMqiagR1dX)p~!yBDzwO*uL zDTy=++TC9hczLxrv05Z9JpeeIuNkE;gG!keg6Xz;c*dsU-vE!dKO{)mev`s~$6xlW z$L9V!k0)DEu)m#e!ekS>=`OvGEiM@h(q0{3`dW3x3r)XER=jfEGZWyWAk++Qy}c?yccyJw^Q{7H=5NxjT z;_mKQ+qw@d%(?FH_(f=r)g>k2`YD>TkZ!LC$3`IW@T8+5I(p+>H9g!H`EIgB>knpS zMC(BX{Y7i^$-7EtSOdcqMD$HYK>)mAr+9EpuGSjJ$1r}aki-=X$*J!dkY;VOo-MI( zwNC&n5?%7WHW;y&m;PBfZ{MJiG)(f9dr+0oJqE56aW*>sJ3vR5o z(8f{rw|vaA>3lv%cDb>5R6xdR)`V3wBLwIO}75e8WzNH^b&S;>R1+|ELnzWa>#`0i+ru zBM_k5iO0T`WeC&2jPI(|q72x?|M!KvDz&Au{qOmevBe)CJ02P}KK5&ZB)Bl!!ulKG zjH8ECHh`vrWA9 ztXt!;d)}M+x*z5pqAwa|5lxYsqmFzfd$2`AbVUx}J+p>98hZP6<8Ma}x2$Z|_)pXL zGxU*p%I}GV1n@^~&uw%haIqVF`-^oY{c|IMLPySja3t`8$L_k2^R^7Teug53QQKsD zFuS7%xB(oAcwjV3lB9Kv8|TMeGaqWcK<`Q~5uHF)3+>m#oqCZ(YnUe;5xKN)A|h7^ zMKtQ)rW;QsSY*oCHi3kB+awFmXI8L1%eHud1oc%|FO!z|(`iPfOoHt*?)1a8!>()$ z%kro*1Bxd_kR+Ee9;zD;#{@a0T&|B1ep(Ayzkg{5BzvJ51{{43b^24C=o8n3{=mJHMEMQc0Wc@fkVB%^%GJ=U z8zxqWSgt)4vf`AyVYl#CB!ft@Q$T6}vhK{>L`6rEeQFl3f#Klt-^%SFRaf&zIQ?L^ zo{75=CoW9VrdM!uI~+j*)CslT5UH*+uFcr3f}upl$_KAZ z*z2f8Do(K$^`mOEQ2HH@IAT{z8ySk?r=^mE3r-8hvf*2<=iJRLH&q{6X=+{~`_BZBUkG za?TuM^lKuqP+Gf^`NbZ1PiBj%cx!=eS$E-1=5v{~QWZP8X!W)FXB@MbtE_@p4hssB zxi8lc-C41AW{7ZgLc%T<@_Ab_SYQ%S9zRJ&WxkFrm}ss(JQC_YToGm3_rONLd-)|_ z`F(sVt5NBT$%+@qdd98LS>A?4^_#+}OlZXqvYww_4E^(k6@if0;hF9IGr<^n|0H9> zH3ivHu2I_kL;h>i_q`(#pqx(x+svtT z8NZ%H2IVKqF?6v!nM+HWsr9rV??BmZI(AmiW%Iztvyd0ML1sm+Qx}M>d)IT9wO$JK zhw#d_6I)&@6eqXqOXq%e@_1Y6W_ykbi%Xvmc~IhFn6ySHTqf&Dd`btr#TkTXI z6AbwurB@){Q_E9Zy4N9ZH76%4RyXbI7oM|vnicnxyzmSD%_Y6w`1oMOkGy5_do4B; zt@oS}JU$X@r4KkkzF=$&8{UC>rGoESt*JLA`*3vy+Rv_w*gssHu2q>X&?63hJeT6Q=*Sdi-km zJ9;cdZyJ$kWI8s8GXaIn3~mKPj1-!QkF7~{pnvU$ekG|xk!YT>{bo^=Lhn#1q%13y z8El<)f(iTSV_FP({}8e)?<*0N8+~f)((Dz?2xdM0Qzl{$;S~}0{yPh;#;_Q?T9#Um za~g+hOi|%827#jo4g$%1tj?=%&4w^~B>5&yIC!5YaQePG;`H?w_u+JLc|#AEqhsGO zPSwT&`Ij{Px$bL!X}hKd&jb~#2|QU&k)+3u$imUP4*|h>%(n|EA~f09GQW*Rj#Oi0 zi*^YA;+M<^ukH;E!#7rldh`+dv0?pcVMU~U(tP|)>21su3Pp8Ig-<<#|Lw1S_RvQ% zZMoUQ*ujOE*zB=HZ+$S0n?0VsklADBi){9o^mCg%(vLC$+`9B%-Qhp}WzXa8`8uAX zzw5=>?!{>LqW&>HxQOR4yb5WWG*#- zYyozO6JXTHoto)xF%t|uN zwD|d8ye%FWi}45jeN$|~1TXy1hlpSh@zrXsWvSx0Rzg-Xsm9WnvNnj_ESH(Iebd;_ z6st&MzY1)l>V!{@aN}a}u&eSoRx|RR|QzD2%oSZ{?7@EgqOp-L$;G& z*aMaVkoIepZe(d4Cv+rEcH3C;Ps&7UF=MfLuc`=yF}s5c#sXPr@>lb6EU5w0Ofw?= z6J93+-nv;tFGO8x7Ui1>$LZ@5s?9tjeq>XuWdyo}%7b@rbt!X`&&PL*-ZqBE?%{$V zQO7AonpzQEnep!iQ*%uKWeFZ*$_Ue@wx0P-1kcUSMv9+{=+Xb-QD2c{ z_zO2Z)lV*^=V1W!5-7`l5IXr|GBxE__{g6{pi%78&M*0Ap3PW&lZp%}s8V*D1KG5< zv*iZue2oVeOc}!8>tjD$-q!gnUl0Or`$y1kI?n`tELeSYe^Ou0Q3?yq46CzR9KePU zM+b8}?UyZnLJ}R^$EQxpWa4WPHvh#_4SlWjEfY4{IFkD_Cv3i6=!DHeHLLOOt!vp( z_p%V&*CmujCfP;_yB-SxGH?eLf(UF#R6PWjA0S`%=!*$wQ;*&JR;~qQ zYz`J@`t=WmPA}cuAjpOip|Q2^ia#>AfQt+%c$`9!AV;#?O*qnTo{~V9lDZKrsa7Yy zU7i<(%g}(vI8xko;`fe6H6FrKrtCOT>D6QWW6Y)T?IXC zT0$)3zN)2t^C|PIha)Ji$!$vylYAk`!_6=9E;hSVK$a4I`ATLT^)gFvjiA%(B|~DG zp>~gH{gi%FP554EHJ~PvL0-Q#JAo=wk$Q$%><*Ip4YDc($87yET|0U=F@f2xcxwl2 zn?c4;n-Cu3C*f%k!m>r&EuHCe4V$4Wqss|U?LV-9VbkVJ(s-Mqv^kuNIpOv?q~)<+ zr!Dfc+-Y*P=s_gjir-4EZjsBNNMU(F{x$CHwne=Cx!#f=%sqNbkG|(V2;c7PrM-oZ zu2er{kA-9l)1AE+`~OemW0lFra|e)*Yad*#eGV-xY@n`J+bZ=kO+qrs6{vr2hl^#uT zAB1Ztoux{KKYCo`wE4Dg`7$7B( zGx6E_qh)J%;~}gprW_eB#ZmoYW?J1C&s`mNf$^hod6s$CmSESN`TjSOUy!i5EOe+} zMd3|<$i|7lD@wn|M4nmJXD)nv$^iHgGK8No-QZzN)on!88Jxw@xXv zsdKxWmQi={ifs*R-hi44_|vb;-~WBTF5CKOKh{>6-uAyx|F8Y>4&oP!u-`qVz!l&t z3fGy*NAZmV#4v_?^l!iO?r8tNC2;+Z>2Ja((ckp1ehU3H8vPZ?u$&2SjBwh^%ZvS} z9}3$(TmI^wIr@RCdSXBsQspTzCWDd`FGs8hd)GDeuo}1TDPIW%Y&l!05REE@h}4Mg zio#b#FkIoZv#7!$I%|Z1&}|_pe{|?vyu737H$HB|k4sN4qk-BO?nPK!Uy89LDzdNk z>$IRM?v;P^L)X80^>32o2l{FD{vVulhbcVbP>VAyj4dACysdev^uzQ$d}{V7wm6Zm zt_(?Yn8cvc)9`e;9-$x2n6{$pPu>~ZT>o_#9Wtg^^iw4I0R#+v z+W!^Bs3kC<7if^Dl8kiRA-m6!Mg1#n+MW5A&M)_w8`j2iH%P1o!|s0(h5RcPFr`{s zbeM54?ytj@4eCW1N8e{|A%ZWM$|~+X7b>e&;NWg&Up4cHGC}5*k7urWrgMzuqO1C} z7tKY%u(4`y6*gnx$+ri~mg%eF9emYOQe(0)EKn4kqGMSfhSOixjXmFDms^-t!$Y{t z!aDY&Y+R>*ks&j!e>$9f`fa!W-PwbjjUXO)TLEj^5W-2aDBjGk3?dus*E>mgFPn#~ zJMH%C^1W(*R~K>5&vwQQM%KMs!(Gl$w6p)9)ql`u54%>wo2f_(eKqWs+e^5b^DHN= z&wZ*1spesvwNfCj2(Nj@2sJim0@R`k^dZaX85{@NK7(`??HLQVT}T}xV8xrT>Dhc9 zsKL$rM(!VsO^MR2Nrjj5rkyv5+^5VV_{)6tS4(F4pt@vWSjaD1*Au1WZffS5hz_hH48P#!3HT=-`{)C(5qTZ^nZjkv$n0Kk<|Z6syAAxh-RS`j`Sy`% z8li>yhF|*@#stDB>4zJxOs8pgGlkV@4WD`-9J3pBQ+f>-TIK11y4Y^Ny>YIt)T(C; zZ#6b|XFQabdwN(!yL3%OX|BaB*YY`N`=*&TqP;pn8tFLzFL?W@(~4q7Fs zObyqGF~J&|_x_~6${tX>KcBf}L8{iC0}EO9#g}9A7V{*LdI`G}M+|2a=$F}r{$=b^ zE<->K(=%BLR$*vsq`2tJ_yuEMT@=1FF&H{J;({cuVG*FrZG<#Uc65SC3XR1!S!?G5 zDP}NG)wQw!`~LP1@DEcg$vlKF#T_Q+_VWAa8s<6k7@rp8jZLP~hQDyTMeKhj`f}Ux z1$8E1#=2kuGYd4u1U=qldlN)Pj)*^(I^p1BW)>PbdqxAbE$=9f7y?tw%{4=+#4dg@3_4`rs}e{me>l(Tw=PdQE~BUwnmKZU|rZznk>S{#*Cqm8z?r58Kqk z0->c)y)H79q$fmE-lTG^f5PdD_#U2f=0mSQqpC?rxmZp4l*-e;>l$#KUUy7A9bcBxK1 zIX<`ckzJ zCWh4HB+qDBiu9{+GR-m_$L9Q-FN9z=Xe{2H1Js(Q?v?0X&35y|ha0rrysBk$F2@pf zPK0s^oHvK%h}BL_m7)}zry5`wvH)hpG&*l1Z3ZLQ7fid5HT$P%gKDGvlU3~OopU(K z<#>)gjV0Gt#gbiBUL)S8IymL=s+O*OuKQZcs$wfSh>~rc6C`|!)$K~{gDMhCtj4Q< zx2>D%_ot&po#zt$4krn%+*kUJ)404O#py@Twz3B%>$+`)Fp`Dv72(^z?Wy_FHX=6e zuIQMN?z}7OD;5lFvPBweM=^+0Gb0C3`!gf7`QcjvDNH=aS|fk*`aCN$n3F&nhVp`U}Hrdr&yIFKp1~g3C4VuvMj;jWxj; zM8iij;{rb)c%Llj6_l-`cbR<2w6|8{KNFe`eotOncsuF9m&DLR@Q;n@7vVeATjH(rAho4bfA z{zK^Sjv0vBY%nR&y`m=dW@6dD^Aas9^9XE<-EswdTvPGKSa2a1$HH!NX*q(_D@!$PSAL18*{ge?l0SETexJrJYVmBedgoL}*N+5uu%WvLm#=d=^3*7)noQ=*^zcg3E^| zmVI<$V%guuO$;XQ2@hPU2ZP1`e~ASXJ-rc$kI}*f<0nQw&wiMJ z%Z`JkXka4jOJx5cRfd-lDJP12^^f{Biu|Fwgd)S!?Cn$G3VUSqIE~A;f%Gx+5C38Z zlNsl6VVHLF*UvQ;efH36k%WSQ>n@Oz5+}nAD)y8_ zvXr>G^%*R8sH`ROVFEC-85)UrwU`NW6!ty7EtB?4LJ1Cc{vh)T&8c17b}qdm!ZCdI z=^gYkEZRXAKePS)gg&-0PO0M9LkxC0TkcFWSDi0+TA|LBcrN^I<&F>h3xl6$W4rTb z?);DosUHr|mR@w%vYOUQi#hb5X{t~gho%~jS87706DHgSre-u_68QXVjB}~+@Qfm@ zZCsEL`0ABpHr(fd_xcTgnAZysQ@hg*C}c?hsH~|tyrgM%B2`k-mY$YnEX>ktqD#@o zwKISp2%@vSBKWW7U__urw-5jP16kx|NUu1Bl(IknBOCT~{>8V7I!W(z3LkIPArx1w z(pWx&`DiA&_-9%vg4s_ghW>K!OQAZ_@q#CXM75^l(ZW0K>FQ25df1B%_L~HIXEQ(= zd^LT?uh038BT2csNXGDkx3$RC zGhP%6rDZ%GLw=|5`0jt&t708Yweq^%rA9fHQ7bK$a~H9;EPRhZwzhDnkoE1JF?I0G zcJNVskAKA4Ft%feXuC*(RpLWeJ*RlxP^C2?8`t8kN7MbWgg#a0a*^BzcKERAKv66s zyG20||2*B27%X-*@iC`qwQL)-gR~prC3k0I)lwStL2MR&uf41{{eif-UCNG*{0Yzd zJIcbU%7RjLF&H*uQFLbNg}0KrI5lkh={kRP#99#~8fE_b+~e^J#=Xr2_`P#QFJgQ8 zXIxtg0>dExjxSHld5oPFOvDlG@^t;aJZ0Q_ zKYgZ{r}@2}jvd^1^w_+{eaGfEoy2$51J>5k|2xV)H((pHu7kLO1NNQ6lKubO%#xk; zK|$ELu&Y}tWkFgeEqnQYuhfTLJWknS(~orY0(#*b9f6B~rlh!e>!9muNw{{b;lFvS z>wIky9b$peyPK5*KFvAzn>lu(Ll2^ww+?PRu6b)-za5Wm(?hQPt{nZou7T+_2PIZL!7~;RlS@W% z658H5{Mjp~jrCJ7?Di*v9Gj`P#2y^Oq26B>htAwax;S_6)iB#6hr}x4 zqlV+~%gVwP;bA{U06e8>((*UibVIIRrki#Bkjn$Fc5PTO&`X}l zKh)*?LkEkfXT4(v$<+NN&2&E=_}|F*hxO>Df7pu=Gs)hVFONVVYnf8TypYklGZ$^@ z)fV+?OZa<>WWExWY;Ei&4NWr0ORyC@|J2}Uh6cZ5%ebL77D#Tg7YYELXTHC|f3F!k zf8|q2-m&g|H{4jG^QxYGLZe914on8|ps}PF7@+^G@5e>oOBl}4_sk}gMP`IQppJN} z@9eCV!U1dO)tVU}U5)@&DxZzv169StmU$RBN;NO11zsVfo|5Xz{S@>V-OfS8Mpg;b`trmD5|NrGG zN!TC;M-S2{mSu)5bCErMA4xgV_gJl01Dv#KvPTj4eK?hw&{1P0+I`;-Ea7H}Q+7Rb} z-==TG7T;>#zu028SERE1g~mN%x3y~s4PUcX3XNzYbNsGu@3KOVXb_1^3r{}E7V)vW z`h67p>1TOl02{D6LX^zNiB|qiD+u2nv!jY-9M8iDyOVJBgJqCcUvM48#oHr_lYYg` zj%g16!yTVMbmYIiv%gI+TNH@??sN2KNiJu-vq8v)|2y;x{n;<{w^{c@8?ZywZ3b`_ zqVPwDeAw;N+a8t4I^jQ?wNkagNjQVr5fB^_#u_o1dND&_)EJvH8cPEkq4Hw0zsps1 zt75G4-1u9*?aO$YXzAkp8F~*5u>&m%E7yKl+|{B;G2|q%W}UnhOY|i8>c2C)+c`gV z|H4F2`)_6u7H+Q|r1cA1IuYU3+Lk-J)5y1xI!a$4fQAGS@ef~)FZ-Cod@T#RYD8%5 zg^d(g7E!wO=)GE=%tPCZ&DOT_c+1DUkYPdqEb<@$%?t%=dys&y7HL-*56;Pg4QE_o zJUAWL!gv;7l?K=ssZq4nkSOf{u$t5|Z%R*&TrQ`n088X{Smb`9n@4w*H1mk{0eQ!# zaITBv*iIrv{6;ie*?}&cMhmR0z-#9lv5axIg8MV!^Gz>sP;?#_Eq-We6HW{q+)H>@did9u5-55i-)$zsBA!Vj~VF8%Nhl83=) zPQQ6pnCkBz()vwl%*9rvqT6CkF6B&5~y&9ve;l{G);G8w7hTx(DQMPmV0&V=JQpf*)KoR-E8ZyER4QjOs* z$<)x{=?RQO*tr-E8q1Zag3qG;y{J;Y-SED}A~{jTk=jZ7NS!h;lM1Gt*6l)5!YYI? zKXlja)FwH|Wui8OvEO)dpWbF7M&|1dSMy=Eo@IBmB)BRPzW6BG=pJppijEy{K_HMg zrmi_9&HBKl2&r}Yol=8rW>ydZ*js8c$q$W7?oJZD)63iSWsv_)=P9)42*B2l`;FH4 z)uOVLwMjFW#5dJ#k(le*U)|34ndG)ChRkt2p#= zgR0?P@>`pz9E^~lB0E+SU7#a+B=FlQpx44b6Avbp-q7hRg8f9H(}3!Z%Yf?nje<&m zz#$A*-+_(}KLNFdX-2wgnfUFqj z*c(3{8d@W&;LLs~XC|F`q@kRJLxl3B^>psT4X$(XXjtX-VG0AwNnv?tQHEIiVOjJq z2n48);ZQVlL>PMQ0NUSTIBbZ(yoSi+lfp_?Y7T&Mgzduw(4_{D9)R+A`d+>FAN6de zSG8@~`>%RQsA&Jy^n;1TSj-=YKXxhNB{<;r>2USQH`o&X-&mt%_?1`%a3x{*-*kI!#9IGFNN1zk)T(z5*VOWT^a z?Q@+^SW*}zD2Y;#SQ}!6Vx?aTPL58@2z)vVvaPsRpNnzoLAeo%x^J)L?8px`k40dV>Z8#7Ld@`u*wK;`pkk2LW$rLS@-RpP^qiDg?k zQ{dH!!Pp^*mXGq9jy|Pz=#Z*eTaUbG>eQw$)&$9t?#>gm7a6SSh?CR{M0!{rI@Gzy zfWk?;*X@d*sV4PmGPSMqc_kUSiYT0fP6}R2h~|t!6jT7*pUukKk8FBN$2)FJxUD0Z z^@W9UDp>)0NMrNv(FKZaDHiF-(Uu&^IV69o35Mn1wVG=l~-Tf zH2IPvNoe0RW_;}73lG3A&-9k-~LO1;nC z1Hv?GN8tb}j$cFqfHhOTO#NhV*dhnP*EkZTrK`AcZA;fKjZe084QpK1(lw-UDQ%8$ zsf>#-Ulp$i?|(1?PtYMhwtv^dXW(5)@3X;k@Ld3WWr7dR(jQok*-^k$0t^w{?@c*| z>WFxlA(iI+aHpRe&&`Ob(`e56sD({I(0_?CCr0-&AMM)vjmAkhOxGg;P#5*bGP*GedmwksV|(56^zd!Mi8CSdzQ?Q=wiLzOg79k6BRv zI+cabEU1-Nz87ZQ4Up5_$a98A5v0}%=*WJg{5c=NHvRJF1Y-x8eEp!2tzRPsHE%me z0``kdMeab9R=!DXaL9I!vgU1*ns&CAox^*-kw#as<%YMXDm8IAcUt^AU+X-?ry)X<9qR`zcAC>4ZFRM$2D`kwww_#^M+C*f~z z;jd+RNAtE_uJZ^gLY*EoraiSRwIRE6^y8uq$o+=DPCbf`_O1?2>YxX^T>Dq9e#+H8 z*S^Hn<979|^o!amyyzN_!D?5MdQIq}+9lDoZsY5%2pTtR1E+1&nv2hHVF+w1_ z`p;)jHPLmB7zkdhHaDa_(63J2O+dSzUi*3{29^$SV4VQk!voX@$yxTP``rEor{wmw zPjOydu>?YOFm%_%MNiozI90{Pe4KrAp{`3=H1!-GundV$e4{jh8KsE!5t8iNMt=#n zx{ra4HvA{isI`_saj5VI2%ARdja!k?rDvOfE8eqSV``(T(wNc2&ysXSNGW^(`V05F zTat4~;}<0~52_BDH@relw3e>iYuRvV(f91dA@9nXsXt8rP|If?q83J565N`QHL4vj z#fd>WI{QUdn6Y53vmRS!}*4t>b1R%D>HBIoPrTg-$uLv+757<`KvTaD?5dIE}&8?7HLY)3Boivz{ zFB@X>e#iPpFXsJ}3p*%iWxTXQ*%XO1CSWu^a(NA_*<{6&Q?FByCaJ3K_tEJ~z2UD* z!Oy98qlNS#=S`pm7O3HVf7JTf!D@>p8OPexJFrC^^ z!?6MhQp%p5ntUK94;_AB%eZg+Myu&%n=mktv8jMXu-li|f=?ivwCJjrsR%iD9KjOf_z+dSp7oIeSpXf5jm`e0 zD7-gE!8b}mYET7dcV~>zh4I{NI^S!zWW}qA*hB;|7LIO0ls4QzqB+0kz=TG$#BCiS ziL^u{in~GDU4zB5zTuLArn-nU$4R&f6Ze@qrRj#RC0i$A=i8g5>5bJSy1MQP&?@^- zq7)l^vXB$UOA5WZ&QY&5x$9cSwf@Tbm`n{V?EIZk^jqPQdySSm@8R>#pE!gPpz!W7 z-*j%+@GHM$c>363wZuq0#rp6*sq8Bgj9xID`By6n)&d_j(~leSF;;h;uT3A&CFMDP zXiwU5jOW+YsG38JSvvi+c)e_9b#DFogy^Q1eYkSIH~vsjy^Xc#s#$$Aq9AQt z)8*#qF1NpN>reQ{pJBQShW(;Oc0@v}-4d0i>kTF05qI1Boz8ae<8Cqv@|S;fx{LR) zHETTevD~6W&|#nEfaK1LvRh(g!%JK{C+w)5C*1p=e63GAYx8idGa0+Janw$@7mb)5 zP(~?r67rq-6%;k+V`ArJY|d>wCS)f!b~6;3;|=+%*!-ZFfCJ9jdU{THb^eFlol}G@ z)(FH8Wkbz$8$PhmdOtte7dvIb&ZscvpbpRK1NFUo0(F7f7giz^8GVK4{Y#+x?G%Wb z{?1{AV2=v-xY5&qnkp2D7sL@AQnA>p1trZw1e2x83;NMiKaT3H$?z~=zEb7g2-Mm*z{IMB z-j|2J_^AeB&zWZm(PoA=vpd!ay)O%Ia__(8-%k<%^)!<{fPvUW?K2Ry(LjXj-*;o+ z`bD{ed-vfsv!6x%9%zih#u)<-&!?S_CH>Uzul-IwaLsyWk-$SgxzE7#zX)`Rtod%6 z<@^OD%ebqYzqDkzm3Hn+LsL(hMsAn-c_Y8+pZMPjSA#V$QA-c+eOm!$iVt7q9@fQI zQI#;0AHIKDPWZZi4rvdIePKQztqvc+5g|4!n?GniZip0)`V`0d2Km<}m=+)OUkK5c z@W9dco&G6H@BE1>_Fey=k_RW~!FT+Favogy1s>G<2a|ZPze=3rA29lU0!tN;AgT#N znoc5_Nx6sqIUf6;FW1o1mzPef$qD!N&x;XlYljQHc&A>y2RYEzbiP;#;#5eb*_vx% zE>UW#4hDP3&6lZ$;#i@xhR23ij#5BISv=KHE)J}Zr>0d(r5%+_RmNovt4yZiwU((c z9!#@p9g{1n%&g_o$np^yE^Idcl=@UFTm)ydjYBorO=uW z4{~)t@q~+q&ntE$m`3{m5+3T_;YI?Quv~Z6OY5QaPJkmHZ#632V2!t!|Jp5gnNyQLXiCqP)f zICR(HC0K9Rf1_1tetkmJ3m*+6%J@~)dRRK_E zl}rlHa(4zw4yD4sxw|5LQ)l?uq$iQS3newHWk^yGD7?pMcu~q? za}_e_cSzm5Per4Rr=YlCJ~Qk5WXW))F4^58%JA>oVOG54z)ZGO5g|HU`AY~XCg6$L?9rJs@7ABq;f&+=N95@FNotIjRT=vrkEuO zU9`n1F^eZu#%^83F>f+87$2N3{A~$q&sLrgnEO7ktLhSK7Nh@Q zoK@Z6L-Eq&g>S9n|As=uJ73h7D#tZ`@!u zWDVwV(O|Nom7#>i!~C-ZvA3Ey<)@DIlG|R(c5D@7ZZu|bQA}!(q2%zKZ!&tP7lw!2 z7LD54I~cWN$7$5WZ}Mu-?Y?fW zREu5vRE125W0WgBtwN{DH_DNQ&m>D%ObqfW6_FWV)_r1PWLLcPIP>cU`Cp?pt*;am zv@ZPOp^~W<6~f%5D=OCH%T<}Krg;py-X&WHRXGZ!tbzj|rfFhe@i+{u5m^zQ@ij+C zpH$|^DG*a>HZgrV{ru=_z38X&n$JZ)j{kjr9+0L@4e)2n$+X1XxhN8HC>NB3->D=gB!GTKKWZzYtT#<+#_J+)uV%kNeLj z*eLT-C(zW=N1+3{*ujh`wwp8x?RX^ja5~rTj}fA zrg)11$E8tjBQ5Nh_L@{@)$f5gXUq85gNK(?#cq9K{G7iv(f+-rNUm^(fE@^*2C#A~i-^#?A!{1P|NHOU>y8^g=Z&U)tDYR6liPg#LHV&; z&cjR@@0R>c*K*0jyx1)hxJq>Aq)*^ClSQbtl8C!h)K}=+1Nq8;1X0&j;=b%C@1}%g) z)xr49(bIt`Rd#c+L0^hYPp9k7{tWzi8TbdqZn=Or{~`Q8mL~WK@IQE@!GBV$7yQTn zC-6T;r!w%fpXb*O|GBYSe#X^*2>)Mh|77^zJ;LChy<0E%r?-55{3lxv&ct8LeIqtU z@gb1p{YH|=qS)NIu0#24v0K(KB8l$YPwG?_3l)7zCk}U=`2Db~PJ|E7Rv)~*wtGnW z9Gdj>N$f~&Y_3AK921P?3X#eg%{Or7+&@m77#u#D-O#y-bsuqree4$7veWwYf_OLa zG`Y#vszOd}o_Z_?97dvP&27n?aQyF_R0`>*lSU~$$eIm$+n;T*zYzsg6SWs+93a1G^HrxNQ7Ly-}~L2Hzc|_NBJ{xDEe_0 zYJYD*!&ic-f%$XYVZ!2`7Y@xrE$ho!dYZv)G#~1b8T+IGNSCs?bk<5utt&oLq43qy zq;U2AGJKjtr_!hN=w{j-Tas{(ZrT@?jR#%< zz}(&=#(#LLBSIKjOdW>_YEgaaqFG=w&17bQwyY1o;XedJ$o_LjA^%H}|6fA>mq{nN zhApU)|3iAw*LHFeY37xN5pO+*mcE!Y^#Hl5N3yujo&;6toWRsM1&QEmu+}++8AsNn zWbSJ%%mQG5f zJ`Pv>MK<9*N9>Z-+i*8Jn?~RwjJ`B@<_+=I{bVfPDc(|%)5vb|y?_Gn6jMGY%mO6* zV7>wI%-8{excEhk-%u_9^#(%guj3sY3ktH~xCs&w>s1P`KBhc!NDT?PluanL%&o7F zN0haN$6NwicJztelK!ss?Lwzqn|poMJDUXvlTy{tVYAJ6JZ&0Pr~K%B*SGmTQ#SonM%PGS$mvE$gbf@>l77t z=^c8cYaDH<(Vst))vIy;<$4v?TVaoxSt~blJD}sntTPIXfPIqKd226L1#8VR+U7t7k>ZWDQ*Y7l?@u1E}$lux0HMHrV#1g%qeD#!Z$%;Wuch9=Mpm9pmB~5qG zr1mZh>bynuHl=#XMfwNjV{@;fgM4%81(T=7=3c-}^Yue7aqY+EewBM)Pj0%J8!dq+ zX=Ll+59%EryX9^g;i|ByS}jbz`rAiLzC@55nt0^eOD2!I?5azzPF9@CM#4N-nIfzQ z8-G~Z?w(TV*TKEjId>yhG86^}{O!_-Igj8r$O*6d=v|TsH692&s)GF{@+&cDlSDj1 zd-`sD*8g#|Hwn=>2N19=P@+GPP}=N^QHVw&nkR zm;4GqJJLgob*OKB*e~BRpI+Y==}q?7rx%oMMwWSzkMbd7e5qC%r}JSF45DPCn^AJT zoF&a_xb#gSF4|QP<@)q{Wtd^bb8=6M*CYtUd#b%dzr)=;sr$|TevyB#@_OISuef|6 zznF&n;zr^qGp%JVvgfxO5R6(Mm@UZ(rpU77S!mWuahCCNz3e9qBDHDZ?UNkeW?7cf z7kgRi>^pCYfm+_7d}QC%mJx9u9=m3Kw%V5jp z%0hkf*~XM(lC24ta_g{}*YkJhrhR6eV66D(OK05(E4DQ~-FzdwSlqdi*F&2QOgz%V ziMusDFzZIgiNBzUszIGURZUHI^c3R!vfY|eloIbXH8DCmU)Qnl=ZShVk43uXCh>Mi&0g|B7+r@~f5T63<|`R! zg6kJQuK8^dFuD0nERO!(A<}1lTdiN_H~U3WOoBV-u!FdHJMPLcn>t6czhe8KrkyR> zM(0SL93Z|6`79hfRdBm+%sydtEiI|14yh~s?H>#0I{82g2T8SdC69UZig^H&u@Rj! z-<2{w&&(=TuBX7UQ2`F9=cZU z=9l{i#nFR!JQ#~DduCazaAzYSonm#yIFHbimFG&h7ZofNa8sE*ct+K8Qe4aK_7s#sV8IUv1MhO_W6Ph0? zGxNg@F^$eUm0AYDBIWvpMeMf~kpi38vQ;TWmv~^xi_ym45)zEC1*cQjqh(uE)EVIoB9(ESS*KH^GKmXBu6^SMB zZ5mzO>Z+6jpH**%UMjx_&OP=O-Ta-%Eqn0{e}4U)`?OHzqEN*opqjWDvYbsU?wURG zo;y9~5B~lI8^w_N?V>BXD4=e8Qlv(3rcb}l*?$gmrWbvowzlXOOx`Z6(EEk_h7(=c zQNFAyRoNU>wPe%Li`UP7dB2mj&XMqpfB5(KvTeItdXLig)KuHG)>P@it|@_{&kOZS zQ*qx^t(tnnmHqvfTv-S0oRVUd4f5NrAx=?i!gzo>0~l_*F=na5*M5w+@S`mG-FKk( zOz$DEgWdzJFEkj*Aa7rhy#`L+85=mZl8+bl))`{dD&!%`wS9!I5Df4F7$I&u-0d!z z&E3lcNkj;1rej<52~w5so&73FuUFgm3rfn>QZA;yCqa>pwdBMU_BUMIBC!@l**oB( zn$^5f7Vq`B?ggmYvR@)n+1L@$Y}N^qCJ1J&lzdpB6D093KK9oSyTcFo16n7Rg6-gd z4JQy1(Nc-^I>;aE9zCH)4LnM;EUP4pKC^&KvYj@NJVfoujWKWD2OwNm73yY*zbV$u zYJbC#L5Lx4if?Nx5O(%#snF zKXMy-zQ4nn;4v*@Ab19?W?$&$2D{R7Mruu0C0gd zHL2%nN|z^EmVcDMhHr;ECu7NHYfAsDv6@dwXMZOX_v3_RXp@Q?19vX2`cbHQOW#hi zKl{TM6U(--sr%2T1!G5B#Qpjer{_EZqvnKNf0k6~OBr%12odVS?Sc#VRiRo}Lyih; z*Yhe#hIXEbMl}G|!Ixp;<t% zdVrS1NFkL-Zqy=Vzdgz)#AJhgIAo?X4;BH4xO|}svfQ4=)Rz&vnTxEI_gIU>ypqEC zS3Zu%g!1H9yz^?CbQ}Got6IcL&H4rIdc)3LB@O(BSG%%tUv|DP+vdv(@1mgls5m^? zmEGT$z1^2x=*#w+%=dO>w;bdq^ZR_+MZRpEhhdUn=)B6{UFpj%@nze6SM>XTR$qR#FE7)9`qvANTU^>8-x}#PAeCV-3VqqlG%Q6S9=>^{Vc`$HV399a>gUv%d=FaetOaY=}z^ekDioKVqvU0 zdXx-?X6Z{#4UsNbSwE3dWRj_`fe7Yuv)KnG`?e?3XRed&0WE4$E_t@mXc^c&>=>sWlYhtlNZw)E0o zGuQ7h)@~#2lo;uMWcu`aFekw8nf|N5j-D`HaiiU6r1SRZs~Iyt=$s^!W8Z)J)ulQZ z@JSiv_z}=4<@nvUfs|t_&p=Q59Ln)2(>}j)>?WV;)aLYu??O;P{)KF%LD}v6GMeoV zk1=I;qIX|HviZ9_k7{pn~UG!8PF&UbThqOu&)+?Jb$* zy0b4Hu94}r|Bw|oEP)G!#TYgl`|Ecas{Y0CoN(6np$N=-m>xtw8rnZS&NijX{PRK{ zeB=hCdxOA~T+4oRugEMQeziDT`e`7y=91MGiDW2^Ta#z*QkFyKm zwW~2rvcG|S2uayql?vbOLnxAn!n#pcOk}j}JfJ{$=4HZ+{L9*haEZGswxZ#6x}zuB z#HcOrKv9!nBy3odGU2{diEBvvCtSEaMk*I>Un!a}iiz(q+`d@L z_I(af0Fnkoet7!=oR3>>7?~k+ncO9T4^6k$dd1p5@@>(vc1V2da`93T+@umQ~O+32RzCJ0#dYd#IwU?6ItNu2fV2 z``dXZ!;miwU|DwdG~w^sPuw5z=%KyhuXd%r&lP`_*&p#^4bo@dA3;zLfmlW%1MQEf zdW7n7wp7O+972TjvhgJ8?%5%6>A`Nu9EsVG)g^;rqxnRk78oK1+##X-y4kxQCSJzw z2M&62yC15!i*`T!JhT69zg9_gN;qmpq?L<-DkW&jNGPoR4`{{gf6#eq!H6>~BQpCR z;v=__y)e-#Ry&*OdbU4|`WFNP!BNNmz3mTYmN+`87d17APFQI7*&;Ez3R+RJh#p(( zr_;xeN_x>pXXWRj568d%FZMr-6j(At)8GHQ`yUP-VE@C3VD3NM|6sH_Im*BOYijx& z{N?cXU6X$+nm<6P&8>Boeo%v!Xc)09{BWNvOkTg$pvBwBM4I(P<~(U{0!bnIke zavz-MIIY$N>%+Y5$86 zYR~xd?dKSO`9Ea$b1uTewC0)hjxAJE_q%Yo!2L!^LUc;r)z$NpC0A*U-bUZF9MCF_ zP!uiF<}WBw@^)<=|DMPSFNJIZinyuO?_vz`_Iqo|EPkP)dz}dhX;R4pg|JF-jt$Q% z(MOZ)x|+R_+%))`;_B3jYGvvsU-!#ZsgCg}Qv1DKliD73q7y+qOT7(;i`BqrPc{fx zmKvk1m3y7_hfrM&(3q#v>#Z+QJdI0|q&7pI%ll|hd!VFs%Pna@6+}Qu`@2e34MPhy zliMjq&Z8=`Ls>GEO{oqAFI*j-EZq&0Q!_$T%=z#RuJ)rez1FknUZx&IqV` z*K*{Pa*1w9)KccebN4cB%~9{j;Svk>15C{-)3n@JWHp+n*7{d?k{O(>fx?r_{-?^} zFm)U6)oYNW_QVgdjbrJ1d1(5#Mt`AhSY&OmUuUC_r-qX64tE_?UpOSZb(Ke@ zu{nndcKrImxWD}48!jgd3Y84J*V)ecsfA*g-KD=i4Eb`&NnUm$O6`EkbqY)g8U!d z?-%;hzk3h{7W}TP&ypqaOwNpZ7P*`mZZEGBP2DD%jdGF|Gx6+(Wil3KzE##^sOvA#La zFxMD!-D0Vs9tHWY76A4z5B8`G=H7Y0f$jD>x=O-xTpeY7>u4Lej{ADmVOcaU;pF#=7^;xpOR%`gf4xY*$Z!3M2#X5bffkK&a}ywdRkT*?*51+8 zT}*|V$8<(frby~N+;p*1=JiZ|&cBc~|NZzP_Z`Oxr`{9o52raz8^!kPnip@pC9EMf zrolsE=nlXm2e`Hjr%$4+V#gKx)tX65?g$Udi~N~Vg3&F zm)*YQ#!vV)<0rtEOCiu!{pZ5()fu9%80rwMiUdNDerdXrlHuRau`;U$yE4VT%qU+* z_LOjqD|3%8Q|8N*`!Wq8NCe$9ekGsxbIty9S65}FFCMqzcw>wp7(RZ(f4Hhw`?9sZ zY@M%qp|4tr8p9Q?>|MU>Bwx1Pm+i262`*N>x4E(nzHEapJI$BP206UKm96$=n|;~& zzU*dSZ^*CN-;a0YNBHt>zWnXJyp1sE&(+bFWc_RuJ&b}DgLgK0u5iQD|@jo+u_S@@MW`cVf{PLl|R~- z-|WkWzP!;V{S$qLqg~koUv`Tx+ht|@^lz{$`_e8B7daYR@x6^P+C=tPum76iVv#Rf z=*t%Qvd(>Qm+@NoYgcxTFI()(j`C$|?H5lqzt+F$uKZcPe3>s_?#nxm!(AovDufeV z*-^f1r7s)TZ;(IpX6(*K!|snO0LXHW;gO{8;cfr@ad&#VAKeU($1J}E;XVCD0gPTO zi4n})k|kH-=Y1lBKX{g5>AR*QEN~To(NSLX7=sUUW&YYd9sm&&dPkXZU&a_beWum3 z+?T2JW#Ya}Hiam@%hfo-w_58<*IDU4{2g;;!=2rjPx58!ea*eb{B;M#QeU>gm!0Oz z_Tuk{UD-BYw%M1R@5^RG9Jac$7yGhpzU=M3Y(M@!&y_#gmtW}1-{;Hs;_uO}Y=JMk z$d_GWW&6^}p?cFI=oY!_mJl+u_S@@MU}P_pe>qIlk;>UpDk*`_sQG zf0i%5#h35$<$Ke=D?7@U&GGzQpx+?>rg6}}j-h0DW;zAwqJbAt~=D?w|HyQ zt*I8wPts@<^CA^P>Kqf1X%)%y#OFOb ze#{&HA8&61A60R^k0&9)fC+ceh(U-Zn%YFc1_jLu(L@ut3mb@v8U;1Ti$PIi$U=}8 z14$rjSWKwza6{EukH*yg2PP41&we~4s3_{fqgfd^MLaYd$7 zWysf^qowJ~zAm?%zPU9F@~SM;YW?R7?ybk%9MskCtz~KFNYvUp4GikO**!A zN$rHIRet3CrsskAdaWd0?BJg9%xFZsAYb)biJoWDUtdL%SH;K-oV5Q*yj{eB+1pMk z_#=|e27Pf;Xav)1sBP#Zx#9FOAh)qy18kg)EFuRzYFK5iZ7}Cz3T$;ufn&znQy{jZ z35K3D@oOzF7BU556`3R}x<zt>vCE)8pGSn|9q6G*p%qojSU8g{RSJ)~imX;`wb^@f6dQp3jR`6^M* zSI=wMEc{CQ9#QaB8s4ShQ~4W6IBgTg>}kT(aCSv`{}Ph`Oemi`PD6lRgU?^L0_}(I zvtGIKobou7FopMX#4$b##tT(*4vugC1TLQ}g18s6F>UV4NV|-R0N>XB9&eW#)c<5Y z>t%oF`3HPB3uzcMHo7LF>w`4J5#gw}QJw*mWLuj2IBFVD9}yfS0Fs9?`=J64X5%1} zaW4=Du3@B*d%}-O2_!rbl?oK3swN>3gZ~xqU=2*1GFUV)`GWmOKCynKU=ua06br=F zgvBYE4a4pxx*lTrv5h zgxcO_O~8=^DqH2i041vrx&xlZkBYxL)B&D9cv8K%Kf$$I{{T18_t=FBaCVem4IwHb z(u)JP#BqNiii#$mq){A z{F|f=_i1Wi?)(Ubzw^Nr^fkL}nsPy6LnFRsk_F9=k*te#*2U@&0BW-f>E75*uF}m{ za4y!a_yA)i`L3vlZ5sW~>=aO}a0g0&0kA+us@MHGyswrJE{X_bO~K29CoonCO6|pl z4Z;k2gYe2WbZgTsXr05yO`t&huuDK zfz%U+eZT>#jk;o}&@b4~Y5^G1e545Sv+ZU@a!DlX3N@6CF>Lz7I1?&`Z!>&epbpc2 z<8o42n+SDdNM*r?!t5F-D(jlys>Orbg}?OuZLOWAGH@aSq#%Cni#-2;KM*lv4vC1_ zo(y?XYlw&$rjlM`QiV#&R!M(H66>cDQ&i$(gfp4sq`Qblwn)pLGCtF7P!BoEozga_ zq>M3PCPGT6A%Ob9ADeB$7nv`cvpi(L9qJ;J1Dvxr4SRlzc_Fs1jn;N zEea5_hR_G`>84-7PFqT7{Fcfu_)>mx2ZMyI12}kM$k%A4l|5DUsN?_-2qem3P7g1c zcnd-2rd+xq{$xszC#8H!5gE8xHrY&kEa@R~>kanLP!!!^)O003W~1n6mbJyq&y*jD zL;W$%4LAC>DoFSOQce=`Q|umLK!SDEUD!_JA!v zh@9^~DL)LS{5T;rF`5F$5FTL{0Js?#wPRpxw#yOOOkPtqEa72s%5IASe0})lZGIv2|MrHx5~#hLjj$Nu*FuDS;7tZQf|oOIK6mB zj7PZcqEnUE8yw}3fjf)^W+QW8hp_|}6lP)SHT1S9<6V2@!M`D{M%3<^ir=H-)85Tl zs%!r%>3Fg@hR-tjT`qgpi2qXGZq(IFl6`@4M-UG5rTFdz@2nO$bsPf*nERoj{tGKg ztlw|P;I2K??n|dAc#vS=m!7cG^4-z{y zASLJ&xeZn}4E>a!{ffzD+L;O{;haL|s*$omJNj5va5ER%r1ay<2FtIH+-pOsmzsg3 z3*~Gsp->w3KG#aaxU~{U{tHx4>sth=VH1tIf6KDPizDXLk9a*)Ppk~ozGF5n_i)@1 z#qKOMV{v^nH`~Xn&GvNbm#>63+m~Mw*=$E8amyX3n8aG;NTqQji#*33GTj^IR+xbj zv{uTlLkm$XJjWLM5F;77~$^Iq7L;Mbzt;Uk@j z;01(_q`UacRTm?w02RC%Ru>p5aHsh60ffXc5?&Gx!Rz}Lqw@KQls;%V%Q59vL!59y zv%DZ3V5O6>DeVcQfZT}A$MeViM*WQbr%nL(B&uhqI;)7AU{hKDU^;smO>s^cSJ z!AW{N@YpYAfpG2VxO6Ik5ddMxtKXpBhi+uOnPBH(eZ#!#U|Tiz4qH=3s!9V$ijtOf zW?DJ|0B;sMc~K=M3X(5JSZ+MuaP?(2=A%RA!H*bm+057=9$L7O*NwhHbEe?_;jLAW zqmUms35A~OjeK4RTe(8LoL8ozYWTydm8uLzKUUV7)LBrh>!=u$I_x#_w4E5JtW&|(dZH^*M2SY*(cpFO)W`~$!vs5YGu-Fl{8o-y~?C=Bw1@Of~=!{f?ueP zDeC)U{BEi&u`20qCJkW{y7n!2w^7h><$vD%hMQpnL+;26#0+W=;qG#r7s0*Gc}~iO7!e78uNB3RS7253})Pwo`wkJvoVDzZ=DVdR5RH zP*ofvt>{!wFY7r1_3WZ{QY#a++8saAKfV`h)vGpdCmo^YQ99 z-W>QWe133aV3M+*rB{6sd>AS6$%~qk1Ip-sVHW$>26;HMGlke8B$K#YkuyqU^3l|V zyc7~szU`dX!wdPi_-YhU>~9X<1$^GdNtxxN1Mz22DCOglFpVp^AEXraxGKQzIn;FS zQ!}Tro+2mn5!#+tdaH|*y&3TJ9}JG(20~bm43wK|eT#z^plPH)`x2t?lwCsl`J(4;?EtrPEjme(H!nHiP%aVk(&i z!4cpea5A{BO6ytLIa+kC9P1Y73i8+?ne>qXh zgv~c=*O{OR1~7*>`Vu$!&fzex%1pOzI#E{`SmnMl(iiCQEjS8facHs1|BLs^qYWr+ z8igwV0Cg@<=i^#Vh>@|(j?ci*Se=e2IQPV0+|I#?8p77%YF_jOd`@9)#H2WJvqS&K zeb&uj3Dgc%+{?>`t#b~yW0a<3@0ikrt22GWS+m?J8;0k^#QH}MfDkI?4*XQ?&^Qu?yVP*rs0Vq^SQWx2Pp$+ip*rQ1zrio1En9g!wW zdxy6V&kPk9v~M4^(SjFn4zy^r6cN?vR^y&uu+djJ8g11<&d5mFV!6@orZB5nJ$pNt ztLf*&zcChGMIqn8zmU?ggh)+m7G1F@wQFYO#Q4zG%Y@-j8$@!&MAUdkdMFj-lFO{e zax@@OGNAwK56sIoCw|DwB^P|bZUCIMXn?wt^(69Fa#gRqtaO~oJ}xgCKfV_wEAg!_ z$cgpekySHmP>fMOADNW_Uq)hY@_d#QU5N5r1(Z1884OMNj_SHUoNJmB*FzJiEJv{} zlU@H|_)^R5W^5~C&K${7l{v9Wu11In#)`_cBA>T}^o z_a&Z`Frjnm#GUXz0U9>E1P8oerH(V*2aQGV0Zgr5O!sDE!D_s+s~|Oa04=OeWk=*cPl!!AFG54vE_Fk@{1Oaz6bU zR(NT5+f$JukmFfiAxYQ!T%0_g_L9;hkQh+nFACMLB48+{Il= z4&g~i&{a~gQ`3UY81B+mE?x`u7ynE#%!>Qb`p@Ylr^HiwwaCaH1Ftu)Mm!()XM7* zRL$XZQ$b^b7&HR$eGo$qx^P-<^K~(DI*t1AxIamJ%Kj`$kfH2SN>@}}$c(~N&L#p;R8u*s(LfvBKCNXBQJmQTmr&c6c9(6Kzcw*)ngqBCV zQ9pF6efN1_U3&+%RQ+>u6tY8^-Z{pW2|pMY9-2%T+;vB>2Zj zVd%6BT^L3db}(6En^3wi>vE~2{)j0ML!<=p{SY%02la>uS~&zaCQPs4MTphcO$5$i zVYKh!Qu5e>l_kK7a6J3yBh2C8&E90zu0JRrB>)OOe&Y>X4<&yRtP<`grJ^3A@LP|& z1()!);A(Ya$@|Dz9O$3u$^N$3|GuX=ba8R)Cmuu#Tk)12n^YYSevR96&-FBaAIG~$ znt#05lfA##zo9sLSFw97qV{ZOpbwh47^!4C)I@J~$m8DWHOA~56PT2SzOCU$ulr+T z!S}FX6uUn$7JZHfZ}tw4`z_S;Ei!p-arQ^W_3gj`Q}@@NgCBUBe?S{F z0a1S>siDt+)CDSD49EnT{GpD2A|wT3go;CHSBw6D`p+xIrXmW!It?RZ^;|pH%I>WN$(VMo$hmbR3U1XNZ4#NDAykfR?npJ^ukP`$4JB(@2hv90 zIU4=RwGnDoO$+QU)B}ySX1t{)QBw^DO2PZc-xv_NqCw8%8?J#}bTb}~BGq5dv8B2l zds&^qqAY1*evC}DRe&u4A%NO-;pkQ}24Rak81X{b8OTQdX29%NeB)caT!3(gpu1n74FWQ4qE?nP&)w}25b`P$9FV1L| z2xRxE^J}QCDb-M?c3Axqd8d+rms0&w&6hI$lFyfNovjtM=K$I+t+-G2+u8bR{aqwI z;A?c|GG=a&7d`LJUl)T{=xZ&Ev3vDED!a|r<^jC_8Gl6cJuLEbD8A7)^nxUdVz5je zVbR!4`={jHZT*IMm++6Df9mk3i4=Wa>Zk(Ba0*y0@0iZzcew=pkm(%nq6XmCdMbfk ztuup5ZK25{o$4O`P;tZHa#<;-^3=VoSKgTMEDYDM+(Wmr*M{4z zZ_l>1DduunYvb8O+W-|D+i_VMR-#n>Utr&Lh(AD5*05DF)TpVfgp+BEm2^5rTK(!d zICX+8j(quxDNV5~%Y#~g!8vH-paX2W{m#0UVI5m8@fQWL;~USXLpOz5$eq+jq*$2A zjF*Nb&Tl91-0t2$L2M|)dh0>h{KBOHhWnM=6(Tb8nfQ+>~v8oqR$sXy7chH+Tj2R+3M)_jpD}-DqDFn#a;LM}<5q*pz_hZOK z7W4Nc3fXi}e{>PaSlDo1<~8``+*r=jZzAT=Z&?ETsPqr}Emz)Ok-38XW=bY?IGWqI zH(^2f`HeVm4{K8Zuhx$1zrnFY7s7^Lhr5&SI-Qp(C#^uP81b+TjpvQZ!&Cx{Z!w`! zHAlMH5SZg*LKoH?iMJD&FO*$#B*E81vf#Fkeu(k9F?5o=(uqLmoZ)=n`diBnF+v?(e*9nf5IUVLKOXt|e=R@upZQ2_794RP&$|!%z zDSxI}8^2fmi(X|8^lv`<*JS_7E<-8hPZ{M;Ipxo^-~~Td{#-ys{^;`O4vdPh{Hc(E zSEo-?JgRh3$e$8Pe?^86uKj;3f7lGC{27GzqspJQ(Els> zGb}SAe@NW_nfw7)+gzIiyp)#9G#BUU_viI{KHsC|m4k;5>#^0fi~{@0<}c<;%BT|Z zFxVHq|hNF@F_3W1iY!#&pSy*;CJ$m>O{n(nzjT*d*94x3F?L z4hCe=cDyo5JFiK_ZeUpWbev!Eei4yB)37~Oi#yDz`INKQDkyoXdCgA^kdZ14_$5^+ z*GNqYLaX?Y>bG+C8#Gx7r=jxjvUMsIiieV zc@1^c*15fn(-75z8=7rg)e{wNKz463mSn@m0*ZLaz11{I0Bo^p7wk)-37YKx;8g$w zO0PK)woe@I2MTOC84K=#sw7rP(AeI2H8ZxeLM+CN#ad+>*S{_-{LleqBxZ$pol;+R zzg~%0M@owg4M8QwIt+%`(y;gKhutB#8b;1o8YR#>WhQpP=v>qMMSLM} zLxoMcNGYZMu@@m}e5Mx@%0-E!O<|#b(nU#P;yD-jepHzT0DjIz@%WciK&Lc6*`wiz-*B8{R$smQZ)~E2MH-k1D`_*sQB^sZF*Ova{G8J98Y~eM1WZvk`_) zQOtdKUIzClLAZsNfuMAYC6y53H!}`b?DniWEp&>Vh^q^9Han%z|4~ukn%F_BL&=u} zl1?o0zu|9zG@%iYl~TP$nt*MUfz^7lm+U8cxq2^)-NG8V@mPp;ygBiJ?FfbS1GZ}x zz7WSMDV8fRUK*T}U-M&6Us~;&xTYX4Bw|K8iw#$MXnfUivF`=%#CJi8jjj#2NfM~Q zSL0#ZE7gOqO*X#lJx?=ZE&Rh$$vWa6)`oC=sNG#jq~y({B73uIU!)7if|` zIubjxJJUiv2_Hx~HE?+>IB0xy8-YLgFgEhVE(uRKcuec@I)B|#)B&u22>C!{J#6(D zqkxw&NIAg)SwU_zWso8eh#s@viC^;kK*(5dIckd`SO^m`hYAFiJ)%4rAB+qPhFYv- zkM?QUkaQTnKQ%xO{u^)9k4GKZ9^DU`Zqj}kt6u@|C}UNmjEq(54q#;`oWxFWDN;4n z;(E|U-^2Mz@DDyEFe8?{l*f%tyMM^l^(+F-Cq7JS+V+Kgx!xVGfqLE!uUq7D=~X>w>hpP2s#LJ z7iP6ouwARw4b6mPx7y&S)f81J$E(sGUIc@ore&-tylL@=(q0Cay@Z5iqyha!{efJ| znUXUTXUe7c_39Z(ma19u*A5p8HmCsvCsFLul0l!xXwyc>A6u6AvPxu9nPj z{^S<1>=oNhGF_q5Y((jnTM$)?RArN`EQL81m=T|dr~}E|;+FWTHw#vYuZoU^ZwnY7 z{felq;rOblR`)PUe6$XoK%Uelo3QDo5d0HfF~bhVm!&9$Vb4s;v@CKQ7CEvf16w3@ zL)il>VNaK$r^`ftLF10HGUm#u#CqsIii5$kM_CVZy;Kt1*Oh)r`wZhIDiwt>+o7VU zCC;;I$rDh&h+XJndDRlXRTPHC6FA+}khdTJ8{`+jcELkIJGS5J zv{Bt}!*s9w>N{~UOk<=v z%SCr4(Oh_EBMI*$+9Cbk!e4x+u5A;|CITgM8S#NX%c%d+nYs3N$l(p75o90k2sT?oSc<;Upu zfzpDDWo8g#s(ooF`^B+38%LoJ%c)wOnfy3^9hr5lwI5@!$@)5U5YCrQK3DQ@EqJ!CSabv$+6D=(m4r}Vvbo@YLyc_7wqAf*z{x6{HwbQyD{)A?hgM= zFV0`qZ=5#@dc2AKkI{joSkIQjIP%~whSEp<>z#SoGp@pADrD~AjhQDDHI6+YzR@wbJZhRQr0lk*ptoKKF=exuv?3zN8o6PcV3VVA?2 z=;Hj`%EwYX9&L(N{CTGE=eip5dNt?gYV1)}^)MST{dioscXmTFWHh=LwoZgoAAp|3 z7#f=i=P$?!khw{OG)Hsj3p&9!@D{cDx?YBhSbW^EO&a?MY)?tEuI z1^^!JzynGKBUw*bnqS~w*d<$p8AZ`|D(AJR@sFVo{Z7-_h1v_9*C;yEjSwZ34?1AF z_ZdsJpnr^orvM9>G5$O#wf(RK*S;S9D<4sh#GsUY6>g_x?<23-ero&RqUNbRlsK<@ z!HPsu+n*$BHVNx_E9Bp*MPW}VvzNnD3fpHQf3e%=%i!qDmHjnJEl?YM$O0iRN`lvt zGaxMBNjDh(lJL)imFHN|U&W(pJlTr}p+@t8OeDS+W@B2>LhwyHJnxT0&Zw}k65zRr zn~i~lJ1-d#WBq%PwhH}3T{fXNnxtCPec_J{R?9Wr9~q0*NaNxBz^X#>ehbwd^tX0? zgv;du3Cnp<$2gC3fzTcu0&70RTcX)G3tHjjuPm?H=#O|6_fv1;ICK`>P#m@&bqzYfne)jg*f^;alVSA+4xQ-|ABHy%W7 zA08ed+6cig$yYIL>ck0EO21NACJ&rAL1CFbS+JZD#xjdo#yYUX3Kj>wjQXz;*8_FQ zpEhBZQNJ56=*XnWl~dS$yn%+>itJhykpA%we19Xv%N_9jPUD+;YlTt&YmM*rN~69W z&o$M(s*L*C%oRwO9mczZ^?bG{+*+Y;a4a+APB88fCx#Bx8*IKjt77s%_LJ!@N%Um` z-GDHRHa*&3x=z{0thP%d zjamkN`g~XwL+KB}9NpCmkZ?$oVeRt& zX``^NQ5abNO_<&OM|+w9iw zn5Fw)>XtClfny4 z&T8p<(!a!!bNRiR{<9sqvmE6wvr$+NDGaQCF9(LZfr0vmBfkm?tLh)0qN`wCBl(TG z*SY@`NO=9?2o0Vh{~W$JLV>3QChg5rkohF3f4@lmn;bb8|6137l_PgKb8G&2!A4>2 zm?;!s{YN`6Tn-GV|7=J8EJywg;rtIte(=Ale@_RFQ-Q;BJ1~3><6up7>`lf!yaNqA z@!BuZl0JC0E?3pyAlz_Kgaqf21P3mPkl+d07j+~2XW6+^BDwvJ+yj|=g(LT5NA3yX z-0#d#Ltq5I1`fEBdZGTrux4;T=+GS z{G0M34PT@3x4}|tD}~FjHDxz_O*nsFUHQBD75wkOF^`pB>A)}rFg3XqBL9}1ix!+r z(!c8y4iNe0$i0iXXFGCdIm%yqo}K$4$&LP3<@a=8`0yTJa62%3&V^ne?XN?0X2?HP zw#dI>k=A=(wB;Y{zv1>Xx9<9+^X>BcDh#Cm5(frNzg3R><&ONH*j2E0RH@D%DRoO2 z>A*3M^`GUya3)}Ca;t=X^M|4asifZnf&m7aKthrucj^-49_q+#ae1ffzv?18_cglw z*ZCFWe`tgXUlYUOp%Dr^B`|3p+L^I`tI8(*njASFMa^aYUFFDK?kN8S8-=xFx^BNJ zf20G;5|%&9fk6x*fwYXVsQf8tI^@63ouqOnIdbPp`yIJ0-5HEp4z?!ejcaFu2#*Q%u@?zY{CXpAYn};&uP|oZc-tf z=QPQ4nw{sgp~$mDOfRyo#UfOh@F2hYz3W`v5{EL~1y9E{hi|@Vywt*#dF|oB#-dl$ z0O)ZQm#rPQ#fCq+6^!&!+hDi2rtmy&YA|-;|oJeGf$(F zaMKV^a}^e)@}A&oYlV9nP*f;*OY}GJd78rg?t&j5HEH& zOoO%={<7sXlwBdZKI5@@)t3K!V#JDzAJ}$7HvzV7=Mr4cAy=WN^zeN`PZm+h~&y7GXTFy>%p&J zAjA_a%g6E$epLJ}alRA$J_Pb40G9<8RSo}}Z`!dVb|S|8FL?r>+WMnt-Gz9C9TLXs zjaA1RFZIZ6seIqx9D*@iH*5YnwpMmAmG$4+v(+gsrZfe2{i zL(m^y{-GT=tsJ*L;dciX$H4As+u^PGD5@#+&#)=D%LiqD+fJRUV~mDC!h|6sG5^dy zRc$?|n;Y^|$>X(oBib+-;0n$_@^imq3|L&2=1&M!EQ*mWV(ft@KY(X~;#zKg;U_(nW0kIjAc<{q^K;rC|IDeSru*tU$v4vqz}$IcTG`EK7AsE}HwwM+>3y z3=t;~h>4KgpdkDT z;$|B{>?_vJD!ZsV6j-GKyVM4=Rtf|*Gm>vm5M>G?BMk9?K*Rx}SV4?d5bbB#)%6Jk zxI1~Mf*7VCJ_tixArRdFk*y%kQV^@c5Q78)=WUZuRuHKQ;-N5vArLqWo}8c{x+{p8 zVTiA$v$b#rOaAslA^d*+K)(q?yde-H0I^#^e5@eO3q$-_AWjFwW(CozAbN)(76}Ao zOY*A<;-3oQKiM`tCJRJwKs=)$o>dTUg&{5#2zZAiKcpZYRuIpGAuohAD_2vg{U57l^Xjyp0fZF}_|(&-W+PPQ!5Njp1@99wgB+#UaEFTwu+53!CC8 zaN+7o04n*npTn_sPdfJ>Q@Q^LF~r~txN#e&c}Ky5xSkM=vk`8jI@PFOq297+f340k z>P2yGoQ<8H>RhA#Vfk8}Px_he+4)9&gGw>+X8I6Cu(||KCB7=El#mg0gW=h>ZPs6I z66JRscWFTLYh@b<`&`5EFgn#*qCO9^Kc{nphoA8-8Bd0ne2#J%_pOHVvi2xA6o34g z{dWxh@ZDwehR=uIML@jSS-xBFgf`F4@l7yZs?N>Not^8u+DR(u@l}(h$1k$`45U(B ziigpu&~MattY1{0f_AD;@h}qpd$aNVXr0RS-|W|&Gz$)hBA064YpQ)%)KGf>|GSDC zr=*jAi|ao%>g9UedYG^u030Y9zM{bnXI|q$IP+^e#6>@TJd#G(G0-o&6mM>ZMR(ar zze5t{?@VW~`Q$T*s5i7sU;h;_g>pJxHI8#XShXdh+d$%;v9t(Z(_VQN%fhSwvA^BA zcN>2soWGt zXvuuAIKI@bOI&LWCU)X+5s&W!;t0K~?^hiIEIFhdGy(jv@m#0(*U!S9jThJuTiC_; zRB*}gZ^H3BxM$#eC3+;XmbKp8YPZ6%gZhsaXCG2SN)0V!WpbOOHV;T`e%%!dJL1!2 z(Sp!*d^%lYqkaHk*wf#U_y}#~ZG;HhX4JlicW)qR9D=VUj0y}!3S_O_6+|vxqfES#+=jiuz{hn_I zQt;7-vdjs(MLej^Lw6WdGtS&0g}scif<@!G$cl(LTfn zHx0}m@60_;vV^A1iyyQ#B&STv$U5b+lpwogSwpVdN2eegw16{RCm@#s5;Ug~qJn6u zi6)0=a;>k&3mW6mHFVU`eK3C=yF>&Oc=Z;z;0ZhJQ~L2Zyjur0b-`1+*LCKpWX)60 zOY;kD#>%!CD?Q9udax_`eLK6Nc26}&Qw3#E1vw%tzvu8XM|A-o6j#{i>&YCaNl$)) zo*Z_H;W~~zlM~Gw`5k!!eFt#>?(vW@Vwt5(xT1w!)J(4E-?KKa|5qHd=NqnWM(^V~ zFvkeYGr}w64LD0en9D0zgRl86+zEvxKBgq`hoNUL)-NwZDljHTo3$3Yx=2FKhw1F7 ztlGT4>|t>O>9?0-^zO#re53cJC@LOomye>zbG_mIiR!YDCaR7JR}(GdM2>Z502A4S_8T$DN(6AQ|T|0qIOdm&@BK%2JHK75p{o^Hd@SbBFV3?iEZj>eJMB4wb0yOfu?!pb4UJ)r!vFnPk*| zpuV?s{>~(${#EsTd*|;=!WAp(yVdzSlZ^Vg>ieP2-OlW^2`CZYYZ_p>Uu^LHkp{p!2f`8$))e)YYy^LHkp{rn!a+@O9qbe!6q zm@E0aTy>;skZT=60Le<8F>Uqh7gte~OhvP|gcvSdLcjQ@$G#kHqUa|~H)^g;b zlgI&dmR9v2<|JUls^=vu2-^^ae~ly0YDXURyrhMB#%lb(b-=bdVAb=I?S##W!hfS9 z&n`zE^}K}R$J$@2>VLiicCQ0gJul%{vRVM^q)(h9k2v#dnyTj|iTG^Yr}4idIE6JH zrlY@2AN9N>m9XVe`2XO@lkUi)o|ka^S%U?C)txr&a~yE$c?rj%m89S~aO!yp z$D{S>)odg5m(|#~R!g^sO9WO{Zwu7(-5i_N3cwz131_W(#W}A8_Z;rH+~xc*BBETAo!coca`qIVPW?_Mjhmlx+_B%%9C_nmjtlzXQ*Oz~1 z4;*v;;%Eui@=nIkot^HhY^=_7&(8GSj3qT!)HgO(4{*;O;JX&<=^QnFv8vAT;plYr zAUqB7;Sf>vxp+DkS7}BGJL|Hmq@`i&NXM31=i>8Gdtu0`4!v+@xRq*t=ISWAeODx^ z`IG)W0ZC1o-3sV6Qzrc zmn!qAmFDE<&dm3XF&m+>!h||9(JEJ9VJi_Dssu3}U_|n$&q4=wbUHty*z55yGRry( zpN~q1fiFAhfc_7*{T%&e6WbTn|FEiIe3)(%^id;p6zF4uKKBVVMrrz(pw9xPM5qxk zv9JK8U=o1MY!+$&4xS)XX{?044x+ecR(GJu*s(&oqtRrD`W)sBkV1_DMUy`Gd{mnB zUFoDruxFSzsL9FrERJrwZCljiGo!KE<(}>G^=+(9anDZiA-L{dw2btz9=YP^MRWW; zvcg$<=$?-1qbffQw;@N5237?N5drX02{5gK&nPjIE;r@o`uZo+xM4_gVYm znUUui{5PPfV_da)c^`4Th0w#tg%YeS^n~CsUAq!?pP)3Xz>>~m&;uAi!Texv@I%;r zO^zH2p2!W{_~-uut_LPS+W%tYx?^vz14b#zm3V6 zW!w!&`vrfnJB!^X54*=2@B~iN_zzii0=@&MjV(7G73Yb`&GPUvvWO)d`>V$=Ff0Cg z9~HzH$>RDOHW2pwXcCSA_F_g_EZ@%Ou z`{aP~)`cja3tf-|D0w*$>Xt*>oY|NQ7Iwh|GV@Y}+cdmeJpO%TYDR3$*f%l|Zy>-O zZ_8mkci6ZZKV|FWrFGEGK^xf-=@^(2u2`KS7_7?{%P0+m6okvAVy|i8R4)98`%2X+@t& z6brR`O2|L(Ip7~KLOB_sjEqo9PJ(d@=N;EbH$eej6%$AQuzuLsV)IKSY&eeRF6u>O z{sOSaEQsdbh&yO3`i2Y&MCqLC%e;-l5lZM=EEUe#Bx1H{~#xd*ewnINaQ6H{r)87kq%1dAu7XV{B{}L9)fl zx`A`C5Br-;M%^QVt5ohj=>vI1zBIv?C2|ln%Vt%bgs=w-wv)!mqsGfX_wvU%&@X+Q z1O2e|2*D7$^a}h&^D*boaewRFRX0VtO7+hTs(-2@_BB(VclT^~4aC9dMZ_JPviTJz zBAA$%q`X(m*pJLDyCK^V5%@56{4-lFM@Qg1A%SuJlHz=^h>vgpg1XEaWS^Oc7@S)X zh4UO9cglgR^S5EN28MjufRkdsI7~UoJvE&9!b!76J9+`et(V+07DRP_>%ovVyf|ux zvt*v^Ly!hA+_zbaK46<4m2%h#*q2;eg`Iu~8S9o^iXNufxLBFX(Y?U6W#(XZBUqHY z2K;5xTx(|*d4nGyp1>f8OvbKL1~mBR?0kpz&+l;koKGi*h`W5hiGYydL*1KSO<}t-s z46gc}zR?Q5yVZwNs_2%zU1}G=WwW-P4ja?TuOmw*PnDnWGzp?=h(N-b^+hmPragW) zHovZYbUy=OU^B^j?%$nx+`99xod_6QA7*exKR?^uK}S?nqn^sC3n6b`$3eWGYGtQ>9ns}n=%BvyI@Y_Ads+FEj;9d4Ag)iPF$h#N(C_m=6s8~XR6lNhz=^9 zDvZn3aZYSZdw87m#v}Mq3Wu64D{lY`VOTKIw-=$Dvkx(pvo~Xn8H-td8~j&68Ze~r z@^-FMddsMjxtocxSnBZn?Z$cWAT}rvW&~9L`jph!xy>d?)Znmw&-=4LWb_dz!;zP& zMuv0#?bxdkr5)<#zIkU%X__(Gcq!#v9`t-zJ)?Ue*gJ|fg#tCz=`mG(^=N`z z*f_9O*u?9COmv43rc$gKhA|q2l~lwUPu2tG`s}-qv9(Y3%FlK27zd%1Xf=Q zaVWC=hjysw+&tqTX`0_20~=qZEAT)}I`4m)f2931SIo>Yn6(DuJERI8RzcGTwjGqe zvp0ZzwTI$o&UOfR?E7LiSYM#_@+s1-^HPun{gRJR)ZSSQ98jNuWp!R{apDC za=aV$vmWt8&VRQqj+tECcs~Bu!Xu2%-~2M`WEHoP+LW@0TBR!_6ABxRPzA#)uT*m% z4n${fa~?$Bg6*nA=(P+tzhO1+j;jH}m^>lRvn&rhR8;lFA~$g!0?)!@7r`{}w-kKW20hhy>0-sHSWV%r_=t6eENh~W90fPR%q)}E z+f-0@w+`A0|B=BAHkOa2E@G9~ac0zK2InEsByO1|Q=_IITpE_}ij*c};Sf}hJd@AR z25|-R50PNT;xwuh;3BBRb}R$1P<$e99r7Qh5Saf@9(u=`OnAtsYh@L&IlY3vm;vUH zzR-quzp)tjUS{gV?Hpe@*7^%*5wXKHCBY|3XG1-p1mQj7rDv-hlrEL#wFJ`NTi8fXcXizmpTq6GWpchAItU zFe5VGpp8Mri<*@f!o+2L8>wf_n;q(z8Z#GWH-&ixs2UUW2xfF!C+1>b{=CGlS%rP= zetq6Gh@Cb_^sf%_=drxr%b9q@g&eJ#VQmvvXx&0rGDTE+Y5R zm1l=_C!ErX{LKZctptQKTs^#TY@JzTJoEZ+KOT4m6C$kiB5$3Huo*R#Z{wZY&nCCb z%lTBwr)uM#lYkSNXg9`)biXkV;qy~s{qL;)GQoIhYvb7a%8e(!nf?iN&!0CU!J_D2 z)4hJ)mB4hI5(EsypC3y*0~Q5PN)K5>-K0gw;Q@8Vzg^jf<{uFO`S+hM2*4^}VQM5{ zJ)ROL%i8xuCmAXF3gvlL@Y}BA%qjh0v(oP|xlLne4*o$gWo#eshyFL1%2+I0TW}6A zo}#2zsg#LvbEurGEol}?|H;ev}=@we4lxFW1m z;s$6SK@2MXm{eGSz61*cIK7IrVQ=Q3H*;ZNYk@`&-n7=koy;o0pRUQUVd+uG(5sV* zsoG!vQ|;$+ItxVjivZ#Z?;gD2W6;*75S$YgIcDZjOJ>u>j32pgtd;5ZCD9C9x{t#) z%bG7z+-{t8?opd_=<%+bL;eX4?bIY^_saf-u~5ucQR{m<{xtg+ovc|oA6Bxn$*idi z`jbKAT-b@)!M`6;MfS_zn&SU?>iCN%Kaia_;CSO3!fmY zCvN4wv>of{85PV*it%z^r8k91=CVGPF@jP+5)dYuDnysABw+RquI)>6xBC{!^cJQ? zG;uJcaY>vA$GI*Cjv|i#v11V@{P3F zRXf3BUoz>yvyW(c5vV?N+dJ5qULmJOmYuHoZrF zMf#yW5W@Wn5sakIl}YCg)iQTo|s z4xM=;SgLb`HYu8ypfs1-#*67xrpZiYL*N$&T<9#dkp<~f=t)i!*U%cXPh++8j zQ$B-NtEi!3;FG`0IIg%i0xt(}a*mR@oWE?jt9_s|ty^AD{98(1DJTDyLHaV(8#u%i zg{}~2p_5{^0|$rF$ca6)hU=(J}O~yh-Wj`vf6DMS&P9hS+lfAAt(u~FXK{_u?W~)g;gpL>6hiy6w8A^x<_%1Y<#nXypshuNz6x#= z16#bq&dITx%AuUj2_wtubzaz*Gj3JHNP;nf>87JC%r5+*aN)zcE*u&!3zsF3tuS>& z<-_hj79ab#-1q)U_Fhj88)!R%c3$Q~*D?LhHh~PO)@PB1+zYC8wA%g@O0;NB=0#rr zm&N|KieO8_6|sRFtj;`O`-MI{a5uFKP>6qDl)Kre+dx{ocN+_e`7v;3Y_a0(!=T4zUUzI|m>&AHe8CvcF&3x`QD5l2<9 ze9%@$n6ShO*{C`{+Gs-a<7!kC_4a16*T!ZJ^8$7$D~~HU@_89anW}x8v2Ys7p$x7j zyeqaScZ*TaeRizW&-J=D8Vl%6%J{sm8;j0jov7w;QHq^7-ZsibDU2L#GGg~xRRfh7 zZyQi_uCatq{>f^0U14fK#ew43V*d}G=Jt3`?S}YbTxx#L`H;DY|Lp$E2%L>a)d}=n zQsz=m##^53ZQfYR6Bq}nvC;Z_hB|_CG}fb%Q;n?~5IrA6@5n@)yr7IlC3em3pa{$R z!wQjMe7qWuUjHF4WZ0YVEtALH)_faaw{^ZeBHIq@838y_?0?PfP~p${Hh-?y{8{ec z&ldI@`SW*9{#=L`_Hb!5e|j=DkEA`OYX-eLCoCf__(vBEx{Hj1xxExyAUI|7Uot3V z8swRiK@oc&%a$;M%5gKzpoL`6R->M_GcR}7xLMwWihw`Y7>j2AG=IK*mf}y|1^9pB zPYw@}z+Kl?ac5DiH*j-rULEae{wl9HFzqDVaD6Kix)r-$b22CwvNnTm_QpcXj?V<2 zda$IWN&rbAs~B5sv#P5(q(pp=!5}L#uEx#MLmqvxL)YZcvIOr@#lo>&vhY#3_5Z@z zM?pb`Z?^tMzcoKLqnoWMc+?EP6JA=H;hSuL-Byu23d6q)fF@_##nwq5AIw|0Xq)>L z=P&6rvs1GaJuiz(k(}UphayG?d+`?5zt)k2QT91(4zbjHvCpxrGSc3(5DJ|~_2yi! z%u)1cnnSjOURmaW$ODZ{FU)HbAPkGMTfJ~=^sf!yq`XE%Ep7%+kvVTuv46WV;&}bL zxEKVBYhxU0olkWb+9(Z#?Sl@$TLubo1O(yB5kC#&q5sf{KZ8t0;3vtnCrVSrK6t8} zG4szIW_CwESAOeaTR2Q%wSIU}(YJ$s%LOmoJQ+%LUL{;HvE55ev4b}R=a)5= zw;kP+0p|z0a%C6}^^YPMS_`=at_(2Tbn=`iyKoW4dh!JPC~JXMj+GTB4nA^S@}1Sv z*fkl023inqxq49T|ElZu%l^OtW3dXzz?Rz%lXEMy!z9#MV+`ieZ?w;(nemModxWh% zos0?Ygeg(BO19I0U#!mopwIA;_~E$Vg6CV6n{6H9!%qmuP#J1lmIvTBtywpwl?Y7o zW%zN@1J?2LcOz&^?{_gl!ksyjjR_?GseDX~>BnrCmI|Xes?Z@1s%6Wn4&&8oyt`}S zamvUFz7@rOZ(>xUdGyG^s>tPF6SR;X8aRruWnS8hAy^Cb;YtbK82-I>PrI<#!EHQ^ zX)|)Ar)T0v)lz?fseIh?=;o+SbG)+uW=x2xMQwFz%w4#rEaB8$pv&QZE4rMc=n`C| z=pxZ>ewYo?fX2E!o6Fmkdxhf*>1EyS*R%;W*i}&cBU)3Ge+o`&V13QuV=R$#$NrM^ zD6bXtzlZmOG@@n^x0O?Ex0V0eW#yMk!`lnjrgrdGfn$X|kdtFCAkp*U@YC5t&N22A^oo}!eB{zZ6fxSN_=$rY~}j&kKyL)37x8c#iC9_qv_|IUzy>J z;?DqVZ`LJq_Uro}aFJh_0~?c{9>kiaJ%b;SKMv>f=c=&rWd#@F=JG#j22}jVdx)dU zNXYnL1pIs35DF;_hEwE7P&_MU?l7|h&q1j_N{a$jT!TAAHDMGfQob~9^Ncf*xN@%H%#TxdiW zUXOdVvG6>o>`*vUuuEPVEB3`=8g+Xk8P}t@@M(PaSWojOiN!s(c>^VJT>rEh3qOZa zOMN;guDHj0#k@-8%M%J}KfW0L04W!8F}IM)^zeq1 z?nsDmw`@p%4XXr#mtLL#8$cZ09ihgA5R>qZxCo$m@M|4rBaQ<>0ikE(xEQ6Q!Ln;1 zGpU~Jp#5;8?Z!aAAo}9-5I_|V3BW&vmXHc+dZkt+&RKABmwi;gS@VP3%${ll$M76ZmoN>5)<>}xm9x3yGh@t~&Z+pkY zSW^>Kxq1$enf-pdl+a)8nO*%V`hP*oT-5qQTm#Tfcs{~)5ht~Iz`_L`r`Z1m5x2wi&vJ{LAjN=XU* ztqG2-J*&FoZ?Z4JY=1rUIPXW!Dr{WJt_FRI+;94Z(Y1PpfxmG^T^(di@Oym3>O=VV z5Bu8T6%t7Prk*l-18JE>KF`4vnA-%WjaKU)Hq553VBpNMwJM)wRQ1p-R&_RSdBfrk z=A>4u+RlDYm)YSb&>q5$mpBFw62UEHuN9X}eidX8FrXyvbUXo1-prE_DJZG9M~l4l z!Atkz9?b%CGE?C*)<>>@v=aGzQnA0q(;O5VT?z?N#aoUG*=t9-RpI<1=vq(WBa&{M zv2Zh<3L7qs!x4l&lx#r2yKRky&#DixH7g21Ld<_vXCrz{pO~slPvDYvYsv35G5=WC z1u@qG-AM{v3OsdZlomF0(}=2af#xLm(JE|b0o#vKKWnIs^75`wGQRA!pbwRjaHnBc zm@CSHKOStCT}SHzKB3=Ztbus)w6DdiGjGz2+sI?MYzZ6`A_rA{hV;9-OMi^iYiAf^ z$x-RDc9x~I*T3C*YAKWk47C#KRTyvJb>6X^j^iWG)P`H0kCh5~5Bwgy5Q7mJDbSvN zGF*lJxIbkfb>B!uK9h=kgo+3wH&x}%xQ?ptsbu6tR6UrF$%y6@D+84f&drS!8R1+o z?rM<_k87wCx`HBqORZ8+EB)95k5Kbg#-n18U+^jeeOdFpcx)nF5+h0 zBh9z=ieQ{W5xyP{e6+1|9ZSWpI+%ds=kHOzqt7bGih%wFfs}{u^32t!CAGT|yo#0n zrrd2&A77E394~fk#NvwYt@6DtbE*8Q%oOCfCA?_RPF@jy8rMd&>gbZ@uVV$UxA{I4 zwPHUFy`Jn=s2+*NVg~o{_&39(6rKPeR`B66e89!wFft|Hh+lQM^Unm^4d z?(x2SEW*dri+g+`UkdT1KfZXHKkHN6<1PL{3aFsz`px&bu`UId<_125Ub>)vWCxI^;84-F5>{W~Fl_md!#r46;Jh~Q z+CJOxBUhV>utzHH3qEbT1oPBMG`oSTLIzkZ%yvisLwU0Q?Wz4C-dG$92J>Po3_Dr1 zhw;9T3P9lIc&snLZVmiOMytXDkse{qVyg!f8oIGaphu!x*RNps+ zPA_QwpL-hA=b6WqV2zuE*rh#K(WU zlJ?)Oi~$1bH~k#o-*zYXkTC#-;|(Ilr}S;`y7KApUwb%z&VOq2_B>|Wah^Fr+g|>F z2g?W73N#7MDyyYMr=mrl0b965AD}q4=)>SPJfT6|&>)t-YPD)pYKJ!cnR%7}c(`GA zP_IJ6QqeHK)KnVwd!K3;Jchyzvx*$B*8%n@%}EP4=hNQ0IXm%SJ#{~d3MAZcH;8@; zE7&+>71GVdUbJo1u7`cA8s3%E|1quZrAD>adPv-eZ)I6MKr$tNNVvJZK*?Ab27Fd< z4f;&A6vF^PLmzq6Cg@1J1_i7^rmDdQe$?Q>e@P9Pu4}+c*ij46&ryEgqn6K}RON@x zbrybVxbT0wbo1ZDgY~ETNNI-^^C}N?yg=HRD`3UEyG$JBFI7pym^4!*<*1~-Oq!&U z(o|A+CS8W4CabX$#4g5m>~!B$=&dT5ZQj&>mnQAE*_3 z=+!RuUOQ3N?^kvldv^TWF{B?fxg4`m-Be+HePZV|eM}zK^!Fd)d3Kv3)_Pny*Cd*} zwdxLCo6vm{@m2!fJ|zKfm!c9gQ{@h9&{r&aUbhiyjK zf_JfMw&20)_Z#9z)>?-7Ek z_NT9SFu?M0zUoyq{z_;^2L@CO>$1AoCOADR?_znNQYsIeK-R0vw-KsdmT>TfxD1w) zYZA@&wWj;M>4?)HXYjZD3;jrea&-c@_=J@tq3o(MG|L|zLVIz)f)36y_+B)Vhpd4m zkn#v3^R$|QaocP2?j)S=9BMXA#OC+5Zbz^deD&<&{pGBfzRH|cGkO=eBtY*c@r;?N zGFj(mAQ&gsAXsl=tzprJ1{5iTUXrid!00R3xD`)NxK7|`V1+cd1~{?oE=PbC&f$&c znvHkjMDQh8O0FjT5FcgwRmzLPzZWr+(FVKK6Ho)pe=9mP`_AiQt zFFqDUSQ>$~3sKE{um6%noDZl$h?{qCGYDvLn`Fisbq*JBbKU_VQt;_=5CXwqjoxu2 z2y1NgzQh&EKsSHT4OCDU50zUv>EE;yxfI6|q)nl2h5ohh+(gURxWoeg_AMct)0t6( zf*&a`UfvZ`c|6=Ce~kBge~b@pTz7>oK4j*D6WtjnzCFRlZ5?Yfvt+B30JiJPpO2Z8Py$NY6f3Hzd}i4n@UvLmwz z2jmNKj0MwvD8&PY06#$a2j|CuA@Fl82LQaRrw=#%_bE-w-)wWk6>%5?y3M6V)}ux!(g~opfMPhOX;v1a4@7`Fpvl8q>7piSV>_6Eans5 ziB*GvRhIirBBi{sg_4iw{ut|eX`N{h?eg++&{`5$f;9cozjH(cAS5^BJA$(c|X)6&qq@>>(@^C zvC9AR8TIR?FkxArPK0HpHDOupFk!DoO~|OsWIdgFY{Ckou1SifD6Pr=4Wm}0OrdCv z{m_I5P?R4!QPa>o3bvQsL2XzYO=~g z&0k>H_dq>JO=g1s+sQwJoVOewP0qyslAI+dRLEIsKa}GECSgw|fv?${7-ujGVTTm+jD*V5{wV!8Z5qj!rWj}kby>5H$wbx#|zXgSSGK`L~FAbvt=ManvW*?)1I?bPt?{yf}M_$hpKLJAf za}8SvuEgWh{c|e>viBKQVvX&S1p=^t8dGXRMqu?e9G}skeLg}-noKR+7a1 zr#kk05CBo9;G{{cZ-ux1H5}cPJ2uhl+rwf_>k26y`;fe0wUtvLU~Oz_i7H!6i|mum zC*y6e;kNR2F!>#ZRzj<{{xuRmCK=%d3*M(R`D+#puqUT@(>O0z{4Iip9=|GY@}5;C zbn81SVh3WIV>=X`;;c_EEOY1(Yd@%S(Iz>A}2p!3L2X~ z5nQa}0`As}!%qeeH+}B+K776T!LEEg>8>ok-nF2Uat|gN8DG-*R@yYWT0dkeC=h*( zE+9>#Yx?}X_nb!8N8UTfNx=jI@=<0EPz0pir^e#bivk^Bh+_`DLi=0ip*gg9s$ToQ zhHLNZB>5l2sp0sk8@zpgSI)ww(&22AtyZdn4b@ucbG(L-Op4=#!y^>&rW&XEDvwxb zU!?6jR{Y!-u~)Tb#EQBP7AGYwnT;!&Y!EQ<{u)JBb>=HAOwOuRZ1pZF&}9Gy%fDJ3 zTOWySMUbhfUBDuVi8fu}NSjp`@3l_)QA=L^*kbBkL^lMHlum3_>c5l=VFcZtK=&I} zpf3ezsS!?-c%BdxHe@|N@SyD!4<1J1-D~Lgg!a^hIDTqaF;NAnYVQGHoY z+PyBl86Mj)oII@S>*A(RhsU0)-kPkd+&JSbR7VVV*IPN$dX0=v+K@jiRt*j73=VQXRP4_n`eZK;W^ zjO|PP#H%G%O}s8?&=FW_P^A8-l<8j0T-&1zz+Vz1Q1UNG+3Sr>babv^CoO8impo|EyUK&fJg8$YVZCa4Ud{kcZ@me|+$C?c7OAeEupnz`?Sy+C7zAKtf3JNKp0|F7- zkvxTh!DGm;?Qp3wICVnl$m%opSx|RuOYD6(^iU%H9iI79UHp`~_|0&_KgBa2%=j#U z0^*myhgGosu1SsRk+0V0DH4(eDIHHCd|;nMZJvx6B!%P5^h|Paf^CjEOEYh&dauO z#TX}EQpXxe9cmD%W<#ynNv}@7UAv#BM2L*hqH@|ZzxG`QlRKAbFfmWM9I<^DW{o5d z-m&K(>SdA~+>KJcBSiIxR8D;j&nB?sZD!IRq*foI$28hNW#Kw{gQ;{XrqV6{$0k2c z$BPbmtVMN`_UD$;sbgce{2!LmB)y!7sZ>)s3)_gJz*>!AxgJ)Os%FqR6Ceo-2`6A@ zues1!wboPsnA$Yp)NmI7Bk|(8_*r%FiLlV0>nc-jTR-joDrZ=1(#!cHV>K^hBjuo; z3*f@kWhlkwf@&1Nd3E}Kt${oakeqR!e_-3tOUe1#`Zdmoc)}Ur^ddj;o!+G-zaSE_XKqr z33qtE=F%-AfaW4Nr5{XEEG9WsEK?%pVOfXJQ8CoHrk}3y`59~#LBD<=t5{e&RTwJ~ zNm*{u7m6G@H~IO_>k;DbU5>vMMSqn2|22!9T?2HAy@u;<+1ud{zA2gK)hN+beP%~gm;zJ^28(h=^Ou+GN2Jxm| z)v-yt5%uj`-$?b=HIpx{qZ@L?tsz5(fwkx(RkbZxt3A;l!6~DRCyLPsXaT=x~Tpo$ThyyP1HjY0cKZ*ZKk{dcP zkoc#=@y{EMf26OZAJyqF`q6%|sAWTmeoRr6uuDwVVkYCe(Cj}mFAryEwL*=29E@h#0EM?Gs0#cJY=x{T4!T$9M?hS zm3wG;u?P0kQj6~hQft7Op~qdq7P446Pl-$b8_)1L4*yf^zb9!099HhMFJQj`e!d|RH#NFI&tn2 zu0NT{M47j$&KC>ms-iGGbsL95kMlN}?@O}D??mLcQS#d$`E6jEx7( zl$>VHTB@2N?6eH((~NI$bUpLi=-z|P`CNzbG}t-I;n0{3q!F0n$KSO*A8H+}>SJr3 zxagvb_m(T8_~ewI?k3LfH%$`#VZ*bYP&?_L!HzME@nK(x9o#wwA*TOd&|B)O*Jk1`Zo7BuPvrOvL#O&LWr;A zU~)enx9mGU)Rv-rP=@Yimzik|q`jwS+3hI<*K7Wu{I3#j7+_pI`@9b7g!gf9+w+8= zu*Ejj17_Kx)B^@#Y-7>}xX>d!xIL^a4$284;A0z8vs(6b<1_Te#oAq;YSh2t^B-uBR$m_JyW>HeGrKLZFi0b0ty50g_V3v02cVq6)6zyaNye z2TYv>ir3#N6q8U{?Ryhn5~B5%4R}w}^BnRoZx6>nA$)KvHmJULZl4Rj5jcQ8o4)GL zm0T_*;#D!(1_0`AJf??)4qN4k!9hQC7?bE|`Gt^YwYUXE0M#Ub^__SrTdQ--F~7Nf15{kDH(HY;mqU~zJ!ue@Po$G?9O zS~}~eg|iww)bZR&XsW3>&0kQpE0Rnu0}{s3Y=IoyePf z4f;wau`kOO`9gef-LE+LeoGtlO}?AqXNsB5Ih=gj z8f1$1fd+KkV2p-+Hb!v1^+BeVwX7HqAKR+Tq!#aXfQ``~VI=*JwTF2>K5&8pGXmT4+74CUhG+Nwu#D zp(ta$u{^JNV*HBA`T0!+yh>dadb}|D`T-8fI+Hplw{uR}1;*}cx{*0xPDO6$&X=WZ z*ACP2v{Rd*$BUwG9GDy%pO<`=hsbhTuF;?Q&8W3G<@wFS<0n>Lliz%Ke12i&{9a9D ziAfD+ym+#9Z(0E&xz_;{`+ygHg;pwu6^8E3XgAY2eAS(Qc>|wseZGm5-3o*o&o|l@ z`+2@0bk_TFR+YTEqnu^70@at7T^#_>zvr8J+OVGdF5PJvl;1qs)hEOZj$fFVpIbRQ z-+;Y1w#)0CRdWC=+isWA?aE>K*|leYydn!o$|@0md}zM6DxB$e0OSzWlMQ6M-_h#= zpy-Ltw`1)MI<3!zKe>ZQ3~}hZ43S&|L#~LFIy0L>%i(X1UGOfVo{WBnX|xrb z!@>&5`2yc>oqm;N(cKm-*+x5^G7cyeT6s&6lpZ2JYP1@4I3}Mxm_K;u1TWl4nLoM4vW6v=Gm4};e8GN+ou6}f)<~upzm2c-oSR{fS5tv= z8O&qXA{H`|V%Jtghn)6R-zsgAeKNC*#4ORZXlri0JUD`jS#2NAg|-^F){b;KW$nlc zQ3md*iVk_{D?USwEfYgsi-KkBe!=_V7sXJ7h>tCc4GcXFE+)su<{8z+DL&p%)MOTC z5u{0J9Ik5Wt2U*!}&QTm*5v*3|0j$r-uPg2rWeoP7ePivpU0hvUG zW1}!bt|?JY6*tmyYta1pW}r#TFY%tc$(S&Jpk0RtciDOI*22T)E5p z4g4LBe?2Efd@JdkM8g-nVgtTl+}H@`yT7mAQ#a61ccj$C`Cp=UQ{#GP7_Dxw_nZcy zvTJg?F$PSIjmy)|o>jRyO~o2Ti`a@kN0d}O3Sbb-*HwkrR{Mmm_6a=>Lht^vPv~)C zlZ4N|-ck^XY3s3bhQ`wqLJgS0p||vkEc6|k-%Ij217^t1@|6fbvv6--GB;;th-yl_ zieY=T8dCyNXrKs*D_(8&M@oBn{oTu6(7%us=&>8PC?R$8D{?Som-hMq2|X-4%=}X+ zkAVS%s{@(?FZQiDgu&5oVix`WI{8TSdmjce`Vpv@re8xN4-*C7s)I(6-9G)a+TauL zEM7M09FvQ2Tz9oY^`Zw91;UjxO*5%si z$E0TSUF;J=m%xhR!8D<%2|Zpsxq8p)s+>^k!`#=gCjD6y<(18+)E?YW7yFZcEVC44 zUGCQE==&w9LLR5O@khc*cJSw$X3>+#0FE2o5W4dlY7-_z1PV@kFr4H4_hNcaCaE*2 zp3NHn)nhF08QxTc^XQ^OzVRiY-R96}tNJ3bA&I`Iyx!~g1>{<3Na8~*e?;~WDhO~a zwoq@x)c%x0oCB@gT0cT>!FQ;YNoGdV|$O7Y^4**8{T@FD$7!P08 z6^t=Q1>}C>ZK8gP2=~grBBpKw&JqMcJVv8ZvONYLr5Eu=qMz+ow)!XCOtt z;TO@wH4>kVdRzNNVdHa=*sPM;m{}E_mE0x`4JbLyf08D88u~yN?d6HGv94s&LdICuEJ` zgVi__{{5=_!90p`&|*-8|Zv zHoGtqd&PTTl5pUXoM1(DbVslK&3TjB3EKb%8BJ|L410R>YK2M(mHd?mE# z1R5BfX!Y%19q4wOOyhE8T}JD^{=gt zQVT7%jI$xVMNJe%`*rpmGb&!A`#POF-eIVSYaiUwhHsY z+}k9sp>XoIhd&<7_aD3@Jak&aX{qSbJQmZv9=B!FW%KZ0hB@fji}OoP_+cPZRhl zVy}5cLeY5~x~6yWe$0jCDa1j9eJ=kO^Ov+G#n=D zj30HODwz9R_JPJb9)Kl)R-)8dD4~toZ@yj#I~Hi;GyBDnJ*@t-l|e^R$wnnoxrPvUaec`G!Pr>s~gtj7y0xKTY#%t&nQ z)9kTBw6=MFvcbT}R^|P?OGylb9o|*Qd%I1CymKz`slfR)OONcEl_}uH|M?F8^|F63 zwDso*m=0xOTKdVbZF5ry)&QnH2IaElFA|e6s3H++n5X3WYXp+ z8zpAtp*Fd@14HZ^l2|xF1iIk{5r~?cA)Ox8(-$BlZChWffkn3U85xo>e^q=)qTqvJ z5ayA$9nI*6(X0ypzo_Efx7@--X&*^$vVCh7)15 znPy6W)!HbGvCc>oEchA4WUqXZkaaAsNZ6a{k^IB_c)y=OqtX3&&6h_ja+)t$ILoc4 zolB&_?DFW4y%Y5riz7qJ=v7XNqguU1e6l7FN4CI;>L9@A{`}?<`o20kizT-~(OE3H zQI}hC3+npSVd}cv>LR`|UDtpeS@etUy(M(_G8&E~hN9*7=gnl{ZpYJ_fTjkDndqJA z?G?YbNhvWziAx^LVb=WP+5bFf&WugI?ua-=&j&sWRwxhSdV3t^s@RUGK05Lso=iBg$AL682Peg*U^3Led=ophE8_0|Q!Ce2fTcecaDK^`Q*n zqvW4b61mo)Msb&Xs%o)I36x1f++2OiRyciv`aA09av`{usuo{{3!;b*F|bDZ2G+>JNJ5%m{BK>a!!C5$Pr6lmaHX=L-n|4)vL){^@qQes$mFHE z;=)kt8+;mxf1yZwW#V5ZdhQ#=%GJOkQrg{fg-udH%_|6FJgh&No>l<5Gm*s&Yi2XIs1~>{bMMYv?C>onM z_hn8Qz&O0r8tqBQ!OI=VlNiuR6-8>F+Ss4SY31#p(Mar#NbFS`tkpw8Pxbj(k@x}( zf@_IT8%koae@wqpvjNN_f)wO(s=`Vj(T}nK#ok8jLMPYec%Pg3Pb^iHzy!cV;sZpC zd{VWs|Ff7*>3!xI7;PNjR5t)fl92)H$-vmHcIEyn>(1CQDsgI0_+@2rEm&O}iT%~P z^mTC!iSAT!V=Z$(-G#XTr482#rN`^ZRGwt;+Bd+fz4CTj9818p4S1Jo;3USRvo-WI z(Bjx}_?N!9Dx0|-iL6=8bfQDvxkjy>A_9Q>aU~IrJxZwcl(B#640}TkTs?*HyxG>Q zd+YtpZi2jVEL3zB7Iin9!i?Wj@HMeW$O7hS=pK%Lf&Pu9`_~rZ8WMj=8A!&$keskC z5Hiw0B!XpRVSDO$A2@N1w`q*zcr$7=xA}G#O!HeOig??EigQGqDf%Q)P+dO)`+tsd z4uRS!nyoA|5Y$*)zPDGd7B0}oW9jVt5)G_h;Hrbvecl(xik1CtUqibXYjQOsi5*?# z&a4(`Wjet6n`E^_p-pAhQ@?HT>yiYDag5mA^Ig~%bL;t!Eyw{kJ zNW}_ggdnx+H{t&(i=XaUshB&&)Txz%U+kBJYW555?DwT`?106K( zB+d>riD3it&IzT&=eXT(p}V!N5L)yP3=oNG{g`;^s_K@(rG1-EQ*d-)E$5~e zZpuY6MmWw&9||&kB?)R!M7;JMT9b_N$RED+H$rXaW9HJ6TZoqB`-dpcbc61}XYMw6 zCnadv;6S7J@MsX=(mox*MP22}X1q@OlJx~@`T^T|7J<@JDOi{I3I{WJp|)R9f8hVI z?AJf%)1=bba;_3cg%~5e2r+Of}=#Hrf||3)=0y~;#rOf0gkBl!a?fZEtcXkzbKLS|6W?a4(v z({2V4wjB>ZNhHx&qOMJ$KJt6F{Vmk`2=D6R^N`4hRd=@UdQtke&LjKyt0a|Q&q->6 zB*at*T%~K<>;3m=-X#j&sfh3-<^AMkUk_%%o$0mX#Y1{8>f(P9OQPBYvv46$m6XmJ zgL9^)Zl$4xG=%-#q-NaS__RS_O$G@56iv|t3nT&7)lZS7dd={hZj*<{uFk8AU(GVi zm(U+|mD^^V5sclOeJty7%7-<~-=@lXeAe82-Tq`u+>$2*h1l77*dU5r*)t4XDi}uG!x&TS=G&Y|t1^^w ztriag09-|^e~wYF`e@6m=vf!*QyZ%;Onnv{vT;aM(PQtOFp`_VE|mpJd=2p>%ImbY zy2v$K%?SN7s|stiwvb$Li8~6tKk=1DxGDH%q)VofM`#)ov{uvksq)|oumc10$Dvxu z&)2gd2W$r}TbW;U%eIx)7S=%IMJ?NIw0IYP6gxzT1sZd$uexYoC^79uI&5>Tj*wRs zx7Sm)5j%N~7Jgu$*uH@urUyiMX4Xh*a`;*!*J9ODc_4Jp_t0l@w?VI`N;`}YOG+E` z7UtT;eJC-CyHIo>dtD>(Q+Jcw`7E+{<~0|PF*o%YF8ekY*TugGJ=u)i)VnTzYH4-L zpuFa8ysy(P76yV88`cU&hR8-`wVYGV$kcIoCH}o&jv#ntRt0(7-HhKUT+N@~i(VKh*jUuDL1*wf@Cj zbq}@f4Bq!?{sLP+!gZB5)i+;ln?Ry>XqWlfvs>06U; zo>TulR_jO9-{!8UUk4W}ei5wHR_@ZUxHZ`eFOm?`0_=5(#$4^c_-m-`0lHjQ*%699 z$mX{?@INM=&rE3Z^czJKakUMEGHC+lEA1WRkNcXN-+)jM8AyTc@Cy*e0o#WTgCfM3 zM8Az}CubPEceFnY)@40t;-;IHm97xMa=8mm3yUrZ;^@SAZ8J53hTj%fN-2n1*{UxUQ4Trq%eW4ALJ zEZ^W^6VJ#J8N(VDI?a%e)mUl%zeaI)nNY+$l%d{xr-oOFf}akISp3CAoel(BskQVt z2RrGLlve&`Q_%a}*Sm~@@)-FaQNKvArW=}U7@BPKku+KRv1qbiens?fpJX&ycI(k0 zXOBv2GI4pJ$<8rNMo>wsF~9Mb*PrhA>dd=`2n!wauy&ZQ%Z8!LcGRjeblGUrWpfI> zLVZFdk{r_HNth&D7-vqSEmqerQU7!$-I>WP^;}Q-@b(mqy)RmVaNjcUdo(IBc!g7I zH>+9v7d=MBCasWSyKtCD(n-RNAsx4y$w~iEV&X;GUMA>byXs=BUhYWN?Kdr^>}Du2 zsV}@jHQ848^Pzi^Fy_3ALeZ$K%XqJ?Nao4aE&IC>6eF2$+Q3bI)3f|7XnH!3&;8w- z{zsd@mw^Hpx4Dpn(8(NXiX_J5B7Yk~Z9nFfwzWi0r((lcuiZ*4*dRN!1vpLoFeKCB z_p@UpevI$l@-O@PUv{EN>}r1s=h&aCo&DKAEb8^f{#@N5z`ks)9gqoH z4Yhg1T2gYHDg_oJqcQ`3ko-G6V0^2q{8K185}l6i{Q8*0xvyJ4K5t6?snXXBsKL7< ziTvHsA&-nyTRq8}{dy$UYj>(Y_Gu(`z`L(nBEHt!!ms4fzVeOtWFabRR6PH6?>#o6 z1|y{CEIlpjK>Z10xXTvRm*L7+rm;rs22RdDmnC30^dF%I0wwl^LYQs#WQRbjCx)-k zFP_(&L5Owyxw+X1E4_%AK5-kH4H15gV$MY2oW^9W5*+lx z9b+u6f$$)*Ht!@&u3Y8Q|jjc!7nN( zb-%W-2b>X17t_oY+vQkCdR+YtghB@pC;kC#M#V3F-RT$RFQMqehTBP{vqr^FWvJcd zEh^JTq+!Si$Y2wYWmcQ>^;|3qtV9pY-E-9yIKL8)XdLSFAzmLJ1eI-Nf7J*E$Tx=x z@x9#uIlm-%F1U@@2*}iBv-cN8q7ZL||7I}xevdQEZ(-A%my)b#TJ7(j+i7eEUbcE$ z?A2?!{DWPt)8&(y0*_=aAFxZS@%wg}*6H4WKWgv2^OGV{fv(St4fp!GqY3rSY!vG+ z+a8P^$XJ7iT7fO#AVV*#L2Ro~;%fxtU_d#0sRe4(RlXMb&ML^Uk{&#PRu>`kLRzXy z_#~-objS~f3X2?zmcKn&368w;27#>$giB_VvEA4|bF6o}y^Hw8X{3qzL$I{FlzqgF zoFyy0ZyBe9$-UkpyUd{E#OH((w|Flnl&^t=l821AE{l(Vd(`fQ6_+F=$L`$}R#;W} zT8^V+uF_!oe@7^BKbdUmDmToyR)W5mUXG5Ry3Ska*Q^Js*;=x0KUkgV_SNe4rI*uf zrR^|>@(zRFPg*d@I%}Np=oRYsI`1KVWxzdQ6+3^EyhZq#ea|ZW3afSQi}`i_A(8Dq z{}cDAE1g`!s+@19sJG64!C%}_zS)2$%6IT^Rad!seuXNNj|@W3yJ%!Q(gs)DYmJVK z559AF<>sbe3E`Rgtfmx;2L5+#E9MUr66>jM+GXZ67JBu;aP5=Bc~{5qD9@|rTaC$Q zQlcSVGzXb&Xi&6J>?Q9cL(B^A9;B}QaL!ckgp)uSA9wYlwkLOfe0~SF{`kL)POQ(@ zXRQz8ttDLjB3#pbLv61L+3`7rE#@NuXp~JG?pH_ zk~G9hVF{T`(NaUKg`UnwKeR;N6-DKlU;gGwanoAwNridHMK`lZ-t|a)EL&j?e}xhS1%b@1R>CdRUnyx0U_L{+*e#7}vrBHlYb4p|M1c zYzhz98(#TW&VSoWu*GgN-H<C55x z<*XVhl}yv;Qh*XIc2B0E(?m z%`p0M8bogM*T}%zF8=_XbhgJ?F8IT+vEve?q2JFPKUVm~3?8j9&9)XZYfK12u*PKg z+kdeTL1g!Pik(O^EujKzTVwyo`lbmq?Pzd@{8aRx1`Ykje-C!Xf0#DA2W^f9-3=v* zYoAl%eal(` zDRU6pMG2+sLVj2_IrmZJ%mDN}oVeEt>b}gc&5F@Vh5z2l@m|AhIKhIlch9@;A0&fN zo8Z$9bipxs&&s@<=E;zC>lGmD)=9fqXjQrJ!>=DuKdX#rovP@N`zr)dcfc#dg>ix3`fDnSah@X}{iXsCfy4}| zEVKu1d3mCW)r-4!zYoptcNhlb6{-(R=%wa8Rr+1{tkAgHyZ+xOT&Gz}tf72Z?BZ{t zgl&GeF?6@Gac~Z6&xHqCxSGf5wAH!t@Nbd*`cs{T>Ch{~T79zP--OH8C?0e$5)ZSr zrM@gu8Ln9HUFmM7GTXeRma^ntS2P{VbjxKv-iB(|iC?Yvj|is^-G4rL z$>1HX%0hRYPWQPgZT<#k9R4d}>Q~^!KE<6WdfR5gbRQ4rg`P|nPKI&t-}Y2)*c@*H zZ_MVdJ-AT^^zPZIU#EM*(JmLnNHOnx2#x8~bYJ!p|H&SXH*X zg;uWLlO9u9j;P`KJb; zGTF!g@h{Y)_tVb^0sb10FIdQVsBIJU2zvDI)%yVT(u+x5H!_ibO|i{uypU*1co>A?)ybs@U?KsHqvTQXD$aFapIo46j9!v{IuADB>nni_sg z4S+N*)cQTDaq!>V6yecqx9io(!Q@X_{ZIkOx)J9meaaegs3DxV4y?SA<`|B<%*Xxr zK9TID^XhV*L6~#AH*Y?`NU_B6Fynti@^%_#g+5%ONrqfqaviZC6>9yqF5=f=Sv-89 z^cL&$4JFlD^;lwDE&Svk;0m5W3l5g{-ugX?ThOSntFT>vX zgc7Ac$;PN~rzX2VYxZaVGXaHckhi7bGhhz^@_))RK!$uE;eT&X7dSVrJSv=%SaHRs z_4^iYu(>g+%s=HXQE=Diu&7rp&E^kaRUmo>Wc;ONvNxE9kU zAHqXO^EWn6vT@&y`n{Yoowe3REk-u%SFS(Z=t8;%wJ;~tx`~Ron%neMOfc;ioLPM+ zwbJ_^AljO4Mj>&#TDsQ89TZ)r9+(p;KA8m|fHoqhnTJyv}7M5!xpZAq#1+gTY%^|T3nbySk zra=;?G6x8#MbOWSPXc_7nMygdmL5F?zh&D9-8EiaSh!z%qC)qK&`sOUxyPd4Dp!Y= zTx$LE-O90k$dlqF3Cv^u;hHqZ9qXBjv2lSXzW6Rz%iau0Mi<6%{44vi%}#bp1H8ka z?aW@aiq6TJ5_qkD`Q-L)rw>Q}J0B(rCf&+*uRUW>HSF9xNz_U7?s@$fh@@;y#TqKf zfBJdpK5!lkm*FCtcNGOsyh}cdw$6f|T2^(tAxj0cx|z+d-uiUiiujhCc*v$mw|vTq zyw88y58r$9(}C{&{!@Nv^5M<-lwW&8KkbLd{5v0-oFb%n47DlvJ)3rDqi3QZ_p4#z zo0di#Z~0pZS6<|Ji|?i~w;=xDx&cRHt{2Zdgt@+ydl=@bf8&!=$Q!m^TE>mR-iM4Y z7c%qg zUjIe~W|ssC9om5>%fX`7l_;Xv`|pqB>CiLgyOt@USo`nZ{RI2(?-$#5 z-hVHbJk^%5h)}FX;3tcDiv(cU-dY&Z-=xp2H}-VMoapU+GzoKnlqca>C_3c(_5m(1 zGSbW={Yar#_8Htb)6f71zeI~a2zOEd4d-`lv7u{=MY!}BT4)jf(@rX*&8ALmem1Mk zW30{Jo<^~ZW7SY3#CS`S?{jMHCHp@-n5@S+ky#mVS8jdan~r|q|5hl*`T$dqNu^ar zpY9gAUVp>-=$w}&xc6`2*R`s79uy-uO@So$8+%g-8VpmmN|J$ zU&q^3x51&dT2V&ZwKx9$3QBw7lMWz0fq!sCXvux5BM~;Am(`~+p;$g3=EoiRp*!XE z5!6UT1mAw5;a_SJcFH)+*dfj_9IU0`iLlu)9I{LP)r(#*(^JRZhyfd6KvEY`c9uMy0?a$lukA}n-@=O_Bt@Ctgs?^#n@Y{yyC}R{c05zqb z(HSe`-I*W(-9>sG;!~{0OoCb{6z#ZtL1naKK&bVPbWZXU?Km&g_PBb=@>N;5?ZeO# zd2>P}dHu|u?cud6Bp)33a63QIj;|~j9PPNe`6PQC-Bcn-%3S)gdRHLSrZX!1_b^2I zeYw5=dhqRE|B>~spS_zNYSa3%|1G0T`r8j+X6r8q2~d%Ima>!E=~1ZdKeFJTccFGp zou(Yp$AL|7QoUyjrNE{zmQ{n0Wh)^DAj$RdB222=fvHO&E$RVuI!r%hJlVL0>cFEB3LIn*&G{ueRk4_Btg zg|Oqws?(3mm47MrxpLB;L%7mge5#*&4E^ox=SG9zw+x43tiadp?Ca%^yI#X^wJ?>u z-4RJ{cuF8tdQhQ61lb;NA*L#P2B+spW^!L5|Ho&1a80_WHrl}1Xi?SP48V1B`5@ti zFT9C@oi~Du8P%PHwC}}fTvRz+TpUz>7zy1$Y>1`KssHd0T*w<#xnmxAQZ6nGR(HaQ zJ91Medq0UutDt^`xVV|}X@!&9Rr3te6Rimk&=IxMhU;`?t@Mx3 z5dI8K(|#9{qJ;CoSKN(DR zwOTUw8vkYt14{_?tylwK34GO*7I`;6CC1iOF+&F_Ktgu6d?77*fA}q0&mTt!IZz5{ zJ}UHn^`1|n)Pvdf(Ql>BJLOLeJyvA+C;#M(nJxPYns0HrFK1ptirlOP4Bm&@-i1pT z$v&rA;-fK~=9K3)7e*_4hVEUNI+l^3hid3IaD6MzlKm7;O6U6ZvlYVABOUtQvX8s} z)ZO>_Bap*17ixRWgj;DU=O`EDuX!0K+P;bhv-IFUcu-wg)O=j%@$q?+E9>(@tqnX{ zlf$T7kBJ^;;I)E{RxRo;etGEesdfmeZCP~4vQs4RGJKU# zjj%(-KOHYY-y`FzzAhdvt98{L6nu@CH)-d@KT@32he6`@FgXMyqEd@c(fhdPI+_}{-+-h%*HIxN>bjaH$ z3vlf(E^AMXSH?iEnO0I^S83QPB|-?qOlL`VScQ&y01uCz*#!@*e_K@!2QtLVyw6jU zK?Av6S14~P%G zJ9@C^g1<<6g)8^X=pCPMH|Hls_w}5+HMIc|!r=DCP=Sf`R&N-WSsKXO_K$4klPvW^ zD4hLRBhKu^-^N?u1C`@4FBf8(bqg)2gh8P0_FW{aS;+VjYCFe&(m~uX;nRD&H6JUg z=Qf%B&V&4>BK{U=*<^3`P@Bwu!UDH@VPYv!3m)H{g1gstA0!Y4sEgHX-9=Q! z$p-HUDyCSojp_vw!~E6 z=m&f4y=7*N74%as$u3{A-{F2k2l{NoF2oG26)tMIvL)2k#;efdWAi5C`He1U$Z5J| zO^@D6*g?(dgdJf^*74v8LK#v|vJT}8E%deD1tEzaNA`^+AKF3{YFBvZ$x@H_%{O~v ztNNs>mZG|(A zP71&wr69X8XBByCjuRl-kUIEp@>QgV`$WOlRCV{xRZlo#)lc>Fdz!BLYw4b~o z?s)gE=J~!GiIdsngP#NvGY{8glM|o3)-bXtIhL$`i z=8XUkVVfdj-y;BKQG(-sVjcHGu52Lu zMfVlVEJ)P?tXo$do>d(oi`XME#h>x(2{=uhEC91B6zD;zMelUkzd%^@ghmU$CO51 z*ZUzYd>TspjK6||{i)dJp+(S zB1D&6h0HvEu@graOX67cw#`xS9M38;m=i;`BsKq7pin?i2HJX-C z<6p)F{_#0}wf@@E-B+fkJ|#}NEBilw7$z7H~l&jr{U4-xNOFX*p|-qo3s*C{g2*( zijuN`v*lfT@~_#3k<@E(ax%Lqotkp`>35=empKMgMa9il34#GFgC;eHybH7m6W$GG z6ec)Np2@da51V91>$^n3t7GA-*%vy#@)te~XvDuM$E4_`{DISy;>iLpI64^Sl1Px-rd?6e^Vf$T+kgbAq*viG% z7O14v^2aUVAf|W~A>!d8qAZK?WHleD6&Q@lCTVw+R@vy)EbjyKwz}3Bj;>+Me=p;e zb5V(j!53+8$pZBVh!fD|UfWwAgFUf(d2$u39^@xHRjo(grJuI~6?0UuaDQowxQa!d zcH=J6_8i+XXkv5smN~hXH=UY|K_YmyD;(gafXAuKRsB4sekBo>v6fk7Z0||eNLY(= z+>WEenQ>FmV8{EYRY=%f*VN^BCtON2m{jvA`j_ba-W_TESmngy_P9PyMe!n9Na2gVcURXx$k=XXS*o$?s*Xv^MIQw_0+JwdU zjv8F7b%s(OM@9F&BbwdGuGj?g%X3s6&EPUt5wT4@1wCs1-uSCTs|I1$b41#b|xB37tHlZcs_3%u% zejsUR{3Czfq!G`F{G=aLq_!!IW?oMVzn8U!b^FwWw&_K2#eCFSI%yf zd8aF%Ozahn4S}>n0CbACk!qQ)9qF~j2O~(qZ06(et`vIA{n4}DcV0Uh1+)VWPXvXN zi%s&~_z_8@&(FM;)hRY7EH+#{T-u`Fg#U{m8=IjG9^yGP@$EaZ-M8d4U16%VLZb|7 zD#%df?;!NQQ5f5!`u4H$xr-;1Ue>a2YEv2KqtrKX9!EwS2fD;>*gpb=XtsoB(*viyU5VpcYdkg{-JZ#P3{d+5%I_PPqL<9v!ctGLsIRU56+%OTPM z>U1P`Q*w>kW=Y)1+Wl7B@8|K*TTV2yX{O_B4&WA{)R-S%B>nWVUJY0kK8PPA&@|yQ z*f9K*t1x#T%T(P$cRrwU5EXVaC$*xS5)B{u{F+&->V}Gh!{jW-^4)PVUnvaitC;#} zpdH(3?1JWD@g5Awn1d|>@~gpnwJn^~u3aq~sV-ErO>2&4wOnyy^T`U-J4jUC>dXeG z+(_;kWt?BFjPq!CbB$>XOEY0@6d%c{lNVl5eOvPhE%Wp4kVo^9-(1*6pLQj+ysDgr z2%Z6T+B;51FE5dfW~bDv-qhKs(s+?}bB$30jcD@cT&eG8T4mb!`}ohrgU*?&jSXfxp@N3IXQ@ru;A0IVUdwgabk0_zd0>l1;M zS-iN%PegWHeuIG@m~{C@KT>H=S9E z8U2uNep!}&J3K&MH`FD`rZRf)2<4U%`Xk6Nme|G_j9*=}L!#i~;h3tM&*?N4Po9<@ zi;*aqs)_vcSnSkU_E@YZ-nj=p)M8C$EMEF@dMxhTsI3&mHjx3BrF;2Naj$hQ(N$r1 z7o136Am|+IhiHwnANqHO`G0QrVGi`2z~0{NXka%(g-&3L~X zrDLomp=-?k8I;R%(qlRPik_Uj19-x(Es)?Jhze&upw|oo^K=ktA7;qC?Kf6S>%8+fdSF`@zMs6_g@7j161joNhX;;6uV+ zm`K1D&v~QSU$#U#DHv@sC($-a_LtFEdN4Psn3@{Om*3Wxe=OCPzD;O*4L<&BR=oUn z)^vB<3Tk3EvY&25Ij!JT9O3V$n_m`5+=%rP$yL{SMPfJNKiErtt5jdoY?9!|o31YK zi0m6p*Sc7k8=HsW6k|}$!ek`(c{E%R8g5m7PV>o;_%&r}jrm7Tt?f;bU#Tv3O08S@ zZ%_3jg>JP?kmW%4Fa1f`Q>87GmX%ngiX!nF%Omm071jUCSd){wQYq9V)MnIczgcV_ zDMUG^JviB^L#Q$?@bM}gGgZTKi#~(aO#dLbZ)n}3qoWwXY|qJ$DbaHI4NV2yrFso- zB~9c_$b`LXvv=n;m(kSwt?24SWy4eD+nWMXQw1|hJ)`)5_jck0L^9z`aIj3jX2gob>nI)VoOi*|Q$;_>OSed^V%hS&>YdPYEd?=8jVN);dG zwYO46p#~irev-dt22-234mr&jV!0S%#0zcoF8Moxofu8P397?FQjb-i0jv?x{N5D| zP8XihX>eNqwe;ZB=mw` z@Got7LR*{C^WQj_&@SfV3*9*xrmETGs(kuTX=-8m1Enyg$YRw zX^g}?6)te3bN_4?S0q;D1Xa$LI>Nx` zkAH6d+*c$$bbZP#u_Or$^ZxWbjXbtAa~&Pe5IK@Zt!2k0Wf#a9-?q&EkCWtdX*5WAcPBQprQ|2nlx+KC@`7|oD3 z??k)YrORWvBuNdIPJZ_z87!sh)h;e=b$N&P7cL!!z1drRye79~&3gk|Lin@zj57JY z7_apQwN##-->$(D??V=~{}GNsObITovei7e$#^Mv(8Wa}N2bm(FZK3qIfSmLu@Z%u zm9qXc2R$ADbC_R8-&fUC7yl+s#3#`)92kKMi|n|Z5wS0S!IyC3&%IoU&<0rk3(}m1 z7Trs+ns~4KB8l;27uzypZcTi`efh%^*XOp^RKB|4nVQ6nxx*`WEO;zcz?Z2mD0?AN*HSxqW_qtm(ddH9+sHoTD_lT5K`>40?F0oUG1Ym$)SHpQQF(T>MX+YO%-!=jJ+OKp8iX+95wx8RY(pBALR zU%hCI+S4Cs+(7@L2dfwKUwB|xGB;=L@!s7wvgvh{lq{-0dZ2pl*o6o6e!)lz&pQ>U znx3u#qmKV3@(I8+JyXpiSJC`ppf7u-hHuC}q4(TAtt$BT+|+5_Ih~rRPRz=shI7rc zwXO2N+)8~OJK*y-!;XNh(g4RONAMd;qRfkK>o9>Xcj_ITQI*2c5x~wDrLnaNdU;VE z>far<7WmH_bZ9*_YM`caMe~#J=Z&&6sI5@#7pZ;q&S)e2c>OnhJbmWS*MJy@`E~Ts ziWu}M&t6}(XkBxI%q^`aPu}M=W|hR7zL#G^ewMeij~KOGV$2V~4YGgm7?KrtGb&|% zpBV#c;`!f;kZmOJ8+H4gIfI{~N_TSkNbNA`Dgt2pRaH4k?%E6>ma=*wz-CE zQ`<2TQV%M@kPe>-nj(xJ5 z&5WE%X-(yTK}dF|tjD8sQ%iLmLwS4BMf`LoTu%V#WdK;8Z<{t; zLB3!eU5U2^L+WItswOa^!r#G&8WzHc;-L(vwKexK+!f{Mh?n;>W4tzBquK5toXwQn z4)5>pO3Ce#G5jW%&QA7Tw5MD2^p9M&cfpj`u;vgHCEqgXdG5I`vkE&Kuv|vP*4J$O z3|Fq2(JZ5T>ud4BujuXzpk`BbWyky;c93}LA~rQ7^81GqRjB<{Gb-YfUdiVHfnZhm zkMxM(#a^4jiQ4?ilSB8fACgac1{!6jB zFCnP;8&G_FnAM-%-UtPt#jrrwf95W|i~QfuckYkVUoSiU>^eu`K%fC^<`1^uhtI$T zjeQ1eCu8(E`f&bY>mq&b%r^pEyv6^w=irc!4l+aTL3|pc3gZJYP#ljr0E2{qH`zzF>LL1XN5sSS)C}_n3{3iYZw*Z~TP-EI; zGye1)c=h(b(}^R!jjOYn5&h^h;t>ew@Uzw72Qb7njK6@Wod^sWCEoX64!V209n7R2 z7SKay|1Ax5>gHFMrn|}Ka=u^pZrUwV(mB4V#Q2Xm6+gad>a$t#E&lvjqacW#IiM@0 zq?Jn|xvZpZ4T6FEPe96FlbwQyEk>`Z(ein_*IDC)|sy-FQ#;2W{28m z|3}`;9>4DagWxLM+p@O@nZ~2Di*q^94DP_jqL&bH_)5qg69sg6;hIk4frQ?>F|l#rviI`%`}1 zNa0ni@adKubBHiH`dM0m&hcmQFius%^X1t-o4@&Jndn|<#oxka4!KNTEt;~pv^B}i zuO-27&KG%|+k9EPXXVDG&obH&Ux5GRMx?nM`>`L{iNE=5hfb^SC-ac?hnrlKj0-2L zJY_+j%Iovz_R4NaebwS2*xK)u~SWnUyQ&e@W3r1ME1PmB}k> zbJx{w?WjxiVgX}A?bg?w{kUmHBgt-_udY0KLFrhs-qexeof+wj%k`9-eBR6pjY{Oh z;8nS)pW*aREz@{@WO%dZultGga`)aY1${+VU{I`^S2KNL{Ng(&w^zQhpe&r2%Fw%e zMs>XD&iu+(=CZs=j#%%?a4y4k$H%mDD58k2|0bPx~B#Rwzn(W?4BA z|HS&`crD6(a{bae&et!?x$yb4{eKVDFIpd5=8|tNmOp>tyRV7UVh>xgu5iNtWfgFj zJ@>O7knB|wJB8W6X`0i7vBtIdW`*FqDK>huz98+Cm?U4nB_tjModD5S-H)@TGg)Wbi*(}lFT8`{$z8919(R`hXpajs+i4`}B zaS9kG8L^(G#WKFUMPEMbqFNFsymtYEY2wtAMki`c%aNzg>^IQYsO27YMgyv>`vxu; zYyb9^x?!<${`!2Og%hJ5@3l(3C9gOdPxUot5X{GDuf-qHr?xU&+*B2>IA9)){0$_|pBQE4Ys&dO!M&N%Ufg%W*_9oh>|u zPQ1D|ohx0P8n`q0O@1)JY^&??vD^4jeyBw*Y$oZM27zKa{u?^YK(%;aHAw5^GIf$4;Mu+AM|3J(qZHav7|p5q~$1oxM=SVi!R9i$T+U{Smn5kv9Z7jtIvquvB5YIsFMp&v4MFmq|78Bm^XEbXhB;LlIYrmt&t0at>ty0i)01?x~?ru z>L^dQVW@)$pI|xFn_(QVHo4wj7ySJ08u<0J@&{O0+W9k*z9b6nb&pQdqjm1lLiebr z9{o;_v}&{48-)a;4+D>~_tN76Gg$XZj>dVHwho_rPWh9|nfy8x-l*ulh40p*^Q6MV z`bCB7m+h@AfbC#7E+I06bBb&!9|5@;?K33JCJfnw}^HTzcM^kvukEasXmsd)~jHN z`|kDu?mN||@5=er%8tOZsv&HZ74_?eVh!96T!DYSJJEmXPThU2>(pYuQ{lsO%KHk1 zoSF+%(~H4{(y!U84lWRgD;GG(*6CInkKbN?k6arhz0^BXKJ@4{_uY@m+;^%^-|gZz z=#f=Tk8=DTS>5R#CASkJ6(3e;L=yg&U*o#e;&-Vk)1~}?PTqGZWNCy@-x}?<|GQ*pTdtf7!~BTS8U(GXlr2`*+?W4-@)g@a2a1y?=4NPzXn zwXvjBAFDqV>QAHlZsfV{JJqM}rt)iepg&eM{b{kHOG>ToOn;^jNa%oqrX)HVa+#`v zCv{6zjr?K(@yb18Yx$px{7=H}lkdwi;1jzQ)I7G<`9#n7WF&!qX~zED1Ro(DFRkqk ztEl(ruUo) zlhh+U1H5{(SI47JM>ElxQxZ-f@J7>ZUJscW0Pv_!X_kV_TfkyKTIW#zIhH9WD+o%7Tju!`2BWTc$3k$}IU49;Ye3`l>*r!MA~W z9~TJlyc$RG#k!?|c76kjTM-&qW zFe*-#J(ee<0#j@irr5Cn8XfZL4&M~(>ziUPc!_PkH4&K4u6hm`DPlUw*-=+vRa|dY zMK}VyuZd|fEU>RJ4yZNTwpg|p+hS+O2MoWI&|t6PS>{FXiOUWzi|j=T$j&IHPooq0 zW@l8|-h<$Tqo>?}YoMUwe8MQBffW$ znH>MS6k}q_50z)`;}9E4Og97XFvvYCd7L5l&KE&0=Nn?KWzc)RVsJEPIy!o5v(eiq z^e*dy-s-z*SpT21$KjVr(_!%IzWI3k?yxD((eV2}FNj$V#jnNo*%t7?qBHzHuvI+; zzrS%N-Je5<{1)CX{36lDxSC>QG427&sFgV0)~C}Jad)42*I*3yF#Mh=cpQE& z75k#__ISrxs~i;?;MX<6k!QxfoO%!YUc(8F>!**%;MYGm9yXq0!6O^7i{EOi!GSCP z;)f2u7W?P;SGm+QSyyDG)U2LnnAh1YIh%)u?8nSxOKV!*XT zA764eT;Q$$Kp6E)Kzb{IxM>Pu$^qx0yVGRQAvdiNj#ZoxlaEqnSwgE`t1_v0H~+Xd zn2VqkKKj$4Xx({uw7zfsTbq2!1iSONTW^Hk=G}9-8w0o4z1tzzW#~Pz^U(W4sKe0v z;d@<&UaNwkNfX4bqpycCk{Nx=Y0PWBnMKMORhvnqf=!!}D82?L)`6 zKOJ6OJiEat-k$uey)XD+o~hw^|A87V`_B7p`ENBnSsPu!_~tkQpN%?HljnS3?dUJ#y9wFk9WRnRVZ^xc#N-v$1q12!ML_nPBMsY zc+Du|7AnNuiU#hr00|oT|A>1R_$Z6(|3865!p#i=8U;0Kv_Y{AURnY~6G>zP8;OcF z6}~NAinQ7qC4nfY!41f|uEtBNmbPNG)>d1oT1D|&gCG~t8o(mxS4FM$S=Uy)6cDWW zy+3E3C)o`b?f3Wlzy7>5JI_4x%$zyr%$YN1&YbzsjUdbJl)SHMuF#j=#jn_@0QMQ5 z7zE?DOZ@(Nqr>SID(;R`-xLH+uX$yJ^QW@Pb@4Ro|1_mIMAwOb`xn8Sp|v%w7HnUMtIz1- zW@nifHMSTvx)^%_yy7kYhoiwFFt|t7c3fTReRKDxFYZnWyZC2!&Fy_T zv_Of69VLd$HcH&r3XUhr#&Rcwg;&q;inp&6wiDq6@5diFq(0yyRbSY79MjiS zzKgemDI!B(^Ip)p;7j$2U%#+BI`_iZ3s*XH`i%X;m4?o9Zl2=sIsoGlfaNZxP^LrW!SsSjv#!Q(iUF3J978DiZlDEG0&>x634EWHW_~Zl?d>= z@aBEV1?=y{?@jz#M~~73Lppw+1;1`d_we(bq5=G3e}4u1PB#4h=fYtLco7rtFedI2 z4wt|n-u+33Y8A>54x6#eOH8}3x>#7Fzx%p5TZ^H+u(C-Dv(mr1W_N7AuxAkhxlUT8Avs+>$SC3D?|6eJL;miNcgk0kze1^$sdPEq zX2|J6aUMM4jrAOg?Iqm2g+dvo30KRP%HM@{e&EY=$%fTm8OuMk-gaVnVWVNWC=Qli zy79}g{3@3rr(-#7f^%G)T-C|Ns1@R3?+!W6d_@GOBX%`76T1XD;qzom~|eCPp_Hepkf6 z?`82X$M03#2e424##Ziz-*3sm_{{Id!0kd|nr1u>p75@F*WuS*rZaFLBU~-} zlo8{pMTd8S8+-UhD ziOkadL-XtwhbWwdoDM-|FE)M7inHpAdg&Ye#e| zr{(|{=Na%(-m<1~1mEEt+@veFwIbAw9r7HB&Q{KUTh1Y#>_oa7;?Qm|nS5>DnID?J zh~78v9MJHs=(GQ9-kHt)g=Cobl$=pZ&(6p4Bu{Jkffuv-R7lhG-i4m1?Gb&OBV{vs zME_nmt#o5!6<>!%KfVq(ev7ACQnii8r$Ovu*rr4LOKbKJJD)^A;>-5k2K4cJKl8ik zJ)g-jq(i)SFc32TQwVuAXs(NLx@HA4p^X{Ws z*X++aQ>|)>R!Ucg5(+mTA9`JU%>2?f8{SXb3zM`!vyzFgGELINW=DD1K(XyYkNjws?>7;=&nC{dK z-`71wW4g~8v$F6?w{%)tJPo=LK=q*8##;*SP5ENRPXg0hy&o8+l_8F^Z>+qk5Zh@t z1xU8eu{e?C^e;^R+PyPzPfL@oYOX-77kaP!G@VCOC*}fPFn+$w|5^SK^#J7jBUWom zbM6QEl0318+>Mh7|5t+eG_%5DEuer!2uJMXhpsQ=QDV5|lb%ZKAG)r$3I@YFH2?dm zH{Qd$$-0gggMB|B^u%|1gdQ)Ek8LAZTV{76l#krlcyR2E=sU=xrXJDvkVkJSQt`6n z{Sbz0KjYs)LSBi4)cP|tzk|KCaB0s_%k`ogri?}WE|^p_R>x=0fU%zZHGwTYeTyq| z9*-1_U62=gB2sjQZto3qKYO(7$v=y>_>6T%OeuuM{uBDi5^%e!TqwZ?S1!m|<+j*I zFho;cirXRyQ|toZ9<8UB6ND!U{ zgm!y)=67jW%u`RnVpxg~9lcW^0jOZY2e=mh72+Jc?4H8zd=BT-LoJ6WONX;Apt0ZG zM`Q19QDX4TV3=|`Y^*9zT)Tw&s-bMW6J<;cHPy66^qfbJmyHUo6*dP@T3DO8$+!*SDGywBQ z_X6evZwh(Dnx|YBn3r3Vdjs>+KkW(3vb})$ca`o2W+Yw_u8!`=Zah$=Y{crA$tWxY zuI)wm+i^M2llX$an!pI*{L>p>Lg^=$rc*kimZ9`w5Fzi=9r{Im>_+JW8R)+LF>u!5 z%ry)E|Mo|VsqP{ZBEdPah%S){sb;&(9Lc@u<{}$Z!g4`OD>r7puF{R6#Pu3K4D0Cv zvE4w+AuNjv{p6L%%Z`U7_97S;{%y4Q+0N6=0%F$(DB#;)@W11Hi<(O0w%!AA*S@~h zDpBpkzkf=|`3Cx~d~F3%=hlfozL?dvh7#l<^HyHcvv*kAn z>A2RsRMAGEnMZA=cdm8TJ8u6-oIG$gXL7#2*{vyD31*|e*ep6l2#v^v(6`-y;(8GB z=2czzMf{gc8Kd>K@7F861!5s_hn+yZRg#gB@~ zKxsExAwwZk%Rf=5@JL_-b3F6ddHHy!R&&PfB7wJw?=ABE8h52e;^a{P>7BF5bxf~` zwTNx{?Il2id{v}Hi()=8kkLQ*qgsEZQ*y?35`(J~me_gu#E#!Y;H4eWvR|l@#y-`t z%1t|x=K_{DoR5<=q`I@PcY;Jq$Fgwg_;Bc^#{`EIt`3}S!}J6ymcBaU$3k-*?)HT8 z58%J*O5p#=D}w)af7p!&{v&<(Q8!M5`fen;Xd)Vu-o1-y4yLHTnhv zw7Dj67M*E-!a76P{LMR(XK5ym?c%V2x7qOVX7W_BEE2}L01`w_ZKSj!97?=ywK@1W zzgoeO;>XSZf;$gv?p|(@;q1<#)5*(k98wY8Qb^I-9u+Jtrd4qQ0s<^|p3RBeqF+ip zvHw2#Rmms2j_>p?VOnIcB1{9{(pr=Gz7zK<^?kQFdF$iqpFbx@5}ez!AfMiqhN&)b zV3>*Hn?j#VsCKla&Qs7pVnrivG9(lCza?^;e!&2KbhF@O1=sDpg$=0gAaD-LI-h`k z0i#2NhYgU-lY8%I1 z{a-)rh?e!XZXVo)8kQw~3$gON)YoiaIYdeRFML=>dI&5`Y*OY-LE`l?j67{^>IMMU zo<_|>fAVptF%wCQ3vhVyA2eoO3ZxS8k-}nugE$|g34S{o3AB$CRq~wQcu)m1C$#?_ zw0}pmUmI$1`)s+xe@>q--qcC+$}XChSlcE)gbduT3y~kp^tT(J-a5gs8`XC{mPU2t zq9B&dE2`2y`vhRiY!Q+2B&FyUwc(_TgblF_x!Yp%3>?SXf}#0lBSUlN1}9qFfD)3f zwjh2buC$yT$i8HYX6WyHPe$8Oy6!Xta;mUFDvPOp%T^AEWh3P=%El?|;>JKRZ(2=xZ}GbtUre9)T|hex^%>q^S??Ix-+v!|Ix81 zpqW|YR zBUuKU_IDg4pn&=Wzki|#NOYoT;o?q6tc?svl;e$Zkeq0pzP+f#K{DJP9VEr114xEv zLedgI;%zuC4I{h5F|Z2`Yas&;<#><$)-dv*kC9>r$9-uSS(Jv6``*mJ$Ui^xG2%^d zaO@2q@rOI{VJ&39p&aj62gg_+jzR~=m^3&>rok~Z6ONgka4bJ|pZMt61&6he0f%zD zUp-*>SbC`AkOBwCWA^CivY2#0m)qaSz{i#y0X{}MIQE8**?$l|IOFGprOpf~ZHyKh z{P(ZT&q^I_t7^Z1*H>UA%3k12P|(}{8|CHZ1H;mx3<<7s$nlpU`3Cmj!G16DTrc(y zdJ&G7^|3V89<4eO{STJ^bRu`f>s49L=;9CWs$u&?z#O=``@_Nz%A}7$WhMEDM=zqb9HCfNd_1*ip*x=Y3B2Vao!&=CILpk2M`wfm` zeK@2A6Ce7hG&l}VgJb#sWWdpv6D1BGKXhGUQ&+f&r5%8SUJgu z#&ggdp9amaG-!VRS_W3WI3~c#BnQpjuyXr@omjCJGO(f???ea3Lx(u5Y;kb>+8!NN z?japu<>*W}YDWZEdEuCSa!J1~IIM*XIF#c(c%R{;(uZS{gQF}Bj?y$Ze(`DsKDHkn z;G@#Pu{V6Q{H_xp)f*n2<9<@(=y!M+;d{_$^a45&S>K?<#jKL0$2OJ!i+M|PGI_Ut8 zOEckk>&O5f105WD!^hcOa99f&a45(7c#*-88sy+uKI5yzH?55pMEJ&~>@;y$wCw9SMEo8u<9B=(E4Ih1d zIGPC0_cU#&K zWg+Q+D5quu@zUV|GX8$JG3nlraf|_Bk({x~GVLoe5_%=Ad24@RXejcVuSW$cOly8< zTJvoiGH@{B*Z>C?yXN9pZ z^{}A#-eLRfeQ{Uw(=(f&?!9QN2N?P;JuFvRw8G5lB5kGLv@2&U0 z{Z(i0r)D-k)jPvA|6ac9J+{}A-?6mo{hOqN-jB^}{@p`^-oJn7K6`&`SMzn5&DVJ^ zEi~Fs_nWV!`HRw;pPJVEigg*iua^32YWO9t`Mvf2!FxJ;Uz^!{tyk-s@9j4qrup2o z=Cjk9ugYwG;Q=(Cr_uAl(0%rPxHV5aF^ofMUgwj1)(?B_KeO(~LJs@ov_H?%4*T3Q z+ll?>+B3SpixU}63|;El-&^+|TBPn<`{mu*FZXI)`@{V9N7DY$Y3(18)_zrH`!7q+ zHuQfmWZ(VoYJX(6_D6c{cUk{`yT9vy3GM&d(yssakPf)-xtB8f{{yW$`U?M-y7u?l z|GU+H4v$21C|9@d2B(s9k35*Q?2(Qd^2Rt)ZXb!VzGMfby#37;#5WwxT~UXCTke(4 z#JG7oZi}5pr?iCmhx`cN43@8#;!N z?98pUn2Xd9U6Hrk8-DH94gx?-P4O$}(g7}7q9P^EQs)#H@>M;ZPu#@k(*i?|z#FYIFyzXaqvBHtpXdjMRC$Gk ze10EcAqk&Y&i=Rt6=6j_@qbhP?>qd8KW1O;qqI;c4b3|p1`%45WyUGsZ%_SOl+nK% zgZ`ZmCQNPsqw7EME2jtXA^)P-Y8D^zjjo;AZ|(nNTSw}$aCC{3$*hKNhF3LPiic=fnSIAC z)Xh?P^)FQ!PAt)bzJ@=%*KX(gZ%{%?p#E|Hcjs5lmcv)f5=->|HsWW(p|-0>rr1=P zh5WZO&rjVd2Ich34oPJuJ@XS&!$b^=aGOGP=;5uA#Oa4uFWYfy^)hdCb)sJhY=3xo z*=MT4A#uMs)b!-Bo8^&U5^PCWv)FuS2_UxLJ^&g7@1egrkT$XzfhQcRTv|oo(2D{wze_PQ0$YyQ~Fv-FBF#V12$q zFjue2Spz-Yj{HYgAAols`=so|moB^FoutGMsImFQV6n}>SW|H-0xS#40$6~5h(RND z#P2msa4y~(*WF2vegA?&5$s%e!gd~er}enD*y2I2%K1wtFzc=+!c<)`WGG~Ou%&dx z78hH-kl|a*@Leq=T*R=UKK!>Wfy2Nuuh!*xtNHbo^QYC^9&IXf6fL|WA`~g@$K5(=Fcvm3KTF2|fJkgv20De4SkziBBeE*ULmR z$*nHkKy*$%sfrK1wL1195#uUsTdiWldsRog*;>Vw+4ZW3z(CyFal8F~b ztPisnwZvfJR3pEY3nE3QDR`U&h1_7;`E6}sFL8}B;%ASl~HeZ}i_v++D0 zLspgVE~8!OEqn{&1Zg~gl#|UI%?w;&TxTLNf%$wjZm6flPCDSUm6ZqNWStSKJOE6e zJrY0Ua^HUmudh(c>x`so-M9E`^|CEFr^ko(I3s>hkG#{ks<8)dtY?=;5@ScIgNtZB zxmDv1Z)UlgkBe8nqA?MgUypivMy%-B)Gxck61e+h!fi3xse)03Q?xeJcj^W|T+^<} zsfkSm&I$1N*)TOR3FhZfyLQ>DqdPhp@~c|bG<*k5>Y7QdHKi-AIfE+lt4mi`ha#(0 zTXkuB!ziRvPb0!|ufSGanF#6*)J3|y$zhb*LoIc3MPz=DlpYnDr||E|5dyCpn!DHH zDoEZbAAzq_v^9C@S1y~ZplC&m3%~!B6~p<+5gi94l&?|M@$q1HZ78}m&kfRvi5#v7bM7Nbvq#Tm zVmkJ?O`ctbG8OLP{$zaS~@K_l6>dk({ zZL7CYhU=9Wb$PdG)X9H=5$#Uly6yEv6!GG5^fnDJ-BUVNUVA1FI>(^vjDpG|3yf=A zw=9I1^2JuZALaYKRMA|T+i*!F-WQ*un$W|mCnWmy zlW^yJ`~(x6;blprCQ;+xqfNc3M|2Vjlp^lpx{3|&Rvqzr)x3W+9w@=77@Typ9{BGe zlUSP-L;wy3OR6U~7TAbc3-)M(?(%Z72}|fFw-cjJB??caJERm)sO=G?;%ke$(`WiE z`=U=OCi*~{(Bln7r*#fMR$!G1OWABtq>bj_5L9K@S19tT;pOneW6d^ zoGj?m*OzSZqjWXwKa(HksB;7t!QH;1c~@@3Wi^TKWP{&L;J2@j-^t+jk~)Xq7en*s z5NE^3@9?<8ulZqBY1FHP zWIz_D(;8?#I~-x!jQ)gI!g0hRrxLHS(?Re%e+1194|hj%b}MMs{@|X+LDc*{ZZz)S z4b>5OtxfHQ?_eAdk(DT7!Q@H|SKv*Y-Jv59Rk6y!SrscQ2j>u?I5IfT2+3@0tnV;A z56@sG-FZLL{T{J3O{L-TExY+QX zaAQwNi%8Er&2S7ZxN^!XMAza@EggBA7%SRrs7p>{fl(c=DMX2l#NO$ErEV;0roVv) zTYSp%d0q)3nS)?0lerv3zI-Ym5G9qVMwbLQs+s(=Xb-&ET?8_^+z6Ea*XK!PeGNLm4fNuXBFjc%6UgiiQA9nET?Zfa*j54GH95JiZ(%21d-F;Ud#e-EF5 zmOLc`jNK7}$N2LFsI|{?-Sf84e0g@4_F{GJ12VlPQFJi(P<=(5xHg}sKV4n#VEJ6m z{oizNXnL*xmpw~eoZdvM=GvBziN#_KB}rum&EAnDO_Hqhwj&DmxR$~XzE~#J60hO> zJuj+sU`tVTOOlW5$-U0EAAHVW$9~Wx`$4_z2lYAzyhylZy|IMf(BrK!ewsPK)6xTB zfP#gs^F~{R>Cp7*w6a~_24NhW`><9-PD3Nc@wR7k8VaVhD(cJtcTc7rm#b%y*(9gt zcM9htgYgd@hhZeqzu{MyONbH1VW!*#e;iNzl85B(x4fmNM9?C&j)(NvR!Nfw43-)7 zQZA)#q9ip%%Px;e+G4*rd%Daqv!^@z%8;n&bM|!VU3|-wtkk(w;T(FyvD>7YMa#Zr zUk*^!LPa?CXfr>uBP>-S$oKNCDtk$7Z&Mq0MC)yvN+G7E>TC#-%g)_Sav=$YkQ#!S zVdK*(xE5O*F)zHLe%sk>{(~f-YQu2A+UW|U zkC|f#eds+-dKPQq%VEwY7KV zNSUko60tn3wPU@isEs80;Sp|U34M=wSEfM*BZ6w1Re_T-JM~l-)+ss%MK$Z+o5wNA zB}Q8$bwNRGRs-?e%>r{~iA@A+Xor>NjXhKV86T!WPX1bV3@UmMRB25pu#25+Zs=JP z>!ZqQwOAD1%q^a?Cz~+equ&!XLX+BIGS*Nt__>M^<$P?b6GK7F_(DyGtwKH467C~u zDQe~+1!xddbx#lSSd%<|9Eazt?w2y4w|-3~Ri(|r0I2@rk?B|{+QQ4;bIZ)NSX;b5 zB-|*U>gA*a4uyp0u;EzdLx1?Foj3f|8!X<3jQ5^0% zum68J0O+v_L(vjPKjcig+Q^!^ad~_63(A>#O}Wn~w`}CP1{(M<)ie6en*els+j5&Y zGX5&Q_eDiZoc$_W>!GVm@($!bIp1gu31Co1!B=;6_ zC8=Gz{&BV7be619GW6~0SPusnPfkYzXzcx@n&7s|6UFlOXbKDI1+M6x6Rpq?oHFadkerV|Dbo^3daRiYBB=?8i>^smv0C=_0LR z-FiJ7TNzttaLe?i8nN3gQYjFm($(bBLny2-0`LpKy*hezZC0pd4n{*yDu#3? z8CjioykesDZTcxtR984LG+VsWY#(-l2O~J*q;X9e^u{OlNq0Wk3*Zi5gBL-0pKH#i zND8^_i9@CbfJk@-n4dQn$UxqtNc<0mq3E9lcUA+ozwbj1XdNaHs~xI||5PO+@%au* zH!b3ceTRrnpS?#=>qtV&XQF79U?c=}lR!NT9rWIzybIet8!b^S7q+u1Ev(=+gWl^U zKR@3LOAg8rDehzo6R29ldC%BMJSpSHr+tFt7U*}g7y55ax(jvXS9gcsu z$&MXh$5?kYqn6nox-h1L4H><*r89O4#$K+D% z6lwEi_hck-QPFBQzl^|2$NXZ9hqw{~!^|)C%UE5lXT;Ygegnk%XO)A<0!~e@gbJPt z+ax4JF=b37EPJX?P2&66m9h0Tv9}}f3k#h6`s~8cO}DassEPem+W`~fQwBk3X6QyT zCCR7i!kv0;bR3Ha@wqnCawrcq@e47zE1FD;fv@pg6e-|Tp#ax_74nb4e~ zysJZ9lLUQ8g<95IXT*PZ+ZP>t@ep5BqtWJ3kE*MQ(|qZBHKE9R?k*fhJp-ro^TwQ( z^{MYmL&ReFR!>J3?;qDW>*~Z72I6CnWY14Ykxt;yidhy z@e2zh@!18MqHPGr&n{--=R)|;L)X2l0>j=9cW{^FtJTZi%Ly;rd200$9J2PWt;yb5 zGwg%v4(@rnsHm=LL`Sj#DNO$j`SV8G9KNM8w%kkIg5oV>$WP4V)CR=H0$&k)gWRSF z5M3d$nM1>LuLC;A1hr}nSnfH%|EfK9FH7PF0#9+GY(>Rru+HAkF zji$-K1M9)yx;yrO!O2Z~#^B%Tzd8of2c-kxt4P7OX3=tMW3P#^OW)g(8W3RceJ_T` zi!?8Wrt2>wGNQF|(#~l6Ol`dA7Dm}Mv6nSui%@%vdEWBoA;O&*5WC%y2LD0kx(9i1 zw!V8vwQ2>CroLRb zX@1_~=I5_#zh>?Siy)Bv7bHS8Kie->HaAbW*c6(dHyI&=b(sqaB5Rz$)G@xuP)=eRs5kDg5(7r*Ggd3#AAwvJ*6OYR?kcjh5A zrSFF3H%YuN`&-Vqc+uA?N?!=I^n(dC;cIHW?kuaqNmvz+ev^!v*ay|i-em{>ZA|Ll zs6iFUd2Z&jzLm=jeZQjS135!1bh-P=Y3_J=5 zfggC`|I&Yl=0Ah<9vd6cb=;A+a2s_ z&e3@492^%>aj-wYd#1L38!X&5#v>PrUd`jU_?&k&{z`X*Zn~SIP&7A&g9#`c>-VhY zwWj1%ysD1(7#p9W_Py6I1mZu+LI$vl*$vaQZXCs^ z+CrgZy9SFj*qa8eLT{q28(2km0UiU+<+c7)CS$XiIpr-Jzsrq2v#!P# zsjOC!e88Q#Ou+bGF1~v?dNzR$Zr9jd5!-`V*VWFKN5s z6F`P}_rT3r-jSAk z%ljF>m9Z_7&7q*+TV4*yG~t{nn{CU(WV064-as`x&Q4Uo8>f*6* zqZ~vF@^BD+^!PnEh{B(<$NAk(j$kF)eflx`qwha=58`;Q{&Pf$2ME~(J^Ovyt{T-m zq|NZ=C9*}b#P}eiP_RXmSy+?Q4$4_PXg-dxo|Frz9Chr}HO~@7^z4*g^z2FXEYbgw zY4q3M;hFXahU;6m+76G*J2vOV&xUz#bXzc`>#iMO{1>`@g_gas3AN^?`J+LwA=@Xp zH)+%c*OvMVg4nqX+jHxpWz#Mb<~3}?W-18#!}i0A!KGYTcQHTKV#+wObCcsCCu)8F zrSPg8+Xb;`neB3zoKTCqYZ&Mc@c8wM6c>XHCgUF3>aIZq+ZvNu z)ha;*1P9aI2qC`EC)x*e5LCv`Z>W}+A;vaHEF3y|v{*sIr!LQJ<16VqtL-;f(>v>A z@^E-zL>ucT_3tH0Xec--aaFA-t*`vuIdrT*^YVA++IX4bR@$eFnn_8>-N~_rN7@rA>dOrq+y)biNBYvR=~^}+n$(DOnldJSrx>8fI5Jo%0q z7r*qV9NgRn9femc9+l%M(4{0-7Bw;OieUm)LG0$Kr?>``rRM3L*;nKWxmx|3-5bp< z_MCXCowl`uqOKbAi@@~|xEKPnMxshlH=G>HOf@z>=_m%=#Bg=#xwUf1&B1uBm&e#k zH_D{{zT@^^$4IvA*2qIe&0p5oMqe8bCv~j=?sP{kj&sI(7oU7fg&tj>5ZVeQ5sYz)(?|-Ecs1GbwYKd4q)XM+*yXjyv)#zpxEY zP3$vkYI?7ZeuiXZk4=Lh#l0=kOF{Hhe+XU9Xq$rsObi{>H6(>03IwR;lkTwDW=XL; zt%()qwo1au4Jg}$)o#ZoR2@H;D4o}`gMM&$6$IB>V`8mxse?@?++2)Kc>8efB$Af5#v8_4OJZTd z{=t)Xp#I##A5-~?#cL(f#7Am9Uas{xwoJD9r1RB@9j8j?!-E6g>)JxTWSO>TXDBr96RlOTY9RJ+;aT_X2ctzHSuu0>9GZJGC zjFg%QJan_}FG01$3^?yqu|5!()S&ZCnw#nk0~)V3+|aEwa|ZxP=h|U_1^_?i^af;} zr+nJm-?i6N9J<;3Lij`@*!%5B%*c#2U(%szd=IiL(7R~aanq#3m@mv0)e~F1i68mG zEKx$dseCVIDvC_AlISwcYEu8giN&f0ZLfuE+l_zj*E3%^sJ1oKv`W@)B{vdlUaTJ; z)fFC>@DnY2;QIohH%&jlv%-=tQNp|Bd*V9Fq=9$1>pT@f&w0#+iH*|+)wS!W(+S9O;EKa$&kb`A-sB5 zMPh%ciM7|nHp>Z8UGZ*uRr25GsktizHZJgim(&<4xfJs{HBku%nZ)0t?arvoPtxXt zMO4A0VKvpD`spM~>GM|~P!k{8ZfZ^G+cV!w8hzufDqKzUy6cZLj&c)jB-VPTD&e9X z=Ylld8~3Ib=gs8W{Q8_;(}iaHeM+S@u^7%*zti%F+S;vIr(Jk|Eft9V-koM0 zNl|8-OuTjfO!!^MmwUk{K~Om#1|yTe#^r4#$w-i_`HBKc^H=GADxZFk?lI%e_oYOy z%oz1{201@$2ai7s&2LkQ#7WOY5;-61kVHlEj-HK0mGQ{Oc@^81JcNW7z{8B`&;?+kI{Z!z2s>ZPCk8bG(8kzG zrsWD^b5|zD@1SI7#XVx{RPVRtCg^%hC_i3-|FQEK%L~Uxa8PyDJo-PQd1ueY6Dp{0+p~EM!`#{K{EB#a zj@2J7T{d$9&^5z|&o+~`}JDGrxzm^C1_OgkuT^2KtP)aoJE z`_tNgb$DC#=eX~}57=mq;y1RH^LzH|4YKSVUO#?~$MU>;zU4S4FS(uhd$*On%ji6x zUeI-lS%@!eLA+ug@&jQxfGe*R7t`nU8v0QLd*j$?3xW6IF z&u $Idd|k8%HU&@ljrptB{74Pf5@c$%F3c~%p7h+>jf<2{M*BL5jAz@G?QZe2}Nh*g`RplD|FpAX(RO1 z-xUa({)etRMr|TZoaw=>QV~jp8ZampNE&=dm==qaLEUw#TZvjra6UFicc|*ncS|cR-5R>_4#OevFq*Ha3CAZwl7m`x{%QUZP;Xp(&<)*b!u)3F{yf*t zuSTm%H_RERmc;8?KBK=6w`#32tLr(+%JaUOliR`f50R&yx2a2f-fq8L)Zq}#4Mv@b zI+5q76Od+dHaPkA?EeL6s7YGyYGEff<<1?38d0S7%juFqmV!Qju;D5P!hcQ{AuE$C z0kObOvO{{hBZlEm+i1dHBz^$|I<~rWMQHvM@~Yx<=CP0eX6U9L2ZR*MS7{Qr|aO;QL?^g;N4 zO`q?9ElIYi>=9k_&8`vRH~nY0riw}wWyBPw(LhYixeGBh>8`ITrZR>@ z?_QvL#jOABa1d@XhePw6qSINXE;8d*?)c}lcn^JCqsk(a~;e2QAjD7&FD4ywOr|ft9$?)y1>5 z!8#xduvsWc_2~3U5jQyT?1ZrDlem!~O?;^OOxAV6`j~4c6IQndkvUO~|38Km_R((H zr)O&!vfBHAU++D8c+2#!*Ie4$;1^h{0xR8v);CM_{J8(}5B9ssyI-02_?dU<;dcI@ z$^5>jnQXp&5GI?q4&k;uZ+1v`5(aqmjS%2%k>QC2TtI{_ zy;Z|~ol(ZGd)&R?+XIjunYM006Y<5)DSYuTi` zyDK#5w@Ot(#yxGyX((Tx4{(lQe`X+tF=#t%1c| zGljC6cV&m>>F#I_KyomOjT^&TIIkjJ;`j@bf~V@1{av6O=9)lF6ekKuF!C2 z%V4W_nT@!u-o^I2i5l3SA%OuNm+qQ*e0mNw{v3^TpgBEvh0Q=VDuKH{DP=Dt7zsSkYJ+1#GKb@or%eAWo`YC=< zc-lOlf%B6vVu3LVCJIzd8S|l$t>6Ft0ZSs`5^T9JOwf;2=8va?IjBO~khzvob;x>K_tQ1eD z#ZQ`Fq3|>ArDm^@HH1*qW+iUf_-H*F+gj1Fj+1B!2vl(Bd?N`4pYap)rjt-GHceBnUa$CRhGvb5Ro)Mq2Ht&phWG(lr zZk@rI@0H8tv(fr=4CN?Q6KXnf~A5Q-|9fj&P$;1)W z=$XU$Q^~RVB7U)xV*hjrZ=nC%m)};CiiRI=;gNyN{9_<9(?yu%OJS#e_V{3t=Yy%D zQtY9kI{l)b*)QvidY%>KsYaV`<55-4DvZR>D`u$<>_23;9E|HGs`Z@8>Wu%<9-4nP z)ygngtM9QeY4FQ+HOzAjgyNGo*l;PTENz=nUsK8#2l53g%G>a-MP$vat%+Y+R4Cv6 zf*J)B`CyQ}z8U}2(q#>Y@|{+dRxQ(xHNz4_)u#&07^KHs3p< z)6@BOyF4d?d|4oN2mMVz6Q+A5f-Z6B!PBN>jqNC6oIG9BOcqDd7!@asjaQD!Y3jdJP zRGyGm6?K*Ou`6@3vsdPvkd2q9|1usqFh@;FV9Jg${}jQH7*s9N zjRX$D+--=@IgpTA><}HqOKggS#Ts-io-xGDVSsYKo9FDsszjBkRdx_V^IsW|mBpDQ zD!b7ttBy@shZ}BW9k+$`!&l?yKK>kCY7#>asYy)6%dK}HKzZZHO z*pp#W-RLWlh%~|a6TU3zB#pC==Fk;UP_#Kc^msp_zqpxw8t>PI=KoJV`3w3Tz?m5L zsgU9J5A4R}M|kg}?yOF9#OHvH_|SFXc^$J@xeUIpGS1QL*Q!SRO(&OO9O@947Sky6 z%7wgUXP67G6DN=R07c-mX-qI;Fe`_@#%qMW5?b|vPHyRi^X!H93suXq_XvpDu0R04 zme%EyUaNCa%}jwk02Kv!@8vIlw?pE1n57X`ufjB>YYDk0mEMVG7TNzpc4Io z4PL9VNdtj@P;rVa!_U;1TK6tEMLhEow*Qg~1UEm_kq93uSv? ziaS1bOmW!-UyUhNj@<)OsCBPqOu!VkOD6dH8*@mn%;|}|%NfOjy_hqoqe|TP)xooQ zXQJN{*=kfywVdJNM^u(>o;lIIH~Bn*@5jZ5|GcX72PHF4#CNnNUQvj=s*az@eC>ti z=ThLb_@LiamcFW6Lb*P1Q|eS|@smACw$A)|Rs07fR^MOxQeSNN&uNb7@O)-Ny-2b@ zW-o?5RMAm^SDmw&;6^s80ONG1MYKjz4D-gi{YKNDMxURFv#<&w)L9KrIUyhawT|q@ z?=c;nkjGYdTXt5%S@D6a5o(vxXD;e;*K}@t4<1{mnrPH?Q7lyTD7Lk+{8()c?yQ3j zlY6;;TtOx5d-k8^FtjA%dJ%??X%vspfJ=YwdlWgDHbYJP*no8fEC^XpMrRSw+oyK6 zZ=&oo`A7I}`%@*(3^c&1Pri{S@|GjiR)*%U;ejz<&O)Dn*^~2F#EeFQJ+bfZ6qJFyg>(kCZYz*=g6<^^r} z4$!0ti=S?_a)D;$fMOTAaR>QcJFXl~-YjE7%u=n%$F(=6N&0Yr+>Hr2zX$(KquPD( z-~V8;+$aA%Oo9J^|C&_ap7`%vd(p*z9^GQ|Zj^Xu8N4&om{G$gKhS?+%=riMS%tBc z!Vlk77I)kca97j2kbcJZ9Ct0EO4&cBL&iwJU5^iO+%;VSS0#+QMBn6S_Aa|x)i{{{ z4^Zlwn?!TRc5kk?n#-X%T9{-lJSARFuEx0F$RkfaAATdvZ+YI0G&*0@$CdvW3&XzX zb3WhiMjy`V)CBTDcHwdHoZnTIZqiYuO`Pp9`QRtJ%ZD%2-k#|5y1nS4&ldW{6?%6+ z$bJc9kg!$#hm46M9TYHRMCVXU!_X%muT&!ENe&aCYJ4I`l~Gl@&n|}5;{eu1C3Ha5a4IMEiM8m_w->1$ zJxJA98!h_;D%z|O*bWA*)yQ%ncr)edlE|HS07LctssG7PU1;^D57jL+>>Z6)ilgm; z@P>gqi^OhB;Kt|Qzhr!t@aaD3pJN5SGW}mvdwZh)L-wMJ{_R3yyzH6ZrqO>?K>x3& z)1TZ<`oAUmPfn*l(*PGh-&oYF`q+vw;;**K2VbDdjrg@nWe^|vJbLV2$iGXUe>F`r zTK4H^pZrfdqf)2RARxRuPNt3Sn&buOMX;?m>OA%2%QeYctO;>KnkFd(dIcv@y)?IH=O&!aL+JT;}SF=Klj4EM<9i{WVquA12O%!zB^=p-P@klHg7x0HzsNQ+} zDsz^%NtrgFU_PZUz$4=2WFYpDDBdB3E?>fh?V z8dgVJo!zjiX~TQ=gaE6(D!&YK`>)J7$YC!zA6ve64C7s1a#)3ikaXv<2S^C8_E<#i zV$wRBMq-se+rj^zdshtZHiyXITL*dAXD@AQI5v!%koLKsM$f2ZnG|fgzxoEl;jikh z9sH?GEfhMMyBhKBo+v?=orvhc;Fie!{ zj=w|(?m%I`FOAGcqm40m7{9x|{nZG4met&i(5CimE)mcgKK~J+f5E{3$q&Z1PwEm4 za|rwZofLtmioo@q1iocpHx*O_o+<*@?ndBn8i7Ci9|-)Zx@iOsXA+o3{9}L+_@)s7 zfm=>?{^#Dp4I+h9Q|P)xkol8Wax(N4Rj)*Rh^m*{uZ`DfF3apEB)xCj^OuN^KF)+O z4>P8BG#@zr8bXTBcmw&>xw5|YyV~n%CGf9g7=P*b@~b{pRX@)M-g6rKv3Bskl$7dy z)P7fc54vAwcGvzwo@IJjGwip`yTsnH_qEJ@KiQt!CH88q z2sI?Vs;=BoUAf=r$}Q?j9!#>8LCeAlZvgQ`frVjk_3!GttpoC)Q|P5^i*o%aO!g#> zA%ed;)8@3)WVu27xk3F}wq=OA*5ak%FKlThNX#yTfze`9JWf2{4XPbXn} z?5IcVG{;AZnJ+R~t}t;E6FJQ|S+A16wq0H@6|d*)Sp@vqk<)ON%1*~Vh2VdL!bpW? zAl=@4N>1bTsgo$#v++p9H^2-sZw3}{d;+GIZ(Ercn)iL4Qblfk>)xMjIbWqqyO+_D zO?smD(Hn5r@V}WmG51+Pv10Z%e0?s{1pyj$$CO+Wsg$9fopBR(PJ_H8H1t&^Ia>GhxUNLZI zrLJS)>fLrcK?54W1GV>R?9WEF@mKN!mxcNHC@M~G=$J2S=>)D0;pW4ONA!=PM3;BR*aIh9O2_0kQmRHZgF)?xhq%aJ@?Zuocz{7s{hir%pc)Gl`ZzB zBZeiZiaAo(!`7zZP~>?j5mV#mF*J0G*r?9+=^JbZF}_tty?u|BV)2{W;O$1a|B z-J95`Z}y$>U78I#?ywp95|RUdmCt(4I#6dO8itx=z(_YCud4Uz)>J>9a~lTocfZDg z@yV#NZ_HYelp|xs5?H^Z5?kis>Rz3B7jN>}ZaF68aXk~fS6m|A zV8OfJGPpC359_@qJt=mf?IYJh z1>5}Ap>iEcj@6b&%O3rP4Qk~;mf8}9aBf0F=h3UP@8yO>EVjcJSfJ|A=i7obeGeMcyPqt zTyTR}Dt1+a-|<&cm#B*TN>yQ@n!ZOBSwR(DQ3j~v6)z?)5GuLZ_>v}J9av)S7oQ?< zu4SI$M7LCZghUP~Ul+bBy#0$5XZhE`3bAp;;W%*&;@=CK{L-v;j`G)e>nu`zHQq4V|B zk|??(cg8o^xcI|o%}Ar1l{(bY$J!?r$(+}zzlr^u5wBqp>g3fYvEne?M&nTDef!Oi z>GCG2zQ^(Gl5TzFSFY~|s#%mcgJ99(P87hQKXtTHdnEVHqu9-){oaeog6j(^~U-OS~ zSPWdK@k3V;YP_!2w8oa6(X!#k3!%0LVl~7D!X2?UH4W<7d+`{-dwPCQ{utr#@hy(5oSW6*LIByG@H*l|soc8l3j*-ru|ep-{A ze+DZuNI>3~wl|Y~(n?qmGk5$f#xsmrI-?+zxKkylMgbsJzbZH}4sAxiTsU5eH$sCW zGO&%_PyYcvk5Te%(rX4bO9(bgEF$5LLf=kgAF?WQlG=9xflAh0oE`Lq{%M8t0Kd_) zdyiA!kJGHytQQQUk)Z*n;dRY}|Qw}_XdOHxORi$)UZoza|o{|_N?B3K1(@V@=1 zgq(x^{mqUF&sOi&v74vUvEPwTHv$Kqsg|zy`y=@QCsV5k>((>N&1#Cx*y`t z2A}EgOMRcSLXBf|LtzGsJ$aIbrm7~^*~KM`7ZTCK5XYXt6>DiEX6~#>}YFQpKj7y z{-sXkQ$6tMYIU6}A)~A9l|J~iSfJ{IHa|}j*it?4!5!w~QjUm1&fjF|^0|3u|5;@^BFTyAaIx+r)IrhY3lJo6-sjWs&+IXCe+q?KbdWpw zPyYDEHPsYd5ymZpnYnrAfYAJFdD*=4fW{$q$kM4*Tvfo3KqgV?1ytI+b6{wmNMMKh zqD_Q`o!?K?kN5CuQCBod8DeMVhvVNtL{)=|o!O!5Ue^~LYr@+%bF1X3(YNx#+1R{s zP*KEBYv8ry@2vSyJiN@SF7ho}#($%E5@ia72cXW`>@BbcIg-jOgJ!r|gPh^Xu>{jncoyKC)xyy` zXvUB_VvYAuP`UTESltFLwHJirgD~&6d&B*@sSh9}i4sFOz}8jqNIbr%Sh4Jay3Od> z9!f+(Q2eC1bHC6z+Qwc$g#P*Vylqz#`O01TFeUoMwb%ChGxW$x)f#`y{h|Y{@!DR0 zhJ%QylK690aYx784rR{j{Oo8-Q6;6AeX~*r>M>uBY@1}Idik}7vp-3qVAH8C*jkN! z^1PpX?sIi=Lgram$G?wI5Bys%{+%xVoi5BYN$GFq)srvtXGDkh(kIl8!roVXpAL7{ ztA4r5!7A{AK8d?eJRw7sAi$@H<06urup5QyI@Udzuh&S@sgkK&Z;^XkeI%>mN%fD& zHaK&@3yDK-`*$SEJGkZ34zJ-b(;<+keQiYMwYD4d0^5MK6A z#8h1a1uXtk5by=a3rp=Cch?b8l7wU6wovSP`RK*T0gRqT21$@`E>_}#`>o_LXY z>8%JrWHIWSw_#^S4~rnQdZ_-*MDS&JA-l8f#$VymwO5}y;|!d{4jI!tBeYbkr(XDn zmWR>oU;I%YK7t7==MXd#Z~j0hC|xOA=co^zpJC6sw=h#~o|p;WMLv8s?)JR&Gy)m? z-voZfw*)i12ahn$6%cH482`#}-qrFy0}buoA8!B9Xy62R8g~BlSvq#ouG+TxzeD}S zs=rY67n*dE`#tt)3@Wp}9v=3*e-53f#^EE@fd-s*Ccv<>Yw>3Ao?y_Z_l2;$e}n5f z?}AJOi0}p8@fmQKN|e0PM}=d^ZhswrO0;&vL1F?;;-5hOXCBXmUjsYle%4H}IY+D8 z^v0If?cQsHL@FNGo|ICO%6*dd^sQ`WeE-RelZb+S$lMP5`gp(`6dv{lONsFIH^R%l zpue9uvaj`S9Pku8NN#J!QK!Nl2xciE?Rq+>ogoX^s`==!Io zyY(-Kzfhkq79BU^+}&8zC$eDO-U+KN&ORY5wq-+B{trV!>2rD-tJ>$1Pn*2$hi3BX z_1iOG*7>A#nA6k$d;UeTO|I+4zyG{tFZ}zjZRrqo=idv#9g6Cu%xds&iTF1X=f7I< z$GTY~tA{-g3lsFRTEV$@o*Fq~U9~PskI$~-T>n%qr<;z>t0GP&MSH-RwWja}OSjF5OR>jFEB}0u5h)8ZqOZW(mE--F~ zy=k_FbzXLVxS3KFv9{EH&R7$^@LBP5C1b@gbTFbj#q6d3N+$&VJ41Hwb2@*Re7PF> zpobBAM)b*RM(b+q=j^ZH(z=31&SC4|72fC;X@OZV)~@U4B!37GbckVhWkr5=8vEu! zp?p*tq)IsZJAAC#m9=}Bu1Vq#pQb}E{V6$l-|%zePkMKDOMlt>@TxY^YOj@i+4o5H zG1w5!+Ze$^wO@X0E$)iVpA{awE&2{lp=B=)jkD%`JZE%8a5ZPe5g%cft6Y$CIBJ)z zzxSW>=e;)X$0x-%NAf3q41u)r5o=mgInJ!UHguDe92}4Hns+wO7!ljp_I^(D&ccH` zqJIyeo>T$|u~kkgK^2Itt5Ce%tcne9R~$hQ+K(HSrutE)kTSeZ{XW9=tvAi1giOSy zxR#6A!+u}L%D*_{*q!ZJ{a#{t)!Y2aCW$3C5>G31EE%j^_pi? zRmGN7w0Su^6jmL)z9RY-y*~7eA#pig_v?#mErTZQ{@K4)wY=DHh|WKJF=NuooRTS2 znd-wQL->T!xC!SRW%ijbu2_)z8pUQEWJ~RjP;xF-h=)$7G!?~mdg}|Mk8hQC?zqk* z^9yNjCVyJHrX6qPN9lZ?JP3VwH_mk#vTynE$zBl?>@7Z-e{6**K89_ z{B@^k7{1J^XF<_H9Ho`l4pJx&$G0M>vljHEKq~o&juG3cV_U0Zn>jjH9s5MlPd@Y3 zJtFP7t>IkNZk8E%qF$yiHN|mUTXVn}XyCaQxnne(A0FvgW4aV&O1mH~a$yjl@}_Q6 zi)&It_7a7uIx)c=+SDz~zyk+{OaBtO>1rOQwX!+Juci*}9yudkbP$&?&3R#BV)&4n z#E&@N5-I&>XnqSt#>e}8h?D#kGa{vLU2#!l*jwXck^Hp<;iT{W2kj5Hr^1A=Sbp9|Qn*2C(;p6j5Jg>BGV?SF^mrlsj zEo7Mz%jEmC?z#(Hp#8`R(ysm`59f@Wkh6!582p%F(q&&wd|ILI4V&KL z7(CzD9InQ516C&fGzUjD6C*#Cg|}~V>+90xvknl}JI8J3{FUn+cpZ_M&g74ygm+8; zers|zphuV$%WF!97d0lTV?{-&>$~~_WO?Bjr^gctOYh*qgx}TxqRK%rZ=yO^{_^$@ zJ6cswzSZ-()$>aC^Or#l<5UBi)wR@6f+b+a(ea_bL{*x>QO}z=QIdJobG4M94aS_C zlw3{HyD(_5&>H-MHTXam;C>4D!IBn62Aki5u-fOujN=nj@MGd*euf~QF)*HULoDZK zu`$G&=~_(zz(?L$0RSI);{?Fl+x#9o0Df-({H8kql5c)|>MBGJ^38-v>>=kRlJI|# zI8LtJ==SsHbu?Th_qTS9H;lrvv}v{9X1{*nME?=ri)5J}koVXrEP=Q~5SI4e#{JTa zTC+F#kykr~r6nZh0$C-~fa*`7?__=>Yihll-QEKoy!3CV!4Cfw<=*CV7^<*O=hF@^fotY)&gqpn@( zhe(m4a_?&gizlo^5D>(+Wdok@KMT;pvIrrJ{2gf3WR4weVCH&1nS%gs=MSpGuxC&z z6Nf(X@?_?BZ}LXA4imY9T;?yx^ujJH+hyILtdo_+{aO7(yU(WPOyr&IrO!w4Pl;Y_xnM=oM%%Rm6_%(XV9bsh`%Yw^dt_q9G46BC28{w(d=FmL0> zoDlfd>*d~W`EU0g3F1?PlSdy%vX*ij4$x85oR4Je3-6roer}C3%I#iPzdMXG>kh2r zhQ8~TH=hbx{DmK}1UFwZSR&CdF?WR!WDCDyaXmGz-R&ja%u`GGZXv<0Q=#|B-}geG zEBCG)JO3|#|M&bpMxP~y|8D!g&}Eb5`$5Yxe8Bl#y}$v61xfefGb^jKHFw{*A@Z>&?iBA(kN6L$nPM~zt2MeY$S^9kaNUK z9L%`pa2BGGgF0}sDV!x&o8Arm`OBrm_~(7rzmXx%cJYWcBVJ1#Y#UQMSP@A2$U58E zSn2A}O}~e2Lf2hjjyUF1V^;p<;bB+{-w1DiExc?O22bqVW00kv;B(M7hB}!L?ZaU2}s|gnQQfU52jtps@78O{h zPwJgrl{l}xqIp;ES-Fu?F2LjQZXR>p}u!4=WAXMF!G>Ds=sg)X8X$ z4EsO4y$O6()w%zjKq3Lb69hC=s6kT=iW;0sRB8f2&VdsRN+lI;MWr@aT2T_Df)Y3c zI3BmAt+iI|EuFosz1OzZI^C8aO2CQ1fuU8j4*M9ZI5ArCet*x}`{X19wfBGD>j!i8 zu=X0B^~~#8&uT%t${3Zc)w!*Z=g$N3e69Y-I6@r-9+ zJPdib$^?3{UaPWL`{QE$#&p1UH;#Ab)Kx8?Q8G53Y>OxNgd^GbCq~lmGmS){!&M=L zgu|hGd2|m>Mb)w7-=x4XDA$j1%V*@bS0=Vc@RsEj(R&vysr;|(lEb*5{}=bj?!V)V zu?{}lF%N&8Gfh#2W8z7UlgiA*;p%_&@tg7NUEAZ9!s&WqtWNDeHtQZ07y8p7h4cKi$3m zZ@sV6doO>Od-Q8P`ZAAf&E0S7VdeAOOHVIHx$^J*-kP{xkG{Yo;*Y6+KJ{B9@*e*_ zJ~dO0{0XXs5xE7VDXtIqxeCfv!E0-+4?l8`j?<$JJnHJHbGF5a?5yGd%; zVP3fP?|Qs2rSifQM?L<$AL&ov27mKP_!BQF@NfSIhqFbdfWT+;?2*d(T6OA7{=Kh2 zvBIDnm-+<7+OO*<{d{hh(sJ9lMI%?(8c-dy=%2zktkMGh##MD8kJF#DzG(irPwoGi zZ)f^Hwrh`QTjR{?e?dp-L0wCKV*jt+`akM_WN9O;4L@C@<^Yd`{sd%$(zcPqnu_Br zQ6^su92l`-8zy>r1*rMaTUU_~2jKalTjblFkm@UAa83gl!xwkuUTUqg$AI;`92DFXkm*BP#Hp zB}#^?Na9~5(jX>`LeGF zi4S(ZY?$^T$TqI{)sA%`ylsOGV9~@%R%#UsrRcFBDXta+4^!PNW=9^VDP)ff3PQYO zp3~pf*0a)vBaa;_^#jvU3dTKN3P0xA3!w|NzM+D0%w(El5WE^NAyhlp``D-mt|;~q{_ z3G)7||5S-mG=5S0JONFk3sS|aHpz68^Vpxqg&3L7NFuhs^z6?w9PD~40@JZi0y|oE z=LzY{!6lB_h%|kLi;ivp^`IM(^u225z)pAvgM4*p|6R59!ei_h_hl^h-UO#G@=K5n2@?-=E8-6=S67H#_2qC7&Wo zOEpP}x0&u)7$op_u)thXTC4`_&C^KrS4v*u@hFXKC;Xv$(zk0%lp^PiVj~D z_r|oxc5RNKZpVi`K`?N?hT~M42=}~GV-J1n>KR|V^qW`Ds4j19_+G01)PhC(8)kiN z4m&6ZTB(i_7J8ZiODS_u7Hqe2*S563!5^UjIf8tDPS{wp2H`;Ef4CtVEb07k!BhO% zcmCtyBoTr?8(Cm>8Nqw*clpg3x3Nq>DIY8N)h4#z@jG&(h1Y5pqO1l+Zt=ip#Xb}^ zSGstj8}eDZ(2+|U{0Ucn)E;>tsE|pCMjmjrV6qy0ySl}x)K+C;_l*mW;&1VSLjF#x z@5A3?DkI--X*)w%M#`3~Z5U1~?fZ#>FXkc#Yv+bOE}n(>;6lB7nR+5WZfWbOkWd`M z*N<%$}vT(rl+hWm!!jX-}^VTBG; z81p%&t;ik_Jj?_91Vj%9rQ^9zq_=^1wAF9nk>k9mJD;eMEqHS)c-Z%bv)U>(G*SV3 z=k=&)Y(FLzsoIhLmHX!ShC#vOK&I#)&G%~>smV1{Mv)d4aMlqo zyCtS5JJ$Q>o+2mSjSEYJ28Rg?dOIXw{}(rarUC?l?Q|C-{s1d#iV&~_Z4sLloQt5))B+T~6+XeVzqK`a}zBT&SY{w?!`a=e6VHQSq= zprBUgra!6Kn3`R3&}Qoo((IWuE1&B(KYL3r|ALl2chHu;b&!^xLSO6{U*Aa6v!=aC zn-4+zN#mQTR)0R|U|_xSAgx|Zs~}C}*3+3=xs7Lj_JQvFIZci{Xp`4=-=y#({W7v% z%{ILylnUm!aqlq=ldbu3&L?p81OLIy-nbCjL{O<>T2;X!#l0hg!psX50 zsAJkLa6^*QD}$eb%@N{fsNo$;ozTBOwYzGi*d0UNQYC6oCDMa!6vs!JbbMsk3yrUF z@A3c2NPhb>M&b|nw2>U&7VR_=SVssPxDCJwNAYi}?~d;3(-4l&9>T?}ql#IQNcgj2 zTKi9_{VZzFz`GLxPwRf#({G!@PTG6!R_Qo3qa`9Dw{8P=oDJQwyDxs(aDTPAXYWE( zxNapLBTN0DeJkTKn1>XOOFmWEvZp}df|zf8`;SY$UfJ?-US;An-IolkOuVj($%FWu z8P9^#q^jl9O2$?#kC%**v$nDd_77JG&L0ZSGkWe6uy@gZ&)u}&b5CXp z;+lf0p8o{+ZU%_(RKoFqKRCM8{@3)S=qKtUdw}}(Q~-vQDy^}u;FtFnH4r=&3}zF! zYUPQv4U0tQ?o3Ys%!U8__{UnrP5UoKwD?1HGPpq^mZ_drU+Q$;Xq~k0TB)3kyy2L` zB3nHAyI;vJgK)q=&PiB}9NS3W@(1(BeU`4>B_-&q=;d4I6r+ZQ3}gsh@Tbte)gbvR ztw)}F3du?|HF(i#X~i6c%EDB&*Y~KdaC87>l(Ws>qJx|xi+^mDZHjAcbW5-{8Xxu~ zIt_b(p7eiuoLj&AY+B71Gb5BnbF9;7hFsY^x|2@RzeA@v1XUOQjCM@q`8J{zcAY$SpRr(p#`yklcAv`AM|UhgTAJ(4^5#iJ#)9#zwP>0ytsa0+Yh^KTMuQQt#J04 z5_n>tZ8x;K*TsuqpTS*o{DxwzbPLrX{JZXaHuUv8lqX)ld*@BfF@{FfN=}X-s~eAqeFSzZDF5OOuIT zZTc~LXaPA%M)j^Ff*AWzCZiAzmKEyo1RG}HXY@7Am}0Pwm2fEp!}C3ttfwRRBVFP6N)AnzA(G>sDtCTV!CZ)GOGes)fEe_U&3MzP-6^ zZf%*^p3I77#hviB`F%t=!I_8*LEp>xtJO!Euz7L^iRp$7qBQBqNuCDbD0au*}9v?=TDvH<`dVG8nxQGG{}(+L1T8l(4ENe zxHrN1SJK-wH#8SnJXf;ayOsn$;nupu8@ZU(NdCceqP=ard{MKbWahs|gJiFRH}sB^ zs&gJ1%&ot1>H!^5iaQmRsFf zgtB4J6z#;ildT)CL36t82T}!E{ik|4b(C-}3rek3V=MSjG|1deL$K$v)b)hia*TYr zy?W0--F74dQJ&T)=tlV<7Anwpbia}>To6|XbBo_HxB~M*>1+tcp%^!mAePJ<3(*AB z1iGj)ErGM+&OrQFs8_7MJ%I1NLp}s!Hyb>k$SWGI8m)f;FvV6>OL{W)i7-$%;l6-i zW^r1xxu;d?$Y#A=w0b)~1VC5V{P zpVaeQLYYo!_=h}QEfRl_4D?g&eI*zE6z3?g#rZ-C7AV{0=g6#4ZmQ1R4E^w^D*Dh86t`LL6?A;CAZ^)B0xyWs&~d2--i{>&JS=a z!||Ydwx0*l=0TJaIHVA#J7^!K=E98D`p-%E0j1DJ1ElVXU-}@#ukpWslV2e|7N*Bm;L>tb|7f{KO2gr4e8EMEa3dl4RiC`*dN9T@9WYFQ7omqJ@Kkd z^^aZkrK*0@f3W)C_j~lC_H-+{Zm3X5e+c$xt?MDwdHWvg=e>@o&>vRVeJI=9{w$NA zjl8gnW-idXW{L!(;&l}Q_4E!pREQSAetZ1?Y;#bm5FqrKK!#S)B{JWL7A{lAdLEoX zJNmVr7fd#;LkZ>Ifi!9n?q$o(EO)SBg*E6~R#UN}v|N51iByZwYUHuR=^)GgA#tiF z;ve=)arLO$o76)%r0ELH4dKv58W^k&b6uljoB;xbPMG%rwtrGjhe9<{a9B>DUvsHaf`0jZLdpq|XYrIv5DF-yrh@_&4ev2nz&psj7VHK;V`; zb&gBoD9}p~V8(2(6>`9&#>-I92j3Bce#}3yhl2p)CXNuk76^;7^xtr>iGkVd!o9Vz z$%Sbtw*H8Kfvr$S7OfT*!oULlb!IjE>l*$r;B~he&0O>g$G`Ud()ic??&)Zr`aX}E zJJvP?t|EWHLqa{RcObb8sft8j>3tn*Z6Qr$|GM>`(}Zh@x94g7XSUXV0DmA`npQ@Z z^f6R)Ds0DEs4L)K|Hr);kIW>_l8&rPg0%yLX*~fo0Nd&6IP}39usU8t*hL*8C8#`A zTVPAGjG_huqXPf();Z_6FrZMh#MYB)=jS<^hDS>p1tC5%rx6Ple5G z{h5*%pB)b}X=laLbxP|b_#{@(V`(g0UvhJB>z@vogY;eCR5rl7Ts!#x;sE%^);!M0 zz&IQLfanwug^94R4_Pc<>NF!QBUjpn;T@6RO=9EUs;F04v}9w$@tH{!$o)w_kcBAV zhhzhKX6O*#^Pmf?R!tZmOpkhY1wsFVui^$`*^g4VRv;a*8NRZGP|`Za5Ld%lGHHnq-*N%5 zCovh7>_&f$hhob&5W(WBpf$7l$*<{?9w0zs!BdjQcT6o68NkNLm3|D*P{wc3ej^lO^~U$nh>8@iy5 z-6|@11x-5>d7uK*F_CQ^QI_=U1-}sV4tsuc$!`07v?NCo5w*R5->T(HN(%XvyeQIh z0)IUTW(W_2Zdl>?W670-^b%hsPS>h&LxVPc*%@(wvYm&D_HDFZ z$2>3a7JQR)Y~ReQPQG%1SJF#SSTL{ge-&~cPgdP?O2Wt6?QY_ls$M&&AV(LP<(xLi zIR8(>W7Pe3#OpscAU_K1u$8X;2zyU|x(p%c96c5i$SEqWp%Cdte#NiLUz+n3W76-1 zOuFjX^PGLPZ*MkeLa2O7m8_e}{Bd23f8+0?s=agiR(lIuiT~QB!4szRs7+vXazWqL z^SyJ1@piptQ}a#^-Cjhk@r>XrJroY`Fb{@Lo$iKkzqW;vX1g^AsAHx5-tX)kFMshf z=K-{RQS>Nbiofx4v78R5*=LzK4>zj@pVPZLs7{LZcKhufc5(0Px#=g7&~Y{b#>=-w zmR4cp$G_3WL5BVPBXon{>#iHVB!91R>t1euv5<2r9gaD-(IzUpDbwyc3N)$XS9^ zxE*wEOrX5^r@yKVZ0<;E0s9`61$qV6o$!QFSdZPiVGDX1sWjbr zdag*658}xua5?xt`^8?Xa0L|^d5@xmT|~o+T7AP%U0begKebVM=Aao%rDxt|=QOBa z6;>84B>2W)g8t!8b>&YF%BymfuhH*=+fIMr#l#9cHk9Q`*?2Yn7CM3Q8W$8Q#i^ok{`1{R?UJ;b@~9f<45Tp(SqDnkv`1xGoa zq-q`Z2JDD_7&b5;YA!w47WlZa&fV?g2{oEL0mmdywD===qDeM+vL>&DZ&AL#@cF6d zgGn=xhRSRa(?hg?BIyIg(jrQ6Ga+3nEj2So_W6JM9lqSIVkS7h)Z)v${M(k8)_l@; z;BT#W1(v4rpH3zIthqyMo1$h>;TAKcwJh`%6cK;pZ?omO?3kjCz$sQARFH?G(n(g7 zGNRb&ZyGQ%zD_b8hO0j)xX3etD*ZiqFb=MwsuSKy7$O_ZdPNg0g~mI#-iQpn2Ip&T zG_k+ujc@AH3iT5;tX{oCC&jy0DlKF>N^+fZe#RVlTFarDrr~@3!y5shQu@B{pTcEVT=TF0%>j6oegad`p^(F$ zwIZZ0_#?a0AyGj6na#*v{?fd0IeyDT^}A51LY8b({!f@X@KHzS;jTdY7rP90fOMcv zRw>Op=z_DMgbsk?c?Fe0yc+nT(*T|X?ZCuR|F&~AiqMW0x|FXYU=3fnwMW!XWbs~F zS76zp(KV~&2y6Q)=N~Avte06QZ5L3vMV9q4%5FQi(rXqjEZXZ(ApGojl@ki|dRW}B z?MS;Qihk2>)WIEk$i2a}cDLW&!K~Zi>?vsU{*p%ELvjz4@^%Gl zzD&@Jg_#`_%;)FA`6Q}hVs6_Q5kCfztUGv1jiCrJ8Z01f@P9X2{S1&zTuMx!M!Y84 zG1Jql__#^{uZ<`^I-II8QSVal<)t~CdX-TE+ZWQ`yupr8gZ3oOY0Rt*n+VhxpxR=Ti@Rh2Ef3A@7Vc2T_xN=btXt7v<7D0>8 z8duMFc4F5LXJ+x)F=)cl3}Qv%lyvR>LUl5PY) z(ohy~Dw6)zjap29dqYvJFk>Lcl;`oIg^4agUb)AHgXFvW-!*b_-?v?()x zfx$rQCezTX5N7^u?>MT!jj&Q2sVx0-m9}pocb8EO6f>|=B;S)uGkLc7yPxca>Jz`nMj*{lQTo{o z+s~kp!=Le{Kdf&2{{?>rKd+wrKjM!(gpsA%>C`R$oE_j#z=3exk!ziyoT*GCk?)`UMbL02 ze?Y@k-!?Rycq9g;r2jbzf4m@=DcRSMsIaCP$ zpke)in&CykT9m&Ku2T{+sH)@|UqOkYj#74;p-aUzNAE4b zUszuNT3S&8E@%f8vHSz{FPWwdbw6{0Wy`r&G``Hp|67<|hYCY=^y)E&*l5 zWSG?=&1#`$wNSHKoM>No9cK$HVc-lMZ}L+4_bZlQ5ki@eq`5^Jixrw!n%cHrrQJ~{XK0;xi+v_jNd(l>)Tg1oN)X^idG!fL%H}ULt z>PW6@*>gyyqQtA`Ce}4BujygC2|8-z)1GtBRnvzjp4}0A);IH6azo4BLo(lnk9*n< zgpNvFoj`W{6S#p*!{FvD-Pp*vIf)ylik0AFxoYkfeikw$)0Z6l%_Q@TEZ)dX@`c2! z+Z*?;Z0O|-ozmp{i8ppMS2XV5-q1Vwg0p1?sMPMpy*naJH}Q?lzUblRZ*b>8yvi!B z$xXhPc$NLps=uk+-tOtq@TJ5XN4LCjNaD?Nd+&!t(7zV#Zv>t<417?a?vi~wxx*ID zIso7%;3C&T54I`Lgf+05IyeleXTun>k+!_imj+tiJf!#j%Eb0_t9n1NXn#(@Co}?A z&O#eaRb=TaJc~R~(KFeS*uL_d#)e6WH+r?aaky37*Hv8Evi%S$XSRC3=Y2;y9EL!9 zBxi2-gK2eCn?cX+M*J^5%g#97-G|BbUEpbjI(=m$2U&JLmO-c%Kdl>J3|HfP$!*+$ zM+f^){CDmJovG9kZ10G)6tu5xMmx#7p-|gDS^PyKEcDl1jzcMg0{V-Wf5#k?6qSug zil=T0*9QIE9|a7e?aqU>?((}wmZB<)|HJTSp=QD<_>(_uXI0K4pW_XY4}biSMy23k zSduwW_McX)rST>9eC~!hW+YljqIbs3qG`D7@n9y(%L&iScl zeB%I8J1Tx?VnM@^kq71#R*agj^qSb09PiR}=DY1gi+jL&qvU1#;Y-K;S0QT?@@YPG(O2EB}!nW_PCT)-GTq7@5=U z^Iw#sn;=G(zr6fuM{<*=n~=WD)!HdXs#>W??v?){vh)`sKW`w%DCVuFf9ne>lkWxo zb;VOJy`J~v?25_fJ1!M3EUGH+x9uB^ISoU`r6v~+sVX0|L3f8GcN2yJ;)mJSAtw=G zX=SROQpsoiZvhOWGHGa~R#jzrOGEEUDjib3g}sHzs=}hmcLJ@X1Bg!l{E+~Vcze2NuvRpP>x;Mm z{izXasnC3&lddAv62~c<;FVzdgBytoV^^z+Mdi9Nj)Ny;f;wLdSx$#PI*n<)ovgNt zB$xh7>Hg|cwB5XVXsBudR#PK_9VOL|&=#1Nt&gl(@Tk~Nh!pBhk^hSy95BfA$nIE- z8{ZJK?+(zf<)1Cz-7u)K{Jn<4s^rQl95M9V>6XpOy}UR4&}lvnKL&>Q@j(VZwnmoz zg!iW1rUtE^*+?cTw|YK4HRE%j%Bzv4vnVh=HEY0-s?_LTQes^BKO;?F;9>K)!^RbJOv(g)cx_P_z6SCku~}fLkFHHG@%RvI9vp9xDkMx z3CXO|v8j5%mweMd;WLz9PZYBM$|KV1w@a0O!7ew;%l0Ifj*Luy^B>{zS%GvBDcsSAP4<`D(}1> zS2pe*eBGcWESo;CgLR3DNP>CD$vx-3whg@gi@hGWBq#C2mWs#&J5^%NrF#1Z-jc9w zckk=$ZC>W>>3aKp^x;bz`s6;io66djT`B#zB+@h=(#d`BW1gjF8;i>HEV<*M3Lg8n zJuI*VH_NhbuIJ|93RXb4n_

{^#g3*#F*Dh8X?ri!8MTL~r0i@n_b6))!R4q;X&k zSzql<9mrD4v6i2t{DZl3qh8;+(bNz;O!ci4o7GCOb6P2~5VOCYFO##@7mizgHr8e< z6||~?#OQ`ch2%JJhpY$3qYnsi;(VW++)CkN6Qd`)0`X*Ct4^xf<D~+E`M)Z|;|2M+;L6)?-$}lDrECMjkjE zhCKIFjXyQ5mFIn1BM-y|mhZcvm-*1!4sGZ)YD44)Sy{Te|$->CQSUE-a;jaj|HZ=9{=6(Igbc!1e80sICl;lUMBt8ww~sMSa;(T z=d)^wEL%ziaj)-T=(6CsY_T}fwkkF4=6Ms=RIM-ILC$%}Y3mEm52n0w`Jp7jAr#}$ zhi&4{Pxf8kc8~wAVt0Nbl&j4&|H%E)oTV1@e?a>A#V*ZBZAUCkTTIfeOrIfuY$Z-^ z7kWENdWn{(b_P4vk!i|rf$Cu16}YWsH(Dc~q`6rVyDK8zZ8mcAx>yN{3o_9_Sjx>x zmJ6Dr5i(DhX!ZJ?(35a|jnrRWN|&2fE+}^1E0c*{zgNcxJ8Aqn_x?sZ`c}<|?VEeY zI_*d4ZJKo*5LDx$yEW;-x>fWqOAV}*?Go;WPWM(v;=dD0%a7dRU->7)-X$(PfN+6A zI;OaSBKv*Rq8J?iJgQlk9F$B2C0WI=l0m#f`hf%ZV#o}HUvsO$t>RD6|Az(o_h9UR zf#|UV8`wSx)^fgpKmUY-YqIbUfBvo6ly-prNXyK?h)((G%N2Wda^om8x(B6G61Q_* zQ5*xu`7^wJ`})R#2C5BghEEepU_ao8of6nTY9V6}$p3Rd{oUrjzoXOVpOXK6p?b*a zx`lR50r}_u4R`(2)Pk+h{gADMSi%pEviVU``qNjz>B zTe@Wntt@^JKLJe{;=JcKbLpQLcC^^)SA1Ng>6>7e2AmF$1q-J)IG;t51xRG^cg5hD ze$(_?q$yumrTEHcRL+em(63->5j%fU1BCx?h5v6A|KBS9zcq{hZ`DxY|9P=!sxLdf z>Q{;XuM+=X74m<+OwQUG@PBfn3|STM{|5s8-*+qgzu-RO|9qdEyei=Tt^oXhRlxr# zlg_GZ9w+7O`cL;+F zR68yle>MZA6MQ+0D47348*Vg%T84DJIs&Dkg+z7Uv`%{ki7}{8-|$bFX&0$4#i>bf zD9S)TcogO-{y!Pw?C1xUDNa?@sUhVP3mYy<%_}OOU(_%$HE&4y{2>ivQ}c?; z=NC7eotjrtKEI^lwA8%Pa?J4)BY&DV;>z;*BN~Rm+D?YGoovSXDO{bBG1l++!oi2& z-*r;uif_P#G4!o%CnZ;m}vz2I{Jhx-w=JW z+)xM@a$Q+^lar@J>18f ziK4q+ycnqV^zp#R(wFF}KJHPu;nl2fLClMLaN?8uc7O^G2>X{CS$bFSRW41k%|Fv5 z1uxEB|CameaNVqY3qQ9y-(Pj~r>P_OrbpH{yf|XzTRkZPhQRgq6fBsFp8o35+U398 zn(iOoU6iX@4$s`$Cy+aof!hv@dm%x$l>Lq=|dzh3}w@)y*^ zyh-~yHa{g^&5!23ulZH~B8eTy=d|n#v9u!dr|ImN2PO|B=h3T2TY`eBpLlTbcx(N4o35!2f!pFArW?=$YrDnI)r~yBy7`dkF%!?a zd6Sz!fpzrzvcB(<-^{kYpec$Y*NG)gPduo8v^SKo1s`8(&!~4zUi87I172i%FW+JR zKfx>)Dl)!D5N1e-PN#wjLi7f*pP^GJd`CUC%*OIw{_&UMFjj`5E$A=LpdQ1OE2L1s zd`BrYfiz{QnRSYIn=K8l)<2anRi}?uSUEqJJP(?$DDzd5<^MDhW44CrKTEUugNYim zG}5n{TygOE8si2&41AU(gZ;_ReI!bLj`@nel+;*bvou>bSBa9xCRk zKhjJh$ro?v3%rkdHC&!?*|PKDk}uRBYgYFM59QF7pPyCs*H-q7a>`*H90r*TULG&R zJJjOnr+C5JiP4+>QxaOf=If8e*No3^^fg=%U-&D=NB-Q0*`@!iVm;|=QK!DXbvk|N z=;lqqz5#sAL!Z?v*Ug8Qx^5nw)lI=~YF6U_7a@o%Q{55$+ydZeW_p%y!aCy+l1cvZvr<6ikN0th#3-`aySXT zF(FOQ1<2i6zPDj=NfY;wC}!N*#y{zuDC?&9-yp$`y`IoUE45;i8%2!wuhXz-c3YVGsTi4 zSrfSbR5fkJm37Te{E{Nx&}piJMQLyJsTZCH`>EH+@(-Z_KldUAD_ckuJg!AQ=3I zGj<>x?hl~@AN{Dt;kSQwjhnv$;K=rn5eZDpbs_YWAK~XEbyVy2e`xnH`#+qObg#3T zJolT~P;_s`s47)y;*-R6qJ)}{vfrC+V+C7&j?QU@-n}#a<5xH3R2mE1Q5E^!Ar+C^ zo?xFkDOkPyTX^N~xqO$~00#Et$Kj4fu3XRNt*)VHQ6(+Ol2*;R764UYf0efYd)NNX zj(X%h#qqa3l<$Jd4q@dE|0)Zl{3cUQRITc*5q%s*T1>9vdJ1E@+j_4sHjM`UeUv&B zzO#|?P9yhoP0rJ{X587#hS$amEtV;N|CfYl7_ol+v|a5669qwP7{NxN0LY703+9jc z|F}ZCg*rb}SHa&<`8Lkz&sY?Yf)rhpw|Ee3oIbIGHZ{wRK7QlqBbz@`DfFP2U&u46 zN^3Yeuz>kWP64IMcaYzUH-O#VfVA^@nSb+|D&}O9zhvl+b}Y>12KM-9a=f9ZULZW* z+;EH@)GT4#LoYZPGPwSfPylAQ2&kP`QU!umkl*d!MQS=F>AhpY_P4oh?smi*7anB9 zat(AKbeAimk5Ak`^|>oL?VtJv&HM}dryP6}LXyPlMqwN1r$6B)2H;#94Yox@y-AGq zndq7|bh%x}QC4!#&g4~OXlRez+=FWBk3?_DL%EYPmH5cU-6P1WCxmIDgjSTr)|g3K z)e!e!_2|n)Iezy^010y4p}7{PGX2ob>XcGxtcete1i_GoXtmWt8lqjCa1zTTAc_s! zt?fC@R8gIat5QLQ+JNp+Jnmh_7N);P7B|?pczjUoY2*o6q0?g?2a{-_7LA7hYyZ@v45K1V|E&Rd z`NxFsH5hP{kahp$V|TPakplw`A{Xm4D$uwdg7)&8&la@}T|3#a^*Y0^M9w883)|LYaT*b}P782eY^AU5qpsp2G>@Jp+Wu~+h( z^|$p6wM)>9HtXx@{>?#U7@(RZ_=$k2fJ&Pe7OdUmr*oiFCU}>3;_3cvv|JLz={d#m@J|0O*>Efsi$8g=- zJMt4u!DgKg2J=Af!_(T9s0-FUZp+T?7n-H&jlQyZDm-Uz!x3l`NYov^hrdhkb2fkz z9y+)*xuczp2@u5-m8D$@IM(V9=-haC1f-+yjhe$weF*83@TXf=@RsAyo1Uz%uolfo z1+K|e5AvoFV|3)kT^~TT1Dm6%^B7&MsC@&S8MsL2{x~ zSkaZubek6xE*#dHH82e&n(9w|l@z?NsC{ElY+!lo!dG}(_QPF!hzRQdg_r-kNurCP zS6zx5`SrRm%tLa;KVp6Wc>zAHP_z&m4E{42J44gTBJ*!zqb6{3k#_EtTc(nxVq?Ql zX`*qjLKC5N(nY~sjDj-~)8|$2QnR!%jGM$u^iX#tN%c{j13c?F~KKM)Pt58^Pae)1Q$$#j)zdyJqVHMoqh1poJ6R=;r)!RD|01CpY0wUZRUMKtn05gCcmhyFy8 z4G@~bWrBD@LEA8at}NrPcmO#XUD)YiAqq5(d4T^9`dlh*(L z;l>BTWq2?>Ww=>8_xrPPA0&g*w)(%EBArG&f}1S>OgzPuk3s^4K{)R_4&fLGXV8)q zDw@Rg*R(SW*K{^5|2zDeGo5K*wJtR(x~Sc7YfQ9f{q900aeZO)BT{FCCZ$B36}3Of znL@ZQ>q`nX|CgvMTt_1h?>twmp@SzScRQ5Xb+=&TP{x0Y8;39^zvj;k;qzXni4Rb~ z_|rE#^JdLrx3D4HL+B4onl26jq`B3T0ieMF1G%!9q2&8hzM|6EQiXZuJMph=4MG15 zOVYElc&EB({kx%S|G@X4ldDFqv@Fo1UN|+hj7V>2ox+Hr{x7R-!V9c^pybaKGBCNL zp2$70$JXCpk*%@2{)%Z8`NKQ)*f2T$EaL5)#2Gv(i`=Pj?WV-GGS07Th?uVVRqbRL|LwVl+liSbt19# z{@BTGUZ`ZfKi6_k-R&yFKD4jB(eExpJxM+xmRcj`RjcvM^Xu4;*!-}g88laD=7{!n z#P5T%W{R0nX6D%rEUm4Es=B2H7`5I4oat~~c5>2bhl@71l20&+kg*DX&YqJEGn;LJ z8@3;^)%51>2rIwWd0hXyV{hJw`K3=wQQ`T3Wu}#YZI=)qjfd>g{XHs!(w%B zXEYLjpPz@v&-ikFG*b0`bPW{%={1!F=W`WZv+`|9;@>5){mSGE(a~Zm5l`EUqF21| z$aeu+;%hQBcLgz{+~KfuMwSqUUp-FNQrmu9|XRcxKP)vDNORea$6!K&C6iN6%R;)BWu^=Ulv zUr%u4z$r?V*RucI%HcaIXYR0%KbW~mA6L%Yd|(G!-Yku^yfQF8^4aJWTcaaiM%fzL zXEC&T`eV_N`M#5CU%_4}Soo-YhK3gjhI6eZIoh zLPlN5O|#RlYyq@u{O@H?U?2JW9(8;G)p6*bmWUp3mgVQaMs@+MKl$6f@7|Y*2xZLn z`4CU&jJg9rlP=QBkp&`m$Xby>ql6Xa^C)< zkeZl-(XVk~^64&p52PxfM}mc)x*9)SR{V>D&kux_o$QBj?K?FQ`)feMRe?CbRRnzT zhxm^TQH})iBh;TCu>Ud4+a-)ZF2>aPMJ|3nT7F((!wCQTl&0vhZq%tskT+HFJyEsA z4SiYGEFCqm6#hlf@mekW2f|G8jUfl|3+cN!6mUiU*q+L#0L{}|2}e~-Qx1?T&tJ&}%-zd>kj#^h2niH+ zGwVKX1_d{-HF0xz7A#CY&gn9@fE3hY0?>c9QCKhrY4UH)=bWmy9x~Lv!k&X%58WQ1 zw#oe30%eR6Y6tqoe8s02&Gf$=>Io+6@qYtfRVz-bXMJK8{;-EK^>w{)_wq zcUOAW3><#-H*(&*`XF!+0UL?^;rkgVREUX%1WpD1JcYpUZLxy*L0+%l$)vkA|Etgy zT%QHJ6D&_q_mgAH%6%=W^k?!fekHVY)rUg=M8?yByXZ9HE?tT|G-;{&Nz=?%WY1A8Ah@vrAT?UgFqrVA1RxnzgSsNA9YLG{50BG7PXO3#Flosu1{A6P* zqN#~dy`wWy8ReE2KdA})&laz2#!(RQ{Fv*$=tgkG^|E^UWB!+`<(IZ{_C@$YH5WL* zZoDcRu<6H~QepJ*iT>9+eVPLuZVxj1UE;coH$BNg4Dh}3X7}ZqG;mVr8y0!`6Ez^6QdvhZh-A(K#nPG!&4>| z*qg#^6W;csU!|}PmT{Ft{VNiS-}7*nvRF0S@BI|r&1w65W^Hv|bt+a&3XqC;sxr#7 zB{x*IZwPG}$d6~Ei^(cRDnAGR*OZ63(}T6wuWRfTfd{B5}Fz_#hbrpE{BO;B*17 zbLxKoqAO8s4z~Z|ZS}gdjG=X=##~D*=^E9Q=U?0tQJYV98x9K@jFU6!EYPqcHZG*E z#>|Mz(XO6SFBcX0vKsMj#l@!X+^NKMw)dB^|4Xn*H~* z#H>k4iaD+jFa*g*^A}tfbu2g#q6|8?Vph6RjQ`e*>;Y#HO#kjAsqz1=>(iRhSM z(*LKPrv7Ev|IO5%y*};audShUfuERzfzBKBgPGt-`KE@`1vvDHX_|Y3DtzHdq~r_B zS!e!Eq1b%GNI?VY(|c$F90FrzGtBiJhxYvveNUarXcb>R7tEtH-({Y529Ce+iUZ&R z{6Cw1@v_q|=1G1*?EJ~nDwIAGp-uc+F=Un#L|4%H*{l!9rHtc!bYhvXe}6sE-4zU; z)hb(OYqm&}D|u;Dz(;x`V%LYqqMaOdsOaIPNYfYTgT5)YU~u&#v3j2DgC!-6G>Z<} z;i|f(P`)Y&Kdt2B4M5@bM~-y}S(-@#l3(GDDyIx)vu_n*1NC{xNiuDih zUIRhztRJMYFfZS>u`s1D`hb!tqcuOVe%UuoI~&l0@+bGv>1=*Kq9s*3EF@r`iIyTp zc?Pe|3)_lx^vA!(RC#9<>!FjoLkH@*{H2Ct&4rRtlj;IB$>=A52_V@4PL0X0l7IW` zMzyF1BYEJD;I`R6uF9!PAXmpn(31b#%K{`x_x!B-(e+i1I0OCY$?5+C{b-pcunT|g zPL+YN3>D>+3Wm1-(w|!CX0=EZ!_-Qr`O2u~KSS*8@R4f@z4P1Qzy$Re)e$ww*(}Fd zpSgAv<`$wlIDLWt3q~P2Eck5xyYIXHM@1jZw*Jt;8YkVjqQ6@df9B=CeeSp%e_0cA zf{-zp2wPlRe~1>!+Iq@*aM&Sd90LW9BsD34ZjwKRRPJqguzCbT4e!ZM<5Y^{U#7kzfb>TTe6@T={r*vuQ}4ae3)uGg z=R=Luq?L|&!)Zuatl0ln*hbs00wE*)WTgwKeBKlS<7nTpd@8l7kP$-uuBuETyEHZAlk*OB5BjZTG zDZqM89U3LK>FIvtT!%{m)QL1uBasJ!Mn%%f*{Gf>3}L%^khs1K8|h;`N{%T@jJ^q8 zhCUfjUO1}lC{`{;DS9Eft2+5uHI7)1uo!{~s-+N4s7Q>S=1NDC*GJpP@O>@meN@_S za^*s%c&#y=A#653d+|-I**!ygAzL;!J{m8n33yLbyr+g@ujh|-@+)4B96^=XDXxV> ze20J22$r}9FmfoS-`Dmoq2EvX&%Z3>2s7Vb0v>4P(ObA(SON1;e9~Vn(oykA`M+G` zBzP_Q-CC;qYDR8fVv0O#5|32~mcjHcTD=kgkvD}M?_&yL_GE&+cUjno_Vi$;{5diD1UPn11Mag&9R{o!U&_ar8<{6&q%hYnj@$|U?pw&n zl4~*@ywr7&<5!Wg!f)%Rt4ya&t*0{1p~2_hE1J5r0KR$IRT%Tn?UZugc{l*#pQpl> zy`jgIQ)J|X(2`$nt`ccI$OV%SZXwY>e_B9;IvNb-6Dso>yIVuFY^hlan&>AuUwaS> ze9+GdIv7pf>*6)M;1_zh$DRjgW|Q<-sGE_}PFY55e9;No*%H?^lz_CbHE+a}6hTCd zLPTAiYg1mFkh$pe6gH18ka|)tg1}(#mKCh9KHIO~&7;XwJxubix_)l9qku+Oeq zqWL4R(B<5WCTlVtCHKVdeIr2f@-IIqhUB zvB6{j*s|~G;-?f>{_DN6on-oo=fM`bGZ$5V~Al?9HvEWZLrIAKv^G|n+#(U8{ z{TfAKSW1gG-lM^mUogL3zpdt{puy%&6?ATIklOQxes!@xtPIQ`+dPwzhLgeu4KAb2 z%vP^!1gUwVI*UzOw0Z?a=ySg*e@swxbglg`iCON!n?)qvppO=*p&*IebY0B@PN%5b zeXQGq#u}XP$8T8_jC(RulZB1k%08KIgO)INoiWD&`4!h6*sp+U0*vw(y(P(M%Xk_F zBc=}Bb~`HKUrsh&vhH-nzl?*In168oSx!|8KeJl8KqMpN)kqf8QUAA10rE6kpk@mN zR`|ZSl2{Js58Z{uoyBjuUYdT;y?=I5k0#B+Vt%qF;85W)`iIk|h|j+GQ~k4ZyRZM6 zKiDi^%THGQhTmEBPyGz_f1-cy;d0Ss#=tvN^?mmI^ah_ZyXdaYe|;G?B=EVMA0?HS z^ZFgpN~ZHRzjqPV@d^HG6g?)bmN}D`V!dr(&0bHCd!)SCxDboj(<_!e@q`s?{!`KccJlFyj_d z;dnG%p8y`YrM!N%YbIJjlX3GPbM8VL(H#gup)aK>bg^$V64ZlQ8N<_M*w&#oAjRaD z!sM5~Q1E-?Lvlv3^C*f^!nu?JWD3sQ!?rei{ocL|Zt=x;B&iHw{ksYw2_OU?0%+vv zP5@B>L3z03#xxU!RGd>kos1&|{^4UkLJB;&K-`dX%v9T&$^t-=qwGvJffp1QE<8JO zqd#LVgJ;<%mHS9wY1KN#s<+Pk@gG0a5mjJQdHK%`H|F-w3c6cR`KgN17cL55dvHbR zrv`Kf->bWUZ^pl8IMW%@rt}=gNBAeOER=KHWYfd zWDxH6#9bI<`Q-8*xiKbxZ*qP624#$20o0H;3rC;^-KhX_1E-|&H|A%gENx^9$*8}> z!bhxKEfiOD6a`75MW(;N2rv!($AhADHd>q*J*cB-9ZyQFC|#Axa;J)#?O8P6Ezo5q z<=j%6l;tNgDRa(6&UpDF+@r7Y$nl4%?)gCX{3I2P@~GKpK%fFjorI16S?15+#Il2m z9qC|Y=}JwY_}4woKKzF!anak(4!qZ;Z});<2za|-nz2m%gtRl70yNO8c#$hG33iE( z28lmivstJ4nr`!jN9Bk+&4AuH694h}e7Rons~w*f(>ksnHjd_gL>x;`Y>OLmOFJ%MO%5yJO+GpcF0Hl=Qhb(5X|PH)tY4dRAQrNT@YYOTDv5( zSf^b&`qmO;7axVqx=oNt$l18bH<6ypO_}s^3KTQLidFdHzIQ&WXEm;tkkElw0}2`i zy96g!}Vlo>}@*8;>{W zqU!)SLH(7{)ExO&wH=x?%B@k3@<8my_iCt-rd$ydy~mOtRIE?HH%1|OlR7P)8e7nI z2l)BbxvFeO!(~kR`xlPEv(VBoR?`9jS&cXxuEjOIbC0Wal|jeVx=!C(tZP6x&b9rR)gY$ zq450D@wAh9;SHLlh5>umg_vL!-O_$IUtG{eXB5%Y7W)^(55N-*ra1jVH<<4z!Qubw z4*!`Ig*cXZqmt#3orrfB_BP64F9I9q~!W?tUkTPr6Xd7wW~;hs{%_*d(ofX2mC!`Ga-| z!RwC?i-I+-DBs}?D?hK8oKh>>di!theCOba5wD(*J-^1EKW%-5Q58g!BRb_rLA_YX z3WJyb!5@Rjrf7;138g{lI~o7I(pVI_{@eLk?2sxcXL0B753|Upj*9Lh!bo>3B?!VXk%^gWEP!nWh(euptV8cXk%!MspXwQi#E?7n=iD4Fz zL4>Kc{yb;>d8YH=0{obJa`*K!cOZz{sghl}lRK-T!DO{P($UP**36oYW~~3Q?&~+C zgC@m9kUOBCVkFQJMrlkzeElP@i4TS2vZgyEhp`2HQR<%-c1KJJOf|^B8_Z5mHy8^I zfw9bbxk$aV{&iWu49{QV*cI%%1Kao4j1PuReCwY(2EX2_UDq-Au>Sv-@gMcZXB>an zr~l>g-}U+d?fYxa` zbtl9LZXEv(;_nUyzh8*G)6J;Js79>aJL8H8W3WJwxgRu)F*vCJBxYvwX18qq5cLtRI%c=u_l0G#c!2keC z1Y-aQ7Sg&Kd`Lgaf7}iK3*#sbL!H;Sy{P36BfrSuk!8QtdoMrogQ+>~ zC9PZ?^}xiONAP6BbZ5am5-xVP;DD#ZpLqGVucUB(*TOe#;Hh>ccB*22w@+tv`}E(s zeL8*%^~x{TsovAy;c1_)Pk+;G*&lWL^ww^lF6#E_IeTf%LIJYDGqT&KFYoHE>^;zV_HEzU{?GsoT*22b$$vYv_NsV}|I^10j8AyxO95u5UkfZQ<8MU2 zcG|__)vy6`?|?a&1O2XeLaPviChMoXbq?us@(?AVy~6sk!p*Rs2AV7FN1w+(Ryrc| zk7@lfY_jdPgX3oqKT;w6VwCg?{>%>WbN>L&oJ#fk4dz-jb;jNLp&!$usew;OKH{yy zTN@ne>ozGHaQs(a1~9`ifWZJCcYHjj@}UTi3`+OxjblF^1(^Jcr(;B#k8lLz@V|cI z`|bWQ46NCy%0Cz#f~~q+`G5ntlWpeZe__X%oJR&);u#P8y z1@_Zx<1%e+VTs4ofwtdw==!Uzp+5)q^<$c;&ioNg0(Fh3PpOG@v2srPd_U$k&DBpq zD_d}*^FKCin|l>VICm;L!RJnpo{KS*SE5gG#l+aYDd%g| zsWbVfZWXK7j>UqO+1JSy`6n(5Pb|46bMX720baP3ugxE;y)f(X+IF*qLn7ICrfQkrCdtW+lHlA4IOs zJA^-dbFYlN+wwtVVO~!yl0?f_HN3`g(r@Kf+;q+nH|6!OC|gsp{G0)NF0s+@Iy@++ z{=}fR`rn7opXL*qJcrHrdHtg!;d*?N*jso*b2q}!$-iGX`8QqsrB?g}g9LL$pqed} zdY-nFHqt1|jYSF}v*_#!4Q`&Ic1eXAyl-mffHAM%py@Z|jNCYKXLH-hOhhm4@IMlk z=AH2yCdGeak$7+LiFOIRx9$T`-rc-3yyJb!!qi`i5m_(cQ%3vL|J>#?e$kZ&s{ z4-UO86R7K=sT<90FdP5)iy8@-iZ_`cwfqrkepw^U^SFiw+vc-f?+69lQ9mPQ4dzV{ zFo<+u^x11Lv;A39T~A=e$~kFPJu9zVl<}lAG5XgXAJhBnRhg)NO7Jn=iRym>yykZl zui;6VBCqB#3ak^izOwHUHK-X$u#rW*F6a(}{Q;vs0bA394#Z4{sBZobO5a*K5s`~X zYaOUF7@$7lUv4F_1sJn3=s!M9yZ=}}7Job@z#6@02F>uo=5_ASKzV}D z@ru|=jZL#9ZK6$oDuURFo@>U*w;S>T+Fa4k=zHcs==-^nPoi)CqccAVI=c=A9rmxL zDhj(Hn+%m}eQLK`pZb9!Mi#xTbrZ#38M%1DZ?JZv!{)Vo9#2gV{c}yPMV3s_m&sMw z_p#*0=nrGNKJHlmW^ZuQF}zpWqni)mq8f;fhQZd4YK|rUdcHT}5YD@9kCp%J+LBoE zqYJ!q@;E6Q;4h&aBD~6XMG}uf-kg6PPrjq%-~1BpQk}ZIs5*63adqnY(zf%+HX0rN zY;5?`S|)JWNTb6n4`N+3cNe|lSix!?B>P4@H3L5eUg>CcvMrW;noK^n==(C0MAz7t zr12%UQ-2}yCtm($WbrAqUtRu6Wbskf5fuFid1 zMQUQ@Pe&5#!IriWG2$z^MdUplON}Xtm9MTxp8ehbjr6@#Fzt(03mc%?RvjDOEb`ao zD}ED~@g(^{{j=?AoqwABz7kKa^Gn?&CwB1uC~m;@`xW2q4Lzwpxb6?LrP!aiM|bMc z^X}0t?$LF6w2DWPkB5B{VVFa}IeIpp_6a1C<>=|tX)VI^qlxGS#gZL?@7*zCvQMTe zSa#dca3sh6)x)+n_?~St2-P;m_1E4uuGb6caUnf!?vBIxXC9<)#3xBV%24Bh7yn!Q z?YRM+_}lAK{;+s4R}9{MuiZ=1y5_IBoP&tgf(%3CA1{(%eex0tpv9Kuy|+n2g>xnWsc zPV^6dt8#9z+d&gq}2jRt0`si)Ra;2)TI^i)Ytj`YQA4s8c$9sjwdfgXPi4l3MYF^rxdl3 z3T}LnNx?NPenf#XI=}tuQSszLG{%@K98Z3|40AZKhV)b0{pT%6qO;VYQO&glCuL8DIKIpQ-oSP@h5#IQDpQn6}$F8wx4A!#bi0(W5S>=-@vpUHBeCbB8sqjSW&}fqNLRu~_|E$BtabPeC z(k4w&e3FG5k&DOa>7suy@aB?6At(Gs3W?La1B=4x<8CkSY`t-1!}t>Dr|CD4PN27E z%7yPo=k(A?^$+T&4F+P`eWsMica-Y`W+J)cg6?A`lBlBJJCmH5NT8FK{|YyumDmK> z9e;Xc&Sx_fD*{vTMCnV;ny`RJ8HT_h%U(27QSVGmA#}>iKZ53DO1|gMy4IP7QJ&_^ z#x&eFSEixm>m=sxsf$FZ_>OEHFIv!Sk#q%i@7GkTX=f4^>7opaj_A7|*hdyD`wA0TQ&C}`m{;!NqnzpxOsSXO zlw)Z7)n1_OLq{G2ZJp|{b+`iS!4#2<&Gw|MM!e zt7`b3So!YA;%kLXPX8x*3b`MTT+pI@O(b(|X+JlP-Qf*6i*&JUpiHh8QcwAc>tZco zZ-Ngs(_3W*iWO0Wr3`Z8g@KLVh|@lt2+4{vXWGf3%`-!|8b6o zTlTzQ58H=D_gCDH84<%@j14EMAQV>7VJ}Ybh8#`sAf`tpOgskjeivOnurFZkR1nLh zMZ`gM>IzaRKE?X^aPoUzcSJPFzQZ+@ZpyGEqFD1a*agOmN5Q-)T#YGsvsMdHF$&Q; zZ2uzW$()hnBM+Q2qOyI>_~i?}kfS$Nf;SP~j2JO)$v^7A)??ag3a`Mxq{9F zhFAO}B^^xW`+d1=7Pt!hSB?)RKK;dm+rL@%?JmvRXS8o+tp1Mj&C=%1khNMys~i_I zu&kQ&kg@Wu*A9s#->>$D6mkL#_nb2GEyD}A*bCa|NRYUTJ8b(>n9?_vI|e8-$+6)r z(cw>2C!Y-TfY`8>z)X9JW29rr9o3rqHJoYV@8>WPk(8QxTDy8*>8)<*mOBuR|Z<$~MG1Ame z9|2E5nGsLKM<#X`Mw*n#24FmkL&@)R4Ij`t7~u++VxIk_&=3fJ0_U~t(frLuM?+eA z`FCE0lz4u&q=d@Lf%wbnz=3F+f!M%?OLQI>#jQWl;#lO5u>EM^=B=8d=4K~m2m+2g z^#RtrD$@to(N&_8QSp(MahD6w;+x@D6;3S4#|fdsV z1ZdEMhF<_2vR?xRkx;0{UP543^*f9#zNc$~#`@3mlqoS5ux;v{k~MM^{? zwX_v6y%7-7HId1?VK-F*B?|DgYDheVJ#)E4^PKUFWe)ywEmgP@xW$IPwc;l_4ys|W>S~`{G(w? zu6!mHhj+P@zwJ_P+;ER@0{cq zNvkH5jGsIsGmiLLrwxFKO;rna$(N(ve&Y0ts|};KdRp{Pc)_H>*VwR}&OZWW)q=No z-|XaykMdR-2wRdXW*U20W}PcGy2RF@vuR`{CLq&a+j^# z>Brp~Kki&((C^;?!7G`oO4W!{NoBItr{W_{c?9eG-0bA01M8BTil3Wp$4MXyxKj>- z;vC#0Z?>@_8KhP(<7Cl`jSu@~KjK6AD6ty8u~Z`-fo1#~~Ftwj1<+qE^Ntc=IyrK^q^eD8-)}LAX98BH49`D##%7n>l4a zLVCZ`QBeQPX0{!KjlV0FZR|v8!S`}i!GBm{Ip1+jFsvbH`)aU+HGeQp?8r8k^2H6= zy<@K4rStmn{oyQ@1;H72Fa8AV_bx8Ke2>g=*)uj?(Ug^8Yb@V?$q6-D^!WO-@;T4w z4uNJp8e^I0Lg{dY-F)A*b=lqnspL%`vNVoWWY2iys&}8Zg&o5K6EBd8+pIssPU4ok z%mwH)9(LRpqA=g?&tS`yBn|FKzV^=$Yj^T1H2d!Fe0QRER-sMk{(=Zy2R$ABe(dnqAxgk0ML(3@qwjP}^;=LpUk;q2tM|D{#W!hv zdyTb>^`ubQlsjYH;>#qOpebPGV8TB~nQt=A-XaFBqO#b+;I#RMk!`rgI)5*izNRe!)g9fvQzsZPp-$Js|!&0d{;i4br|#8~~_e+1m1AK!l@?C5^C zvVVnnNgPi9-c}pb0`8R1?IIJtNDVlgxHqDAt6ZoCE7ab2H4~&P zhz#LCWY#W8u4jR9Tox}U!9ig`vuy9>^KY;c-3oKwG67kPtsrD=krs@iBCQ%c;zdzM3P#2PaUZVrt*+~5xX zGJOPGOnd|uOKTl}yAa`p`2o_!uB-O3X7B@x5j!OEU}QQu(Jl2fQcajd9JhhTNHs}@ z>U3B$vCxP$fo=#>%#xv5prr6`_o?9|^9feCj0k|y2v))2^_EPEIFBF7awkkhfc8o$ z;RSNj06`@371f=)S8GC|U=emu{9w@kxhV~22061+PJ-$XG1>n1*tC>QqNHy8prp$Z zkqee3P|YJ~*`)V)Wl&xJpuQ-4^>R^0d0y(nlg-`IyOhv?x~E=TqDd6fA}VMVtH_9Q znMj$1&7d8=oOHcauR+};v_TI_%%IMQ1Q^*$OdC5U&Mh-#*MD-bs_s91w_D%sQO^|= zPfsql=NdQAfe+ccQKuPbK8N0gsh#G&jDMDtjeZ4v#^~2SSEgmh+-wZN9O?piuR}0d z;fQkT@=Dl_0kgh%8zcQ?8rukGOk12^|LaFLzQZl=IRZIXhW5nsW!z{m3qMzXxmt>2 zHhJdK=zfShE@DbSCwq!e(SJh2&!YX;>uRJsJ>i<$wf}nY$E7jW{_87wxBb^&A;9`> z|F5Z9k+2t@N-cN&VTFy@_kWM?Lj*EgGqyljD%$&u{PsQ_!|vrU=wno#bia6q_QYMK zEz2C$rpR9WjUkMdpm#k|1H(1^t5q-9hY{NFuvZaq9>kmQZ%>FLYT_GipjWC?6|(wW zMEx?VAKZtZ$bbGSmB&G@rNx|c!93VrivfjaXPs5k_j68$ZOl2(h23UyQ7OG#$QCwy zFmhqHdWrtYh)@W0%KJoRpuK)D=nS@_X++}~c;g|h~ z)9`!u?Y8I8&iP=hX=k}^zAzsA8C>GdN!fPschkS$BPo|!l+?%5QLXvutl3rAo_;^m zu9IE~UODfTAHR^_H~6_t7yfN}Vfe{Ey=&!b>CN9NY*={XCKKXV=DoQWjsP3H}Eyr*!P z5Us<*6W<-jkM(u@e1M?OuFXEI3S07}KVRkxY|%RG`7$fZy5|-KM_m6@P=k{<)F?OX zECkirACE&+^6^K%y(M|m16u!<^-57uPOUAr*+dDAcqwZPLAC*H~cJl<5FqShF@TraxN4%qfrg1jn|1av{zxP8eyWb z{N=AzzHI2Vd5St)6-1wLBvF+qLzq{2Ic=e-yjFS(1+*LVN9rX=G<>zW{H1>9@XN`mGg)n_cHI!CX3yg2Rq< zk^CW)g`fMZvqBV9`REf2pi1%Zz)sUKur_W!HZ}-SrCAhGU$y;ngcn#>AHIKXr~XINZez zkFFGqci8549Y-d)lS6x~bxd>Qlz!0~jWGuOCzst|&4Js>f|_A^@QTHVo{jmd1Y`@7 zh4AlD?Iy`5NK1L}@Y1Rm^}b@5l8jB+{s!d5@Y@(pJ*|G?S7Nm4MzwnLutUKpiZWqr z7eE|T(vc0SiEyk!h|ioFE7mKd;hSbH_>yuJsGC+%RR)9ZgA4|eU;}S3uuo$!m>K?> z?Q-yXXnMX=?64>3t3FmKto;>OCg<(!Fdf;pC(&~K@yjnVrZAmu3x6nIHYt2wbK}=u zO=~tlkckS1oZ|%SpLwz?VYx~;UnTUz7%~3+OS-T1aOZ=0wgR_ofea79zsHP!57;m?E5bhjkm@l6)mgas zito=La7V=1vk5!jE3fgvfPDbfw1%wlq9Mw+ zK!HHM8DYnUtkY$i%hDE^0`m<|N+~?9M2Y9Md=d=|ROW{vUZ>3u0{L|l^MfuKO-wwk zWJfO|GiI0h$n(P;4dr4-nyZR+oU<}NXh2V&AJjp@ zgXvjJlM*2*K67k2+{{r>kv3{!3q$^;F5GxhxlX57>SUc{3lSKBRqmb79Bw_Mnd6R+ zl)p97RBr!3(5Lkk48hF{^H?O>c)r=@g#fGc`yGG0{--c+O&}tuT`dg3>^8==pA^_% z61Z8x$}yf$J}<6Y`UM%Izpo;+1BkW%XxX<2)ANg*e^|N-MX59VF!T5jcaB^I2gg5O zyO1~zbq;)AeqEccXn>F4=ataA=C3Wu-cwcn4JEF(!FOAnzr<5>?rKB1X*!)fH>p#Z zt(RTzvoN>@0pL8?ex$*}CUYG+ge1WZKMS^VKU(gBat}E2MtbUx7P|U8FRnl-m8}|8JpbumD3|%-FUHFBl+$Md zf$4Y9N8jX5W0S6i-7?tl98t^8GO-nWuuPMEC-Zk^f?2>LW`Y?N!lD!N`p!PlC7O4H zM7>jq#h(m~KQJ;Jo;=ZoyzC4(yH2sGWy3=@Ii02dngh4L+m?4Mb5S>H=m*+-Qb|0oB%cRS^+0(3M}lFfg2y!i?! z(e!oXY3WKdYL#iJ9I9UVicpO5Y|iVU|FgaOlF1u$OdtdNThNzY*tcND!oJVdF6_(B z7JYE*)r}t^I=N|nO1C~IZ>;5QL2{&Rer5*!*Sr6ie?m6=>7@ECc7y-1;lz%Rb zpAmiFTq}8G!SIAizK7Ru@w}I3U%o%rhz}bx@;%8LWu2y(^Hl44wXTsYD)OFB_s#zH zx$|>FwUr`gQ`yj?^rz>}pZ)j3T^;7mhuY@P{-Z2)L>Y`L%cba{u%DE`4VYUnj2*H6 zr2l$;q2^qUp!mpw;qkhK#Rt~;3@tZ=PjJIVIg}bsV2qEe)odmCn)YAFrnhM@D~;Lz{29T1;e{k+;;w=;vQwV zZ?pG>vo^bmsH9VWdBN~Al=R3UN_uEPaSMG!@hW}z$=U_89+H(;Z*8-lr_NTwSt{X> z*@r{bqQu_}5{%QRknlZ}F>h|$EcQidF@QhDjmseMbLTe}^8Eq*eb3d4&Ygcrfo-$F zF?#zV1YW4+?O4};S7**4nyof(Ca*pPyYo-liXY{%xvls+GY0UR_(JVKa&z%_(9TDy zskK`A<8e#=aC^P@(@410KR5g5dV7|_J9wh*3jdFX|D8QY!@suYc=$b@c7d_v?r-S@ zVxsWjaH(GCeS2BVi(`mi5m*&qrw{z^VqT{kZOh!r?&r-^G;{x-@+S>YdO6OW9N9DU zzpEi!PYTh-765-DfLN4XY|I~lMZscVQ5v`KD1-{*Q4@@y%KqxZ@F(;uasKqmXq-Py zXcTc8!r6~KXsqYk3%T>K!k;#dmHE>sgL>_bL-VK0X-07!oI|Xn^y$7CH=R4bP29;E z5AT@qBgZ=&e-_~HNjbsu@A7Ct9e2WxqQ zJ!P0*hOf@dzhKa@C-EiEp6+QY{^kr`?`@$+{OJk3MEvPNUL1egByfd4-NEaT`4a-Z z%pVY}3EK4%Xpx}Vc{U18ZE%y}PERe{+08SLnfoaS?y-f%{hnYBX#3Ac7YsiKy}bePxMT}w z?XvI7KfHH4_2VGt>+ZcyV)o^!16J^9k0HNtxAXqvzKI29-;Ap+DA!;iH8=;_Y%q#{ z?4Sy?&DyrGxGR!EsKDi?7{xOWmuo;8%IBE-Q}%wQP{T+oK13b%|KvJmo)WH)wmvnC zN#)Wu|J0j=%bRYIcfk9ASUf(>W(r}^6WO@1MX?v)K5~AO3#ndYrw{&ZTxk%+f2ufd zX>eej(+{d$*WSy9F??q)e%*%8j~G6E^S;k2^P5+)0-3=O`Q}#^6vyBdx&D*Rqpmce z@x)yJul&yDLd~c8F8QA|3yT|~K~Gy}9E(8tsr!kWKM!GS9N9{f$J0bLeuSu|trqnI zU?nA2m(F>_V9R!K3D-%_Wec1Z zoO{IaW%jwVs%=B=e6V$Y#Q9(-LTcQWW(IHnNgHnD;IuFINTX0?j|uIdeq0o0Lxu|P2OsG!`e&Z?*ut9d z;ZHcfp$=(mRw-fs7w2h>g_FX}Ge)GUe>675f@H<{N)2Emsk|p zZ}mmG?P^-5+Cmm-iuvhQF+CN-`wCNO_n!T$b7h}vOr~(QmbI}XnLb7@-O2Phsbp$d zV}Ys>uGh_TGnejI2)1RMXRXp1zBDA$ADM!_GlRY>(7K$1)}?y8`w;o1g0m*lR8ty! zQH~V-Gq2~E3M)efEC?*EU6Eh#Xp8A75o?c=-_1~%t>z<6vPv@}KyU4#}o$6J+ z|J2lFtblv6+Tpcgg{62cwd6`|Mm&Y(|F&HJWl8i?JFb|6a~b(a%K!VzBN4cg@X`hrfn^(F?(o* z1F5u5JnfO`?7u%h{4A)#PkS8*ss}+$M?%ox%g&RfjG*V%8#0DA(ee|w8-5;iplb!H zb)aDfx=5f`w;d&ZX8-h^;HR4@9r|HNUC!V_(qM$S(NZ}3_7sCEx$I;mDZ7-rNcwuo zSq%S2THWwRN92ZLH2mvHai+SN;s4&#-SBS_$lk7!)+X9=Z$U~(`8L*;p_!Tnl-Ta z%EH;L3N8K$_5T+255N3z-4}4q9Dv+!cam#z>X>A@CYgfGrP)xHI;WmzJ(oU$ENBzQ zclk8*&%E~x3aGUvy9mFb?i9|g(7e*k81B&+ewqUx)KRUG_koKEe=^%oN5{Spn~r?s zkIbtsD#eMr+f$L?`#?FgkpohA02;eRG0Mb1{0Sl!1u?;A^q4%j2*UFcEx&iB6Mc-gZu?|{c{h3h-@43ON$$6-y^yH zb788ZSIoiZJJ#@Z{zNdm2lM`?nI`czpfeQ&5iR9{>3=VC+~)L-2Sj}m@6FUM1lUs zfqut5v@wdgH*3|DN(T@c&CY%J~1s_r%(%QEyY(hJ*3{ z7e|l(-#-NY>w~_Fxk2_VI^e&dQ}!M33-O9ocfcTldPXYx&G? zyz38Z3TN+#!;eqiHnS1H@|nL)r1(w>66SW3&p!Lgfr)I~A?>nc_dN%acaL+N)}9SK zSLmr@LX&9@30;50vk4_aDgSRBGJn(a$)=YsOJ4cL4AP7ppvZY@AqqdJ(i11fTkD0s*hA(2FnRZrYX5^g)&2+hdmx!+I(qB& zi}Ax=uoa4B)!E#eOw}e+cElB2OSbM9PNo7rMu2r_{m}u*QXl1Q zi2|7@&>jUkqd>P0EH6NpQCK!I!jI9j$5hb$cI*FmRR70g^?xg%ufHWz{VkySTR`=< zfa-4n)n9?A{ucK2-+B1@bOG(LI#oBB<)GlyH>UY0y_ z=cYvXC~lt$jwHetd~nk-;ra-AOgI)nXN3PNg3bunMbO&tyAiZDyfuQR!le;375+&C ztq;E%LF>ap1kHrMMR4L?s`qm8n>yOgDmKIpc?%vBz8VE*gnt+XYr~yUFcmJ2g7x7& zQ7{w!b`&gx|A*kNulaT!=iwvAg!^&hH|UITG78p)&qTpgxGf6ShxbRpOt>Km7Q)-3 z;ECbiN5TIR{x!j%cNenKyOZg61qbd)rp}wBU$@hL_^T4bPL&k!tDa4!J~b&|g(@op zR8t@0OCFtWe0fjMrkC52i;mIHuj=RQ#(%n~MuA^HYaMKLc>LI4_=#gL3zAYYmS*qxyM3 z$+uC|mD_6dyT4Y@P5N1{sK*JN**2Eo(OvrNk-&-@=BKr0qk?x)q3dG9vW$S~?H_*r znBc%BRsZbM?(|I#h6yAW9Vh5-r>Ix!j`bF?=MQOS8HSvdA z`IzhZarOL}Z4=hryVNVYUtW-0^bFI?>(<+k)ru%~DCQZ(Jj|CN59{siMljnB0j73a zRmBIX(RWK!fhlL3s<;in_l1Yxz=++ac*E~7S4|rP)BB(4rb!hrQa<}vf9y$M;lDuj z9Ob+0c&WI0_np9@{7d&0C_H)ndyuPkwWzs27zd!hkAxYjP=ehY$LRm?xwXges6Ti1 z?BKL56E);0XTM(y)1}WBlvPBQT=dx#KNr^X^V==_T$bVIYwi48-O0~4S>WEL)HGT> zso(qU_YwQuX}{0e?;iWzYrhBhbDlJ2(n zC#?52xSmW4Q}+_?e&Vw#{U<8;OD(a44;my>$^T?5|MQjnPg;JLy4~`-gbvbK$^TR= z|E@~@r!4;t`&zf34-B{ECOjQ0Vt1v8r>%&mRm2YlgkBM=OY2G*0$8cYGqF;B zS}EljD`mHpvN|forFEs0s!Dk_R>}*NQl7O^Ua?X{!B!WS)|E0|RmyX*Qub6zdCp3C z-AXZnREu2N2i0@`7A$w7k(t)MXjP2Hf-N(zcVhhWBJbmjCPlr_Bwe#XKM(2WCp5M^ zKU7Z~|F*M5(0_Gm;(S;H1AXy_HF|^o#UEhuzH*9#{m-mF4z2Lj2bdkM+CA|}lF`cR z64Tg8d0vSE+=uYLYs#y@T>mYNJ!EwX>pE`BKw)hML=k`;m7oPT%xlOEWlr}cI^fkpLum6RV zUU1Yg-ba=JLI-78S&kk$RP?Ro=+%dc)&@3LpVFbCe^QPfJyi6La`gD2qIZ|0Cl3|< zx}uYdoc4==a~ve#{1XYdy~PA>X)L+K&SM+Mn#OSlamQB(&mCTb&(s<#9-slUUbe7`K}@B)k#_|9tO`*2Z5=3iYa-`|Tmy!iC5 zsFkOUMID|0>RNd^TGZi%w|_;gJk2c{EYOwz>WaPY>0wYq@9mZ*LK++*W48B=*~#ml zeWyie;J%}8m&myIig%P%!~Gp)9QPTWK>U~y{9`r@AG2Zjm<_|nY#2Uf!|<{FLX>1| z)*^&#C9r3+1?vUfYC#R7J=-mqQSd1Xij4Q{vS6ozFI!M#v}ZqJ>M;bIEGLoiy3eHS z{eFUjIY4kmBR{!D zCf(~;yYq|AmfuSoGyHM{1iyosGY*|s??tR0?xDmIc;Y5k5va8f0~v~0yiqGVKuGuxa%X$ugW zIv2HA!pCgF-1-iN^xuv=c3+?|oKf@RPbAGO#pC>NnP!mzdyhi;_n?0k6)rQY{H;Oh(IS{FJ zmGpBGFQfir{^1Dyne8)w(ht~KX>bAqp&nspj?x` zOmL4eXp0@Puf9>GUmvs{lq}-1lt>fTuMb+MRN}{p*B2hMpODHqq;yFa1) z-tAwHD;H<~rB^O~Y!BfTtxjr5vRI{mV+Wb z;UY2zMdVyW`#}+xxQNb!A})6k-3LW1Dc8NFYQ3xl_##_?FR}$V3sA8@TYxXJ1^6Oc zfG=VJPT7k-1W#s}FU~9jX*7>3YT6X9nVb|q?*;Njsd5eCB7v(&Bp4j!Dw!@-#XIU9 z|Fz#L?V@78p;v#GG>U+Zpz*Xic|qhzb!vHgb#lVW;p!yX zJ%Z{~u`#LUNY%=`t!lm1TKSSj4W1)tVy$LF@Q1ftC|{&raio1Tg!NXd%XOlFS9EY!&_*YycI(SGL<>|f(`Cc)37Re&MoZ9i*`{!I zy6lTGf|`<+K}^te*%x&xXu533l%RCkcraWi4~FaH!El{C7_O5C!*%jtxK17n*OfgO zyq%)g`XSFcNKAqUoz=F|Powdtq+*Sh}pIK|iXZ}>jXYP7#dXDOM+yD15 ze6QJJaJjZ%@Dr8UEf@cGdG~iMs|mM^x?Mu8xI$;9Zx}n2C%)|;4Ns)z^6$k75m8_6 zvN)M)`H+u=*S7zuH9CH1#)tTsUAOSGkv1;* z;>^S|9=-1AflTtYyY1|uUH9pO>@?wn;k~!Tdqewg&N>SE_!@1a#t@hA8(4i$wcl3P zgp|F^Q|(jXmkk;F=UsIidyBU0s&`e6HphK2k-Y764nbKm`_$9kob{6SiS@oVZ^^Tq zm9);)mpdb=Z}{P;sz)SYhkx52GVOi__Mlp=T;1w9@rk3E`{gLlr5~q!P#D%>MONhx zeAK^kAk;lvQOw1&&6CO7S~AN|e^+LCtFEiy;IQ7;-gB+az()jrYOCnMdq^*!h1SHb=Ge#kcXPj;n^6;+ntk`z@?GzohyZYVHDAIGC1&ugle(|GFlRG@Do!~%auxtBdolPv^!~YN`xymHM`AXlzAF*mi zsD6=0UPuz>k#`L@9BB)=C=n7I&=V50r?!ymz3+Y8A zkSOfzb?*2I*LsZ)%aXP>R{P^m0Qo89}gN|~f^l`>_|D6JdU?#xu3 z2B>!CnCUb5#6BH|S+DoRPMv&cpHFjC{GI0X7$l}tTuH@k+~`_uh!_I$;}{ks3n`^W zy=YGHfpDf<0)Q9v9>FVvUv0TSJM-6I7L}G)L`u_6D@%Qw{0KN12Gbt!yUb zATcVW_3&{+BD6y=j_*KGBf-rU&gqcZWRYLrubpQyzWv4xRq&^@{Nm^z-2 zTj0pE#zSijI_{y9v`n>_vS*Zb+(Sb>p>iX)#C`>rD?7UGK{YzPS%PPW9BjvV57IAd zN?A>=T;DBjK#)|UCYwOpev7%;s=vAgNs*6o;PK%;X&opg@G%>#t|Tmu7EP=@DarVvR+Ma!ofU91Q@ z&nHM|mFNbpFN-o%oVs1b1G1i^xWt%xWK30*3* znG#mGUgS9dD3>7N3g4S6d~X`adNYkY7RCXfbrKFuYTk+B9AstoA|g7m{#$XacL zttml4UriW(xM#{aFz3>n_>?GTxk}>hQX)zUCMI+SMYp)eYQ3lJy;JWZE8b~h9$J|D zvs~Y7NCp8YpPx+4 z_XN${w03i2N^#A63n7A>*~E@)`o(;D9c>OENA&;~rxFv0^Kb)>f=qBFJ=1Rna}TIV z8VlLxDMgGDRB0o6CZ5ZsM{*j{kHfZw60Qx0Mv?P-!$j~e^o330S;X?WT#~pq=zaXa z0vlzVot2-9M8B;@**0=A1O@8fK+y1jZj0NyC1@B8W{qeJDo$w%QJOs0);4U-&Dtzh zD5zq4qS#!+BSFK%!7L6TU1QJz4FW4ftpz1PktH2er<`1Mq_A=mPURc6!IW^DLAf>;?qAX%XE_8I;EiE9v9C2tmP|9ch_4TZf#VTNq(~@ z4HY>Bebh~JJd@kTz|G`MnwmLTza&9Zf}5L6vMiIFEX9RiCh<^&wZq9?97yJcs~UqY zbDY{|IfN{|Ubn z&}FSA1&J-2oWRqf)U9>~ff`_vYht)l%&_K9E_=PfuI=2 zG@*7kHyX&A^@M_ImIjKoH2p-7-dC9(?=%5Wsa7df;(iss+!re>G1zqh5fY{tWEPYl zhqh+ZoZp4!DWBMwBZF9gu%z~L8v&oLV2D~;`{+8WwTri;+`a0f#$r*^aE9RJ6OGst zvB!0=hpvjC*1^j?bRdG-I-$oyZIsbg*ZnpjIjnL?1e+Oyw2kpVsTrQ*G+&%Z*bNdd z3p8ncw`KMV`Mb;N-BvRX$J7h#*#12DnSpqKClc! zKEql)ot#o2sQS3tGZnj=?_i@QY-m}|Ok#&31-S%sp zp-OyNeOsSPtn+e~*tjaKjh0J{7b(PU2kd|xK|DC+W`@fxc z(M5-z@NmWZ{%`eBnRwKlv@<^RTZq&L)$V-aDO-mrnC6&U$8(v&^K-YW%Hu?6lAF>~ zLb_XG2~?|M($B->^(K?z!yKcD zRHGgw+5x0V&3(spt-J0fpLj!`9`b3|^310VG(a}d*J?o7^kezCCCy&|maDwx_4&ku zn*H3sbfPU2x`_l ziz3a4B6k|4>l>@}jl@nCeI_0;ik;->WKA_jbew}H5^PnF#&qz^r$0C#QB< z0;Xhv60qgbAibCVG0absU+$onZAb)MOFDOFj^jRi#||vGU6WG2xGg_-b4-4zr$GI4 z^2-BN@{8gmq0~ibat-$d2r0Anit!7o*i;1lafdFDanl9eg`$Qru9^-gv!=w{;vkfl=%<1VVXgI4yYHhBVp-SDT;@ayD z`C(rf$&XDUIFlc9GwJ1}yG7p8|B0|AKiU&w5mifmSJZDNL86~>!V$CFSE)Fw84Ax9?++5MnXErbW!#nNS(Z%2(DYAE z=@XxlM);%>ifwC35=XbB6$ND}78U$6FK+xfIdYXE$uEA5@(*prI@210KUD9Pwjh)V z!qgAgYuh>m=`@JRy%JJ&>J<`4E1&e0M4O?xyVf91=@n?olL}8YVpdZd6wdZO$ozgw zS^TjExarZ_6iYI0jc}K(sf{JxHIvf(Aq4@cefh*51=ZwS`ZX`$4DcrWWcX|};pgCt z9zO+(MySapunRflNYGBeOgPOAjhM9`MPnR2G~3Q;0qoI}%90s$HF@MP7EhK`3GP;=h7*{gIyIjd(-a`wWP3+x3qr3CGqr0f zF#_UQ5;%eAveMt};DfeNMAjKv~GQ#MMjan|jUQ${EY5h<(xuZnSjcvGVl z>>~)0kL1&L`3cq$mNa9KKUm53K4j}@@jHZ3;T8r>Pk>;<0p~g9o1e%w-;CBTanmNmow-~tkcNtEW#my~Q={ZqL`541m<7#OS~Z#S>rR> z@GO_=*Z&%YDs{?GK*~5%ANP?V&s^~ZSrI^NNGdUDx>-JDKf?d z83IyaL70|!7kp4pc!A=*X{#U*QOou8QPUQ{TGxr^J5`JmWh?fqvbw>VY8?vW?xCjD z_LvGLs-x>wc2lsH3=S97(a0^07mDqH>2<^q3;!0w%fyv*e6M z!zgqH;m48Rseu57yYvLZiucHG_fZ|OsAln_DA8jIw`6QboD_mPu^EhlH^m?XGKI&Erjjo@thB}pBFmL}?rHNH1Y z{m@}iks=@W3L4`<89tj!*v#RG+U65=pBTS-IG27QmqzpGH07E;#)W#i!u6S{A2gf< z(pbx-IqP&y*~H?yk)>c{u36zEB1z*Y|>=ZafksW+sBMN>!sZH&e5fUJi5?Gn*q<8c)=!v70iK zQA=M0B1-b6jCMtkH{@xy11Bz-;bDbebgne2u$42)d#A`!zpCf*30p3^o^whOmdi?2 zVjwvuItkc761JlW<)^35m$ZuX|1ZKfLWmNlx^qMVxJG1yrH2|A;TK=s733d4+N zqQWKWad&jI&r=|eK!bWplVg=G@n+f{$sMqYwR%sZ{qcr6(GTyDwu9xB#Fr+YrCu-C zQ%HZQRANhHGkHDlM75M!*c@iL8>4wtRUM$LT=PA-1ahJ1Nuuoq(t0eBjcgw)@*H|o z*J-Wvg&3PL4Vfz7aq4IYrAyB=Yp{}RJ!U3B*awI(lS7}9zTYswP!huUu0}t`E(NCy zys$x`GvCb}v3CYwTm*NA^{Cc+e!EEzSRP#=yX&#o8O!rJ$A&9P4?z%w65QJ-% zghp?UFr6yPtSnCRp{k44qpCAvt(;qo^3jb4=}FOIx%y&zxn_)151X9|Q<%~>4|9p4 z+@*RkxRj-|EOzR-*oof^dUtw-MV7k}=iam6c94#g_9#-?J(9o%C`A8|(l*I;b}!n4 zkzkgsfE1@R%cC^;hOu13=G-jACZ{A*Y$1xxH9VecxZf)^1Vu_?8df0?J`CqIh|9G%*tN9mVtDDdEOTH~|aNQM31j!S8Fes#sxa>(_2 zwf+JHLQ3tm>&HJH?A;zTa1A`_?X5w>wm|N17sS*I0r%tueP6HTuHs5`S=&Htir7>v zmUXi9AbnrpPx^{ti=Nb7x4EB=?x8z{FdBFyc97~wx(Bs~OW;X`JxJykPO(Otp~8yo zsbV0-L9YMO#wn*9ctdzyx?5~r!f8QIgi}3}x1C2;R&mMO&i|0w*qyxX%DH0ZUCG<7 zp-6Z+PK=-Wpq@p+$-9*V_q5x-`YvU|Gw`)h1>T0AZ4HK>Y~f(greOHFdM&O1K2@g`Qi>12%h0;=NhY{C;v~|H zvd)FyBp%foNh6J`>Pgi>A+2Ip?N%Zs1(ejJ&d%^1%En&9N386YsO%#VkruY5=iRIT_=|(Q=E`bSYS&y6a`jC zfkG4*Z~-Gfy#BhE9Xk;8yJEuOClBCG$J-Ez#6zqG{muy>d}_?cmK58M?wDuTALTJ< zl!tTM*N|Lg6-cGjiZ}c1#pIA=!DR%(Ux$6Mz&oe<%fIg|;sYq8!#NioyX4VI3SSQE zvG4*bUm75Q${rq5E|{T*e+t}SJQXCGBR;8fw zK{EfH&m54M`r+?*jIYuVU)5CvV5mSa9Dby_$wLBOPIlK^ySpG$RrYWCvNKUzcUW|Z zjPZiIrWLIC@O{+@f+@ZnSXYRJU4)os0u!+7%CoPrDyjUd2u}a<+3>KYeNAq~jm5m%u+Xq{TmM9)f?k z`N$0l^S*U%;T;z43i{!lq3%CZ=l0kvKVVUCcQ^uEpI>-wG<0FwhxE_yG5`E#=dNtu zT)IJ3Ia)7$)Cy%OVKR;Gw=1D5vZoi$bMJan> z`XZu54QGErc(KscyT7H{TfZBFgzgEcc-uf+v@YY{^qp$MBSE_33{PTZcAK4wK zjv3W4BSgC{sH#bDqu zVD3{bdN%~n+34*8hN)Yt{HK#A%YXcPH&pe-sa36${BuiV2ACtk>r86goiTE{)vdfC z!B%@;>GWE?ueBs^*k+Yj=JY8{ZtbL?U+}7k0(DWKDGH2{$I@tYSU?k!1y)6YwNYS% z01o`*t)X^!h&%1PTk`Ud$SE8kksV|ZIm3oS5cO=i_8Uw;npH(&oAci)av)VVu% zoIWpd{qK?MKR=7-^f>NUr~M)ASYO#3vUrB>zc#Ylx+`xVt!61q$93G_{reyr?h?>O z=l@?9{vca{MgIR)81fXW`QhTfg+9IiKf!?t8;Se>Umqu833&)_2+8>WpLJN#%vg>s zQFhw;WOFcUXHaadwib&1d$<sXp-7!>Nq7E zjrIvh;FJc2u3(cuy_D^fq>%H!(?O3|`Zjqr{BE60Q=vtVdp%8;MPr{6wC{`9=g@*! z3T#B<8Ub}aMaEKm4uPL#ucg2>-%_lask~>%_o58LNWb=^grD!5$FwRD#a9O+mD z@qRF?j#Z+_FU}h~$HW%MS<-W3DN@*4T4xSz^(kzbsxj$CEn_N{NV)+Pqow#-8`ahE zs*~a;dFJ{)Mf30|G5vUn0u?jLvw~0K0YLS=%EpT!pH`zkC-d64P&eSA8YotR^MLkH zjU)2~Bds@1qQ5~oBE+zY;Un$B8ue8rrDIYfyp3>`2dUn;%Vdj@`~H-QPmGGBTOBVW zh0}3UYxU2@b%qCr#8uW~2rqi_b)Ui+JgmM0KE+@>#dQDaf={$OmdNo<_nB@V-(&G^ zJ4B6ISKbU#>r&U+!)2Dq`eh^$Oc44@i&3Q0lir$Wi&%7J|~w#V%rsz`gWzKs9PFE zhXOgO3`IVUmLN7G8zaer!BK$=B$C8#Af++nj@e8 z6fv5w^(j*E6w_&b(k3}9s(Sij;xs?*<3o!-zh0HCr{~R6+ZgenPch_6P^{;W%YD>< zj|#z;Fk}TdHreBo6nqkmhG|K z>q7<6&uf%;P?v#naxpPa?F?vD5}T^AuW1%EPu&%!`IpH}qeiv^Qfbr(q*3ERV+3Uo zM0}FCu2gOS*`AkZCT$m~U3!hk@l^i;!8M4IQZCU(co`8Ikaxqk9wEF!Ftn0Ig1t5>_+u;XjOlH32|h88xNllgkO3~AIod*r@WM>c? z7NbtEVF#fZouFRTQ}ZSBp9gi@6Ayo$`NX~c`vGtIzJ{Loh=!&-hMDHRM$_^8oJRK`aI7PZF9R7SO{=vq};{K0J0(1wD5R#!mc4;pkCpJc=*8Bqr~ zn|Y1(Y&6kgs^weW%e_`Xtv~d{%bl`YJ*ZRxjSjF2Etx~XPJ3BKXTDjgJx*GkmSHwUzj=K!BSZvMSM|={; z)}sB#ZfzNHG$XKTj^=32qsDPG138ZNs*vwE+NHwshZp}StxTr$t|d8Z>3n*ho(NjbLr04s z-eH2y6Ue^@dLOfb*b^X&di zzm!eCtj)&F59`CQ#XJ2Xor*<^cgzk}(P$}!dBwjwwuna3zX$elJjqqOwpMM1E1Q#0 zB*9hISQI~^9;Ii;dFIp4>x*L^G+6LLNoktjv>F-6ae4M3YAAOqmdcLn>9*c=c+i*wvF9hB-XX_yl3SsU zfwmAW3TKj>Qg4E9Cm`c{Wvtoo?Is0WyGhNiEv2fp@^SKxKxn`eEbfF9Sw>MP4s!Zh zJ76_I(}th5HEjqKD9SNFO)>(tI*@JJdrAidP=YF%O|$J7CoLtD-xiq(+Q`wee&OIHRKsL`U(oUO^Z!5d6zP)&f%)~cX&g$)BEb(?KhTUsO`C1_@& zBCc)(RnZZizDwLh$G}i(cn|*lIIE>`7eWLT3>>btxOKMp_aGHcFR21`3gR@UWrB4L zOETm1Ffg8WUII%p51JB4rzWr+*FadxtgQX|QjG=KfroFS`-1h4DM?!Z`13++k}aaT zVblR-OCLOt^Ay6{JKB^moN8bdu3cG^O_f#?UGbgFfjf#?SV z+1Ur(2BJ$0v|FZ&77r@elYwJV&j>S33hERESU4Q2(lx7moDy&GWG6!Q)8{$ z!rR%?zS22R_ii&YX@|id1Mc@~^geE-V=T=OrGNSo3+sSa8A1h?pLX&7@ZP7fgp#r~ zN=dZBav!qf;6Rm-2dSEl|A^1g63d}*Jcp{P9D_W=ulNj2u?z~wGj#e41IloQ&rl!B zpm01xhtIHF8ESoox>yE<;~Cn0hJrFY@|3gxW(>H-+4+heP!F~WRJ;)HF$mIyarE%J z%!(IchGgJ5c)h~*o#KUPWxd&u^Zv0K#+*UStQpR@>>!KgL^su#?k6GpAN_^aTWgDFwMXL=|^GpxxQ<#%)#p|FNZ%^Ud@2Ab9LDn7vo}@1p{Hu(sM01 zs?ncVj3C~wVH|3@y-}=3pX=1KVsEsxPJc3GD2ER!g@jMDH)@0`k=MkI`9vX4vo}T> zTHe`v+hoJrTE^xkjxn=_3{sZ9J;c)tg$5lJBL!+Aa2YKHpH^Zs=0iK=0U=&^K*GIT zGBq2qX{Cz({8>yr1hWXkZl$kvhQv@#LBKjBaTJT$boKb4s$Qkp z8t~n;Tu){RpCY!7>hUQgU6oTzUrcrRMBTAOTZyMQ|gytMCt-TaJ@lHnPb(JaRU;osY7pVefb9$?#nwAR2|#KhHXRYz#i&P#Dn z4-zI=%4CZ#`7bwF1R{Z|%t;nZB&!I5t?ETEt?f}$s=BdL5MsLZq#J#TSU0x&6dmyt z)4MU_6PXz2i-~t*i;r*RX-r^Tqc-$iGpVOY&>tzGmWZ6y30{bGd;(!pjdcgsja#lm z^vf-7XNglPOENRmRms4-4mpmCrIXt4Nx%@`;r6B^_M zVc2ecQ+Cu7#TjZ6jz*}S2-e|@$wIjjTe9g_6g%i+4gY-E`Uia($ZxVJ^oKmfD6MM} z4||Jat&bJnIV(VDlRzr%@^s!XAb1r~6)Yv*A9_L!K1GbEx_yeCc#7#n)!`F$#uCMe zD)8~`K7NFz3%#rLbgJr^ zC4q!hfr60dw35~>PR0}}MYflMa%&bi*I_BwDvyaz{PA6%;s9DT+ zxl|Ua#E?~jP20p;8A#shYNwuX)XjF93TT{+B7||PC&xqBd4y82R1v%i6v6w|TEXYC z*~)n(ph;QcbUco;*^x+{`7}G)af%bi(=4iYH)iTJh8)N9t88cDc4LBB4Q!b-%{V0} z&am8rAn{fM;dh$nZ}>&hKvWTwkPhC7Nx`H6x+g^ zboCiOlZ=Y&5LoVngiNNgcKuKIoVGL<6xz z@j>71;|o6C4R)JOT76W;N7+cGgIy9E(RDsaeN}D~yJ~z?tv%gwULwqbdPX~HBOc2# zPax;4;RkiD$R@bGBAr$0qV$w7(PbFMWDD-pixR=S0b8S5AdPBao{rS07O1lV>LIAf zz(f7KFiKA-!w|K|RwNC5yh}vjY}syrqphoe#w{bdA@#URC1#CpwCsXcvNZzV&%&!R#lb!WCgKm&NT*JuHqD>OC;^US}nc3bI=l-Dld`N z6}6Yaod86;z@VD!I6_4R0@Nks@|A)i+3_|HT3!JS5JbbO#cB&dZ+gN4q9pEQh(JN4 z<`!?j%J_FoPfn5U-|MAHMWISjDL^{T4OEPSQ`N9Qy?wWj0Wv%oy6@MbWwn7=G1=42 z%-&cs;z9K)(^-GkdXN|tpnRG`j6k|UX@@;I&4s7mp_=ia4uRYb)pif+_8@9q=RvFN z>1KIfi6##kwA5xJs`sD)2g;}StL0PlsT3v*2G_l|&3!FUlV0tKj!Ajk0bV5!smTCp811t_q~gGTL%Xl7CO`_FY4^cHhP$s3QW-o=57W2)CMCt6>gvC|TmM?8Xh^kp2+IRX%dHi#%xO^q`L)a`AD# zDD{P3QQYF!fhO6G(g)&QC7zlC>BJGk8#?&Ni_D<4YF>J`ooxc)S#e%Fr76lCKqeG5 zSwfsv9M2L+Jj?S2@hm2=3iN($DsFx*-%O4}$lMXrGVOac(=yOFxKv@|R%ruOGc5x- zo=90fRhqA|OZrl+wjPxDQYEK@4zaE*r<^)zD5TQ4B8&+hFEVn_aY3QVAyq*pm7ikp zP?|vi`DQbUI0?sCS*OyL6y;c3Owu`s)v2f8k5H*gZzr2M%Lg7guz+as=XJYr#^-mn z_xMy|d>$mmmoGkMYWI85PUf4bEt>jB| z6pg)$iK;$BdSWa~@4*Iw)>tbLCi-z3id5fp+#1C1I;_$2d`K*bFlnyY3{T0%~E zqDYSTs~9@qswtt}88}3|%G{)667M)6z~`*DoVI3P>p_ln8fdi#8PkS~vFV(ndg)eY z;22R$sBeoUV-Gsdyt6T7Jg7q;XW(e}pzaE&Q^AUj=|H}j_A~hd7DiindhLG`K}8Mf z=@tU@9yCw^)p^iz2g*UeI^t*28#qL*8gK2Yw_7mA=yVbkBm8Sdnlh4Q*cu4A!ubLk z%8A0>S21K55*!uRDb5)%#2i#oEj7s|_9_@>=l(b)$NX_%Q}3qV%%z{xX$mqDn3a?z zjY?PMKq)}AxV;y=J3OezGMg;k?Lo^ONF7}um@i_eT5l&Vfnr8FvnpVrxSi)T1IsGQ z%(9#gP*7O+ARQctEou}7XM#9jk6Ii0pmtRSwQk(Q-K;a*=>vvW9JB$M?U|r~A}fk9 zgBAlp)fCV2#*V7SFagI^;qGkbl;WDr)YL){2L^S{7&(KYjm{=P<>W?{g;F)A-e8aT z<3~$MTp?s(x!bUBt|h37cJR!~ z&xHD8A;##uLtqspOj_kJL_)%&9;Ct~=JCN1ft-EXO}KDH)gb{_!~dC}KDAmPO#<+D zW#D8*4I_fG!q6%S0XCArn+2`X1*I(;OUL!bp>|?jCV+MWkg!-pxoeqhrPrxs)L)s^ z$Evhfkac*FDxFW;LB#C}&Mjs4j%Az2-0_&%A}6QapS9B_v_XWkG9~>4q|Ej{hWQ7t zCc-)oTx)|C3p?{qlcm{-`3JMQh08~ZrFhjpz9i*;opNE{5tzd{gW_wPD;aLy;h*^oHL(l|%i0oUu*#C5OBufGGfcVKSRE9OXRsELp;H-J zeTK*Lu3H5W)&|q z1CZ6&8-T1b#S81z=k^_M02);>OE--10KIL|Asn^2xb0_R?z0D*eadDacE-kcogVW1 zP;51Iwxz7^tM$3Q|4ub7Mx~i;DxW86z6E=9s;KF*VN-jz+1a5wQ=T(X$|tqj@uCpN z)@<*#H}l1(vb{Svs`U*_j+_bkD1YvdQCTDcjsj^CemSuf`;t3m6fMYN)Tu<(yC``W zW*c7Q&<=mrXuTrqe7=|MuudJ7!-{L;f>JUY)bKbMOH-f*Xy{oeb(DRuu6)1It4R^u?k=V#*#|Yh%RXpNMtrxy zSK5*;I_FfNwa~a|8x8FfvCV%KyP=}Uzg$mmk8{?tS}W1{Bj`B&wWM%c|6KekF?g-4 z#IB1QoE5Ifp?jv@>GrV$dSX`8;b{^?vc*TdS{jJg z$j62RuhN4JSV|^aJz>Z`MOhDq?Lf6G#G|W~VA3Kpg1e*Ko=>}T2s;$j$(BXBjGcnC z0B5Uw5s}=vD$_hoMUpKvwW_&!#C}d$)rphh=8o~O%&;Vmapn?_+JTgiYPUAJG3vOp zXCvlZvl3p=*pf|*>cAPkTJqlR5=yF@o)Uyw)#*voeTs6^@hlSdNl_C|QQdmjnol&T zr!OWlv-+rUi*iS{29zb?xEq*1Pg^pSUxbQk6f1fXh`t<$`~(t?ya%HCJ`0WnuJPe4 zr*ta$7&!$OzWj1bC{*$&iAd2lZ)6j!Ixzt0=&1t0Z2BHkh3UP-yOv{}AX^ilmQhTD z;vY;V>PhLxTXG5RujNc!V1@v9a^R>cl_+twmptSUPF4d5bXd+xe_j)oO#}jW$X0c? zbSfz^l6-{EED|)e6G^6u62&zT^*+AI;;}l=qM+~UdPxl#3wt@$ z*-%%JOtP{1${RLZUq$vbGk>fyB$_gOIY`%pX{7DEyxR3Co!AOk-4=z_!wN^|@{Ur9 z(m0ZLo)g|t%tnJRLOmU2lh&|9%A#&dxY!vq3ZyXYz+ze5ohCro5o!H^}Wth+=fS`p|oL>GLtb)qu_)(OPfNsg{+ErBx=*g;2byMwmP zPdEIH3CmTyZ$uC%ZPdET9U@pwX=49MQHrOSPHC%rqSdiPaY`HX@k18B!c!VT2n}pC zN^{&mGE&J}haWaeJZlLC_`c*CYA}a1mr#QiLr4as=tJIf8Uyqv2Q)tF4Hf4t=~tOqYxilOo!+0OT2POOT$KoDL7&WMx1`JCV>6eGE4}K1sdR;65`AdC+p6S~@l9 z=@!p*9;D%-Jt4wFWTHV~X1#`vgjm^mt?f=%s`eXs!flLv-547%@?lSfo_xZMwSp%q zqgfp)2H6U9h_Tiwc-2_zu#|`ZRtO3fOEK&wTSP0W=~D#p6w}9Ai%--VOJvt3M28t0 z{O3EKSQNNBuiR+DzUdJuGE>kfi%t8n@VM&X;WiWauno+J04cc4<=vvw_h-s-yNM#= z@=EFkm4n-u6em`9YK`Bfv9*Ma5{W52@vw4Y8%uJ%GXXd$&)zW|Xe=qp1(CHmozxsH zIR#Opj!T&))-=Tw1xOXcs z&EaqtwFVu76^fUro=B&FT0AJw(;+|OK^+bx(XEr9t}&Csit|(DFU*PQ9IvjbFSqmv zB6{kaP#pU_sGukNZ~>(}sK-+L$|hG2wYE6QLa@c{U}=kRHd?} z;Y|&=n5JP}b}pKR%^aqRreR06cl&{C@m^^ebP$Uv9K5mt^`NK|ujE?3pns?wI2H?) z!z2EpRwM#!dqe{E9ea{iJOYZ!y(S4DB z@r8AKcIocbD6FJEkp5lz1ABtNwR%Sd#XL5qO0DImhLJ^L`onzfaDHX_v-}%fye2=p z{g{;yYhR0MYYgn@es!0d94>O}_HWXjDGOUun2U#r#R5bBQ=Z!kcbwfRn`-m{U#o zYr4cIRM>!?R#WL=qC32Nr1+6{4dxm!Kf95s9(c~*)-tFnmz(Mfu!)I;qiVfHT03=_ zm|I@x(X2@wb9rRR%mmEu$@LaZr`Dso65vf;3FlizLg-S!TTwk)?g*Eq6BPh;zpK+Q{xsxhOgbGfUGhPm!hz*uh~tqMZ& zA!}keMY-Ep9QhQoS8CyJWlZnC9-pWXOBCoCf_=to(TPngoP+>1iS zYGK@YQPlZFGNo2}b6TP)<9)DlB_jWrp1LcW8!R1n$g!1-pc@PDej5w6tIzeW)1T@1 z8B!Ij!*90X?@y#@vJS^SM-*q_cr}J21B%o4bbs!?%GpkSzdps;Xm)Ch61}Mk+CY~! zVU5=w(q`*u+)Qi;nitxT2N^}_CR$TJbg2MGE-cCX(f%4#(qUlfw~c*W_U>FBIdUgo z1R3}H%|aPb4#Yb}two?3Mc&tN(u3UaU~(r4zeVpfIihCrarLk=iUK^jc6!jLJ($rMrI=QYEu!>xVe5bC`6Jqo!V&ppDQw+va{6F5_Jv#R5s`HeR05Y#z zA_3%1Ldrn|i4LHo15^mm<=FI8wWXed>kjI%CnJ^vqv?2NG;Pxn?a=6Q9a`1bw_9sE z)2-=vdNi}{tkEBLW~rImZb3{_7vEr!2UH#;g`G#`>2hK~D_OMVB;fgczkC1m`_+9I z$FR6-U7b_kv(NdR$3FY)bIv~JT+Xf=NwirZs*@-Bb;Q8XA9mB_Q*!N6FML5MP z*@)bUFr;1#VL2u15u~_c`i!gU(`+05-^$S7|4_$#l@uGU1jz`CxZ9>WzNX3yc{dj~ zA9sb@)fK$l5M6=g3mdhtd|}HN{UDnw?iaCgVv{tk!}2k38puJnW77|5)J+3Og^HfS zdXh+@o~KNWK#&_fd8E1_L(zHISS2WLhl_r7zYTDlyt{r+eL}2}5u-mbVW58}v?VvX zbSI%c?owPzrVhD;Mx43jmvc+ws(aQHA#8{b6Pgl4@=Zl#zauiz2sfg+-*{@eK z;?OSn!gWONn=kV#JN1OTmv`!s1nF3(9teShhZeDDzClsx)CWn?uToszsrQqpS0So) z>Rsa}QA21B@hLmeWtWX!xSDCK$#ozew})c{Q74I3Ohih@{kcNaOrn-tYWJ%BS?ddF z7IfUHAtlA*IgN6=uX=>#CP+(du`E}YxRW6Jx=mJcl-ND5<6##JT})elY}99++SgFHbHy!gmZnvf(O3Q=Lk#4qK(=1`_Za>+g2aVnu1yT#UEk*_27CZ@944STrC7n#^e zXo86CN!B#HX}c*j=2vrg+rKG^qW_x4g`jMA-<4{@6cmz`HAU)<2(O6ALv?5ZkJK3n zyj(&KGkg@`RpB@gbUZOElwn(gHS{ThLd2LoL&U%ys)1nnrpgq?>_YMCrkOA>3<2|? z1xz+k2pEQag^xg?YK;3)P{a13?lvSSiXYVWl*N z5vs9N_k^HHy7yuwvJ{4;F9%_FK>&npy~IQEogrd7#g z<2CFD^yO(^Q81yd$~_9#|E?{gLqu6LVNjXlF{q5XikzQ?wtmx@Y*9o4=y1;_4D-7%;~$ME@`8N9ORrIz>TO`Q2D*zLUM zr()D5G}$>q;5`^8#De`t{theNqQYca#;nD0ub#Su*zEokhU}pWipStL9P?aUQxb~v zRzka?5`<`yw~HO`6Bt*Lx%QKfa6^<|HjOiZ%KJJ*d9ra;ULXn09J5yvIta+7yT0Z` z`C}}_Mn#o|0NtV46***USc+ujEkG--ZpfX+`W6KnZ{8TPsxHY5JeW!90eDmv!g3d3 zN-Q2bfpLcvxl@^jAqS70t8x5YFs?f+mwmeN+|p1?f^KCMSkC+F{7`G?2Hb zC)tN=3&`tXSj?ehJn?R8YSvuIN1oBzaZ;E}JE^D4Mh~eDl&>`3R#M(8@vyM2U$N5O z#49FSk*h;UvF$9bSp(86KCFjV`K1m`9cTpc?t~V`Rp|?aDWIi9Xz@+CTo|o};jW&c zn3CWiqpd}rvq5>aC5C!uk(-y9sB_+*_B7|>P82Z{6EagFD~Je3DcLD~EeCEw3n+)c z9*`}0buUQ{8gs2DDFbp^9SyoJuu{3({~MFXJZ%6@V8k@qfvmeDBJQ{ z(&uyE-9KBL|493Ipj^7%x2kMHhD9RgujjlW(mp+4vj8b>TpI_uH<34?tSH&?_LB}j z^)GKfSyt%TdtkXQ|9hCfwhCe>>YJ~NSu&W5K%?JyX2=Z4WtYw59MVQJ6^-2W!s}WW*!nPuOk@DV?5x*g()ei-t=N6BsEl@_#66!^iF=9yj~yQ zjUSj>ldYZjanE;pz=d;#zzF93eZ?ZgX!pHws5#0!AKcmXh9{qqZe`5K^K0OZj= zzX15T;}-yV$uC|2>=du`wTf5zn#C)9@dRM`@E!~r*Kx-yfGp@!Mez_IhLiT|Ex-%2 z8}@$==Ekz4cn)x__|R(cp_Sr8S9uN)+dU_u=LVzsiw~*!zEb4QQ z&MzCrCQ*D5RSBAFeUxs9u>vexl&)q!4<|B&h_8!}iml_ZLllt8M-TBw8DsCa_~`H% zK1vnQHH%jjd81LEu&79@>Ru|q8hLLV&mntNK>RJICV*qp(4w9f9rKG9+T$h z%cspOqHLdjEMLCeBf=A_DmndRMK1EiF1=&jICko|e%44Mi#^T4)4`K(B`UCZD^cP2 z>nC_OQ6!EuQFv;Fr(Ssa)TL=usrIPW?b#_jdxfVL9##cSuu{lkWVV= zms&f@b8+-<{!KN2M+je0P%0nClxOerNuJRv%vp3_h(=%f|B83;5M;;+KVoMJ z()%!h+M`{KXPlm&kJwcc&?Ac{GGSFri-Z+E`nSgkBRMf+cfzLVK1BQ8lS!{c(qEtN z16Gqz(ii@96K%D6P?pNT7_DW!L*t?;ySdoTsAEG8*N7^nbZ5 zqVw}}MJ#8uh($e|hrD%G2L-YcMn4MaK3SOfg6mhWQ7TxaznP4^IP_vI<{m2_4euY2WJASAVzfR6e{&;7`&-WqU81XM>k3aoaW&Y!R$fOwElkxL?$mdnN zR;Ar9kbvHYbTmeeHSzy6GAXWC)ccU~cMLZX*D3X|-vO$K)Y0d^eN3Rf^UKeq9{c^` zgLu5`QxkN(Q%`vOLb&efC&JY(!Zmakp1^w}QVjjVf3G6ZT4!&cedFjHxzeI#G$ZD} zTc&@B|9+SM{(%4fg#Z3MZTspAiv5z&&nxyBw7;#^Yv1z=->RWk3Hgc1?~f-Yovl-s zl-p}PF)8`cdhH+n@^Gtp;(_0J`rzW|WnZ`?88zi+E~Edv^F?FT^#lvAg>Ec&@$8#s zhfzQ0l)Y0=C?gttw&hYka$SZu`0uj+uKF(u8c!NZBZ<<#$mn)dwlx;}VWO{lYBQGpg`v*s+K>CxzDfc$OvZ)@zW%F(~NkIW-C)>M|-=rixnpMIy3 zr>=jyHGg>GfraMgYre6$i6r1mR^RgFsT=%M*hpZLAevaa?5S5Bs!fG~p+nM}nuGI1qc$ggv=5pvT zdi{yFeS;|yfsOn8rqmC5NVaFAK(-3cPT|=rJPU=VQFvN~XSwjG`#Ql9<+A6n@Jtjz zwZc=!!>g7M@Na`M@xBB$+)DPxc%Xo&g?>FFUwupBMi=zY%_YYDVv0#=LO! zng6$hizhJ0>bB?!xBW1jpYLDdt#pbw<)OFWM;|^>?H-b>%rXez{mVzc`V7+Hz3+Wi z?_Ykg=wCPgq+0)psc*%he@)1xf7zuM)%06OkpHKqCe}yaBC_N6FX82H7QjG208d~x zJVlrP_zBF_q}ayg$nt_F$fJVdGwKhuq-dJrAFyD+Vx}pIryPgh6kj>QU1SkP6Z3&7 zidQhVlVaZ#zsPKzy;4(fq3uv#=_JLPDgHZ7P@bPXFvX~NN%I@yD-)tT^HU5t?2bdB z0!JFFqBt|HfPDw}txY|mX#2&POrU|g|1{j8Ua21$-tZ%%_s*`$eYl6jbHA-nXqQIS zc_8=9NoQd%vXECPuKE|uC>JJFXr9WfXVBbOP*iaS&EWDvrt;-vBi|DlI^|HWT3133 zvw4oxJe<89k2}cFp+iTPg&t&RUvB1BB(B!@_oY&k3-atlHGcSXQ#} zYR0ZQ(>l89Y-w_|NcCxtUyJgpS+;VPy1eXYdvLG0Pxe&B%cRK7+q6CVWTBB+NJoEr*(%KpX({BG^%oLt6sX&xp6Hy>g2iiz&KNBi?nuQYvr`I{$f1QY zyQ2&`R5g$hYE|ry$S3O0Mm=YbGro4Tagn5etko8NFR4Mv>fx9WO9F8NaU zc>C9qqHc;Xp6#m=j-OH8@GrKXT{W~9ZuZW#3|b!xGDoar&?;{BPA41r>SXA0MwH-F z@hc?FBxxmygG5p?#6prZlEl0+o=QDQ=90vnbeyD?Br{23DL76tkt9{B~nj!I@WWfQ+asg=G zCViOFIhgO9nJ=%Glt9wvnPir)MkPxL1wTHR{OII^RWYd$i*mncSTeR8fwPz9Kktg0 z74^_3&7#6m!r)SdLsNZv>`N8MKBgITM2N-SUdbRiqG_IK7saxUy@|@_B(jmoSkbb}-U6=dmFR|t?qr-S%QVz=xo$)Eh!MJ-z zXp&_IVQFFa+^k5jOv#fqb3!K%)Y0qkGF!!l?&gH{xiIT1BEA~dxay{V-ycgj$SgF>Co(577SC0URnW-f#D zI<}T_3MBGm3C?V}i(n6w&VKJr%i(!Tv;=vZV&+OIMBaP*ysCtwgsAq7gd|T=zDbTqv}oW>VJ3N!_n(FU!mN?Z0Hx-*;5db7 zv1|@`axE_v*2|^{DZ?razf&xSwuuc8$*S)>4=_-K4&YE0uBZ6_!yOI=PO?nf1z=h}?Dp!4t?<6pgOHhbj z2lX<@W|uL6tcc#d4BgL&p@uo)P6q8}P{>^eZDr7Q28G;p&_)JrW>Cmo2d!n$dIp8u zb<*uP&cGM=_H(P8ic_c(J ziU@6xlZTMMKK}5my)=`oKE)Xg^_ps~Fyp+Qm|mC#{AQ;fli2+OS} zv}czSSDwT>Uy|K=Cxee~;guNIge)P+?tExs!*Q{;wHRme=2e_I$0-&7&gBAtE8WsL z-UN7NFO|MW%PI@Y`4L6PS0h5Qa~)WjmAIVd--oHZ16dKE7fIgX*2nG%w#Sc=hTT#}#01~G zwUd2Y1BD{2$c>7>_uVl2DX*#&H?LJV4y% zK_|y@O+u9q%}+IOQ@l<>F%F%dol{zR>Ify@LD=p@@>!-DsMPaGlc#(M6q&!Y779(T?uk6&4#M72>k|X4yNMxL@R5XmL zRw}8ClH^b>BpOaHBN-%#OyfnOVf8YSgCyxEiH6t9NcNMYmn0fyFC*Dal0B24@6czp z5>Jj--PtJ#5=AWqq~TTr%329^_4|Mm1Ix49S6VmvcR1@-& z>zRb8*0rSC!_CzY4b__CX`1D0gAhePIpfk$tWi9ieZE=sGm&amuBR~xz^AVIM*sDpL<9u=?MufB-BcX z>K$0HV2uvs=hIo8G;}VfoxG_2;Or=&P#p{n6WUcoT{q(?hoQ9!LEY783VW^cnaD)e%al{=7>{Aj2$=lrTKP?mg)I4XJQD-T*<$&zb%Pr0q>GjR@j zkWi>F=Te377l#hwB%d--wzX0AjWgm3?$V^oBuH&dL0TCa3J$8TsiLYJ#FtE6&)Ntp<>$o4Q~z~)>eQ(2DKWxS9&v@e$+ zDOI^Gy`4cj86;&YgElj0D}$s&WsuFQNN^*ADr*s|8EY+rq%>u$VuFe&t8HSMr0D zCf|aZ>nqP@F@=&8(HJ0hGSTJyw1V_D8{Zi?h)XC5$_z>kQ=X-UC3KKbqlBb}xv(W9 zHB6Ayu#C8ykW@=S!2!!gkt}eYGSL?Y#(LL5LPImGiHXywck?q005HorI*UCA6K8l(k}^ETPpB+DvFAplsWw(dV#| zLo3#Zn~h(1r4-RAmFIPZ#;xWz85ZNnn z=~)A)}0~~iWo{GQ_~U(t&=sqfU<5Uh^yL@ zI_SNC6GLSx#MaU2b&1 zMna*yQrAi=I3o1g`|^qtZr}EWY!gIKnf9z(AkM9>y7L$cVZZHA;zGSNc~MQe1VF(xhLgYR3>jVC|q5D1bstTe3qPQF_= zMo$jBw#V39U8Ou=6c*l>OUe_3kE_wWq}VgX70Ya`E|)`G@JgG?!MAsjo`TjG1QP1V z3$$NC+X)?&&@iDUgJnjn$xFoT5(;IKYC?$-Ra{XMDqmrvj zCdVR085)Y^eX;5oMGOTOHVZ0^UGW~>F4;9Z;U+upC)5`d9q1sTVF?WqIx3;Vgr=-O zT4Glh?J})UGhx1xs*YEg*a^s&7jdQ1`Po$g^S(4_Pv4pJ%H)o}1Fylxxqi8oP^h4$ z+Ds@^P(vFDg$inDJ)uxR4Xq^LyB}Vf zez*KwL~{+lIAMxZS;=!tFum8Wd0#EHtk1>OkOQaAaR5Pap)F`3QKSM-pXUDi58vk1G=bpo4^lf|#`d4H7ymp;1CpB%V}9 z3C)yHEk8Y1LiL0i1w=^(nKNp8k#2_`3-S4f+rSAJ!uwLpu&YgSm z^JeEY{8|cGAf_&F;<_N%W=`qEOSkI^h!<`roH`f#nAXqP9!Z7}eWipBt?Jo0dF0S@ zvmJ*T8Ya{#p+Q2;fXo%Vf>~ToHsN5pB5pE9EulF zVja*BC)W+R#n%j-vlY9q@cN8Ot!13{lb>kMe?-I1hG^z(`Eno`h?YMEq@W(I-+N}$ zEQ9t%oioXV_DX1&&~6D0651)DenQ&;nJcg{;&BEnA`})&51V-DWmQI5&6q2=W|U8w zIX-JfxvHOce|c_#>nMo9{7dQam31W@<4;dX#?7D0@@joeZj3{ngmz1)mC#NJH4@q` zp@oFD0$Q4W7t)cLtn%W5h3;~sfiNV=3SLQ)4Jn}^N!AnE5)=#*N;*^X6539xy%O3@ zs8>MjW*EXg){wd5zz`R%7@}jae2Z5VbcmambuI|f9bXm3u`C`b03m~(HJ8!W?DCsZ z=e1_b3DpIKqSHxeri5AvO_fkHp^1Q&rbi4NFtM`dJW-QJqRE;>ZMF;mQsa@ULut}H zTaL}8Sl%lJKpH*=3gXhS$tRY&U)9sXaRFJ?&x^Q-CeJ1G`WW*7;&^Z~3k~@t7DDCT zl^24#a~yLR-xCcxXV6S$l)U#6s+ExDA4*`Vg!U4e2#8y{xb+lasL~%1me+i3n5@i# zikua)E^n|_%wX7G0ZP_7vf|G=fuLZmn8Cc=Gnj;C2o+B*6ja-ZUEVd^aQr2Wj zb+x0QcsXF0(6*ppu|YyxCDc!7Ga%M_7>l@hP>CvUN^~R1Y1GYxls7TLIziGg;j4{= zlqKyU!(Z$2UjG@{9R{mWPE#?)D2UriDV(6ZY4d8{+(Y2(3Ev9>o&~xPDM=o&uS*Kq zFX!-Pzg!hM{}COPtP6#37gt@@xrj}nPC`3!5wTFU651}IMnYQwS#WU!q#17$teC^e zOA2!)zc=b6CT@q;%9#l}2w{sWeqy#X(!?$9RgAf1?1C)uJQ>Q!vLmw5C@Q^XbH6XR zS1~pVh;1%YVMJi)VX0SJcwJ~*G*EeW3^8+(8xmq6p*_3wO$UYiN~o740|&Wt*X4~- zLoMsOLqDKiKP14KA8tFwl8$Kk_zWdZ0njvb!873G%|=2~qSED;UtsHrK~OP^JWfQI zzH^w<+c~0%F%IPhBaU*4tUOA(jc{e71w#%Ugf*I>Px+j!Ccoo6>ghHSH3MIo{H%CX z5RV{@d1I>Xm&7q&H-QILN1x{T7j~~fRe*r3O>9;mvGIX^M^kLb8$6uV&r3% zpw>hL@dcvCdce8aiGZXYs{dY8n7%GXIFuW!5-SNQ7vdznhAU_q< zNoXJ!HHZ3dDU@o13$?Ff^Os!es%VgG-^5mi7?Bqw+B1Po5#~>sot&w3X<=55{+OmrTBSz7w%`YdU+-i3T;o1Sxjl|s;DHLJORFp+Q!NY>g!^kIlKc$Wn zUW^A>cQ!h7P2v@Y!NWDYmqAkrHF33kPZlNwXb$MZg5pFW3?)wm=Jc%)f4l-ko9E67CAXG*NaXbR!F+p8UjiKuqwH7lZ zLcRkqz$^JigM~VP%mC8KOe$3?f~;65^YZFCdkJ29|3JA3FY7CGOQT`Xs%YcTc0zqq z`8dj!ym9aIfxPoZHw3tdOQBO~k|8i#LhpKWi)Fz7X-m%Wl^FVM)JSp_ji(zaaXx(cwEIBb^GV{8iF9 zk*<#3m87i-sr*&ax=2?>|29dR6;k<2Qno1k`>nIfqdSwjQK6QP5stM@L&K%k z>>x^$lp~f&wAJ9%tuwbRh*h=tXNpftMcHA1^k#$>RLiV!!ccoI)Mt%3Lw4#_h8$S3m-rO6Ur zSNd^PN`_clCZs2Y?#vxi8eC`i;$nB$deXT*U};TpCj#{|f($^3ZsJ0l$G^3@Ct5B1 z8Fikuz$bK7?wOM{)kV#vddQz~(U+5GpIjRqTJK9#tAMUZ-|)~#RI7d(J5~I}Ng~jK z@*)adE*MPZYO|0-P*X*mWR0t*U)CTXa2o98k*AUCwm)X6rR6cDtCcg`QOO;9=4Uf0 zHj=_6i>hlO=oR^hOewO0vi|mxTMoy9T;WILQ?W*4L9V2MAcBTtL9S#k@etIn1SNO$ zGS-3JL-o7Jq|@BZ&^oj z(E@-$g=1 zp1RBlP6NP0y-LP@1s_{;VT(>Z=U*Jz4RpL+YZ+LVOXEo%5=D)U;kePG@^wKquc*Wf zKzek9xI1oB@}VqEzDK#+cP_&g1r<=jvhHS%GAa3JW^Z2w2NY@?3$(r$f8b{2@&h+3 zn{3&_JkrrUKO2kcsF9{(=r`3UYhqLrt5QGaR$Sm<{8jQ2!++jABxfGu)O};mm z$W}8{?XQoj{l(LobqJdL<2>7Xpw^-!s{dq3uP}D|H$E8W{VlA9Dbq)CsXWt+Nsxo2 z=qH88gpeRBDM7TVr^pUc<4Aml5$GmNC}wP3MzT1Tm~&TD8(WDOe~is zY*9^2wA6yJ>kuq=!7P^xDif|}me=IQVq?o(cs{uhqad-~q+3#q>E~7=^fE8arWvsM zt{5^6^2LyXBvJB&f#nVAGp$~5uvlN)KwXYUc}B3RDpWI({k#C9B~FbuLzab3Tl1Vz z`6Rh;6+s-D5yYWs78!gD6OpVZIA0KVAGq|n#}n4u=E$(xF1&P>)g%nQJr-K}?t0c> z@UMkva5>W+f)Jvf8>AUNy-Xcm5!KuBRg?omw1PA2tZf@&wt=f+iQC(gKBBLVAV__L zn^dyntz?Ag0IX*6JFlD)#Qa%`%TaRwny6!K)7=BP;vS?~wy)>uC7~Fk6^0&7GX{2x zc3G^!)$*gR7>Sj82@!P*Jz~PgdUyq???`f~rx2kXU)ah}v0g?Pg|xl#x1u9@T-{40 zXg|WnrTuOOYF$md}GK z*PH8^>@@`g%XyR~)99ID=x?}!Xt*sy#mI;{pycBgh#d#fG5keVD><-{&|E+{&@UTJ zTOO!Fe6Yq9P##~dL6x~aG}AGq7ZirXAxX}KRc0LHmb}qNR~&Ju>ZKz0Gwy^l%05J4 zPGA|;aA+ZCu+!&v3d#^cw4xy1)tY{{lu;9XjL1_lHOTRg|QVzAvei7Y=PFG{O~wi-b#)@=I$DWu?W* zdFgCVeYksY<2yqHdXBoTu7?=eh_G=HxR!ydb~$MiGu+f}M=8G!adoR+s1JighjLRt z$q2m+I&e@SvXJ58k9fXzPhNdS9gM5qC{~E9u(aja-eMOmb10otb(kBXL**XYzWL5` zyFu2pq?EWM1Q#pLF=O$r$=BdjLy_&PPi2(8WLR2~OLj?|ZNobW70QcbSwa$tqLPFK z%4=&TkSLz5s#i|3B~hr(sB`Y9hSX<86=KfNxSNMmq{2#* zL2nf#O-7I>Vqu~e67PKI@d3>wl_cI`Kp{nu=>g@uVV@>YvKzRn>`l308fGX=!k*d7 zw5*fSM|KOX$hY8xJUpNB(9l{^4RCdH4c}c&=%9pF66z%s<_I%J*)p=Qv3L)iiCtO> zou@l{W=v{HRB=Fg*`fhE4MRM2#mvN1p;?J38v4?tnQq5H?1%W{hC*7hDN#aONmUO> zN-fEDK+P(dd|htTX-(d!)2n!?$dPl&K>`T#B+Nu6BdsiT*dtS6tW-iFgc%`!Y9E(DKu<7|#st4qZb@1R zLFs?_V56Zh6)n6Jb}tEMGC2k1#S|fjEx7khbuR77KPh%5?nV*UaZDH;$Wz)Whhn6c zahKh)-jA&rg3}donoCrlRF4~2Dql#!eLi;nqsLj6$49p;rO&4^d&uy7^ESjg!#*Uw z)YZl_s~I6AUi5XDF;H9D9T(?^PYlF*)AlqX!N_mRc9 z43%un2x}5u-NPGyGX|2+N@ZOzhJp}b;{!=O1Lx!-w?a|2F1??V)t=nrAZx+98MIdo zqJR}0dMin`lfMK zCyr;0n{LnIpodR{*AnWx_ZiX{rij}mq%lm8#;|-{R%4i;S_x^C6r}MNs=NSopM4k) z=9IfV$!=O)+9F89nkMEFBX|XASku027wbGWpkk7vku5qTiU@0=ndePtbJuVJuRa~k z7hA&F`(uzpF|)#MkyAG{r-4f-204_>5{f|%NnS!z8Bs$uvMOz8_S8N2xJNe1uxSC| z;Y5(MvJ8DzUZj4@DaInS1`{U}gUPysFp+S|9!z2gWCyQ=R+H+WgjN#jl~5<4{eW00 z(U4O!iXpZ5KF*lLs2CH59CCW@6;!L-um@R&6~wSZL)bcB$TR=3e4S<>8;;06s@+(E zNE5i7gch71+i7nnG*?1f3Drxe7<^|EiUF%-LZ;Go^AuDZgApXwft#M$i+()JVy!98 zHXldgvPU0`DLz7l}7vLhe1w zWR|JUT(hfX8Zl76SA8mmb$YFm)e7-%Yf9GlAWIqSa_0kX&O-&|{G;%ayUirjR7~C6 zL98G1g&4+JgLXtiG3X;A14;q1;<$7i3$}CC;!}4lWZkGNWwsM{Nx&>kX{HK9Gi z)%^%#>*}Kn9NIm~DeGFI>xsgA^>U%DlcCFYZCw@v%(I)g(y?hZonInZF{8Gz=;omx z*o4k49;mA^)Y>Cx#Y^6S4q3LI3@p7s!(mTNG3nM3lv9ajS(72*uXo@dNgoL7DXd)r$Q!HWRTx&O3Wh3*o ziJM2y1U)N-Fj_jWMYf?j01$PsWfirOCeaD)=_f6p^^_7x1Lmcxa!3Xa&Yzi5~a1BRCA)@`hTFU zgz6=6UOy$V6 z6)OS>9VWC~QjHSol+ZAtRzNB4cR)R=Q#jjTU+^ifTnme)VQ_*uc z8efaJI?5`;c1EAck0`n4q83@pAg=24NNJ$jg~{M*@daER*_*at6Q^g_SWrN4_K|D! z8I+}BRl|4ThO&etbOMG#+k%$@N>%oNWK}UzgVdJ0a>IbcP|Osr;?*)t#tBubSP}8Z z##clPg(}5(L9A4dH=RHzae~6`eAy^^yt{XyT@A~b*iKd6?xL>2VJdnEf;6YH%!z8q%xa_)bdc|>q;tE<;vBQ{W#$C&| z&x(0d;Hx#!_jCYFhakedt<(vMQ@P$?#T z@TY0!Vb{S0a|UV&^(k}S$`?xFgQ+B%DwMEr;F z-65ObOZca+=@)nIn4cd?3;1pQ!UCQEX_Yy(UdJn*8k%;f(6xjHCA6B*K?$uS)GMJ* zLi;7uN@%ZynhEU&#CA2CN697Xlnl(`l7r+DvqoGm+DoV}H=t$rX0mVSQ;MiTS0x&i zP^g!5oD$N)w5ayP>C>qBh)F}oSF>@n1}4WN!2Q;1_?C-LRe!Cz$lZ)TqY=bd(ua(`%viX77#Ib2N$q}twaI} zO*Yo+5|Uowb~cq40rpeQZ5Z+qnvLXwO&|_Ks}{5fp@>_CK5N+@yB+N(A8F5jU~&F2 z1$PKG=i=r~0ZqIL>dB2Qibg{FCA5&xUJ1=5v|B>;gmwbr*dumm+6tWhh$@K{v|xnG zRu0*@pFH4EG#wb%F8)>h4{6>*K1UYYpQMB;$dF&$hM<5MKI+@Jogmw~=#++2!2^|K6`4PhtJ*O479jpLb`mx%RlaEh zodBut=O?6a3tEee=v>O2p*XI+sKbbuqL=~LVInBby)Sls_`jC{Ed>M{Z00D^G4wH= zo1v0a=^TX3NY9RCcAGr_r|)8p@5+=$br;YEVL&JP7KS&_+TB0WD5H?1dMWCA}QcaWK6* z$$CMiPSBD!j`~Y;QzJ`n$l-33kOqfbp(qB22_h!cbj_cO>nCLQf~5(ek_BcI-R_A= zy&;VM9FYkh29a=$s$vd^qv`V2O~r5_H{K-JSAMSlU4@QwPZJtd#DZw&e@{Yv%}`hr z<;Xa28PMS~MUv?!v{FI`2`vZY8sr?{$MjWIUuI8vkmydbnft0_jwK1rgqDc8QQ5!?UrDO33q_>Tk_$qC_HY&CxUqDylF+W) zSUOowXs3i)32g^Nm$zay@_i<(C}ptAOCo%7Dj|K^9TYe1XD8&n920 z6f>*U2WeGRTORgUPDpuC+pF4=i8=`>H%rr;IpUHgdB?Swx~b?w3hKVsS`6F0ACg~6 z0V@!(f1%YBWT@y-a+D264Y4-?svHVZP(yBf`R4R5Xr%*adJRk@)} zOeM4u(4w~3Kk8dpzM|CiHFZ`MKCdGfc(CBI6}xmff;5d`DX^cA3Qs-z4hZxrqueVa zB`>bXh-nLxDT2JB#Hu;oR@W^kMI}421}S}i%lyT%1V&LJBx@mw!k{UkZCsI9GQ~@*K+Ja$}x^1d(b&BZCnVjH1GTz0y#g7<4n%wT{abq z26DLrjhkoU+Ht}<#uz`5Oi4Dt&E?s8Ldu(Xpzk1CqRu3wyyby{njyw|Q+-MuVoF|3 z;aQm0NZmz?K>NX)r{;y`srm4t1?3us^c;2;O~7=V)h&CyT5^E*GN_l(k*O}pWO-j+ zO^cBm@-meN-AlrS%&wCSJKTYT*l~6VhOQ|d7X2ViBqrBaRiUbuWb*BVim$s`V(Dco zzoT3z3#uNCd(0#@6N;=b!a2xiZZ-(={NO>aL@45fX45)k!Ge)>^0@BJOUX1F5!}kS z(&N>rhUg2hYo04xNN6RgHA-d?<`O!jo2Zl;6f;&mV~H1)@JJ-lyJs@idXntBPIM7j zi-XPcmc46)wdcL5R7m3k8MA*DxVvsU3%=20&a@P^hFL(AE3J`S?Fm*|qw` zfTr)r>$_qYGwsEQsW?DyOUWJ4jzilC^&P=hcU$suRTTQnfxPoZHqqd}e;YPyOSYEk?7ULOB#KxYeb`pC0|>FU3*y zenCmF{5th*@-vH-GxOh>)V&I|{8j2WGe3Ibt&#A4g;f43=|UWrznG+Z6;k=DqFDx~t4qzr!k&2jmk-x|Fx>9;HN@>l5(lfEco6YpE`A^gHt&%KYIM1R}afS{zy;fDSoEtMxo6WwNbl+QnHRRsysCBPo~gw%H}e0M+Txj?;{RwpyUwr1;0yUE60TXS=!ftdNk-)4$*1u8P$~IDLJQo1OT;N{gFc=*P?I zM^8T5=K9~$fBf`P_n|hoRxEY@Kz*})`lI~+1l^b$E$j}SZk_r=^~9nF(&hZ+hi{(k zkb{Y>_6>j7dh&y<8$P~x9eWUW&vse_wHzc-DdP4GUuxelSh~))bF>uRba?xQKW*Re z$kKIOwsR{z61-u2QMVnmZ#Zn<@X@8~7^mMf+fd*_2EJg{VV_vK?qS`?v7oTI9C+m3X^1u)91fDt`7+l}!s^R$- z9$G({?$o7SzFlGMxD4XD%_@J#We`8~XV+lz*6Ans@SS}0to~3aKJ@IFSeY~jE0bnl zWzxJ$`+!iq7r>JhzMcQ#;`I+NUH|^2>p#78JwxT)vvdlgFJAvUa_KF%!pztA7tg$C zwtYP}9lxi=^-$f5-(wbIt3pct@3yDk)1H2xuPowy;rF+s65OuJd||6g@9Wa@y7ap4 zo2kUR<`%o^S+@|(Q!!^$(9@R|9#WrQJd0VxQ^oxlKl?p!@u?^FqzKW)cjeN>?b0## z^_$v3Q`M@DuaanWKb$9xH9u>0AI=LTT2FF(|5i14Op6c(WQ#RvBDT99XidU<%ym(o z+FdU2W_+}am06h$~iD{K~!eyaA&uVwyrL#)qaZRx)ZMCMu@fD*khHSyhT+%`L zkuZGB`?6$2YrG_0pBrCgewX~Nm z;eE|kQR!9dOOvCe?x218gCO_2IP$koe}qq=bs(gLyP7Az)IR;8;~=S*i)Y@X+PQsp z#jB?LNb%Vexa{-!x6gL8I?ok{XcjSrL!haEh)|VTM{7w}!8Ly78<9Pg3*j5($`w*w z^fXjeY-Q+{Be?BXToL1^;p@g&>o++CmRo6HS}G}~aJiABu3T(7b8k}hvBV))D`A(p z&}qR%SyVOZs*lrslDIePF#M`%;Y9)WT%YV&5rr$)L@r(_qN=*9_VDP)yZSU1@x9cDY-U{T@N)Te1tuRFXuc z!zikixGC3AoNC&4U7x*D8K7K!KZIDz&{S4G4NMgQh!@7I|>a0z}nB zu$ZDqLi{7Y8HSwn8L`ytbizBCU+4^welXR#+(l1V5D}e{&AdA`xnOM^2JvkOcg{9- z4hX!Vc}_H6!}$ua=lrR0)Kw=*r$oZ%g6-UThGKqt zWWI=H?_8h?rsT*T5w$=SwbL^p>ZOZI?)gnIi(1%H!^f!9OiJ;p_&lcY6Cxnz8^q81 zVg?#Ex`)+AC$?gz zVag-kE*iU5@fX5PQcS#E&@89FsESy>3ZbW5#i-c7mhclUJ};6}H>vWM)osZ?sh0>v z60$J7wu_KN1H4te879Ko=uC`E5b1 z1u7w`*6XLOYwsPUORC$ldoEIRfairt4pKc0IZ>!4+?iQzO);%q7?C67Co{HaN`GTM|A zW$2O{2Y3w8F(^;rg_#bMnIgjdDb5FKVRfoB)`>2MG7wO%e(e)i)fD}UMK`5IhXPX9 zbDoqpKC_vmlI=>nQ<55r+n^c_K#uO1Y6H;d-Gubnb+?}FlI;*0hm{|+`40i9E zJd`@Jk&rr~VyGi4Mksd64rS9vjF5_|pl<&^SqYbF%e9LV?P3qPq|p$`n65HRijgVq zLjAsAVEGFYaKkc)%HkE)&5MPhhR%63566x8yW2x#1OG65^2HNW_E>}*_K2~ zu~^8f&45xk9a@-NDV(Sf%dJX{9wccYl_ao=Mv*u4n00xnu%Kef$L|!65^K`i`+_7M zz3tWFmug4iOc9qwg;>j4Sjb>YtB`j6?EMW>77Ea|#aN24I4!;*Xj}nm8A7H<(6~fg z$iRl&Gj}y55m(7pi|P1t)qx737_JY-?Bpy6>;BYp(z&WaResCoihvy<3WOineQpA_h#s{)J#KhxbiAqRJJ*2D{@=I&6c1TZbE)z{#HT@N*pSU6drDT1^UPm z^O;3DHGC+tN^A8p+B1lEVmUP0WsL}`@rZDLN_vl$lJq(3#CX8!PC!}HO@Hi4p-+vr z6jZ6vxg^y9pwCHN%^Ecn+W3J(AGDgA!%Ykm++$pP*|oC;p?G{PhZ_wW6>WSygFO_W zaWDeRIq7@j!c@(-J!~B!n_81!YIO%yt$R->TKB%)!T9j9Bk-?k9Kl$x>k|w)iimF; z>Ts$${I!a|4}TQ+cE!J3@y}HJ8bu0v4OaHc(kuoNue7RCW7ac+SA&6q2h>&J->djH zEBHZRElBXD$R|amo*^0)7qd8aw*30YF^TDHu;IwC6vB$%uy-HNV#F zJxgZVuHPDJq!PvSJ%$+Jn!YE_W)Bjbp(cN`20(u(f7d-Ey*-CA21V#tzfRLnsqiXg zM{cOHEe%BKfuz%{_!|}fLd74WP0)J~Bd%70({S^E7WZg~%dVg;R0ldJfL{j8SNCgN z9V!M-9>lX4JA6`0cdJYDe}=(_A5sb>KMiqvVlDEl0myZM?wXJWpoI2-JhLg68ID91 z>k&H{;jo0Z6B-4CSY|CTYj4YW!mNR?JhHVZvaG$0ihsT0U#s|6(=QflpZB2-Ea%9DzbyCQ#O-*pSZyUkrOwU`9Etrp|B-#wDWm>ki$%h z&Z=maHB)(I$ipH_)@q&7iDOmEOY?tH*6I$l9CTKJn|M_dTXLgT8wqWe&_Y5RB{Y}N zdO(b*oW!y$%>b8HDWabM$(~bXN5ORVP_{tx#PgA*;`_-h_AnLyDE+~PbY9782LFBI zQLDT7ZA*kIg4c?Gpza@VL+nzQM|61DlDA+AKR3z3k0M1(D#MP2i9G49f(qKfwSf`K zW`g4IgX&SCD`Z@saXrt=E`M()r zbX5Rb!ZNoq4cAVXh7D%sME3r+$AJ5CPROhqG_O)=;ccIedTpj(-B~-L1y|O<&C!hB zQ}#z4PvCdGVn)Ouq|rgzL~%kw-Z+n;P`s)c6Y3BOi&~0<{!FSpyq7`yS3 z0-giz;Ju8ux0O>qqc%ZSEX_ZR5t)Dn0c`uq8#)cwi2!NB4RoMHskym;IFV$j8+lZK zY6Dt%l}9z5D#eFa*t0PN>l#9^!79odha@!Oa}>n9O_viI*W*ivioM$p2LDQWP%CT3 zWAAU(e%gsm@)i4ox0ms!5$OV6F>XUp81D+Q(e8cm8q+j4hEQ6gM~f&{Gk8^M$Bq5N z+Lh4MmC!^LBFzrJbIIa}F+T07LwesEtEYTM{ei=5OY{Au`C)r9-iTF9s%hORupP?g zkq_S$d0W$`LQE)cqE&6Mbt8 zE7bq3E1}IRp^XZpH23+fJ!QCM9j|x{Ar;~s-Jc53XQB&yu|5CgCEk_g?53=o57hpv zL@LCXlV%=om+mQ-YA3zrgp@~%D!E~P-APD!Rh_GHIN%^QZ6%~UYmn(V$cDVlgq-Iv z)o3VG8WS5u%mYOb2GJ@E*`gv*aWZKX3dE{*d@1s#!fdG|+GUajZcVJ;d8O z8?fG=>OM6ZoD7@D1CjAh!SdT^&@M*r${9U%6?gQ1XM`Ss`lkpzxp4B(ZoG!22rG*4 zk2AtPf%>Ni@>e6c>_kw@jeasC?3p|w$X|`13ep!kitwV0uv>{Be>K8HMo=q{KK;{C z=$%Rg`Ku9J)qJ6;2)~vQwkr|juSQUNC`;mu(W#8ERf!;fHNq$(h(|^pMSznA1{o(| zqcp{Ia}=hS3NB1B!;fuO*e-+D<#*BZ@uHoeVe͌R==Os-sclD`Lm-cWf_G)^6 z>9(J(TB|*N=Og2WYO>GT`*LBQ^+zvNGEelSfug=0$UU1b>?(~|_F4PnVq&7n4=$HK zbJvutvUsYfgu5TMlCBMpsjgdX$eTAR6X zchtrxGOl`#8VNH{-Eu&$>QU)3XhOTJTl-;U3Aa7@RX^x!^KA)aUPGze+QqJ~KEDE5 zo!qlPDY#=}QtY3)AIuN0x-#x9Poz;K%{#CEK%Up?xmH30!^#Z9pOzlC_dTye6Z00q zdu8&)1@!dbxfGFm)S(sx5u`ivGI8zb7IthK8(e_3)cu4mmO^6e@B!|;uC7vejzDcS zBB)vrK9D(bN`YBZkF*rN!NrBSuM-=$7mTZu67 zBou3?LI;ka5ted+&d14(P&w3qc_qHN*zU-1 z2`DsifHklVs<6g{lVn{}Zc%|Gvm@eIGE}W;ZMFy<_mZtOS8worJCTR_Q-LXqI z#x2&QWaLveE-Z|3ea*gDN3R) z>qJ+XB<%9cbT9=&HPi`-Dcrnjkiwrj{T?xur(lr#V>L8xzz+t&gbD`9l*CR>DPwQa z=+Q?jeYNPbg-hS9E0e)Ayc!`9rURcGIMKTdxMnJGo{m+Aj<-n@OIHjI!Uj}a5Lc0y zgGg{o5QZzsxt)w53CFbvVmq;nZo#g284sqCFc|B8Q)SYU4!MUC>=&C4K&-LY#8nMO zef8|3mC6ls90^Z7n@zvnm6wl7KqSkW-MAtKept>>aiWWen;9093fdDi{Uk5ID#Dym z<`%dT9em+P&8uE)_rZLi*~#yyiAh5&jX7qfu_D55uWBteAwrU$ilFgvVnnMe@KCMq zX9s&%F!*-T?3gCRRKeiI)$A?^5+sF~gvnpz<*P?ZnQC^YD0yAQ60hgFk9b{>cs-%3 z@;V8*^LPy*=dTsMR}vD8*^c6SLE`&N^_cI~Q?d_8%&KuVOs;Y28T!C+Um$*FTHV20 zes^O@7ABYrUi%`w{5|LOm%G({id|1mgu4AVGLq#g%{wcjtN53EGnz*^FMv z6>$Mc;*rJ-zswAdfP9o2VrW7^xmzR#(8FhcoTFckJ)9=*&p&e~93l6B7}E%j8A&$RaVb(ziBsv$-`xipta#uS!4!c5Eaijl0vm9YSj+@jl!Q|qnRnW>#Mf-ot?o@UJEAlnqFG? zDErcm2$5`xn~yU}lIR))61N0_OP5P1BngXqB{YFo(x??s_QwNtO&UhRMQIJ?hE}tm z&_HfnGtlt#d1FD*8W*QP;`7&ceK~ab~Q*k1l&Xs!3p}hG#iTgX!Ak$D# zO6ibrWKBWGD%h?gphla}`qq}bh(O7&_T(p|sC7(*CM9?BdxBIp`1r8Lb54b%-g>T0_)Pj_HhJMXn-cv_wWV1l+?DXRZOHBu-8+Tbc?$?pdOfsS+e&TZ{8w z_FfjxbFs~;w$;|V6)GQJK%qi4vO;AXh014L>cTa7No^$r=e@HVCA8~`zL`^gQfTg; zUDXA_SoFqjXvk7-mWL|m)2ogUd)VH5;R`@k6ZzUk#V?60+`Ie8*4z%O154u1;Xb>) z>i6Ydbwe>?uli8kICfR{o!(nzY7uqjjcV;Ysk(L)8fRZ-On9aKMz)s~6e`_RQc3zI zG?7rNgpS0vL~I6xD9h~=WsJ^|8`Zre8_ErPiT#8Ia^sVIyahX3ro*=4F6|I%H?U|8 z$7IU}_iNajZaNxQP$*ii`pX-35Y6vc0z}81KLbz6ws2d zNK;CYN9Gg-E%OJw;#8F%ev@|xOE2}=NT_4NKNJsYORkt#)q%~g zjH@&Fiz=>(T(^fXfJ#asay1y{&a|N1nLhUNCV{r{m6-WuJ@mpnsdO=>=mHY%Rvzw>Npi)%XOY;|(=HI_G59`Eis~x8eI!=*I8mH9v z#X3AHZ_AS+PbzCxYUBwXPIAfJB&;-LrLuun zJfOU(H>u#MnXV@kc|_smw{&T`@0z@PEb@veHNVwK`OJ!g(1{HV#R$vtR_@Ls+ra>T zwlwdHfI1MgyIB@tm=5k{|xLi8&UO*fpJd#Y2&H-{8Gs*H7*h zyXd)B>{4~#;JxBr(0i}gdC9%v1AXe$r9Mt&uXyz8o5nVZKmAE>6mx$`NB5Vsbbm>C zZ%pgVbnDEI=>Df0KHk=IyxczXNb5S5xL6fwacfJ1k5k&8;*OHHOfBBdq{7m!}rH9que?;ct?MbuzR@?mCU1=VRCYhU^0l z{=Bdc_!gTPJh3lMMy=eFdp6t?58QHN3#q&dcH)7P)C5y#`|tYO5^dY|-}4hKMuIK; zH=lUmrXQDFmC)eFEk7oiE`h+0ldqGMRA=YMZ9gh;xE4R|c&#*^)%fw|hLl_NSjg`A z5e+ixjl}<9eO?`ngnvlcYGsVqC`L1W-0`=RRwI7g_G*1)A%2{El{f0+$1MxWSv`K- z^n=Rt3_tkd52!FT`|tXG6>=(LyizeH;>XFqskGG3RhIA5SJcD#amT#AuP)AyH?y_O zb~-=E^7kss>f;pU6)KAQxXSoFDx*5NV$3Q=FMizd-PQ!-$89gySN7t^$s6?j-S}}! zT{+v~$B75-dYRkB{(HX5?Gi*cz0~azKW=%6+a-RSe6g;HTIb`p{S9AqhwqN-bvx9m zG6ZkkIlF@Ip6}GHP|M{0J0uZ06zSV_c~VPMFA`N#F<pPD-Hz>60##h83_k-N7i zzp%)fJ989n=YseL#exz?Su&3jIV@bzW|4l{3i%TpKQgYbu>5O(d}zJ+&|2}K)#5`d z*ZL5J4n{3LBu0(0V6|v}e5iN)A+$aFRVY+u{P8(Nhy5xVq67c6K1#KueVS`8&F->v z>Vi>+sDbvYbZoJMN1(J}quAuj#${a6$$^G z{ECOaA-|%M24c#8SNwO)scu9N0~MZopT8wNdI#_5Ti2d``uNweZr8my`i1X9ojZFo zre$ZDPl)u>|Krn7tBNMR@IqoJr2Ek5_XILGLHR#=-di6llVUUO?BeY5==-lo=N-rC zFp#spS|)aikd~HQTTk~$?*(uD#1-jr|Ky|dm*=cKo?@#^@dq=-R-`y}l@v#3u1N2x z|Dh-;1Io>_&Exdqeo8`>%Vwlmd+VcDQSETuW9jD2_gf@Ac=IBhO*C0LY8!34G ztslKI$;a?hwqD+`kB**e*6@?akb)n`;}k$m8*T_kG{7oP5t;Qqc`M7 z>i)>{VavCEtYB(w1e^E%eZ+Nz&s1x4^qm=fCMx53)f|>}Ia(tD%L_3$vi(SIw|1hI z9deq^iQgS^n$C&e9deq^iC-P^#B>w!lS1LtCCQ4ajQJNoT$M56ugBl;5Ik=pQCf+iLwf(I%eepVaz?n^W>4 zAl7Tp-T|%bYhRb-GhqMaD}Qog^nC!QfBgCX&E~|!FT5l*e#B_#`SwWjuYKW_vYG|1 zkJgtd)mb!xE{8?XAx8hq0G}avX7msA>&%^bsp9CL|InA7e*AmLiAx&g`_m|2OEa~m zW@@P42nLI^S^r&V{l%u#QheGSu~ADh1Yr8l(BP}JLJXMg=A`T*JM_D7%p{^`a7XU@S`0b?ltpQx&L(%bDacCj+ojTqV z)6bJvxjQladMc>{w_R|o6Sc2*=-;Vj2%)k5H6HS+M_5WL zM^C(M(&@xHo1^bQZqFVbsc`y2>-57M>MEM*p_dj?%;}E)UXj@UsVHQ)zFkehfPdR6cLC+%Cnqb#oXgAff0?pjM-MC+na978)ToIInl!9U6*U#wU$nN;*4DII3>Vu(P-C?kyaurv?-N0dR{~V|zwenj z-z68I&p!|Bch1b5GiPSboVm{oNG(FvkqDZPEFw`fi!@uwd4SJWbat?;9T@#U7i9O| zv3bukwk5mQY}#SY$eK;VWAh$`gJe#P=29b*yaiQslegh@uYJpjnfH+EM@?i7F_6o7 z+`9XzIiUKhEi)wlCF_3(X3VX$Wm?TK94dIFG!4c1<>nalSr{NC0au#eADEM4>F2h^ z=DrW^LXeW*H2aSXId_<}Kq>Zo9{OcJtATtLZZt1u$u&@d%;s^ioAN;yTaq4^c@y{f z;smIm$7J3eHsO=l608BM4DDXFIzNT}&A7X1G9rb>WDF=8sSAv8fY1L}Xt48_+=O;w zN;Mh|GzteG^h%ke|- zYL%e%Ys}iSKSh@m)*j6V2EuYhv0SWdE;>BiSV~*M@no{c;Jk+#NwyzXoq)CxHDVUX z(RRceMxS#|UCz8GuiPE-oemI*ns(|LIp)mWKSy5YCZ4_#^@E`^s}d{C#=}0{vhHDJ z*zarGr@NW1%z9|TER1InM-hchQ*3W8d)VfMd0!zJ=m((r$U?Wq{O}eMh?5ee#YuUfPm|#N>%aJFi}?l&@Lb5u@pU~$-(4mjVQq9sND&f} z3imS(K$7SSr9qzd91HS(=~C3D@Ao!+D%Ov_VRMc^iS%TkF{`e&8ncJhnDc6^#;`A! z+p!On2FWTzvdUrOCg8y?#R5$+lfM;7X%(i{LoOY&meIBYQ+vgm9v+fJ?6Bl=P zw)2o){p()#=!b?+hICIYC4qTw z_Qy!xzr1?fezL}E(C|Xc`FYH%p#ox|oouq#4=br}^XmIb>erNFC9wWUbL#X@ZOy}c z9W;2FpB#wjnUNF`{Zv%sqxNJ~O?k(Ce8tW>$+GT5O4v=-5VwHQ+kwFAyo4)z^v;mf zoJPpxvSL4{ERsT!QJ)UKiqNxLsu zo|Cg2c#dSxfIz07=t`ai7m_F3a?pBGnRzI2#LrTY8wT=3*?4YgJkBjp=-1`Vf z0V)TFPcr$=FDi#aP(U8IkTPA!#1(00BBo^psGH<^gHnnn&wW<4&S$6b=ePUB#JyD6Wldjm4 zP4VNl5s#1u`t#v|1N3KN{}D;Z_yMH-EBEc+iLx}eKFN}^^q~Jd-hZN7h?g_b|%)*tE=Xma9vH8>X}Yn{ddu;e1*y7@H!& z&d8gK{-Yh1n=6%+8748YltQHO2x;7sGO#&bNt={Z3d@gmPg0)dB4Zd+cazh;Dv7Di z#bm__1;-iEMl&6O8!0DArNdg9Uu7Pf?Rp1QUKVTq^vc?aYIE?Q1Yf_IY8=gp(Bm6xtDG!l<~WrFJpkLjkrki$EL`P(rDGSkGb=O zGO_%{=&Xs!{NLJ4I8VhNaz18VZSCM>Gg#5l5%EYN{Rd}a16L({G{?rJ~v6ewVQbw*p`*6Iv;7+1PiqaN`m^QVstq% zgas6Y;xPY}Q^I94!7F z&OX+zqS*}f;$^J{GT`r&YtNbP#*bi(*jei~o-!uZ9hBk|nzyyeeF;kSVND7{H`T>pESri5oRYH(8=9gfs*69L{GTLb$u2okAboE-) z|A*kEp|!rZo2eSQh#E>BX4y|%Kwz+3Y#r`Xrz-LkkrDrHmbPC@vKdp7=A~XgiAV>B z9TzJLU}6u+#XO_Yt7{isTh$fOiEUkDeh01*TUcdoRVNXOgvb=+zjaniVym6`QN%SQ zL8&IfGLQt9nI*IQ%(7wWYwg!KaPk^d14JtuN?iLb(qCg~od6(5p1ym%FMh~4r!^MM zX}*89T$5GiTRYc!xcHSwvJAX`9`Lr2T@44?3fs5A5`tKOVa@{Zl_yUeVJpNDwn7{+ zF)CI?9AQ=H=&Ez=D%SFltuRM@Gi)Y$-qBSBJHG!TOC!2|fSzZH76uavw6pS*RRgOI zJ6@#?!zXj#$c`v_UbyGc%$5lUj+!v*&AEsC}=zg z%0iKi0S(v3T~OrjI0;M<8gz*u7~_ixw6j5H?Hx{_*g-oRwCAAXe(j~wKDzhWe#36z z;P125Y>dY;m(m}-QudAO+;{8_@f0c$jwzGwu z8VE!)gRO-u0nC#(;mbcSi-RZZ`HKe-l!M#m00aXAcUMZo?$iR5zO)!sw#7IrPv#cE zrvGH%ShNF68OEztJw*8}hI5fbh76##Yj1yx^rsW^F z1(!YG#13UdwX&&SqQkS^VoU=y*h~@quh|rzy~o^~#_SbaQn4jpOs?;o@Gmd(RqTod z>qK3f$;W?)taoV)xOs0f$}*dq^GOQ%u=mnUWjW@kk-ab|{z#+_&77@Y)5nF&J+_4H z-+{rHM8+Q*bpEAnG-F$z#9O>F{@|D655dt|%NOGi`Qlz3`C>eRuapvR8WW&KfwThU z03yYW9Tae4nU>+}3Vns#crPqcN*T|y!IJp$uM`a-BPxZi(T_M;5l=Y0(BY&JZgJ(7 zRG=4QE%C~M3$hLy?>YK{Jbn23@^G7^1nX9y53da~SYAjTvS{_`&g1LLQ>npf6zF#H^x~`eL-vf1ew2r-h#QBK3vtpkO7v-E zSFS*z0x19@5M3xx5x%}aaSfJKpaV=9tP5Wii0m05{U{Jw5$|+3xezCf6{r_WH6mG# z^6gZYZU7<>T_h%aeSumuSepVZV9H=^_^Lo;&j{&9fyjz@tHa5KIBBdvjmoZBfl38x z0Ej?zVN6x{`U0gjSh)gCV9H>N@l}Dyo)OZI0+AK*W`~mtane|U3YA?-fw%%m03r}w z7!wZ+`2zK#r)#rT!`FZ*gEiu-0+Bry4}-);q36len=0?~yr zwc_gw)TqIl6{rAH2CKqX1tNP!NIwchR>UhEPAIb~Os56(|QF0?~yrmEr3P zRH(sH3Z%i5!OHPffykZ_(vJd>74b5MlM8XuSb^foE~!AT&RXZdMFgS?W9q}#7pPN% zbt_N=rVQrcs{)ZdBcvY%A}iu4hm#9&(pZ67lwF$wjS4ga5P|5zn40kQ1*+6wH3}rb zl)(z|Re{K!5z>zWkrnX*hm#9&(pZ7g%C202LIqL)L?F5_rXqZOf#Mo0sX!i>GFSp% z6^QH^A^j*2SrLyroLq>L#tPJnrr%Z;<=d$)-2g-&x-h0Le0_mhG+3Jgy=WyEEGHxo z*)u}=Q6RD+-sf;~Ax;`AP@}SIR-jUW8UP{?T^LgpzP> zhqpMq!{MzCZ*h2=!e6 zwPY~0VYkwTag$^5;giw5#`mN+fGP2*n1A5WgTZ`Cuz~q31dAj5Zo}}MLYm3(f1pfr z)?L9J-v#I&eez5mF>A5_1`LdCxjJE z>sFvefi?i5@N}Uja{%Bgd?OI6q6)~xjSS`#o<%|ST%Hp@;KB-c3&PN!TQ+S&yYy5@!sPoFRE#(S0%@F zUVk2QJ{enb)NZM|Ir;l|^PY>%O`r@gS7d&^E-L6X{qRfs;pYR7EdiIFmoRM8ZA3C8 z!;~i!8PgbUT=?vfL+l0NYHEQ=j}8w7gDC*1JUyQv%{uB2zOueKV1LL}NBR3hW&*?@ z^uPJoA9DD|pP{UB6Mu~C4_Py6EBiw@{`8PDb_#YB`Y#xN%F+s^U}^a|{**7K5b3n&FXq2s}U4TT@jRJN&jtPYh1`6-+bW0kj4{h*r6$YnP zm2$BH3C4+F1^DuhTk;qY>xcLOXEemw{?VUYh?B-vSA52P|ei2qu4>;GZq>d4{(Jz;seRzTgDfGrN3krCR==Dn_~oQs`iC+rCeUlhx*-IMJVsk&-Z zSk#wf{YDz4nJ-nbG8dF)N5oYQT(W20a`vRZD2IqBvY$A;Wk#cy*;Ev}@tY{jb$ei% zNULu+>6j*5T7>9Lyb$#hby<+%K%fo91NU{+j~u)j_q6nf2x2{YjV= zV}jG7c!lzt^0LMGg@#%ocwByybVb^cz2;lxn2Qw@xt*5z`R~9bgRM!UxH3Kq%A3Ka zBhj)#nix#I4P$GOVl&^0LPXJOs33Xfp}cUSdQL`$i4mfGNCL6;VGgDOU?0lChVxTp z{K7uS7Ztxk+!slgwPAGo;dMEU*u}OVwDRwOVWsX!!b;Vzr%nA0$#9 z1#!fPbh3-ood(GbM`{~laxmwEflsD!=0;PKiZC|cv#Ckh)QlQ}@vy-d-w)bWM4MwJ z=E0Ca;$Jw%JR1U?+^HHDL#S2+#^MiW1u5o^6j86=2|#X^MA`3dSQI z0pl+&uql>99+|#E2nJu4j$1vFoQ#JAOA5UUVU{?0^gEcaeJEHoWejPa{jOU^qy-hd z&0`dZ%9>QCY8Bun?8OyD39HCTV15Dm2xIlQN*Q-4W1~Q;0v!r8DZmz?-;^)?q|1pf z8#u~Fo>W$HqFyqLnfoJ@^Y;O*JI!nF&h@gRu%a2QGBLaUPWz*I(QpBc8a5}{%1ryT zc@F)hW7{eFpyt2Gcwkt|kwf7{RBoQ{gI{d7;`}Ni%)A&*iqRfUc(Ui;LPt(n1fax} z++0)22u6>)`$p`4Voc>;_KIe2!)qcRT9@)zM%IrIWd#lf=JFJ%CIw6wr5VFi_~jH$ zg(;FGj9J=@7%;$ru(uX9K$8KDMp5eN0b9t+b1zx*~783o!QZBKGw5ZRQ zpHD&ITfE~|SHCRBNtTvVkonw=hBk@qxTs2h8x2W#m; zuQ7n6|9C0do&?*TIEUc)$$e*Iv0H!Ke8vY`V)5Lg-n$NYjm}5z@dBl=dY8M81(N{t zEm#Qf$A{J-XetHprxr}JNpZW8XYPRBX1y-}+m94-$F?7nF`h>I!HFccADlm8`ypTS zA~`w4z89~y!N`#cigiHb2Rid~F94%0-ZHH8Y{6V8SWH8YL(Yrrf&9jKk=VRlng39~ zF8SWj9U4FHbqI6rCrslh?=rP^z6j{44mBVGTHw$=iyq|AJV*!MOAlf4VOuOZ)1d`| zLW4;JZ`LAFV!8uoWh5?Ss^LNePiioJK*%{Eof{b$DZ6 zDINRx)Um6*v2CcQJaICSJVX=@geekEv@8~?`Sv0OJl8b#wbHRq2-%a~25c}&;jqe+ zS00ZF^V!+xRzG{X?N;xN;=%^Sk~_3p{nE#wZgnK{!+9m0$t)HCnfkb?UFoO%FZ&Ok zWBn-33@ECj6t?iNmjVeghP|}@hit-9L5qvuvNfO;1VB%AXosM-%xH(pMCIrRq=JYL z04X9O!GU;0LZ2*~sHJ z8*%*R5vQ~XL_nntRr8}|52#gB@s6nJEF5ZcYI+>1ovJCsmaq+@Pk+;@Taug`_AVCm zAsIMA-6jF0x^eta+A!uA`VOXUvAJ)EWR5LG=vS7Rc3+T|{Q^OtFGWIWM_ibHla%_M z6*Ci)FFf>fDndyYgYDPAzJ?@PsW6B!vjg2ph2lfP$w2F7Y{^Itmqmp7ujgmFhh^Rv z=1u4j>CI(9=KXhHUuLM!7u{By${-Zb4Gygk)Jj1c*oBy=DIVQ{8;1)S@K%Ql9q!cz3hv2zwuSPh|NsNQ3~i|XBbs;%A!AX-%Kk3Q1sz2So) zt9S0&?|^cNqjZL$@K&XKWGj?+gA)6T9H~2c^yPI*dgG9!qDdG!#%V`jOmL>ie75Nm zG;SQNq7N2lHzVOS@UYRfeFF!je(TKr&ll(S*~a+>=5p=&I;I|tbB*MJ`yw_B!?At@ zN9ne?`4SK2tjwz)1@-2g8)&2B;F4n=Tj6W>b4g!Q*cC!(tqc$nOlbyNBD=m)Pa z>Y|n>yw=9TxmEwp?Y*C9(rbO`u<;xIl)UF1q6mDHck_t7cPxCBXrW7yZ1XBI&oT#X z8pVa@pLp&;%%2AZX7-6`v{n%1`L= zn!yV8@nmYjcCa-A?fEC<*i&XFFr)ak5H%ZY%Y>pthL%eM9hB$iczDB^%^mg$$`c{W zaK7oebqQ|1tVH*_dR4+Z@`QG8BrXl^wf*A})o(U>8=k{P%p-Y;ElxQw=!oD z#y?*&{^Qb-Pr(J^aBn8VJmZbT?x`{e$0TM}74*M}%IepP=#URFe^nW-r2>ca3EDQm zH2e`(-l@{Vdj+Z_^_!*v82~+&+qhs&%=AF>>Y~9DVo9L2h=svvd|(A~4By9cF`OMG zK}a<|R@-TOHsYEA7yN)|@WEo>z{9-zuut;oxIxl@x|K)M2nLMd&LD#R^HT;3?lZrT%y$WxC!(QUPD-o8@})d%WK7rJ z{lvaAHb^X5Hu-eZ;vzT1wbQ2cbGU z2=>uIu#W<*ejfl2YiBm~n*wH|gBCNG0Y)!-Ycs%q`y^ryhug_)nLn6_x}WFOABy1~ z{x{?vcxG)*W>PcMAm_@FUVZKZzqm1H-6)*V`aJ-1(APQ6M!?LfyvCL0eDGb@8tQUH zKwcgs7bVatRVKWDerNw5{`b*;E&a5lzQa3cqxa9bzuDuyKW}<>g*SGS-0JyH z8vB)p8{Ki%e#^6^6WYD;8%rj1l-9$V;wBGl;vBz;zxBL?0Vh=_Jmrnw%wI8oxC(H> zGv4^G_*-9@=x_8w63YAq<{NAmX)}8nn7?3i%lQj_Ie#Hv%w=tL{JdySJO9AJb{7)C zz?j+b*Y~TPKaOKhcy7WM>-O}r*Kl+4^QqG8=+B^wQ;!_6x^yJYlp-fKji~O%`F=F4 zXn;P!qB$B?-2V8IRUGFA#c>c6$3ajW2}i~GWWpB{wyfK$G zB%bekoa3*rMpVCMXJD|H#hyC*f$YJ{#DaXWtj%sum9?&He`xmX{NQw~FFWhn@r_93 zKz(9|D(fyVt4B+LA$nRkPQ!?$_IaQ3mJp>Mkx!^?1(h9*HO#Jgti`AO?qIYHn2L~y z!nB3n2G=)1X1aP7>7_WgNH4{&h0;rr$h{!)7smui_60}eHXnn?(b2?Miy4wIBLng~ z0&l{`9Qx*Uhy3tG^*m*w_?PTg09wnqa%WhkkEz z&Qa*r&OQnK-ZPGitm|$$Lj=^h12T)# z`}~2iVL^GBEiV02nEs+@`VaQg|5_;hl}LY;%zN6gtSx`(o2KQroT-Egu`h@^X!f|@ z&x-u7MY1AorsEzxss&l$>N*s+=oGZT>Jzj80JJ2PCIBr#R?W|^VQ{XzLV?iiQd2-N zS(RwAD$!(BqREh_gV~)nbvR_eD9J-}T+_skM>NOn-jdJWA3WP-9lz&}ep(llgS78M z+%M6#6Hb1wJqB6MQ8x8ru=^#h(U=FlU&5Aeu`SX@ z>_F?2yDKVi$&n|ZhlJtd$1?w#LH`J=ZR{Vhaf>u_uE9ey=O9>S2Su7W*FU;)&&P+u z^mN&)2qq(UIqb0u=FHTs3}r50wPeErO#u}ap&s7>8>X&+$;Rj}JBJk(<397jAAC)E zB^GEB2@o37-ZnIvK7(BEfffqB8{0YYGGEZh1vK!KmK=j3F3#rOfOGT?)o+M){Agrp}1%_ zF+Vu*ov{A&92%&O7-{yOdhOujKbU$z|4CX!3_hf7!{EcVaf|Y6Br0_Hq=_q&Uwh=Q zNML*9&(GP?LFa8p-{+@g&rn)W24&J*x|Yq>a2SrbSsvuR**QqPPa!=azpVcJd!PTZ z!9ow@KRw`I7o{i?iBQZCjRuF2z;a>!Cy3O!HU?=vAQ~L{gDwJMKvWt7mR~Uc z6BPNUBO{5nLP?@Q2L>|#6U4A;$l$*C^#SucqM^$~9%U{<#m(^n^Gl+^tt`@5H5f^Q?Z1Rd`NbehcZgCTi39Q|&PX1;*Dva4^R}Hwvx69#hYZdk9+*8#f((6Yr=ikH;eSE?i+}6q%-;tK9h8{p z=XnA1n+6N+3x7D7pB^wTi-sO7XBy4sAh88QhNtKM(->`{T|3|a}a8N2hhXOJ~(=hslYP+q7mq_D80DPqnC+1-Fo0zG~ym$TV zC|o72;}VeFf*sLv zSzZPs+*OkHvR=}*p19VF>n}{P`DwFX{F_Jk!g8!4S&QbeOipSq&t-(%AJ(%O5VHki z4tE;)_zGVx;qxY4-be&{)LU&N z6NRLlbaC^upn6{%70b@EaGWO!sqw-nvwvDdPLK`DAKW$uD9NP}bdzxnni+;sx$EWb z8s^Hh@c6+6Se4AI+|fg-3q90;a&IK|b=j=&H_>3G?vPmaR>=g0182{x-P{I;+0%LR z8WWt^JR+7koyys8LKg-;-t!-o;to2F4@xlpiDmYMU*?SyOS2_yB^&T0+Qt-~#DWA} z=tg{uohsh*ZNb1r|NYp+!KMOZ`g5ZU&Izq^c#% z@L&76-?&3a)m&|^UByZclhL&lbw0<;!M3x~`VNa+0>t+@A4sFqFHUCsYi-1|EZ3VR zf-!LzqJ3$>61wezZP*3E*RJo}2_JO9cpQ!Mzw*U4D;`&)ed!YS6|y~MX&c0Y-cD%y z)cX^2yn-2Er?^l**kkYIh^*ICkI?z86|#EWe}4FakiXRNe)GpC`2Mn9enYp6p9B7T z`TkZi45%@`8~A^3CmTNxvQfxVHteVqd1k{Sep!qd7L-MHft9oV>*yrey{**mJo7{l z{)L=Kc#+$Mr`p)?cLw3_4Tqn`TO}-WOGxII27!MT4!puXFb^wD;q@e4D1F!M804=( zYes`^W$=sO{7?{iXwtX&evo6sL8P4LP)gr_58vNi7|jGQ7rE116a!flH^sr4(Ob6n?uk(9x`Jgma^R;e{=1Fe)gI#hn78B`lkd$4~B_Q@k6=UPyR<_=Px(5 zq38ye|1LjB|13T#SVo^5jxm%@sp_MGaAU*a&{DW4BUv1_AA9?eqdayDlp>@8n`oG^ z1=oX~+dLh#avT`6ybJyt$A}FyFCL(!kpBfnEu-<>q7Y@ZBHCsD; ze&s%1gEZh4cm`=WKhYTI#EAS-bZt7IgFHx!Cy3U4yQKb=%v&dx)UO4Si=ItMW@UQ` zKI7M-Q&TejmC2bmPnOIE+1d21M-D}sSY@dpZq`$HG`$*SAz=SAyRlpQ^f zRL@Tloph;ehH`2G_j^i}rq#jJZM#9tX!|h*jjQ0>xpf2&!fn9YX)9&>N0+yH9ao=* zNf<=UKGjJJXS%OxB)`*BI;cEU6UZ1xVb z;Y=vfnv(vVEdRqr^#>2X#BTbrBvIDeUF**{DY97}>?i2h801S>HVJoI5UzP^;bsQm zsWtSk>*S{TMxe;?DeSk{5shJ zh6UqTW(hs(pFyA1%U+Ew*so(9C&lIZhT=#4K5Mr(z7I;5={~V%BKGu0xX+Am9|7)$ z;dW=Z0eN?B&@Nuwx0O6TJP3Ef*23)+g!}qd!ioJ~8#J$G!&c&cFbLNc4QCC>*6Q%; zZge1#{Agvyg!D>OW;_A8QY!PKFeTndj6pj+m=f0KPL>|(2)2OCKZYw^)p11DjbRG?6S90lSEbfe-+;9dpV z6zEi-Spisa8@NURWIkQ0^+gMTQ}UbkTJQPr>VMo`nxC<1+WPy;9w}LL^{-AL>Upi_ zt)F?waeq6xfG7ed&sp>7f^WSsgDBPz=eo1!*0wXPu3eD}*4e0Bbf=#)XM8pwXS{k# z$!xKdoa6$6`MJA%!ZA@o=9m(OqFmr)VXW)!@QJ%Vjl`NW6tU$>;=csM3!}u{5Nyzx zEmsm>9uQv`CAOm4^xE)j1^x84{>m45|0rQwDAs@w&8OwaSU2D96Pr&$>E(Qg%VHZi z66MK3lz$6T;W7+AN`DtJ;!8>1F}{W%zN#ptjmDh}~rf^ep zQWSoUvgl!9WPf~6OA3advynOCxEUG5^hNLXq$ti5ofX8>HW-zr$mSyG`~0I&280Cb7sX3KW4ba-vBI8e%ie&N z+8<<`E*mj1NWvW#HPCyEUIb=4jWL+OjeyxoF-%j)y*UIg4uxp}jK)R6w}#-hQ1}kO zXrClZCt!`Y3ow0KBu~p9GA55?28Lr7aA> zJjtfCDZpsICAY1BPkY&HbMT3LB@I^sB;5S`Zo$#I3ckSAD-2Qv zUzFb_{4%f1^Gt4_M$o7Z_?-7nL)(!@Fia^jPlANo~-4*%_P1P z+AzNC!ITPeB=_rkW7+rc#_wT&Sq(tvO&gQ=H4W1vHC~~sTo6UU| zF6Ln85XbF0%mQQ$5|X#nez7_&Y8Fa1w{}G__^*Xa zX3|3++`Qe-DIUZPE7{O^#H8re88X zv%ZX0GR@iYG=(e=7rDSGZ`mJj{@1?$XvjU*uI4Pe<*!eC^V8&?=MXLMmi=_^i9cw# zZ($SBLT}l58zy((IPKsfqD9`avv>I9d;dK9pjkx0>iB6F7F}`G&JPpy_#hp2=OvdG zGP~p{Mj8KYp5(4$cdDmy9J9x3r`>VDp_h?3=`H)-Z<_vj>#eUIL=^NI7QY}+bo>a#|gD8!w8@yA|=_G=FSfJpi^pg$N`W5Ql>RNd*cSB=jmILpY_zQLvZI!FVx8 zUL`z)0TChFd129wd=sEofgA?GIeJEiWp6y6s!FhO0-IS<2ygSk@s8_CIFW0YaL2w< z8-aO{6W{$0tw-_zA(?hoL}VbP8axBF5E#RdA^w*-GFXY&XNbb`4Rn$D`^?4(v3X-4 zcjWoV5n4Vinw4z|bTWg6ct?_0T{J1B8s*riKr;Z&A)#by z0E+#R^W`XyPFo&k=Arg{`8R-r4ff;9Z@K(da>j-s-P4jV!z;~LT#q8YN%<|5-xLd0 zc+zN^&yR(anazjCZsJy8JTQ4Um)=o~G#Rlakq0KNB)CKdaie|vH7KJ+-%S>g7ga;G z3zJH?!EtLL{(p-eP2;<}qpfToX?sftFjupq-~Fp@M(=pQ-;C~TqpQXPRRp~5BCjhQ zuW^>w*HX%>dMIA4-0g#{h35RXBC}J{tB^C{F?&DHiUIu#ub~n zzIC&{Ke-klZti;fg{ipzqFL@2Y(6h?zu?t~VH@vHV#_7_FHo0RXu;5ad+Y&~%T$iN z)@#~1a`h3XcDUIbgH3ZcG+T7Z?O7BU+pwj}DAaskXk6rd8zIaSCp3n_3%jWj=1M$J zWa4NE`J98i0n&~Q0<1r4FQa}jELuWr=vbAuEunPLz<=TLaQ^ii+OMNx`zJW!X4S8+{*cZ<2AxT_cycuk%S0#{`9xB|J!%} zoSgdO`;q=$!c@+U>%UpE9A-#0Se$k(^es0`%ooAq5QA?4d`JXJtgWw-U^XX zppUujQ-|NIWLWGGGcO(EE(TkyG_4ABM2PiOB8DSN#%h{CO{5ZtK3-WRBGf6DCWePu zmk6O9RVKr9+lMSK!b6r93B!kk$GVfL+=Wb43M^?|$=W_-xvnt<=&7Y7pni@U*6%G# zOCt2_onjD!?(;+TINcy`Szc>Cv9;JeIRd$>aW)^aN*W=nXI`Gb1hVTp;6=+c1Y36^ zMJ*B$`93A&r8DJ~7cGk*vYDMT;6+QJKyAkiG8RgC!%tCHU7)oiIQDaJWA89E!Doa248W{rMNtHGTLt>d&SnE`lNI z&&Byow(>l{JgZ%AC~*D#(l_JgrEbA7g&<$|SYPmd<-)^JHd22IK`&a@jF1AfD9{Fg z8Y(>8Lzc~OL;ab!&{=UBI82bhRR9{cfF%5^Wu>_fmW_UW2;<(gOo7Pni_jd35lq28 zi+r04{iiKS^p8UP*rzQ!84uK5)P{bp|MWVZw%n3M1|R=bFDke`Z7IP~@X#5m0DAvY zrJy^gFZ#6QeX?iY)izZX|7pu^##pzR=7{ zgxpsov-{s8dXz7tGdn)(_Qz*W+wobm)QK5S_dbrY-T+H^5F4=}@#%00-=@)~wrC$j8 zM&IwLN0Q7=J%-7$W-`-Gmb);Lo_tJy4zB4N(9#lfzn<+{c^iW@LR2K41btb}<$oe)a%3fXA(Q0gELaT{zc zLz{)4g`TcMx3|MQd6+8-DgqfXUF^xHE&I9FL1O@?V>MpTi-Ji`+#TeEb**6jG+0;H zUP=nV`tys!87dL;dA}6;zt%^?>o!iLUp>gyPcNkTL&PH_P&^tnX1PW4OHsxze#@m< z(u$;6ru157y`-#Jpi&;c3miic9ImO5e71(U-CV6$9R*0rl>!$TtxJ6XKz1K~zM=2Lq%;ec|uM-heDf9ANyb^&H_lBITiB})`t z09y#|ivdfGxX+czH8CzszW|;BWen2b-rAH*#C=kCdfTw&I8P*W+P%#KW-d}HmVv}# z6zCIM=2N-XHyO?xqEswWp=wp2BSIB=iPQBp(Gj0|h|@!>5Xj(mv*sdat_C%zDuiX{ z-sXg+tv16fFK4&Fs8Jb3?4J2muWtd|RTngD=Fx-wDoGWm9eMT#PLhZr6SHM)6>9P! zh(t{zZ*fAr33U=xXWo*X7nAnwTJY5HYHHfeJGe(&T^*MrR324+W)a5M*4bqtYA#EG z*6JS1!u5h|EhUMmhljcMBR|nd8O`2v2e~MLi4h|stS_kW>MV8cG3%g0j$sDByY}fmP>rg)EAaZe8r4a39X(ZBDtO;Vi;#kYFE+5 zgzT3&>yKg6)pM~sc46mF-24!_*jyLF{E2kGQ#5+W?qYVtF=YkgJM{aWyVtWEIEKX9 zNbqRqVDEdHx*+H_-}hWDfhhv!P6j;#ZZBY*{fBV+#5CJ^wmr8xfx`2>i>+~fo8?ox z-qx@C?JG3symLe%?|Vu&76ajKIMlhZ7L2w5Dt53=fhGm0>hSVkw-C50vaB)*5LRuA>7Kg00>(is~LHq6T3l)(s#&s3qJ~zKizKin9 z<+~!k5??96M(pnppjm+y1GWg%NutBJDlw3Pa0ucsoZK5XjCAj zKw5!v03tHID6)sIGWg%X@x)!r^2`f6_Dx zUv5ekpjUw$ji5zc+7##nATra7GPmMO85qKsxdw=^Y*e6Gfj;d2Vfeg|%-!&$O!TA7 zmN$0jIho0h{-m)oryvZFs~tjuj1L8k)U3N$LvtUwC@k(pkUS>6VN%naenT&}?@ z6{u051MxDAUHGcZZSbT_^rOs{H`LnUWJiC}SeXlzT}pwp0yzrA6-WXQndwED^YEn% z4B^Y%iHR%8-fjhY6=*@c4Bv*Y%1j9;6a6T&<&B9ghm#%sNn>Sh_Sq@Wra+|vH3~EW z5Si&knXB-n3=HARoB|>;rxhqypb7CZ{9=4n=4NTMQFe_AG%Ju+pj?4U03tKJD03OUlz}09nUg>yt%VAt6sSPF3}1z>%3K3a z%0xfPY1R^pwE6}1q z8u3aR@l~07;Ype3N0}|}`T1oICp-F=1Gh4lE4xYsY7{6`Af-SWfXGZQ$}9&BATvYw zGUsUUxB^K9iV!bl_V87i%i&3x=tr3?Z?r8ACp-F+#>(8O3vk^E^eWJ-K#Kxx07Pbb zQRcjFvara)*;0WhRZ4 znF9rhpiO~J1!@#%RG=Av$V@NFT!$}ZUC3iP5o#PB&GnOopVndrxS zw!G1nJDlw3Pa0v{iALN#8QVn=PsU=8Q!yQ9>G}9`Wv3(`j&5Bm;F>&eW z0Pl8qA2SQMad@}GdmY~4@IHsPI6MbEXYy-uc%H*+93FRgg~JmLPdhy6@FIs7I6Ud_ zLWfJ?LcSu0OU40D5y#*}(h0l_^6~s{Ilg=>73Z!czk*z%qQ@yUC}MvfrDta5;&rrX=l4 zvX!M6Ph!b!(PtuYeV>^v&uW&^aqiO;AD&N(Cz8j3ika{Z&-TsXAltqpE5jK0%CIKb z3fN!=Hf|gOe-3Z>PV99!lDa}7ERid5@s8|Ect@6Au^VS%(9$yuHp$kJq^fVB0x1Q0 zRq1ooB@RI92)$TG`tTK4CxlzIgR^_5P@>d^bMb~SZHew&l6)0Yho(1Ndw z<3$$E3~(IpkU|+y5s`;z^+Ht{)l)JZ)l)b-s^=Zd4+;I?V|LvXNf8DQfp==313Ukn zT2UO#hcWX^t2|Mx!(KbLNKSTrPu_#{JUziccd7;=9Z=SPgc{(TMVH|9s0q-xzSO&I4# z8U@GHFTa_Mg|T^Gii_RP%dJ}U@!zj417d4j0U)VyoXHiyQ-CHwT=LW<0U)yH-fm#< zw=C0A&}fhV|15Qf0-QS%enx>R7ru^x@yDs+0=hw7@dGY~NLOxvlO6p@W0TMX7vZ~D zfmRD(7Y^L3L(9l88l|uoP{v9c4aPyz>il31&`u?y{h=I4ix?IJGq})sBGCP2`SK}TojMldK?&7(P)KV$?8~_16Mg@dEshI;4Z%2?vy~9Im{uHb~Y<_+H7My~}8zYXR?|-fYiO7RS?tlq9OrP65o1#IrtD3+i z@>Fga9Bi8vdMcM0XZCxat(j_=7$tE({WZFC`&7TDaw#GAQVUD_RIcPxW^>_nv;C)X z@tEPwl$0B|w)Ipl9-DUKYFIfCE<4d{{bc`v#KV%f6~qtGoh8Dgemz= z%WpZ?#8R?;y%4107MI_o{1(zb&NZ`?*@R^}iz3%6%~Kger1NCUmn7 z{M_mYE_Al5BjsHGXhm+KfM#LMh8rk@#G0yKhLhNH5VFs=fwWImaIo{Y#TZw@KIO5f zF@KxGFYJ?i(XEJ!`=Vf9Vy8_U&U-1)t3a~?Y-W*YG~^bjj=n~}!fqkOCelXpk*wuG zDJ3G*nS?~xZjRZNYgFoiJ>8G#svjj_?UInl9#Wc}5Zn(9tHVI%R**;@*_UDQly->U zmGGpNRYV`qZ6M8O0=71 zgp07;MwnauI{Z)@8KGTVtF-z*5%g4#AhIX1(q|JQOzjJv!t??7Fco;gvkf{lsv4Wf zqCCy|QNiQ3>2Q?h3Pf2`vWa7Q!ERK-@X>?LYR&NZ8o{rg2&rujBNo4z3BT6A^K!cHpu2WM~|)_ z)g%?74@%BFx^ti@i3q*t=o6Oyo1}L}qIMN+N7(pmo*ywj^ZQ+AXYK1#RQvwt2gkoI z?Ozw#Kjb3pe{Kve=6&bD^MfG6Uk$2E9!yM?{BUnVRRMpBK=SHqAbHr4VE;kxF7t|U z|1%silWzDsnyM@JVxKX|HWlBvSC4~%01^P=>kj3fN_v~m{(@wL4-F3IR+p?E8hnx7 zu)THx*6fHx_l&2VwdwmCG6m^_lF#DaV*VgWRS>c|{{Z==!2LQh-m=H%-Lm7uBS!SF z%X6T&?BBon_ER(VyZs@ehkMJWEV{V%xZD%}PV`uB+4#PK2g+wooka9RZ`rcDPrvYI zAH8=T(Nn!;1z+vme&9V@785cY>6p5iS#AoW;!>97<3O!N$I z*-jT7eM03;_gq2r9B+4l|_RtsIH2uuh7kKgP zq3Db#%@N4-Yp68WP-(7V8C)al=oM(}E3For?M04Mjv zg%ffDqyb=oG)V6PneY?8PK~uo0i!^l0(r`)0|0x|UHI~k>*|zNM&0}Zr$93Bb~qy- zP8uo`2H2M52==O(M0Ad^odc8O7EZ_lyoC#-=WSsWh#jAI0{0rAEXU(GRi33j1v^Ei zfbtaXQv=m0*eEiE6cVA0dwVE!9NNt|us0eX6u&Dm^n7~7ed9bNJ~ryU)vN;Zt`Bx~z5{~8rwX^U5j0&M`oha5@cs+t^fdAOyXI?vPC>C42Gr%9VA9+j>R&| zfU}R0tU^f1B3sZT+U}B)xfh9X`^$D)b$GDiv;(EE)B{~mIZuksyBy-;0xB^K93IPmtNRsrfta(V%Y`nr{|9d1t_P1(GEgBO?n-V3* z&jNHQU;s#u5yb}3{E2xFCX3~}(u_OOo|jBp(R5VJF-yPG4&u^GcIfGn+#RAsTeZ?m z`*NGMA37kBX3=bzVjO5={|kpIC&z9&50T?gB`y<`LzPs+eupZpxN@kn!rV964hTak z#XKo(*s-)8Bk^rkeo-lM+-{0(Hw%NQ6uJ}Dub_W%Zl@iiAHdAZj=rZ#Pe)#ORcMU9 z4b{u$7LwO4j+Z-WxpGJ4^|hgRwN7TV*zwqlEnbc6Smbe3imr@wW3VyJT$OQc7)SOn zjr8ClOU#c=-0JpR>AzexV1DeXKl<}yGXY{YV%EZ`Ip)kuWPYq58JQp3c;i;)$87%y zch5mn)l>vtBgfjtEX8i2PZqy|7x8M9RJMBoQ+nxE> z4Q||qzMUN5l=B4(#TA1Nbk5LuM$VXuP1qnh9KAPt7!w{mjA<@MNRCb_+0iRU51}I5 z&)prVq%U+2S=^KF2HD&{*J(QkUoeri>sd?LIpAy(I|uSbQ_}`ql29hUIwh>{%}Q?P8Q7tz&X4pe*#IySJ+67t!%UAGAEMI6%`axcg>w&lQU0En zr^xxje_P#lM>fxX!OlN1uX1mg%_EyG3AL-3GIww@>K5pvSzi;*Cg|VVK{{3b?1a5v z9R`ORxI#v#t1-J9P65o{4{fz3b>b;4Y+h&uR15y=;M%)SzP z1>OAGBWUJYmuIoLzXmaK-A+CV5NV6Wr4Ez=GzkkV2+G%<=qv|p))m|GY}Jqn1tN`$ zFiEKwjXSNjwC;mt@WnYkDIh%hVc zna>sZwLC=OV8hbW$F(X7G3MiDsu4hB{g8b&($04`y z;1Ryp7)U5!NeXDiQ~uddp&fWObjhDts~l@kp$AMVRLu^?j7uc(k^WpafXDT0sLkbm zf&BI(ChJoZuM1b$o~MJS6Q!2Yeh*bYYwkkYCO)~1`uR$=i(tt5nfB)=*GX#D7xIJp zS->yqr+lFvMdH55of^igsyttfvrn{XvALJQ7p3^WRRLk?PK>hP&FScy2$wow0&Gj$ zQA;eB;1H?XX^j4nnLf)_q!grcXGu>HUGwDEHU<>}V>7;+bcXhwV%|W?_`f7A)j(Ng1BKtu$bda*AM~;^k{Umg}G(zs{qIu|=h#J15 z8<08vPWtwHnH_(Z(~Ltu%J_wT$QO3IQrxk%O1^d!Dn%HFg8&Hy3KS?(zylCHaY`z8 z;`DY{0b$UAWDCF=CqTCXy$a+AC*0>FUwabLUDf8FK_wq4pNY!3M#<|GXi{LY0<8de zj?r;;CsQT44QIHMspMnc`LUCinkizY6i6#ju0SP#fNSKOD#=aRhmKjVR*6VUBJ2~& ztiUm|LPeO7-0T8oGGR*A(j~J;3Cs}?Sv(kwGw+i9+4*AP%nKh3LAJ1$^~=waJoJ7V zPIFly5#9w#5s@7+0a_GjQ=n6UZUE$Fr4Jusg~^7WDOEW{O7@cGTaVclPC)7JL41}l zeWg6c3_*tTM<0dd51nLn5w2Y?;_DU*XDK8dzJ+RvNFCyVB?)sE7)ZW~V73ojZdQqL z$@0RkP*#hqKehzU%Tl$QBOxbZt$Supc#*IM|YFPj0=P+<*)B{7R%9C%vEB_-cC2V_FJYLb&G&b zJI>+SflwuFbXWnhR9q4klHzsuns9dqR3kK+l%c!re=VOKZur=*OZ4m%jM>@# z!LqpVOBpBXYS$;&u%P|3h3LL$|JbOpW01rbb#jH+AOW`7TDcRoQW`i>yZ;}Y(WJfz zhdKqC6j-c4D*%oaB>Dy&PLLAk2iGokoLIoZDW$+rEs@X3ox3HaxlQ>{gM`mE8zJQr zIf-i(aJ5-!&!y^dD-=$|EFVrmv2;=6Ev#jW`rKAg$f6a&@HGT5N<0*T1>Jv!u2?ziu>E%75gLB z{sO9YyQxqosj=2#&{7nFJ6aOgFo-)sAFrWdKOBQg^h~W*UuL@bj-G3kB7hl`)WFj9 zz2i)vb&%vRjP1X|)131`C=+Z(c9>zxPjeP_LR6*BIDR1yDz>>yJyZf4V2!y-B?wV4 z4D@%pdMS;qB5TYP^$-UnM*<*24vKi#(h<3OQS8zZTNXjF9jj+-wJ=56H{P}*hfuX@ zC~-X-2C(+SKVPg&A;Ep144V9)!7B(UL)&+L_}=_-fBZg?4N&d+B+V4srv$$kpYbb4h<9=gQ~@07+^`w#Rv}Qa zsjbMzt(aT!Vl@*R$GOw+_CfJwS6Be*a%6E7y9$NC&Y4DfuHs%UWH}TWOQCUm`R8Tb z(P9jh#V-p!95?4NAP|hC7ud}+4ZCwji%F3Ffoh;#1hpE-rA&K(+IAFd>tp*0_UJL$ zZttpwJ&H_8w~u1mN0Sf3usd`#nZ?8=&X&&-oq*A!$#mw?H6SH#IqhEZlqSX*iiYr)}>=Br{itp~(@(rzpZ^pE(39?BOtuoa0r(j{M*Ecv4Ugs*5pYF7t%3X~~Op+J=a zeWP9A9Ce8+kW`=$KtvmHRl1V3DA1}vhXP#+7zOf>QtD>{U;fD@?qFVuZXf-KlQZ$S z!x;f_(n#_ulv||&H3~E;(5ygGfdU1J6z~)%1JEe5N$S#to!$~xw*tKi?riz@2H#wXU5GRdIRiUyg zQovK7Oo0joOr8_HSAiV$iYt%=AgS^LH*4U<3bZQFp#X1AkW8t9WGt&Xe6_47Bc-Mv zQ$^0iYaGr9h?B;qs!Z9HE5JJnB!U_R8WrI61mcxYpg@5l1v~(fDnD=s4&w_|rvlvy z^eT{}awcBka7I9!G&WT=%C}B|CIuENz`GGdtRe+c3h?>> z@hVrK5`d)258R6>cnQ;|K%NFpC{Un)2g#VKGJG{vl#x=?kEtSO;%SF70^+2xsp4av z5@m}5Z3=WM(5*nZ0u>5WDNv^XuPu;N`GFJal~kZmfs_Ji1qvY zawcBna7I9!G&WV8n9Gq=bt%9XPHomIkf%}dy;bpQRDj3%ZKf#D20&8f2TrM%rvN9A zgsMUTUM(Ol2}s6N72vC>qKuT9eoPfP6Hhvv5fCShO;sOG7zn!@<;yet;*wOLP=OW= z+^PT{^Oe9|3h){MNtGYCLcJ;#s8OI%fo27AAQ@8?$5&HD87VdWm@0B6p675zK%6u- zRY_%6pg@rVo&seGbm>OHZUuT3$k8xy0Fo*{aHEE4Qed$HtqSm{zvPZVkB_P9!&g&9 z87VdWm@0B6-s^BiK%6u-Ri3g-E5I}L5<#T`H45-Jy?AlIp#TX53KS>;AgS^Lx9Ut} zn*yB*bSu!SKqn+)s=D#jR8dAsO+TiJoQZcioDmQwjZIahva3>{PJt!`7AwHH6-i8? z0x1R33X}toRQZ9sF`5x7qd=bmc}kT~pcRraRUP z$DL1aCOFvn^oMWaNQvju-B17wNJqSvstugP#Je26*x_vsZ*llyhqpSs(cx_luX1>Y z!^<7s>2S~CT@EjFc(=pFpg&Jo{qrpTMA;vYCaWNW9R1soalZ)(m z_DlJoGj^9O`b<)Y^XzZE$N3_0oclDB3(u#;lQZ$i7SrC%5TWzzGR)<09=@S%;|+G; z%WRZ^v44`C+<3^p{X?8&f5tz_emSOldVa>LZdFrNzgdA61=&m!U(B$;83A$9*i^NFQj*u9 zK$ikWfj$f998`_EH!9GqKnnmQ38xppQ#Uad3EY1h2;OdU325>Y;4ZYoM3eYo)~Skv z?M9KF4>$o~XdZ~?98?>kb8}D>p9;-+C#HZZO_+(GQWIu6sMfj>U-)kSW^F`hBj2u# z_|Nq`iRk=;^rEqta%Rbx2jq?hosW_EadF@9A8NAiZr*!4ioe_sf1)4$F!1mh`beb5 z4-x5&5@~RNK3sdWuFPmGIj(ci^Yc8zij^6hpYJEjA^q@i{qS8xR-T{l!m^+4N|u=` zOjM)h`qOB3erzrFZ$Y(+2W$#<=jW%N8=gN4=5@s~V1MTF^#c#R^qb!vxIg%g>;3(~ z4FEBTH|jF%4?cXN><=#dtQM*`D?g4sw275w%{g1yAI$a5GJkz@82T`nw_|h2dAlUP zS@*>}aS`#%#woFRH4?(P!0xm8_Rr57)Mi_YeUr2pPEws)73ff)OMx;4$`zJ(^FV6g(N0H96t^J}b2wL5#C5?hs)-*Wk_l<0aX5|WYQCjeCA3~bxB26()SZ32( zyxL8|{zhIp8#%%sPCk$DOEB(F9CtPB6BY*OV0HyEs4+7OzB{-X>sj9Kz-h>K5e)6m z|B6W-YJWbul#(O%z_)0)-I^KJ_8J5cwQpotEQFU~e}i?a&W{U`-5q7um|O$TfN?L2 zSD(x?H)BaxP-tH>C~^M-pS#2U)j40Y$CX60++KUsic&rdrAtsdbH%jW)(f0d03em3 z28^^)P%>7ER;U&9YRG;1#or0%XU~f;!Toa1qO$+@EUaxN*@wo40REu0Dd4dU?jP8E zlb+6&)9UPiz!&;z-hdC0IFAue;?iIBf7mP}&@3dw%dM^Huq^B5hXt|gtE~3@&e!7o z(R+A)c=@9BcFV)ihgO$<=k{+ez37&`?&5Oif!@-6ZoO-K^OAWfqKA7+KfLFaE2jVI z!7)US^_G6x`cVBZZ~1s6(G$I;Z=5ssxbLjL{x+hgdP}eU#&_EunfTX#5(v6hu?)YLos;Wziget8lFd;MP&MTPI~qiOaqDH^}uLG)2m9Hr>u}Zh2s|UFA24R0&7r%J0X;D8CVK%S`&u99Mn| z+!+VSeRB8e2Q5Dv&dgvMgYqMRxmDakho4RUg6AqA>`mhT&^`Vs{(ZMK@^liq_#-W4YKcmUkLIFq$NA1OAYn9u`Za9txs z`y1S^bE37swgCIxuanK~oSDM@V5B!Q>Fp~tzRmBtCg2kQ<|l|vOds2E0h$$Pv4CzG zwEgcII6@IojP99Y?9*EY=}OER=+E*HK{&62RBjy=6@k3sf6X_LCb~%AC zH0>)xAb;jEGTUQU`?}Lz)F|sl`?}#*QT)Ar_{)L^_O%n7)xKsnmdCQQrAAoedg)!L zQjaaLm9tx9$vuZ|e|2shlq;Mkc`ip#qn;T2?eTAr{&Gjph7Lwxhg7lb|AT90(ovVY zii#6)^yY0M?qva2QH81=h88b><4zG94*DbeSAwca;mmv7(;|0^*yr8M9kR*AUSuRs z73?5aK;hjUxdCcQ65phn)>wQ9UooXa`HsHz?LkcE1(i&fn$C|ZSfzc_xgSku4zpgb zeF>XR7Sas9{|V!{lb8i-Jpa{%yxjk`Nck+G+iuRS4TS$=`CLW%)wf!nu6%y*Z7HAS zaLr6waG5Kg1+IL=kTNDUr2WdrhC}&``!UPHZwg6bP8Bz6N=awFV8%3zIrFWdO)0a( zeAq}uA9LWqaMqN5@KaaqVM-qeOzF=qVZJ}xvxuhjk0-;z{7y}2r2m^{9~>4;esbTq zB*p&kFD3oTIQOC~w(6e%tlTr<;#Kdp#}x1lX72SARTij@OVo z4$)zsGAzcSOZO7)&&vMY<-hoH%eouAhS8he5dFhThwa_DUiOMDUi-Vb-mnfYyVnHs z;=(Vt^qfb#1yk#x|C>htw|G1HzczpFWQ3XZ*lRfp1|Ru@pWOD_*}g1nbnQ#Nqz{e7 zL%BQ88#Us=Ke0K;_m+M>`G|AU#VrpLJ=9zJ@;|$l9k|PJClNgg={sS+v$s6NWaVqJ zjJbtP#`vG0EE}a8zY~%s-T1G%VZ;CMBPt7J$gJ{KnpaLjd7d4#7~#>49iO`QS6;%D zI>x6~QSW!hQ1zR8+Xbl{^UN<;*!RtHT9o@2#3vE|ju96kVo7AsHVB%Q-*VJBWRu@c zq}e)@v8}KfBfly94))H9+w|DVe9lhGha$S3I1uS{)2^{mUC|2WUH1%XlVJd%U3Kv z!-h+7&p*w# zY+TNdIu<$q9^5jM+J5YE9*;;frc1m)_}9tzu%a1?X`Axg6M7k-~Il4WUtqJj5)@bV~jcG zm~-ys^L{>mvy{&<6jX@6A7${}glztr1^m6Sguk~j)vmws=M#XkYb}3X<zAe;jaz% zdn|hpPz`iX1G>MJfNme=)vX`@SY2awnRb(Dx8os$52>q-P&+1Tx8OyV zyjY`Nyl#bO0xq3Ozr>(lQUy~#kyNQ`RpK|07@bU)@CsjIZ;4=GPcU_TFta_Fxht5t zFPQnEk-6RsZG(I9RHLiIv>Q!(D{`gdA((p5%+#>(U530nY-Z{j_%2J{eQablnVH)x z`%`$AgLbpo)RAp;owxri;I`?b>|knBF!Pw1sUdE)?3SRt*=%~7iJIeyHUu+|o0*LY z{5H#O4cgnxroBw`t9YUdt4;CJ=?Cn8&kJ)YVw>_A7G!8v7bp$h` zX66Pn^ROA(ni90v2JP1@-~(AhPLDNe=vZbA?M$&ojlN87cc%mc6W8MJH7hU?w4T_T z){Nok*%(-G8Ki=6n4i8D>01b_3VDImHeyw%=>kubo|xXj!VeP=`t+H-5Nc+=Zie1S z2^Kb5;U9uEq_$LD0Xc&;22+m-x?H~EdsZAwJ+9vO%SmSD8)m2#QwBbIofU^c(QB&5Cwebv$Ab1cvUq4e zSnJ|9hm*CogSCe4kXvwBVB&jVsTls&;cv5LUtrlYAV#J@j7;rEjClOjOa2E7_a*Sj zgRI5h@xUj-OFlYIji>SGNIvr8`NDV_56`5tzsn7Zr}6M$*-1FqJ}i!dH*os}+s{!c zlpwh5mfUpcgpYdgGxG?3j(s|PQs4)jxT`#p0wvLizxDWQ$KNje?Ze-PMss5Z1pVR3 zff*n1=UpWK^dlDW9@NrU{LK~BG(}X?R8dXSL^XY@6x;HZL(_ag^3NhtouUkJ8`=%K)Yt3&Ka{%=Zv}1swvW{sijoA)5`h#tx98F zb1ksLM(*R!ey_Q`kOhqOrJUCS$FJdUEB^K%Gl+nn_55k)&n{pAd-Fl@qQ$*2A?`k z3* t~l%XSl7|aJ6oY59F8CyFR3T+Hc)YF353#m-dwV$(50=?EmM=bhKtuz-`SZ zU)Qbilt)^pde?`pN_)%weYdeO}CD28bW4%qdAh+G3xkfypE=Ex*fi* z^C$Jr>pD^gtSPpm(_hCSua2WMbjK9^KP!9!@ z#%6qB6gGmu80VQIKQTvsY|v!0w^;U$pxqI)qh@Gzk2P%c8K<+-*Hf%v7oUz>Bh-*adNpC|wL%fWeTHF~+`n(QmOEGo4f_pwMtVokuXLMwEyYCDYsu}tMrj|Y*P3O}&<;;CN-{j7(4^cQQm8+-N^MZD z##Eu2M_#vVM+)`o#xn{{%I!#@{@hY1UZc?cs!(@m3m>Fmzh$T~-@?HlLeq!YM(PeT z)6ru?+3KssuwOIODDy6z$V_c9GoywYiVETzE&CNcUcE{u!g$rljA2YGwc6~^mi?L@ zub!n7S*aTh4k_L7s?p4e(G)Xtr>DSt0{{fZ@RC*V4&AZ&Froz^xH_ zi_#ekG!YCm5ezgjN|$pwT+SH@oYV*Zyo22uOhO1=+LypDX4kuMe%UJgf$ts_z(4qY zK;d@koQ;(k1LG) z0rbixhJ)IgWIx_%oRR zA!_)=;V1^C06O5TpM)j%4z9TD$HfZYm~Dk`%d^6F6jg zD|}CGsfGSk<}8B~*TUonV>v7okSABfV99lvY(PVIVY!7dX9caJN_t;woH57fJG?BH z@8NZk0V%eUa#kHx1(xUn4P78(RV+}oj8~KZNakQ>3_qnTu*})3Gj<5bYQo;Km&#l{ zGj>Z8G^Ahyfi$ck#l&tA3U+?MLJ$E|D~Yl809S4*FJ5*A_T$;9(KT@@m~Bp%>rx3D zVoi)9A&A)oF^?b?5X2&9Pq%7Yxz1RjGgiuVnVj(D+>WVEVswd4^o&mQyiT-|SFo)h z2<O!{j+E+WL>5M5lW4g|mp)+Pl#^Ip-ozUT6CU}Vv2Pue`Pe44bf_S;A6)R3p z*Jtwv4UklyYZkm8w70@XY1!{v_5m|=0QzHm

&`Jt@Yh%O927?UX);@ORt{O#B3Y z9}~w*1R8Z5odsTbUY?h!ErBx$4R9ss0q%$%f=u)fheVIF|A?k084A3@X&n;cdAXt_ zT>bEUCS{*yfhfIPKzUIe=!RM=b*(k5b*oM!1i(iUfS{281dRl6Zq%SP3MeYvoS?O8 z(6-~ssFe;R2A?^+JSGwgl1)u!;zmsa;zmt?;zosS;AW}B9^ht~bi(O@9~{QtQFuP! z)qukYz9n%qRrb(fGP9FE-Sne;im!W)@@_~je{X@H#RY*%yxap(iwh={d8x{k8INXU z-o;ssUEBCW*U7H;`STHcTDvy!XDfep^XEPO9N^CpB>AX`KO6Y7g+Fid=Ux6B5GYv- zePjwE1QhWFCV+WS5|el6Tfi6ZE-w38ncQ6dE!?1-T_*-^GXdGgpFR9}pFaY17h&ih zI4G4A{2A0SrPM)XR6*s`KoywGR)hmgAfi@+2wQ<}TjNa2#q`@B&`Fa`cyu4Lxf!Gu zt{l8OIQYHb-~&(-&1UFOk2PlW%{|jntT7kgf=h7l&fws^!NDK!v$nFJpMQ8=f_`qr zh(YP+3zU9-o_ZEy@)=&CpXCZZTghiITBBUCZUR>@&p%2J&$tmdnsFO&G~+JdXvTL- zfvC7{#{CnywP-eORL~c0mgX)|ZhN#{{3Us=|wW2 z(^E1?&ywphkqqp^ES;7I3t{(UA?%(M3eK0XQD>jh_2?m0x<~+&UZG2;1fcq%1n5&& zr)aR2NJ1^uD2sH)m6EX!)w+l^0~?)#}pg<(jN=1Z)&Su-WJY!S&KX z)i&C0qFUt&)hbu0R$QGj2~EZ7d%lE}ZWOpRnn8u)DZ2J_U3-RHT_X_YrZfdi zCRdo7a`o_(&Gh~8!Wp`f5?zU*D=F2LkfBb_;8}chnrrapApf;+*4UT!o7u=}eNZhE% zU)(H}I8fYR6E&$qX$ETDTEN49&>#HkM?FK|)w2QUyRFg?tp~Bv36E=> zb9~DR(bLFz)Sq(Y_*MYH_!d_{_J5@}30DUi(Wf5a`Q9=@VFHkt>Z`X++sDvO81;|@ zC}6%BuE9Pn^TS8tjM^!;eK0Ckrq@cHS`}d+-GFDVSmyw(FQEI>q_V#Hq{a*1@SwWA zAE?As7N{yqEV~9lel-XStSqy_eGYV%2%!Dw{uMZ^m^@#r6ZNTZ4>A$u9}`jj$yM2* zl*B~E$q9$KAIEV%M{fJTIrMBTD}Zp2iXa?_bB;LU6@4ag&-5x9)?Y;@LELN(9N{m) zNPq*!qLXXo&;J&0<&$!o+)BTn%4x$wcneXz<(7SCZiQvvlUr%Q^IYSs=))F%V=VST)flji$^_vElM`*0jPHFBGb9SfvsB+b#^T5vURrG#X^+s^l& z!6VLG&DM>QSQi2*Ero#HS%~w3Y~-QEkDX!JWpMMC<64pB$2dEAIr*T1d{9X~sBs=a z-p}kef00CexMxZdYAyvG%0Py4P@w`&IRz0QgksS`S1$wbkD^rk^&gokw7;A)6=j^M zC}VJW1s51shDX$V9lHgzR}Vw5?e}qu-2%@48g>gvJ${%Wn5QkD$CWPbN^{7OTj1xy zPmvLs#2>gC3)dI+ybL{&GGQf|%lWShai|F**Dphn4-GF#asKpeM3IIqdfdz`_?Z97 zWQ>h~6B6eI9qmD+9H9!WEypoA@jC#SP9QU!%g$sxC?A31jOclANJ=x=zL__mZ77vH z8lY_q8cuupY8>az_}x`IVu)28el=rNxukR4A9eiwrMThxkFke(oG16iP&%`QxFbUI z2<(XP>v;Krh0O|ozL_54FRKCh??5oU4)VYp(2c_|bvVWtfb|OMnxU^*`pT)rF$k$| zHzLDtH&StYDjK-KXo?~eHd*HBx2x!F?dchmV&v>(P;LA(ZV_0_ms}3vWHhmD3^md(bg$p-?S?z}r(qcb`RRrwjF*S+BP*2Gx~Bb;dr7$)()SV%YktNUe* z4VDQGz`A`zT4Tvz7VZIADPmvDY-7On*?=4BXn{*_Rf`Jzt92{fG?ng6t(%yOeP7J21((YW6{*~Gx;NeK4UIkd zM1d_5?52GLRAGQl#9z0 zG2jYxy0hXCrTKGWC&)NN7E58y2*$he7CA*ed6`?r_S+m)5Sz0R?5CUmls`Sr#z+P; zB1=IC<1Jn_clopVv1YLd)^V>_$7Nn(tWrW8|0D>1KduFLS9lo)co~c^6U&mOfpcDA zF7i{KP@-Z&`8%9)s2jKHihhxyN&%pPzmf4Q^k?Ri! z&%uG2%0F+|C&H)m+=w_XU%V`in}ll7t|h`mLVnXpO1POrg<3* z0Gy}rS*Y+yQPn5Bs{T0rhsR+~_Z5c*#|Z+MRbfJZulns{;%#){g_`kYRP^_V_Zu$* z;nm9p@9u~GZk?dN2je}yB9f|_;Z=2&m(HbsRuXJNe=kqEmxthGY5Er``p41X@~2D3 z4Cl|o;y7G;X&fg>)j69z{#bmXbieV^Rh=N6tZ$m_r8Q2F*16eBmwlpi7kcTs3%#~* zKA~@hdQ58xi}DZq;=A&%kIb<1TUdyDo}^$>%;OQK`>l@Xe_<+6Ss2RxU&bzzXd@$A z9_WYdy0WWirjNM`>%-2N1~a|6B>fVmj|^Qg-aY(y#NRO*vzrPVJu4ZD;f$BXk`hx@ zn^>p9z8zrX(2}BIH3W~Rsz(}N!;H2M)D!J0+QdWDW478z&9%VANcAj3Ii15PJk8%m zv8*_kogK~U-@KCZlLHH{BGy9tD>+7};25DI9$bKvP-uJxGD@&-2Kp3kuyKY+J6iY- z20>~8W(n+;Ik|c}Kvg?3mhdi{MHsxx<6SB53V2t>yCU9|bIExv(2Cx4I^_&c_nAbf zy3-yWZ+x#6yIgHGnvPu!oQxOKbDI&`+im1;HA0`37>L{pPg+}olU5D;pt+^P%xSei z{S2($%*TEkcFU@4lr5*OvT@v>W>R3qz;P1>w@#`bIF9?G*j=D?`okfdA2B3@>s*?8 z1{kTEjZjZ^AaWm2h?Dtn{{T*z?EVW&6Zo7_UrX5X$@y)%p9&4pr(wLh#%v!~#ee@n z;CkU7Q(b~ly}1mdhcJ{Za;`&xq<@*vUy@|WZytq8ITK|$=P?m*n_(1htUjGf2g<-f zM`GtH4pkU1BC}J8g|qQ9Bx`bE%cQ~U4EwlIykqXZhLXUFbv-Rj&N;D79=AEK4f3}R z{UbW=1k8o@8e#DD7^85j(Y3?K*<=(-KPVhy$O&c-rt^z_jSf+W7qXp7Wd>8`Y~W{` z58PvggQW+v{5kM|7va)ue8~2Hz{7*toZ?jY9oh$fi$SR7gMD~bTnr8!@zCwH!Z28q z#&Nv!2TY_86N)M>%86}y5^F(0=Q+;uEZ7xT_&A;dE7C)6r#2AxVD7V}{ou|`Mi-Vv zslkL59%SaUn1i>Iay6EnVuWu`H*yYJ;VJ3rgJqWhBe!Ez%a?;Eze0-H>*c^=1o-YX!n4z{ zUJgBgk#b#cTjA?7OnWtg1-aOZ&v#^*_F9JC0c~Ax8{s>$P5Tvze3R#XYUQ+BSkPtPnvS?c zeEwieaB!Rd^Ij_z&XQX*urdyx_v7!MnsR7GMp|P+Msg`JV6d8;KA}{zOQ}0lHEcTEQH@H z`x$?pK5_CpoKK_4!g#Pv(wE*;KY6$=VeOwG7&xw&j{b}IassrVjajs zwcuYt9_YI&JziUCNR$Hgju`48Qg=Jm6&@R2-EF(prp2 zzkKJM=RtL;FMqs}c-Li5Eb=N#^AZbm4KV>PuNQcydO5b7?=>3W=`q-)a{!*dMTsNm8wH?Uf_pdqypC0tj0Zc&H zEA-dWT$~!IBf1__`+Ge_a|kL-hMZ7gYUqg>Zg~%zNUo1bWRhqw125#J)V(QpZ?fH+ zJolyuH+19ii(wCkTauk%jK`8GUbCdoZZt%0Qrsdkq=-5d=4vZ+sp2RZ;9RVcvgs0g z8cot1^~|{*x1&zKR(Mx*lEyx! zu|}Qq9_GR{rVi)$8#^ag89(I!MMBR`*B+7AX-CCM1p+^Xw!mT4;; zgQ3MLh5O}k{RIZ`(EpM`T}}Xtx{2vQC%MwqfI%%St(78yen7+u?q99X|=jILG& zW=Tmo>x{t|A?c?uCmk{Wg|B24BmPyM@U=vLU77Gzp77PsUmFv?$`ihp%2#FI8aZo> z!CUAfXkl8&rg{__Ir)g)iL9I^nR~=^VpEK7vg8eh2bfB1I>0yC@+Wm=P+@UUctVDLgPAq`CQHA;)SG^TT|*^Ty88xY-i;v{7eq;+ zUFTxO6ITBE%FB+wam&k!zj4dUaNn>z4C%PYNtK7vQ`cZAs1(T3^@Cd$O4o1PvQWBu z!?G|Oe8se1*JYs^>|4PnY^=hP^%J&KLCN~TEe9p5H!KIk$Y$B51&Cv*sm-QF8sT-H zP!3Dg->^FhN|lE=I~akbpAHQMmbUO`Cx7;}vODAr;5J>GybSb{wH$#!_C61rfxTLR-38E%$&8s)K^V>OWkeQSbrNEg9TR<3_-iiL@+_ne#gYiAeOhm5pWWP zD6%26qy%Iu1=-58EW0v$jq)$8qZI75$2h`1s7WwmHDcCT6H|=hE!DS)H>?cO3LDoH zXI2d?Y{&j(FfH>`O7vm-p!4i68Ek=^*lLjSv#!1B%gXsh8Hep=if_!SKDDqBzRd~n zmY$8jAh7?Surw#PrqL!T6#TNI;{H3x|M$h6(Tb^H(eH`Z$&r8T$T%;$1J?MYnBa{2$((2D4&aVoTwqr=LB14Qjfn zfLJR~p)wi)@zyxQ650`+q?W%Z;C%Ps!JgP6AN^)tfcnwG`)MBI$H95(u&^*HPkU)NI2Y{!JXn}3 z%;Bs@el|8ewp#hewk!YGESdoG_A3i#S?&^{qQ1gh6C1>hL@VAMSnxHZ$N2xa5%@_a zZUyHF)*s#|KdIa_pgctv`BnB-!a)V-5F^3hR#wlXdTU5oNqrR@`8`b*mz!^eBm9v< z!#-r>Z?YoSg7xZ99%A5%R|ggXpD8B%>-ih4$n`jBr)q3Zu()N`A7j&{myLq{9uE8S zmf;z2VvpQnj9hPo8X+Bb$o{d$!y~a>-%2jO=KKU~w60xf)}UD}I6)$Gls(XZ-LnLh zU}lQwS+f#@A@CLQJG&6LC5x?_oL0GQ#1d`i6^3&~(sr*C;*H$|;(clN0lwO(UfqLN zYX8BvK+|5mR-M+)T@pD7QsA7`nbe16W{9gC5tfN0QEup!%$?9bk+gejjFeRv+NAVl z=cxYw4Cn_QDkl$>k%we*qLMuao=Ha1g-3j4^&Bu_+Qw!y38=E$0-WD*MvX-%9FmkG zNlz1!AkYC_=uTt=V3m%0K1Zc~C(}oBC|f_p0cn_jy7^=Axi82f3|zZ8-K8z@V-$~n z7NrIjyiANQ=$SPXF#P+7McCJ~a93~Y^kr9`T#sWnV((KUqC%rrd-egD~bbFZO&N$=&tnIN2*_;1o669n(t86YwKaWje5A04+lpG40$~QUU=&^hJfPd&1B}1;3NYSv zIe7qM8%#CrpU@8+p#IvH$tljfV!`|iqcrAA&x~UpWb$La z)cH7|FpokwizEXwV*bls9umce`68zYdE9B&5}?kYK)mQ05MU5%_6YFi>+Xp;XY3&X z^fa)}lZb9LRl9J163(SVMk8^=>(0pehi)Zbr;!Nr_SXxdm*v*-3g?YnsRJ>078$?n zY+$4KSYUy;P%uD~Q9Mi_%(?)7!Jo%^>KX%ehnP7$^vRc{PmW#7KDp8P$r#la(e*~m z<|hedjiim;a}DHA5gHBGixe1s04#ka?AXxw9U!Re&sv!t8%$nzTF!t-Ly)hbtfX?_ zdATGyoo_MERh|(Wj+7a~qc{S?xfMAi(3JtN*w(ic9zg8uj!{3ZO6ntaxEx)g4AkSC z)K{W&&_CY4T=kE0i2KOU&Y!ydmSpjej-pJfb0xqNa`O7{~fHTKm8LP@#j^-=B1>)s2=Cn1&Y&4(FuOeuMklX@Z2Wa z$69<*V}-B7a`&6SYqw{!ll(X9qG+b}EENOcbk3rm3Rg4DY8cd=b?e2d?fE*8vGX#8 zj4Kr~rhg~Fs(o`OF`}(nS3q|PlsgK0uop>OhWD1+6P+X+MGqt~Yoh=69H?=K5c*z{ z{lC~Z8}GS$M5}yP3r^{2Tf*nir`dnWW*Y+5Cb7VjtyaPPw9Aa*ZB^sktX$->U5Z*P zYw{p?pkSTfpGC2tO6Sr8Ndm`P2a+P_BDW0j9QC;HepYDjT-?tJZ7AVI48Sa;lN)-1 z<)*;B=>%NzrrW(qcRww0-_Y=qG%MYk7Wbyrz3EUl{Y}uSg^f~3rCUBd%krkgy`f)F z-jw0Sh}21Nn`L8{V(e+O$9Z%Yons@0U0Dn3m*>VTmxxJqFpWOUQVyr7lWhQy1}EmR zBw&>g^LRO8Adsp2%6ujw_)Pdw_MeMuaY4~lI8i=>2i_>JEbbAzg8(`tTlpz|3fD(R zQCQOEg4sI|Bp8HX8OY_5_5-2!Qe~%YqY(Va*`0`X_d%7QRm3^$*HOFC96T<;BgaF~ z9q?K@1NG|)LhfdSq^@!9Yf~ABFMeS;Mnp|@J3;+XUUCGY-~Wtfyu@qKa7b~pTWE?2TLjE!l z4sB=MTLjcSU__(VDe$uYeQ-ik6^N*w4D#$IW{y+T<$g^ZMJ=}Gmsp*oq4}M^I3LuB zsCYv22B(eg@iPC=mpRNad`}DIJ50qkjPDjS&cV6{9Qx3W@UQOd!2Hb!@`-K~o&lq~ zJ;CL1=X7@OIH$(@!{4yjBK{i32jpr5D@O1!pVz*oXuN%!(&OlYWbu|7p&ls!TvFr| zZbuc6ug|b!6>o%`-bmT8L>^nKPUnaoCg4}UL{*>YhZn)_lp=Jkp_iKJHI(Er&hTAg z&1a?&Gmmb8koPTs5ZaBU^h0SHDAue4S z0&ruGy0yFUVLdE7v>ztU{h&W!C?Fb2IA$?u8k7aL{EK z;Zu5A$vTD+xeiYV+k%NuW`rMs0dXxXn3?cRE{!=#G|>%$B`lx2n=$OZu|d$r0?byi^`2TS%Qh%W*{C0X z;#=I%181z8puc>5j8iy2x@%A0^o_0-TSM7j_mjs$`+=tW*?9f{YZV+HF6gOBt1TWV zF|;3D4tr?Bg$c&t7TYxr+uBG_J$N$Em{Rbo9N+{sMgmkyp+po1lI>|Ul-0O>=AU6D z|Na7H)0Hq62*_wtFkA%{Ql&G7Bfv=7{q3-frw|0-31f=+92g+-E;K$9eN4O6$~YI~ z4%`u?>O7f>%&51B1)^w~x_G|?=RB3;%MgoXfw~}3F)qU&=Lo}psAXR&-V|6cl7+&UK=Tae z^+(mfb0A-$K}JG{LB7-2e3bPdFf|*ze@!;L#ONsMw6+QG>LRdm!5>(-R1~=mHNsD7 zlet63Qv-EUF~CMfN^zloByDyp2!3lm3C_lZvA`{ib&lzw@!6-6Za7#3t^zf1-P}Xu zQL1yE4>zE&0SX@ht7+CixklVeV8ORGTk;TNp|vF(VSe?GGQ#}h3mjo0zF>p6?S`wj z5xjK_^(s}px{t3e$EyayjRuKN86zGg|L%A*iJ;Lb9vKz=e%^Qg1CFyTPF{vf@?fD? zr%x_ypA5IxM1XnsrIfH(pOUA#qjn}`taZENM0gl`b;oN1D{?cQaQ#(p4oc+3Tt;=%JX?u6)GYX^{aBp4Lrr?lIu$Ky7tq+ zlC$+(bZra(D~X~Kl2#bBK)MWFa{tQs{z%#-E8rLU?ghGcV@d%13qH9kz_CINE)e>wXvWFvpTMuM#huKHG8gU(pSO4Hg0vL^f? zJ{*2BCq5irtP-P()(CvNc>XA#7$YI&pkJWB#$B+^kG`%wu-j5p->yI{n1HCs2L1vI zV|Z(Y(|&qaEmXvKUQz-JU&Tw|Z}{J;)&86G*n}9MNf6V639+*&PBh+TNvOY<9C7h zT^jCs_h*sPPI!CY^p0NIC!tB-nPZ?^(L7EofwtMf@bv89f_>E!q{WyU8@=MfvJ|I~ z@jrk#8{k|wD+m@}lv};rv~zP~zw;PN-%0)BP=5jI&tv_0Zv8j2 zcwiDZ2j&UKC4?iY;m89V1-;$P3JD9h^^JsB10gCBh<-(g8e&f;ft2t<;DhC}A8gHO zFJ#Yh;RDSH)X%>PpoYWfByzx)iHA2I-|7b?_8bAo695oX0hFvts4nS2>L1@XeXb{d zz-}^&pfNOrz)TVT?2l64O@N5pm=$}CFT!DCTQrjL1pIY=GB6@k|2h110f1VL%^CaT zucu%4^vUj*iT&Fp%;)B)7=P?>XbOE7hM zHn!y1hON1S+~9vmtI@OC?AnP)AdXLqw>)yEQM~n$X+eZ`Y%}t=a7khDZg@`+IkeTt z-(cD}j^MokYHt6Kk=h!>NdZkquePvkEi!zpQM|e;fE7gpsBG*l&c+m;SL%rZ%_?R?lih~ zTaoKhF}^rbbqxq^gpP5QC>M)@3xf7WvulTGziMG|+m;TCt3{FPEn`c}$k}2H-j4U? zmUn|WZ_$pW48xuR zlYv921?yvH8iiMv{2}fU7|Chm_0ELJj8B69cP57(4``~F!elP%ZO1!nHu~u<`ZyX$9>OU8{Ve)d zeO~$_M37AFL+VX`>xcdfwfJK6zvdr8|F0*3`kTZ3(ccH_{}ug{>l`C>_C^1gho8?y z|Mj1P{=-%ON3W+-1pVJ&|5x!tJF4$eou7vS)9vQ#{0w7ib;`c4Pzdqi_V#-Y^-b*$ z8NFd|TQ?|0Gq3A{5$6=^ zAYv*!^vC|Uzr=|gDhb-rr;uj(qmo+@o#H8J#+T{%-K(+U>9gW@i<_#(fpx$OmEeU5 zqMmUyNucg2^zh&U_;w#KLF>K za&ZFO*H8Y9tfuqD0Y$56@0YOHY|aKE>l11hSKX^E-K)uH8hILtG3>LjA%^a9& z%v8(@f)C4u4=Vtk;=@X=M~dLR^G7VRazUsqN~yw{IJiM;i&LsjgMsT@MixYIYn-o& zr^AIcF|N7S_=f!V^qQnz6kUW3;k67?{pS(lD{=m{cujR0C>*;jup*;qSk(yhi@|1d z6Ak^?WJRsmc-B|)8QS9^u@x};99Z!sER^Chx&`f4U~-EdndoU#l!WGC?!}3&_Cp-K z-Rmqqx$E94_ZuroB4iaOZtaX% zCTYS4@xPCI7tl19WRPUIW)T5!YQ8RUV@-Nwh{Bzlm;jQXcY6o~n@vfy zEBbAtYTr*(`wFOEln(~+r|kLPTJeuK}~$i0hsqj`&Vo zs?Umh-qrlpsvpq(UVR1v>2?u(?bSo(Y}J3`?|P+(6U^7ZOPc(o^EL4D{u-#-_las> z9^0pU>}(pu1Q!6ljSeIz+z0{=`T5l;&b{fBCn84}2YXWnu?QR=#oXEeqh}3<)(;Q1 z!UK1cfxm&F*~5bn2aPYyM)Br{0}qZ3tQcMdhCYD#uj0+KvWO zP;xu`Bd%`e!S~TLyW9Egdk1^W9(W)e=-zD&Cig6Q%!*9w2`*@#lW7&V&CH!tKWR`; zY^UINa$RFpE8u?ONtu;=>3?IgvE_eorjFgJ@P7x&Ymk2HbpBOiFZy0w!zJJcO^nBA zfa-bZ-=I0B_7xu>E`^u^m&n}scC-oO3mxj5O=^hXg@j~ES+$9+ee4#<^4I{grx9}U z;lVeAhpfglWz0m$K-+qv4MCMHkDNC1Ux2pLi8f$b!o^X81U6(~gpvg%jtKG=&i^bz zpTRUG7J30kJIv6r^oN&Nk=uZxU31Q`inq_q!2*$yJ+WQW8z$GSuX-K$siKUJjQ+*1 zfS+fUVanFVx{>V|zp?)*{D^e$F*_ej2(+fAQPXXl_xtRh?mk z9>EZ7K|Yf&Xr~ffLiUWua;x|~QFm7O1{g}1*S5m9rejv@oJsX}=6($~=TEA?C-)N2 zC$Qi*P;6kcb%DB{;f~>k)J~WZhVrh!G(pQ8AZc@SJzqjg)PSQ>tIL6soFDsCXjPh0 zp#q9xeH~lwE;a^H0R{>{^$G|;fYqN$R!@*wGb)${R22KB88Jn_mY|}Qk*iVlMknJ7 z*J0X6MN_)vo5e?Q6uA|cx;a?#@T#wOyPRxY+3)HkqX`W zSuI3S{uXj0>q;Ihg0gEsj1pL_>)sVJ7yD4B$Fi(Q36^0V#rngby#YsRI?+7`(f#0& zxT2)KAj)Vh;-6t!AX9UoE+S-dcbcyRnP93HZ=Hiu-iS5}nK&IwOXr)w-b0W1$n@F( zKbc$#sj`Tn8rl*F-1R6#_zSS)^99tJ@-ly1B*sv>GJ+5ik~R$0&)0a^??57;YgSKnJxEyQm{o`zTbzr&N(8>BmtDBS)jz!>3?a@bR5cA%L4s|g zeKd~o9VmKGO6-;fe|c&Pa1^;Czpo;{%_0$>5chbwg*wq)QX)qaU#mYW8EfdLz>SE9 z63XvD-S4D5J=H;3kQ=@Y`s_w&PaF2{*0l@9 z?g%X8!W^?_jTt(Q)Vtu=YwCp0)7%mb=Ir2ZXT`16IcE5l#%^Rcw(P~83~)X+sx(e8 zXN@&@XY5=na#N~>l<+@V#e3Cubj;LgZ27>-*@-c5yNF{M^B{}`tF&Z1)gCM4D2BVY zwH3CTT?b8jml1ewyOFxl3_RCpq;`h7QYCm1zVp9X_BtFA42Wi(N$+@mn-$4DHCX)i z1B2K%R$$hJzHx-TH_@%!Wn+(nco=5d<1|4!sH}IsMRtX@?Qk~Z*4coc1{eL>zmdiu z^~CW3qy+?pcpF?#2doYbkT|fU#IMn2NfpCGN)Z)Mp3aF58CBdz@%ixWT(MA#5P7-U0HP4VJsg8@WSldh zKBJ`m>k@{FNsty9pNv9$JX;I|iPhKS43;aP>ggdSj(U`DoG0 z3w$lg)Gexrr?=NBsO_&S>%qq60QQZ5_dC0_`1zrP?)@m;xkbWTph2+tAu62(?*xX1 z(;MKEkU9~<0)k(RIRw$qJRbD~Id6GDdG({CVfbcA@N)Bc`HmB)902HZ#e zuu5M0hjoxgD3!dQ$6;LoMVfLd&=fRi#Fa8S8}8K-_s5 z)rY5>f~UseLoj zz9wn09$$4o!@fBk!}$n3+UkvSzvO*FutfUQ!FSdU$6Et^pMoMZssn8goKuTmc#)0= z>Lx+E(1FW0E`P)101}{ziZ{?QTp#@fKY{^3dod4T#ZLyi-!b3U#eR2`%$``0mTBUt zSSK1miwad=%rGK1!cSf6lUZbm zkcSLhp~l&ru=kvLSyJFO7pXjunNTB$99w4D({$IoX=hT`q;Pe{G1|r6%&A87NH|QC z@#);H507aSoGuo2b=}3zweR*|(1(gv%2&nQaOef<&L=6tv%q^(KvaqH2MIRKfh1^& zKCVe%u!mO4_?jC4RF4N8w$%FQaDF%Gpo>MPt90vv`V|srLmVEI7)D46|MVY4P>RO? z-md=3U^h3!n4u6V#?&@up{KT(#oMc{l<{I*W|R}}a6~%8Iw&Vxki<+^%_o0AF4C;F zrvlltz~}F77i3#{vK6SHCTn&MFc^i%KBayTtuc`i^VTi_UNAg&J#5|>TC6ehYXPBx z5CgF}gf*Odo>O8ANKUrU2vPw-f&gO<4rh$$jeTtt#r2Ox7>_FvRx}jUo422*T-Y3{i3^)!H~teB_Vai^^nqG%6W@bC zn5G_|&~GWkl>b^;ThQ(e(M`zDrF}#d#bpN5a%}evko$i<;$xbFACuq;3Q|gti_R=i zV-zk>gJ%gX*IBY8HSEUlPHB8{e?Meqjy)Kml>gpT~o_?SSQqTj8c-wplJk7|zeOGmCa z{dUjs(Xa4tiS!f2cmn#dq|c;ZCFoa!T1dav!=JwbkA9FriaGkC-%`;@#Ac_ob8&7h zu8H((<4Emu&`(N2`&p6|c57HF8^n=goa&g``A^C43J)kY`Y-K%O7dOO)&6j9ioe0P}PSS#s4mKyT*YtaE_t`!Fm{ z4g7ez6oN6ub|^Qe9;eN^d$@>y;zJ;Y_D_pkwfO=vh<1j2eje|!+fVMd4Ew5F-lUUW zjVM%h#@lJaVgWz`DgY3`BA_B@U_@RN3K@~*vJl+~<4j;tDBlqHWPQse7|jz)tjDm2 z=hFE57T68S3B;G?EmjEVr&Jdlie)xJPC=HdGCZ6S@mixz&{j#%BA=?~MP1KwbxZwJu|^}}Yn4S@YW4uPZUF?uic;DUYH-xHdhkvhHMk=voK*?1y@VD?`ejJ~+n z-PtEWvL`081fzv&FiBq`mMUt*(vN4;=qdqkT>-GH+;6}GAE>(n1AK82q32GJUJd0q z;YBnhCHkNE#w{(W*O28@BC#CzLLZFi19jiwm-*!fN0bY4PSzOsn0X|av zqyVD<#}WXbz@b2N;jv%~v0S(a#JuygF?lftA+Aik3RL;uGhGu;#&5?z{0CGD^GuFj zjCaf8qbA5M{_*`)GdNl-=P8jLf&=UrjH@yXJ1jfqbYajE&+5v8UI^%~;Vc=#oh5R- zrfQ(0ybN~aFE(jA5*`t_5o^*X*>IP2IRAw>mqO9C4N{ z&M&djnmzGOObKBirkP?zVdzL|Nqr$EtMw}xhbwA1-`}A+7x@Q%3?^Zr&gHw+s8ehy zgi`iuq-q=vCP52yk}BBO*I{&eDfb7#9AH*S{a9rn(^0VYHE+;}hQ%EP!De96Zsx2U z@&-Z&Q|Z&Z9`|SgkFvM}WhpgW4_h07oZ_plc8kNZRJBxbAPWLlm9Qc6)*86L!iI8c z#Gt3J-RMGqX$#|E;dX=jZNZUh9L9hhg4hRVVyJv-^jQq^)dHrn4VW&oUqN2UC^IL| zwV0_#;q=4V4j%<07Y&#Y`dccT9VijeJ=kXlV(oiI2PFWo?*$-q`4&C{z;3y!gTuAoZG8+TJoJ-*c@w}J<_B;32mOQB zH&`Hg0$7%Pj&cvuoaoeW2^_$PgXc;1d&K#q`lTY#OX`(=qH3l%gS`iG(|^TP|9IIU zZP026)^v#PUG)ULEt#~MaHhYmJ`zE38tM-1!XJGVQ5uRt#-ckm^gDiYR{oN_*q=B3 zAuQ{NyOWY`I6kYSvs~iX|4vaqZ-0g~aGA2DF+NL|XSIZjKyFgdgm$PrMY0xY(7g+F(xPwPc%e%z}H8YAggvA>-Y;X<*z0Ef9PY+ z>5ihm!XJ`S9k5gjXsA(ywwo1!Nd&TS45fI}X=^LRX2<--35$~M+bly}w;YT}Ol)Hq zn0ko%!76U9g3Avv7uuBqFSRUJu)AgI?4Wa{tS3+~xbn^gm!3d4wV4|OX$|$2|7c{DUeb%G_XSLW)0skClp|wO9HT%T!HRdWUU>SQgt~<)q;B=6_q6a z38_RvfO+}V`Ju>Wl?}2PnH(l$tXL;+@J}*z;|3q=`GOxCc!PiP@hRM}J20!-AAx2q z(-y9GW^|D4M;nLd#?v^nxnBnY*A~nGjcS#n8nfmX;i(~xa+p;t0&^XKI@t?Phrkh^ zQX|MuFc7*nHw{Kb>|yc5i5p04iOa!3Z9njFQ0{x=Ao2X**cW)56FqOjFqn4rJa0cm zZteMT-tCo_-WSlXAPz6pdkfV&#;?1p#?sZ6N4_qj!$n*^aJ!0pb4G1ax}7z$kUYAL z%E`xIhZ5)?&Rl%FPOG!{9&h^^=>vUC&{CfsJ1<_f#x^li3ye6&xzUO40#sPim*=fz z7hl75GKp_`2^q+@JARQQT%ygMr$@!7TuI=Q;xEg=e1SSS+nJ7W6(`0`=@+UBMND|(7LHy6;`Nsvm*f7kwoUsaKKGpj3XB#Q8 z3stm_T9*=7Q3Tju#)K{AubpvWBx7s94bGSap^5#p4*;k?QsVk! zSUL)ux4)L`08_q(SLhF3AYxG#TqQ~MI>bYm`S3^Bza|5BCsa3qI`q$_jSW}^% zZ&wd`0XHcz6N#!Wh)$Qc56;aB^~|Uq`~s>1{IQEdJr7o$7B%JL%<8}kY**||cl;Xa zsev%T#}~jy9DfJuUXtn|z~rjLW-THvGevJ$k+i%Ur=>*aGda%y#MyNh;=ZRHHsimD zz+pZL99-Qj@0LzWiQUAne9P&3_Bl3G4!%2a=JaZ09?`q#!Xt2`h-==0Eyw=qf^)75 z&RsD7h}6)rZ_mvS9V@HOT#1$fx`ssKz zI&`cCuXNsvnCdjySP!#>+$dD$a9jXJ3m~j@+F}9x$g#3%xM%{mY{FTlgSjURdF|`JF3b$H;T2Dv00(Y5v z!v-Oq@aew*y2#L~>8c(4Ow^V03Kn8M>M6r{-~~x|z38FG^j2DR`izaVTOOT&bc!jR z->mYtc<3!p8!3Oy6nZbuWd#$2)IqUdXAkY8{T?4@yL{Z!j(LHr>vmNk=mz!*CN&-& zYUH=jdL@}-SBjp69#YS>R~A%fga3$1^o3sd)rkrl8(_LL5=mvgz5^Ag`VO}ex9Hfu z1x8imGKA>PLBiBe$v-7l>N=Fq?N9!jO)Ku4JD3rwVncF}QOma|x!hN>*DEi^S5-W| z>(K4|Hgs_m!urZ$Q^{6f zd>()V@P|&;vw<(ARFGMfrb~w@{(Bf*3>`pN>HTcZVv#(~pJam)<#3H3 zI|5)jQL%CY7qfyB)~|D;Qs!dOEx2OHi)vR(wKc5v0aYz!0qEH0uoi2az7FS&nL7(lZ~LVcd0H1?l0}xD!{(+gJ~MrQ5x864eav- z62NX3U~kE-R2H9pi&?JRRzJ%%@W8VNxd1XdyBUOe!LD=VPM5&8Iec+ zv!u3XpDv6FUyEwA$P*mBZ4NfodG{hGIG$q?C5W?w%uoEDEsm->+ZF`nOM_Y z$phQ6f*q+`yRQcW6W;tEcdc52>~K$BEgjpxj#Qb5Ft{-YgGhn%)4BdfL^pb@VY{oQ zX06heBUVkFh4sy9wzVrj|Ace=kF@DFBhIC21W02a$5a}(TY?p(*O)EXg~d?o#D#VB zq?~mn_1GA+6$!DcI5dx&jCt8}~H zBK$$IdBj+OEcmmxt1a-Zx#~g*)hWE{;_5*wfy9*9`9vOpwxGk$I7p>Iv%>0(Au1g0i7RrWZmw zedL=M65WZ;RlH-)pa<`XevI7oFLp>GRf7?^0RwIZuSC)+zjbwrvvI2$99PgLY(z@B z3t12ST2ee@3Spyfp4HHO*nuk;>iB71Xa8wo%6Ed{EAXEzYfz0#vrum%>eK#3_@^RIOZD7vuXtx* z(Gg10e8kvnrVF0uQeb(1({U^e*~sx{jg^XTU(Pl15mgDW2nR-qs&QsM+&;}_*LJh1 z8#`1q@x3%Y6_ab=OXfgNoWuTyZiMmI>@{(SE0!lfTttmPNQoH`VM8EvGeLv6B2u=B z{E3QzSbT5}sBkDYo$k`=0?=aLH#|0V#=b$CxP>Wl$jC)_Hiq;!$YOvpWc)2M@_d*9 zedM7x46tCg=|fyN7qAX7V!mn&n^sO%sieVDOOUx^hipCPT**N%&>*joyIi|nH0R{iF1Xk`<0+X#Rl!YK}?9eCmT5RO5d{{=EEa25;t|j&5dO$5aS?e z+pLlBwkY3C?@Hj`5c%EeZ21Ggv%N3ByJ-bD$dQTwwF?j8T9`~RQ6aR0xTIobam=~=p8`uqP-eCXZ(g})G6 zh1JORq3B;gC0DGtLV)%Y8IGO*!8?2mx2`>z;oL65nTWpnzwn}PWenvhhGfBKqhK=R z17Dy_ktyI>5i7S!<3+4M;rB0F&_nx_EroxL_tcl4Pw1&hvV}`%BfkX3$m^7!fkm(C zu3L%&aOfNq(Q**mq!>+~LbPlm13r(U~A2w$3_}@{A|8^pYt!4(v)s!XbX} zn`lI2^q23)&}`65E>LTMOo060XYME5=47ap&#IJ%zBi5jwO!T8JBx}1(67*NoJF5k zWNh^uvOe3Hx3FxWbnXWm!Sc%>TV%8LBKW1NGiCg{2Ff>@u{s@M)m$h2qf!kN z<{KD0)Gvm%WuUs0EmOr3dKeKp8&}1-Zu_$dTnBrUb|~}|=-)Q;7B-6PhKca) zx|I?uPK|dmO;z@50Mdp6M$ft+P|kdo9Mg*R2$T=UdR!c1n^@9G~g^JI2CcjL8qm0glg>@EXxqu*!CMua3kZ&xzp<-QLRg zJdf`ktnV-}09mjTH|&}#@kL&&#|uibZoDAZiAxB=t5cp;QCuq4_726{kU;1Ke2CT~ z7droOWuI-i(bxIUUr&Li3gq}q3W6+S!IWi$&4qyDGr}lBLc%q%FcqUfvi|jvA)^ev zl9;yI4^WA-zUA{5PW~ySrK38O9!{XYs_A8H1GcN`dhYV)#Go%YoM=Gx%!LkiCuHE~ zYz+6|-WR)(%v^!)=EjG4ZC7n(#1xV4;z(6!AGYjIgIK`q(#T%xLS)hr#s$Q|@I`Gm zM6Np9Dn1&Rf0))a4h37ZM@&%E$zU%wm3#O=jkz6`j=NgC?xW*sfsYPMc7|!#R|m#2 zCFeA-jXsv+tpDn#1DD0+iztur0+y^Ha}hhdh17TouoxWcx_rv2K_;N;9ytz-i*Rik=H!SYadNM|33aB;V*y~ZeqiPA!qu{OBbpzR28S_rU{Hks z#8Ja;UXjMpp-5zau_uUTiEx0WTY!D&Bc+c66(isoO3im*s3 zm=9rvfuxlW7vmcytY+=H4d%2$dk^CJ{SN~3Gm)C1=^gBy=**Q=-(oAdu5vu93ChQ0 zf}QqJsQ{~jrs*)Nm**#x?+d_ZV3Bz$b3!t(5sgxeI|-}d zg*1TA3CqD~aVZr}?Wgubf){(K#BQ3YuR`LpmsY|H%l!jTr{DoXx5g;|>@9!8xKknWzf3duCwWx|KHS^cfID*K354$%&twI z^Mu>elsLw370;vJ0@;mqrDgk1RW+e)SY+I}u<4&pt zi!#nV#Sf71fuK@2i#Ds|9aI`Xt_Ss|j0PO2&C_I1w%XNRP0zVXaV7>Am z9$4VRS{8*3?a*xL?r1UDh(`7N=TBkDDowlxXDzncv89X9Ky=5p85|cFzu8 z^FLtJ1#hu)5qTB|zH^fzwLE!9j6LV9@~myeIwTt!e9K+&I%AZP%=@WXstYrgk%ZclgtFwxgI59>CDHK^I!Zn6F-){*SSQ#?Qo{cvqPKz4!Lb5iA!HGG0!hNUU^cs1lhYp+%nPi{s<9e|J_SmhxS9}-VgIP!XK!02va>|q+j?fq`4t7 z9Q)6qbAA;M0ot!zskSJS+2O;_#|8=922gRg4EoHR^=4|5Rs2q1eh0|_&>{Rp%18yG zQ{qlF$U}-gSl91RsAP+}p=2!ZjRDN1aVa$&~a?eybF&hmEhKvr>bEQmY(j#XKUUz#01Mc-_Z-=Bt|+3$3kyiPXVy z+QKJE?-ovK%*L&r-zdQC$hZ_la_%&`=Kg>lOT{m04udf;j=W0tZf+OE= zh+NbhjC{X4Sp05PHp9}+iGP|Jxo8JJY5sW^K{M+M8|g7NSPbf?kfzB;oj|!+B=47N zqeGcqR`|S(33I@Id*__q0Lv7Si%%ojb?`#_oOlhOkd7#@r*C!Gx0YDbfE-da+*K?ep1h1DxqefUXEFmLWt_Pejw{LQ0%MYK->#H zM{(Sr&`<&hoZQHYAY=_}ie}kcsUPIjpj()R&Ja2&ej&yu0#A_`Iv1us_74p#nkObG zte!PSeyg%J2jW;?xUo8E(XeRja7It>x#HE0lkCoJ z5QJ@0w`c%)OATY7UqJk__iix9pjtrjZCf z>w-dO>(nG(Fns^(Xx)cwojX3H!+L&`ScA&6p)EvI654KQo-0wXE|Mie-#|O*sVuuW z`VbRC_&v|W5X#%7T6bc$n*&CA%V9-*gsmM-yWPp7ar&9fd`2ouYUb%^CaLR#MdJtr zmAV0217SfTfe8(2m1hos0eyw@8=lYACjbzate5B`nuC!c!$~QD#a&#)+8goFhx?gw zAd`psLfYlO(u_;o%)>G8jkh_1;tH|d@nHn z7|TM72q6<6yQJ`xVHok_t9A~{|xR+ipxq0$@0rzXMF_y zzGt&rKSH?zKb}PsAbii?rE~6$mUGgOd%CtePb0Onm07qdeWw$~t;J0gak>=jJ7<-A z!U?E*ok}MCEq|uVOE~vGaPGh@5;JS5d%N11jN6kjbv#qnxpX?kRX?k6`wH|D_@bly z)@+jb?4#mBLnoFhBx@ zFj6wQz>KQLi5<2u3PD7sC;yq)yv?)+kPQgxN{E@1*v(W&81ufETZ_l*?SWq-$}5eY zMmL*Vpq>X%ncd1=$T%1zq!Q1`y_tW!7sXlOi?GfR(%X^IWd}TIR|g|zD)vzNKfJvQ zc$C$({~v@%P;jE4#tWyxrW#sngVvfTXt1C&G6Q(2(rS-s>xCZeIaCut4H`(eOv7l} z+Ll&(PTE6T`l~&qt;bTqHe8f|w*V@)s))CD7}SUtB2@GLeAnLZ%p?Ra?Row@4|(U^ z@4l?P_F8MNwf5S3N9KMJ&?Y2@J(A$q(Dkom*N+k`>&-o0U~{zEisuIa(xHi}uE^|t zz>EHF%YHBNTiC=AgS8`ZcY~&i{0`*#AlV?T4Q!1B9 zxu)NWpzNNkB0uUod5Zivw;;k8Anly}5Sh0|+d|O&f3*!NWRz29x4As9&}l{ z^FBl#c)8$)p~k;er+@A9@~ac*d61&u-*iz1k=d`H&e6ZirL%yvK*eXRR_)+ycXa*x zh9BHXk=g%anqR0g+>^D}wv$<+sMN?W9A`g`BXwi}1ZN`aHJ4i^h@pW(F%(EhVKF}y zg*5VM@sjgQx!Df)%p%hUaL){ogt8e%TIg_trB-e-XMV_FlVHl<&!dK;il;Pf)w{)8 z)Nt}i?{gSL8Xr_q)vBTu0y>loL|}4i(atsAaLHF-GY4HW4ebk;8;On&aDbH0%4` zY$fx3-@>hP!N%{(vdfk^Iqo&zckN6urrI@;5Xya8gE75dq&Vjb%lCM@5%xY;hi&t@ z$~uA4VcBpn6ve;h`&l3^$pa#k1gQbG(^f;u`Uc+2GmyWM6WL)?=ztqLDxZeVX@kb< z2L8h62x!MS5xGoKN|UA+%@Ecz$f|*NO&^TG`e2!bn)@}0oF`R{JN}^k--}!b7mzo# z7EcP*&sUv2T&V&sbfx0A?Zc0X+t3a11*y@fW6R6hsDx0)+Oc_l)QnV@kf6gp`*P}p z%4qCsOw|pQC~5Nz`rVDGTR(rGPg$jOtm~=k* ziVu~}-^>q2kbIu+r{OnS%lg?CB{8*>G=YqaUL~Qb9O@!*1zlpymj)^m!-#uvN zXXMQnx|rT}dR$o=cjqnAS4+_}?;<$&Y}Y}#(PV$y7MvbUetEo(&3e4@ zoMFz{CE^UINOGuL@X)NWc-85jIi^s)LNFBfNS6qXBeY9;HI;MSizxUG7|*_uTRso6Yl)_GbcC0VbPm6qsLRV~)MGxUP#wwN4ReePpgF63Na@ZnfT4pM5^kt=CC+mS!~ z>>uxlHs&0mj(qC_Dp5yJz&#r12%^>Vi5GI5ch1@lk|%h{A3)@|#^uT!={DgQ!OdDN zI$Ra)(|1P5an5(vBRd0jNQ2l%3?um%?7N-UK5N0fU5$)9U`<}WsJvAdEYZ*P@8gPt zrb1Vo&NQa2=*E}15SVE6$n1Z&*|Zi#J2m*G*m_ob)<^Z%nLf6la$G)K6g%@jc;bOX0e)Ro}=v>)FJt?>_EjOq@%Jz zYBUEe1>2gfqndNhw?!KJ>=(u5R+}pxkxX?yHB@NeH)(sVv6Y*n!g+5EPBs@Cl<#Cy zGv3K|vYc$lzb251v^45>Al>KmA-cO*P^n4DQ*odiYaeF%BT z{AxepEb2bLh#t19vaHJBG&rj(_=Yd$a`#rsCkSvt+{bF`8LF42PqK`{Nw{_1+$r&(HGjD%eiO%+{cS zpTTwdbD|~UKiLo*XFu_;tPG0vv%8%@w%b^&uU!R&Xr`*oK&0A($9#j9jCJQHwNS>0 zfmZ|@2nzeK+4b>DM64g=V@dx8|6raQ#jOv@GG%?RLhFO&(UksROKGmDA3Ccbm@cfb zUd>VQryn{2bh4>sU^)Xrk%-&_!OfS2-=BDXL2ySa2Wt?#!Zjq(=F=o_D=}biKQuB= z+vA|W%r_+nO6@ERU3T!*vOGz$0|H4Toqi>~&5)h8toxo{%>ZC;mhu;dETFv0&(H_nH)lpHL9o z1iOE{e;L1fZE|iytah(e$!@pFw?P0Qds_6&ZHYZ;ws7i`!&%$%_UbSGS!sG&tmN`4 z?o;EoBs>*~)bXQits%w_+%o;NVu%LvTbfC~L}n9*QqCk4bfV(0rQG!dO|kgF3;1lI1`2WiUmVjjX`j3O=$)d2OAd(Js+t;QL>x)6ko@Vo0HT( zZIT=+KDAnDr&^ekxYWA5os#byjc$$JMP#qFi0r`_!L^EsH=l`l%WCB<8&_67wsFTf z!bU}K(Y<*?m*avK99Uplb0ITQzYTe3FVrqx1exXYdG zW`39Z`~Q+h(ii^FG3Zj|g`@>Q9#gZ%?KTx_8T26v!qm)f$MsRlvo+hC!hP=9O{tT` z0nCB>i5!~OW$Blf|3JM~b|^N#>*D4%>Jm3k$>ZU3LM^qL+8!JZ>y~_^ zDvZ>*CJ+lEKJxMKd^MdfF?)r9EKUIA8cnS;%tOQ*6B3&oVrz1Sf zQBGpqlElcZ;!!x3ka-wZ-LDAxHDwug;*C8Rc7|Z73GJ19{CaLf$*FBe{irtmW2f*_ z4Qp$guV&TWqY_+tqu8xex_2`_KN35g8~!eT?P9YB!&K6Q7Yg}RTV~d0&CcMsJgzwF`%W$!mf#B2 z6Rskg?P8>nIa@;qMYu=-DIq_n7WuEgci{3Oapa~1NfpO4ZjMIc&x%t{m*}n3$d{`h z+$G2k8l920FF4tU{v-eSD&4m-geJCU#W?_1drB-dEqngFEV{Wm(Z^zt)*3%!>#<;e z!HC+nF0C&n*QJ+JP7^;<(r#3+P&_<$Y#t&`wT^htoJT~ScsMN-52f_|mlT9Y#b5ir z>!eCP{=9rB?I|BVs}5HPk8~aHVV-dKg7ho;icnA%(8ipjQEpsavntlzj!JXeAr~~$ zA?eGnaRUU`zoTc0RKskXD-`^Xg5^Y~D}qn*^CQvePhua9PH*UQqod-l+ED!56!3W+ zt2t{|n~lf4?#ctE0IiKkBnI|e?#{4>G)qL*2=N+iQUWuS&iBzhh_)O=-z_55prv`+uO{7es#yX>DQo{wOT-0%!M*o%$HUy zOrLsGKSU(wM;p)SS2q?f8b|#63j_b#k{rdD{uu1L^Yw10udgYfBJax$2zO{ zzA{}ikzL;6eqiFu<{V)#R`ILIfO#=8M~5s(KM$$aO=?V1g(LG|VE;7jn{QjV)T~AY zIkIJccSyI>DEivbPFFpzk3ybk3DF5BHD~{=sYTwpO~@L<8tRvs9Mv;7z12<^75UE? zn5G4w30byY*bqY-(vv&1D!ZAQf=ea{{GM3T+@^at6g^UEPt0C2+jc$Oxdna*mAZYf zkjMgl+LTjZD<`uNz}575?@_rS3lev@UG1t)rA*0JPnaAvFd+stIa zM%>+hkhwaRikDdc)l`~mra5km3|>h6-?Su&fS=^a+rG>RVK@{3W_(k3-GoH*OzmxX zrQn8vI8MupaZ45nSV~jtT20R&hvYym@)q340x+}J34Qr6PPxN&K zIH~DGY9{K;bFuC<98O!!T3zB8&IIN{(H9dV9v!t-9H6Gh>tatnIKxF}K)M)w_p6m0 z?$_e%uc=h-(xkq+U()K_uW5V@>mIdM{F~mUk9K&{QuWcxJtxtQVKBB0%^T%Ynm>Xt zlZb7n)>!xI==vRU?KkiyW}U3&Vb)fAcRnf&hJY4k1hTe931D&DVx?y}EyS+FAcrWk zWj&UJ>Us@J@_DVY$~sr^s&pi^+v;E7kHT!q9waO%W%SKZkmW*qVSlSbHX(EDn@tc~ z2LJ**_^ySQx*)A6yT;DB;iPajLE;GBYO_aK~iCbmRoBAMy=OcZ*0>Oy^;0Y#`ZG-xf>nD` zv7ojyv7OnLo`EtFYh1}muZt{?V6;5cubyUxs)Y`I#k$vpnV973KO_27`o!j8>|AmV z4f(pl)f<#Qjl)zg9~zvfdSv=h9N=M>C-$DMaCoi@K7B0)IbgL}<6;p} zpWgan6&o%_qLuGiR`H$c%_7DRaK#2Kw5oeTlIIR%6gT^;IpHk}1UDN;QrbAEAurLF zXkZhxDb~hP9t*Z3(hp z$~Af0{U((z1Zs+n?7cQEXo-EYz29e2R=i=P2?exT*PVta6~D#a@5$ObA%!@Sy~~No zIU8ytVw4&(Yf}fd2Jxtt}W5#2$~fwh=rEg z(;p?lAge~vfumkW2g1ZOcck=|V3KZrrh@Ih0tp{c@De>?HCHiWpWmunP8Y<#+Y)Ks z(}xM_BdhDG+FGbC!%cEPK?S}ji7 zO?rM6e~n+UaWO*~ZWVF<5*Y?JP(kq6tX>6~@1!L-2b~W!^3qo*YB5-S#9P&~&VkZZ zds5b8f)Ai8*z--N)mqQ;!BV|ABZmCw&53H=(f`8;hpXG14muPzfL&juG9uhHpy zlv=pgrGlZfdtEB^gMW5xeKjxP$83Ubf9We%aacu3eifyz3j1hPC_zKBokp^oHsKsc z8;eY9(Zuh_<6cuNfT2@BscA`i{jV&P`}aXt8#U;?NYJEQ z|D!4NH+y#zSMbyi6@(atS;8AZ{8)nbRx0qs5-#h8F=TEKf-}~NF|uJ1pcqtHDX1(osb#fGP=5WHwVleXR4q=(Lbpl%}49dh=}4RB8_hw z4)1aobje%O^m9@)4HO)tX4pYYHDPr!gF3AlHpSaB*KE1oQ|IEM4e;@yRmYtlhz)>%!I7}Mk_y$3~>INPky8db^I{YiMQHy zm+fF|)#o&(mlIVxYcDl@MZ!Z|Dw65q8C&sUe{D+F2^r4^XIQqDRP&gFLx#%6Ss&{vp}ak zQ6hK-cPJJHxlzdrHzPrTlc@biuJ&khV5Ttm%$JCDhwuwHhmhhXej3{jiZ*r?M^aZ? zxs?$3If|WK-^Kh%dgChTRdnCb(7fPDjl4LfSkLCWR@-~?Jx{7#SwTfSW6k|y&0pp| z&{%P-`OH}J4MmCObBlw_(+)%x&4KvV`{my73H!Dzzu+Vb zAHn1>uuh0`4Qagj7T7OO4vUF3Dh_`fTA_C~O=&dW4ZgL?L8lsW&|R9}$W8@J4FiTk-0_xXx!50(^$ZflMO#l9UdywnnRgXNy!-2{^G` zJ$q#DGbx%$h#gzW0Lv`wmnT{>GaMtDa0E{c%ENr6O2vt-dQU#=pcDmJH`ZtgnD0!( z{E&|Y(a$aonLeF-Vf(M++RV^c_hY$yu72jG`qAg#)vz(s91*q#8t{f0&#HPhoyuy!gh}}xs zSks7YEd8ju0gZ7$2q#i1T*;GwCr*j227nG}#&mPNH}1uY(TxeKoln!k_2uzRto{#$ zxaIX|C!dD0P5J43Dc#(^Yr*0TeRb)3JCy3wM@_hsrN&Ijc3p6)KEY-61FzZ(zS3uH z<9ux;DgsCy2GRm=vw3-7S%))25QrCyt#*Z0-g zUr?bNvv3^tA0pEq(tk3H2f;?@{LjVe@LGOZbXY$9KiMCjeroub!#T3A=s165pD8XS z!egm+DV0kdtgy9Tse{#02T=^^dvN4uAy*i_Sg0rwDoRBzD26J*2UdYq0?J1*q(oZh zv!De^|62@*&VKJd1Z2+IwHYBN{jWn$?00)I3l}3DH0_l0l%iE+?F>%%I;gaS~egGFVXB#5PoooVhvrj1bStfjLpP)&x75GFEr@1ZJzy=2`uBA)un`|L1hcefL^ zh)&KJi2QB??w)>$$nT!f_#xJ->tB)9>L%3toSg%*qQ*RKpJ+>q>?w(G{R@AS0c&Cl zu~!3y3Mr_{V#_`XElxh7_<&80t&DfTxkHwXPmAY!@a4LYnP|8+p2pb5WgPEyZ^(I%@(qGojSF0J~Zgdf-j~(FrN~)pvh-UVed|Si0UoBaP zL4^rXK&&$IiNqg|Rz1gQwq9S7^r)t3jZuL>Ak@tqX#0%+_I+8LgZ62I?o=#w){2mB zMTiqfKASlnJZOiJhQ=JbZY-Rf6hGLzmz!bpYSwTB7!Ct#K-4eZRS!9uU`w!f8XY84 zrC@Vw;2OEfydr<{?31G}5~SZU64h5>#Yi>zd8okkK*9l4l@o{69b`ta*k!Q@O=qq8 zKiE@@^{Y-*TQ>LUJm$=(rJE;0$V>a3fYJcg-&>E&IQv?9@)fga6eg)$mzu>UI zId}8ORKOaF5n;Unbn6`g2w7K4m=YihRU++tz|=2smFg<8?~dz&O}}u!P1Q$$n`Tc3 zgz4JpHKJ0G+@@!0ShYr{*s8kcN$UzqwYq|QdeY%`xhc~$^`xhSC)Kn-Q!4^Zt%R;* zP1_m^IdaV@V!!L%;*aA<7JrmWW1*EG2B2OMS=)nS1U>Z`Jjo{4e$vC0ba0764R)vJ zL>7F`^wGOa1ZQ~xUX6HOl_<_!OMEN#Yu#s{xYPFJvF6-=5AE0Fs-CR)`H&SG3{!=F ze?yX-~E6jxaWqXMBcP zTR9fArXfaG%k>JAU1Yo!uiAb)N6N5|&+(k>+xddCv5P1ZIyn(&y(@7`@Uw5_!5adb zU#-`nlMgQisDca?M3F-BO47SjVLvJ(KKsLJi8o_hOA*ucxfqsAJ26gIKtwJTXe1e7 zFn~7n5RlOW0BIWKe3HzeDyPw>9P0`7O!4j=O?c`valT}nj$mGo)`I+`5K z^vX6-sRbyb#z?3Dc39dvZnMWwcH7Yq|LhQmV`3*cq-22!onYb5^QV~5X&O#74*rmT z&E%!Yp#M*~jSl%Vr)_4b5}hnu?sYupGSm3H;vp`jf0C;$_8!X0Jj2jo3B!=u#a6-+ z^WWtQ{{i5xxrahPc5DtZ2a$$DkYp~-PV~&7`t5`hbEsaN^d#!TyW+FTiEyU!;(zr- zfU4)geIu!qtvGhh4eJx}J#PPwwwI>kRS#=_MwfFJ%2U{(QJb||iWVMd+ud>M1+qBY zEGx6i5XIn2(g~(kA#TOa(TJ~$AQ%%9i6qB$F7guWE|Xvfq6HsWt=e?Cvd4pwfg3!t zSa!sc8-w|+P9PbvnQ^k*T9&s*?Aq&)UQR3Vo_+(Zh=AMtCfCr#0mR)3Hz(0!+Ubi z?h}+)H(*8Y);D)!Xi(^z*PJ7wFd|^OEzmm%aPz*jzkjy*zW6ej`=9@R_1-#2@2!I{ zmpT{>RP&&(FTv@kDMv-&E{|SX7*&a*ThhNa((!9{pxX_6D6d?4x`|9?k_9K9_px2^ zKmLTXy-Gi_D}EkldU+4Li%X}&E9HZI<2XOA zv8y_9%(g_TridWF>(543JdQIaw(+IJh-VUm*kg}`g|oM-p+n=TOIfYoFnw)?yESg? zX5++71DQBCcV(I+BvHvvqE0-_W`7)Kzfp0v1jYRHTV?0)vqe$JMZ#LKCSQvG2V9WrQV?J|Xj`Jq9G zOZg}B#6rCzL?t|>>9^bWOPL2Z)PEHvg@f0UFU8jHN(_1_k=%vv@}R_^T}oQ9Yd|)w zD4SNCO)J%}$b&D%);xsLsW3g(uy!1LL2B3u>?7&N4bvNB2}ssSRJGcZEehh%7G7di zPevL!v?dFcTuhto-J4s?k)Klt^QW2H+TGq1cRHl*zj~?;mCsL|oGlxCx`P8+BYt95 z!Z9RhURH-SFL&58^q6`Wq@+G;20xH#&M|NiJgwx8r7m)4n$&zfA&JS?W9wf{4B|Mo z_i*@uruUSz;#JV((?F9?15G{+G`$X*UeAkW^k|}64o#v97*rext>A;J7IJRz5a30U;sLwR(qR#LE zNJpG1*U@CTj-pxIW-AEFzmNDudpcJhC6MLEG>f!)ZHB3J5+rH?61io@;5Tq?T$>%Ma|M`}Q$T9(-gUo#-RI z?|@g&nXr(2Xm#@8x+2gsYu9$el0PR9`5;b{TrkxE=Y(e3aq|~A>k7FcT`Dv(#K%Ij znDH!=&*Pic)(wrNCclsWc=Syt@fvAr9Vor5>!8{a__MLAsJ58DhtwXz-{Q!e*?jHY zUbJ}o1jzsBv41^;*8g$}e-zpKBJrU&^KEoR?UB7drE63O znzVj3Ux?Gw>B`(XPgN&bP0R+)j2u7eRab#oyVRW4K@!N{(Nm@$Hu~J!!$wc4{p{!| zweie1M}NKU6Z;ol{&ip)`&U$of=u1$|L8Nze^?eqp&)b7=ox)xnPFLqmF06e;3D_G zK*-O{}MNR6!V?QoT<;hL?_&5Ff|FQfymUvZnC_W4`YC~)f3mtpi>O^K>Jo3A} zF|K*4>bmhQ`85zN2H_==bj}cv((Q)I4U=@`z#4Z!9FhB*j3noeEBm6zuz_!**3OTY zovYAn1*X9ikKitMbV`T}3H z+WQrF8|XldD7b}`almu#xcOHB6f_2HfhdRd`+RrmwaVt$NVAaGOTr9^rn;B|tzvqs zhC-u2yY-TL3A(qD(MrN(5R6bAC%sn6iLu~t{+X;Ev((u8di846^>8M=#YFH+t58| z`oZHP_jhM5A??3-KW6%o<5N?9P1-ijcn#?$b2^{@YM(!aEGoPG5Z>2X!Q;sOLhtMc zkNvAwbz_{a*(jD`_H-i>`Q6q;KW_7&^K38Re8JiyLNG%lWT1gyzj-g5do^E8P9(RQ zd}RNHo9`S^xG@nOn28DJ3f1x1@$$VtlpESdLL^7K*N_iV8@sduV8=1BjB^R; z$tZ}i<_V<|o{j`^H0VeppKLrmh153usuc}*^@o3nN8P`f+xrnMZ+@z6XLnN@ad4iT z4_L*hZRq5qJ~W$j18K%g-r z4&Ug$Jjo;TSMNeNE@HK0N&l<5%2dv5|YJCl*P-nQGH?1lDxl7dc2s_G}ol0c9i{g-<&#?m3d|{b@++uV*S`Pihgm=4kldBbufeUwA7%wX zCge?@+UG&7(r*?!{pRb1fXm{fAVml|=>3!4Y_}dvL{WKnbY$KLG7El*#-@K~P^#y< z5JjmvmKBljR3aCV9=WV-cQo>8*3+>B!#M{3COr;8t9eaNX0nk- z*lE)+)qdk! zVvcrwgh=PxGxXXzkGFO32`%#eLQAzEV5#M@DGR@Si{zBRWrAS$s@7R0mi5o|H04yL zvCiQ?CYrjy9R4+cJJgtCV{qM|HeWAsKaXNY>K9?ed z!O_L4iGoeYZs=m}UPyKpCN*B7>U{sSFd5V`U^!>FD>tgmogdv6uWGyT-y-)9t8Ca? zQTux2e&=Xy+JInAP3AD$j+@3lJg&0)v$$qBzPD=S^piLsR1Ow@YYXSwZ3Zs$458g4H}@95m)Oqa`_?AfppX?i>Q}>7N2I>TcaId_~V$ zqzfM8jSp0loLQ$8_rx);PHZ0ioJwzeB{Aal#2~qrus_a@G)l3Lr>-MHYs?Klh!vb4 zxqm<``f47>V2e!#Dh>hrA9juL0Ez_65v6dma z@%8A4O`N#J84a?JJ{jlWEZ69b74g&r8XVrwH(0`v#`u?rgX^p z^{)smX8Hpeyv&qXA56__Ah^|D0D65eIY0dyyg>F>JdfN+4S(vjOACUQuKmS&_59GO z75x4X(X3ova0F9!ysRX0f9TIjU)*PSv7N8&&&U0dHozSCd|XqQVEk&0A4+}Ho}obS z;RA457ihz3tQ{jxt0a@y&uBjNb&U9XErV?g1r z52=H%cBfBORUB_{3{y6@l4=wT6eOvbjFl4Em7LJym@VrWNT5#LG}M9N3V7HlSgt-` z0;nZ{CN3TIPUeD#$DQ3>!J46+KXlun(bRdkAy-ZhGKY(UOoF+ieswOd!ze{ z^Di0B?jx2N_i|K`5!QQ9kP{in^;V{3%ju8%u+)fo_*tq@nkpK zYN4a`@zjx*eJ{rL=lh2pk*NCn^#8U4l%EeiM?3JTQD$&1FU)^uz3?i?gFiP(rr4ll zG4itDXMR0H&Gvy8&HtAl;ZWmBvgm0jaWP;*jYmnzxYX?x=g+Snras!<$W3@D*$>Ee z`p6x(S_fZ@+;M|`q^>VR;cAO6eJpgM!^V4FVR5W~JT>}z93LJZ*`27$O#h8B#FpT) zQ^av$U>zaN63U_mO(EMgHeP6J0@92T&j0abnJo^sSQ?9ig1AUMz`iZkiwH0=a#vy` zUcl$MVocYIB}VKLO{%A{eoxAPF)1B7F>Upg8ynhlB<2tsJfXFUkeaEyOQ1mzt!kb* z!9a#C8|+>Ca|0n@rpJKI%%@(tvqm;{AOf~Gdu8}suxSCB{t}(cygzl&DmcAvcHP5zlyWJ zO8FIwJouD%Hpe34xHj??Ih)Uv7d7N>9j@yUmFaKnEpu+YvAO2E^lvptpimr2)%Lx=0yn)Ha$Tpv6+Q=Hir`RPgxWQQt6fKrcY1ix*T^3g^s?AO@j zQy~(@H@#XrEY|%fvu0#Lf4UgPcUqsd1}}X?$e55CwkYS5anh2_j875Edeu_`|Ec15 za<&Kg%1CbC3q<885l#x0;jznM!_h3YJXtENt5@=!k9-QGMjB^8HyIYMT`q{u zC~UdudLex3!5tTAzDw1Yb#s2%-kUDro}WdW7Vr}4&Apa6QMK##rEYwVwuzN_@7i@P-7LeLbJAh&(bP-}v34m7G#(SmhdBB=ZOEy;g9Xg;vxm<`G$n@ zzALQcgGX%`)txzp7{YO7)5uw1s|PM_2P93yAgCKS>Kzu)e5R=`Q*GH)Q+wkn&N{*% zBuIoBiuKXvJ2+m|e%nCnT&6S(zhKxc zyH_i9=q%nw-FCB*O%k!H6*Db}v!bz-R@ zUwf{hz&S8G$47pD_*fie@^e(@q}2-#wDL}T6=Bu$?!ell z*wGaGOEt;bxmY-2^cR5x;Hnsect|!%8BH zR~zhU)yo>`t+mIx+p_+7l>bQT<%8_n+lGnFm$aASIH`L^6Q<;>78)1wL?N!bh>f?u z*m!HWeKi0$yFUrufC5SF|x_p4g3|37M*E&anv7II+>bh zP_v9H={!=^W=;w(Zv`8LNp(4B^LBvM~SVc1sx)k)3qb*!|mi>*&51`(pR zKDJ^fE3N()E3N()E3N()E3N)lseVNsTo-e`{zPQlx)^JMTqkpku9J~Mz?m@d4wi%t z#B!p2&%zo3k#f3F^a?wr@0A+XJ?`mJg0rn-ASs?4%$$e`u9Z_}NF<_OOZCbW5c(%r z)R&B{q&}u##U~thI`&88GAxtRgHPs8+2g{8YOOy-=5#QD>R=Li8ufB8_sydu z#H&`^&dF=-nOiKHvkH>9`msD>TRKie5t6X0f!W%fv1Iflvu#?22yKN~U&5j<_uo;2 zC#o5Jmv?PzI-_mwfrz1uM<%sP1h&yVNTzm*RzdTmj%!7>jZ5*>{*+}(oxQe4regUU;cc~Ys4NOc0Q+b zFbNYK)(sbiAca$XmEF-`=`NgCm=pK=v)S5ej}HR?CZ@_bos-xP0tD=Awrz?}Vxe5U zs1X;>7}aL}RSV2!c=Imd6Kbv6I`Z1|Otu6qwTaZC-Mb49-u@-pJ$yjMEax+m1;-NXH~^3dSBU%%=)({&Ry|3`e|i z9u=$)zO!AEk%a}A?rTeXPOZZ!sKGz5>Y-*U#C(4 zqn#09U?-9I0oM4oJOA<+xdqt#Y#nvG;-#M~v3GBLF@BxAYusc8itF6?v5U$s*J9F; zFG6}qU>V)|vk0KeDsn-An%7(H{T^?Cx_MND;~XLFamDFcpk|w8d|HA^L>0{cwnA^4 z_(?<96sh<4(IR1IYx%%rAaHOtDU+zi`=Gzoo5N>oYaOce?mNYunRU(YZA{E=XKxnzX$ zAY1GkbZU9&a;x&vH=&c$w~1-iQji}PcI=UCvFPpkj^8&j=Ort_j&q*zX5z-eN*u1U zl_5+7rI^BSPCiY6!D9Ysb!ylspz_Eh&tmdsOpF!1go6O{!0~YosgC{7q9aWMmETFU`;5!+1#&vU zn?j9F1%H|!;n9A((_EPZp1nH5Shw*GecLgYEF=_ed?;^-PaNZBF)JL4QbT>o z=4Q86Lg9(F3Q?8?A<`L^a#Mi!3aw@Oz@9yvT#6$kp1Qa@ z%{^t1?iaL7etHZi%x6pru^8SNBio#9Hx);d{csk`VNi+hqT1bf5M)ZY@8FupUhNM0 z@yFET3!0CATIanf+`dbi!AYM~xSc7^ki!KSXq+IX;coW8d5n*MJ7z2tyYz*QZh-imV#<4?0Xmzx4?Vp;@G_OeJZ%<2;%o( zZFn&z88VfH>9t|d6oyo^8AQ3MGrX*n@t8)Uxy^@#>yWjYUqUB(J?ma|n za(MR2wmkXthchHHT^%-)I?=?z+kP=Qbur>i5ow$sKtXT(+?rQRBsfLtfh3~$uW;|h zyog%2qQDPVdgpp_K!^>SZNu>~GQ%`fMQ%jm&P(XKKk~$E_n$s8ultydDq=XmlNL4m zi9`7#jZK=VK(I|G$pLnCuV!rI5AM?1Q{)yEc}+^yzr@k0w|9wSFw3@Qtq4|m>W-EZ z;Wd3Qt!jOzPR^{i{*s64^S>Ze17Zl2RY_Eeq1-G^ z_Vk7dk;l6{8UI5q9`F4RREKcTAaDS4vX&GU>xIfpSA(J^hg@Uv9gTahnt6iNxgwlg z#iPgzG%MDBf~_K%(hthfRiuul3Onv?kV5m#7co=-Li082vm19KMc`8d1C>c&VBmCf zL_hYub`+ptj@!+&(^i`{pmpKxyk!Qp%Pz|GV~0IvB*bPtM{TC5(W?^i24I?0w3+aV zvI?93vedG8XqH-lC|u#8I&GP7mp~&W%|}@Kn$<4;SwH<0jj+QW>k_&EP^DdeY)pwMj?vX$y;*?fR@R^-@yfwCFwVbwz$hf~H zQr}=U|C@_!c(H}J2;FR-d<^?9k=(?bo*1!%oo>wO4>QLoP;Ji!zdtTfwKdZC8&bt7 zj>bYAHMBI%xWM71&a@d-uIG#+?eY$%eRM|i!MMeBEeblM>?A(qU*oB%rhp+B?{YH` z-_;W{Te2ny;z<<6{&?x22nWI}wuhaTNn!X5tHy9yN^ad>@@izkW5`!T)yObrh7H2E zeZtA#$lO&-hLf7hSd+g>I|LS$wNfxcw25=u$t_|sA#_MPwN`PElO-Rk{vK)4l^>ku zGX(Cwh#7WcWbQYpG}e5)odm0cjJF5hKh_Pc$N;;S;I{@!p+9nA&1cCST8Z@faR^2R^{S)Lu!KCJ4ED1ZQ27Ku$eDkCbt$H^y zZ^~p>Cdedk-h5@oo z-AfK2XvZ7dsnMr~wjdW+&*XZmYWWxHh)%nuTd_a*#Rn5Cd6)4-*gtO0yOx=PD+43* zF6KvUq?VLod$vj-5cCw|PT1H8f~1_a8SA$@R@D}nJ)ErSS&evbA)tr{+wCbOqh6j? zv^FVcB{ALN?aX4S6s3j&DRmW+m&}?{8c|THgI76x(R*8OIV^_=yI!~Mgd8rMIMC2J zvIO7hw}lViIpu8SUHV64_Vq^XO=S(F*oA@)%Q!PI&I3RCO@txNJZEFeKLx29!BBH=s3=?=y+w4g2FPe)bzj=Kcy0 z!VXU8H(*7kIF~K2+bkLjyavnd<`lxg>OP@i4oFN?t*kp1Eu-#85%zXc(mUCb5`Kn){MSmaR%Z%2&;%vwzW`+4Q()&SPkw55E7X+abnmax_o_NYQSgWRjY1#DuauISZmqV!LY=OeE5Q2IcqC zPC}G1nUWrhYr+hWEy2!11y4t?!#%b9w~3#&^t>f_l%K)*ZI~xJ{wnjxy6`6wTRy6# z;+&pkFMV`##W_7U^tlGD`E$FoUphqPvv#%8KiMxv!YTiR`y}1v!*etra${(}lt})OU@?Qsx4dVUl6~uHeR@H zE9x0YUHKW5P(KNv4*BIZTlUm-IG*K#;|^yyc$shY`&?@Vl<{iZ-k>KuhnQt;T+;@U z_o{HmHUKTPjLV(4gwfQ0iAn1Z-_;*+!*+Xy%fk*o=ufi3rHjqb1Rx+-yG31Vi&k~a zJU!Mtc(r{0ud8u63KKtX5YxQ8J3I&em`Kd zR=1M&F+J%|?D&{O#r~{iefu>+7e_p`sB8w-vLmrej|3UBb`_cIzt)|`l>m1_LF=S|I3qC z$(+hLrB_83l;{^{PL6y!oZtDrV7JR0bY=FX%pi%)?=G)+~CQ(y&2 z2a$FS<+QZp;J&A9hP^krv-p_as_lJ2Syc7=en|yezf-l%S1q(&%2zt^9%kJ2?*Y38 zRrXz^>A%R4XuiITlRnGJ5~*AIC92-TDwh2bY1HLS=?(%A!9v~5&_?X{Ia3Y&y50s9dxcwh`X^5(i|J%^jB=vrPk;2qBttADr08* z3vAe2u;gq$?F)we--020X-1VGR;wW>(t<6WXs5-bi|LB3Ct3VrA)9tVN#)cFi&t+J z(TTdFOt4cfksMuS_)V`M50?WFw5K*yXE3#&6DjIDL6zzMwC-bq^DfCBuw|oh%+FL~ zOWo1EL70#n_fkP-xJ+ji2#%$;-g(0A{9g^6>Mt=g&}kY?e@>u+!vYfV02lFC6)fRc zf?kO&NE<}zAf1;TbZAEFS%~;lPXv;{j;2Cd!#iZH+-F`8iOfzLF~pVn{qt|BHAj#l zG)Hi(|L`#f@4cQNmm7PiF~KjqR0wn$71K$xDYfTvV?H(JhMkk7EZs9>mJvc=9pMvd zO$Y*ex}?d7d)fMJv6a390ytjvbmWfyvb07%9jn?CnSEg~4Qo-$1FQzwK>ktz=N?EZ zw2E>@vQ2Wi3kBV?*{Q=_=fp=mjCMk->KXdDROOQ|Cz`M3vB;3dZ#3UUhA_^TL>1NV3-*BRIK|UK|h1CY;@@#+w)9p#d{b8PbK<+;zcHp zRQVFRCu42)ro)5|qM%g*@iN7yeh za-;1wxW`WKl6AdeA3$tG5#eASCU13Zv9oe}x28 zW4CZkrA%-bkpt)=Zd}5W>CHYwQpII`&f7IaU3320kkq|=SLEgMS-d1)CiL+taID*B zzf1A-&nSwYpdZEzyIZEvsQ$T=tm3KVmf~b|<|=iiKwaUUcJ7lMAhB#}5c5?5%%?RaMDFuU~k}y?BB?pzt$(lzfB2L z*~&BgjzvAM$-d)vp$Rhwo!Oo>|9CC+W*@QOmdR{aGyB4`O|QW0I|bVJ=IgTVIR#fI zSb%B%f=rC40GWFyelG#w0715?E-ch}dyT}L^E*0{puT6d?Ta93SdPPD&WVoLDsnUc z`(c@5Vvl^+dlzbDrDA29cR^-!xwO%W;Q1Udr{sW19|{a0Nhr-qyii^RASRS!9l#dK zF6qc7yQX{DC6CLj!rV0aK@**$%#Ws_2r4x!GIff%oA46s4M|kJf~Xp(;YT?Tq$4{B zb(E-H$eTM>e36NBzp*JX0uTDh1CiBp_ROI=;fIgx6vdxOt+Ux6H0H6)2rgggz3 zMihCc%?+5{r@ZCmTYfev=e+#PD5wM4sP{lMhjMS6Kt^ zsKaOeGP~w*=Wxk7zeSKv3LbS*CDCn#R4e51&|>z(T8TIIsVFauJWT^@x$yg%c-tQQ z$pWH7s#adzA<*-)#@DK$%dWVuuJQeYBB@6OU-FgoI!q)9#u_TdKU=jOTZ$xU zI#w@UKt$w#ghXVuR*zp~T9k1oo zM>n*geW~$Xqq^L?)LqLi?WVHio3{@8A0H$?mNjFk^cHQwchzGyco7 zvQc7#OQO3u!3_H6dOH>zp98xaYBOp#Fk;;}y-I}IW!Um2QIboXI~XJZUk&i`f8AZ9 zDZQs9Cim7SyYR(eKmW?YQm+1A!csc_@~U|jqkIbbyYKh7@8k8ogYVKFIg{X}J)LZ? zeN^i!Y^V7w-pMQl1nGa_HCROspLwbM+!-w4siqg(dw_El{cxMTyvr`Gpv8V}*H)W{ zl(n1lsp)^@j!(QThp?CZLAsb%A!5GzjxvJ#4ooE;MC{8NX4XI0bn5^&3A1KVU7U!wD>+L+M_JMiOv2<7_e~~veYkfht zst85auMcCX50YxHAs&6>x8^tQrCOUBq!)r9Pk+5*j!$l%1nS2TaCZ&J zLiYSyd1%Qg)dEV4VS|X)(D-MBSc}Eo`HgLN#8E%8bi6Yn|5v(_G&x;PdmE;B?JZ-P zd5er`D*gadEL)akiVnVpRi&vsS5D#^30ymW$Zef-q?0{-!q|e~XC)jevZlHS=PGGK{<|OwpB3?I@n0_G z*N_#rHWW0D`3iJgP&X)=Ec`R?+#8Y_vxFbP3$NNx*Q=(>d`+KpHNEnau%>@?HC<~p z6=!R@GOX!R)%0W4B=2gpadpY6VBI5~-RV!UGH)FeT2Q^U=m`e3Tbs|4Ub z3Ey$lf1KbuPVgP~vEfts4~H+>*j*aAQ&Pq-DS8VrnM2|DKJXXo_eiYqNgN(e@&D-p zpMBg$)UrDV0;Lccbu;Go+v&M%V>X_1?^i^p^>N)at_;c{h{|De334DJ8 zwrBYN>_>+0ICV8P@{tgAc_6;zL0pZzbmM!42s6{K{yd|-90Fs_12(frW+WK-1*$0P z#%y0IxQ%evm9b{dON^2nOAgzr;#JY0N+mPHd<#X<$ZvfMtNO*Ow$;B9-55+r4%phe6_4yb9=S%1zf2SvOi|ZXta0Cf z$b#9ls{Y3IJRj}X9&Ox!xi$bd#(MRW17>rn&m=-rmPq-QcBYkjnF)qrT~ z;sKl}ecO*S$Mo3{d8~&!G(J&>J9VdF%>T>GDIje8XMotNGx`1SG9!^B%IC%R>D56u z9+bJ-Hx=toXXupgn;@loVc%l?)u~>eEos$3M9S1ZkQv?!zaYh(Wjz(gD3~3 z78WZ#qCJ2>R&-;8v5YLRl}js@;CAW8m%0+8)~;Up$UBwSL?e~&yzyp?zo*8Mr>S^ZjrLiD9+1!Lvbv5L$T#9$FYhuc1|>3Q;J?*cZJyxZM9<*blW_I z_^~Kd+A*s8FU1g3(C>e{yZ?L;znmwOK&RC3&NH|lE0`cR#`OxV`MAdILL))Nc3Fi zK1PW+zL1l*_j3Q_PBv`}J_MgS@9*}H68WXWDWoV`n`p0d1~YQbK8(!0g5S1?-*D!D z$eb6X?E@B7_ih8(rGU&-;rNnsDUE&`+!{ekB4Y)ubNq!1WYDhc+3!$~_Mi8Q%zn7CcQ2ZVI`(EkvN7sLwUo9ea21-f;q(l?-T6(~zAM9@PvO#SkZ}b(6mWsd2 z)A!*M2xUV4)A5%ADB&+^!uKrxqGE;i(@sUS@#f-!x&a(1JG7yyfTd!$E88D1%T5$d zRA{_Co8_E7vk*e9N*h;~g80c)yx9V_-)%8;=YLHV{`!Yz-EH{KOYu(z+kSh1T^>Qd z19Uj8`^v*UntTSpT_6pwd+Ow}fSWuD0)^bmzZq;p5evS6cPQG-_r}#l#7F=gQ3g*B)iQO&MkXndhrYvJY4GDK7iC)5u<_CT#jRm+aTHsK8f!0YpgQ zuAvk-$rYH;v%ulL{$qW1?XY-I*}D$0E?m+x`;L8K{n{uedMKs9qi2mT2-c{;nrht! zkBk^{)!FCsJxaW4b@_IZ8pq6e1=&(ZT)LU6MS50}!+uoo!^jgVh(e;ab`~woL^Tbn zKoD$)l2hbPa&iOmF4$uUGptlau-3g<(Q@wBRpuFxITZ!J)m!tJ^A5kgplM*^nD<^5 z98Say!gMGK7Cfg68ogSTqRMP1#>9y}$WhW`=1d>`P{~+e({kR`OitPFP0Qwqngy`$?K{hyd-N4{a1i5x@ zYA}B90qASj;TnHe=7^qU4yR0S`g%~=yNaxd(_15KsDF00{(Snnz6$!fRt0kOHE48>z6v1T#xb9I>7Svm`Oo&E zuOC@LNMGM{Z=Sv`cW<7)5_)SM^V(sKzJB^*Z~8j!NvIQ>bXD(^0lAdx&cetcAN?J)0^tJDSf0VvfL_}Zv4z|Jn()Ssh z+AMv&wC4cywSYpw8dv7GoH3VI=J%B8OO_m7}i)qpyc{{4?}b{Q$NX@xqpvXrN51@ebZamAy7f+@uls%kN&N1YMoUv& z($7dDKG3CI;?h#eHs2+UbxF4*x;*zda($`6XzV2T7kJ8uIhKRoI9$@sfa}k5{ z(=2_>dHVqLbuxv5Yh9U(f6=4Ng_P+{U+)dp_`B?nEF^nVmcC9P`~LLxs0s{p1&-=j z;ElKTmtQ|s_RamR3$ORgzLM;&{(Snn_w&%#uT&sMUl(K4h4bSeG>OJBS8xAk=&OB8 zFZ$YK2_b#`+P!)Dy4$^Z`IXXJ^O&;_arE`fbG_x)^_zRq*KsMMuStVa6EH0iGjDc^Jmqjn zr@jJCRI7J}@{DNn&FC)Q#;zJ`_pyw%AO+n1z|VTDYC?UHS&dRY#VU;4fB1ZP>{8PE zlBs~DqF8>8~<7@_w{Ii=@xW=jy;2@rG-2C(|L z;eA!`?P^B zz3~4%N1vs_|9>*FvbygP%d7v9+$O}?yQcEEg?vA|kvM{@@^ zzUUADrDZL#Y)^v!{X>2y(&uF@C`Uh+8U3to5d1Kd{(Pv(r|Zf7bs!!4@%wa)revNZ zlrY~C;5%EOvdZi{LcfW_TqoeSoS~j#LtT>{>Z#FYaKBFj4s~H)asIsHzfy8nTJGv> zZs;8*;f!@Y1*ZlfS+G8JFkti(7!0vtvm`jef9I8@ZR&_}v<#H%O$=RYL`vT7=XfE4YL1xkdqno!HK`m9}cV8Z29!J zvV`RYpc@~Hm}uOEz`Gu&2IDhTJ^{F)9s)L(6Zixh$f96fsW`osO=VdRMN}=o8On{f zpvIB=RQPS0Or+MASg!-@YGorYQZZQlI%rQ7&dL8oVf=}~ul0$sB_|Rw*o)^uEm!Kb z#^gfqveJ0XHOyCzH<25%hNI1ttJ;sRMgl`nt}G*&>R_rduR3V}_JKh2h`93Ge%CiD z%`Kw+Exj=s&MfY!K(un&bNgE^XDyTcE!xwmEmV{BOu47_eY99QG065La-3%z$LV}~ zCoadH3(BV1lTda&Q-zfSpvD{biA$O+OoFsB(#$_`xlgYV3#JMOEARPA!yjkmKUl6( zW06Yg8m2!EkVBC`m#HS?iJ(*aT%gkQ4NI6_5^p}gDB65MakQC3zp5Uu$I-tw{d*e$ z7e%Kizs1U|u)PVuv;4N)W|ScE&TGKs>uvTqeS6_nMGkhhS;HOJ-|WE4Ovd|3P~RoY z*{Q;*)M@S^#iuNL`yNlJ+E~?Qo!WnwI|B)POcDGzi!BDs zj(6-`Y?L=k+u$HwpO z4(KoWMCAS><{u66@A1Lsh!~Ks{rejuO*0JrH-i2z8v5hS7li0vm;S3qeFh3tE7NeO??l;rQt9jL<*m;4~HT6!pEzb7zPc-)ZAdO z;PnWDu`W^7UVEjGzr=cTPj*lyt5UqK3LJqi)9#!M(dbR?U7S5W9}H<5l~O#Nu8f zVY*^&B$k=Mnd6L}UCJFxE}5c{Q1RSIOkpIZF%q>K{YX?7vAUe%ECu5b#m79B9Siaj zN7)r^_L6nhY6)6|z8|2*Tg=P64ZY}0(??gKrgUct-Q6R)BkSef63!&CB-|{GRdXoe zzJexy0msu;BmUmJ9Vxdpy&N=1x@|XfxM)PJ?=pTL`dz>~F*Dx6N;!G_L{RVPOZ*_4?Z*^RLzcNAFgCTC;u222InFcZ<&4)$w$(USugxPT*UZ%GV3I_x+}okm>GGa((-yw z4622k&U z6Ol>6KPO$){+kACp>@;k!;#KVscwdB$ol2lVAQ63nV1`?p4|*jqzSw0YEo>Qla1f- zvT?@~jF`?(jweIu$hFmsS&&|XhV(+?Wp ze!n#HQ-h69SHHSTK;2Jo${U}~SM$dwoC!lfT}g3G2Q_kB;@G9sRPccQgs97097{!w zZK70OP33Vk^o1XnTU0VxUtWS<}G&qV8joHb`MDG!{ zzam)lRNsT4k~x}lC36#1$cqw-lVO{$K5lG-jI;@AGLoo^rPtuRb`8NA`4A2u6d!IX ztAM;Qco<;);Gf+IRxP4Wxv$I_!CBj6kTm(d5O+Bp)GV9GCuBb@dltV3yD7uUO7bf! z^_A(Xdex#QCicr)U8Tj~MdH~MTW2m^=j!Xk&t<@M=?DJ|xB_3FzN$VaHy79@<>0%% z()Rr;J<3(u5mvf6ztZihj2`Q&Ds3=e7g&$+&-hx~_N&$R{~7E5lCbKf`Bk_1s`XV> zyGqzyL1n@7n?OSI4*awFm^n_4lEX;wSAlW9P7!aW@cJcG=Sf-VW-dqEjLs54 z$83O6xVO6whe{8ePJc=*xm=7@O9<=2d{|oz#u=zB(_ql*5<5)Y$u^EuziX1LFt!3I z7t@^OhFcd~DME$;fQ#CW7&jm4R~iVlr!43d!P}b+OVjvbqdG%B_-CWq;PdONuwqCk+( z61)u2i$lW3D)SqwR%7B2JptFL%TAsKgMDKixyDNP8N6kKof{Pz^I3wMU1P;zV$o4Ga``6Z;F4}S|oMTBh6wXEs?k^PdJ=L-nscKwsnq1+CEEvU>A&EMJ zBpb$Y%UUnuu#E`ry$sD@Q*iLgPK{3|y>bN5rT!txiahQ#KKd$@nLG%|>H4P~IW6U* zsqU`d3!F_$uzk~)tk}0v;m5)YPScB4JzG!1&!vA&gChTSo-(FpD6>>N*|MGgkvCa= z@f9~&O||OW4r2ArN=o%3eLvMsP_dAma;jZ5b>2gr!Jd~tQeD!SP!y^)9I7c=wGYjd zGufY$O7|5_MDq>q(Ee<4!SwkmU2v#uo3H}l>xkHRf0f7s3^9l=?}a>=lXkUD}58}>_ACxQnKkp6Q^ z@4->N%HSlJFmG^|JDa&`Z=@+ojX5QTc)BMn%&yszV1=Zyi9ST(0Tc!34OHX1PrH>DI*pDMzM{Jk$ahP>a zFr+*+k;sHP<9#BFz1uqgdVeubGCf_F8CjOnv6!HZi{r6vkH~k!0 zq})gi^NoRgO(nq>9(Ucck8Vc$r0-FfMAj0D28UV`-X3z8DOUQMT$3z}<>g9!;EXh$W|7nE< zTBpC5v5*t_FDp?tod5D{#W~H|6%{PWd!0du|FYWNofk#Y(L7^Nq?|Mgw3Legaa~F_ zlhWn-!9Sb3D^wV9t*>VFZ3)&0hs;`%RvNC!`sCEZIMRcv3RHs$eEr~`RV75LDt*-$ zy7spO(|vsnWb9cV@e7*&IKT8Y_KAG%W%)%t{NPya2WM*RKXig^Rn?kchxTkB*!PG5 zyq)g`aG)RjGk`n!A%M5**}LHtlr)vge{9uL9*)hyFCiwFCOn_soj72gSlv<>Z@!G# z>qEp9q7Wpu1J ztMJlin5LZXRibUz)KIhqV?Ur0TM1CuX;!8^>SWrs+B3BUsYWM6us2C7peD*T2RC5T z2)7O<*LBrUt)TT9wihb@wZ(Wf@QRcX~i3N5@ZHl_hQLhm5VyAoSQf*XL zIaUuWcz!(22_A?4Q1I+%qXpT&Vf<@W^nCNrPV`7(+Vm#VJa}_0qY3}(C4Zuk9@JwY52mWhwLtqjYuG;SI>+?9IW3_ONiz^slHT&R@@flRI`eoGei# zFz8~n`ePMDz)cY-*c!=4Rgr%uQ-d+AY=cTKjk!2cwo@Z@SxGc zW;HusHJ-44jUTzMFRuxq>DkwRcYMA75avyW2dVMGa~)0EP-k`JiGS&PGTcOrgsp)& zij0>{4X!eBWO}2vaKX4OyI{QEV0|h#Sf@HYjsqFZ{y5IM;wyr_TU8-yUVoEb>i=lw4c7U&tn<0i;VHqRb}(tdEA+ryPQsbfqr3 zd6sjM>>XOrWKd%a6ud?iisE>}$`-z|#x2}VQCDiTIy*HubVIi$;0|*15Ii=YZMSmn zt2wRFKUaejxN|avmV||t>IeUdZKPaTZRKlsv0T7!jTrQJ@#g;7BW}q zc!sKVw?%B~WX2eF*!WS~G8a>ucjg`aoJh52AfV!lImi_@;35VHNm*UVl&O;1fzli;)mQS>`fbO-V83?nv(iXWE|$gxKa4y;chZwV zMV4{=4;TMXC|>9l{{Xo`f%RqO_P5ghM(r=SKCuD{ zB}NFG4_wXK5JNz<-d;1q+_YKkY}*vU@ivk{9i*4^u0* zSh}p-;(pTR{tL2xYdis;{cE`X@($gp zv4(5cK2UMCK}8;!k`lB(1y*vsCTu~il@(lAu0>l)Y8=L5F6>^v%U02d9rbFMooL3i zUCC9=wM=IjNLm9(KJ`HW$#XRSLNjT<=%@bf#}sx0q@fRt@~4dbORP+h*XWmGww?I) z#012KyIC)fOAILKKh^g@y7jkeVLaLMr`yoeXL@(v((a+C5{?S|5+E#s&?jJ+M_q z3LMG-qacTs+=X&wK2(NYg3)a<#|q|XoR~G|J~Y-mL-HQRblUgxFrBu2;#BjN{y zu&lxLQ)W1~I=={WyVxy}L-UzUz)9?&fO_2yA#T+#?B-t|S>z)7kV5eSow6DY8YmVw z4tG!Un5Wk;nQ+T9CJxMrLyxW0R?g9rhI1?SWJpnpJxThL2s_E16tKri_GD!VdnRXt zJqw?bsml)a>JGjtz^nE-7S!dk$lU?&g1TJL&}n08mHs@Y{1X(0>;7Qhpf$oPE`-Eb zw>0!`i*k5w#p$VAX5BNsc;ZGJKTxY-2jLzYd4tna{dZmccTxVk82?=y?y$l3mcVIJ zID2(JPgqC)+HK+3r(+9Fu;^~9Xc}#+@Q$*1`t`wkE_{uU9*B1gVL_&5@D4*CYIY@^ z56+dwfn?G+*{xe1RY^Km&ec z`7L9L_+JjbT#aGVT+SE1d=EU;!&~5Qk&<)JhVVtEypXsun{?+u>UnrnT?4^Bo3jEA zeSs_&F$-9Y7ajR*h)*20Rq7{KT3=##YN)XEKwzFg$mP~q<2zbz-Hn_2LCBc_Cphh$ zfD=ST^n2=4Z-DWpr@oxHKU}MDhnjGf0+(7Zpu~X?{D>W1nhqMMx8t3&I`GbqJ*W`N z2q3om@1YUrowX1z8VU+VYf9*e;u1P zU&qu!48VTBH} zk7goHTKS=?|6P>-U5x)-9Nxj~AGaBY{#eG=)9l+kS6``lW`z5It@H{dAGc%qy#ov1 zC4R!L*K?-I!E{B(XWe1r;YG^t*m__M`bKz&Aiv{(2LueS1O$w9ak#@NhWJ0W1{-1H zP?>(13u`!>)Gg1DHSg>KYuukJ)(lXrxoES=ni6Ll))=)=Iye|7z@=nkCu;vT4Te`! z-bf1AD~TP{B;-d7lCF`mnCF5OIiO!+9#-T=p~YXiS_& z$2(LvD{XrUom=g93?!4dL&Ax@T1E3{*LUHXXK;7aT$=T4ePIP%7n1-;oHh(y)lEiH zzDd#Ik&sPE&tS9)C2ZO({clqwql9|czTwJd90JQ0Wbu{s16E>~2n6{0Q5Xa2s}cU{ z@k?3h8uZH+pG5ME6ab(FkwDrMU%svb* zt~IbUqVW)1lz2?SZ2j7H@MY|y1~t9YAzLz66Xq6?xvW3lytXnAX0`A)75JkXKZ@Fk z5|T{(rvwMDkp40s@IDJ2b>wamq>sL=_VCtSvqQ63Q1;Cys#w8-`JEl_&m;I<)v|t> z_@$|^8kh|rW>3nZ8L5A)GA%LFkIia>kMC7tkt8TAmo0+c31*Glo3J7^%y?hR^ih%? z+pA$qp+lY(D?p$>rcjazzXiX;XT)!6UK?iqU-0`k>(9~y;Np$nD=dFj{aNu; zXng;>^{0M6@Gh3slV`3!5gnoYpRPZ55VHo^_PM?KGkr!I7XJ6^&vSLa^KajsQ9sw` zwn6s)qMtvz{`|0)_<7HW-^Kq~{Qk}QqY=vp!wUVZ`ZL2BnxFsO`cv{X@V?owPG^eW z)=uvL<^Od3IsO$ed(ZHUq5aQQZSnb!)}IjZ?>&W>?Aju7f1Dh|=21T@0xp==5eMf< z1boK*DJA~BCUpFpUWit>to-&2*+vdNVYJLbbFksbHuzxu#h(H(@G^;M-)s>B|E&0T z6z~hte#EIHXg?B3qXQg~`lZCP>f1Bc@Ud-?RTk(u;+rBd_!7bQk1g-%5u*D~)0)xRCw2U0v8eTg%p?4EJxyDOh{4;XQx5mT(ucc=A$KAb?0 zT^IjdSN~m<|1QRV7sosF-Dy=-;9;|78G8b&%`jwhHG0v|ch@EPI8_Z*n4@N%XKvt7 zz{(zTnaYV57H{Wi$GVd{*6o{ zwzI!V1|TIdRspah>?Y|0e=^E923>Z0(%FG_j58RMR;WHS6f1pUoH2PP&Q|=N|6va@ zPKE65i`0j6_6GXCq*(Wk5)6uP03Zf~Ma}7)wTH7&Iqfr6_S46V8uWAS&{B6UN12a}1 zJsoB9c9gI_~mx~JAR8p0$#WYr~WR$4`#vv zfL?)@?4L_r*rHcXw>=iDn%+N#9(Xn?I_tM(-bgim7_5Jy3dNYMj4?DY5M906u%p^= zFxxW?-Jz$ki|r5G#TI?A#xAz118oyz+8r|0f4Q8}WTzTN9a)W`3YcXzBPw|h<OYSvD! z@7*{(7jv!#$FP=61%u<#2YzF7e?O7>-*{3}?Gf0w+@ElieFgg6IX;FBf~=U2lNU9ozl}2B z7*2PpZl3Vp0VbYTj`4`54_a{0a@gcx*xhY7h>>$hsNW99@P0M6VPDuP4naa2xfVYl zA=rcU9M2*lEjg}VF2=D@f8+U%n63|fxC5Sh{}!yVN zj`sVAUduxJi0Ll``H1eEjDqR)fx=;ek~iRZGn~4#k=_G?Gz*SEqb(~&p3S{D?3g^0 zT48Z@7d63=&P`GyPs2u(W1kn8*))t#ZvD<4Uv+bjk+o2qDCIwJ^uy>`_n{856r6Q$ zaVa zcqrYnV$%e-y(S7LPi*jFT@$D|jpYg68*rOmxaTPhH*R?b<8F~3e+&g%^nMEkd&jF3 zj1%u87f*(c`K=gdR0N*DBJ7Xhfl<3QjfdRSz-H>d;`7CL#)vwfr{I}hW-G2icCJ-D z*0)XVNTu4}pB7dR6^@6eAS{IuqdkLG+>YBpGX9GC1amKgr9K$Hk?ZZnUDskK0sF8j zZD2Eos39R9hkjx&=8)NYRB5gg;adDjOlzD~3lmLhW6;%(gIW5Jf`H{!cdg-L=MdKA zTTz$875t;qZUNgi_+WASRXK`#mD|E=?cvz{2dnH56L1A3j>=4~)#5j4$(VvLxC-bf z)5>iXwAA`p>%hwZBIIV#0t1)-4Se?&`>>4~{$bvZrSvFJ*bNly$y>Det#&^Onpk(3 z_E7L6P57#Q*C_j`Q4$zJGMoUNaINz2t4wJz7)fRpkeC4^X~A?}_ro zFrjPIVGpZeFB89df1m_0g&|@teVdq}^FrF64Q1bvn&3gT5co-T(sErgpi*ad2j8Q+a zs&npk65-B^@;w2}9~nVovRhyC7A=X4s3OpmKqVC{{amxyH)_S_BV=?AQPg6Ak=_qM zmfg^lD^y}V*jPU|%{!N8Q zxc&wu|Cw(prNGc_To=Dkai7T>+85j7J=y+W(?ajFyi^JExX z99@eI#)_dxc~N0AW@*J|p#~x*>d&*}DB^dkHCM%Ho`ht17YB5lik$VW)Ml*=_O@cIhB0kvXOndjI+S zRIf+ls;sE~>V2digTLOqP=YZ8#Qg|4X&64JVjn{AT5UK?WQ$2hU2%|v6(M}0DzhrgoL|lF@%UbP0|>zRg1(_P_m}ozKF7cfj$z+A27Uu!G?$=R zVLS1qqsKm*s{tpCW6H`Nxae8ubINL*1Q6I4Ymc_o=QQSB>`!o@vAMS4-)!(c|5Nzr$hJNO#aa z>=bCTxxbPRH@gSd;Yf3>LdR6j?{P+{RAS7gQ2eESI8wLG`kfa$%{J@rp+f6#i}hhoq<>=$}BRXc!4Gf=ifTK2Al z@WHzs!`9j=d}yhmqV7U(#;pBVdu1P1t_|E{8&4pL$O42% zL7Q63(ty^u{>a=AjL)6Ymhtg0>z~rTC;9FBMAnmn!?GS8OZ>zr!oDlxxY*dspip+G z6g!W)B!P_I#>dMQedy-)#ywaFyFVuJu!bxFtADism%1cYk~ zjigDaSI#&t31{r@J_h{}uhqJUo1uSuHP2$nrr#;eX@gG%m1N&qv0&VP0+Ydl>VfW? z94raUZ|hL~MLuCjqWte_#(4#YWkVy#hr1kUkdIv9_)7Q;CpI6~Ag&u8HsFb8LPfM< zB_(cc#6L-&Ed?4*1cKs63Wx9c$NL=In}S0B8ATOid3GRELP|{O!^9vvB<+d3AxWg9 z|9(l3%M~CH5(^@>0t7;u&u0ipsDO|p9b^1d#?&xU3Li9c?WyaX=PMzhcXqA*A)}*K zC6tJQsz8LM!w5q13j(BT0LVWfJ%iApph;9vej%-V$v@s_;+}Ndiz7;GR8nf9qThjC ziku1TYc!e^7fWnvl0=R5)3s0vLhw?kN@jeplOVu6g7eJ+-@08Pd}IIFls}VoSO!d# z#DNC2G8QXL(bPDPoU}3xTN`gkQ^|NCjtN9b3AmCFrWPVwaZMr#es`@>#Lu`&tLg%M z25%Oq97^vgH1W?<_zm%c=wLx*KHeKK>wTDk2K~pc)CIkk&jF91@4F+oCV2aH;J-%- zN|pH(WFCD$9^U%f%o|`?*Wa8AzaL{m&sI@i0Jj(4hj+se*vB|h_gjii3+mXDgS)F) zW3=KqF`9cYMiDTaK!(R~79%VcA`}LcSjC0;8{7c{9t{0wTo0^qFN_SfFEeFSPG8%{ ze_-;mnf|lz$SB1NK;jYzXr^Ku+e?@e{4_g0wA8)Re#zmK4JE$wusa4F-Dx2?i(7Y}W6a7_5J+TZj?x!8<=l6X_r0{Qhw!C0}q@8VByT zm0N-R754&#RPG1nQWRu?I0rF9ZTw`DOfXaym`xD=i5XHZ*YK0lIDzTmOa6&T!hJmN zVHw%}U|R_GcPn4fa^bVjE}{lcR$t;*&a+<%@{DGnMYOZiE& zaY0ioQ728Y;D%;U>S^b>7~O%ttd~VjwfZorP(~phqj0R0df^27A!S{RDtDCuN5R$m zNJMIIv!IephKN;DKwpR%Wv#`i+6T9_k)rpefKRo#zp)h@UW#Q7m^R-V!*nuURf0Rn zF_GJ)LymF0LXL8!9OeD01Wm3B60CAXIDxAjmNOGqkyc|23plBHRwaa?zWA-W{{|@g zT~8$S)bP3`Tz7##DP<8JG|%z`Roe0dex#`Ro`1Ywf_sWxGSpj`VO2sSuK@tB%alc> zRCz{TNuSRG0YLIWN%)b4@;(1}KOgsg06O^t0QI~E0H`^UM%-ZJ6#&^R5C9|}0A%qQ zh4Q@#AP4t;0Cmv{fX-_GzuCBz@U+?@kK`@JgV6HTZ6PV?M0hm$}VDckj^1TVO z8utO1OR;#EFqiQfpz6XP2uqC20%0jj1O&+k2>eJ0d~ZTnhWh}7C6NlkQeFcPDr6R; z;@f;9vp^_eiGU#a0D&I~f$vQSi*O%+u!yU*LBkSW0}y@@1R=-BED-WoA|OaUK;TD0 z;CmB7KJEh$)Gn#mNsG;+0EBvmIw%v4-oi~5cuANkb!$bkPJ(uNQ zmBw?u@w~)%ZZw|f8_!|%biiMPi}Iq3XAuRSV~l5E9G+wOjA%gU#B&(RLDU+>Ff+?u zdIAwHJ}bl0H&;FQeDWO58rx*9FB5I`+95V{IY9P~$%*8xHh zr7r^P%QHzSgLAC>hm%6UHQ;_u!Hq?KCgkAv_~c%DhrVa z0rF3(V-lr_kW%s?5aUPIU%uxb?^AHk`WwLEEU<|~Aa*qF*aI;;qjKZJT<&u!Zf5vggSe^dI3H+YsnM3XB3SRv4P?^C+fa z`@EZ>{PLpM=yZ@0P=^Sc?Q^H0gXxojIsDkhNZS(m`x^Avx6syVJt$_Cq|6@0x91&9lW~! zJf%V}KBpKZ*nm-qEg2Moh5ZL|prD%n&(&6|bhF^5>C z;+W-|x~|}$SQLqQ9bINaI?PZ!@t@gjS*LJXB(zsZb$?9-#Fn?`8f{ytRp?PvUoqUW zN@}@&lFQZ1T%b|azQFe{WI3BbbBO$<@}0faMH?&&xb+WY8a42^!ZRJ)g>BK(;_K5~ zb=bnl%a#1-MYg&0Fto(kj?Ca}xnVWhz%8UfYlDhsfuX4ezT*L}1T~J`2{-{B+O0{~ z_0fQd;-FO$?JDKRlYdCF4JSFweUa?n5*q+vGG&i7(tMR-%^GCRZJYKho9k#erVdWVfXHsllKR?)fevI! zuED-Rj$}+^>-RMVcxk-BNt7oz{(D6}Qnt$sG<<=KlbUGFF!S#Ea&9`gOm5x?D$ ze8k}%$tff@Y`cb8BVTw&16%z7EFtZ~pz|=_ZwDUqTKsUwpbGsaKCZzJ=Xan7<3rrG zZrn;A1^JKOnz0E<`ujJwY3EWMjovqI{hvn^WM>~?g!8o5UZG3UpgUF~c<4!za-0+~rWIM-4TzbIf+8JgK z|DG4ktz(3+9z%y?4>Z~>Z~qIEP`*bI_SAiIN*&=|dQ*OfqukWU$uPENoPJSjd44i@ z%gw0sp(q^sz*s?LOo(x7lYTXRW6V!Q#}8-ofD?x8x1=&lOebWOf`*fAvsj~N;G1E2b$RmVoLCQN+)*Q@#A?zHyx{;ZmGcsSRGGC`M zTV^D=M*TxF1MSFo$$V3uWQEI!jA7QR?x+5cau+5utwhg(>c8Fd5VpxcGe1nP5#C|d#?fO$>#XT>V!LUVXA9de8 z>)K0({qdJLTNY2}e3g@QSNP-?@D!tclsdWhiCu@U=#QsZ?W5$g%9|g$_^OBS6sLXE zr+;Slv*VXPho?mCqrX1i^g#6Gy)Y$1OVU1ieZtArL$nWW!jsG|@ZP5kTJPLk?W0#6 z69-mbH)?@E-?8mW_tZb^n~s!#K6i2RmG69b5;JlLee<8M$n3ZMWx@mWrH*YgA0GY~ z_Fp9QG49H))1Nr-6rKRR`r09nEG>E&ib&|Mytw0qzaQ+|2Tv*9@4%oEXpSZKN$sOc zPYnO(!uVu(764oGfW7*)UrhQllHuvr_ilgUS1W&eA)WyG<3rZT1D{IyJ)QviK=X4; z_ur7nCxCu2b>8h4opwl{mzRCm8&4^ihxAd@hE>NN zI@se80XX8X8w-oxd8iB@0dRQZ!qd}^Jw6go0N8NtkY8N?(}cg^2>@&79{l^9+j`%M zCjdPE(Hn*@$c}soPXPF^${J?X}`9Jd*7T_#CzAyf*Ql^vLpYq2a zC%ffFRfSE@zOSqAN}N8@-BMJE)}FlSj{0#P-t{(8L{jBXS}aAcnkl-W7u{y5w!5ue zd3c?=?S>Xl|M`6Pe6X`kV4CK zwaTAac6Ctx%KirYQ$+#(68TJ(|5D^nQu#-!{265kzOlk&d0^_Y%1%q=gzShlAV4DM|0-$D;%`vn#O(* z!c|g^`5JMBp)#f~Kx`uMtqclza>m*{H(FK0i_Nm%Nn6j3BnZ_-)rSA3oB%xU<@17I zORlLWEOTF%7cW-x;`xK1f$)k)%;uP52ncf@>~ssW0?cTH$0=xy_~bW*K;0z ztL&KDh~VMZzhslEsWczC^~>;}A_;x&2qR$dW};)=Z?Ie4DE~N<{U@#FSlrDCT$FED z%YtG2UR+{S&ThFq3P!L(I@4hPSo`EL(#iU1$?YXi-JG)j1>T^>ehA^pTim~e`=Itq zK@%;4rAX|!=gxmJW~?|l+O;3M-&}pRX89b`K(+8MG|y8%GK|E+5!XSq!@FLo^e9RT zKZRX)pwk_1RMD^{{P~U(jaj6XTEyeD!TGjVef$!LD zX8_OHxQrbFNeuZk&X$SAH204vPqu%Ix%OzDO4!CEp65q0AjX_5Y?4>7k14g{UIR4? zqRIKxTi3ohxGTq9s~Ov#$W6~fT24#6FI16)3WsbC#Ir;?WNN=x!WiyI96{_=)`XoUt&!Fi3h?p_+RdqgCZoef$Dt@s>N+zCl9qP-*?^5DgPpW`KMeh@n_(s&r{|9 zB1HMcKdbz815EzB)T(@jefq_!{N|}`@gLr@{Gj*`a}Zojy`6pWYsu}lG7bf;U1^nH zy41BRllbfBth!m5AL3$FlnG@QT#fDIh7A|!MrIZ6FbN(h)dOWuW&sxFBe7=6RL>$$$ zd@fCfK}v1FC#u^788UW0pUV*N_(nPog z0i*v#fz8E|s!Xfc1o##GU=(XSNvO&%2Uh$GRVdfDH5l{Phn?Ug;9(6s!cXlHrp2Gu z!jED4GiHb4WkFLuikWo>gBf&HuqzAvwQ8g^ zO2e0B<;>!4y)_=DM3+vX|Em$+=zqsU36-IZIhlTSJLaV0^^F|=4}-B)A+8+7hWS@i z0fe}Dq6)^96Hw&+f`mnK#S{`={cf|jGnxL;iGUu%t@u;||EiY__3Nj0SCD?HB+`GU zB57lCh-XfX-+R(Oqed80o8FgcjOhR45%fTU4D+Bj*kj}jqMP=`1Df%D6LPREndv1rXQl~jn z|7wlU2^oAi)Ez+-x#HgX3C#hbyK~P%)HG=(q9*jam}P)NIg-q-CZ(X#Umc-&?uN#@ z>(yT0YZ&*SI7x>}jNS|;Mvx?8DX65B;J;v#EJeR>i6Bm?QwVm1AB`69`*ly?_rb4Q z;pfN8#55Q`=F~6v+4!Ns(h9%0pMzhV!taY7z^{L6{A4mufQc>n$DI0HSw9fqA6RE6 z6I=7o6p80{tBF-hpw4DDknGx!wcL}`PA$K>oftUi ze2e{5xX|ZYNHq+@ce#l%Z{p0GBxWsE?!)~#qA$BA4RiW;**)$U7!S^#cQxfWEMuxQ z54zkmRASS=1Zri^$*NXjOX942o5zOb1y&%`R05u;_L0qVE2iLVv^<+Yc+fm6uNd5M zcnY|Wfm-IYMuKK%KY)R2`-Iu`4{*u{n?91kRa%aBNA<KFVhhW&s086xKtE0y`a!GB)JFZ{IEC?s z=2LKhbrT%WtR)Wm3W?`bHoXTZHjTYTj*782MPQhH7<lt~8(aH4wK19!=5`e_tvqH2@^GCg& zf$mc0rJB1d0<62~@$G0QATEs64`LqxBj`JJo8PHo{bz`@+)UL-TNOyluF^QP2->U` zP>qv|3?iahH%{!(m0&H(A9eQ>qS-fp)I_=IVObGr#~n7!D4!p>Z$eRmfcBjU2myTt2KOKfJ9bH9#9>asx)rmq?=>-5tDE9Ks5({oOUs$N{o%I^U(9 zwiN!EWk6z!@WNi4j{gp{t|ws@=RKHD`e2;B_%Vzw6#omw)^u|}p1cstY{Ux8=74L^ldN4D^_0IC&_ zQx+*bN-O>B!6O&GF!s79ZQ<)N!N3;2!;a1qK?dCk1~Pa-WcCR%y9AjX_IO>8!3aIZ z6@UVfIcbkytB`53$8Ru^ISJepGEG6qd~FL~1E4@gnZ)!Mt@Mf!j>DTzm4AQ{61y8D zZ^w!*h0GQ|GI&8`b_+5!g3NY%e4QYp+ubKHV?ZHu)E<9IA=4miP@Fl6Z9Nn+4ME6! zWecwWP#~jha(b**x@wQR;4gbV@Y=#FF{)w<-zGezn6Mdae2egu$ei>eLnZ?m zs2|e^GF$BN)q+fo9gB&v&xauMg+2a<0zHK_T;nssi8)1no!W3n&bL0vY8D)04E) zmnIB+_w~7>UxWnh?s~2fCr^nC8d!#y$YdY`z5^MwKEatdiGI?6*!iyi?>}+@mKC83rOnMF{e_0N-(kQQN#I;XNmY*67RgoI$&nta!@!L;*`bsaD{LYHz6k9`4lh{5r z*?wv;xJGK0h^FOs89w=mOTCwMo|#r`4Mj~-`_$z4sljj{saY!2xW0Mg@iz;d<2%pJ zE4GHBCZ&C9^8D0b0F%@#6Kb}dO8fZBzb(7F^Bjd@Yba{0?NXyG2Lno4=oCfJN+IZj z+xxh_nBO#`^PG+1Y$$@@RNC=3%6OOrVF;NLDi?y@+B@}!+ityKQRlgwBH?T(g5X-( zBS_4$Nsy)psuqG`u3UcEW9yTbcB11E&W0ig-laW)#4?)%WhjDbgrL#!rxsNYjab%+ zzDGD4iXb?c_6S-+euT532!fAkk07znCP7(>pgJLF z&GSn~9XqQI&GF9akSG$)h9U@VragkhM4JR zvX*p6R$VYz!T}*GR><1>{_kEsJ38g|PIOVi-%w;N?T{=zn5-py5VGQgtgr8Xw|L_8 zo)31SqZ0mxB5PTPWYq_gB^(g45{0a#|9EO-S8S zvV;RdR;G}Zw0dH<*KU0jqm-T2vnTuwMV9hR?Zxh5X-u+&1434okQIB|ksSl|7i&Aw zZwY@xk)=FSdt`~FG074R2wB-eR?OcXoRrY*4?8;1ZwY@xk)=FSdt`~FG074R2w6Eo z)+KRI-dS`_?;ktSZwY@xkrhS^+ih%F<*RCJy(}CMvhswim9=G8<}7(6rW5^^@HZ4$ zQ5}+{1(PKl5VG=xtm>LAD+g4(KCl!0mhd+eSuq`wl@Uyqa6rhKFJ#^RR@$vmk6w3P zC$_hQzoE#A?U1a@V6ub*LRN{8^#|W`d+kqYXdQQ&-xB_YA}g*#va*875)KGii-fGD z+DrRBSheixPV`&C-%w;Fc1TusFj>L@A!~_{b^l!(*1g|ra3{`GDiZ#NA}gswvT}mS z5)KGiONFdWzezhV{>@#tbfVu9{)Qqer9-mvg2@sN2wBU7tmy~te`>N+IjDmH*gr?1{^>JJD|me?yU_bx79yV6ub*LRPtu_0NACx#x$u z&pSKOZwY@xk(JRQStY?_2?vC%Y9TA@igRv!;{Lznb)w%A{)QqevqQ2L1(PKl5VC57 ztZ8r6ztS(Sy08=dmhd+eSy>&DwIrA<;ee2}OUOE$`oOtSU8)vzqTdq!h9WDwL$a0z zlO-Gwvg(Aa#PjaI@MQDql1^-I34cS8mD3?v%Yw-g4hUJgkmdb&?$^FYGhXjRza{() zMOI#iWUUM)OE@58)eBkupI-lu6R$O`?nJ*O{0&7`eure02a_cn5V9JDtl_s$J8(4b zNsOv?T0f!iHxya(J0z<*m@MIdkQK)D5~YjpyZF%OHw@j_iGEA?8;Y!w4#}zsCQCRV zWJL*C-Pe@ISFN0fE}G6-J5eP34MoVnA<4hUJXLRMbw<3G%qF#D%Y^jpH;P-HFbkSslzEa8BV6(?ksK5@>pHy^6U zFn^~_#1Q_5B5PTPWYq_gB^(g45{0Zc7FEBxZub2>JJD|me?yVAvO}^OgUJ#O2w6!& z);rNntGg~5-KP`%mhd+eS>+v)C6>nQ{uB-fSt&x+pqmDtea%@<4(dd|CHxIVR&|GD ziKQ{g5)KGiRw1i!cGnAkdTLK%C;BbnZz!^AIwVUhjY*bpK*-XBtluV7S!cer@ybs0 zTf*N^WbNvZEU`2uS;7G!D?`XywR%JUo~!>fvJ?H5@HZ4$$}_b$v>=woBuh9TWMv9j z_UM?!l@ATMu@n84@HZ4$$}_b`mRK5-Ea8BVl_g}Y7<0p>)!WwDJJD|me?yU_JX3pQ ziKQ{g5)KGi*+SMO&pi0g#lz-w;@Zd};cqCilxJ#>EU`2uS;7G!D@VvWd~(P2Z#}W; z7oF(0gukK43L}Q?k8jCWb9{@|Maaq%vd+o8Y5anLV;}82zh$f-kH89YH~vRp6}cP# zBe0U(jsFo?P43432&^b~<9`HJmAmmj0xQei_#ZJl#qP!m^MdvH96=wkJRu*1S?0Pc zxNn8AroEuD1TWX>OAjAu_8usgh4$DPz{))mu)ivQ%w27|3s;<|!>bzf~uN6tB26Dkj+ zcUvD(d0@6>ebl;tZL6$2Fsa+8c+Rza8ny2G>9yhOzMbAMdfm6aFV=lLy|z0JJFdL{ zRQ;i0{5{&&9x*sU>#^D4-puE^3mnNmIg)qEx8An+op|JZ{ZI#VA%3qT`Jf~lj5N5n zxhrk)pE|;i*n52E2tVcsZ**YweE2DXjav89^oEpmKlwIRRy=rQ*Sc?yYyfr@z_VLj z*t&o1iF{zsq%h*Xvk&mv(hVz}D{nkiuMgvIJ@A@{{T6!Qc;%gZaX=xqSw8kAR(N@A zs3X409$u@(R}nEL17e$T?{I%x(SOKMNw)jdDr3QQWDMxsdExZW`Y$HlP2BWl%DE%0O((G+Dl?U$WvcDe7 zo{5N0#CNQ(1~$do$tGdVKE)=H@G;15uZD%yB1K1X6)|prAddhW?2W+3eG0Qr9r0g6 zg!XW7>LiqS-S%ziafWi;)2&LBtBT6CuJVAR+h?L&pM_Q~;TVJn94W-E3HBa4v7Z8; z6}OTF|9T(?p^0)G1x{;mY%ICOWP@!YLu?G~h~H*1tR9*L{j!BOotN{*prNh*E zdw2sh3;LyrB!7l-P1>eIxwd0VG?Cb$VOj(>A0!$_pn0@JpuN38~htg?~ z-)Gy>t%h<<>Q*VrRY~PqPiyeGDA(tqm8;V&SG_3Ln>(mnle%p;mFxc*%jMWs59QkN zU$b00s9eW`m1_r;>v(JBa&$TRU$R{5wxwr@a%lzY=;&#%)`^a-qmEV4C~OuT+Z+hOY1|1$8IwCt86gPmwfLB0LlImN25kEQz)+DDULZ_D>|{hr*yx2( zoDnP`$RSE_1^8{~E5VFV(EutoBa||L?7zT>g^mJ<=_&UE2zSbY>yW?)VUZF0AVeY% zGyG{8%pgWFLIR0h5F8mm=n9SS1@VtT$-cp6@FPGzWt<~1A7dUPm}zVs&uFf7RwEoS zgA|E2RFoSOl#nioRE|PGLKpZzx+J0jM4np#=O zZnUQ&#-W{uHdVwOahe~xG$ALe=de^MFm^zWLz{`@0?@?#I*TpLi0n$s=$I8I6WB?_wd zs)De;HsVnnf+_{Yl<|)H+rGrIJVSomM>Hz9i#@4#RcdldH1<}h4ZN{?#)ac7wJ01- z)GG-s0K0p=mU?WCUU4A8Grj!8*Vg>gR&8K;`oQuNdu;9v*q>$VcUpX7+KHO6J=SBp ztgVgQ!Y#POR-1(Ck9`@e2i);A);qb~%?Gg)pW1)=9womF$`4zq%Kp>beHlW`q7<;Z z@gCt*AoC5+l|Ki4E!1IklSxx^?l1QN>tfoj)lt}xvF6REAVzi4ANLTh(|Ch+OpA=`vSA%>r)+X;s-ay$JPa=8$J@);B z!2DlZ%W2&gZRPZ2C^;$l*x}?+zaWc8sr3ATXmTi;JQn@Gmd~d-NUfX*^!VNYA5gUJ}b2p=}WZY z44A~s7_C^tc8}P_6FX_^`bVdc9#&a%{~|_nPl$Dmn%D)KSmwgy-xTHRhhsWm_0i?E zljjqhgrwY?*LMfBMpNXOP=G9{;HH?>8&>Rd(@xZmo!=`KCv9>6>eStHyg&o}a`xi! zz~wG<%H0+#hW&GFv5xHsu~D2psVzzs;XtXxz^QKlC*2mns5pA$j5$OMM;qw1Jx}xC zCTwJlGYMnDoKdKtI1mgQac-F((-QO6>Uiz0w(2-nHjY*Lx1S7c*%Jw^gSp2>g3Y6~ ziX*6>SD&M~4mNVXbk8(wB>1&?zTW95=OmgB7?+9kZ8)Tz$_o|{Q%~f{cPYr-`fcYc zDaK(d;V2x&2FWK`R@`9SawLAIbv|6GaXds~8b>w5e4|;rlq6uuOiXIF z(L^?-ZQY+9zj56BeqrMv6EsP8r)}}3#n-0yke9aRa(n99IqSIxR-hPQ1i>>jLB#@s zJVkxb&Ni%}?!KYCt+C~uPA z*Mm^2{=hwo8!0@}4;zOY29aFI!s%_#;P4}RLJH0asfN>f<~8nVp9tr}3Q>zgRW9>P z3R_J!>4Q)ZH6NU3Dc)Rc;EFxQdGbuV)@kUDHZ*(BZng2Nv5Tvse~7YAt?8%!7wxeW zo+NvKVW#pW;#E91hx3V5dF5-=fK7VF5YQ}IAym>SB!f4|r~gC;h4cN2cz_;`3C);& z2c7=P&kQs)_YUpEA-kvR0PGPRY2((Cr$^g{)wALy(!9)jf+etW*xg|hJYDl`6?GAg zVHMc1KHM@d9UtvDTgrDuAj43;V+LClM=k)BDI@sSqb+kFHRQOOUwn_MS_iDb<>mVW9~L4zJg^GFtN)UAZS{E9bj?Z6Xy>r7a z>+7Z{QvyBV$q8iEUhuEBY+P8GoG|nHtRHcFr4==$Ik$HyU)ep8|G;P8Wk|PgJJP9W z5JrfYYWg(fDCIjOtiX4}zZErGiZZF5kSX+Y78*PNnWF3%3|uA}*RW3d`;H&QxMlG( zs^Y{1P2i_)%{^Dl#oY)iXRnl()!HJZ8XbU6|f}KA6;!Ho<%7Y92P3DxxHe9 zaRpA4}13$qFT*5%9ysGW&$LgbmdNdwo@q6>=`mxgXWDMubeXZyGi|%HFY(lM#;W|2an29( zPhRi*NB+rC&cElM9PM11fASLNYbE(7FLu5R{-hpI)=xDAFCjkQVQd-i^be1ShxSBY zz9q=OC&Iw96UHz(x83SFjVVN zs22R6=vR)V^g!6OUsB=_yCGZGsV=hyAP|mdM$YvaRdcO{UzbA)c5Ag>B7}y1 zLAW!fiu}_r;c@x%{;BS)}Ja@KYJ^t; zyLoL|MIAdyCWNPlS8J(XOkYmJn#lqa#u0T?A17;D?I&Oi%-JUJ}z-@t-k5zV{Fg)#Wv!ufY=n?W^7}eKhetUpZx_3XmCN9nLyES9yPfQq!qq)=E zTgwl1v#d~uRj0WQoNsfTI^Wq1ns?lH3lHbmCFQH~Q2)v}PQb|dkD^13=i{_P-cj0M zF-o;zCw>HdIBG~xfTP4Q8!W{xo{AyWLOfaKZNdSl$bx2v=LtkemHEyYX|8YPIEub; z_DpWZG1}hUDA^7jWe?od^Qj#Rl%2%^AhZ|p#EnNJ;abKA#E*wnU}8<)U|BH>G$Pso zfXKCwTd? zWws9r@f&o`Y8dk9^H;HpV?n|)6h}BKab@g4n)pt|7W3PIQ~z1}B*EF*aC!lI9oG6e z5rT9cZlMEG3F>6sd8m_R{ZySCMl?Lpzu95dN%wBrqUDkr{CvMu0mtzNt+M`@XbRfo#E_i7dS(BG&8+Ndd&2RmMAg%ppTs ztiOqV-ADp0&wkngBR$dgR8dOo4??l%2~ox7l<`jYd4q~gX;Exa$HiW7fl{)376{?b z$JJCazEet8+o7zVkd}0~1qAlY=16vE5orC6&O?aGUkkXlNPk4fzFJhd0Q^C?h*C-j%yitaAxDMn!Dlp%b@jlH`1>er_&0)1(ie}k&hE`R`Ysy%~&_ive?7pIxvie>IK)7XU7ReY=@TE zaH#upGl?%C5O4P2omXEQupLOWcMT_+fxtDK^U)OU{5_@@tj2m>WRKrloIDJk!#>!Ij%}Il{r+} zS#;3P!IRbPanKXpGg678+9<3B*Z#Z*v-qxz4|+p_2_&M^Pt~^PmPTku1uAN!+dDh1@inH&G~s3dZx5S+d>m z13sJ?w=f|eZ?xt$?7PFfDjHs+aLB)e-@x7_xUz>Q&yI7?JoK}g+sFw$LRhy`|L9Lg zah_G77;;M=9Ab!jV!#uuV)#HT_z*`lsADwy)IOp^MI(S5{XG`W?l{&*KQ3_h{7g2L)#JBk8<>&DEl!I z2l~Q(lt+?HZzrte74}1}kX)m@Uz`wzLtbe|5^<%_W8}FoAx@r`C&bEiaY7Awg?!a= zMS5Owj%Qy>>AoJ*dZCBW?&*I)(j8&G8}(zWpdDb3;_pJ02Yi;Yz;}TGeiH_3KVjR@ zMd{u}<`R-U^>YjZQ*e-3HBdE$xl8U1Vd}<19Ne;uFJ2TDh6bVPKEf%f(IdW8F^EQ6 ziVB#4t62g0PF29J2jJ$U&*<0dSpQ(JV1GzAn01y04dE|U_dMjD=_}I!BV&m6v zo?&YDaxp}9Pd`|i9hT?M#Y@^CW_6@)wJhkt7pMuewXo}!qCDp6Mv}1dmJ9hJ9}H+>ED<#u?hKec@U- z1~1W=8x26`VXU8FY?PrwF}Mye0P$TJAM}d4)_|@6An~mv8+ud6JSb-o%i;O3a>a>k za$TOVj8{)&-X&vj!Re`Z)O}yI)bOIV|`_Gm^Vv`DKySN1g%0d5fS<7d-m3|!{!2Z`Yu+f zpcqW0zK^&`+Lv2=moa3&>}+e89@RsI?9#{TiT-CYrJtljDA9*53}wh!!6(NN1cB=_K&074Yl*oJad}#G$slr|#s7jvyY9D~M3Kvf!h1 z(G`AX`#~?;b0$nDBa8PV^hp@f?!glyTS=P`vkizj2E;rC@mvEUKkJS&Li4Qzw3`Fa z(9ztMz4KZrd0Y05eSz$?hIzwK6o&@9Cvd8+-27nNi2iu%@PsN`@F!*UQ;0NdgB4dE z#ZJ4+cV%)edvCynReSamY7yGbMn7L0laFC%tU|`@g;u`cOh)|jBP6!a2+S87QS1T< z%&qfRNi-$FtQ~<{{;Grxu;O8s!gwMLlTTxAS+Ou-BVPL*Me5gfVKz(p7AiC$^@M_udOsR9<9J4$e%WjFXvCq3g%N z^86~1Qgrcy0G=8-3zyupO}MBZryeBa+zF8Jab20^U4#W0*Wr4Zkvxmer7ZTY(vqb&qV!z{XJJ=GYLQzDpQ9H<$&uO3C?CNQJk$dI9r43MFwa2 zu8a?Q&2DxLfJ&n4=^wv}9L59>1aWB9VL-H1ZNb=}(Iuc8<<{eBHYfQ`H7D~}u4hPX zS%(s9qyMNd`GTW#=o^aK>tYoT72b}aD2}hYPMw{5Kh-S>Scm0~VeHT9pt(->o72Ap zmtM|s`0eYo@|E*?Uo5TzoL8Fd$J2wH7vs%&&NvyO@C{@uqK-ARs9D}-0Ifg9wWNVsm2xU?W$@0=i|zs)Tx#^AnDgF(=>A46tz?t+|i7*QTw+r!e2OtZS^m zP!Z=KM=?{#ck~QPinNvBV3@DB`CjGAy%KhX1|-aR5$l{PVT1E*TX8Z{rmZ9!6oe=| z`y%j@djaxnl031bj(I?x^DM3Sy5#b-l`v0YpO_7GaX460h+7q3Dr;vcYK}&tRK;9N zQ3IZ6zYF)|MyD(g!)Gb_l1adSEBO!V@==85>4hPlYRmIE@)1D@l{9s;Wx+3u7t$)h zi@838T}=AySGzumIvQrT#!@tnIYGD}Ty)%0_zEab!^9h?NK^MY7eI3){@sv!&KUGb^fttlwzV#; zxjL<|#(6U;>8LrXlI8&t&0jvQ7m$O%lkZgcJA4N#sX`I~NV@dzpf{YucSo2)%3GI8({W}P%!5kFu4HJjD-14MZzC$ zZy)9$z|`E+F&X4`beP?axnxmaLV0o{?d}L4`qB34138;UHNZrWt;`6R`s#@t&q1X? zE0}udL#!_)Qyb_t*?6JUT_?}UoyxOoLAp|lCJWma`kp$NVx*$bGdmnm=MKh_HFPw3_VOo zG3So6p0xP&cAVD?^ARgaQ13DO0XWOk!h}Rz3nN^k?%Q3+`GuocsNmo}o32>E_qj2O z_k?Nbb7L&;2?zIyyk}9kPw@>#r91h;jWBX(r2tVq`aU#mjM#~@%or?@u6AOJsU;@= zi`2xb{+Et3SbmJPp@qKd_1hqSOyC_t8%}*M?Cu)%$6X);ZEJUTU!;DyOfxa#nwDw} zNT-&MZph7qV8`7%(wM&?HI4H{TfzEf3l5QoeJ8x$oG=WcR23WGSF2X_1^^1CJ$)*7 zBmi6l08&3ue(vz~5#fPM9dm>tjRI*Dc_ywUW}lPIz0tMre3;X2mU-ur|L5leYZ!*6 zb1a3&$YWPitfgoh@1UtP8iK#8@odZUYJOs4FXt$9?DWmGuuv)zhU`vZ{0cA6wiF%2 zi5(U4 zQ8AKiG=ZBWj#5qFo=a#@(FB(K-h5;Oego!QFMU$|d7pcO2?GRFBSCVx(XCFR^y=#r zNYd}Ms{Dg2g)*te)p(v$&8NwPz9RmfvYEkI^wl#te*!$mTefhrc=be{|H@5aWfzmr z&~ScJ1J0N!b72CeNFZS>O#_@}oM9sPtj|-0HorFsqw7M9cO|@iDEX6~Z?SE8F1|?y`2|Y&;ijah{Liit*>9 zyEmqx9yr{aY?e}Q_q5|{;vAN-yGwlC(=h3T3@lgt z*|Uh)8d+iYBrD*km@t(8hN@tF;Dy2iBP3(^m4kS!AD7+qV)TPPqE~=81mqCDq%INu@?8mW8W1&dql+&aLo!=~LA|lSp`;=w4t>UD=V9sg?Hmp=EAVe$z_+k4Z)r0RJ|#TKwBYr}A%-35BId=E#qmRM$MUUawg%N&m)o&=f0^AgQL39(`jh zz(Env*3&OiNx$YhB+W3AX7XxKL*=58(w|ls+%`*LkY%LJHqw&O`t~XT{myiiCdWvV z$EzoD{%i2UL&*?$VN&o3Z~)-bpzo!@$`3E4e4!=Fcm)c47W>PR!SH;^-rxQv6{h`8 z9f{s02*3oXys0G^vvGFAik&E5gw4H$BU0+)LJ6E!*oo!~7)Bx{S0nms41BYmC^H^R=l$SWpAz@J;G2%X44I zC*|8Rg46U$5P7ma4;9OltCRCV{5rOx292v?>KNqC?~uPPazf{iT$f8e!@dPF&Nefm z11XFGWPD;N9HHhFta(ti#5HmU^)v(5c!L1Glj&mmWukXO<}LMeiz?Q-1#84bFO(bk zr4Dh(a!%Lea<0~BMR@Wa3}_agne?)t>Xk#%!O}drMt?d%x_3Xu#YrID^$Rk*%@`j= zzlu#zY}tA=dzhrZ=eGvGjP9d?xc zI^+tLzd&U}41|Usl__87jID)zSSO*|jrTBgyBu-YZ>m@a`;Wj2*Qk-33XRb1Dm?r8 zBXqk2H~PA@M$~ql@moPH{%QbqIg8{M? zwKei#+=@<}t$*&IF;m%nP&4Y6GoIN@Ke7Z+Su;sB^UE@|_H>K(am37ym1~*cgT^ne zpWr`q10LrXJZr_d<6yr|B_D0p2lNEA7)(v+gGoS8W=qUiOijTQQ)RM=&YZKl@5T9ZR7PO8`hVD?(fIV7@o` zW{l*wGP>lSK7upf5QN@HTd#D<7)u4rM3ydLOKTSEuHUH`O$o-xY9eH;;%*sT(1NE{ z&mM~&(tc6-C-bNM046{9Yh@M_4YQbpYl6ra_Jn4U5Bh)#PPamG&ueILZt?Y(mZacc zmdM7iF{X^l0pT6>4yVm+E@%7;hz@~h&Y}N~ljZlLtR*r#6I0a;&{kX%4bXg7#s~eS zaszZ<1-g%b*2jhdyBzZx^+T0Mn)Pq-gI)#tZ`{d{q0XY&4ZR*WXiUDB35!(Xya>(4 zcX8_)wQPN%vPIE<#j~#$Y|)=^qopO zy$_r&mRkGF%~+$>Masweh5Tt=NaOB2r3kU~74VO7xSEQ$Cf) z!TaSG2dM!jV;j7wC)2Scdi&~@qwMOv%r20mp2*)$!vO#7oS3RmbPz?)Ggx=g++&6h zXvR6e{r{MI6YwglYyUri1cDe(RM6lU6crqULQT|Yf*|MMi3G)pIH7ewr5YiD$RLR) zAgA$YYHhXE_S)In-m0xd6k8La4B9G#tth>9tiH#f0(xb-lKy}s zOvO-)|)ssdlNKV#-h_GS!~q%V;g zUZPf}sFkUWbBC1Xu(*LP$(F-)btkvB0>g_qFrta7-Qv#(hT<&Np|Ekccpu%h)!$j! zqH1Exhqf+T0umr!|6Y5}Q`cR3}40%J)C;VUZ2FDW4J1bvK5d#zDd9kRJU4YF0_$Z2 z*82#oWfE9#wMODwI}YH_nBnheEv#cN|N7J6>sqVhZ?ji|Eh7JOKxn}%W2c}afsXZ{ z#ga;XYN`x6gfahizv;5+-|jmjKiYD%%%4x#=@Du!wQ8gT5Chff9ej(^9~RkQKRBe( zek~b;j~nK2RqbuzPoN~o5J@QsZT^iZ32W@e88ShDq!kF11S=3I3DznNH1d^*saD#N zjT8!@$WWp=hlYt#@*evef&qX2L`iVHbn{>6j`!{Bd!5!f>^T-pBFvLP1R=hER%KKq zmtGV3)vn+>DHU(%VbgL^j3tA39p09|7e`?BOO5VBl#>1Uus-tj71@`o>-u5hK9f(B zX&yefHc6%iu{Il>^XF|kE63aLmb5-?M2)ky_p4_`Plycc({Q||fK{(V16;?gcivNM z#x?*F6+c-d8_ADce?yJ>ka|=9xQ8(Rp5k{8{+`cH5{E?sqgdjwq-*@{?@5}JDOmh# zCtrriNa~UwsCh^uKw)nqTkY=@`&-Mzu4TzpY5!RBb9sD@D<^uPAHVX84`otI=CA=s zQStb=#eU(ZZ?3Jo{^pymoE9!Gs^53TXsq<`pRQ@Bop${HZ>H?zNY@L#)iGFuD5-MwZ-%y`5BXJx+oy`t{-!4Q(1jo z{h^Hwy}nVuueO8KYUc^`n|w)AGG#j0;z!AYDS7>s^#dq5l7%bntI>LP@?lr3U;QzW zr)sBPe^cF+S51@riIx`#f`V%t1XHz3H91ERq>52*-})g6Nu2h%4*BU$mS>Gf5GR#`QPX&t^1ks=tXk&i5%Iv|yU5 zO62c*B~%e54D(A+MSA?wcuaRO4MA%%KUZLt^yZYH~lYXs+-hMW) z{pwGOJah9mudlo2o3)@;{D{OWF9|I;j&Go`TSE&5a|N`w<|Ys1DqTET;Hu3F-To0@ zv0L?jBu2Mw47cw(EB1DtB?EuKJF#Q4N$|teBb2TDc~>wdOBD6UgDH|uXkQ3JiH4r| z&^Y$NUDkzy>9c5OyZi+~I|bIx`lm2wbDpi_5B`yVWi+X5CC{tLF@BSi)D)`U7d1Id zO`@n&qV|NBEh$hR6+z7U>62vBK)&hTdy$(AB~|YqXw6jWlD}auM5dT^@^yz)mu@;} zsgP3a_Aa&*o>pNVs^j>nKiF%oNZR_gvJL!LU!(CN*e{hDSNPExQcfBHO8$pexvM|W zJD)F9`jW1tzs-A!-R_DV=NCJqYq95Dv85_@u$Pz7zIKgfwLhLR>GsQA#p}*+?SH3h z>0DRw*3%8lU;D)-b}5!#7G-Uw&nzv3=hhvLeA(V>`Z>efmI7{0yxlGDGEgPbzM0gQ zQcd^ge05;m`I4Vp6_cDQwtZ0Dez>MK#@n?bmGONM-#=xQ5Ra1aT!OY+d;avQIXO>ZYiWM)P9J9RrNwk*PoOAN zuO|>imEA!698`&GdMdA}s;B1yv8U&KdV22cpq0y*ZSiMhB3V>kU>g>_n-ZDIipD3o z5y6tlFkP;#T0a+KmsfTRSHVHk(0s7$iqs0}gjUbodr@zVW)W0UY^qydYrPon(ea47n5xO}DjAYx8-SOE{acD4}GW%A(}b=mk#bG*>(O+D}LOe=ogad&2-&?mPneJ>f#Fsc3z{fi7b*ZQq)@PA4B{(s;oXskw*Oxg$i0n$n8!xW8uLli@{QH9W_ zYb_GsKD&!5`3W1~qx6ow-!|7x98yx|6L5q4=gA7jB6XA?C8K4)e`sq!|l39uwgv>H~Mnoqe`*g!jRNUb@~UXcl>m(F*o z{hj1L+b`Nu5EYi$_7$7R(4mNcxG)S^17Zc5+5g_0$G*_m@lK6*Lu?ltCn?uunkv#) z|1Z%;?V@ho_(J-S|6{xJe@NlR{~={qn=1|F3ICUMl>61pxDC5EUPIl={B&&x{8YM;=menqguk;iE*2gL)Jch=qD5bphNfA^;A+y`OjStIzxH4JABdKWTK9cOrG*?+MYmlk| zgG^B;sCOckI_?LDFx$kdRVHoKQ>ueRe)!cha=f?4p;uaYd;wN8Si*uAgj@FB?YggyFN+M@P+i_$9g5<__(yoyE@{xw z!EZ+s#~)T*{(jwJA45PYelCs1uNG%}(fE2i8(ws=qaknuAs##;-sI*?$dfl_Pa_83gsxhIjF*;h0n-Gc zFqkH+N~6=32`~tcB{}1(qy|PcVXP7~PUW!n&3`y2Xujj#Zph(*+7B&!P=nHwePB7O zG!dI}VY5~(ASprVX0@yQR4vm1bQDi#mWWSn+Fmv5oZuy(O2CV!Rok$Y<~}0>=x4?Jm{yBRF*K>_PJGSctj&spkB)w&|1){NW6xgWE}A6hh^H#`Z6 zN7-ph3Z3%J^G?tfT*9$CU$l+5vE7x`gW4k7)%mFpYKE;*XDPPCGy$iZ^Hl8y4eBf(?(HjGsctHF`%)G^|OBAm7Fof z{Fra3l0QH3T?Ez&myyTCL{X*wA=jKdZw)7$;Ke_-A=E7QZ5WZiiZakGq`<_xVD`!_TkCF#}41bNXs0hKGu95QDA(!!%2%RZhQ0=BW{KRVF6n zsYcQy=5Lswhy(@jc_;K(i82_F`N5g6KA7cX*WD5hjo%V3f29un1(uV%s}XH+a2A`S zCEsE9E#9QZMQHwaK3pPZTkR5%8XR_A@qgCx0g-`$M-sL)X*DHEYqqTf_%} zf5j3yyh39@^67Jpq2?F3786xUL`)T5BNX%hwt$JSl{iZcW21_+6z=%PJbnhgub(&@ zDQbSD39wH%P9D@k`IJq*Z2XDi!l{}x5eC%kjr}PVB?hkfJ|1RYa|_2WqKd+xim}D) zJ4sxG7-4#U#rximsYFS)wws+Ta_Fr(l&l_W@M9G+4;g#-HQ_sc=IiIsOFs=F%crfhP-u8?dt_af>KA|PuS*`)Ea$nU z$jq*aRnMYrf3I9LLW;cPOZocw9Zq_J?^_F&@I7#$>^xYABIk)65|Be?k4R zQ0&4xHrfa@=tm>);xE%9&|f2fe7r=cgR*Od|1#k}?5zY$@LzMk@UJLjLw;-Ubr<9h zdZ-)n7pj63@+Vn6+5PmskyYeh_o=DuA~pwkyXHCg3X&7>adnYi!Te)Bqu3?@okmBP zqd}CT!}j<3jA>q7*E{wS>?wkc?LK^NST@NN5@_S!Eq`^!QI(744jJoQGl`MUUkDcS zS4fypNC}+Aiu0$&UOJp|y*stSx^;MG@*G&D-!>{y6(w0!+@UI-`|}5#>96h6h@XUM z@2Ecouzo(mui=28{c-wu0UukdqZf_t4J7JOYBO6;M$pV?KX#(7ZYn4r(Y+ z4QEq>Bq4motJsT;m5b^Co{ei(Oq0*baQn^z<&U+h*a)c-vVY<`m`7Q2ylo*ohN8O0 z_PWJ(GS{r8#mKg`(SA%w@Y`Am!S&2cug_qTvSn#jyQv_6W$r{^d2+eKX2$Y1Uw7Qi zb|M2~!Kd>-i6+K(cI-`9WQB!AsPyX4oy#$f#-m*Ge?r8-*cjQizPcY} zUS#cE={T73;_G5>kt}X?U7xDh^Nk(7s|Zfh==^iWuS_y4#T~ZvmH@Oj$>PBJBCr{z zO%7YiqI06K!W8PJ{p1bIZAOWvjiuFxv`b_3BD}%g1#^5l6(2E!bzjG#ZVD#HWvQ92 z>crW(d(a=8ezj5zp1pn!vdaVm$WA9o&wV8vdygFHtN_nWX-LYRK8zPDQD1nO7{K`# z=POa#%&Cz?xD!?>BBjSx_+w4o;p%#^x?W$JXom7k_BOahU% z^L+j%mN1~BzkDpYZhs{5`L+S!mJw?>M4-N}W34wh+GBv6FR-nzPG=B$N4rx+;_Wv7 z&H0ZYzx6F#byd%N{d$~C=N{#oR(_=mSf`3r%ylX?f77|p!mXP7wO=*ppi@AJ6kS+@7>t5DISHP%p+df*K@;+{{QL7}5Rl8)WI9Y;!p(Ni;5r$joR?>H_kZzJtH`bIjRsE)sB`U6`N=KgSe;*j(CKbcgSh{$&$+g`5j_qNHVSF1U@aQzOp6S1oZ;Y6@^ zRqO?X(-;=|6X)f&R%1UtEbmu%^rA~8p0=~oETi{ljHmaro^`Su`Kf}T#gvp)JVkqg zdPcznP!Q0Wci;~L8Y|@L3s}&L&-^0pOJ19jVNO1+7qxV^|FZJy-a{Eh9{yYN>!NwR zPN0rNi90~&SV6*cU1XVcrQh7|t6aaEol?01^AP#&ozDBTs&Z7T^pN0vT2^^=^_fUX z=7V07FlK+B-L>y1vBOcJrC-juS!t_()R(l?zF6t!vRH?H*zQC`2~u+?_J5XK^m=DC zX!A+OJ>AqFUp_2!_^-+Izgj$p>FMUzA8mU22T|qYeM&3pUez-n5X@oM((=%~>+sZo zyGrk9vlTk)2FN*NI`%eUB@CoB%e;s0%S73+cR7@~mtDF+exABa#92R*V*~63`rDU= z{{#oW&X)3;mKyxJ?gqb1RT41t48QliO!#l$D2sIGy1_qZ#+QKq29wXr8-@P{>7NbJ zlp!ZO&uKF|)W<~Yy*yGd zw&X2K%WTGP&p4uD+xyIBY$v-%#pDKP-`P9kwVhzWl#WQ_M3tSrqr;xJ*>CMz5`e@0 zer{qwJiPWTWpTixsyRjT6WNic7(t0OGwvIzqz3{Zt_0X{` zGjb(jt`rri_wHySz8uJO-I;vZ^{7-mvMzc&X#EnM(-;4a&V7}RJsF{6Tc7%zj!g+V z20F~N7clyie2>* zTNY-O`aD}ym^Uk}j(V$WyHTt_DiKI7BVzKLF7o?2@q1SOZ_%&m71*?mz$6tAqBf5@ zN6e^A)K9ZW)0BJn4U%;s;wxtrw$iT=e2BqJ-snW(Ju{q`cFAUks!BRs3z)(?qI)z^=rM`j*u9+WGut~@skX{ zTS{vfjV3Z;beuDouslF5X0wjn;j^%JBb5cC?V!ii`BWZHz1Hu3@#MSr&0jcpkxY#@ zBmeiWnPc$Ztx|9B-?iyC;eIum+wFO?pM*Qe<9+9lH+Zi1OYHp*`Gs>~h60Ati46<8meS6-K-D*pKlM=7p`i8Mw z(X9{KOtd4Ar00x*;+p=@6XYw*?hcm2E@e)Z!x6)+bkW39c1IF5`el~z*_R&Mz%pw* z1d6>wmNl*@(=otklEP!|W| zsMVeFoo);t1A>l;5+zf*^&f!s+F~Bx!NaXj^n{1k{Sh?3;S_%u`v$|*(ejlu!V0(*MX5VRik5{eVRn-FTgG!_2hI;e0-e3APHbGg2eWrbx8)RXeH z_2VR>E9JnE*@utKk^K~ZtzdQ^0-+D9?epf62S;9CCvg>?zs?0L@x@vK~ulpiJ z!1yz{Yg-Rq@wA<&{MPrQ?YSksV+qC678J%oD#9E3MMbb*CR6SClJiF!sq|YWwGhd+ zS;NMA+nSM;zna0k>Te`PJJLJlDz_ie%EBXV8wWySgOqw#lS|61n%t(!{J-y~(9V%7 z`Kcd+CI^k6EqP=2SMaE4fqVv`1(!>)f#da&^tG%eg35^?kN}RhYKJVf|4Ox= znXWy#p9}P?AP(>=RJ)ghb=SVxwLRe1c4_`ss%;b1IQwekt6gf0_%)t~()bnNn@lzI z_FUC=V!F4x_I15otTEjK^6&_0&lq|&$)E0lC{pOd{#5>_tzecbLfP-s71b0_oxva5 zu^*xMErcsxQb3m3^T>Tc$^Gjh!Tzls2V}l~nnf|cw9&7(bYZ43{`1>pjQbSHeiC3| z0~Tk3v{I_;t@ zxLCslnwQTIE$3>PJJf8EM=WaB9W4m%=W`kzHT^6Adcpg_BQiYLjmxJX_)k7n7=QWW ziPPYdGhGsYHJRGhWY^j$Oum_KaqRp&uX=x7kU1LT=k_!j4tMGJ>0}-h zH&FAUae2$h;g;D21Z@;4w|mf2$F*MJQ9>RbX4E%i13E8Tan^cY&uVtVoF1Chnt!D6 z^qjgQSdab1pR}-f=r8#R)?-bEr6?x9&XuU&Q;FD)UehOQeKoeD_pE*SOO~E+OMgz1 z3;n6T_Dbx?W2rjyY=4DD?a1flH~QmCZt0IO_wI;gVrfE8;IdWPUlFbZ@!C)u)&OW| zAwE5`+(ew8L|wL3b-!z6==)2;*}dsPt^TMxn`|iq&syyh^T)vbWOZC5nNA46k^k(@ zE#2rotEO9AO^=L*?o`uBs!6i9v z^z&i=Lxo}CroU7<*sm5O43@z@qbS@m2U{KEPmf{t`|TH7*M14C&~GCDBYmF0zs9Zi zllhs0{7FL(G}%>*WTEp22hzcp`2+KujeQ0>pBYkw5G^KW9uRqY3xp*GQIPr`{5+8C z>?8?8srvthRpA$c-`q#*y(g6ey$5``@(;Rl0H?}55*u|Z9I*e3O__bJ>8a0nJQ9T~ za?d1x|6CQ;?UTCwUF!B>-TpLn`+eQst6LU4bjB+}K{75R`vS#2lz2k@qVvvD?LzIc zkbLP8I_*mfx#j|@1VvV*C2P%-7eGQZ63;7APTJ~3gzb(`FKi|%rEesDX_2-%YW?LU zZ($?KSA3=9gXHts_^S;?U2sg+Uu})gk=%aO`*vd{@_s+72ZEv0jaj8CdMZW8%PL`n z1$uhks7rd1W0c{)YWaSf9y9;ofO^msS0<5vTH)ZM2{ob`eV9%r(jcx*JY(5!!-+aY z8BPn*JDqNE$}aVem19hb{PMQ8m>^{|_bK%N|8)B6&n!HcuZdJr>Il;hLd_?DJZNOp zVeGFdi4jX`KutD2w&s_eU|GdqYhIv=+Q5pul`*xfEx!*y>s9nKuXtI3FUIiu7 zc*xAe^LdyU9`ptL-7gG)R!vayeCS0e4(r#QKHMVrLP|oM2W&jULNBT z#e`h^R>zi3?^Cwz1Y5t~ptGs1-<$m#+xneD1yY5qgr6VA3Itoftw6B#yHrS{*-Qj@ zCz$q?Ju?Nu^V=rzf{3&IXY|1T<@wL-x-F-kq;dOe=%X!X7b!QzTJOIP7B($GCWiun z)>fg9l_4x=GK<&^+9zA$wL;YQE<5X{j=-VWNkh2&#aZ(t^Hi0N zDj&wtdn^5&6j74+LMtjB;fx$pZ3%$f;r(S!rVu-CdiPEQ-Tg^c$ss+IM89KxpU+69 z1-}uUWd0(f$vcO%0fHcZNWY0Qz{WGqnd=i;w;_1{WJh?#R>6ZVeKmr`F-Smo)3XR~ z4V5b{_=^dz%)*^}B)sA4e8TgtOG0zExBvTT&iVw+6&dZhK6wg85r*1?q3%=Jd5OJy zxvA`<`8`Z!OK-KQ%;vE=Rt|ca$25Dbzcq8Qe+GQhh4FLj)(Ir)Mr}%qtC={0mDj@io8wy+8BBw7w_QkdD-5y6s8pb8SY| zW{^OrLkWc5rM@dJa*fycjZfltsNcArxwWOquJPYbPBk758b9?58fSg0Oy25BdCbFJ z?S&FbdS!t|0qngj|Y zs50dDvI0H#XEWX#sZ(BL%?xabn}LwU#T^6cFHm05>6on}SLxg)RGPKk_iDs5&KYx; zF$1}48u^;}fmyS^>Sx6C#>tM90QVci3qVSU*qnl#%Fw+l2s-|>viZ}x5hy@A=tEB3 zv4K>$b5G5z`3FMH6+!|k!v;MJHJ_;4#4RMRY2=*1i=SFLKGijCTioo8yM%;c|2p0YiB+lsjJ4S>YezPfs)?4<{P|-n zB~yL(yX&i6&ceEw3}l+=miTo&re6lX)_I@#)>?sW)rxnl701o+x~jF0c%_fLmsV{- zm#;rO-JUPD8+j{1r-AJ_$;YLG@AR3O2>s)QZ|^Gp-eJUjBK42F}C3vDOMwDcGGH~(z(NDdhN5+cTSo?QppkrhYYc(rB;VaEAT?m>27eXe_5urL>BkEZTpVoby7WT)dvEWmd;}V5GzSA|6<2O^l zuO(N4fc0#tZoGYiW~T0`8LM?VwT2elYd%|f{$o3fNh#tJcev#gZ1IAQkzJ`Oz^~W; zTx>i7Wr0^;J4aFQH7ibw)P0sbYm~s9_|MbT5csN}t(NL0?WtnN%ZU>hi^RZ%)nk15 zW1fx;<_S)l=JEC3kk?#(eoXI>fwQEThLdx!FWjv*okJhV>&@cWki1gA8AL*wnT$Kj zTU@3y%;}26EU7NL2pwrYc&6`5?VbNE z@5}sq`=0x-e{XegKgqvWJ*saizZwSj>+}@$v{uiRE?fRvnE1+btB4O@`h5u^AkstB zZM7~|QmfLgYxpH1^G@^W5l&Y?Iq%w+NJQ9F%a@!%d!0tzZRZKc$K!GsJJa;EaC~f0 ztI`Z!RHQvD>u!>E;lLMos#stNd~c-HHSkaJ5%SJ}vBO|?)vK;P;rQ7l9Y~%zCEmAG zPa=QUW#~KF{DRM-O;!2RulN4VnUZyy)tFsmPh{ZTjrTU~OLiy4zCqoolVUgfHzi&k z%TisN2CBbyK)Q#4A_FbHoBW>lh-5Wo1e$3kw9dbD(MPPeoqq$1LhO9nP8%FKe0i|G zu)V0h?-He$=+GfQYnMA$Xtjg`IKNaggx0-bw^# z-yyZ^>^q9CRndBk(tVR>stg#Is=(+eK2@7W!-fOSBCxFtNNCr4Zx-q1y?eeXavyl` z)sEa2C250`HbC43o{*Qd&DP@2~#nh57A+LP58SaY*?;eUOYIV&UoY#s)UHC6u6 z6ppro8fJ}2)cgnhQ`NY0(9C?2d(?ZRo-Bm@X`81Vj<>^@%4P0ybSDq-;4Ky_KuVgB(PRI3rGs;)S z&|lX`B|CkZoi8)M*Ew7-mME=Q2WRHy|Ko>e5x+w`rcRULC_pBL!oRPTjB%&QJX0=W z^;c~&CD#%q;6XP{ehceQyp(B49z9k>n`KER*KO&^kj#khYZp`Y9N(u2YK^t$OBjsB zH@L??iyqNH*2rbK${LA+oc|nGv5I9ki>}E=aOl(A%bZfy$lr49#jgiAWsGz?=%h!u z!S;PCXsCyV7EeF0D!w`P?%}oz_URAF7ui-44UK-WwWEk!h_=APktuc|6WU1ln^DXFs{0ozy ze&=8KtCY~DO{Vt6f8!RD@Gq2zauWG93R~%Dl@J)suC0|h68Jp7|NE8LXL`P}vdEsT ztSr`Vtm46MicDDb({?sC?m|DuzIB_Ov7?-j${KT!0#yl+z3|mEMSgERgHSd2A~q9!OksBKr>)HYJ%*H@wlcqQ^KF3C&p?853mdrC zj8btk7v4RzO=m8-p&2PJk5;b4U1H#C$H>3!(=N?q(z5tto#n@T@ORdb4)}@ZkF|y# zn&z{}z_WsezNUsE)==SFADltGaw%}K>Y4}93wX*oCZ*MB77qd}d8FK}Ra-I^@`3Xlpr4Vwr)w%sfAI`!%f;w+golVqfWAKm= zj4mWr(Lb=XppsQdRyrTz)?0FwjmIr|Mki_<`HRklAD2ILZf3g|S-Xv?cE<s`~TH)i|8)hHo!kcro_C7g^_{a!vV8L}2RIJn!R9q%Ivos)s@4AW|8Pr(C-w!Gt z7!E2vOBIizVjw?#im;|_g#^40rGKb*w#l$fbX7RoRoI5JGhX=U2ZA&lRG9xu?hVo( zapA4KiVB&&ja!?Ri;0(^A6I_VnLJ>RNycpd5qSnTm1rf7YzF$n7QpiT>n{vjz71CH zTgbUlenEk9%mbsuFX)h*YSkm|R7jPz^f zry=1MMxnNVsuPEv_+66A$+-5~Z4b6Sim|KI+Zy2@32V`N?<~JD_V@iLN|j~R<;M@H ze=HIoGNj{?EIIj=+b^x9{Q+vfD!cvZ>GrStitUfe9-pB9XZZc+z#hhE5~w5f1fZsC|$I)gAg3 zZsApIdBHO8l%R?ttKuJ4#ozt?Yca7+HyROqN(sH-dwOktcq%5lveI&`CHDp!j7rH! zrwz)= z?2r4m;0;)|4vG+}j|Ch#Fbld(2bxKWk= z{`?XtntBpb(mxeanEXWLa9X2Zr2YE2B)?0^&c&mH9(lh$&F@0;N*`tuo}_ON==UZr z1iJk*`T2jv@3w6G4oyMRmDlzOfU{X7gV+8a$M4tAPT}|5@~?znD3>AbBA-JGe&9>I zp^!$X*|x{F6hV_~+{XQWmN{xC`CG7e=g;5br;;L@M{K8ZN3A1wRNnsVe8GDU;n7_+pm0*&H8ct z*YSD$7h15}$F=|qHOoeEs#9%ow1sdnw_%|D!-{C`i{aS2+atraL=v}Q@C=`DdEH{@@v>@QMg48j(k%V0JOz$-V$lAV*53?2EC^=m_o!=S``4F-7T4sqmR*or ze>7LU$}Z?tk6Wguci9EK>&f!o1~o1#cWff8}S>To4@9E$A6d})1YYSk($;@MWW=m#rwo; z#w5m+#RHiU%)~o-5n@cJc>9~IgNny14g!>Iz~r>P&0?AXZ_13RU+ik) zV{--e3jNT`6=uq;6bs(ZPs!|b^6QyXUKRqJ{1`1)du-Dr!CxczYr?TImj5bqLJRiN zJ9;xE{u<{!HSRh*)ch^vS}SSjPs$1hqUeh#6XJ8u%U z10j;FRPpl-b~ zG4hJNa7g`N_6NutObTAItHPXkh8w;JEv_4KQq`gngTnC|WMgGXtYR+*NHiWcuXsa| zS58=tp9SzG=hA=gNKl9N!zeAEv8o4qbqWAI!GXw)3~Fvo-jgtl56v^dI0;O z2s=~1`*m71X8yUPG>em>T{ubp>&?zNIZLbTO`Dv%?>Ej5m+*h_F+Zd};tqURzbwNx zf2ti-bhFZUrR9R6rkxdK|GX-6M~dO<{3o)Il^z@KY1(qNv`2V)6VNIoAmUo%bRu{ znQXYJeh`g~zE0h%bl`jk5taO<72N*bgNv;H->?Gi{S3XoBUKUocdb2pinUgEcJc;$ z*?*rSm*EUf41Cvracpa{#@@_5=o^0zEeJ^zCI&77$e;&8$AaTkUCKQMfe!WFA#6kN z5&zQsjN~D@4(ivsP_r^~v0$-Zl3h{PwsP8gd|-&{SVhrA&4?gagfunb_{d&7#Q(!s zR&4VK0N7KWC})USt~?3F~b9BjxKt3ziy$4gqzu>HI)Clv77o?!WmRZ%#p@_ zUgPL@!64m35+!sUnzvT9E^TN5)yx4rSn~31>e=c-CV^gIwxjfWeX2k z@k>;ATo|eZ|HkvO5W^I%)Q@zC)&0>l{coU&hCD|TB|c5;VC?flckEKny3s^<(5FTa zYaod5;H}~H@AH>AGPK|+EALam9Qqrw{+>*K_p$zltiPdv3UYbq)BnE$GWei6tG8kG zwnk)t8{~gY2Ht(W9SxLte?9z5(}1Kl{+RsJ?n29`R}>>!hJ|7z3g7&xQ)-xZPy*%k zRMx=O6V4=m(1DxeR&UO+sWVZ`)VV~D{Mt4psO=cPHrr#CD4cqKPqmGrHs+@}d<Pxo=~`zo4R8)%0hK07o;f(%B$YhwX9b%?&z4-Fo?#bbW5uf3Cd~TG8s`i zuGl-R-)>`YM8*{i#CYN^elbCe<&-_d{rCc{4imI-(m2o-e`Q5qRxO-z;54k1-r#Pl zwyhn#h~zjfzv{>HLUd>EgUAv&{a?vDfZG8PwV;j3_~n!hoZxSKa;Wn7E7p3yDCh>$ ze%UYu3aIx$L@>PsOr#v%y#_{5&YET3k&{1T+)V(+W*6nu6@(V=72A@_0>gZ#O4Pd4ZvPb!-^a>yFUS_X{naprNlPQlTG2QFrnl)iWhYlG>LTXKYgvPMm8O zLo-^#&~pBNTD&d4u{@`4m8cVeA(&vD)~?yd|E>KrquE!xtb34Q&Wk-JGDZO+DAHsW$K5VvOTJ65!VkcdF+ zdLxEpp&=`OVrb!`jy@O#mWxqA?#c5BVC3D1rPwVD0wE1;6k+YZ&a_3E! zD>GhOfHw{TXOT1IT8rkch*i8El^BD7OFO7}rMKoBU}%47KC90^kX)o z?x(rPu{g`A`5QN*QL%cE(X)Fz9^M^;q|7GF~>yXeUy==IO9XoFK_d-otCsK`BJFcx1Uu# ztbKeUFCJ-sqjxpOox-%Cg~iknjeos>7<<*6vJX`MM?P4<-bXUh+F**L|Dx#7!gd}; zVr`E_bNQ<2&vZmHYvj?aQpv}ua)2;NA|IQ^1@iG!B*n;#U$ zE&JWE!E2r@;)dFl0GRlM%r`d$Z@jCy%AA%yDaoR-p9da-4EuVtM(GReYc%d!aOV`3 zhNt8_5Hf1Ld-I&G@`0Wp32KFk24Snx+h7?e+&ZF|~N3_^|CL}3YHrO|Xv zKUB>0{t>XPQ)#W<@kL6@u(HT*z57Q6$n9c=Xb7_nlP~im&Dl0Shi4)F&Mxv>`1hQD zLp~_*f4?vo|BVY{!oMLWfnw;)uL1rWxEKDP8Pdpwg*s>m8oYh6A;qLusvhvtkcty# z6vE#5zj6#-t5INnV3OA;eD6p`LE+Ed@aJt5>i2nCx9tC#!>f*CD05mr%7pX~^f9t? zhm?A~DgCrPON=~-_cnfRuaLQ1(u25-O^4pZ2i(Z9-oCyb6WK;5D??A{%RW{r7qmoZNn2V6M$ zUaBF>T7&L!{$_xU-O&H|z~q|-{9PLv>42c4Skh={hJAqj`)3LSS@_#`lD+l)igAen zmWR+R$Di{)w3rhezRomAt}CU#Jj)WelO7Y@iBxjDz{ZxLFtl+;-&rR_V%u};_qw(f zhu~mc*Bvt^w0LyUZWk0?wf@bjPR#$xoH5O->U>?_X#z@G*Zwy74`1;0#Vc^kN+!-i zCVq2_hJ+dSKt$qTqGbHhkU|sd;!(`N_ko9G;ag`32RIgfXChBC|&TL;*6n89i5Lo-@RXw(^ zqeayCMgNz^59*=uc+h>LFN<$r?505+=!Q^8k#eu(a0<`5jy{!Tr-kl)PU>;5Mc55> z{n^F6!sh$BGzwh2mWW>8XUA@tv7qxSO1!%c%0z@%v{*-2lq9u2mVzns!tir`7uxsX ztLt-ZYuP~=P>DJafstr%NP$NK?u+V^ZDBu}}wbC3^{Imo-NPi4eMe@mX!rXKU3 zO8#yTm-%tgN?o{_`zZ0C+wHmUCS=-b5U12?onR_NcB(~AO77^NiS5U@2q%1j&iJ3| zU1aD+yryXC(QEwJNm6CV#y`{v1uwrh-=i061LmY2zZP|eC2UbvR&n56B)*!E zvQ^|Vl#3CkiJeIxI^Z~`H+z$~#=9G(%(}Za7>-_t6Msi~0Uk~wz^xM2;$Xk=EKu^c* zwg>$mJe+^{a0?^rle0K>p#$_z97@g+-@;X_;?6S-P!0IhXuR+?9vYzaT-ZbJ*JT3K zt_A2K>IpJqssY`Ds=CARiJi|n#QLh(TdYI8%sRyT_~e&q9pWvhX3X$+$Tz{-ctLQ5 zb$#ncaRRH-*)K+iLc zX+LJbB?s#$a;INe>Yc1eDSr;^6}nSB4=p|!bmqDpDY$A_gEyT>@x>heGI!) zYdMI66QOQt+>tknJm8$>SXneW5$T2gvpQNHE|_~!gz$mT?T111*qpolj47-a^}?%A zov7MfMICR=kCs0-zmM$Wd3}d}ItGUc3CGvSNztE0qcOubCbhrR&A3e0E~1v%*Ig&Z z^|Av>T00KgQxV_()%iyjzGRT%3<(!S%iC}3XKg|sr$vV0GOaAAj<1Rg>!zVa!t-|=$`qVcm);C^F;kyoeC zla7$Y*6ZH=idtFlX?$hfHEdpId%6;T+i zPRn_o^WPjGxLV|ndELvUTJX2J?vRwG)(uhk=Mwo166J|QAJ2ide$&~}S)I5lx2pZ^ zf^$NPk3V2czmDqoTP&l^>swv^-1N6QF0X3Z)d)>Y=a3rYcH@qcLF-1x|5>%ZWAuX8 z>W1nZmQjhl_hH19-0m$u73CHRfw@vLIF49OqAjeTc99fk0%ueTFJ@~3i(WOn8Jmblm92i4fcqE)fqB z(mmsN=>T|{+K3Z*HjnNz(VWKUd-anPB*J5h5TVx;V_rDEDn6oEu^}uXmBcDOEVKT= z4n-Y0->yjhef0&tD}x6sMNP-PYt;1iM-w%Fd6#_F;g20n7kPJv{NbVn#YZGBfi5x? z-Y(Z}{C*)&vuuRON*QfX2eD45ks%OLThol7`WmOK4cUk6DfK6WTN-Ls^vyLjxClRq z8PCL=qejTbmar?dZ+*`WR#w7Sfq>4x%Rt$OwG7ekr|r3Q`^MhfjU9u##B9i3oom!# zvvgXQc?WIjFa&h9d`v78Ke$gf`b-{^*7jZh=DGfrWZEEXxkYP3mzz-2oV%hIL&e?_ zZ(47r1HuD2o}sYhzO&E|R@I*oZaKTagogD9!W(mHn($l{&C4gbVe*X=;I}K_e|i@K zLxqQkp@Pp#Oc2(has;T%!)tJX+ z@@6FR*Zm7RJK@4W(TttOnh|quvcN||GRI% z6N!tn7;p4l0ps15y7l6TU;)OHI;%A|H0j#L*~D*MrxvZTQ6;#& z6ZxZQP2=w!?6>I0Z_Tk|HWa^gL{^LIN2*13&5bQc+Cp=BRqtYJ^p)gKM6WcXBi7N< zVajoY9CNtg(Kcl(dMh#VH}8O@_a+KUz~*~eanl>X=B>j;D9yQ&4B@$!b7+k%N$&6_ z*hT?4|M(OMTgnBjdy2tl{=G``=%9j1pWcq%tYVekIs6-_FkQ-noc@k`@R3Lc2Oho=}hp`j+lij2JJ9u;#k6J~c1)}gGh@Sq)u>ZqeYE#cmuF1n81eLTVm+oqYkaUh2`R^N^;;wSyyPO zDhu;Ni90IhaAU5;Pa@-9!Vo$>OrkHon|=M zvq)%0%wi8nMr$x7oFiyIWGBg z{2R!h>kLJ7U-AcPF!?jd>~+z7r6{4SoBUae%4VWOm;(<^{**cS^ZQa^1OYNpe0fn3 z0>tvNY-b9PO;Y3CW4Iws0kJ%)EZlokrNSpTy&RGpg|I~UotGF;5G`LDx?N6|2 zTZ?JO5?BO(Z1v!ms}lo8M9Pr`0`J<3?eAFzzvC?uHZm+R66Z1gxE-Z zrg`X(C#C7Y&BM{5LXywbP0PjXIP!0)w3XI19p~WMja4iRKARN;!PZ+qP1nz|@6TSu z>0~;$oNX!#KAk%VPR1h?0eut7BDq_u*>>`eJ0)Q9J^Jw9|Bq6e|U*&q=9r121MuG>tyKh$nk%i7<4dLBe?OH?j1A@Y>NG@^&U9} z>?I0g>&1>yEqX~|0O?5gQI*7p*z2qP*R^`x0Oo)AAko8B0tA=f6nD~v^4lC7Rrs(k z|KdatM*@&i5yZtk;XIMww9#b!^B*JF|FE^gEg5>}9v7VDSjClZjeN~6U-dq8kGyyJ z1*WrH4cp(Lh8ff#Tcy8yHN?HTOqEaK6{YuekH+cI7#_Ka#G9QbgfVp_H}?=B<@B$E zG&UJKLBrb6s+D`G^&ij2K-@U5kL83I5gtY+G?wg#ZIGJon~0IY8`w94{dxQe8ZTS2 zXZ~Et{Bf|x3x`P`odw@9NT%5FZiyZbO5VwAgld1UV06Egob#)FLbR)mwA%3e`ux6H zzwVq@U_qQ4J5CP|BS4wzszA2Aiw-o7oivS*7I)p9R6~gdT9GCim;i0J^%S%6$P}R z&wJw(u#%|wJ&z@SPPf2~X-*wq=1uE`9)2Bjov(m9_@I^ z{`U0!9__lx#hLBCMM2B-7Ny9I!OwELk3ng=TY-7;mu7^3ti};^p{Fe_>i^8SjLlHl z9wo9p5IaTTD9dL_Gt`fc=7-Y>I|&B+i($ha{THWhad+mJ%!$4g^ii z!8BZ)caWmzipLCJMW~T>c$B|7|D9IUh!vfy+P%X&n2>^=c`xN;cFNWlliHS?>P`0x zgTD;;nM1Tn2mA~hkw8LIjg-eprlxN2ed*IQ(!f{>jAa=K01T_9Yo?uinvlzM{7uLRnESv6^v5_Y#hE1a<*uXb%O~_@ z$bDJLm(Aq=Sd{tY8Scx!P~88r-F-P*U;gbaYjgL6dF1a{;D2ZRSF2)BT5U~#yTE;W zroR2Y`}TQ#n`lb6S%0qN#~jX@wNyC)!nJ`(3RRGrT6w4)>VqWE`M*2_Pu~$Eg+h&Y zY=(WlZSHC4BJ6!hf9U;yXo#;0z`N|N^nN@dtDdbzU%j5oRnNuQ^^E&p z)bsa)sAu1-dinmvl!d6s814Pt5Aw^FJRNk07cfB|$MV7!xtgqRE@P z+lsOe*SPqXK~Na$ua7}2ihp@nzX|^rZWR#)$-Pb0Lb{N1N&+S^e~mbMvp9RRcd0p6w=a(upWTSD{oPSSfX z?(o6vxFc)+e??`p{MQ;22ADzUI3(OD^DeyY^>BOVS+VzW!@0Y(Fk9-x{ zaNr`G3deVhp(5M~Ww4_$aA`9aq~ za`RWMo4=-Lj39UYX_*a=F+_yTEj&lBX=kc+&Zghc;{9#@RF;hmM~DCqy>J+5q-hjO@b`n$c<}9W zZ6;;?LLnix7NEW&WkA2J3VhT2r|e$UqQDedeEdA{ey87@?~dGbd9Wz(o%b`F8=cWy zrUUe^3ijyITC!1t%{oUkF$y=hRtszmY{u6_8uAOU0XW!Fy7wCV17j8+b#tKzpVxZagsq~V7#&+z<6si69rXjvZwvKtBbqiz%YK9VO*_&@fw;tOU)hR zH|Jw~_GJOa2WK_6PFo6n2e4bNSXm(YxP;b{-%VjS4-GtxVJw~$hH<_;`Xb1E|ID6{ z>uZcAchUKnpCgGp4s+PyO}4!Orp#x!eJh>Y*UsJKTz7Ncts9; zx?B4fGl+-%9Ru}eZ=20}nR|4A9(|if=+Ok&9z#4?t1&M2s;uj1U{kpF?h8s_%plia^7^#x_VafV&r=e*{a{KNCcNMD+KD-j zPW_tI-aMpO6@t40{U-AF{x9QSIOwU!*GsOwd3wnhiL0m19(_So$=MUnH=`8@tvDx& zqD=AmZsATfdDB+zFf<3%2KnWdRpxk`NyLEQi)@1pwdpKTc;Z2_@4`%wclv-3SNiZF z;uOm|YhTA}3OJ<2?BjdwWDala0pif$q?cQ9uV~UYDrs6S;vv}3rDDx~=1|`K4Uyu8 zZSO2_rzCO>vM{UF|8k#Xtgm6QoBDh zq|xq!NIW+&whSEgL)l!o;i4@A&$MfT4AzUaivPnIUDIqDGzG4U#Z`mFwXPV;$5~q| zxy0IP?1%NT@o#4Nd@>sA@^-^QD)*1#9tLF#$&e>XbyYIsK?x*g%<$Q;&HE>Sm zm*==Ir=-8U(0#d&zP#Rjc@JMQzdSH2^UG)HI&B`E{_WbQfkOO}=|=yH+ImqN_+5$@JOjADh(?sT^{e9P zf+GO#rmV_T3HxeS`)(V5p6WqgOmnZfM7(1@`XUxKZ;0&gFIt~-{PiRRm(5=i9Svgd zTE{<${OQd|)(=iY1RDF3-<}8PH~tgy!Q#VUn4R5)q9+WQ#?2MA$h_i;O69&wu*~w5 zv#hl2f8jcdGCNm$ZA!^Ez65}B*y_WCQVFLmUPKfsAD4KW{-}avY_|f0ySf73^$Qex zFHj)1Ik%&am0*8P{oblnt9n1CPAE3Q0hQhmfsI;QXwM4Y{j=%!()VO5&PR;Dd4TCx z{lY6X5t3$V_&V>dBB>PE6O@@vnLnxwO3_NFf+Fl|P*M{LUZaB8Eb*73EeAzgjtRG1 zfi*Q9kM^jdaLf3jD2d||h0ne|k!2o|Y`u}DFjZe7%|42*SsWows+v>2WQj#uPRDzR ztx0@XM)_=d@%n$zjW&`8cC{+f0@m!mGqUA-OW`l}PszFmxMTz_%|m{Cw8muJl(?cQ z0~zmqf76GZ9Z#mK%)08i{;#L&KiAd2x9Y#!)nAZZfB9FhzfZdUUHcjQ&-9l3bM-&A zC=32qJH9gfi>cI~3x4hDpQid>ddcuJDZBn#zo`Du!notV8qKkI9rOn?6{bN3i`^!P z6Q_uCFhR7~y;&LjaKBsdK?HMbGFs8bxoG%xYqy8v+rn!lb(!tEcrO{u!dOFb({ zT@|ISN^}+a#;Y zm8On8?XUCGSEJQ9gt>e+QM8*jB#VrNCHCuraJ5c_DuX|UoRk1r%O-fj-d0ulWD&cy z2z(50BfrW1+MA7p;^d%C0*g&5D!_^$1B7vFGO21?Dn{HZo)|fjpOj}Xd+VDC@8r`~ zJUAfpK?fDuZ<{?wcncS`-ce|f!NhTE1;g;f2!=cev?ejIYO9g`xb!fY5*GgBW>xQ3 z2Wf25PbPWysZ7R`2Ja}MA4O%18=LcO>1SXg5m%{>x(Pz-cX-pQ=z8)=gU}2V&1%5> zkUep`!o1&00g|!wFFggIDNGfAIs?#moFdSDw{e4a>^Tl#Xq7^&?>R{5`1CTTpqqYx z_m2|;si($Q7aF|U!73`(^B0d#s99F!wXMm!p(-MxV!9S~U6&ER<5fE?yoCy%3?}PoS+bE@~Ra)DK*6^FE62?%sqb+-hn;A3m zYk&$3NOjAEQe$h@oe9AgWRBj8Ida9im?ruZci(n`%Bm?>b`WI^_;gucKY~Bz`+G09 zQySXP_+Yp_=*+5w!=pDsw7Z~f-a%oWs4AKHGQ7Nl+?%;Q)dC@!2~1fVMwm{n0VmIW zbHLlNU9!T_H5j>{N)5>m>4JZTrml1n>MOoV_=b^}csYRu6{{CTLmI=-wrzNSiNGvhuZVQ;ax zIGkNt++EX(z>hVU1YC`%CuS81*zQEVOXr4~LfVTtsUo<_dnnS=;L)2&8L03cKg1yo z2ed<);rHOfd5VzL(zDOZJ`HL4Jp0M#3l(SEocq=nNfxthl0PNn5lz$CFTd5)8r#Ge zPebuQe_{-S^<0J5z;8mZsJf9~wmqV9=tYWNP}NzqK_4k~CwNG?f)#80@J=+W>2&i` zX;>52Z%4@wuYEtcA{aeOKVts^DY|J z0JN6#rD3h3olND5=e}|UFj!6b)1FdT(F@-4p>hXmgy@1XgQD2v+lvRjK=l~<9YgLV z&1<#Bc(!;oo!-wbh$hbIY^`3@T?M-=(ouE zS50ju!6yEHB5`H6j}VFzVk!&AF7nQ{2Mtgng}s5g18qam!#S(roPU1UnH-E5^Z7dg zl<@aZ@i!f@Kly`?8Abmt5p0RVcm6w~Uc@SnHJ}Lo%3nKM`OS2`%Sx`i-*tZ2iEFHX ze##w}!zHHeQ+(LT#-C%@_>jn4za(&KXyPrPsW4>UfoY>tFEJ$uUifM|=q?y4_E-GiAB@#N zja5(o9DVjUem@?f@q1vXjo*Mz{PDYiK~Z#fJip(q!T5DHFn(JJ9SXXBS2znM2=`$xd-pVw8gIy##9 zeIxOlp`!c&ZMSlaA%{@qA7odRMO=11tA~{(T;{o_rCdhnAx|s0JkMP+%cQ(1=K@$q z_Wu3Q!k+PWgwel?CtbcZp#Qu8f9fM*SV2}**$ z6Hhe!o%IL9-y21u|2|px``K$>9)F>QD;@u4(|`MMM*l~r>Hkrlc;E6L1oFwJe>v-P zDY9qjB|k=4>DQO|#YOQquR%7A<3X(ANND5B%BK4jxsoZHerXQ^g1=RF0l_cx9(fgd zKPsU2&!O+C5{=K&qa1y2@yF*|Al=dTpqat=gt+qdBZPzTxsl}nf4N`^myFLKKK1JU zXyfy*dK;gG$J_Ya_j?Qw;M%vjXB9S4@fsKS&rjbeGY^y*FLVUU$u|% z>stK0)%B>=H8oY&FIATW_>Z{owkT+V{dXrY$k$MlU3MZF+^#>l=(-pg-<*`eRL||1I0=X6`sU4~eK>oGpP1Zm9EhSu(`wL}P3;U&Q`d zzKE1rHur1N8F1E&EsC~`XZc+As~@=9cvgn@qMx~G^jR)I2-9NWSh+1CzVWc04S^pVn@934f%8T~HYw$7t z!GhGYqSRFhSCP;kKaQ+iCiaVjMt>Y>e@pt^$)?}+^IxFmmA^Ru+6a48q$huUe9P$e z?Fx2U>s9w7>SVhG8r0@ME3yq%1s`f-(aWhY(v~hU`n;82gBG zLc=WtW1ozti6T?Dk``Ji=+Kp3(&K<0jG~4Uzb|PP-{LJp+&F!-T!N=3(@gZ|Eqz(i zPtG7}cG{YVxFq?Ug+n;`cadz1F80@hLmCYkf$8PjW4JT$!OBnRzX(!J^QlP_FW})$T?Hl-jp|c(32`sABw|15(S632o|l z#e0N+4#J?q@+-{6z+>5J3V`BrAi_Fzfk05O)KFK-lHyhBr9BHLETl~CXFe*EmZpnJ zyRcDIWEM+P;c$YH@LuWrS*JIBKaKMYHHj0Sq90svL-m_*zgkeAYR`!xvEMs~g!zr) znVDku#H-jZ@hbNF;E+mtzY4!alx6hC-=-P4;|7Qt%-oX?D_=Ly3~8`m5ogLrr;)Oz z%pd%OHOIkmjNom>@`o^vf$PD#1~fH~Qy0ae*_DOP?u$p@{zvBC()L@pRbNTABiP%Nc~M3i0WbM zs|T$kVWZMAYVCZYnC@)_VJtISTdb z88q;lPCS%~e@YWZzG(uEFp3xt{j(a1HP8@-)dULk^8X|6UBIiXuKa%v5DXSPi9(IH zn%LNq*4EH!OH}kkLEj_iXcStb(i*KgX|>bTf?@?t3_(s0M>C_-GM0|iYKKlc9Xn$w zDs2;?TrC8!%B5AjzcHvtZMmuWeZFhI@3|yF@b~Uz1l?xEz~AX?fk;%zG|!GL0lQ2 z9*j^kEzIxN0+(o69Q>WHU);Baqw`w8K!zy#Zn182paF4%xHV^{Q*L3}pGd8br{3Y& z>_qCtb{SFC_)%&csBP>rW&ndc@nTWKW-azoyLyqd*(|UiJfAI6S5tO?Xd8_NA&((! zO87lW;hGF%W5tCyPmNuR{L1Yiwps z3(U3o%tf6s?0w^U^0WqrfeyxQ`p?MzF$1XvV&Y?LE6A+2c1R~7%eS9?N?7QxFW4Tb z?F{8k>d3{x>%M$|V}V&yg3~WH3QK)_)ThciZ3a(cJd>dc`AJ-=Lozbsw$2z=#QFF7 zmYTZHeD3t=bAXIYTkC_bzR&xV@9u|*_fG$`mo}XWrk}+<`KtZV z4TgB`4M3raVFJRV-DSP796Es&+*HlBfYr*pn+g{ke5<0NvM!CE3csf_uZOkc_kKbxevC#$w5KYdAY zGIQZ!cFj*`_xOu5BTADPn)y8>QL`>OPX}V1{WHn=ojd=5>fsP^uER-kBpDfhx2_a& z>yzH;A7S^4Lk!*b5~uDo8BLh^T<7m^VFiaKZyUXkIc^riAeh?p{ z)kkI>ghOqKtKBze^#(L2X;yly2>$?EUoxn5!g`a@mWI~T@Gvaeip!ka+rvvXlNr=i zR_yJB_FbMa{r0x2+{hN*lQ40ijnxs07^_=r!iko9mKO}SMQ1M{xgq|&g7QNcgrUp^F|`|LhYuP zCRX%J9B#RLer6`?l|2jmrk~gm+eGR~|Kyzq(8+TX&#zcLFs0;X8v051wgZ}ujeevb z&Sxvd>4#qtXKLBuOQfcLQMp}T^h5hXP{m4StG2|xFfGeBuW}H-6EL;lHzNV;g**E;fGx{4uFka>iJ1<@wIG@;ACumF68|^UG_Iw!QJr1c zNULsCJ;i{pI==n&)9cKu(dlRNDWg9_+d_V5aIH9KQ=(9%c>O87h;WEDH)>+WxxuwE z=s%7WA9bY3u!>~;->}A@rI}(#sP$PblKGQ2tbcejH>}M;(+1yM!IKd?130A!AVr42 zwG$43(_CSHzudoOsMdpMb1KkxkX4I~um8i#9e=uAs#AmI4a?~Ehy{jT|4*!dbCoF} z$c*-;uKSNR9yr4)WwZ4LajcFfDXJHlT~Zd(DMF3ZPoYV*p%Hs8DDd>SbZ+x*Ib+LVRCVP2|$BU1mrz6_E;^9%upAR8wc zhByxqu6_6buc=Lbi{*x2gg!S`OtN1}Mzvpo8(rU7cBs0PKVjLyn0ro*>i#11o7I>K z15Q8qFEOY-`T@2l6V^F_Ea%)z(c$->HE8U%$3(AM-(GpR+i0#M>7JuN`0Gd5AeSgZ z>-Z;nTFsn|v}O5N!t1Nr@#BYo%`5c4OkwM|5H`BJX_Ou+%f(>t-(_Z(9V6*!@Wl+0P%93exL(92W z8_zgipbJTxK^NMP{4_3fRqM46{Y|G&rnwcs+;rpB*SE8F36)8AiLKPh(?1t&6Ei}k z92;#rn~`!AgUJCdyBM^dhH!|T@O(iG`=UI_*dO@5DO~^gZzx>FzdVp~{Mn9yXGJ&W z(1B-w=>O&~L;KLljk4?VkKXqV?F05cylt=1Gv>P)sN|`@(xT4XQtd%_-Y;fZ$(mA& z3)Q1->O-E)xBPx!uydMP-elI(LiU`l@qhO|@>R0D^BivfheoY`pY7j2`ZXQ+88y8U ze`(nv!R@d6-3I{Lb8q&Q-{}wAi^&fJ=Y!6t{c_qf zfEMDE`DOSl1E1vw!KXj=gMf2BhkANkK#s9z)SC@udY8PAC+7dk;%@->xpy$c-~fd(O0~>A3Xk@O9QO*JdtbhkJjSKTq{;T zyeZ$equ=~&Gj=c6-B2jUL`zK4X*Nlrtj%1?<0h#asd6yG9Vj5MScQNdHxm^Cl?A2? zf9n(dM$Zt{XL5F58qij?o02z%Q}SyEr?1cV@1N%9B-foRk&QbT=>BI90Bg^Dq1Ygs z{vU?ohXNEEe!oil;D{Weuj+pIeIURuSj8YCRMiPpb|YF76PEZKeqn-1=+EXYR+bNO zi;FW5edF;%!na-J;tWLN0?fx8<~0!Nqw&Y?2_J}l_x^$K->3h=|5et>+$4`3dZ+w{ z9y?esdS+`(4Cd+Iw=rqYk$pB~f*pzQ<7r=JAlLmvv|6Qo=((Tm1u;`P!p=N_HV zUEj~S?tC~|<;G~ml7sawC$QWYofeGII5$QY1!L5HNaOQ=Onx2lL2w^feoY1c@P&N& zRiGcF0{kPm3S}Ai_k@2qp}14}Qf#7fPj{F<6scyWGXKlJIV5~{3$3E6-1{yL-B$(Z z{s8@;Pya;!hbrHeEba&0hm&s?f?qgrU-|Z}0p%MwwFOj}a9Tc~Y|$|E<>>yA{h`e9 z@$P8>=A7W0WAm|@S@^#%-yZyRfR%&Gx9jOYv}10I{L_#B{s{V#F}+?0fe{2NPuOlw z$Z4|~gn*h$xgSA9#v~8*r$d%@?l!I09_=@vIaKwr(RZH_U@nk*Q$kXkL?FQ5|1tS? z(E$KEhKn4$SwFVr@G+L%MFuz{w^>=ria`pO07 zQtrl}nNn<7c4+`TP3JoQuK#iPg?g1w)&SMW*eM@1QZ4zk{^>q5KyM)2z7(Q2cnIC- z^Z$bUdilQ(Mgku~e(C+5GSPR5^b1ZlTwgB!!g^ZW=djtQwQ3zL#RBTytmXXd=heRb zUR8K!fFED#5A2WPpLzhGyKfGVST1%reXh;!J59zK{{8{@^7x-g{3g`aNnGetbJX-R zL>nP*??RFEhh63C(TfT}$oT1oXEFYo$tBZA!ja0nnn`8R`*5NfyP7Qp6!E^S-k<%e zeEc5d{iAPxFnkmG!FT;v4L-K3`oV{f5SN(NOfEA>%Yn4~gCX7eNCBib*tE{-C)ywI zh;sV_vt&nV*&&Y??GIGzn+d+y&Exi-GfprgcSYS{XqfN!A+GFy8_TRqHkn(SqvnwpJISlv&)VON( zT01ZWEU-gZuJEH)I6C_)^tJm=*9;mkbvTf|>A$=ZH#K79Gx}Xz3?q4o*_y|NG*1dnZOO>rJFjfAmkSgRV=azrcSg z*-VXIDz9YglMt?z78fH_;(t9?`sTdS7(9jV*%8^|VMg|^=VfNQN;3!@f89d>*t);` zv2wM;)xv^MrM#Lhofu_7)#b0oIo}HFq`*w(2UQ3y9#xe2X;sm-?dC6rMR{hI7m3H| z-mcEq4jcY{Z0=1bQjJ~bB1eIAKtC;Rc?E<#opSORgBe1NMRpR-s)#EU*gs zC;hU3ZYK|H0W$xmEdAc7?W6dpc?>8AxmiR!qh%KyQG z)@Lr-v5g>i=*_Zqg!xy60nwvIQYki)@SbA-Z@Dpha#ME1tqKv51r~+@ksg;w9&;hS zz<{6(BIXXh{*L*8lAAjSIm&V<(P|K3Qm`wof-=gcM)6#(D=A)GEDl}bk9jmpey8Vv zq2Rw;L3ftUfAI(JIx^rwELy7E9`h(K!#RJTV%S=;HW^9o>g-E zAhI3HeZY0ml5>?@&sWKf_^HmYv4I;fCKDKw`~EvSCO_VgB@i_u5S#@4h2xyT6+%p( zt0LIz&)DtfJ8&-wuXI15_D5L<*?uKYrexI4H|+nrEB9V zQH1zX*8z60{jdK={>1gtGR(*_)m=Bh1zVEe(K%16@q#t7$TcR^jGH}Z_7E>Mw9*l9 zW)hf_Z>}iW_Ah>wMO)z%g#T^-mBoXrVqZ7X|C%=$v1< z`NzY-R*eYErfvA{;Yu)tfmeX8g)=OL<6r*UEXlk^?LYL!*u&-u?RPVarH0H@W` z#``XZ{l7n4(A!T2lPlZ5sg6Dx)W3SIVd~YtCiSl|zkiID_3zbo*FV72ZpIW@fwYN7 zCn?nBUvK@_mRN>9YIVq=s;kd+ebEB2DGBXsu~@7%eu@9c|Wq0HkBQsk%=Mx?8d zv=~)_e`o8y!Ly9?AmQ0hy9#i^A<;&sK>3lb4_kICifhjHxxa%|7A*Irdgl#vgA%8NaT*Kp7V| zD)ZYP%pY1!hO+kVGY>w#y06`h?}KiAS*9Uid`t9YeC>-qKE~qbxpim0k{in#i+T$; z+P`ki)=dBS>8`-AKt~vpT_$c1W2Deqo;_ipJq%5I7iFi~ zk5*=xgqOji7=UbgGW8oZ^^2tkR~!0nALCferMc2q6_!>9tu$o}#hKfocr}Z|lqyMN zE`V8y@s7+@a%_Gj#t>i+VGXS-jP2#X2qH@Swf~;&#O4)wov@uw7)7U_N(&)wq3+iB zO9WtMo^{hdT$l`!js0eVTS0;h;=kwTRY4xOr9==JTvxmNlM6G<=$GN4{0z(mBf*yC zqRc#Q=IDO@1O4c}yE0ggihuq8fxe$k9f-cK_}(GVcLo<~6NJBbI7=RnEzcv552SI) zI{&6z$vX;5ehB*hOs==)Q`GxVqL%KQumq36yt~C0FEC638M?OJ9T(y5L%WuzGx8Hr$$*d;m7={JYw6 z)eK0g_ZMd9PpZe{w{#Fv9eIC$QoVd&%b+uH7xL%-cj@=E*$1NE$CYw0{UghtM=Z?J z@G-wXR2nw^yzzl-$>)DpQ1V02ZzfmC{dtuPM8D^@<_K>9HoGh@`Ge?p|DCyN2BhEb z7FN`sejm%P;UM&z{K1E&-)k!uIpz5X$9y-NHi!0ZN>lJfd6r@;`|EbTrr-+g7U-|n z#)zM(mk#*X>C*+PP>b)YVN3lD6)bEzEcUqI0Q*UfVEmR*$q?$o^M z;E2MYC`#5d){^{^`iQ2!D#U>Qhh|4L%Id5vuBfxm=C=fO*|4){qv1S7)qm%{e8TGfL&y`Iee43Q6k3-zYqdx_`Ui?}^OBICQ8oA^RPSRlfUJWENtoY{@MS^pr@Pm>u>j8Y1yNr(ekw%`?goO!D4+WpFM7EqaL zX$)7$Wp0H$(&cXLZUGdt%%n&E>NV{fm|f=0JIuHgkYO5&CYUuKQ*{{OF~FC`Fv8cy zbpK8}JEf3L9kwS-@1-$pPqo;dVlwK?Korj4KBzBQ-Ch2_P;s^{%o?QcXx5_m_;1*v z_~Dya6xX#BEQ;Ou+;(pP;^*~Q4twdNblF1%_mI8s?S3|qj>IeW#D{k!QWzmP(^#>K zXD*AwIQd#mX1_v_CE3UlJKJWFW!Xr~6_eSoP|osfWI27tQfIMavaw)kav29KET%?zc^wd(Fi>=GX))86nBI~n}^+Yzf$cAiW1Cfm` zvN0RkNMw^&!L1f?KJ3qM2i=UOfu7aN?q56lep!Uu=lp1JS7W^hQbs%@pwF;a8Hf_) z5t)Hn(kGnv3e=V{9chE;_qJI^awYQZsP}e12h6%QZ}&6iIg(6!^#1Mma2|5S)@vJ4 z`-r6XK_tD`MwBAyeGp0SwGpLAdLKm6`#MH+Upzg7-tT5_D^BnAbQA;`WBLZKEIB*d zkbf$myLbA~U5Fsz=jH}*1N*vBTO#@g{^xkVn~%(#!=j~hIa+c-i2`FZ^Jd%o@&0j# zgIZ>)Cks+WW}t4ar*SdBH4eC9d5p+b%+f{6{j1yaA@tJPa_PrTe|DQypVN3}My`0_d^kffn^j-BGrQNN!mV8P ztX|d&5;zrgJvN#${zw|K@h`W3s|64iwaa>Bcx~Y3>(Ltfa?6aPi0%_{50ThL3|pil zUYf}kJGk%%4;LDyR@Q5KYO}f*^VjJyJFBvFB~+{`TbJ=jEu|mR1vb8&L`aWZ_oCIJ zcvbbAVuw+{#Y(4&+N>fv5c6lP*kRM=w^3K9yx_%mHoQ@ZFBuA6MdD4zDk6|F+u;P7q>sAJx!i> z%M^X&W$5hHEsoAaGtk)&o|+iY*&BD{(OC&}#v3R+Ro1q8=0(xPqdvkB=e6JFPPoNq z9T6M%>`lY2Z@+mv?}BHFe*F@)wg1l79X<*?Qt3{Wf7TRwXb_vZnb2&i26TL(b) zBP5Fe1SvFq$>PO%1CvE}cRocp`~>$)GE;Of4ftu4e$Xs9d7o$cZTVBi!cOGFGj*jA zByhYaqyaj3teisroZxH#Gl~q+#nURwTVLH1o6A=}&S`!19Q`<_bzRK95X)mRwZ?tYw1(To>C-sH`0NWQ3SnUVMI3#a}Sx91HB`h*^X90(s9(+9xE-h6yy2`6uU z+VK{PzMeS_0Igrkv-b1*-4dWd>=OHVy}p^?%YZd0Im6Wz#P>gc`-*uje$&qCVk>Z< zOIc(8mlp5~!VBY5RM9-+#5TG=Ht3!AM+TB8+t3Im! z8c*%=s(1+eeI7jD1zd;S(%G%|NxjqtyL`vn^im>o9@kq@@dzRlDPAsEp$Fi{4^r1# z^)4XKx_O=cFiykOw!UyqB6B%M;I<`e*4}(Hw`UYZTVEg#Zko%h6R8dHP2D{cU37;< zPYt4b5}AewC;Q2NKMBdq)ztE5B4Qk1O{A|~J`U%U_@o^U)a%l8ZXRMg2xm=MrVEAgc6FIBP)*vxD2+7nnWW>c4WX zrd^Pbb_w0wW*=w(j{gMjW6TgWHHn(~Z0uy0vJ2@1H054NXgBIAAmpTW$&8S-(cuVr zI3dgFXfj}37Sq5&ht~|JO&J^Ocx!0uYth(T4yaxj5!ag)bMkF%bk0&k-5PJh3(>`= z!E*P;967LoGo`xqRZ1Z_PUCjDn1RFvXyaQMU7Q$Now=mAW8cu!rp_0K zR&AI|gkr}=wh$c4IcP}loSDx=OW0A5mO6(${a_j6Ucb_hI{i@p^`k*Q9uZiuk|tQm z44B?d<8;l_e+CRtsw8?e8q-(*L72Lf8uS^@`mvUaxjc&d;U-6Xxs>O zb3i?-uJvV)wtu^m(R3z?dD4k^0z)hV{xnx#_>+Ahj`Z(@GHKSS67gDZ$s3#gHuc!A9a*o3vy>^m`z3)<7i1EnPNc6yM(+$#%7YY2I)q5mWW5Gr&FXO+xi21Ft|F6!*AI3_8=W1GW}>( z@EbIU;B4vwGg@piweo|FVR%9KO%lqm(N2C>B!%N(`XokACI?Xho|cY6@)3qvfL zX2c`C-Z3~uFEx`+ys9_B>Wx(~bgAkh+}^d+=6m)@@KP>~L<`Zj^mdTum0~aeSgY`% zVAz%?(hoV0U+ik-R1`0LN>MR2&lqZub61{- zJnyB>s#Lfn9@&;414N>c5sEZ?$;f^MMHZrK4OTqzd@}WXyp&tg@TX8-M><{V+7r3y z{8Em1;w(A?{wweqr&W9ttZ5(bLpqNH=}W@&K2)_|6qT-G_*szu|!t?BLmPF|b^eS1p z%;P>28pw{Tyszn!&G*t>@Xk|k(@=_vwJXCXSWnHrLrFiLvcR*l@mThT0KFpbe;8eY2|jXBINGT zH^M`Bpx&ZDJsAyV#}S0qGK&)A-tMhlm0_?%RSS6Mjio6ll2sQi5~ zE<>Tdk-r9zizEZcyDVXaSGwOI2l+%KO0mNP4q|W%M#;7QSV+3I;#liF7Ls~0^LIGIOch;b?YF3!`YYlRIb1Fc*TZzYLmBnqsN_{!`DixC{20V z!#v4~t?`Pkq|Cl9)@~3AQxg^Vw?E?zU#Gjb<`Ua3^0G?6%zQB7r9Pr4)#s%q6)UWK zgiDeYFJUuG3`e|h0UFX{uJZE)6rW`hgh)dei1TDwH`6I~)Sx(-)O~ z$ZN@CUWT2{d&)nW{N1|(WLc>2U35jr2Haok&su&cT{m5r8yC z08~rSEd%vg{Q(I2*x!Yt4JRtAR5 zAyM&6LQHmA0h4$kSo?3o7e;Bz`$92`cmUY{t)C@w&Az8EEXL$6)2-3s13RBs z&G`GPXC7DkuS0@WucncvrRc?5a^3I#cJ#*Y>{w@s#&kNpB^TV=*7)zo9l?tG1?hcD zBGCmCUMd~-5VOzn%?=cMvWBcAp8As|<*~AOz{KD#~92G}U<(9@PB$3Cd2`FEHdXc@T28q%)l~8RF%u~lg`~glSHH;c8jj zM2QRaWx{Ft^_l+n1zXx5YPFn43$|#k6K|={rvi%}r)V#q4lFw0L|JkuTv?-q7+xZ% zx!X*8r04M}#CM=bruM@Glj4d`i7T3(!Yq=0=SB7iP|jDvp@}b-@0R6LFKx3V zR9DG3NCmQU(Ewv{7$ol0H#;YT#LYqCc1z4oP}lydAhCBHJ}oO9aHy+$4TEM?dk@@_<4Xkx7{!;VTnVUkaKZq%RE9^9U#zK@f80da7=T zaAIA*HK*p;WD!Mq6byvDjR#R3igL?VH!kQ%xu{09M6MYw$|SvWIn~0-4b4_%a6_{o z7#fQjWMx^MSy`>lguF%IJI+P@RZoTHvV>NZ&XY?SG=j;9=_VS%cqvyNhU1KpMU_Hy zEE=U4xaEE_(k;CLO#<;h&nQ$$8tR0LT1e1V4#2>|#4UWae&@`f(_MsuDSAKpTC|r^ z=>BC29rSBp@`OOP^!V)a6y`DrB`?Ux<(3W{YxbVHTo>Hj7$dydYV+ z#jt!MnrGE3@v1)>(3p-yu#s-T-(}fD(qt|CY`k=*kfb)T7Le>kb_J%C`TPn@DN8JY z1@OKk>wR)QqKNEzeGk79RnL3+54#!H6j=Vf`HM8PFcxhgQ`D3_mQY(_eo@41uPmSP?ged6E^|lNB4d`BnEwD^{sZVQQk{C6qO9_;V7oibXRE zDgi%E4Pqr4801sB8y;4yT2hm>B92$A;bn0b(QX=W9n2*n z)PYY{`a3jooR=!|Qcb9Y`1GW_vSsXlTwA%>DR18tWwh+juUJ~qP^pU1lp zc>7R*-Y{7JCrZvE$TO125z6urWhqlJd%L)V&}24Rrc@Ray0SQtI=+&?ZQL#Ynkv6x zSiJKU)%~@ic<0MwlxJwX^QCeElZS9Uz11|ByIEDyc@drxEsiceF2N!pvNnOq5Qzn= ziS#677cXOPn5W=htmZlRG2AXuF4jrpOE3qtehM?C(a@<5=02(twy9+cY6_)UF-A6c z5niU}5g~HbQ^`0P;_9qMYVxRQj3h~ncBp$Mn@F9nS>4rP-D6zc&LC%%uk?^O*q zRe#EZG~B?t`rY!?HNkr_45n-4Q5)E>p&4OAO<_ZgVM7gJFZwoQw7gIiwk#Ks<J3KV*7s!v-^LaaVC=Onh8vS&H6G0?2F9wEglBP*S|))+(fQY zBz)5%-*|y%ze|Qz$_ov@O$J$^28GHMYEme>N6H@VQnv!gEOjTiGI#9Eo{fyke>TrQ z;b`;JWb2&F#&I}E*`AmF%0CN--(>Ppt8`9f)QsiC<<7i(>+|!KTNjs_yeK%C+28-7 zEhy)uPrqmwM}@gzg6>-dtt)V1bCqPlCr}7~+rK#Yge)tC{BamP%*$Lr1)T0P1hYh0 z89i|}kQelSVqSS6{c-r^pq^=34}0F%H+BpmcjQSnrcbN$GEPg7W7pP^!a%TF3iq`p zGxH4Z>>qDi%P<0wi*~!8{wIE~NX!kK>mDpgr1oUzV5(Tg)_t*AACue6Gd!w%j-=U! zeYlpCNALV5WYPUBptZyEc_G-%CtP=nqilH_11+iL77b^aB9E>$aDL@vGScXvUxaP< zyo<0h)hW|{yV%7!1iLNNY!~Ue2H(H4i$2hAM+rg4lD~D4j(&oi^#kSn_&_;7 zJ5bKOO9!ZPsB-p2>w47*3Wd$F9X;QcEs>$yX+xJ83g4bKDm!+mx6S|JxDf{)KK$SO zH!OS<#k|L)Jfe#*5q0ss0TLHO5> zS@5q@FEsu&_typdYs+;9;a`vZEwsPfrk8nIc67<-75=qKU-*}O5#PSWvrw=vPAK+W zP`OB7^p_64`je8n}*PS-UV4IE8Z}luW_Ro^T7gM z7^o*8#_d+-&UwD8_ch&WcDLm$3v-r-focK*Mzw|)WGR;`e6JOb&Q5CnT~)+rwP2PK z6bqGKtdPjZ7Sg@39e?$HuBl;4azU+rCiT2uXmOFJ9*8eEV_8!P_;jM_4E-I zrmoqmr~O56?Ga@c9>4#yc}@m`V7stJKHt81;-w#d{!LI!x$A>k^W{rhezlE3wWhQd z%9n42^`u8GUTl{L85>lIkPWI7VPk{Fiqa!n^Rl+*Wu2dwbrE5FnCtVhF3HQ%Pd%yLxdyLq@BSBn>kF2D{(wLM zQX~K=OXd!?{f3o;!uFF)AmI-L+b@5YgDomVijcwJ{}=|jr{83T>rOCOKm3g=qFD^% zhL>xIqKiQgg;TqCKNstG^RTM-V_olq%N64A(N=S|yrFAGB0ZEPf?M8tnbUYs^=4C4 ze5&Y2|IrVCUbDz=T9Jdk`={>>0PLHKKNwhn8VNy-nto*P-l;)42)ub3+;!m$8vxG+ z=`h~H?dJWK0(2TF&ogv}96b;XEz2b_mO1ykHElRx#xx*;&woNcjg$Q<8~S%b=-C~o zntP&2HFVdI-O&0j`u=a<$Lh78UO9AiLZvK(Ene}jxj%M<8 z$@Magh*XqvX@J&tX2eG&{?xvgVdcsE{$VFr*3lBTZQ=JkDy)Z#eH_N2yN^P5)Wm{k zr~hf2daAv*!~FO695(Zxw92EQnchyP5#al$b$_%#Nw*X$Vhmp@)O0$=|hHv*QM)p0Naix-M8+#sy@ zwX(QDfMXmslUGCnG_@=j_VP#I@~H(Q@V$Z&D8&DS50C%j4jKPNnss^~6;kVq|LIKY z0cSxT{{JvLEI%;*9}dz7rvCwPFZ%yoA@+NIH6ZqL^q+@%NB`$I`Zr?jkNs^|6kxya z`9$Y`{WlG5pEC~ZDoZi=nvT7P%}rE(BC=-enz>UdKlwYxe^5_COH$6D zwI^;^F(a87iral`?$}+?#rt~KcfNHZ^MzZS@o={F%@0kekl*XYV+^2Kz*c@Dx|rIu zkYEM#e(~+UY<+<>%VwRF6}&Hc-JJn_rBDCF-)DjFBjmJ$5oQH4S0!_- z_Pbe9F8bjjt$$cC`CMcOeFqJ%!apX2zd8^8$8%GKyu(!<=)p(iOgeueMbE>0P{{lgIYw2ai~uJA!A}$4plt!FFoJ)*Ix!M4o6yMyKncy zN9VjEzEgO9G*eW2`njCH+V&I99i>NB{#;W4MZCo6;N16V`gg3Xb^H&STX`dExR)xr z{+(HadP=>__^%L%ntVO(RPi97=g{uMxYmvj7b0{#zX7!2*72ZoRIfq@6l%Oi!AEn3t|Wu14>t9I+w17U67S8Z`u z+qu*R|9axVzJ02{-u(rA3VvPh`eZ%n5C7@bF|I-R3BJ6ZY?0l9BEp}@#mFlxOE3cES+x6=pU-9=ZUcr@yc;}%}*BmvYu*L#;fC1 z9bQ$Z-rU1Wv~$lniHZ)z$Fx6=?g-mfq10Ml8Q?DGX_LH~{d$2ldhzpK%@*BgD0%|{ z<+eYdwqWIF2ahFpOfPj9u!&pK`JH*P`v|61j@@!7%ibe%zc^oV8=XyYdoSlt2)5_& zpjOKKA5P9khAJ-WJ}ie38=s5mJN-L_8`JcE(OnaD+<4d{t6oHu_tt_{+pZO!q(Jz;*Qd3rD{&=Np+P;23Nh z;-(76pbi}0^r^G52PFMJ{Ob;2(g<)8>!#~Co4;M=VaM;H33g&}Xu`P65s&*D`DS z5$X3Y>DS%vldO|@`+uLns)78}){NxmLVYvtn_%(a^IMypJM9~s8DKGC>n`F=oRP0X zY%hY%EC93T5qg3}?I8dDU2pY1c8U`8cJ6b~N9Kh0 zrk_8^uYHy=0^nv#n~L*grs$79<*4qW1!B<&d1H!4&bU<*ly?=_uC=TsJtg*vr2Fk3 z^PM+)!}mNh^eg*@=tAWV_qsAgmyCfxVphWz|Dhka#^>vIX7t}aaz5ooReEv?u23AU zwOd|!0YWV^v=S`~%WLnx!?LkA!B-pi8i1UWL(W}d5ApsKESfR{slBk0vAtveE=6P^ zaalMqhPA~}Cqnxs?>DynlQJlwngpmZSmkG0jS;7lke1IzE@(&DGq4?w3|JhXI?s znSi@suUJUJW99tw`xyWD6MoM|@rg0Lj~#70p60Fec9J}7SiXI+!NAG0mfs>%0a*Ww z_q$u3&=1dK$GP36T!a0~=;K)7zkI(IQ-O~RGU)MgRf(XFUTl8S!hrcN@lDpOnm&wm zW_eGokmIauQ}w)F2M68#TcrWzRi(+PJg!PcwVry#fK=yA6THkt+r65#;p-fR;sQa3 zmv#Pg9miVr!63FQ*Vv+LcHyRK>*M|3ru9tGlnS#oj<3SjICq>Lyx-}j#S=T27ROrW zvh4lKofFxg->`%Gjr}vf8A{7is_+w(1*uYAq2H36@?v^{=(pN$ys)3N%qa(^pLSn| z8fBV{=(8EBb@VyS?Z4R@+R*17u?R${eZj1Ie|~9Y3}!4*S}&%|Ve4qyAPP#z)+q)j z8s*R~+&KHXk~)0QXulU!R`b=1_6_z8YD(=f9YG{~-Elb*?f|1%67C9q;EmwS;#m^j zNs1AnhS35xbWoZiWO7qQc_iGzzHhtH@2LTldNfhSt*D6qN0v6Wc|na%{Ywx{vAyv5-mrolrSJE$ zB)rN5XgT>X%Uq@D;vkw@d6l~djEg!t$*PnFb&p!h$gQ?j%3p3wwQucr2Sr?E3(RfK zFrte;zMY>)eKxw(r!kTg)Y$n6G8u+qurdqOg@J}J&?GLG1$lwF?2TRR_{O}W!t&uL z)d~E3Jj96buf-sk3&vLxBply8B!}axBK{jiA2hz@!ARKnp1Y~f_*w-cN)9l-4x;?=eIe?` zcTiAk!T7$saiH3NNfATPLMYAxkBIc(ZR)z_fD-(>{zdr6BMt-Y+iH(-k7>MHmz8VG zZ9ccI+^*qNCL6H=V|S!>H^}k`zY?20VFoP7`I_=h!GPi3!^J>O0iV;U)XG zNu#BvO%AsE`-81cm$@@vG&zt9*IOYP(NpHEgQXFkAM|WOa!`h8l(+niMjG`4oJI$gQZvcuS;Y@IawhBB%;-U1kA4^sM{o@ z#Un{A-=meDeO;SIgbmCQv93n@7Vy5GXapsi^5?el`(F}~Vrd!>DCiCF9b+uEE-$St zv2Oum{CrqDf^Rd)A!Ae#|LH*iV-&dgGS4v}WF86rXV>-NT2^+?;l>kBWrE&USx!D= z-l>|T4w$Kxr)Fi|AIYi|HxrS0YECjwwRin-pxW;bidbc0R%CTDPclvAX7tHn!>svf zm2>-nGEMH2Ni?9AZG6NjmFcr&vOyB(vB35)urmx8JI{6wXG{`8p7)OxhTUk_-EE@+*iHbg%Dkv|W%@Jg)EQg=^7Vd24HVG0RwUE3w5 ztRVHNr2qOBt7oP>q~VG&@xf~U>AM}5HOm<X38Ip%%ZBk{^-^LU=J$MhoSeC{=^nN%|UaG4uFwdJ*59@gv_ z$js<}CIFB!tS)+f9PH1u2qgt=xHooVgLsED+V(xen0T>qZ;Y@>?$V?VM)mZ^>ty@< zE87Y>xqfSL&xqfXeUPpQV}D@!(L53Qtc_~aE_~eJr#ANm(Et7g{huuLTgE$NI#?wJ z%DUw}m%zTs)q=Ct0BgfjDx+;z5v@l{`)|ZK`{)bgq<=Btkewa=Dd^ubO2&RPTYf&) zGug7dH2u}aXPO-cx$h%9KLcTehEAJb{%x~iN`lQK{nrPyq?Y%$q_XvK{71FFj4>6& zXj%8G8(n{^a}C7sZ{aCbTTvHXat`!$eXWZh~iA% z5=^A)IV#Xll1PoHv{MWyMjSTg)&~~h@zkC~iqnYPg|y8->2+p&TJ5ziuV3chJ2C9S z0T;f~6UM31n19`w{b-}l5?Ct2IH?G+?y>+84Gs~X3lL%B*Ik*9jVxNS0f(QTN){LH zUqTsR!i)wsH6Pbi$BIjrVjpSSIBmQxbBMR@89b|$C%L}y>MSf9BX8i- zGqye6vIhX}xE;h5#av3QQjVTDwqxSh)$Kh;kZ^%Z@c1NU=6o7H+MY*8&)=k!HN|VXqW2sNXhIA0 zT{P%Ocrp7@^(}6SuvN`7wR0{a%ZgZJuocoKS=F*cW>RmWW_9$=PmmUG-OFW&QB{<= zqd~el#HgTxvTI!$V{7UsEKt_6HzCZ1@jX%M#I50o+1Xe z-mBt1kuHz3XY6YvDxP$N!lgoO9n(FPZSra`LnYRow_-wZFJ(pd;VrBqO~B!wVx^>{ zqO)=*$zK0EpI1BKKIquhS>2fAY&5T!o%!-C@|}JbAKS`fk0_fQL?lvN%)pjcSQ+BW zzYj09B~T#~Znb}xT-H)+2x31{0=OFF|LUv#cUBzV5*Kr(qtA>x*u3dJJTx8I9B}k+ zBER4bc2&$4WX+&y=ivQc%;wSHS)3RfJ?|x>?hK!v&x^mYKVtMvT7yfwT4_g*-3WPK z4}FvH4=$mR5A!A3)?&lE%1d!Z>20v#e;)+`%AY<(Y=(EF-@a*vSH*=VZ+oeIy8gSf z_Z+X{eJ?Zg^UxEQc(|Q|aN`NA|N2G4`eHtLScfmOFVzq01<_nl91MnwmXF+Fhk)s2 zUpN@19sfC``-63BDEtTVMf8b3vzUU?#Sk0iH35@3Gm*X=CbNI=ELh12MRYWgK6x0Q zo>Sv3=opU2obcxtEa5MFdOkXF?6!$xUlxlw;bj;93ZJA@#;YJHSj-gxi}@NX=4E3s zTVXMqjKyqKz*tNWg2eSj-i$nEkMr9$3sM z_Lwh)#q1kGLy4-52+_ZZJm&q}rh)CAPvK@aLjre`W~rqS*hMWjYs!~v2XBgY$aNnU zvwQ5@iA-%TT#U<4J7mb^UZ$ESqj&z+h_2J)N{y;D9*oYbSmk9#aCho6(Y6eU@l0JW z`~BiEjco6J!%G)^b-T#wgsbeMQE6RX%~hct;t5P&_nUlQaQVL2C*S5o>ZM#h4(yE> zS6i`x@2KL56;DnazG1@L5r@fjr)I?+FBqBTD$NwVaJZ?uTaRLWKKdkSxf}d%UU^U+ zkdvZXZF~N)ryYz?bD~tMZLhmAk3%^Auo{f_rO&BautSTN1|)O^B(%*)Xd@)F(MX7E zcQ!f_3PO-j5Q2n)5F`|YAfb(pgzzCZ657bwN0HF6URFw73JL9lgkBd3ac8I_AsEz0 zW?nJ&@BXAO0BT$B^y*-L7Gj@cJGhIhS?VL6USX)Ci|Zo47q>+U*V^K==N6O~-I|hG z&!(h#AixQ7gNKy9<9x-IKrd+_$hc=L)k62FsmS){3brPL(s#BdB)UYQ% z8C?v|Ju=`AeQ~8f?)z`cxH0_%&1Vci3CVa#UVg&qfgz|o@JOgd)xG%d6|nNUd{SjVqO)x z$zO$L?ol@BGvagHx0OgeS8JFBa@zNA`xgU#+CTSeJ+(*aPvA2*Aj)m+fqq{-Fyhs3 z{JRhB{`vJn4D+bSXH4BlB-H7AE8x>Oqjb$l^*}%cq{UhZ<=SMX=Vf|CE+f0!^c|1{j zoqqSk6V%UwINek{d)u^6h2_Eqq-1*Xet4F?;9wOt*uw)GnWEd<*!aFYfbe9slo|P> zqdySBNqr$S3(FB8DUlwY%#12YrZ4CJIC}Zl*xxg;d2u?iWlu7-Hol>oTdWo6>>ivA z4b6s%v!Rk~s9d4wZ&$}xn%GQ6Cs6w3VHamcR3y3nx@QReN}`S@Ggp3u>$72g@520c zjGvS_9{)tAqQ`5t-GQ=Td*7x6o3|&Y)lG{44__YUH1%Ij4>Wa{qg!7)mHm3Uhsqui zHme^OW9)&skN?&d)2f>I1WJ^qUjtIGQCb!FW~IkOHeu+ZR}3xb)q}Aq4$-bpRCOjY zaWwxmvkv!a_TBVi_b#edBQX@aMAb^xPc{3ZcW%(g)T|F>G@f}dV=h@R!Nd%YM-zMF zX#Z6kyw1Id_0@6i2t!oWUEj`a;L}c2*D*DtBJA}i1?Ls&HStm7NkMQ55=c@j*?7%r z>RT=6zA6?$d(Pp?@nmKwM|<3H)I`m)X`Jxy@FN8^*&e_KI%PiABEx1X!@u=ZQF(|J zd~5}T{Ns#*;SUzF|GCas{r%G^vzZTXvtA{ba*JF<{?TO4FgxDyj0Kz7OrU2tI>q~l1j3* z^+ww?s-gdk^tTh?NYPM#E3zLmB2H!69pS)2uRGVk3K5i)8-IzX_8NaNtHVmL1{;aq z`9DHmYE8Tfb|MC&g=M0Giz2vr#t~JrX3ez2#`fB=Md=?if;H5wX!%V~iyfZuZTo1V zwCd^ZbWy#Fzr1gJ%*EFh#;3wnfh(WP+`w}VC^Zwg`u@xdqKi*CcH-FgCJx_`fT@g2 zrh0gCVdmC$#P7R7FLz5dsP?LMY5pfz+T67ce8J3g8-SKJ`%qVQVM@`&ACs)<#5%jN z=X0j#j9opE@X@^HAVsyZ^nBVIK5^_T6NkT^;8;ja=ggPYRH%gR^D?*hqM_b=EoV7~ z_4cmr>_#=Po-qze5EP$`bM#a}ItEtz{dO~1NGzt9s``%M;d^SAGeN%i2`Yedpv%Zn2VBw(S&5~XlVH!y|x~PRMx)G zku#YY!LgzE;5hU5o}VdE>V;-4@}X$h`(RZMU<~rF{H9b2y)b~P=U~|YZ3!c)+41(Z@aLz2Bgtu~2& zG}3g>`E1?H`L?*Vy9W>R6nf6G-xsS)z^swBuJ79|k_=%2LS6{eu9Xm_N`!+0=Ux@$ zHXcT9by2xzs>d?Vz(so5Y}y;zsi2kyui|+-v#GL?-NNa1g1lD7awL?ioETU;7QXj< zZ7*ttQzz6@)D>F*ISRlf8H#gd@Q;TcXLuP8Mn@}}|9HAZ=gfnxX*7kl6%$I{k0dhn zy>9)RsM!|1^J+^^NUeIxlTP;aNPPES;+^lI`}D*!Lyyu$XX0Jr|h91Q8RkCII zLOw9$@xNIoUUT{qK3Tmrm~dgHOwl#Bo~`|rGr#5JbhWC;j2wHt$?4Fadi>}-7u14Q zSZSxWQ2w|$`!mnH`#QJJ!*{m$Yx!+jAhTlvR@?pFnew15#Iz9yu^M7^c~1kOpIf~;jiuG7W8?py4JnD(~B?x=oE!52GvMN5G<`w zC9>u^I;T|1C>056#NUk{@2zcqZ)vnmxnW3Y&ziSBB=>_~P+4e?s-W-a>Ti=7QS*Wg0 zq`EmV+}peH^$8VQk(eFP0_Z|03jyOAa;imj^a9D?v0ffhyq{?a*g56 z#1yX+*o}eBg3v8`=MwbqE~7Y;uRhyPUG0+!YiD)a+Q8sO7tgGIKi1qEiMEZ^Si`8r z!tb&hBN$(Jqs(QQq9L)f(18c}Km3LhbJEO8Tc$|6IP zonSMWEIO`P%Mm!H8bYkmzha4Q-I-nn>Y}S{giGubqB+zNvvkm{#asG>*X*f|cjb>h0#5q8zX&T+7DGc+4l zoQ*5V#+4I_M}NC1uusLK6Kq=t+xw`{ChyF548XVkvIn({b+OlL7i1cs0pF2sU>$)% zjIr`ggcOZXTsX1fKlP6MqgVsFBURx_e=xceYuy;k{Swx>8)tsy;`D@7taCf#8!)JI zRCATHxvf%Er_VY!h+~}_#Ieo|;>r~l{cT5lC6{N|I+rppvd$ek7(Lb2xgBh~BZIIu zb#}A79U38l-+P8&9*Sn<5H4z{6PYk&rKDzxcJ4ZpSiA(c_!F;jhPFDV8e=5Gc2%=3 zdS^2w^=Mz!I zl?rWAvSgT}>IEl25LrHzRe^GIg*p4SUs3xZ6c2yXF^8^m!H3uNB{RY z`fteDpMuVt;{T{AkBs`XQWiGF+6^t@SI;p1!5YPn^pUcY^273jHcgjy8zjf{G;JKW zlmSWRX1qOnr}MPvcX9shJu2F|N8C6){?Uc9eUE;akIiq%r`GkPp(>0zviq;pNvqMe zmsNSXG|61!`f4)<2c}@AT9RiuHoTr3zEuHsP_rS(GKhmLgAimHgdoeUkR?tUp()s= z+QsakCbj*gE+#Tp^s);Kz@G#tHg<;?z$d@+0C3lAjkf9vn`Gt+t`T+ntdu^A()`{x zggzX9QWCYL^~v|?#Vk10`1CSy)6?hi$s-iEAV>a0@4nB_sNHleVR)@LFtP~Z&%-nMNlP@0>}d`{j-i1IgQ+Z{G%UYVvOv&nF*8m4y*O{u zFi_&=qRrlT<`#?$Y?gJt$=>W~yy5lV&5??^S4$YA*_6{vkUgoA@VZXRd>2vgJm{ev(4(a(0ip!Tf zOeML@KEaUjgb;vB51rvsZyh-GSeJU-K&d>9oLbKdsS*#mf+e!b>ySeQir)dvY+*tM@|DWF0^z8%I zAfhd$M8-K+gm4hQrVI(fgnG|L@5!4xm{V6CvLnO{MP<5o^QN;Y(R!?Dd^ zQtgJ$f)I2TgrKt^1f2yT=xhUYw%S{1E)38arC%C`qscLzw(|zFYgS;38_IPjF{a6$ zAp?p@$;X>-MmK~5=_(A?<}f7N-_sovnbA)?I36R=rs?O4VZosktL@Tb;BdBnxCnPe zoMq5Y6VgxVC!l4>^c~=4pE=NaTITAL{IZ?+RQ-W zet1G3-_8JooD8NE>^y`|)RD758n%Nxebk*k739&T=I3qCIIfsqLDqV6eS6Ek*So&> zY_#nThtA}q0Xo0MZ%qb`TDhhmbVm3;Q zk2i$Vap*3v38c=dRJcP$m@9CLr2!4F+b9VMBhsCAFq$#a`cUi!Sm8O$2kKpu{{=Gw z7a{^s)&DaO04+YJsV>=9|33k^jT7CHRr#X=v3~YzScryS?kq%~6pAt<-#F}iFqOSX z;Um41`ME-Tv`_K8f%n^GzO85&Y>IOxM2^5v&FI$ONY^-hHXp7N%ku)h!X;d(gi*Rj#aw`|b+Om!qxI7) zYh||Gg1&3w1`5PKxL`f6`lPlD=f_{eIc-1!IE(G9V6w= zB%k{3`IHanQ)>&H(x;!t;9auq%t233k~Ho=xzsJt$4DAdk1_^L{9bvmS31W)P55GB zc;7yA$xt@|xZi@h0{L>qfono}qaNu?%rRFDZZ2_rnxhx*Wy5RQxmlA^xlBrWK4FM$ z7VPy~&(I(Tg$%|3JV~LL>MR%Q!YJk5$`vc$3E<+{+xbQpA3isn`5tpNf!Isem8%0> zrPOngEr2lT1p~|pM>>h5c4Hx-O%wI(kHmD`VJaF!uQ5O2LP^vnfV0E0Y1S3uH`QKx zC}s#5GSj1X|CE7)wH|%G=^%Ifm{I7tiYc_>OKu9C2%t=%H~(iM`Izw16xQr#0`&ze zO%HbZ>nB=0&RrL(SweAlakv8f8P$lplPD^%#Dxm*XNijli2u26T#nM`a{Bk4LEXUJ zkV}O-%AT^p|Kd5qL0IS#U@^x;xF%>Fhp+I3zsgaal$A^5mrSr3sf9nz~=E!Vu7Dw9cd<3f7TJlVMpHgu;vCi{C_@6K$>EM8QvjB z{PSEzpKzn)bFuzi6Np39wE*^&Uj^(h1Ylz~64+CIln3@11Ay&pvVBMgc#HjC92W4V z?gx$WIQ{M!5lw-9Co*kTYfcqI@d`9EC`Y8M?&XxdqCb6%UElV}AeUBRV^_<45xycX z0Tea#S=rsvtT$w2ySrS?F*J;iU63VxmrRiCO(5B%(gN2ygX$3J><-#tEzCEyGWHmJ zk?Pjx5~(c^ZR1cDP*18!1F&&w525(8klGPww`X-ltY;Etd z33HF_Ud~Uc`A#L)7S!kXrxJImm(HKd1z^1$Y;1-5GfzhEzKZ6PC~OBo?%MQCX0uj}WPAL`Fz7SNqenUJ9 z?Tba(zHCtP^>^*r6K-MM@#(xRte_a{K<>x<1FuG z-|`vthLhTyrPe`i{aOAdHJO>`UPlKMCEC+WK_-P~5U!wr7S0ADRA?ZhY6(=-2TfoV z<$lQdK!o32m5jdDL770grmI?QdQrBMA#b}O+shE@`FKC|)6mnhd@l7ZlW!(VcVy!2 z!ucz-)x^>F;7F+=Q`@rpY^$(ABhYMOcPfr>ZBs|r*H#d z>#*1<*H*kQCEQa+x@iSqvb!FkqhLhw{>1OU*Bfr`7l1zix%uOU3`|<`kLZ3POGWJI^1;`)N82{(hohc*9(a$tG*>}ggQj!t zDR8ezo!iiJtkh_$A#+)S3^=&E)m8#F#)b41WnSxd%Lhg0+#m?jL;MS@p5}h_G#1p; z7}T@(<3T+a!faHR4&i;&syeUO-~Vrd>9nw}aKTpFlwa4yP1w;H8vj47E^HaA=xR0V z>uB4%HUo+_efgY0{t*|!fuUCGNg6@edaK}mK$>HEWbp&YqV%zT@fUQZXy>OuLwf-p zs`J~ttU7?dCWN1DEBqn8aVEkkQ}i|3Gy6qSO@`O`sf#xST|CjX`p^HSR=-;8|I_Je z_ChsV(CWB?R^icx{bll@Fzj2a?@0V-ir)AVy&O}}B+aF1*0B2E5OwscEQ*fs&%H{` zZL8|rT&$qESkT-Q*Bp9DGxXx-jY%G+hiNKAI$xjfmU(S|kIwmwHFYBPQAYD9`*E>p zD=P0l42s2i8wya<+KKhU3>Nq>6xHrKNBrXgDY`P>hZLB)tj88(^krNh8N)Pn zL3#A+IuEv~-Lp_Qfi0U##T%w$3OYd`GO^zh-AvA9?Gf0)0f) zh|5|r*}?eDgCnk5X0fVux4q2JeQ#(d&HCmf^_eGY%meL&%=&ZM2|p4UG?3uBw?=-O zb`oSV?Syaz1rq5P_D!8fpFJeV-c>BXyhgM8S-7rA?}9BNZ1p#YPXSLO-(Y^{pn6#H zE`X{$XwXWH5fqsPl~x*4qY?#);`OI+HDN*JrR!tz^_XDGHM|UPLlY!!@0+fvus`RX z_X7V%^P2ydgdyXzFoaXeiQtrCl83h;c@P!{jT?j|{O~gOxmS7Uuo4B8;`OI+8DWDE zAS^u?x&KAn`@lt6W&h(0e{@u6$iS$ypq&cK3JeQUYQ_c~YEUdITCHd^qs=x_NH(>= z0rP2`qP9<4Ykjh^&DwUicFi=~0z^S=6SeYRrK#D2qbq8qXvz2eKKFTsVHj)ow;x_V zUoy|Xd(S!d+;h)8_ug~Q?W{>dAV4x1sekqOk7|7sM_lE8%ki0S*mt-DmthUTg3BU6 z!*W7TVHTj!LW1767xCK3;*pSLlf`XF%YRaUqj+EeBp(XEk0hG!`H%NeW&x<%(Z@>` zn4x&B-#A~{#m#&PUAhP_(Op4Tx9Q8W*%xic`mXqRNQ&p}k`nWS;0BTDr@f{i)Zzgo z&E$LwUC%m+uMw|CCAFK8ivNW89R%s;&J9q`FQk?)`H%NH?v-%BpyqdwPnjfgA^({_ zL?j=!K%0K-ics<;8)`0ud}7qc@K^}CS$czPcMgUf459$*^&EycIiI|#V-oZ{dea3IL*oT{9H24)Xw%V! zPEYjazLLs510JBg(PLa8z9pR`s!G6~U!(dqaSWuGuGplQEA$JCer=x#U+9C_;_1N@9Y`ks^3x7p=Z^(_U%Ce$@8sVxX;YoVDad7@eV`{tjW{2P81`G=ECg?|j@L(?UMf2T3h+u%_CamuV(b|085G_w<{hJ$pq zX<%XTIR*=30(i4sKX^L1ZV;+%4GJBgefC_a5O$V@jivQz>JVS<)R#m9O~d768c2G}re#+xM$ycPghs=nwvr{6$nI{&{wR!yzP}(X9EN z|9D@Fd$WnZ#qTJn>L1N+R>sWCs?XJagz-?V@-o=LO`;`3)F;D+k>XO3h~Nk}CWOLl z1G!M>AVyFq`9L8*k}AIEKi<1>uPB7_;dh@i5%$k~nyW$WNS?{CpI4j2(Ln#HFO2ldz$YlfTwXi5eD$DCE>{}lNg3wi!Gkg|9|!9E zNV@r+|9D@EdzOKVV=M#rxpJ<-!36m>>{fs&DCY{g{bhDXzzw;%Qbv8lhU0QFxzX0@ zWpg?Q^v@Er>eb-Ci(_Zt(}1n{564wr6;*bC#)Yr}A|^^l+b&L~=l~CLc^687r0Weh zHrHgO{y+2Z03R;KayPOW+zeEK#%E-VIPCYhoRmfYKc@ean#dnFc{Liaf6)CK;0^SL z9rPHLuYXlv-RkQ&eC7J@-pI3Hj=5OLMg1Q#Y)TrziERBa;IYt)vqsha?(cqb{had? zOV#9;g+^Z0zGhSfjn6t>VSLIJyi)5n2-GLSK2L(NaiKN^&-p5b$cO?nP!V)uT>T4- zXOP^0OCUSnh*QJ}M$f7b&*4%VI9nD~HUtLX!;9*}0$j}YMfnj9_+^NW8ppBmAEHPYox#Dj|eF8uj@gx;dPyH3xgpPrt317Bt zelE;X9>Uat3z&E?)}H6d0<8xCxmHk#*YvnFw__YDz{WEV_^=co^0Ds;>E|+y{|=;| z#Oa0>)(vHXG_a);%3*Zxecyyl-!Ce$N_2p+U2dQQ)uofY4-?zSlBv@?9I*Irhui=P~ zJt>^EsUrYWHc=_i)@G&TcUB74Pv{fNy?NO}gRvw6{(^{F!Wi6u;9!i6Bk{q~>exMy zx&lkH2mAXo>ttCKyTUsHw|Nkrgnp(`wTOO#kQ)}PENlzLL-`^(0sy-$`5kLLXwcTo6E)vtx}D zfl|cHs~`>1^jUryqIGQaq-|qoQtov7M_U*lpn3X4_uzJJMTFODXS6YQTEn&Q_jdbl zfepCYoNMmFGGFd(&x%cSJ1&u#Ub})TA)DZrrf;Bg8pIdtFtI84iBHVSY>3#qCm50m6yu)wq}M!*QdgHs0=UOjKal zf@LXAK|#OC7>dhEsNiDu&n0^LKGo&G>}EPtFKV9Y%;l$Iqlvj-{mnOLIwDSw8~ek? zvg_#*Uqrv=8qDiROZUf3|8zLkSFTVm3f;>xQZwRvSudQ!HQiK4Wf@oc`hZtS$aa(Sb{>*QYx5;7cPiaFMUcI@GBzZAL=*t2?hg$;);)sO@z1Jzy zP2au&cpozGx`8(>qff86i?A+e1+bXtGvk0TJ}P#V;}py_5h>IYG<)0}B26=p!p&2V z^6Jg)+ldt1?L_LZ?Ld&22ux*UYwE8t52~}Sj$~8vC**@*Qml0cYg%(ByQN6 z#NC&;U#(CDKFz?*t2g)Y(}D#?^>*TR=*bHACB&^=t{9yS+?m~QTe{*-Rk&f96Zhk% z0QcaCxchhFhJ1D6&eor!yNN&UZ=V2nf`K~&xSic_M|Z`IPKo7)>=1W<;{NmWNacQ} zf3Vyb-&g|(n2B9u7$ zeLSah6LJ0=vExD7-|~J^`tiuG09pZ1{~FO9U{zP(c%Ch%l6b^oNx;FskaDX!od;V< z@rd}`D*v~b-PPA+Df&}Ee`{}AOJsw0qWCW5ph40Wd zc=hJqDOd-POR0dtD`o@|{53G<(hT;ca(-c3U(%mjh7XcRUn4K#?!1Z-eBggYnm|I9 zpiCI)8pSf8G$Xgtktt#M?|4Yqw}~udADj;McRXX|-JkmgZcsln`Y8VFMEMR}rplM% zZerihB0N6=GwhrA9;C~=CI|ajz+50OVX%vPz1s@ltEvGUaRn-*Kyv=nS&IHQ@kO^O zT#Ityvfx!Pt>-Gb7rdoh7W@g1Z4tT;KSjDn1nCaoSx)rZi5q>TRj9s=ka7%2=P5`< z>r6-v1?f3~bO^PnIPjziX)YnnP>_-c>A+CMO9N8t$0nrjHw#Ty3#3IsNLQGUE+M2$ z1!>I)Kzh}Hbg`o8$^K@oys034`XoztTM*Je@vP1(#Et$9oiO}ym4r0GfHY7+I`;vS zre7&YGXxT%w-}|HMo6sRU*m@3R|PAJuxtjbvlXn(H72Y93f5SG)qIKxYcyf;6veA> zqmL8U5HnJaKKtwah@bRx{SV{RN{nJLL@)sn;;hZ~iFum;{~Wd%so1K5&fWpf2#HW! zgqx7ARQbRBkqqnV!|lsG6~id3Z1v~G+aCMiZ@szx1hOuHezQNg(fV#qg);FrrQ*d} zywEQJ3u`eJ`Ao(l37dHFw#Pk~;my6?%o_K)WF4I@S<@j0&ob*q@xL(LyqB^=5dAg- z?Q1E!Cj9~2)#`y=`#V}k1q;FP=TSBO{E}8UoG(}wj6W-RrSk=^FtS-encJ34;iErp z_wwNi{_u;`{1-o0&M1v4vo=LdE4d>&&`Yi{E?SeQ5{^mk&u4lz2diNB*Q~LzuB}c~VG5mr37@u*`)j zb0RV)LO&vZipuXoME-#)zg^{bEVqZ?cbWNTgynar{Hbo=jAF^( z;jlgWDRN?g*p9LAG;9J97kaF=4m+_7?9UMh@(u&1=hct_49D;a)+k5d#aQpPd;Hg= zV!mBANVe+>WiJ7TJLVwcqHB@t0S7HrIKds6dJA?nmB2j5cH!+)5v&9N1DIyUP7=At zYN!hN;U88(D*is0eB@Vnn21+Q%u%E<4f{%#06s9dsEMRw`d8FPTKjtrywjhSmIbP< zdg~5j#)j>q_4rTkA5rc52zoTMZNSywg ze+Z7FV|`ht**?}X+?K6w|Ma6q`nEgLw-ogaCs0a+MMbB9Z=lETNLAlI@BEIyH3PWXeG$hUFci6l1U9E& zrF)rF;#eDM6oMj#X9^_=i%esm4{o4>aK-m?+pww1UE=-fYFvtCSl7u}f82G$P#5Q4 zr0U{)hz3ldTi2_OPU_;q^&xeE`Af~Wd&4Xj(geW z|Bb8f{prlhX?ra@{fp9!oLf#g!cl~KS!Tbwj#HD1(2}rNzwEUq+9xd>d+Y-|r39{U zFS~nBpI_JfnKsU1%6*T?kg7jEVX<0|9UN@YE>cg z!!{W$rC@};3x%QD?@)GaUHnrGCC9llrNuC(rT?`hxMV*fCS=Lp#hE)A;1(xt#udvZ zmwiAi@vopi8>OvIt;3of#W|-9OJ{BLo=8`rtv9*-NjaFnOl6@l1GKRW)zN}kXV}*q z|3Ib<4Duc0_;kU82{R4ocyP_lZY>^X`#O=40*OicL>8SlDZJ62!Z<9?b~7TI40|NH z3-Lv;&5Mx)ERTREr_DCIT|QF94~9@SAfz(a9XkVaTMlz@uJ*3ey9BWsjyh&O#5sv< zqp`}21t>&I!6t$oV1;Z~1DQ;fq92AuVvx7P(uF)Qh0f7L+bnUL@tDEj&4dDeINX*M z++Gjmk2cb*Y69NPmy?JO93-9GCTkGhXdu}RXxRVGk(pGRA-MYW zL@)9K>+gQbx);=_Lnu*)#_@fyPAcD*-9S;c>i;1<=g6MP-g^46ZR9Bi(kq4&CWu)mhX<;-4X)&n_rHMK9 zZ5*}zJWXJKcrRfS{W@dwN#tdx$P4Ae*dIP!$ww{eg?xw|4*B3!7WkeuZx%6yxaoY1 zUJlXFn=y5ZiQ2jO*h%bd&n~cyY(|cmbU3FYhWr-EZ;AX?V9SA{GT)zXrTy*3b%w~HZDu(+k z#yF%H9i{wcU?W&FwSjMBtlZdrBdv0i?i(2|H$&hBAvYPmkx6os`^_I_6Ri(F1MmMDzaLD@H9`dB>BiK%6(VJ}>GWWmhVM6= z8LKUPk#57WoNQiv$l?QuinN%JPEC%63e~K?`>DYgs$;ZAyldU1SX7z&LoDjMtdDI; z+;_Oce&f2iaa#LqqfsJjY$m*YRZ?TV36Da8A-g`uhJoFVWjyh7l4t<22> z2#c-yw-=DS#r6z-#85)k)#~?RYyM7bx*jorYk#s1m2<*YJwg({X-`LDmoE>01u%|p z#BlRg3>NRgnD0J}+sZNanuTuSYhN#jR9=+R(&W;1IIEhTz4Wn>F72!O=3XvsXZ`Aa znBK?JnloH!t(gr-a-_v++2l%V!+Xn7mxf#$>(@oQv<6q&+WIvKE)AjV)@N?YT+3J5 z>iRVUTxs>0Ycn@ljyn+s(6R!Ue52R~@?xEqRW5C_vuf3ot}7mJXVm$pKX9&)7}7o-PSGAZdHm)0&w z51L57a9Zkt$v28^J1^d8X>@7L&Z@>&x4qL!wvfGR45VNZ*t?!cn~C%jSK4MG-Qm&> zxU}Pf6k*g33({6sTDwBJ*QFg4q^%~>&z+V!VDgQk9?44tvt8KXSG8h7!%aD43z0S$ zNWml^T}`BQM7q(H)ok-Jz?ev41Onc9_(;-AUB-l<@%!UsS)C5*o82=o;x`m#u0Sy2Ct ze)6?XdtU#QhS4`70(}z|ec7b1BB=ky-MI!MpdKE4<&}le=ZHXGv7&DT>6;nUe|HZa zoYeFBuOf^-R|NVdDf%3suci`nPeBz})A!vAdR_(23?tDUfy5F;A|?d1nra~tZG&?) z*=c88(&JiCxDrOCCjymI6qRmLIajDOCU<_gZ%9Fp>q22n7?p()s4P`fdPwCwq0*QQ zIxQjlh91|5!k92B$48*DOi@`#Dmnii)QjV%^}Vad^`bB)jLM=2R8}Y|$CFA%?G0+j z<$Zq*>!ye2n}ji8R8EXQ)6Q-n?=q0bAU z#-vuwkg1qS>*2w&@FtAVNf8L80#bw)lh6f1s4-#vlK$b#J+3l^H(`X9L?DzpND(@T zgf0|94aIrgZ^8&IjX)?h zks@>o34K!tHPq)TYM3g@J~z1MS}^}G@#Z^8(j8G%shBSmNh30*3L8Wa6B!%q3O=k+Lg z)0NN{DoIqg8NHeXd@YlDGfC_FcnsQ|r3-$Y*z>BC>e5 z39M_=UJ$(Nq zB|Wcq$)PZEMZtFGE*qsHcLDB5?hagoWB-56exj`B^)5LSMy@E>?&PvjDsovKlDk{T zHT3TNcfMND^Llp&P==8!3bs4BR9lK%mWSl(xCZrZQbluh&+A=sD2!ZDu-(aJqg3Rw zJS2CYkZb5&Yjo4Rp4YqNP#C$QV7rscMybeUc}Q-XkZb7OV;vvV_Pl{h4uz2`3bs4B zY?O*zmWSkiE94q_H!!7eVbAMbawv>kQLx>~WusK&vOFaBsE}*u-6OBGf6()KmmCTs zw+^o&=-nNBEqa&bA-O-`8q~XoDjtB2=-H_Qdh3aYTMRth;J@aIftQeLH*D+8-6ut6rf>!m^#Hc7=FW+skzA^B&8x`-n3C?z7;B0pjob7HK zxbnpPz413T6+bsS@N;|d%7^d2_`?@&h-z$@6}7Ulp*-rJjScrjecIS?SJW4cyJn5r znabb2nT@;3M;*p}`KaTWZvVw^UWT0m-X;hA{;b5F`TfdUPk4q!t$g^A_$;ld@y;1- zd(YtSp?etlqzBnJ)a@URu{7;_=*bCA$jf7gNLl|PnlIwo`+LV@aCmi9c$F{kAi zkZtG-7cZ8e^$b^xC(F9>>uDQKtz!6gbL^uBGyr@Cz-nk)a<*O%l2t^;|rF{-cT$V#F%Q5ieMo392q{Nez zsyKrh0$HpfS5~U4&!)y*x7wOw;i<{j!Wbv`{^N<2k_;4~QbbS=fq)e*@M~9r?VqNk z?2KmWprm|~m-a~)Noj+0ghU)bK}p#G8ny=|r7=&0)s&P^C@C(>K}rh51j1rz7eP^Vu=k9ZiCO8Y27vic zzdoDt;Ix`4ElMg#RYjV}%^?vJrv;9RCRYv`V$vjHVqdJp6eT7?$}`=LsPxcW4SkmRZAGFlDFM@a^W2YcnEt+OY!?{;PPC>F z89Bxp+@)mXPk$E~(ZM#S_IX}fqj04Sf`pb_02y(Jj5xwo$;2#2AJq7bw#Ep$WEBw{ zilj^OY#*Bvvg7|mm$2#dkS_W3-_s@TU^D%1bxFtD|Gh5p^pGy`f;Q-qwurhU4|0MY z47#MayDljfT~c6M89|pwYif(AOK!ETGbQE!M3+qJL0$6MzoAP?f(`Y*)g_z%`rqo3 zDLtc0ZU#@zg3HvxgEEU5ZF-;X%8D{4aqD83wr4w%( zpwS|rme~=l%o@Sjh>k#%JS-RKb!m^#41rW$(`kdielYs-Ht0;atRFWXsZ*r~K0E+s z3o#(qE?^Lw1<$ZIkX|ef*d~Gk-6_os*bpQK3LC!%`@uXg3UCkwSO+7-K(RByFf|SV z1v@LE*a;LcN??hI?EqUtnGdu(XjYlVLs!cIHh_Uc>;sq<1`c*l(qA3~4ir^zd=+h2 z8iL~^*b*=Z&?~^KFsy>3-3$Yx^EWL6^ymh{&?d_giA8g0fGQ9ezyc{N0@$1ywlSc$DKq5Ni-kM7zi0(y6L>JTNd26q65^!jZmkyJf$?T9u^1SwG?3q)%a zrht^_pz77pYZC<|3%`d@F~T(71H~rAvpZ>X8GZY~0g7dO7fl-g9Y4zej-lph#ITzu z%Z$F7{V~9qU3Fft45~vG*#a=imY7n92Po0vyJ(|h7Yv`1NwgZVZ-VgA3BxQwKg^NI z$`g-#i@zVyfH=yq&HfM@^+N|FwEiu z{wy4Y;Lma!!Y14{(4B)lLjrSijEo@utHwAnE3pq{4x@vfYmG^L*gAW(HKz1@YaEEa zT8eS<*7#qxzzp=gQWrhg0<+MuN-27(1!nhj3mk#&P`LDyEil;fzKGEBI0pYOTi>I5 z4s>)(En0c({tNJTeD9UvO^M_yx-zK*z1We8o4=H)aTg z&b{FJ>j1)?^j3*r5co%ExPfl>D*nKEFadxA+tR0C|D>Nk*bs|J42gU<5t}=;SYzuv zUL|6CZc1O>GU6NaK%>7j1h-HUb1Dw^nk9j?RE`7<56WhI&m;-%)E zcZw^DM|?)8R{TE!&6RK4p8{IR_uS$T4>W z&P-Vq*o>#Ch@OD6_<}icE{%3j?GGQ0Vl(`}-|M;;AMs`M;eY5}{@%gxO&@VbZ7Lqs zj@rc%d3j$k#SJ@Zi+IJ3TDf9Na*4cu-d-x#dG-pqA|UE21l2)UIqa`hpAJjJN(2a9 ztny&~k7+%=gvIGNhu)X`s$2&B1($pY3_BQ@5y&(D$Tl8K@AU4n6j-+65NS`&+F5Z3 zF^nVhP$LzTs}gQ7=bl}hG|%XoIazFI{Al7weUyabc4~FphR=L?)pcdV5Uw~K*bDsb z4&boOe!&WWhym*#hoj5Q7_kLuYY;1cj6XKf_2gV(yjBTw2ckKZ2S$=OgAo4Fxy6VFF) zCM56)(LQ$w^7Z;zmnrTbDw1(RCMtszFdQv0d$2E@`52x<(HQ8PuWifRAo5kc!B%ZY zbHNdTTh2#i4c_L-*S@@`xZ z%K#yYry>qYe#aUkO0d(r({i1EU|$@HMh#euC-5r$s=k2NdfOELbddDGe_hpco3Kri> z?S}~NT;gCom_?!V3LM`g9>8s218+#C5@`}nF|NlItnF_{tJido@8T%jfiT+>(!YVy zHl)ZOyoq3#o$)COat_!YbwZw4^v!sQa_0{|l3(9(H5mm`m5p-g4{q`o$_ z&PEUo=o>j6s$Fkp$OoM7ak>h%gT7WU9YvnjA_=#l!ZWkxOA)fo_UHtTV+?^d&Y0SD zR4J`=pyK)73y_<&T*s>~`J+q(n0$}b(@~CqoJj~9^_hG9PR9Ch*YC~6o2j^usm0L~ z^#MdtW&-qy&=7m?<>41R&|Bhv4By5+lP3%sqVConO2uEgH}}Q&sW=dtW@JjBzsG-l z3Zk(=H1+g%*yZ7DpSV$=Le8|~(N|b&0y&*gwiT`Vm8YXc;gpB!Kgm}HAL_!9Q3!vb zluro~Q23+|L)A$423e5qud1;apRuH6s3dT!R#-7l&SxX_iOkRQkT&oJYPggJL@^h- z$a^^~wne`Xr$uq~Nm8RV5DI&NXBA^FN)xp-L@vn}Y`(urc<{X@z%CJbV zP|9cqs`&Bxx??a*04hcB8%MgMwZPQEfj9ymwv4_=l5GJ!nRWV%fedL=ZO=CHP@IER z;hUPs2AjceV9X+XQ>-Eeo5ZIXF8Sr0Z=8P}7=eV(O9s7)v4FuAfv6QigMa)UD->tg zAP$G1ORR1E6FV0M)K%~Fdl$pRenxtn#YXeL305K^p!584w>Byj(sxNJ6{&GXy+0P` zq{W`@HcZ!IMAM!+3thR0w`XtzkFCA<_4|O9@2)Z^Vbet^N#tJTwVf^|k6&Um;gHD0L}rmjV&vdcTQ# z96Ly};SRaoj1z2){LN@Hy00^_w4WJxuI(IMQ0!9lQMK$H%^?PRmXy~1kh^Zf3pIYZ z2evO77lVKL*FBf2PX(0)dl~MF#NQC6NC0IPpCnN9#H`34@4or{*^0qV5JCcwI~KT zV;J^*FLwtH4p`xa4f!~Ac|JO{!E0eIqW5&6yFlFhImyz6nuig@PZ;AH->i@Ed72UJ zl3Jo>^}`+>P(YOcDTAqxQ;Yq%*?Bia$!UQ4<;gUL3;>W*62fi}J)WUsHJ;69 zzdGn6c$)m>y}t$1l&MFGi_nrYw}H|@6A)D_`xAD761a4+(NnC);1L4E_@X2US!tUv zYaz0_*MG&XnCciXo}0uDb*+AIV}QYbIVAw<{mE zgR}FrdS{&;ixVB{JpSZ4vt3c6@fry>O-pmljm`G>M_ZiUuWWc5e=6n)rY{wvWxf7A zl>{ONLe&N2b~_AW8`}?n+a71EIYHp8I$DYH%<6^qWeH589P*j`NhRM=57Lc7E*Hpq zv;he5S_1B$N=1ON5xFB@!5!%bP=4mZ2r(bLMV$&Pl(`ab85$UkQ*qnrJ^G7BT=-2b zKNB`Zxz#C_Sl~ho8!?RB=(IiE5Ez8-=a!9B=NmGIt>$3>LVAAALu}Xc1EqLB;*tJ& z{=!e4-eZ;rlkhxz)+vD^T(2tYh2M$g9=HE?@NVn0OpyO!G(q@>?JI)7e6xW9qo|jd z!g3xH6Y#)V6tT(m?9qve_-B7;{WE)0|Lv9_EU=2O77*6_pMwPk0LDGiO+$cqI4))A zEx=&^wk;(@jG|Zxw5}jV{hc>JjEJh67=3dp#OMLBVK75fuOInqgg$Jx#`@~ohmC>t z+SzyTj`7u6)Z_)vxQ6m3VVt~Bt;4uNK$h~o4K0|K(Dkr-A`gQ5X&eqx!lOAnHl8k(>YDT11CuJIt6 zkb>s%J=-jo1)Jrvs0Ek&j+F&D`=(9DfXJf-JlaCaJP{X=#Y`0v~7%^f5dGB_Zr1mv;WlwF(0`Um3cgdMiTYUu==wo_wx&ywN(n#2IC z|G36SuYx)ZxczD@r+<=7HEh;`Ns>a{l`eKm3jhlO+Hos1Th3wuUEZg__lpAG1ZyDP zN!Ph3=W_nqYNkOlO#mEcE1>qkc@hf41MRvp&~IB2makJIE)FBm_PUu%LqbXJf^M2WS)pVyIJzaw_6HnF!A72g}@p9qp(V>Ns4K$1*z;V7P! zEcdA>fk!)lcdgqod4NI`N+BxTsuV>ig$*^re)6cuxKWant|h_A)35%8+``B&?BwZ7 zUJH|Hlxr)x(EqSpg%Qd%RH2Met{iaEC|7S)t`b$QVpXnE*3PW3GP(ZQrFKfax$FOI zmZ?}y(=ImJ=`a7-y-dCS^D>o0DAR2UWrQ-_1x6ZWx{P|*x2O{JqKXBb2cfH+ix)WG zmvzQ(Vdb0jQE2&|U}A6Xzuq*9SRqBMFp4<+)$T?7#V`NUY7-J8l(Ir$l~SgJN~9Ve zfxSja^Epf6D@j$wOi{I$&f0r8taNkMhL&zD<|0lD7A+-k8p5ilsG{Ngi-q0GHu{$T zv}`4*5eoL=pM;$es_&0rs8OggOkbc-*{V<(s!)zdBKh{3E`@S!6nWn*5_z#;|c7!smedA)YOQ5; zXaS#KQg7}r1tCVJj}i#_asTgmqe_bL;kK8%m-W$`|I@Mxtr3d*`RgYu?k@1yDDK;w zuY;Lsr5%x|Yn7lVX!x|AiLYI4p3o=SKbw{PvnLwGs@lgsh4#+^UNLx;E9{>|uqS9B z*WpTgb~CP6f2#Su>|zeybb0->eMd+#TFSM2kB<9UT=Oz_D?>c#q90XP(0q(`}kvcRC2@m?A3bF4Ca`u-0gM}~T(2#4ID0yM4I_=IN z7F3Wb8U~~?;J3}2E~8K!d5&jV|16wYC=QL5%6lA*&Z|G}@<*;hG7PJ?=xbL&NPwu6 zg(ELu2g*cgNxruZ!$i)ObzmHcp*hwcs|7#y$t{1@1enc-z!uk`qi+8Q z9L4yE?#(^^N0y{FNI0ZpS;qe&NpGRCyny^NWF+4|1IIRYtwu)BM{S#R3`?XSCon7N zI^T%xV|__m@^g-rHRJrB?_m!?woI0`M!`s9jYolMj{mH3oo7s^ng@9`&xFmSuMe$QFGHqPp`>9>nTc%OMvp-211qy0-?j_%)V3dGHg8#JfW z<%)R>xh5p_72L^k88iTwZn#5GeM>tHp{NZUH;3V{8aNUS9NaU4rML`LzD!lVq5o<5 z9_fm7r>u0SHqL@E@-qwOFp#OLQpJ} zZ(K#;dyj@^<9nTul3dq|Bn+yTOTrtt{1gdA1_^GzTH%oy)_izSyv-FaP*O@tY}Jq9 zw+l5T1~vTt6V&uqoH$J`2|q-lCRhvTe>>afhqNTYn{I@qkT9@g0TE-`XOR%FSf(H` zv3DMIbqQF34lJE2tB~yJ!1{$s0)33W3`Zu}{Fm_yYye3CC0Z)a#`G$bB$XJ8Mrdvy zI+l6%xwtjE^ICN;-T4A0@yGpeH#&^d8_`DrTru8xbM*zY(IwzWZ zVdXvZ+D>((1kT}{B&G<61i+q{j;W3}($!1>fpOx|&8zCb9K1yb7EjoueR6HUPUX#e zvkSZSc~G?SL-z9G(I9Zpd%2s?dm$Z`Xc)q zsExOf1KrtDTvq6N9z+kDhE^&1Jq2B@((gBN9kptoun+oOp*F6NEb0c~3{Hrby2RqX z)TKG~PnV(0j@BE11P2eT&fLJtNFip_M3h{ONn|jFg?4KLJ39b2kDzGT&Zz`4B_Eiv<=ij$AK~IT@wwQ8N4DHX~7JHOtTN$@dubA+D5(T z12P+~DOjMAH3*g3JZ8XzVywDhieEu7kkVtJeyl$!-!phke*MlEcYQmKi&!(pACKVt z>$x=Ok9$xsZKaol_L=TBBt#ekMjT~1(IvAC`bBb{vcdDJMpgw()OyU-)o~TkzmO$? ztXk!&Xkkeeca={Cxt)&h9-qaW(zhi#Wm&_4*SMD^P$)@^DSuQizr~h2^S#;8<-_y6 z71p@PwdF%`lNeimQGw5asivbbw(8$dT>S3iHqLLu`>B_0&IG)|$5U<9#vw|tVoqPa z>&xp@+e!s+Z|=Mof^91sFO0S&L>X<1M0IIflFlD@SsB{anDbQIA~3cs;hbt)QG8_@ zhvckkS-dk_R@<{^S@*slY*~cj@yAZMw#n7dhWjYq9F-gYhz4aJZhM{t_r6whHPAl1 z?|&$RCik~(apRv{P+IFR@Bvh z&mZ^FM}hD=r`&ia!_<56GDGWg?0A|K~3Q?V*}LtntNBCkHL3!pFNv-AYyxrnQkiGd^$ z=;T~Hs`{Owpnbcx6Iy}^P5MUzAWF#k4+5;{O4&W6>{115Q3$NL7Ney4p#iFh3eYt{ zKz+IbI<^~t_B<^`ygdZas34%%4M6ci(Xl_6MI4pmk|N6axc=lT@W}H)6{w^TP<>2L zEZ+nJn&SMML1>caVt@u-hgu$tF&@~Sb)EMNaF<-0Qo=nfPpqzbQR`FbfpkAwi4 z9R##GSuqNJVBq+fK|srnDnLg0-oPWuxBPd)s;m%D*g~zOLF_{VT3>Q@{!$Dv-WMeq(!+3luCssX5Kmj! zFKFMANrO+aIXDsZ(wTOnkrwY@JB?Dp1caMNV~#`zKBe54b|hr+AbALY5m!gC@iziB0Y(X**_4){-BfRY(L zIp`b~;3IjV=2nz*nPcu^wWfp<)H0a67Bd+B*}&uHYTjVoL*WvTEO&`v zMyRJ^nTQW>84snEn5>B^n*zvVUb!0QgTJSAX*N!A=D$^rL>@d%^#_Quv@?-jPt8K# zgj%HbCuF(Qlv=i1vtj<@88!pX?^^@6Vm1|m#&tz~47@YwN}LZ|J72z9+SfAVkBkUY zIGl;mu=G)80(4sgec)Sa)nn)agXW}W83xUZS3DdJ$cz3M!k^{qzUin&J0B_#VE)j3 z8;5k?!OW05hraA_LaGmpMbE`}CtYJ9pEa>{bV*5(h{^{_%7p zk9#o`(e*&YujwGzz~ZrIC{aTnSSj3#?!ep$6lw)PuG*D7_E#wnvj>mxujIv5`1law|l>9HZt+wxe$GCA~gY&1bz%v zf+cbs)TO^S<^ZVSH*aI&3ccUGZ~$8EK{^~?>%d&@5PSJ1w%x#b6K3dD?SB|WVfF6A zdcqV=Md2sdVyD*nb zg8dSBQAmhI5SGJzq^-_eNLhr;=}&F=ro)g1HNV&a+la;WHdd@ysf5^?T7h{~zj? zOSxTr(Da!4Z#ulW&p$;)LBFyUR^zPj_i&@1=R*PfaVK7YK6>sQY6ypw{WUoA@VD%y z;cZwP%=?I$_d(`ueGDFXuH8pueCPHak1J2E%ARu99ru!PA^%&&-WeU1L@sAmmSbmQFP7<_OUD*JU zYul3iROZRZzBbkNG~919SF8Oq>NHjn0at(oS0S z*>jmu+SRy3@hxi6KTe>I<2!FXGC*xLiwB54OcJx)UYrNpNdfG`yF>8@o(M&b`&xMF z?_g7*3E;LhEB$0!YaZFE^uybVzu?^zwsZb~Ms>dO@mO%sdpxlmC)!Epmcp~^Fo27- zv;6Z>U^T!&b*hayT!~mg$1v8gdgV(*vrV!snP^XP*Y8TfHYj^Cj*v@q_u0t%0l2ps z_ow6Peh&mib#y==@!(4sfD&ZZg`w%>f@ov?$;qLdARALK|9w_ig@o}(m7fj~sG|~= zznJAOrnOSZx0vmbjwB~RgW%e#ALYxOglasLJuK@#bjVGZiDwqK7!_243KBs?HP?!I z%MMX^g%mBQF}iG1!$D_p=NH(`x^ZOU^yE!4r)G?A=mS(nF(Ou)-6cvv_vCL;N11sL3qF%u`sDcGQd8P$o{*5!%edF60yy3Bb1C~=jTGKA#vR5L(#)9%ly5~GrT7Q2UXwq-12-^;Z$Dk{ zYsTUOz4+<_sY*XqVeJ7%ZA}hyz_-ipK^N}v4|*ksGc4HuaRxn$&MZKO9q6BzxgihE zUVYV7>=W3^)lZ?|Tr+BuD=l=`{FCq?$0y&*o6I_yoPvAhO#7tF@109+cq#gYcsY@Q ziOy>K%Xq6>_Xj$b$?OB|(=XvG_rEEouN+s&1Pz*uoA%70xI-AQzOxszE;EF{0G^7;LACepJZCa4z$^0Zt1Ar}o2mt(X(MhhT z?^E1-q$wU2a=F% zW8OU*{vgQr#>3@yYu-KE)MFriw141y=lWfFgSUdJ21S(uYSu}M?!2Y9kiRb_xx3FxeONCj*30MsThq9z9l-Qd_nqb7rB`x9+} zfz}PQbAXnfmaI}q&H6;f;T@I7P>Zw)4ZLQxp%!=L-LqRg?n5ow7dqGP&Ktao1Sv`; zgiu2L#Pa7xpr-nAsy7Gp?;jN-NYS_BPexG~A%^_825$|DkA%ADSTPd9EG!rrl;t1? z5`j~{4){cbfv?)cr?_v_TZAh6Y#4H$ik!$awreJ%$~@YJ{QAA{+(ngP|M{e;_ZcD| zT4#zy=W-FosI1zP@n;e+3V-Im+9@cX+@Sb_6R*Q+3@A}$)u^(tmiCiXhW4dMs)_C- zi4;YWpAA{yK|%;MqfSaq7!8qHd!HaiRb7!yU>m#=`l6-O3MrKD|;opRi z{7)l)XhTE!SylIfog1L6R8{R|^J)nCCrJAm!!Amy?Bvw`?J`ii|CLT^&ks_oRHf(z z)YH_N2EPA5Ij&$+{}}=@Nx+m40$v?wvMYpuFx)|HxWQ;i)5Zahw4$K?x~O|oS~-;L zb)hdk{<6`Y6b@-a>_K2mvzziZ7Oz-F!%Y7h+{V=1BJ)n{5A#8PGI;l>c}M%uyw@KH z-ra59;rj&hULO~{8*Sd<`*7UXh7Dz8VoB_GdfI2`@7~g_2kx}t>6V_+T83%hu9mTS zqJ8+RvJbbT6T$qg&Z@#h?G9f3#ufIVvK!wIIs|dllexjU47O&6^F96stQ`$`+LkLv|OjQ5#xvLP^b*JG0SeeF21& zRkxo6me33+WwA@xg}JaF#(oX$Sm8o0;Iny4p_iQ5>&r1f zyD1uLt<#)nQdmEwDS+0B!VLR310vSvr2uA$mjEDs0b91PC|dyNIA<#ZIv9whlbc*u zp1AT#XeYow4e(vsXMqQ*H#~TU$A6oJ?Xv()*8>W1wk3pSTZq~5E8s%?&0nD8D=!o! zcKs-Elra}mm$EphlR8|*WUR%F#}98bUXj3j zWOmomI!85~t3>eow?onCz^lS@iA(kN@Hy3S=iz(uL&uO{8{IC+nel z$od;D1?wMwk<2JVeRlGH6usn&@nVvFvcW#)@Rzjc zo}cH*)uiR2|NTGU3F<`gAi31QdzzZR0w-+VCd@BKu9bgW3<{3E5P^c9Wkl-(fQt2F zj2T}%G81FQty0myw6HfjuWN616VW^gG^+P9+ZaXtJPsPq<-9L!liyr493#d)<^4Qx zj=_i#`XQb}#?^s1xgcc2X$6q6tHrdWV<^TDvfU4jj}0AjBapRkh5+5UKu3!oyKy8L z#7SHzAZvyAp{(uGw0&&{;SMH5_J!!`#V+{Q?d~uZGqO#TY1`v&QH~Oc%>fN@QTcDg< zr_;%;>(DK{AG!aApY2CJf^SP`KcdEWt7%_&_ko*JxZcJe)J+NDBLG6e{oheOMl%s= zD6C|aWF5di?6$$2^3TKswVLt|^v&Fm`F#M9E;7HT2w=2W z#+8J4xSi)G5@#x=TJ#H%%h=zD_&iDsFsDn$UV6RA!pk`{Hc54d)i(P$?pWLD`LVPR?OYY-1T#yd#+t-mq=?tO&yj8x$lD(C;4lhghHZ_8 zLaw8eeO!#B!&dq&dXXe0tGTsari^Z?9yj5RE1S?JwJ#`_^w~W38hvmNLkUs6anA zV&uSgB?qoAGSdbMO2D^L3F2{bF`pmq0DL?3cos_LW03F}p%Q zQSSP$Qq*MidUyRE%u|1y->1#JjGs6+=IH~q)@r9wb2kLFGcV9mNBk@n++?${wF zaNalNvpvyP{S`pj9vANdsFbL>fb%kjfeiY%2#tyzWHkPD496@3FDtsZW)}ei@P0LSXu9i>qb!uS(HMxeBeO- zZ^H5G)4Ss@?~Xr$s?#4I(@m753AVm-GAV{sp`=6LXn{ZK7j`;mx5@L{pwp0PTbJft2M8?8EOF_+H-oJwgoh7Vy|VR<$58)n|@_8yZ|M>e{T zY;iXs5+752<4)V;PCM*LYjXEF&R8#;iZ{>znt$w$BQO;8JWLRWd9X+tN&CV*e< zW(kYfZjSmkV=Z4l?RPM8-<8kn7()aK2vtx#xxT?V*{O|BIbnOZFgo8`*9pke4bT$= zwB{)V2%k?1D3*YX_T4n?GLm&|H)u{kgZvuc@cpFVdUc`8-3`)_G|)BF0EEvc1!V04 z2!pgRPW^>|TAx$}#OIR&>Z=OqfVJKKJZv*;p1s&82^jM+%-e^L92+-SS!Sg>iS3$qZgl>=>xHxE^koq@4Q;_=K;{n_W zr@og^Kc5ZRpdRp(zxYwu@+B_97L)oA_@IA;z&Gf(8}QHRO21X;Ux&WYr2h=iKTE-X z7#CQ-Qc;@>mVbhx28pJsAkk+kpsNk0^u_+o)n!vSQcP9y=#N{o29Dk}PbsUWpWsWl z9RAMmiBYS$Fz>v%*WAwzs~^pF%c6Y|8$dc50HT&^ zN3ly`b>|BM`Aq2-3y9p>6?v~tP{SDpL7qETZ~RNSG*3 zHlutV10Cdz=w5y|99`dVbRmNCS9-Ac2bG)zSDk(e{m!%&y%(+s{UiK`zZhgnKa4A0 z=>d6e(RUfo+l=oUjpwz-_Z7zb<#I**TU=`+4Gm=;TF<%$XlT=fsc3N{X?>7ec_RK( z`Z*2kfPO}=J_R-e`ge3&L=+5mgw7Rtu zP^!Vn1w;P5s!RlKXQIKScpICw63dh~tq1pF5)vKM(?el9W)!D_ERTbIcTo z5ghO=(@N3IZWsKB2aobI4D!K41rBw+2%BN<>_g&1JeBrsqx z9k6PoJ(?+pn%vChjqTlQQznC?p}0A7@{#(eO56Xq>{;?u-`Wr1r1W}8pZ ze9AGOEPT4sc&d!z({SS{Rh~u|PjD2&w_H9M@UJ4b;nqpVP@pT~?9OfGs9cdxX#j7z zBLpeHnVEKsPnSEC;6dZ?3!tQPNSD$2vKR)OadW`LS4$kvP|m9MIoJznZyK@0)K%u_ zxPs>Pzi%IpYd871i!A~2Q(2LXVOl&u*_IUAvo}5nFT><-zgPV`F0BuPtJ4zk@_>5T zhD%_|Do1uynx5C;S7&w1&E#8z5!o%5tGb)eAmiNMKYT%SgI8FA(?YXt| zC&whaJEt(C+zvgJ!79Tfgxl`ysCUhEvlE@G&}c*>^Q3js*QQG;tL;Ug6s4PKA42Du z>|g^C{l^w(w2vD04BQ{-125@4$q2%w5K@HfojSLP~ zHIm^H+LN@b8l7$77=MWE)X^i{{;_EAoW!F^v@V3WYL*n$6r}GUl^f~PM#9xl@~bd- zW{nA)AcSu9_qLH=NmWWF^1LRV$2D1=fx2b8_Xev4vT#iP#7)xp9g^xP%`LgAVlXlDATs;ze^76 z7BIE)o;qmdm*zq%L+50JQ!jiCOmHJFg38W+2^-obVXDFH!>3X!h6?^cGvVE}jNVfE z-UiO4iT5U>YF~NRY;;oSBzj|e-p9AHRz-O+pw!v&4Mw7%9-9(41I+;{?kHLUsm#Fq z#`4>c1+#MgxCgGHiE*6z+^DdQkzo~uA{v40%_>EY3{gnbpB_%kc;YHoV(Us%lBgfk zgZl9nSV7Q_MWQ+0RNI*S>MAXym>(e6lW^_UzVg@+p?y+Xu+}R=@x?)^#e^?$3FJRW zow!ZC`J8XA5HW#VbW?AIsO1LN+(Op!>ng_^%%PTnM7_ygV6+-;8>eD(gtWBx#3{0y zDswIc-AIh7QvJ^JpuahPv&~i`JI*mjDxiGVVuC-~<9B2D#_{dyS%Xl5EFmI!7%uQ& z#7a><7n?TA_^sLIJyS*~g&1LBI24VCQMPvnMqx0q0^$L0NAaD!AJ}UP{NpgiuznVn zAriJ@LJxz&9k^h%ra)U0$Uyvao0q{M^ZiaNFk}3P^C1@Ed9>|ay9EFnt(hF11oczR zYFqU}l*$8ENcV-l5#~_bFFv4!i}-;x%C<<6k|)H!7_=>*ayeLd?pG90#7dcGc_lasrnaJ%(xZ9X?hqkRMkk4TH(>I$3EeaoR9Ac zETrl>#G4RR2QgFPCc8X>y+FW_GK`3yw-dzuUIauNYQ>V%6-$zy4rj@nJARHOaT6l2B%~C|Cz5>y?aFtr?9L0S8t9vODkgwGZrb~x z?2@jO-TAv9Wk|}(+E*N;Oc^numBlyuy}$fv%3drEt))Q`DEq0}xg(exeW3L4q1@IV zhknDUB>Eh=!T?764&3Sw;-{8fTp~%dUO^JnL+cFq4@VpssF$jL+lA^y{|1T0bSe9{ z3@RD6PgBv9?U$~g9GAd#qG+b7H`Dkgr;DOF*R-Q-ODgOgO^&%0R5K%0`fHfJ4;L6! z|5LM}9BPZ^kg|rf!-2$3HH-B>o|uyJ@vI7)Hw#qasF9(FkyiCh9fV8tOGkNT0Vavh zzt*4C3yX@FLOM7Lrwb$>+DD3W5A%X07e;J96u{)>O_o4{yQ+ivu~>x}Dv2(81#+Yc zg}G_G1asj0ljPqkP|t>fGTSHh+fcR$|5VKC9Grzx47*#UFTn*dI<-SGRbBJFt>$GQ z4M~`Al_VT?wIt*$*C7mSFe7renhe3D7soJ5mqB!=Rds1pW1k3$E;=-dZsu(iUFqyN zstFmxr0Yv=hD1nHnRkU6u^5ci3ZXDM%@Ol$nVK0S^5I1OeWgM^Ky0O2+ocF;Cz2zpelz+Uu zYbo3G@o2VaA?Tp>*2~yD*i}QmTaTZ7Zy;L;`|l!j=4yO1jTK$BFC85a$2Y0GqW@Oc z_w5;YKDm8d12rEU-&FSnsL9@?BXB`n&mYKGwBHOG2y6+)YKLJ~efA3?dS8MYxwSo= zI8daZ=FYrb!Iy+0k%;<)CKHn66f+4L%tcH`ibKBdgxXa@6r)g8jVvpS@p(d;?cFEE z*0qdFU*)7F>x8y2p!ijcsZQEd`|hOgNm^R4U(9|)xE4eZ*T0qRbvDJJ@M*9lE;S6XU2>5Sf z-8mIjWK6=BC|n2f%4VFfKqp1XFX0k^hru!1>=pRLDe6a6Ftv5=!B~-QzuKL)4vr63 zamOW0tu=C}z z$|X1oU`4d+8%4Ra>pomVR$5j6*^AB0+gM3Ste_-Turarwv>;1G=a!oV<{L6X-qhg+ z#w+$3`{QbR4@ao;WsDD??|v}QVcbi}9P$gtZd6c_{FYFgIjBF~>@5m;S7LkjY5P2Y ztl!xW)9uyvr*ZG>(_&llwEaokGQhd*J-s&!{KPjsg5 z6Po_<&h%UuCmc!tn32A!IjRzi+94RY{U}dsc6wK%syZ_;SUm~yHYWyCgM2ztaKY=B zFg!i>iJVZ&!Yi4clnFIXL}B=U1EMIg*wEw-tno}cmkdZpoB5D|J>aG0>?P}eU?e?I zkqHx5W%exJO#2A8mX)H-OtBg)gcF;vFt`;EY*oP%C@gMHJ1hW9J{0kRwa14NKGflX z&9nkdsZ!S0q$-LCu^8)*7gJ@)Xqk?5Ai21;$s8S;`{VAVx(>I$WPdsAFWc-ae6~G0 zfQdktj6%B1AtAuE1FDR}u6U>~S*h79WW6t`ZA)%WsXP`lJqysvldwJnqh{FOcFW-C z@3;hR!PoKvd`QKId(?+t)-rQeaJ`kQW>G3mcu zr#k-zHF%f$*4|V;!sz^$lF=9|?U3r3C&BFK_1H!POA5(&8LAHj2^i>JhD+eg%42b2 zL|?34Uc#3lWA7~jQ-#x<+*B=r6bD1fFhdlaI5a99ACXwk;tDL7I>b;2GZ`lvhvt9? z2G`el4Z1dM&HTPKfLtE%VS%73!*skqZtP!Sg!P@SY`s(X!JlA_4;o=5$_Q(|ft4i# zT9r9;jKnwk=mPdJ9GMNeSdGktNmY$?_=+ZCj%~WWH4Y>~vnitgC`|Pvtd;GO1U@D*c=&O(WkQtS4vh{opGEz>*@TevQp?hdUMEaKazau!PP8gwZ93aCj3 z9iJ=E1d!X~Q($Gzf&gPq2nHf>n4ljg=+zJW+n`OL%3mCw7A|c(;EwSpon?$qIAP*l z0I{ZA6p9n?cId|QfJoY}J^|S1A&&6+ia;LQM~=1r8oA^&n2m0=3H4#F;|I30p$*%| z3&&J&%G}cW3>fLoS!a9nDdF%M_u%$?Z8cq-lywBZ;@*f97Cr4|#)hGWC;Kaz3)g4m zigh55*0MYr4>$!*MQD3C3jA1BN`4p~cAyN0#;CkFmw|PxvTvD;xgdC&oH-d{-U2dU zBYe;O;j3*mdx!vj#+&ilwq$HdWqZu@p_T2T3&&Cy{t=}?+k6d|!1efAJ_-|s5V2vm zst>pELrx{U7NI@IQWK6>A8zD_)XH{If@7%!&r%--@`EVB)tRdy0jJWDy`wA<({8Aw zQ>g@3bNs_q8Mk&b6ycOYwynOL&Frh{=eXO{hK8yMwxTv;hM;RJY8K5Ho))## zuD76BV!)s#y{WQNrMBit&@!s53_R;=&Q}UCg&%!JBDAY?c~*&9zcv>fmHopWzN;l( zS&?Fyddn(DO0Q6BJ7>+*N$hhoJbuTS?!lmHQ}A3XY&{-$O6F>=q29d>^2+&Hw=bGe zirqK^v8%fm2KGBY7eU;Gi}V)CF*j9=W&LZofT5@y?j1W%b->ov!U(QtivH~^TbO?< zoJ7eJ(I7$1`MkXnMXg5rhi8JSKlr1ZEv!*Z{jn%KNXwS`WAi>2HSV#y%|`zEk5|IJ zyH7Q8Y6pB1w+JSSIe{0CMVl~0|ET=en)&Zx{)JugUmKd=_gJhHXGJXMM}R+-=sh2z z`=VKNA+z5V%npOZK|axg9>^N%;!&)}jb^1jue@#{oUA3pyYLTt^ZXm&UsOlEP|5Q8Iw^oKut15%+=@&- zV1kA27#aE}zc8ePrNQ8jzERNV&;d*W`z@n&eW%sdIiaTH=RukVVe9L#6_xiqaDsl1 zy`(xyO_1yVkG6M#ud+D)xRa1TMB)h+G+wAtqm4HV)=Pqg;nZlU#bPUMwY9BUv{X^3hKq`Kz!p(j#Y^>xp^A9p(wg`Cn|+>h2?6Z; zd0#)0JhoO}8I4YZacThu6s^hbiJ(4?gU5QVQxd6GJ(rw zaO=Bgb$Mt!$n5**t)=f>L#mUBsE|zzk&yV585B#%gz4Y0pQ!jv<7&cek9I; z{i@)beN|ER^l!7dI`P5>9;ERq-Eit6sLTh@IGR-^#8g zQpu>jR`V4T8wk9{SNoE~m;6zC5v%dreeBEQ?#sk)^%=F-E7}?87!|wIhJ%7DtPw}} zb~?P5PI_{^NL<;WL@kEE>j)dEJ%-DSIDUh_V^AN>RfCP1-6Euh3iC?`k;P!_DwAt) zcmLnQ-A`TNxSKQU)L8KNeM#;vbKKo>#?8)JXW_QenY+p>t$`O4L*6LXiM+(UR37##r<+vy%Xjpwyzg!*|DzmD5<@QDMdfLA9ZFr?KQPs` z6#Y|`{qydgmEBp}qoqmzo+|0zr@Hz+J*@Y}+U5k6LfD7yp>0$B>U^;=@aH|NJGy6e zN&lWI@8yx!w%NO=E8>>Zs%sQ=`Sb4&GUQalojogjEWF$HO>lJ%>a|YoKaK(?c256H z>OH7Gzt^98?Db~+JN0yjJ+1bB?B05}=w&m1+#J`NSo3lY0kF)Ry-Bpr8h=~B$*=u( zCBL@GCFj*}#f}>rL$|yOLveh*oKe#Jb_e}!_V=~XVY-CjNYr)4?^wp~D>txnF?hz` zO@7T(68nNO=!y!Acdpsrx2wGD@8{+yWN;T#{onMrV-)vlaB$@X2V|!$L!exANr;Mh@CT8R!pB%`!F6U2`b8lpqkoNVr zP}^4864Woba;eKaMM+Yw91CGWxBS#FxQ?yIRtiz9Vn^tfC@&?g3zPCiCZUSz(4)w_ z+!MkTD{eqb9nx-K2j6C3(erQ#52V7*B7td6LW%gWzhc;&bXkTxI{Ka@7n4u3?I)vd z-laU6cbW~GvkyrQQF<$=*_VAXUncVQQC-hYadr9Pr~dY2T}7_0AMU2EV_jYU`uc9` z!q}1b>jmG^`Gg66ZNB{Z?)+qJrLMLEde)XHf0lg98rQJr3Wrglx9QRhad6vDdsg>{ znq3oejH@eu7j-qDZqRAkM}6wl2xS>dO1lNFL#Jy(&ckdetul5C&ihj|++t$lNc z^iI&NI^cFnHF@OP@S1n5{j|4-^0Qa@;{EPG^7kTIIv?C=voV7G#B=tOT)K$O6SrKu z-znA!KV>m;AEP1kNIM6*?6&KtNox{kbQ3G$+1lo9dL3%{GjfU-1G1C54Ao8BhKAY{ z^R=mbX!QS@wr5Ar;=m13=+&8rqbZrnv@M7LJ#-7Y>t)|Z_0|DsED3T`WF>6^%h>GI9UxTj4 z^1&dX7&m$+5~f1R7R^ZHT?#CH?jW~!-BQ66pj7$rQ3OU{l@OTEw#h!>s1~eAd?rB= zH+#jdNXQ{*NZ6Sp3r)Oo=*z|@$CI$lkF~~xd?u5S?Po7pws|DG$)*E5n6R{{n9ed# zq48Uduw4ucvs}5yU|~1#BUm7Efm@e`Ymo=bw&#bNpA!{kV^*q}UDL-ub=3o-U5>XW zJ_O{p@BL5XZPe^p2X*U0rr4XvFY#|eTMo6&|8e}U0aM3qpzza(-1bPtn=@b3NT{!w zJxf6x;A_?vNxmK-46YFd$sXDhUjxfnnxP0p3nd{*5%hNF1emfeaY=TauDRUSIhqaR zNNnR{!p{3QZeZMiX%9|+++c53xz8{0(5px_CvUeBJ!5e1!ZmFr`n$mT;_eUK>g4N_ z2nOVoW(yuz#2w+S6J)iq zzjqCk6cC_D>`QpYfmXoO;nvM8ogrPh|0mQ1En?_w*cf-V5=W-Eh>qHoh zYV8QMN+{ER&xU?HmtUbq0f1fQo!Q8%C&Y`A`4QtqP2%YqzGCD8SQ^QAn5lM{huKi+t?Xs<>)g8L3HhX<-#oC!z=`aaNde$?kL}F_q zF&0WEZRmo*_M0dpsy@pW;?R_36d6?`sfP5hkO=sw6tR;5+n^UZ{PpDv`c}11f@_(9BwHYfR5ki- zf#r4`-uX=vI75E%oFqxXFO@LhnU9*3t9hlk2z-XT@T_HcQAw{E=DQ4c?J~o2F2nP^ zW@uL(VV9$}*BmRDJfb6Oxny`IjK%JmT}lo4orQSf2N30F=ezMOddSW(Db?_&vxZh% z34i{)@lYy!b(J-0y^@_9<@28i?8eN`H3%Xx&nej%Br^OP9k^?I2WJv`nfH@&Nd_jE z?Oxb^u5$gqM9x~=-t%YDU5f@}FGi~42ku5RzyRdw?8;QZ-1@Ex-p4-0Y^gZP>`%j! z{zQdjXrg(TG|yI~Qys5M@T}JBJ0iw z&qXUgXJUp{{&Fm-B#(DW@}P>FgXImy)6FeYyvNL`L^Z%V^&G98vafVywv|*NqbERO zw+6(Ygm%+6&VV?bF_*F&x?l1y3Tr~K`_%@kpPDz7D?x>UAHnez_Lx@F1rW$Jrg@SVAg$VZC-4m20pQ{45CPST*MowN)1Pl;3Q ze877D^nu~kyi(}0+2@c-N>+b$f_9PU~fF6WbPA zI>+4krF0kb>E9;x-P(4_=WFCnoP-S;V7P zTgJh7fytqB^LAV{g2AQ`CJEqqo33=6EW=?-<#&^SrrAO>dH>10?fpCl5lf0@RoZ=rSLW z>%Z4e2-^4FZ!-GtRUT>I^#Lf%2#LJoGC-+)2l>!k|IIOIn92(F4-8duoR8(*^RPCO z-9eQ9VAS^d$S);PIfwU}h|0Y!M`QDSV3LzVW$NaGlXB=_s@^gcIrM;Ut#;J>dJ^}F zKV}f&Xdb;~)L>vt4*i+pl0#*ZLkD{o`+#)hrls=l!vZ4g_m>Pn{dn{m13-O5g3B`j z9h3oRP7=_HMHzq=@#q~N0Lm4hLo)%bz1$6S9SP_BcM{OLjtoH0@aVkj1N7PPLI2))PzInM@#xJ9 z09pTjaJi$VkI|_*RNkKibm03LP1~DCZ%hEl`uA6vfVTLC+^-p+i;{p|_(lds zf928Z8vwFNZ+s@8-}`_Zu@5vr>ffVZ6h>@^*!i%6!~T@kzXb(+^lmM+{>|r$A% zZ}0L3O{_$|p6yt$3={#Fcg83Km?-%Ci?RGF7_)R1G`Mf5h`ARmG@56NkMk{lc*DLS z=y}gg0Mflaq~jc39#DF!MfXEtvW7f-_HaKKCb*R zKfJRYqz}#q(o^-0Qj7&r>ctxatX}xsDD@YEbYl|I0|BIa1gW2cv_O!q_aXU*iH^J= zfONBin6hEjhwyHBPXO_hCt?1FP6)jv*2SCp%bgJ}z2$#|G_tm1k?;OZ@Pz za*+B9(!a*I_6>B9o*Wopwdpf!-@OLumq|#!2q4WBq;EJ#9p?dQz7OeW2kEl|1DgNZ zL7H!n#w8*BM3C6ito#u_=)Vmm*1iV88so$AY4zWU0aoWYSQi+q{3NV%1xx*R7C*e( z9HgTKDbI(b!3d@992!6x;2^abq$iFED0M>ssX>rNJ4hSH18K=wj#5Pq($vWTq~)I) zrRF~-nl~gN{e)-NK7P=?9dgV_mXfXklr{tXy11ONaF`rGScnzlt9?MWKhNTxocFa$MqvN{zC+fno(?fUnrHvVt6_!unECNnj$j`JY@ZF_JKxiNP^H><;m=6+TF$4O zxdfiUH8CR#8*+zrboFO_@yGYIea<@$6wS7x$qm3i7HG1d#0`9YY zwbn<4DrbzzSY;;bkvJ!v5te0-7~QyS2j=RWdxx9+u90nUmJD`W!&MnSLWuO`=EU-@ zeetDb?W4F9-XN=9_wR0PshnW>?WhM7h^*hr;Z1t8%6n&s@Lkrvgbt+w zXtz1Etf>2W3|RfW$!`X<&z(e+T#@O4q;2cRQu@7))Uzp$yVG_x&Ck`C4?w% z7>097nhbonw4J>~i$h4;saE;{_tnoPu*0|Ci$!`2=Gl@DN;8aY)WSyiT2{mjheW`Op^>?Ntakybi zwJySJ5DCAHkH$|A^SST;i{_{U}j5pn9ygv>X|(fJZb)&R;qAThMenRxcjx2EE!OC z%EI`2e0?W(7G!`H!SZbew_fs2`Fy9o>1=Vfd>j9}y}xz)ddC3yFaYj^sYcr^2bk((RaFVoFW{j2#H3iM%sc6SG*Bw`y_r$R(SgdhXK0Ei6 z*%MF6o*g+QM?O_*S8Y6Zb8UR$=KR`tWOJdX3szK+{OpX)&fRbJ#Qn&>A1*w?qGdUl z2&Zm#kvE&LmmqHvuAIHP^-L*3*q0iabw{110iT?w^R=BjTNz{ZOh+`R)rSgq~l+Qv+z&`0ACCa^v%uOY@e>)6i=lWeyU)551kCo(%pxZ;I z+A{M?gvjoVce<+yxfmYL`ae|@>=_Pg1=(oKR_1LRB%GwZjT!uZS>BJ9NIMaWw5*)Y z{(B;C-m2jkDTZ9QZfutK!keAD*+$p=Qs#Ld@5G;`WtgaUTeX)2^4{_113SrgljLG4 z8X#8s+v<_5-zprNG0gHV8mb7}*gq=i39%mHn;XZgWVuCutSZt91NO#%tS~3% znx?J8+6@T5hwF2|Dt@~{&Ji8#bIyw-D!-e@)_KL34SA1SGii4z=ZaIOxV!-|Y3t%~ z4GzWy-JOef_{1-`pCtDSyme^GrWnZT#L7`G_)VyrB|Jk|R z99hg{&q<_UauUVUXOPc6+NsMs57i7J|J03c^Zj#mO!KA%O4xiizo>+tqT4Oj`-*}- zx9hHrMV2XoP-I582_DWK{HLbt@joe8XvyG*NKz8i4!z>G;(dTsLFi3aQAC^@q>~YK z8lY9P7x`W%t#)Exv?3?&dOC34XmJa4xxMo0VUjq8x`hS8p~`!nrM+U1P0_^)mxbeg z1DaPZpu`I8t?R^A=G&gsdgjBOsrAavd*_nj;doX4ia?n6lDhFTNRlmc{cGWVxS+M- zlTeHE{K}nwR(!y6`S_Hbl^C$RE>W9b?MH+t_g@qRFT#;HW1v1C|1r+D{t_09Bo2;^ zNtC=6!OOnoX0awTW*V^-Hk$32#GqyDfA25O`sSGUpx4I41}z(t$Xy1@<@52iy2M!3 zms1@Ym^CIbfahAPj_0bvuG8fBRV-;S2ND#3+H7)2W1^G~ujxWO?CP@j=Vaicegge@0>i zr=)HwG(1L{JUOuzH>oX1kz=>uGqxrFtk|*3&x*}j&OkhNOI_j$2I4;l3(bCK#V%gX zK&*>BQy1Ilb%y@kU8gZQXbVKy!W#1tmyNF5QrLw!`pEkic{uoqylJHAJ3=ih;XbaP z9FW7GaXH!iotTq@d{i`*mb=8v1a`uO>EaWz`8)N5oRPCfyI9XiA73A-*br(t)IPr!YAMi<_>gPo%#wfmj_6*s zjQQ4OFtz>o4L_1zNPG{q-o%^H@W@fDtWM_y)6q5MuSbXBg~`hihjLJrbiiSw%C|-P z>C2F=6P$AtVzLR=4BR0pKwjN_c(@hN`kD*zLahbB2ky9|jR}v*(JgsZy43U(^36I- zZzmp}Gpc+?bTFS92y26YKBa4jpB~+7Z31XTBZmuMsP(6yLgnL*(ddaB&Jm&-4oQ}; znQ{3w=NMApe$6Q}4(CdxT+G$6?ZU6~2{oYQ%fe9G!~7bywv(BY1JjxUn)Jzc_3Rae z|JT`eF1YiXuUMmEJFX>G2r`v5%l6!c{rO94=7W5@oIR%x+u-64NZ@wuyK_b8E>SpC zD+4E@C$h-BScg$~$E+!bUMIF^If)J1A$^s3Jo^{QNaYCE)w2fOxL{}ay*Fe-*AFp| zwzJIYf5QMeY|!4LTGuvg>Uyub>DvC?(Kku<=6pnS9rp?k=o~NAs+*gRxA(tcAZ#&U z_^8%r8~)AtiT^O~Hr>=8x6Cc}Yj1ve{K9lQ0QuMXhJNd;z-!+00+U4gd5Qhx?Hcd= z;O!c3Oz`$CuO@i=mRAwHebyTqynWU?oS!?%rw8BLSw3Bt>2TUZ2atSP?DVU5VLas1 zDsdh9RfkgaD@$3&t>!sGx>fI4=dC9-lgD)X+sI$1B1J0lZkf$ZJ=~w+N|}-D6P#9ViL5I@jmFghQArWY*C*^&3PGeQrL@qqnN;I=*k4eoe zyCQO_TYX*r?oK?^bM>`Te56~%I+^+-vj>-WNh81Z7MNkMob9>ZylKZx+7)3BiSy+L zwWD7aoXz)!L19i*a+lVQZ0x2AfQ;c3P0qJ@SjUxlx56jvI)xVJ7)6p=0bEcIpnL&B z4ixm$kK;v+GJ)mDr!4}6K(QYyMM!Y=RDxsJ=PjRSvyExl-HWQ(4JF5eBm1LEs54;M zDx`bK@vUn^t+yBguG%}>XrCGI%frh$i(1~=+_Y_DXzsGE!`rogR&W*H8-@voG7u;i z0+c3$WOFwvK3Mv3yul*%n(I zpfn9BV_}8=$lE)0XXj{Sk}n6G{vUPy2bpDVO6ZRxy?nTtt{MiqDe4odW{T>k?6K`O z2)5vo9^ESvTUUn}N_V=*3Jf>Vd9zANss9GXHdHO*cy09Sba4KS{g>ne=W+efFfA5) zm2$1&>5|>5yG1cYTb|AjcXLxr5T>T(t?Y32s&M!7wcV@gV$1#WAJ8m2lKo7$`#FNr zu%?!S^Z^KHg-W}+k{|nzDu1rw;l-*Rj=->Ui|?%qFcg=Tv}cQuEBS( zL1ZoIC!y`PRd?MGtD!UBO$Xv{%?JZDBkZpk;e)PMG#Nx+Y`SUh?&vd-#03ND5|chn z0*J)kL`8oBO)#r-1--EQu?T!`!^WNZujgKczm#Cw&s!F_vck&c{gH zFN^iN*lO^S6SXQnqo}EJX70^dSq=RjqqDQv3&b87?LWD>{L(AM+c~k-> zj^~}K`db={vTo#@Y~BMqMuQD3EgZ8$cX!;E-7v6aW(}@1;ipVy_t|?)4VEq~=}?MC zVHp(Shl@35ziB}Bjn`|MTu2_98aMiRHY)@Fu?cvSs>8sr(H;Z1L<6(uh(_U@66Fsk z{7jOn;RKVI*JlZ4`9rc4Hse5;TfX&%9y6AzG|CRp`TGqGCpMjG;*ib7md3(<(IL$h z*IYL3;^^SX&DZ8$c}=vS>Ds^imdc`NTVgpga0StD1*j zIPKyY(Ss*9UzdC3WqcpdbY0(z8>;oStH1rtwVeAk54TG8v7FaL`;u>F!vT^jVKU@J ztDA>UpL*f6XhqX?xfRiG>O)yN4ZZ3Pb){KP+)+bOE@1Msu88H@ z9fe|+!iiq<4exO}`CJZuowN_^c}ZRTWd0Aga2ri`v~stFkML?zh1c}yQJ6Ufw9rX} zTUxJsw?4TCjN4)9Gwz;6e-4@V3IX%!f6iatgr>}3x=gAd)1`-!c)3q+>2BG~fN}Ym714@Z8FKb@Ir}N+>rZVl)nt(=$}W4;b+uZ8 zu|5g4O|kcjjC&&SZ^I)u7WNCZz0Vw5-CTa<^h>6N+Fs{@>#rMgzdtk7_M*NtHTJz& z^H-?t2_Dm`zWz2tau$icdlOvsZ4)gUA@jt}@o+tCg$)(MC9`RPzO@iZ@z$5EI}c!s zF`w`>hF=S>nos>c3>#`Q=LRxHZ{&hpIP%(}+~{e|!zW)h^^)i*HWGmZ5#30%`giyKrn6Jh*SIoR}>V?rWG+)iQEIQKWs}X5JxMwAO_gIM- z3`DIvGPvdW$M%TdF57nN|4t{y2J^O0bRyLbzj#`794~Wb zM(dKu(x_r!tp4p;Dg9NtItbq{i7ZI}r7whW)$qAS4$xFcB%X+-JwT+dSf2lLr-xozhR7xJL+w^u1{8bL)EU~x%uyrJ-{RwN2^AF%opvX zP&6-kX7gzx82Vjx(@nWEqo<~3rk+Uud`}gm=H(tm4ZjI{Dvndk2m{fZaL4|?$MPM1 zd7H0$pn!k=U-m$sJMjGV&k9CTAd1Cy5jV#+U}R@D*hWiDI(W4poUxUI3evDJ*>L< zv>BH)M570Q#7(&~rs@tV^8bDHw^Xa*r)znX^-|B@{ekL zH`MkiE(^QnCGY?Kyazr^iYH%|I{n?`+kt_68))(^+TVOyySQOYa;Q&qkT2;5I7yec zSR_(Z{=T)k$cg)MU*pQ$&QI;C#$C>C4?VmG44r{I|Ar;n?n}&kQscX->B|GI>C>{J z7{9o>A8;u8krPiy-1uZwQ@36}U0hZEM#D3b;(JB=p*;Lkh{Xqgy96UZ9B(w%KhMg3 z$7Bi4;#}b_Q&JQ|@W|cJv(KKf#Q+DWH8(uQF4M4@#ONoho3;w8XNu|T-0V?_@RRMt zuR7qG-0GH&;_C9P4bKOhVLfYooEq20EyfEz6Q%P_=g+tjU6yKE8cN*3JOGihAyPVl zKAvd=8nzRGI&DXRfFT&9F2|v)y*Im&xA3LjO+}sif0VTM^)wJU``-s5d&|lu*@v(% z=udnG<7q5vrTLoT|bV#sJt^htmHj(l>k{S!CUoZoSj^lteFtd_{DzquxBNik)- z=)WBAO%KOqi~y}w-i3OX$oq2C=~+u8+r4@}6Dw!zymy)sR*Oo@Wy z1PD^qn=gQV;UsI?lzErtVxO33#;n3)ytfcHzI|faC(TLw1Of;H8UgullGzmh+2=wx z|4}FatXOj_#aU;nfj7YMswu+W?KZ=6T>3de!avNE3*1V0EuU-8L}xEqWpL-dr*DCKX( zHHYD}b$iP*tFi0DNrTQ+D6;PEtXZocSE2~tNXgHm>_&uR1G^qd4La}M=hBB-=gG!P zy|vJ_PX>S5SE}(vSLu(8M}pt7W3OlxvaF9U9B!y&FET$d<4GsqeetlIQYS@cn0VNy zCh_e+R7rqtX;=xA!O^b)<$NdF>BC|uP)cMLsu9nXvwCd2n$;ufH1Px2gGZI@XSusp ztK+Rtm1|}}P1ck9k<0bp^=VYhT}ml8|2c_O6*l5vA#1}&vi9f1$L+>jd=N) z#CvU*%mG2QKk3IOtk&4tReVAh<1fN;S+lb$YfL$#2A2-Voig8{}ff*=n_L2fwNNejw`)nT^VSuc1Db=>g0+aLN^n_q{h zvlyz9EDX!4ozO`2C3)(1`V4%AnPO-oPl|eO{#~&uov&33#)DZflT<57k21SyeoHG+vM%NP!_B{zw6I;Zc_j}fy(=VGIfz-~ZM zTY<-Zn5GFxf@4-VK7j_T>VBoFwL3acIm&%bM&fo2N%{6=kfh4H&or@d!e&NcBtDWR zUYGCPZf~bT+ZOJMPO)pRbQ<-{9_jS9v9+U*ZV`h%Q#Af3Y5da^w@WMP%rok6yh5$w z4hW+YE<8zIT^sP~k`%ALE-~*%Vr4 z^O1-}O$Y}j-mMA~ANxch$rJ*MUA&h9|I`gj=!&+E8_$*M4GHhn_fj}K|7=ejR#0WbMQrn3 zn=?JsI-6p=h+Z7*KO`LJ=?zzP-Yk$U-MP_WO%)9{?W7QY@cymXGWC(isqYE-!U88*G~Z+-cO6Im_{+P_-*$x-~RxaM%2 zT_34#S-zSWm}~J}J-^mhEa*N$HcGeH&$i8V5yM*KV18|Ei=8v_x6k1?Xxz|mvfwu$ z$p~invbVYxgD}ogxTT6E8BoQ#Vnyp$LKd#cY=w5O-welIa=ek&xYhEYyti{x5bf?j zezx}}?&Jhf>P=YQ`>+ZrV@q_aSyciLWvh z#YfHA`UFT8z{@V28a+Wa0@YB*9Df?N@_Vk*Hr7e^l1L_Ld@;gcU)FE~XGy zRx5PF4%=UJ-{x}hVyNu{lPx=PyXw)>@}om)mjpa2{2~=ap|)p&EXR?hKigb9yKG`v z%W@B|CO0?2w(Ji0+5O2An<)513tWW_HJy)$vZ`xP__3fa4h}XP-6=<2SA~R?`|3so zMjEyu{VJl@u&&BE$l`a;AE5P}Yak~-(72~`Hmf=jRDBcXKtrMCTL0PG>m6~7v>yWb z5&zn<+fftY$;(1JYEq~IdgHCfMMXCTcJ1pW-o^xzD7fV*jW-V8Y5gB+`;k=>+!i&* z`Y~x=+Ljw?D^LcI6!n`c)T5!cZK{lSS^B11q9w!Fb7Qt2kJ@1Co#`OH$alqRwE%YA zYi)3`iVC#jujyPES1bzAzuX{bcrXM>4? zSid)d5cLt@jl6LT7(eK+A85p{YI?pP@Fp2!J=%p*BQAZ8&;Z zE_G;fe+{iC)cU1W$e9Y&r_Y*?TmNKlr6MB-8uSu_WY+c;0H>-EWK1Pnon8I5OQNUd5$*^xVdi!i7Cc|b9d^k|QO9KT2B(uM&W!Z{56NTG5 zYgtB#==JIGmpSt2e^>Z^_cMrV@xhA(nmHneh_!w#)oHav5~p|9F58%UR%`$#eMTUL zZ$c*C@pdypxBpqOaasAD>sbe~`0;-Ik4=h?|16I%bcujetPQo*WK!|2fQnLMwG$|! zYW$v18}Cyap8yrlWXapnaF}-+tKR(H%Dn->nX;iIx z%ctr@sCqNi*2UI)kqwvwqdXvl#tTx#>!G&G(rEfMjZ4Rw(vLdtHM+W2M1F1;7mIl&{~rB31iz&FgCzeptCGavUt2Qd@U$vZbU!$a?yKGu z-S_5DSXO>}=U&vWQ(>>X2I2pMebZR57sl8ad}EC7LnXar`72qzvdWWF;O>9P$xwP0 z)b*nD>}MG7PU-o}`jpah)S_J|J#}sW4z;~%eOPefWa;mDCs|Tk)QeIUsD?YKZmR_W z{g922yvhOSZS%673fyELqyk^^hDdBG@J4%?Qi1jC^#xrC;zp+epKRH!eGYiKQl~fG z-(O9&ulCQoXrE~WUA?JfTE3Z1TdWzT)C`7ZI@EfyO7@Yk4t6mmadO$4y~r);khc?M z+EWQT>5GxCT+7NTSxQ)7ssvfacb>duSN41P&+6Vrx5QgV6jhdZrpK|wllG=1o~6u& zReHu;6}EJ#Ex0t9PvY5pWQ+KL^X3KaX)}~bxz2LJx%D`~_W{W6HN^nAwPOHC8vXdR z3SBnNMAz>b`VZT*W>s_qG2nOq@v*hJf^R%pyQ+TC&r zyt*Mf@crHiK~cgM?C}}(c16sGsvOEMB%K{8`JQ)rjbH@_fP$zF`0ZH6IktS4DEeN@ zb2+m~_;&#VZqCbueE7zfwhG*cT4igN&tGq5xN!$!aFdV1Bn6;|l*B%cA|<)6-erG- zy)9Uh%i@jK3%X zNn$SPDQYr$U77sq*xEc!nnl6FSDUj~PbLPRySRdl=G6^3tlO~P>?>R7B%Li%(av8Q zMecH&35mQ9j;}(0`LA3N++7~wIJWItq|QgLi41$O;MPK%Kt-`<*x!6bt(8Xks&^&7 zTPjysHV!ckY%FZY&;%)lt@UPFzQ!VcPSH=lcF?@@SYcb41Ga23{qfNXRNW3kk@b%^ z;k)#s-`kP+_ruJ=(SDKm5%FA|rN6v562GoA5<9j;mx_P{u@)-tJLdE(JK~^qg^VgP zkZ4FsZJcE3UH;I;Zne={|8Itz?gVjigFSwu$Skb>#OHkwa_sjX$id24+q_^rnhIbH z5y*{n_34`Rq7Hq!$Tt;DPudyW8*ky-P2Hjj+xr6>**##ZCLEhiG>kh^MP1d?!^RF_ zb2y+*FY1bNYq()>(!U;%j9%m~^WEZBtB3DZeg1S#!yzs2{Z}iN@9ED4qFxcLHiw2F zQ+C7PmiN9)elHHbt4$kK2c)yQSdDo0e3v_UhZV}iY4b`^3;Ql(Y?U$~1Ibpc;nDj%kMv!W-cMQ-3?{VcR`lQ@Td``BdG)Zngyfv9P^OQ5|AcR$P@ zb6lZB-V2MXiLa?}${;An$#1mMbw>U4mdYBdZ69e~#sINNQ@ReJHVFQT=%JS(`5$>3 zR&U}K>%So{BQ#9{JrcXG$x!ZICzJtlzvG(Nlt$v>B^qg_0TC;C^C>T3+j4Dr)~s@@ zdwrrO;O;V_1d}t?*jXhx)1!w9StAm&8S5`mDp7gWv!l5ma{^~$y6`a3JAKvK6JxN; zKMd5kDSJyDG)Nb@uHo8|f-)M!-rvAQ#I`;|C~W1WMCnFLT_2jb`+Rv$LvhR7|4qs~ zs&d>xFD&m~<7dil7}WCimnIY;R~mZ+Y!R?Yz!m|UWUz;#uN>H7(N{icC;G}+KbK2{ z_hWfO1b_kn0l-}VLfV1gF7^%G4ounoVjAUxkcA>C^H#>@q1%C3^+igXaQkC7i%J>( z7cMLu;o+#VisJ>vfip@uvaq;&4MUg>Gy6MUHI>`CTQV8n68pn(J6ZO1JR!K(_fH+j zauy7n_0wtPc+TW@g@K#uJ3M$V{{bCY7Z#=VH>KZ{u>^Jc&HYZlvB)a1`%A*WmVRR? zojys=bovxaalj*$nlhUdRF~QSu^&=3jQ?41hg$FLqkNd(GRg<=92`j-&PkCEEyD7( zmW;P&=2lBxJ@oi}V~1xA+u&U|&5i#;>at23#iNOWqi_Kbmi8!U_Bwd>*&yKt0Q1W& zo!wZ|+FnqdiM&X?!Ortx8|Mh)CxB4xbSXrYd1ZSx1*}seY@i6e(+|+_+Y7kZ69x6&8u#A_^Jc6JPAc z>gno5PJxRd*=wlFa;jUrQ&m@@k?gLhceHy!8CTw`a4*6E5N`@EjG(K*&wi{Aet5x; zt-+5hDzQ9;!i!O7Ov3CdCc*#dpi`ZmR89eD6E@W89qAcidZCHb+po=a!oJFs$QwPC zRY}fgM(zo?XPT0C#gd|z@#;bo`C`^)02OPq){>b3{H; z?6G>oTh+E`UZ)K9UgSqkHjP(iYSciHt}@9|w`7p9FDz;{udF9o;qCwbrqJ6l)fCjg zV9KZ=sIf;)b+!QUGi$`F5WQt+VxH8z=FK+90mPt&0QcS@i{Pacj>P*L4U1`*{U{B7 zlm|a%lg&QOQ+~0Em2)b!i5op9=s-%CSm9Z$q=Ml@FLLo`OH3{j!%aEV^^}x}@;;vB zXe=Z`I2JGTpM{H_JCq-n+{L6>p;ko@!0&jKo*EdKDL@)2>44Vz&jBEhXWcQJDzUXk zi7ZtKDnSViC+hl`Y*`Ka@aq6xa2ze07Xc3FuUxKa21Li6oPR9l)f)1I6FM`q%G)q^ zli5zMPs@hzy!c0M{nUAp|9%qS#fTcV-sDp<2W^=E0&H578>gpQ1$n1k#yCCyV;iTR zSQfPSqh4xu<8-c*Zy6gfRpjzknRCfq{*LH);{1H}qF?4Nw?`5ipS(uaz3~=N#v2p< zpu6*7^JBr9tP0_8k=EE{yk0O)!lGgW8&ZKygI-S*Y|Mr0SMl3gV1 zP5;eT(qCj3sghkJ41aZQNKOP8DGavI-rr@5!`W_SA7O`ry#@SmA6bJURT~=hF|P<%G_tHNG-?^YA?tO; zyx+!edKp)wNPMi>!kF;Kmb0hB?n`a#AO7~qo}hH5f}7F&veiHwOy)UiofDi@ISx28<3X1-BE2*Wv zVzek}Of0l~ZgWgia1qbeMIP<8AM5!sY%L2qjwN=TW9Cf9C0xAedI!$fuHUQ4$vGXE zNp5$<`9Z+t3qAth>Op@j<(W{ca>zoesy5C{5Z_~6=*J&pmr&oqSn!Tb$pF-Lr2vQH z3gYfI*TeBsWS4~tPcLS|z<-PdNQ|(5-Zy929$wpOn`Z)hqqF>}GPC>i*z7626k|ukGLA_>7fU>*@acfxZQLx7>U4j~{h8J0O@7!0N0jBMAWrg*pi)*Hc zsvQESLehSlcnAu6IY0cE{jt^#nX@u+>N-31#`n{KUt#-MT6`}unBF_pnnKe|XqrEV zUhC%1TdYSizuxZ_!N_2moXjwBf0dX(mg@NZ8U{2qpUE>K@zEqhkPpRc8^?qP^n87H=B5J;6FiU8=5Q){7+o}Qa=(~dq_X~im zBFA2yDqxt$>XWuIx8LjSr2>h;%YQzW`M>iGD5(MCn6?(&oV~;C$Sk%x30a{uUhw(1 z*|n+2d!Hma)a09YP_0E?##A+A(sEfS^J2dmn}x$4aI7?)=$FpldYwvd`{KH+=rP{g z;rEO`8yMAje=nAc>5z3KI4kum3b)KQL|BhdLHOr%#c%MdOzVoj?YEn*IA>)*<)A0> zo(OsZ#~_Q+e?l@(&=YU{Re8)iR?FFemVut|t-dT_gPw42ymr3;^F)}Q*tkNqS^89X0nMS%h2lqm{TDVwN+k>nT=}i3GQbRatr7bx03~l8N-dBmS;QR1_g`W+F z+l{NkUX()c+*$L+rse?2-1XM2ek(U$pDqJ}F&_-!V2Ec7<@EVe7N#N%TY9tsZ+L`P z8SCRa)r-3`dUY0YuCC|28a!+M^W(48x%qFEp?trSyv%3$*4W|`!@0*L|R~I zT;v-dgMF7-C6n05IbK9ThTC66$p4igY#C5@50d4-Apc2!pW;t*ES57R1a$wDMP2#bg`ODb@A|&x_CXkj(_=^cINUG zcXSDM)fhmZE>l2{tcI(NUB$rmV_xv%K7P>0mz!B32$vmfkvK%v<;t&lV1cD>k0p{| zI*a&9WJF70KI(ZfsR)$al^-;=I`q>Hop&FK%19@pXrVF|Yni~_=){sqICq3vKSqLc zMD@Kt%9HDz=vj3YZ#VQo%|M%!&R}fEDBNh(aDu`0i#LtKG&JGm*EI%B^>YRuQH$vo z=b+9(*#>zLkTrh)7wFSbz=8hkZlKFG6ujT~gTp(*`TMVg_-C{T&`-R!OT@dr2izka zJwk0-VVnH^itzuw%21!YYt$9DXG&J|Y{$deMqz@e%3{AIwUu(b`cPeJTP@-%m|eQM z(>#3T2o1SId74*hsL4cr?p&nS!*69st#=BOQcL^`cLOVsT9-T_36w6i1}&BtXpjy+ zoq4y$GN70@Xe}|l)Z(R=+M{=rpLG%+koyN%R@=AIXyRp3?)zM`^-%|Vy7uN_<0^#z zJAd^tz@VwgKkTg~ml3CtUA$30QAgPZ7iW=-TK}I=>bR~->{}b56oY)cg#7-(nNwpQ z^&}Tmzq832ByHuJ0lrCP;7WKQ3)jKAtNzC#F*;2Z7W?uCXE03M`Y`j};7sYllX?0FXo3CvBH=6Z7 zj6D?zjWME3>uO|TVI+P&EbXrEsl~Ax+huM1n|1Niam^Yz1sB5UTHmndP{9^r`gzlC zV{v$YF!w3d{5Q|7|BjPjZ{Fk?&)n}ca^}B{_8jc2`TpE!Y+HG+rB*SbMxwlkRQj}A z7dnqu)P{Hdb)Dvs5hcV7tkY?C&N_X}?%yW|vq{a2OPST)IWPMQAajd{V$4%cSEuMw z(=Y8u2l?%X6A6w-bfHlE>U`m_(BSzS*szdk?ck(xVkw8)B7ZM(Q4(i?(@Yt(Me|23 z_lZ5*-uaP=qI57l_)DKe-tTT@%;fyjjTvi0qTq1a<8QmTTBKe5^)ZbV_Ed#&hz&PKuZVpYM)gBTSa3iqFzh3oEdYTGFCj#aWiJaM)iUf<~ecgpsJB_t_-?Av-d5FnZ0Y{d)4ZyucYoTtwzTL%m$Pgy!Snt zfWc)A!HpAs*MeXc2-slupycgjbAP6Ha)@?_Ze! zCegJ_Ilr}B#ul?((d3ll^eS%@rBuM@g=nfkk`=VK6jtqe;|-#KvBC3mcEtvmIoOXi z4XFo%B=Y|LF7ry+>zY@5%`G*x6m=#WtnuO24evanhSCIQ2C)VUBRI^x@xH&%=9lZ| zK*DveWsvZT)VjJu?av@#%pj+eun0(udTkmeNqA9Ef1rq_ubV|wFURU1e0^N>(8{^Y zirCOwpjufu<3F7wquzNh{>dj}s}<{IH0fN|GVcgRUHdNOyDd#@PoDkTIlB?{QYaAT zIumW=5i;{IUoTbxkE-)5C{*l~#0)X7D z_#amnDinzQ>Ra8k^#a{BdQP@kY1_M2@NG5U_PVC8-gf<&9LGfoRxp$Z#6h;MU+{Kl z^c#A6NYnP?FbuVPdD=|_iC;xHwf>yTP$R)4`M)ylCHX_X8~gA&wsl31rrV?Z6Sm4@ zoqdMTEx+#rUvb3%@=Yf6CZ$ZFN@p{l@wMH%dK1R-T;bst(UDG*Dz8B|DsAE>yG#(N!LLma<0bKIQUNY z?&l;re;^C*yYi_Vgsojg3D>}z;Cz^j6E5~7qLr^<5DzDaaTHE0Dw%69l3q`@{zWW! zg^6v$nf;3$6Qmm80Pzv@QezFfwT4~yX@*^vusg76d*0PTdAobLgCq^P0w1{~x}mnK z0cgsEoeobdwT-#t!KMIzM%`wOy3O9dOeW)#6(+AMbJBM|mUKyGd1;Z~0HTtPplwHG ztu7YInk%UFT@J|NAEWm>VPFvS9f$0 zM+$R7H-DW4`{iMu2N{>w#x_V? zezH?OgXdrbnb+3E-q|VN|Hts8chFt0c}G5o_+~^(Q}ednf~zTPuZPZKIU12Z&NaTL zVA*!#`wEe`c~g;S!}!)7xW>0q_Pmc|7_z%9Z6L`;lPg+FN_Zb?yIUU#Uti2q@^ky- zin%2xU_uYI{l@=(*iPS1wC^o^7v~90u~0FUBEM4nbN0i*=$XZ^C&vjuO8Y*{|E@t4 zqOkE_IlloI)y0$*PIt6cHLp}7>3Q|Z?%(Ln$%@rCoEWZDn3b8;p-1k@6_Tuaa|;vK z6RX5xO|2--46F1>!_!?4+jP;hipK=UTmDD-Xfo1E4fV#g(MgZGht5k=8)oVsot$v} z^Ix@?_|ayfy1!(eQu@bIc7uxZMUd8#d`sC{BAtvtJ&YPm5-gMnkkJB}7xPo&D@EUz z9!L%Dt@xqnKZPIu(*Mm}E$ltv7`|Tqk+F|idTD;yK-6{aKby#{#jCYf0{eaA1%$lh zGS6L;Q#Je5Cb=WC{?NTdClAQAvsa{%BIFs3Dg`e>s!01fKzWZnS_giO_L1>Tj?NTiQ^Po5U+P zADGsE!_e()c40QPf&i#eg#f6r6uAtbG#FLs{r@pS!^#V#d$rpIp!hlF39TWB;@3ebougFz<<5qukj%KH5TmbXAdsiiN|~C zpJ{l18hsg4y^XJ3@ONz4<6<^%-}_7@Z#54gEi0#sR?x7~XuQU>b#1tGtsx>-pJZ{Qo{hpCU>I^5^UR?_J5CP}^4ZIpN&KBZIOG zx7WPiJmX~06n&%JhEpPMz;sT(z5g4QYrGSF;zs3p5*)LhP-#p!Ufa7Lp?%cwSyH3i zU@WqHp-18JiTxCK+y8iSq6&EDy3%7gnr(JcRoUY1j$nw+D7E*0u1Lj zlBVrF1cJ(jXYXZ4WH~E^Hf70=nHRxyf*l~Eo zyOk7)^1n?%-nG|>ZvW#9)avgMX#T0k1=8ui2M(aeIseJsxmur;DrNprS~Hu$zPH|E z(v@Ig9NlNnn9D82&Q7YC(bMQ=23^3j4TvfoSzy40Nq5;l58^Kw%-^#q8O%>V_J13s zg;YHm0uKjLHl_u-aH zia;;$;jjMfoZnmD zr4j$ByHbF9?WiOM8T#Wx$@+KQXN}fA?sPHwGSo=Dc|yct_carQmh8jOd?=yl43lYFo+(_l6$g0vY{@2Mn6q zfX=7Bwt3WQOrpxfB&vKLLt;+JAZxUPuJ`FPm5r%P*>cq{0`~Di0MbBERP&akymST= z9}9u)J^Fupo|+_`4koky({Gtk?RPvc|4^It_9EG7CQaj;56zR1`IGT2ND^*>qVetU zy36oV6NOfC<}CUu=*0`}JP0%@@_t03`+D(t1&Fs~NZ?^WOcs@!-Emb|QOP8!rD@Kw~1E z2uIo=C_A^I2M^Az{|YpQai`eWb!IMgT%$erZXDB+VIJRWX3s6Tlhk|p3SpPIQjtI~ zAX1bBtcR_Pom?M^G<1RK41W?>&*Xn}Pl@i&bnBM~B&V7;g#{;ezi*v&>12*M%6iZz z)T(e*?Mp;k&bQ4!mX&~AY1~?Jtckg$eyoIs65YR;;*Vj$_~r!q#c08=9nSsel7FPZ zHJe9ka62ytRwh*E9dw{YoK#2XS#if*4sILeQoy|V2diU;++~T6a`Q^HU`2p(R&)%) zRH{N&bQHhNvtIAl4)X22K$e!l!H|KPs$GsOY7Hw*QN~M}Hu`;8*8y zshydWeY7mOKi=T_x86AVe&1~G(#h!Nlk7bc2&o)`-7o8D@6Si4^|SCp7^p+S3Hmv$ zm(TP^khWbF#WKV$w{J+tLas^It)Z9>!*@882s_DjuYda&Jcj1A?Ip4R$Ck7{~fnXc1 zT6={>5dR$|j&~)>dMUxz+uYaNd;2O+#L4*86?%JL?)oY}^eB(*ofCTYSo-d#8=sRt z3&!Vpnx30C727O*e@T&2>X=+Zr3?6>1@=6vJU}8q zidm0>1kk}x@E)f&!4R7aNOA`0<6}_Uyj5F}Hxi}sxaSXHkP|kc_MxuU3+vcAuBBye5dyZo2DE-5}rmZrcyObQpSjg5LLsp z+EjaL#9L}$4H?w(NIbIW)K{E5qA9kxljFf-Tq)?(~r5FbK ziCfajpBYpUFZkO28a4>}uf*}q>r7A|~B0!6S#RlFZ+IRG&di8Eups`JaEvUiMXdpFd&kk2*p z?099^+UhSp<#cVuiqI{$+gpconE0Eu@o{+&c5caLh+h|%VIiEEE{lA^vr zm0($J2+;plyT2??gEBOLLJ_wVzbm;Em%T-eStnZa-L(aSicAWCTyH7ki-u*$pVyMi zMP>nEtQio<^o9@gT_30c<9(Gn8lYiI3F8Lvv;kO^-t=n&__B|DPctD{=Bpr5Yq0?i z7hz;}C-X|}1J^L>Ln3e7!m2Fq)`i-ab2czME(vBZG0}`tVSx}`0r?l>gFw6WjDEBO z?-o6Zxo~;JN43<-;JWE#3_kQ}fx0Ahyna8V3`i9LLLx|f5s6imwp4DKqxvYj)Ho*` zYxD!RDVuo7>r#D*yw+Dom^5?knq%$sUY>2%A^i71NWk$QJ3JgGu#8&GQU<{8!_yC*|+_E?zt$l)6ostlQ*x#-ShF1ko$V zW%9whp2^K-H( z<(d(RjW6sv#GGllsRs0|Q%+DZE(i%SF#uh^Orl@L1rYAHUWmk|6dQzMt}YM+>zd82 zJ_MIZjVy!?=%EkpD@Qsu07T@9%AfH_RBB`+m5CnS;E<`MXf$)Jj8R`_tsGEbTK0KQ{%^Q8wApnWyMW(0R>q5<#~($; ziNPn+=?v2v8n3}PL|x5b%n~)e!eD&n{wn;7AL!ZfFUQpJArZwNjPQ3x*H3Gq2Yi~j z!8qT_?4j#VQL$Zh{doa|-F5wEH)nQzyx<3guFGv)RaB1SG1PVhyGkNJF@*4mEt+`y z6*!$Yj&xT~>U+?Rpzk|9-LRMBj}x*b5~>UkoA{c?gZUhJ9_GEHe@Zzx&m53te{rHj z%qI@#Y{Rs- z`QG=ypL-v@4Gc=}^KuK8f`^kYgvMLyqPb`{Xo@{AvMWWUmd+yi>lX2Kl9- znw3WUO;Ra_wUtKPPv=>^qSB^Ps&wZ8pQe`MnaV#;@;?vV@;mi=%O+&uRJj)F4=ak| zC53uVP_l8SbAInwRTe2JZpG>J>@saN#8z{@WdQBF`h4xz*vZ||0J(q@dcVGr$gl{BW$gkV9VvjyUq(wj0%Y z;ncFS$i>_6j`*(LvFPc<*qPzb*`tN7ece<==_a+0<9qx`p7fonvq)Gl)KWx*JAQ$o zl4ty{PswVP#>6pS_5=%`;Y0~D%p?(KN}TZhRaxxF5FM3ctKQnG53Q3_Qgf3*q_Yen zp-Y<{{~2Exgy(@wJ2MZ2o>)S-idEhz6*l}@PvVQ!Ru7487S2>uubwxcJd6(~I52A` zS%qCT^Z$75j@2mMz(k#njBp0v$*g_0|DAOo_CxQWdUXwIlA$$&ZK~^v3E)!7@uzTX zbFISY?%HqM9R2>WxM^&gvK28Q(wsdw?wMg(_|KHRd*@zW}AK>tnMMt7B+9**~S=iA)H zlIb6~yi`o#KJ@m>yRcFwvt$-%l%G1R=e={j&q1kRik&ZG$moTCuHJ3@pW)W5RQ#Xw z{-^jXcK+k=9%Cf8V3&Qm zITR7)_Cv0-EGXJIGV4j^?JO_%oA5Hgiy0QBD;C3RX^#TnXode1?Xi(&bn3db2YqzD zaJ4h;tu$lCriB6(yWgEFOZcfKU3-thYv~;SP}O>Qik$+hiqR|!LuZw;VE7^$i_1?t z4p2KnbC-9a47-=Z)@uK*d7GU-xvZg}b#1hOrQ+JoUr-!3fpZu{L%zeAi}HKjOm1LJ ztL#Zc`UQ+YGNIMxa$0q z{?lzy%}eg)3e~o(DCD-UB+^{amiUhq_yM=1oO)(r(6Qmf*laEjwVqzBgI7~5%8yi; z+2qvu%}H7l&J)OvNDNK#LvPtX)htC~QNSUUsaP|En;7u*BwJUdh&f&$oL~w-y%OBa zP<`BR{QpiBJ>|Xly5z9SO1Vg4q+N7zMr>l=d~Ukv+fupkCef+y8L`~H7GLIS9uiAgZ0VQXq>Yt`p@X`eo=^+BtB zEaIgaE&_^Gz*a$8#rr-URJ>HVwB-N&&D#6qkmW8k6ZF5yo`Vn} zc`=8?QFDQ@FLlKWbU9TJMv52^?1%W^Tu@k8@jr>RT?vY}ky9(sGAs5BLA1G5(XQ~} zFIa*4#l8r_LXn8m?{ebo-b}Ts1E|4l$G9RU#(hBEw>uLr^O0zAH=aGI?9Y)~6z^~n zOf)lC|0b2a8@YLtUJie~rt_Ie@t0~od%0%S-g71m{R=nGotiupoztZFpE+hDrn?sg%qzaDLC6LL6}nDRwj!+tyv{^;O`x@P3lY&qhV$vOTJ2D6C*25JF&9ipC{GtNaXPxi~HQ^hx~M%Zt8n27T@B}=4X2s_8b2A zk6o0G{fXQjB7*E&!>BIs&tr}ufvKW|_;TkW3<=cQGx5DFeLOJA;qPkCcbm~p-WlyY zYie8Vy*nk=-c}I3zEN`KsQ|c~pO}#Me{W)j|E;r}z$r71utcTgaiv-~CwI}WF&XRP zLS5RYL-^Ou5hR0FneGLa&-JQjdG0;raF^h&+Qr9alKQu55}p5gl%dwZwc>B5ZI13= zBw(@glJ<{Vx`LrMt`$VmLgg7_=@IJ3&eQs_$?4!WX5)4OO!Tm{(nPjRgW}R zqf58l8*em^>IFhH(G$@O#~4nIDa$!#05E0cD7CZ$V(~9o>rR23C>cx~l(LThfjGtO zV9uH7e88N>3Fl_m&GG*0c-^$e+J>Ab-H^5cSfp(ipPln*ncJL+es4JP?M{^VOPFr` z3w~y198WvolJ$O1HcA>ks%62lam=|FR8Fd&*>HVUbzQ_xt;!OiI+F7R_y_O~mC{CU z%>4HVL&*p^)rLQh&G6U!?A^{8>npOdyV?nAw*p#{!A@0_EbiU{Qlslex7Wy%^;w7; zM@3dF9Ms8~wNZ74F+P5r#k~>sqW(mgD}HDr4S!`iNT~bzkUUuh>WAucYbv9D9p9Bv zkFrQC(PIvOF?V+;|_kryzIA*(G^9-U=μE=one^eM*5|avb?Yv<8l7&M&umURB)ytM{D9X0CnnFE#28jb+anM>uDMty0a3c@6kk-o6h-gH_`(_x8k zssy01F}B4gj$thIUPq#>h zl#t4r_&M{Ta*ku)ZLH7A``bTs0#CETF$A*X0_yB7KV3E3;eR^)p1xnVAZ3pr>5G1u z?KHwD4k|GE72S${$&#YqLcs`Z*!<-lXY$hTQE^u;TJQT}CQE1O6hNqKFC+V6{m`Y|w-4`{@ zYS$z%(v{Sdk+@&$Zjf7F)Cu?(Y`N|mk_D#*o#-a>dF5GqCkJ}akDit~55_^qUY zDDjk(6jUJ&8?GFB7W@()VPYjvsfAtXAU^Z!W^x5{aE9TqkU;JZ>1@?FLVN-pcG)v{ zWhpNImX#~e^bCMB<<3>IHM7fAvN`a2X}44^vEk7hx4xy}#h`$`rOHvU2%eJ*a#Z=_ z#m$yJRIF-JHS{>Yu-UwW+1yK;B{52@v|YVx%lqDL*n^N7X17xSyQRLC_v6(O5;)7EB-!9We3IL6-CORZi3P1v$@I0 z-*bg47QAI?KlvPj(G~rx5!m=6Eenwq1SvQ5oY1)5i->X$M`24&*^#ALNRj{s@= zu@YX}kJ9i*R5iks^hNIN`j9Uu^SdJa4Vf4gcCxit;t(~|H45jQu2H|j9sGcwp=-=+ zm9BB{T`@0f(+#8G* zIJqa7(Ay0THvi|RwrCEBc@9d&AfkVi6ywk89JsA0B++k!P151tR2Zwcbw&8`vnxgmdfkFR10V;-eQ+aDYriVXf zt32FKUxah|fP7`YXNJGSj(l$XTf7wfYi#L>e}~UV;h);;g@0;1z(4gXGAP8qjsX8U z0{mO)@b3hg3Gh$#`M-P5;h$v(ik6Met5`Tck(T#a5z_GQRV@&o2mdB3upIiu#C=vG zduXfn@0ZKxu8TD$AMArQ9(9$*eK6MecRWn`W{odjsj>rNuttk`S>z|=jp7x2ag5zR z@E;BoOK*WqKYvTNzI?Nj&wmT-6BH$+wnB%8!{bMIvq04%PYkz$WdQfgv4Iqfr`lW#h-k@o}AUIC)KVeH}^yCF-7v1RE)?lLv7XI~Kg>7K|34_8H|}g8uk`;5lzKthHa^E#PpiFr z+(|CpO*_&gq$j@RD2#jy*^9FwFT_Zep5yKyN7S2EZ2mv~U5AP0V`OJt>RxwUabY@t zEl2!tZfQY}8rQ0$Yy6dGb1mkX45Ei`g&v*%(lzRH(@w0W*I>@}_%p+qGtKr^C8HXi zJ?IgL7kzz^3@at_@ll*o1e){mWm`eFz%5wPK!BEinBExpU)@lG6$$_2OTg1eGh^}c zY!q?4k6$5I;FU$~+;^x@+??BqVHLi@JW*`i(fp?J|Fx{<05FWK<{nhSkD}!9l(ENQ z{uwG`mqW(5ZE2{U=wYcU#1OAbIaT%)fkqm>ZlH-2G!;h&(*rK|OS13hoG7KN=sQr*vmm zp&;eD*5|H$<8$JqtS?-7Jc^4DTb_f27sFZMqwuxZ8At;N8VDEya#y=~AZ=h6@?QJT6zFd4KBOx3CL)*$rRE z__}@#gxcv>oi5{R0D8h`Qhv=0xlQ@+o+-TIm$jc5YiQEf)Y?0JQy`+ReZQ(W3JqL_@$N{Kre4&)2cL-QG4T)VZ zQ(0pO=ot9zq%v#oaf|aM#@Bs*mQ4%b=Vi~E7O)TeV@`YD-G6hBYV`6>HJk{x>0Vxp zoZ^fR*w^4S&rzBR`l`FzFpima91SyR3PHNz=ZLU<=Eu;9Rl!<A&OpZH^lj0pJ0J zRuh57JYfYZKk{@JF1z-+aJhTCA%>>Y$Ik=2(+<;01KyQ3tjFC&oyh6kYU#0m{%TOZ zPf(}fY3bzwoN34Er=98DW`Ro;WE*U7L0!$ z)W34?DWWv-)+XJr*hW+T=KXie9B~~d7&h+QVT;3ZcZUqjQ!XQE#I=b>{7f&j9mqXA z=pV%Y9&4q>~5VP!-g$@nPy6#J#ykk?mKfcXyiq&CSNdg0~i5V~l`Rh!N&dnK-GVz7GKW?ryNw><=7YFxX6M+My$ z{SxaxB6o|K#OB<c@W$b9*{(>-FDV;YadA#$#SMpIy*ZaF zdRLr(n1Qf?PqDUwMIG16uOi=E7iuE0XE>7mE#7JCsVvd5HFamTPAR^iqIF^MBwa5Q zt7?rEpO1a>n~MI+7g~M3gjQE5Lu7?==z7NUTbC9up@xdq$BR8uS(k3LbV>1TsyS!@ zMTA#=KNUpL<+i*5SEqjqi)T0E+<9(p%!?Jzo>aDqnBw{8=0*lp70+(qaEN?PAMn#rYy;vCK{@&S8S`$M{2^d#kfLav8gi(f3bj%(!Y& z+gbdldwL2p7AlsnH)KQqi!vTD6omI#J#Ac*f+hd@UyRSFG^dJ~SMcPr@fhtk`Xwvg z?M$9dK`7K^mfYo)=f4%`SSk2p^16clP;SE%0tmS#wQ=W2G@l!$a%wtP$8blyLOrcj z|J(Vl-iCQ0vf?e5HX>FY5{)0i`I&70mCvkUgjdvc7jIU+Y#HSs~!?;76$|t(=HSw%NReswAFduL9MS$V;Dj2dGFzl@=jsmck{-QA! zl#J3CU#OoiOG%ELQo+yJ8YLi~CXmP2V0qa&8tNPK+)$-yW2h&rN)45K8tN}DW~k7= zT#%VOZhqJ9iJ|i7S5Feo=KbfXw8*sxOk7bCe_zZ5*yZK>s8NGsYb)IRIVfu{VqSCp zNv8zUY2$YQZd+Jfl*sJ?iO)6u`ER=MpZPh*?`iz?-Nyf=j$Y%x=wRcIx$&R!e>?u+ z|Hk;|4F|WGm1{J6`osRXwmIX81XJhlTjhvl7{D&+8`vv{_1#$Vm%;te2dICJ>c8t> z*FW|Dvi|w1f9$`mfA`4;?|)?RdqU!F`h{rQ9g=6FZLKmXm|owXy%A91yV(3c%I+0p zXm!_BJU`Ym{&k0nFC^>18}wHCh<`^CU>f)=&nQH5(Lfxjqlh;``?QOV2{SjU{YgtE!IsN4@ORkUU~#>*_CIxJ8TMR{M1QI`$Rt zQS1D-H>B1%@gF$SBj-0VW;ha(H)AU_$4(pSRKfqQYK?95Lnku7*;?pzNqum5fsK8; z!Om?0bdBU0TqD`9?u4ed|5?$hC;p5OIE{m7yBB8ax|P$u3*S@Q!DTie{An!>cLwgN zR_*EYm6;nrNX(+!VENqL(FP+fma5Y6uMo_6e|*;L`}dR7f60G`orwje^RlO%3`%-K zPKpxK?pzITfhOEdPTot4kc7*!H;_>3!LU?Y_OEp|p>4=-NOYbrtyCItf{g&3xP$(M zka_~=afiI#Wgzmz{Kq=+dw3*&wvgSuP?JKST0z`_at|_D@&4!NP?!*l*mK8f=B5mNpP2pcYC(ErC#6 z#|i4$<99k$q7Bd+-B1K>9e_qYKl+DV4~Noi2;4v2R!}lm*!X2G)iiFE&RN=ZZ%R11 z-`3>L)Oe$ew;$t`eek<(#KAsb)q|-KN8N~jJ~1_7%BJ%NPN;!DmErvU=!DNPzyFWM z?c(5fM*@=*X@6- z2TeO!d#+&u*#pePR6;dhE7Fu!gx0fC_V(0UQ`ET`KD4knYJY7lnX2Z%;h5&$5P%Kg z$j&ENZ*VGyk#fMm|J_Jb9eBchS-mW6X3#@oFTyz6@+MhQegTQeM}G4kBo;wA9Q2<0 zfgIP=siw8F*Z99Z4n0Iwu#dC-zxEe}>N}i4f24u%hK$@aS^M+XTwxa-!M}#W$!EgR z2m2G0M(O&4&^~nv0H88=!K^CvZ+%F;3isP4pB$$OACax9#B5dE@LF7)d@5`~^6`R{ zd^}3BP~%QpjF69Q(Lz496o#dB#~A!BVFa6IWk;B^N4`sl18SbTGCtz;BX4}zsUYyp zf99i{xSJoa!UZ=MJO652o`24p809xu%E1du30-X|nmN$);u~R4BfbN%GLayH#FhQ$ ziZtyQxQa&O`M7+!NIrUY@>#i%&ebV-rm1{`mBND|ls4Jg%TfmtU9&%k);hos6ndIv90Z2;HN&pvD#hxt!i4Zn;wnZp0KI>$?*c;Ad&Vm>vyZV zB(J%ZZtv*c`=#T=;@pnIZ!>>zB-OR5504*Br~c`8yZf23zN#4A7^lr35T)wMRC%{A zUT?i{^3urdbY~og8@-3DmKcOtC8uvy6Z58ECFgwSZX{!vk(%*ueVhk+;;T-;eUH_R z1H8s6b;p?# zfe1%-gMoxBHvSB&RoduQTJHn&Haf9#rpz-`sy`{V(XR+Ufs(>wm$U zwBh={-}+y$T`y|%y>0-1t^Za_s)k=E2mKFfxRXcM|NYkgg6s61{uk`{vifgFm3LSd zoxrF_AHl{Bb#aHj#BZympH1bLR0NpjLJ36UKby*X-8N)DYe=YGq1Ny zx6(&j=|iLO|1(pixMTTe`Vm#g#+Uq;<)8x5d)d3zRPu5k5T0=E7}!wx$#m3zG|wGi zR)_4$#$NP`1=c!iVyxqGe$~6WZ&VA_0*%Tt^eD(@P7OTs=m&a1Gk9cJFh9E}m!tX`N2&i~eL(x_m2Z9~G>2$?j=^Jq9brHGd>x)om9=A3 zsi!Ug`SHQ&a7c_vA8xNvYW>`SM#t%ww#mbcZEVi0RH)GbDq;$1AB z70T3BaK+CNVo`j!MPu|dd#n@omAAiSx|bhWl6Sijn_;)U{bQH*a-$GZTKR%C<2p+~ zT;mUA+sxDcIBn}xxBtWYC2;T=T2?Z$gW{Yk$U8>mF#NI0Jv4d9$fs@n<^|z7!F(G_ z<5~?3ncGo`!4FBqAMEyJ zykgwZEB{2`_WA0qBQis|TK{+tgKJ!Ey6FHiKp{b0&``N7#;=1a(_5TsZL zQXpOspZl4)0~6b&kKzkrd05v**zl=w!WC&N>Hp+SGUyiEC3TQfz`O9kRRx6uk+(MZX6PQz`y-D{<%e7EO<*e(4B~nB z@m>O3`LBZfdhg$2b;TqY=KYut?W$Ol4`qwO0eGh0Z|Fz85YNfh-1f~h3g%t9pg@4e zrKQN;v$=Boq3rp{t;=MtWnGyq2G(E$2=Zb0)drzm??QRIZQ4L)TbhTqQ3ItPaMGL( zMg_L>5&l~+slawVXLJ|x$#&jZH&IK(^r%-$d^B#hjV!L!J_M3fMF_x!3N=+X!b}O} zO-}`@0Smwne!>DE3mroH1{a9R+P3OgMW>4|yElPM$#@-(jynq29L2UR41~4MUv=lZ zotR601A@CsY2m&*)Pf6^qv1@A#?y#ugrCIbTrQSES}vOr+r zsP0?aHL9O4Rhy`hw_+l3>NwUz}-3Z8XhwF#T#YpfA6|Pi}K@vzFF=C!_I1iMzQ)Fk{rPPc!Z-18-;Z)=vdef z3xv1Zbu&ISC+1yDV5ir!Vv-;(j87YsbD?+qpr-OIpb)W;;#v7Zo27;v{&xZR!63j~x`Ev7 z{IenN2J6kzAfDwzK{QO~-DwIyefP3wU(p3QaU?gTpqKyR?+Bm>gFD@NHcTH~8#y{l zWUw3rT>0%_R8g3ithK_O9kQ%m_MjPP2zEa9c4tBdT@E$`FZ-zhioR9FoNvEW^B2T1 zG_ArtX9_$ifJm#r^jdtgVGP8tIbB#1K!HuKy2pRE0Tv|eH_$BNho)OyPEnK8p?dbR zzy0k4L1P0Uiv^7ntRtTb8s{o3O*d%tzp9)OGQLLvNU=V{)^+T^7T`oy49@Z9JjwTp zhW*FPf3sZ$BQh0|a7nV?$WJB0;u;^y>V$-#1jkpemd@kA9d=_1F~Rxzh1yfj7psp@ zb%&*aHzB-L^+_NU&@l1{mMmABqGhXY{1)@pzj1E^IToR_sLkYMa%8X_TOZ5M`LCR_jK5!-f2W#2mS8vOzx89SZQw^@ zAX&AxmuM+*jO2J$>X`F#8{v=rO=_jyaC*-b%~onQt-*@+fc3{!W9#&c_Oz9H+aJ5u zw5PmYYg&nbr4ATo><)iqP^Z1gx5^7Henykb8ZV8&{%=5I@fZ9{f0JU;Di|_pl?|D+ zE50;XEuDX+7>?zEDQ~rMf#A)vuV><0!=FEu_ycw*iy(uCQuf-vqE(M?gnlMzB%xE> zpPxsCJoE^SLk&`-&usP5z(duw@+N#$&<4OyeH#PvakN2mIreK)3>hqW&*$ z)4(NcB_5aW-tE-T?k{=A*%sVTdiJ4bAA3@PYzIhH`Tkp3k_z<5GM}HA2Tx05N@+h$ z|8h|Oh??Aq)N@V*Uf%CF!Q7 zPBdhC7t_F)E~ZK@P1&FItKfdmS|%SuHL@(cD{t>D&JeY}q7X~H-kf@y-bC}k_60@y z14YE7#)(!mm4AF%Ba4P`Hh{@22H;jjXE_SbziO?Des<1z%<%V~aU6ld6sm|B0wi%?5KUG<&zSl%EuvXsLz`5`^+F1*%9qc_i3!rc_5Q zospKiG)~2HnLaDYt=ELoh=m>ISFjk3T>1Q-2J7#b@mF_TWb8>__;#t1_}GzjO7B_LeP+;E3732#WYi{;Y8i z`6JJ~{>s^+9mk9O%|CQPMBD6~_9vNbOoZ9r3+gKEe7>b~(U)7N;qAjjLw_=O5$}`l z@qPY_p9luLimXr$rnZE_C43a>tfbp^mf`ej6mu=Vb))FVSF=~(lE?Tm{A&^7Q-k=V zBQ=O%2(R!)`TeI~up#W_nI7D5R@x8_?_&t}1~s`MoT2W6_EU9? zOxF-lijhnFv3Yy_aMq%Q#Z~r~6~|4($|LD=azvNR#ReR2f4&4y-rt#{tmt~>Z>>qQB1QBGD)rlLJwMPhMNc?nTYa86dXI~6$ zI8M5_tvoGdC}UJN)2o!_f980_=SL30F@^=W{Ke zE;_|wClUcAf5oTx$LKG{e&kTI#84Bgypu1&O7W>QtdxzOa@X*+8&+=Ta{Clkej{iQ z(h52r4f6YEx{godnQES@?bh)XcXjXhQ9(Vf<3kM-K}oU9zxhMg?NUQWu<&@n z0R{_^3F(q2$a;4TTc0L754h0m;1g2{xV1^t9qtCRQk;GTZ%-gLAvp4pz*eh}mVlN|mW-iyD< za(>5{j0^@CX>UxAm-h=41{8k>r5b3xEjo#D_N{=Xe{ zQ7PR}vJDk@rozNRW!tNnY}#I~5PPvRAdvRBmpOR5yQ%z&p#lPDq^e%to&1CU_hZ;q z+)vRSO~CUwU-$}Az{N+uErT-_%KF1+L4+##i4Vf0tHTtZA!s_5=Th86P^G%^kdE4RHdJ{c!6dZ#M7=La5R{LfJGN zCq@Oa)>)!eYtwZzGwTbbl#yHtQkzCezlZXF+vF>o_7=`Ry=m{E^CL}r2h@E7`0`M9 zY4Yn$dylRg$JhFcqfO4*KR8JTEBHQf{&7uvPhx8od^k3F1~2P|CWq;Jp5C;#6M>tKE#s58bCQkhQhRFq>eQC)^QJ&vwa=AhaIWyTu5WFDhpoDqd62q3XeuE#Ks?*AUH;BuQ@KQv}sLkv}|kLK;J)UXQwM6u|Ehe&$n%J z4iVNbK<}+2#NwZSd=BT&zCxo;Wjr9}WuYbh#TOcN{%MSqAOd=2WDv>{2Y7y0AT|x= z|BH(BQd1Q~-cesH^3GWG)TCwB!kI#j=?wBzS_@+Cs8)aMuf_U9{fMz}s); zaQe%g?tF-;-r~!h2G z$r1H`3-MgkvWrnn;&e!I`Xn416EBJI;_!)&*`$RdO|M=Cjt8vF#W{ka`YZ#7>al3# zfY60+)C)dn76iowc*xK<4hKhC{)1|T|F*7Nt>JP0 z?(Z;L>~SrRQGw0_w@xW0Z2#OtwWX*=mf&D8a?ZK@;&gCpthf^AhRd7fyqh;oiI+WT zBcaRlDej+JCbsHq)^ci_*jk&bw7Ru6PwBa>wTCOMY^{xGoa%IB#T--_`-|os&NOg( z0{v9tA9l_Gt-A*0W$%232GCM7z-{WkKX#0$&FulP<}D>VLQu;mlNlc6V`UxnO!D2% z1ngxmS9x_XEWaTVA>gtHI{+TO` z5rtEgC5C7>=oLKm@nm)L6%x_%)Ij(NGVL~UAiAWQF{bQgA9)Gu>igwx?KXDe^P=MXf&KSbqM6q^lIXDg)zsRmMEp!WVE2i3~rk?%Jx{XpxZ z;A2&QkK+S;tPnn;|D7oF3;1=zI0tgWne`R(rrw7_TM@JtqYXg zK<>cgXAp5=`<$vPd79`$%bY+g0EHa=kSrp+jW1P)%|AwYIOT2^-Vn|`BkQ7!3*x!` zxb~(W(h53bvOa6k z9L$@-g#WvXmuUcA_IIk8_?x*DPy2-Kh=0EI_P`UrGopz%)n{!HyN6*-<%L}XwEDHB zNcn5)jsLI;K?|GIJXB*?(?8l4&C!q^wH_cjfkp^Pxitt$$FhbRfA=3_MX8gXr~$fV%8}cI0!`T= zklTP9q6%!yqYGZahwm9rA80egD*dt1-)SfZ+}vdSdvoI!IRql}0}A}ryzGtVGBiHitLnE?8N!`4WE;c=#&awE1+;C=!PZl|~L!RW({5jvxOCN*V)Gjp=Ro$kY`A_b2bM-gv z9k?i$6*xB^u1%Y%>V(~e{!4yu zu=ICeVbpM|Yh?D)A2#qsX+y3h493@`Z^YihkdM=7Q3~ZWy|$}i&yHZs`KXY%x0L8L z^*Ie?osp%h@CkTYj;g9r-`o%%6rNjMHpKg(T01{5aM3{dTVR=bFZrsCZkvq`Oq|W= ztnv6RH##X=y3OB#`d=8zH_V(nvW)QBqG?Wzh6B(Qh(+7yO>HRsEo9BXhj|r*_}<^g z2yAo(4Q2c5^CK&2GMirOXxP(0zV@C&HC(0*e+^8_jr$R?udZ=7J8soA>JO5y*{HYM zsQ=Q(s4wU_>MjsC{GA2`0f~w(`>JLVeUmmRP5bkaq`>3)L+~)hjUE^fKoJ!g@;hI% z>d6CsUyADMz4;(&Q@N7dy6ll#+LIH4noRpuCv&RQsqq&c;T~%FcU|5n|6^0JDhqn= zA{jzToW>`b901ky8@YwqJ%LtoBR4P9BzTiQLH``(p1G#ibEBD?Sa&{&mVI20$Tm%O z7H9YU<`dHDZSx;K9Uey;m{_EprHx@|rHTWsl<>@1Xd^4eoe8OA9a}YYeMRfILeooa zT<8a(5nQH~>bPos4bG>l6PxztF2ZQMBJ1eNhTWZYJMF@YXw&-KC$vN)p4X0o4&`(a zl;8&-=!P8+@aMnPi@wYlWIeS@y%JNXrEAu@en~&|fZJT(<~G;1NXM5uorM>qECD9G zaOvssHkCL_i!j<*9yE6+g55`|JWf4VjL*=Seb{7BxN)uOR5+b23^uFoO06iW&hfYW z`U2FU>sNzh2qYH%FR_#gw5!{pdT>(M{8}h?ZG7BmT2DMpbF#$cU|LW~IHwJ^am%%h zLqn?oA@<`s{fMj>i57X_+#{OS$*NI2$7m(Nk|ZyQE9agvYro<@uKFOi%FBAPa`TR= z;p>8|bG`XN5jHRx$;mx)R>nW<%3N0wS@GGdPpz)^bG=b3Horamv!H^xm9svKs*(32 zsb2J_%5_y)b4El~T$`ER!>qYx68k(o%&Kz@P~>0tFsuH+J*+Z&S57D=?8LB1Tp}0P>we&HWj}Cu;N0O|`ftmsu-%p30${jsRGkBRk~*1xvR^ru zOEa>lyrO^gtPKKN<*G#PL~n4sa`Wre!=cUHwD#YsqN$?<4aKPXRQ2tyD>qpE*9G+p z0*N;M#Jt>olf0U&>RFpyweM2x@wZoQexo|RwtDzh+UL$zDnBi)@_DJwL{_Y>p4H(> z`jpIS04b`6L$T`6`*gJ08}B;gy78R)KI7L)(8D@;2VcYF>3&U+WXa5`K4rD zS2eC~MDV&l;H&9h*|2Be+*7*7=ki{zioI)vgX8KQ{GJctx97^aQM!!iT9L)vsk^J* z2ZaZ(Fz{`5z16m`vS}5)jg6bEeV3xcw<_#{H-}_w=dUsaxD6TtT59^12`60-U@s3CI#(!?W&QAAhEx)+6 z)IB_G4?&)L!#uA1UFqL$O@Cq=IPJG!#zwFv6E z+(E?9nmhdhZ*WCr>zMPsaggRsRPoZB-zLwo&EDpy*Ie9a5F$Rwtam$I2s=AtBd8Af z%}*z1`2A+|hN~Uf+w9+xt&wlVIE#GG?;0=KkIQm7nPXefGE}{Z&0vi9ciD$G((Mh= z;U98aY;^bw=uQ`96W1om1+u%M@fVX^bg7iD$%i#QvT)GkCbaFw@oUz1i1BM7t2L{< znHGLQ?|T~?Mn3)6$$W@<4;3rJNX{1|^Co$<{pbLW>$-=N{ba<8f$SW7ssC!syRcuZ zY~x&dOdqyADJ;jbcFT$~lvNu||MS?F1O}{Q5TY@&@YLSALDc7U;UllXj9|ezyv0$xi=0EsU_c~cn#+~ zSH05@zF1U!%$qgwKcNn2X zdKIeabGwgY%R_D)1G|j_rb$jaOb|m3tF1!ztLinl>eeYEI}?`}o^5j1bN*L9$2amB zq5o4JqD`yluFz)~ile!ulE`w}?S3<-NvZ_=yYuHB!H25MOg_{-i~eYz^hfX?tLFmM z6W`z-D)nGmn}LfWR-4Mam-vK@tpsl4KarNV?C~%>%eHIB%Z}<%llwO7sk_|g-@3h* zpqCg!zAkyL=PxIpXNw@ZpK&!27daB&<5%jBvonZ?Nz%fVBxjxrc~HpasR#vyGFf)X z@Ka2lzW^Vc%4;Sqh+HbD5ub7uM`txmPHrZ2AC26%E2JN< zE3$zj-|tCO@<9NOw2Zba?TJbDW?z=X{n=Jwq~%^97+Ik`Lj}Q|S41Uw)gnLO=0i;K zArE|4!Cd#Hg1K(w-BR93)+fls8+8{$T_?!YGelON<3w!CoiSk4K(Y9aSbV!bp3?-H zyjoG%31-LBegcaggQ7u|Rt&4-_)B@}7^f=BRpnPy;lt5{((u&G!!2sPKSvZ_h>oMeu;4$!!Hp);s|~ij5%`w zjG>RjT9}!W7+0j#hiPtbMEJ+PIGKFbptjDS))DnC%uPN{!@>OQ8Mr8H{oTYwYICiZ z+b^|#CcnhC5+(Z4on!Ufss8E3e@S5X!ce=on4_-`m@?>VnCPoW^i`yGh+ruFN!{7n z8JF6duDxO*Thae>zuPN*HbiTd9RFG9*~HfoT4sClBywDINoupIN}Gu1`tQhQYo6^P zn+=p~R@$d*cC?et@b?)uUEK-W3uLY%<H56Mp4vHF}GLGnm>LikJOh`vC~8PT>{NF$0b zcI_~2;p>kUDb<}4YCt4fV*TIXv~XY2$NIdQrq!R+G_7*W8LJ|5gM>E8`54AuL@Vcv z9;w2;UeE{EuaR8Y%70HME*GW;YpS%8#}BM--VWXWrQv$${`rRMp?eMod@Xm9_w7$o z#kqcaQvCHwTO1OFRM7<`hhOG+)k70$M{1_wYWs-j2J9(8I>?eCXG-xf#+pO{3;zb3 z^@p|FOF8D;sD47hTk3O6lp}AfYz?d5)5*b(k-^`jt_%vG_BUD^1uqpEo@)&PbQ|-sY{URTCw6zTf}>p?*rNHpGL5 z&in>6q%#nG#hTEXv(o98#%qym+-WAi`10Zo(X;Hcqw}1B7&o#n(>u1>+0lDVEg0+{k8!-ELMRZG66yhZh7xK93)&;5 z2lEP&wc|4qM+IVgseg+#g})^91;rg{EB7?}JN*%J%#FD%n^*A3x!4oE^6#|f~_)X9$)iQ$6HPi*}NA7Zf{i4*ogo(%g3AFGW9lU7ou!FY9)K zlg5Ux2bBlUSxeYy(z(bkp&OF`(X<*jUh4BE?_@70y=inP+stXa`s@|0VTdLl`WIeK zU(_|TYOmA;gEX~?v4&lNGw&&%iP5eE$xME?VCgi>~dH zMdMrzJ=ylzgaqi@zu{|rk11+n+D&$U>Zd8zJ&B)?Vddu6DnDJ-Q2z=0ho@QBJ69)< z3O2fl24T6ZD-FPhZR(4WTffJvd6E%wj~3Ow7GyR4KG_!4O#<((zlZCB-|~F08YJ%O zwp?~Gw&0iJZ^xSu**!)x5!6tT7ON95r(;{EA90YsV_%A+a6uD@0_MLGNYNqmxB2(pftAu)RtehBlE}?lc?|deyeW&^vW_<>Gw-Tw>ez&$sN+H}D~gV=3QpFD z{Tct~`x8GWPp=X7dSQF&&Hhz*+Oeu&C%Wt75UI?*;Gg=Z0JDtWw5Q&7q_e=&oCV!%Lu-$&iY zcmA{8$0y#@HJo0*-1u&1k?eDS$9Bm%S$NrB{*@Cpe|V%Amd=tm`_|rm3#UrttZn$p znELSzH)f9EP6O}y{ancq{p{7~s?Kwo(352DhfDXfZFE^Wx>VSIP>7+ zRYkTC|Dxq!7c{9TSX%si0Ms9gib$RpqMTfIgbj|lhZSI=?2tA7v9_#R%MSD!7WZcbSDQTpU-2S4=rJvtjR;`g7E+qE!D0YUfQ*aqlufz9nV#%Zz0{Bl>IV z>=$V^2hI4d#9C;`fbopLN+lTyyH`XHAnhU!F$m|HI& z+AvLOQS$q}M$_vB^pu>~^KE-Ns||5=ud6fk+81@YPm{n#X@Wa&Wvwp{#)Pq!`}CJ2yMpi@xU(8e~Yxe zOJMiw*Qax}#DskzQxpH1Hx1qe@9gGf!I}?eUL{v&_8)_DbkKjW=;vKOhtirfw^Q*S z;RI3FV;bPy_q1Mour9q9$tJj|wLjzF?ZZR5wSSN9U+rqYjP}E08Lr8&54Lmc%9+-a ztGe|hG4Fs(Ui*_>Zhw+=`x8liIzQd2)C*Ef(aY?;^R(DTy&e0?0;HY!U%)5rqCw6l%}~+H+ePfKAU?f{j zguae$1hx6*3djoWTJx8`1BGm7jUI{AKl;WslQUok+TR9%Zd@z)uc_%=GpTINqS2TI zijS#m_(#c{Q}|mpzxYCL@a>gNYb6D}$?qvOjj&bZpXVwcRf>)vdDJA%fF0%(2G!_! z22{Gu6cCv!@%sDJTt5pIwD8L4s<->sK;f5LVAsHmQ{@h(SA_hjsP2fsOT6w-i*NRx z#=B}i0R!`VZC-x2xU;P*glAMpDV*c14Q z9sqvVyqyleudF@*{Ge>qI3{0iUc~j8`vaHJn0LYMQObyjY9xALd9qk*p#$S1R>UGF(0rF~>6GG`jL*N^ zN~p8e?fCkUpGpB^-R^-@+N)iIho1iq{%Gmk^X%2>d@JFnxaYIaGN5&%(LS(1_o?4- z^5LC)g~tJ~FusK7?^=tqMeHeV_F@A<2z!qICXW@7N1;T+FaHLEqnSwvIvhpKR#8Y8 z=DL#^gjfFG^Mh@%wpW_9&HlSlp;+K@%RKF1ri|0$Zan=#_Vh9D5b2fqp zZIq~uVQK^66R}WugSrKoNY2=LD&n|Z9HiD&Sd*JMR-AoYA?WmCuA?34s__7aOx&TkG>*BslS9zr6r&QH;ehzucns5$9 zKpTmGt!_aG(sX&*%Z{e$%Y&xH6xFn)LDRWS<;V4Cdim=be@wfSXi-!7KYaBJ2Fk|{{4$&eU?vuT5Af=|&b&IWlUFAzQ*IdJ-0)*^Z`>xf zx$v5H7ocFSK+KPVL0i!saA5k7(|}b9Dcx#~x7e#)?+jVos2+VHeN@R?L(Fuk!=FI^ z-wl6^KM9E-mZ5CbkLhgKa~6u}w!EARwN)=T)RG|sNs=cpotyu{Y0xDD-|k$WfzBcm z5zKr#&Dt7lgUt7DicS816*&L?%P9~}D5G`r2q*jEJIpNcCy5ebJE$CtILIS<@PD(z zApxs^t_`XIGD3zA-WD+0uBcDhA zFZsrI^35xvvBsTlVObs=xC&DC)e8a(V|YuAI}0f%ynDbI@QWD66|-%Q#fM_?^)Bqe z^`Gt6dAmr96rOB7`qk&pXe^yIyROXocY=G{Khh!#U*usv?wvKeKDS{(zfpBZwcAsq zWe-j8=B!AIO?4pe#M-_+eNxMt#Q1EweriVDF!KljhU@@Ozk=Fgh-rGXC~o%pSHUy7 zEaG6FttEB}|s24heYhSHGf_8pQ>xkYpOp7Yg*E#~yFw z#<)y5+A3#8+rB#6pZE&qb8kq+Di9(JY2Tv?+$+#;^sJ~m&U6{y{7W9|g+1D?7TFds z@zQ~HJVyU9=)Y9F8^wkGI8hY=$An7BP7AmSn;R@Io*HXoecPZY-#YHO9w7u>L}e!z zTc}{u+ENs(Awx67?&_q(RCg1FYOL@xA3aE)HE-CuvFT~%DiTxD*0gjElGYkr@CKHb zkDhbO3o9IanM0Ux%}DbG!C#x?mZ$hNvLm5{+&hEZ$E4-1yT*9z_oRPMexFPi2ANO~ zq^hhtB9I^9#)rd=(HCedi(wZ>*yP_~!NK={56l1j-Q=6bhhJ$BAKuF1mYYN?l3vL8 zHU}-8HJJ9_u@bLY2`t`}K-<=%KfaC(1pinj zz(9D$N4y|K5Hv1FMye(THb>6fi4876aVgo|Z0|Z0c}Y)YIAv;>RC>34`!cIux^QM*|#$2;6k%%@=QUd-oRn!WHZ~^BMX3wY8OzR_~C6?%n~ zd%80rZ8JlyLFwUocR6Pd-ykOImBsX~xRBl<3aWQw!`@w~-d$OklPsu;b5hHCSB1oW zIsL0-IpEE7?eYX4oluFd*XSo05EF+ED@Nl`~sNkon)+)BrQWtefCs#Mw^AbZiA874PbZNe7{3*kI+SDPwHW_GOYM6E9ixS`lW%r;OFzb(Y9 zac?d<%Bg&uDl(GwIx;CB3dNPN>x5zuP7p()!A7*eT>${gbyX`(twT++*dSo!Y#o9T z1TOK$6@^n%E930w+_0;g-;6Y$2B(a*4G4BfeYdUy>8^F0KA)p?vD*p^TMk{yR?Ruo zHg)iyGc|U|&=eP(bViXJQbW)|NETgn&p?fpat3b+t{4p+sBW zjw^KvEc-P}Y6`gzgI?2h892S{BMw8_{~ov2X^c#86zngzF7>s#ziEyv?!H6`bWP=h zEN}Wb&oteKkjsC7GT}MT;@@j+U+08@Wqd_EP&e0vH`%0u2c&;YTg@aC_O*8U-~Hdd z3C5QCu4OZ^+6;#WtWi)f|Bux9v%^@$*bAnwE%FaZ+egU%O8bazt5MGtrTg>eXg}Y4 z2e}hDwQte-XZsfL?+9x#*VZ#GPGS9XUS@I=doGOM^Y?53+`~W5$QJjubR$({$x-AC z3{|K?Wq$n5Ul^%3i@64L;mu-zZxZx%rYTzBld8jNE*V zekt6n{11ZjSD7~S^Ed+XsCc6o?adM8gF2Bq@o5x^7Db0cuN%9pgXeL$BN|80=cC=| zez|{PZ3@=ziP+X4;W2JP``H_OZlF_>K7f#jXL7xUM`zf4HYJb{7XzcQ(&cL2mR{+ zkYLL`hXltsB>2k-J&~Xt^g0j{jNX!t1i!hj4&fKzEcI)Bo-X6wKl<#wC8xv!ygHF}PbZi~DZogZ?ygUeHVcx_7dA z4k+g!&D@9IN*98h&{s29w+@ldnG~e>-#o@|e}#MD-%o04N5Uxn(%unnX_bGp{WNob zESuZxK{uz|1?DZWtG{nM?wC*@z=KfT1o>_KGIAtw2cm0J3c z3z)9^xelMvc#bq6oDXCY(US0AGTv>5@z^Op6g8^M)j8OMA&> zHsUZGY;XY{16rx~5-Qig#H^AI-q?=~;SWiB%z3~1T!#l2CJwP$rS}IFA}w!|0d#=A zBe&hh?-W)P2rKGNNDV*KkF94tblCAnTS2q4GR0m*AAg7HQv&c(cWf6xyX_51;rLXv zm33PhU@~1A@@(^h2|}W?YuiC55FAiao@Y5xQlhLThW&yJ+xEE6rVaTWQQZd|WF&bWSR{pwBy7i-n_ zviGWAmwc{%9d2zHlsSyD-sb17XZ~f^UfL84C)KqXD&*z;fUb#yEs)Nlg1+4POH|lT ze=Hd3MVu|lomSXHKeE;4D5~{>9IdXX55SMHRP`9MMnysV#N{qlR(L-(o7m}!Dkh>~ zQ(l9K=^X^kP(G4o_gRrA;R$e0+LF9Lonb`@{A1}lw27?Al`^t(wUz(&Y^mQz-%COe zjsMXTwxhWlWjiuymy&WzYA#k;LUlL4N@^73hd*|OKV0~vg6ipt+)*&Wk|7gGr1MpF zbzQkdv%5*{%zfI0E8G8xuJ*;X9?x zuI9~YU(6|34u0N4#mjhW^S}Ll!M*#OhyD}2UfU(a&$&HnuaEAvU0>Lbsr(r4)2Vkkf7e!@qO8pT2Yp(uIBP zbxl6{mFTOte|pdD?vX4{-M60h4v2n{ z>^JFb{`|yIst1A^mSW(J-z&b0`2B4^*R+Hpz+uMhLjmArVB}c5^X@gt zY+e4n<6XaC?2~M901!BXY{t?NI%-@^rL5LJ!{-)OcMRQI9wF{sHF%tVso}oND|F3bFt{_a+YkZ zLAD8BfK~0gBJ8pk>dQnJ;Mi7eo4vfb3prCh;)1uh?6Usr>LPhZf5r0d(qoBuA=HDG zThVQUQh&ICQoAQvsgr|jQqyB?V;wJe;*;yZ&w=jdT6J(;Wo{-Dc|`$E4h#qSIBuKW zCAAQ;Xe(GTlEnrqj=3;JBe9QoccPA0=RSbs9AOGy9Rm1mymRs4RbQW_~w9s~?2$~O& zG7M@lC30}xE+0C0nXeE0-VppY`%+fa8;{TD?tT&P>!K+sMa+udHCO(_h%bPQJ0?MC z^au~xWG0_d=3yAb=YI?s8Mv0KQ@;%jEKY)SUfwxYAwt9@8yesvCPd6MAwoMt*qrQ` zd(Ce|p1*{%^JCZhohX4?9#>!0TI}l8rLx>bFKAnmrQuc4P_ZC6?6KiIK60FL0{>$3 zM)UvYcHI{(R^~MiZs6Nv+DQ5j-J>Bqt!tdphQR*mpXQRQ<1SXGe`=K?oOa-llAbZ~ zqO#c=TuTRqAXqmcFEjC&eR42aH{tNi#J#-m|Es~LK!E;@Yef}n{9F5YDIn(fga0!i zyhQKwiSux<+LBQ@5o_ z(=gNd`C)DXNvnWq*$a`ye`lT%A9O?Es7UjRJf$!gfr1;~4G((P1^p9oU_gC!WnXjVyY z^w;%KZ8emClb;#&v#f3=LtY%zR@hch#s`q%IO-Y^)Rpfyr|NR0Pf+PP4XdsIj}4H0 zcjsm#p48%K46)k_;cfa01BpzO8A%MmR>h2VSeIybDGpwM#UO$U;z%~i^@q5;V8{i- zFpi~i@_o?1Zmo+49Hfs3-ttO(7!qzbJeEWQTn->lIlKGtyAHC(Xas3?_x8l)z1N&{ zF-z;uZnyrt2WVJ-97_xwH&}mwJMyzL=}4IOc^1p;u=mcY)n%`9!Nz5Do88N(hrql{ zg=Nrhc|pb7er1Y>%EocUSI+v@HO{!-v$2}C8q}_vIybX&jZfc7TV*LDThKBR_tvzk zLt|99kw|h@HrP(LT~wicfQ^R@c?YFb`vy{xN@%kRI{h!&;TFxB_{-WAxFI>G3*+g% z+$|=>U*n{MzslUWgFArYgW<_b-M$#waJ=1730!l5e%Z#^^)kG*Y@MbX!=_unD&sFJ zdi6avkkBya46FVp^%`9;tBq@0$z%3h2nnsWFs@V*e1&Kd!zs27F)FNu$f=smnf~wZ zaA?PZr4rCNE160_IG8t8f_E?#l^_e=pYXTDT?fZMC*Ri#^?KcJzQB0JRQo$qA_tV8 zy?wHbghT#nN#5U-C|UslCKSl;EyhI>bke!bvoXW{qs>XmBgK=?S7Kix7`~4vsb5hHmoe?LTqyYS_9) zryeDa!C>s-)D2v87{`6`E1Ey8dq4R%#Q|uqf6<}_Zi;yos613g2Qg6hWF%g*mD>&) zbwdGv!%zF3>BNPUNM|1W7XRpQ{KLHD8+UdX?3X)59QeNbTlwk>g&3pPkf7FBOXBo9_?;8h zg&TKVQ_@FT7a)D7?95*IB`HLPJYq@Sqa>U+Ibil+BoLZwIOveVIkfzl4!gh~QH8Fk z)$yOHE_4Niani$7UDNcB{K`KHFD6A|J9&90FJs7GQzw=Eqi$a7l;X2>r1308pBP=$ zI<0t=Wj{oJcN{Mgd&V%FKqXM)Y@2P>XFu9iFU(NWB*r%r@|rD2jAi=ZRTbAM z%tsKPc5JZ!n<>-~?-sqzj&Ng{&`7GH2BkdjP|CBa*Yhq?N74b3Hm>d9)f&I`evx#* zK!G>%O!m@uq3RD_?MBu0OH))`>!|v^#~Yw(d<;S-O$a+M7r8h7X}HVSAk|g-p>Eob z9pMjk%h$P6;fkuKNL_v*;7!@=^ z8X}-3BvIPtYD8S|n_-+8x50H35gY|!07a3-5fn#pL8}QOxFCy?|NEY*dwWR-aOU@X z-}C3u+}rn7)jf6gI(4clmCsoP&oenPLINfeTy54PauItY&Y2NE;sKDHCl+D>4k#b> zR*%X92h}%!(;S-4y0p%y_`|p0(2@Vv9NM0sSt;v3bvP9A!7P{)mQ`pDU7%0rU^0T? zQ2j(b`*%(OV)WVdK0>lqr@%zPf%Vltb9#gL-~Op4Ulu`uj26i?ihP<}stqE1p5$g3 zL}4xQ1mYy~$0GS*3nrx(7?X#1Ss^b)0qA)sPn$%(m*;Krk?_KOha1Bv)?ZkzZIq(G z`uHeitOgiNZq(^kuitlE{&wi42(fakWQ2d+Lkrhjbcp$x>;U6Cas~erCA5!E%T;F_ zGk*uWQw^-hF1z#O%50e%OpKt+!-4kDg8MV*EZcJ$os2A}kC*&p48m?1o zdEwrB1>sMUz!cle!>XJ5!DiJBRl*{aqX$fwv3bu;DO`RdYw0cnzjuDE0{o7MWPUQI zm2OK`&%Pit&{kUhJgr<&fC5OmAcJYGH|K-fxo6hk0i%Xk-nX#8x#J9lh5hMRyE|Z1 z9S)a4Jn92t5a%0ybw19YJd3!)nQwG57HHf-*=CD;a5sdSE>N&`s(IAcO!3fRI9AJu zYqcBFS4$kka-}-QiqD3jM~~)VOMdt?_}1x+f51QGA2gpycF59xf3OgqX(@&m7o*T# zjD5IuiE47=PUPpobwYNu9!8sWL~vp=b%cEo>Wqb}WRC|pY-0OWvMpUyAJnvY4Zx>= zCOZZ>($esT_GuBYqwUj;U<%l$9pD{`&^BHnLUM&CxL2OztX#Rik&yt2quolz74zku z8b-(wZyPp%uA<8;7oBKWtu-wg5jnJ6tF{h=hC_buR`8@5U?IYWVBES_KtsJoE?Yhn zUL(if>W1gh)3tf2_!dqoc}z-6+9AP!7LHK3e4=tteofvvi9j-Dh^*Xq0#sKf^-#Ko z<6zM+#wM?1BuN_>wMKPuUWTOX0D29PMuE=gRUKEuSTH8ID~Y{dpvwfOf^axEfbCdm zKR54>i~Gu#DiV-!ZKb&8XKVe=aZwXOX2z9p!qdFLwp?BJ6_Y?(;MI4(#3YcVbWQq5FU-Q5qmfIAROL-)Ya0Q{sZT$0cCC_M!pvvtOaU z!Vta)jDx&S_n?NGr|q)kx-A)AMjwJ>yJa<4^szuEH6VWj{eE7uJptYBmko5LHVAG* zr=O^sn5F_ZSAT1sK{yW*c~R;@lwL6mSelCbNA?Y3qMs>CYSSpK`a93qf&bEZzqmiz zl$$UFfM3VHSh=5G8=>lmX{tJ6nr8WN;c#|~Y@te%nb;n=Es*7U4-}P1w3=VZ=p4Kj zQXFA4OjC|d#{R4b!JqQ)+i*$@HW7jqG^>s+*At@#V*Qjl{2>r$x!bi8`mq5GDJ9`e zG@jt^L}acYxZrKx3u?F$v?uy5Pxw}i{u?kS$k0VZKdSzGib|TXd0t70v??4z0Ynk99>7~4W<)c)YyBlMhckQ z%U<9sB1OTe_@b7O`j5mze-WsYo2B;6I{PNizA3~Fo02P&mn2^s8fIadszw6rm%;q8_?b<~Kp&??t%Q zg3;c6p#rlOvTeJ%_fGPForEGm@5eJ9K|wam3e2LdzKAzgN`B2~G=P~TAtB8xq&_r& zFTtPUM8k%Zf`7jM67v^1X*+O12lwpUcT3`w)*_{E$?I(I^FUzs^Js`on(% zk0G4QO(2oDjuer=w)#z2!!b}>@?ZfZNc-PVFhFj$0O9EB4x1t27jM=QUQ0klQJ;dI z$0+I)IJ7o_4SY{){xiG;mq9(xYFJRT!0?jhYJ-5fG@Gd@jo5$L)Hko`IAjbQJU1^3 zTD884ntWv)CT@&hfW)Ng6hvRJU@l4M>#1(epHQ!J1#Sp8`v$HhJ)r<*wax)<-w<;9 zTgt+K=}5oVNvIfemD9i-U|q{~OD4TJS?KBtlF@?!voNj>!xZ_Z|)CRp@fx%&U{0_1OO6eV$=3#H+!S?+)T zaVYMnBOZH>*pwl$7KO+mF`uZ8Pf;(pU)EJpRj6mEzHTy_Uc{zn>83vvEV1c1PSXRW zX{euhM#`ApVl*eyqi`H8)sKFwUVhS6Ke~we6CQwm_!`RyOL11f7I|T`B*SP*@Zer@ z7A#AS>nU9PXKDV~o+bR940sD^xUIB~&sHSVjbJ-c8(1{8*L_YgalMXc|3enczmFw>$81t~aaf^n&2%B(h{zU$B+s-Ev)76?e=Ye(HX{&A!m~3KFj_41ZSn3~LfQ8-#!R(R2ykt2?1)a@9 z|0=d&?|Ec?X0IiS;~96n#DIP~n_A;#PSEFgj}RRr4Uv#Q%(`Wqj}HJpf7~gYk^n%k zTWF@&8lH%%*qTxg$&fE@F~NiwE}{Ftg7gewBZ_g0^X4QRQ=;!B8dJ_9mTSjW?v4Mr z6jRd{X*!?{97FyErq%nd;CqB?lUY2_2V0Rh^Wc02D3u}45ZCy|U{6x$O2)qf2eFz} zZTJ&e^n(z$%d}aMECp`zEWyxP8p5*0S47(qDMTxBa>t%yUV7<0rMhRFEPb;~z|mq%+=@8J>*`o%>^h*f~c#GCn&8<1^U2$*7Og;3Roq^PU+`C>B_$4U7dXwC+s!iZ(71%CqhnL|L<1^%+hzb=@* z;A99G=UdeMx1-1RIX%-idj4o52^+J1NF*7e&$uJF1sudR9Qar%KZ|*I#6-*p>9ujl zbA;p5hRr~tOQC}NC(21JIN)K@zWju`YcOls)Q`+S1T-+oem?TMTjW>FM1r@MKm8N^ z<@#q%-7TEp^xq&w^DE9TyR)5?M*?@6zUf!iu5P$g!n2n8rk@|EB7oqcB2hy=EWrtU zL=Gw^E3*sgX2b}n4Q`_MKN*;+;-1@Cc$>%r>w2jE!Y}>92ov zzEsXpL3q7Wxf-s&v}$I9FX<48)2%o`kQnI`{WSadvV8I+}_IF;_?I* z>rsqluJF&+5v|}QZ42HIFV+WRLc_)&WH;I31GcLZnA>)O56Wt>H6yu1baUN#5<7#v zI3TG@NLAVqk)QOq*pn&v$Xc(3gdOc)9LC;~7_ND$7s~g2)ZA1(DjQ1sd6*7FI25QFKlAwLcL@}7jO_ELmj90lNW=YWWPE)C z^N}Fje>V6_r$c~1SV}&;a~aebhnm01%GXU;*(E@zZdL#3NL}Zb)#z` z1g-uJA=vp(Ed;V7oaG*dEtVxnN$oH0!=In1uw@M&ge$;|tyC(Pbme`VvX=5EkpKh} zjksk(nzL4UUdv0i1wlUvV^N)TTO_h1e#X#Y9K6_%$ls4>{=SDUbmea0SMc`^;sg9G zSMc#({>F8YTurhz;?YS|ir{;(>&Q<#B?nnGYT^LuYxpNDZMpmp!d2hMR7uNygK^cN zv~*p%QxAXzO{hQ`Vu~!hLa81o(!M&LX!k+&V2X?2OBYdnCFkW816(QGtwC%M{uxFV zZ|Lz)pgglK1+`#%^oU5t&;3zTJ=8g*XWgDAxDg9V==m?=v*74-dX^kW)o+$D{tDd6 zjR-u-X;_T{u(Y2W9trCdK_ty(u%g$RkTEu9IIn8w>7jhJ9#tV0fRY4O|2A{DSfW!s zSa2?x7&<~h9>}8^AV#r8ypGHlczm+&YL@7gtK@G9(MlBitT7o^)%tR_l=VmUjB3kK z7K}+A#W>3@L@&il5FQawbo)}%p5Mi{Ja-SqP#0+xYuGafV`i*`XL?Xx%eRoNa)jWl zuAF`!j0ZWc+i>sip<32!N~^oN*rdJSbfR z3QlPfzg{RFDp)rg^BS3SGK#o-fHPXf>XTmVqU-PX4Fy`XjIxzP^+g86*>Zh(zkXpi zk8_g;vqiK<`!k+>mop?VGWvjAJrAo8ikvwIL5>LS~gs~(r? z4!-TURchZUkhbYgHA>!YiF_c7JY|VLW9l9@*)sbAQ4^)Co zq~ig0YiWb+&H9wJz#eCqFL?*|NWX>FOsG4N+n%+MbWrBl0wDu{kc@t2ec-}>(2#O| z)^h7r^+{m+0TPVRK*OPcR9_4Xn(%_|LF7CVpQwG3`C-zLf}=AjpX>w_4ct@4R&T+F z|JDIJqvL6U`cohM zY#-d1ZqSsaz2JX+75!g4)&ze25Dg@ht}8 z9$yZfy>&Ttb|kg_@<_!osCD6dGV~aH1g=n3?lh?YADg4kh<(aRRVOLv4z8#1<8*pX z$_(7gR^%NCOOa@6tmjpuy6mhsIt0-)J3@Bb6ppmaeBuFOs&X}j1cPlm`BX>bIGaHF zcrbfF$>(p9iN9CiN``t`u6p+GUM*5uZ7|jHeqRFkLi=G>$hh~#v zML&d`Og|?ZSMlE#LIA0sq5wy)p|}}uacoD-&`>qKIld{0jms==%(7@TBl_)znAift zG5{gjiOYafXJ@3!-*ow##rH5E6QJb)B5Vr%1Q-@r7*>Ri#_BZqN9yo7c?{)tk4qYOaM4ukBRrcbT2u=-Z+VK6Gs-X4xB4{0wJlcoj6ze zxA5OA)RL|fWkel0mH(hAPq~qjHO~w`bfTD`U%7}xdthSpFg+@wn(R&l@w04<+`WR= z%GD(7D#$HVTm_$4TCmhZ7s;X;{{)Kc3Vd83N|GXd4`Mx-qz3RO0y}`A+OM#k%xfGlgB^qsVR&d3-p4@ZK52P$kr>91j?#!Ql%nVKYK zx>)YYn}}UI4O6_d(W%;Nj^T$6OTZ5o^TSc(Jw?7GzO$~7jPaok;PbbZzvc6^9xmo6 zy(+hEzJbonaz&+Ukb~7dQo(&fC+$2JLLdLq5ze#Z>25>`QO8n|2x zOp%=~c}IG1dNb^q;HjPoUUAkZRUJWk=Ug~Cp5$Q?=U;^OgI6KG;;QV0_>`J;0|V*d zq=cg0?<`G5ncmwq{F7o@IKGJ2l2%m zK_aC*lml$zJTnzfce`E!%;h-GS8v3(4Nc%!Opu0m_P%J|x4_32zDV!B&qA*?U@ro7 z+p2Om)>eRV&n5B&jKJ)@+fV{;r|)172$QExbKdgvo;E|1u|96DjD}2@&{kmps+Q1O zu20|O9L-@$JR4P$Q}ya}#nak~b*26FG1#pTM zG;|SKk(*-srW7~C9p4aNe9?@}w09w+C!Wzrq;7wa<%5`67c;`~OCe30Z&P zwHS5oZ}bdZ@y||&e+Gh0hEs^~r?b8jnE`{6)F(r^pq1~cRwu7gBhX$Qjv$;&2P`k) zSnE3(Uoh*lOZ4VL#2cM2VJ$dcyb3~h$cr}w;~a2Oo~dPtc^@c2%md*A!4Memqp+?< z30JS~)uYTR*m6~ZCAnbz{5!P=MpeLiAXK#`W7UCX{{Cb(61O6!?9L9AIVLxl*M9yU zvQt}K*UB7|6wGTszelFD7|GXFd+SK&i#8}L?3<0a0naSO#fe?;>+AyE7tq|6g%#jFwmlAe~w_DD{zGGu2FML|u* z&oK3o2>Ze@Vz8iD)j?RG`|)`bpR79A!BgE8znAu;+`lg{nSmg@?;_yw;ByfAKF>qw zL4*o^4^6``&;$JS9z4+DwYhwQkr(D}WR9P|VZRqvOS&*REs_Mxi6mLMGgBin^N1J@ zTLdvmar_HsSz5dbUd4m*8Dt?3qYGk<0<&Us+YiX!ovWZ*Fx6-C1OQ%lm3Dl{8O#W$ z?l%lzFJ06cVj%46LQV<70nZ~{qz1rX4I2Nwyqd++p4SF7QD=_%zTWfNIt~Z&geCUr`Na4~{eM^c?_ctJ+uxpgobYP`@BUdUc1%h~8hWP~n(Q5`4?)>|GvA4B_zX{8EJb?3_n#nqRDbw!us5Y798qjxLiB@k>oz@S&(}o zKZb!yd4w>ZE$w5I1-)4kgcqM!dXceS3TtH_as)SuF zx+L39I!1)2>ja=2jUfczT_}}F}==tdFfY9a8W;LXMNRP_ztWDL}g+TFp!pR_M3JnpDNj~&k*MPhqVUT_Vz}oQ>cW_{oo5#= z&6HiLMx3^(TSCysF#_qyQ9(K9I;O3I$pNKh;;v z3$fB3FQO!^lrGZ?%!U`3$1@(V{)dh@&Ku~1i}NNPV$3gh)7aCwH3u zGBwpW{ZEacKTjc!qW{^3{y&mRVbX&|(m}Le$AM_${;G-Q5<apO4s|l6 zFcRtS*VGAUk@7;MTHA#SZR#wSloB69>0XFb-JSfn*l2Xb>xh&ON8FUMsO&{B^iqxf zbVySs6VQI9-L}%6>>c%-N?gqxYv>TFjYPbW6HZNGdu8I5+apzqst7(x#Q`bpy*=KU z<&h#5TVJ{we3TtOuKJq(*_!@&q<=Q)pUr@MG3YC#mE-4wT0j3RWQKmOg@S%FgkNgu zp1qm{)|+?WqY2Qqmg~wfkj~ec+K7lKhC|dhYu0IDi32TZ!7LOU6bO6^-N0fq8( zZ;*7=dNrW+D(TwCuHn%2s~JSQOg)gUZKZ(F6`UJM*DUo2iwa$Dz9dqt>~()yXQDfv zD}~A{&W%iMU4pjKOhC-<3E)}1^;_SM`E@C{_mS0_|H2lvQ%9ByDs_P!T${6 ze`#G~_`h;A`Tq}5_+RtRG4VfXRxJMe`j3wPK6VWU|6fTeNtpkoKz#f^!lIi03nMYx z0RJAk17LfgZ70)g;7`!~&`hLHyyI^RnG50;-#lXqGAC~7 z%ghPaTt0%wVlu%y;#+mEMJmOJd$h3hf3O)JHw1{MOR4{+_s93s`F(`#`3HL2sIZ`W z)nTkm$#K1ci_F)#ROq*_0R_udMXmEywS|$LuKNqY@CLnk*n8FsYZ>qJCVz95*1v^> z!AlsB{2F0@hZ>uUtejLdn1sXZQgPTBe7XPI`3bUYPhIp8mM*oGhY#4TsT@4yXJJ!hD!Z zpNgU0bde!n==!js*7k8exCcA}%P|?80s3TurU1eVVx@dM3gUoeg4kDi9cH!y>t09c z1b=TFm4+E|EZwtQ?JvYCzn7*#513Vc2tmr4CeH5y3_H_@YwC9mLfIOW^+^6;gJpq{ z<>_B^a=)tR~9W;sj7l5`AvgZwgF-sw3g;@MmluC9^+ZW1Dcs&VS z^jWTHZ{;WCzYY(J@zL!cM)8+$(%tqa;lKXD`BdB+oEj7Nx&821?*)GDZx9JTe9Gaz zAc0TP8yjF5V9oxr9@3Lx--dhg%$s&kR9p0;Ah5lF=Q&|7df8dfk(u@H#+Mn!hez1x zy)_Q|y>~45kM&;q*Dpr)faGkwkCLr1thA(y1|_Hsn=~gVB6s`(ikz5g|Q z5ZEVM!oHjUZiq)o5sP>)3-C zzO`a~tj|~53nDQ?Wttk9f5Y#4?)o!jJ9_*M9-B#p4mHe0rr18iN^@i2{dx1;#JlsN6-HdI@P8&;=e-JAJF^pJGtUxl?-)BS^tm}k{s0E- z72=&7MU@iMdY><`fcQfbY`GGv6W;YqD~!d>uo?sHkBT_{HO?U_$xKi|N7<@$N$=nTab40weY{b?Dtrk0NvHGGkMM04rOPvUdS z^+*wP(>Y*xp-6R$s@!T|Rfo~D>u}WWC@{qbD!By7qrEP~V1k6hWEtAK3PHnhcHvQ( zEIbar=~nd>3Zv;Rd$LVB>*kgSbmsPwvf}5X1#J3*X?iwRwKiG3cs*IfCKWrJ1o636OE7HifOd-5~?}P zOEExx?+bh0nk-1!&Eupe`|S-Nc~9KZ zz$nn~;VD3hjwu!4RVLHDMuCW!Ex{gxDu-l&S1}f5gbbrHr|g5H_)b|8@>^D5y)(Cj zNQYXduc!g#%F=>hPC@WiO!ns|tB20qD@oeGFZnIgZVLK+xr`lTiIoP<7LjpTkP)vn zEDLhdl~jQT0d=lU&(ORN#V$E#x>i;0rpfFD;%uX`F-L680Lx+y_ZM~fB!C~->d4bo zSt3v_^+k{GbfP_>MqS{DTP6ez>r}2LC#@15`7cYvwy7p{*ZKQ0ZDu~i-X*EsgKTy` zRTe~wemd&>$N2)elRt3+8u%Ug6ViUSSpCN(ZtCikNX@6g8)<`Aw?^wgtzYC^&#K)p zC6meH{Da<r!VH&)mjigGx-fUEV=g{RfbiKOpf&YtkQRjW&7fot*QZEKUNn)YZtUSYT5(x~Q z5ikZB%mJoJHdg!i~pEET?$2~Rrm!M!9ay43&j@eHB*+kLT7Iyk}Q|H z102$H9_WH+O9gTIox12m+k z@r=W^1bug07e4z?c(CeVy*?YD80*rewF=!2ACg1@d39T%2iYK0Vm0X+^9i3h%~I|C z%=yIaaX#Uxew3{U+vL3KnbSkQVgrl$!Zjh8W5PFerww8%R}){@8V_p?-!E5 zr%E0Lre<1=T6+}*1>6CE0lu_334w;&02ckMOru*~VI2 z+-2|BJt;fYvt)Ksy_EaT!}x?0{!$9FqPq;cr_D;lQ5K##OAur+n#ZirI_(p0Jr2a% zVvg4236oa43$VQ|P%dr-Xr4zoDWpMI2L#lHCSlq@=6~;!L`geyie&=r!VH$Ke)!a( z{+-vxVK8i+&ND4Y`3{84%1`9{M$X%wIrVhSPJ35?`^W(frb>U!hoe73RVYJitXn|} zYLWC`=0}bI(u$n%WhcO3@9$k75@mzru8kxi#6iqZpf#X{34-!UzCsNSL%ZpkhR}Md zXRzM@K4Ax!1Z3bbdUeLca5f_m}P7m4^pbeTCU>eH5|RYIZUK zAS$`d<<0CUmKfArL+=UrKoe7OzNrSWAZM><&JAe1;IxeeI0O}k(mBY$G2~{kOyUpT z0QSRNi`XHi*x5)C&QFkzvwt9qP6D+T_7+r?XD0Y3Q#X`Q{g*PO>qP)0_*2{G(`_xA zSOHF!HJc)PfkByM3&ZT<@=BV?cg%T!6!NQN6bzTxA_}ra`;(IPu>%j}M%gz9q=?S7 zV}c?}aKQiz5U9O!wO4-Yl+1!)Q6?nwUw2{^EE3CVSp*Jsp1PKMA!ANV&J;tO1*z3J zA5R-ZY_E`ZHrnabuO~yD{xpZfVY5ysFbeAcD#4@)wTv3Jz-iL$q+{5h`~c=XlXT*B zmmj>=_-*k2S(5QY8)V-P+q_n5ye*K#Yr=1Kg=H5#*cCSP3^rp0+`0I+*V6S=a^24Q zP%U57L)(28!7hpLa(|?&04;D%Ud0j70!N?)Apb{Nm3@G}MhmPLSv-VAot`CSZR`0y zy-eY6%Q9#Il!X>R*^gwCWr;VvdNB?al7SGqFN_H0M28IhJFfs@fV4;OggoK})KA?9 zJvgU^2}-@EOq85(q*%`%So4 z-&_gU>NgYw_IZE#%)9c)z^ZQ&3ldRw16`?8hj^AGVPDqtvhB6Fv@H7&e_NGpz+ZRS zI_hdEb~27{^EI!Rg1e>MH&Skglmo^0LXzg89=_}SeWt+w1sNwpxx;tO(`o|gUYWqD9?|I){O}A@ zZX%wcUU4re6WB0B zplbhXa?Bu?<6E#`o{ntc&Or#H2?>c315CNHL1kx{2F3+DgD6J@85I?Z|86 zg&XI1<~=OkvR5n%S663L;Njc}8N<8*x=LfTZOB!bA32un)d>x417j63ha&r%>sD~? zp&x>C^E?Pn!JH_L9luy}tW5BY%%ph4Y^ZLz`mtUcQ?D&SwcML7kEoXtr=BnHHu95m zKDm7&HvMasoL_l>{kgrRj|W2Kd{TD~yHrTV8uu>uB$mufdgVFmNWvo7PJbJ1KkJb^ zUQg9aKp>iHoeU<;pZYlY`|=qN@++Opl$M1tzp7ao!cJhIZ)gO)o1FEYIp^`l8jVkH z@yt0{n!$1qDr~U=R1$LYwA?H~=KtWi#_e#_kIBP6ZN1OBupaTZf?u{3tUNHVpeyWQ zJFul*CraBvbK{uj;N_zKgH14}mP|8nuC4q3F$MdA9GI1vG_G{T;_r z;^4TU6`TR-wYqH7djBdZb(Ujy0zRGr*&1)P-e;GL-e;$%_pyG@a(VGlDt-1{b>4|H z50OaHfa);rfsYaY5aslVn#ODWN}%$Njy%5Jn)(*~dua2HGrp~QJAH1uq`J>F2@u_N zy~!?th@lF&wp{UrV|?}^O{_Lj`rsd`?dL?v-@KSj!e#u!_+T>i0}#MJIvoaKk3`Hb z3`Q`-8UASX)AL-@CgxY(j8HalZuR*2TJlEKZm`^Ba3sD_$cBo;hk_QS_TEp$xyGBb z!DD?vY%UpaF8GU{t^Zs4E$L+EEb5g!%3mgoTVNmX_lCwqCUq0aY~VTYaQkyMcs--` zd99gpe0&y}Nqbd}OC`sv=fSx=pKC$;vC&k51x+cFrI>|*F59OryGHlcON6KLGkFx2 zY#uk0Rgm+})H~^s6qB=jV)1&8uK;(o@CL@={MnWW{Uxb?Asr9hmH6$>SKIabAXUQhrsRQv|Ju0z`aS6u)oXO z9_xL9QcOcCu8z!0BvIHW6E& zW7r~t#K0ZNOiPycDe0dx1t6^rE;7Z^%VC0SXR<|Y`8VfT#4?dXSe5<9nN7Wrrh2As z;$*vt@GOmbOe&%{b{B27W@tK~-K&Ohumc2}8MyEr4nJr)&PFxy(>cpvJM>aKOl$nk zBZ8vO4-FdsX8C10*w|5&L;ya=0Ss~ipY!WkV3h2zJq5z-I3%b8UNtii!upWfi?d0f zbWX{egyc+EXuVS_UI5KeO=|yY{Mk1Aqhn07aEgZit%mRef;?`Up_ZM+4&W5-dxZ;h zTIi4#+@-ln%>fO@=R?Ig3M%#G(rN-?HTZo)t?bu|TH?`k~K~tO+H;K42uH>6fYL2Ws(6 z1pPpMepsg8!kt-oW>jZQz?V_jdoz^q)l{?K8z@}Qk}iO| zHC&_F8A{cMwK2F8&1ty$BA% zosZFPj6)lvgfU~H-aaF;V{Ak8M0)77$S&&sHRo_TdJY~PDj|l8*-7*dGa%}F+Dgj{ z38$X0T%R||N#F*hzf98{N`~GH$FU_0kuR_V%Aa}!L9q>=Xpr#;+>JYXX zJSb!9E;vF>#@A&)7br^oqqeViP*!qr7-fPf@Q-KSL!=E_0(Y?WoOQQf@45SI`5J5) zPIX&n!bRS$>*R#9kybkd7$|3`kc|qSs>5ib0M=^dj%L2##EiU=fx*p^3akOmu>bKG zN=@^Tfp*R6l5l>vdKURA1=je)x(+aw=EyWuVING3*4V_*A)-p!N0+dZCR`0^Sre9J zLt9Y<{^v(`Tr_o>_q30w;q_q2+w}*nx)Tw#5D?c-D?mn*cjZ^j5QR>KmoWeX!vqbP zH_#^)1MnY560FM-srGf98Bh(521d*Q9?rc~4443FF4v8;&dYJD_9OF4y@b2ku$V`% z(u~vNvl8$hS}xNNVS$gillI6K^iIS(y8}m@CBZGrnp%eXxXGE3>|Oa~v#K>4^E^xT zdlP@C8;++}Pt7p?+oTyI^!q=`d#hc093tMTuDj@8l+2&n3x9{s=&nn>6VAr!}Q7-F4*pep*u zfaxa;nEs0a(~S(5t|uxOhbV)iIwnP_Tz z(S#66ND_x#6ZEhvUA?roR1Fwa=0lNSeiL#VD|M=Q&jtb)ni^No zpta%1a84XnHJQ?uuC;8==XZj-pLkC@jKSyBTfHEU(?M_7Ef}e#Qog)7zsR=z9rOvZ z#E8y>@Yb);@Auw*CJmW2>n-52|I}%QE})@ zoM_!3E{NHTGeMldXL+6lh_%qpqT$TExwA7mQ!CZhwX@kzJBz-+JA*Mm$l2$yg5X?6 z29okkWT3gvDoCvB4%5{I;YO9eY!^3fz*)3n>(OGqB%YGXGly7(8;QUCszWVjoLhMa zZRJhNu-eVf4{YA_Uw{B-O$vQEHtpL-K1JPEpzLq(fs640(<6g_G428Ie2| zng*_npo@L0>2ppT`iTES$HYn*cdC;i`7Sd^--Y7}quCv4vdP|HZ(lGUQK!v!rV-Wl z&UOw+jM5`(cC*iNe~>X6ThVXu)Vzr5BaxxivLKj+%}$c*T6ov4A$qEz{(hwJtp159 z4B%g=(K3M0=S&R(d=?`D@WJ38*1}Cmy&J1rf4oIUl`tF0=un#nyJPjcLqsBF91GgFq$^Vgf`;64_6L6c`PKNbg!5x0y_@>hM77* zV0IN4UwzOKO>-#nE$tl;>GcN9oo5z&YZ>N|K`xf~ zm$ib$Y3h0K?OJS^w^=@Jx%Ry}5c{Lt%&53i5{{UTkSBWA$TFM*yxtc#1*himA?b#NwADm69 z&IWsP?qvn)gY7&ubRW(6-k7n%q3N=1!6R(G>Y&S0!$o8&aU(6r<9e11UE0RiW+sOd zSWEF6x!l}VKx#rQl&aQ@0)w*=F0psdl|T;PZT#s7LS1wui;1GS(w-r79YrWysrLZ2OIT*v4B!OxOU}(`h>O zN3{a(hyhq9ZWs$F3N;j)ezd!f2b>)|UJ%#@c06beJ*k~1yJBr?k^AAJ9 zDkxJD%8ZC1QofgJ`M#$WpsU=yPH2OTRCu+_6|;Mq>9q*ka?MCC#`YrTWH(MkQSOP1 zZF1G3K9VbwXG0oz0JzMj$23SadFw+6qQ7?|V+(&BRsos9@gth4e1TMKj?3tRo)cC* z@-f(;>!`C2e8Im6w~ws(+CS6>bQ0E)HQ)I;uli2ibp^qZ>5P+8n(H??t(sbP1<|a! z!Mbw_fJmvs?j2X1k-_DZcVFPkk-!)5lWn|9T{_KLl&!Nu%Cf>L5_jKNuUVZINe4mQL0`5$@uFUU2LE4|t zODK$DBdy69^&@k3d+vHIDIsB)XUXINVxRIWe(U3@X8a0w{XErka7V^3;xsb_v!H4@ zwObSadA(Qo0*8HpFOWNY@`r^9Zvs?Vf6Dl*DI55-fK)I!A7G}Ux;_!rzTaZ1shU3@ zwHB2k*}xYB3J@Je)NC8<@8<)#4KRWZCY1){-vJc#U#wZV2k1q7UZ8rqIln4}ST_tiS|Cb0*YBOJ$K zgNDOz1T_C;cB>R_0EM!8olb0f>K-Ul4l-epw6v_L%m#rI>k2rO!&YICj}=5fDI(u1!9UR$ zPvrhyZ;Bb^53Eg2S>JDHLfv)Vs`@7Kb1{F8#ZQ;N0B`@wpTqc;r%cs%XjuOymgw%( zpU9u>@w2HkH-tZNQeDa`eTM=b9)SX#@gl*t?VstFH~5kU@<^gT2R{fT`(K6MgtHr4 zx&c3%AcSe9G~>_9G5)MN;_{EcgTwd$P>lD4^hgJPKhp?)=oVJ8L{FBG7M9^B=3fBo z5e@63d{0=DabxU9F`1iK=780nHG9M8*!v0rV^wbXpbFao5ylQY%;mj2XH0JN1|y^e z->MM<=!W3@(YuSK_W4q~r8n@$64vT~TD*}d?5)UuJ=~w=aiWB)&6+$s##VFg>xUrj zX61VOAg6u1=bQRaRa4dwkulhHu!`*3)D<#e;HgfMh9%a9(Ur|nk(dX22<9E6Eyg#< z9zYtYVDTr|14t)(+{K?@4+rTD>ibv%>|yE;;mR=O zVbps$HoJVe%4V1B3x!=e0!p>m4R#qL${`Au=$0slDC)bON0l)3UH9>)Lw(m={yZA> zT^F&0Lw(mU{&cAC%H&Vr&-Gew;xCD)gVGoKLlqIp0CW{C*IB3cM?rn8o%$k24<$sK z;Gt;sKu`-#-rjJBj<4mKRgS^w*sJy6 zv>7W}?r-mN2B(F3aN5r9j&WjnJf5@ZYAtH12bj`=5VqxNiH)z0&&b4<@&y$952e6z zwKTp-)G077j3B}bPNx@)^WYG~^U*W*Arg|OE^mhq!}tpMl4Vp&8<|cUiG@=vOsAN~ zDdmOSKgUEF=>Hzj{_kS+9{#V^p^Gyr1Q+^BKX(Ox`w>Jcq-)qT`gg!%jpYW7qs)ImS07Oc)@@Q zI>f9-Y;(E|c!4XXf2+RC(m~~7Z}1+ku$XMLL;Z5Fng7Jf{@VTI+-zMAo+bHH3YOZA zr!S|er}_@QIvKB8`BU{P`ka^_Zt72(R5=SiXW5lLE5F{Cv(j@{IrKe76oWg~BmUN> zYzY4LD;wyoT9%1#H}QAIpvKDm_#N9Dobf2N2;C}W~E+HHKgFTyq;FFJ4X;Ed7a5COC=vc1QJf*GJ#l%$P3Ig45^ z_l9Tpx7Wm2l}$1Bj9#7Py3`LT$+|L1N>pa5NuN|A+LE3N;rQrLBR3S+69fU=j6$`$>A_Y9(@KN#i{Y<`d)n ze02ttZPnIVtzZGd1Ni*4XZVMk55B_e*HZF?%3)v z^dsh}?4V!7mHKgq){kFs6i~T)5qp669|w<&56BhzZ-qS9JNPp`uu*>7%LB}g|InXH z`J7R&C1fZol~yLM+3%rpzRe~~4OvrGE321jB9N1JvkYHnNBPZ%2Opy{0|M`N^I(*hV5bKONU}Femyg;sD7qMWH+%L1Svm zoAegUYrG>A-k>ctO>lNjFlFFcB+3N)=HcQCy7KuefOYhNJcNhm_ag*Ic}vETM}f8K zLgcN~oe%vEQNfHMj2)<&OrJh4hW#Hg$ZclCKK6FCT>o3fBKi(i-_M>`m%Ro z-vluc_Km;QrOa~q-?MMuLDr9H-wwWQ+qZ}3$Jn=T>{r;o+n;1D5E8q=#cL2q6 z(LZh61X+w5MjE&E*sRAfZZD#&?SIA^x3<*35cIHd6HG>hEjDl+bOUQrelx7eCF7!u z+t)R*)}&1zk|@4$dx%LaVoh4N*2XQ0T?`|s556?EWSoeeEd;P7eP7bHM1w3+VaLB= zQ5uY|9_j&AA3eUB#z*1t)nxvZ@m1pnC5vUkq)}NTwT^C7{%q=5u1A;TL3C(TzV9nWWn%`6%C!k$qY{nm z7+Gx~yX#C4D6$rf%B_&G+M~PO>bs<4S(DJaSlbXbAbS38Cg~l${{e&+EIQZkci(Kq^;UjuD}C_J)W;rjvi=qOT; zfRJW44nTMf_Ivxq8Y!53pcnh@@>rxidbUA|UUce=JMk0ktInrUzPQuF{Vhf(aIPKW z47mOFw5W7`E|cGSH#gn(EWyvvslcCo{wMdOMgPE%&KirV!yWuy89y~G%Olh>G%03t zS+$tm-ipCz#`4nu_3NDl^w}91vL}an=AdRG@Q*CPWL3^dau%V$0^xrJySmfpZU$nYJ$oA?0=S8-^1y@%jv(CG3l||)zoGq#{ZACKMMFVXBIYEfj<;?e;fMO z8?}FZF%5X-Zn5$3uf@(-=E_Ne_IwWqb19J_TN5SA>baWjW}XXEWE<59Co{VT8`heF z@VMu)0tkg;&Rk$MW>tUHr4r}h*C1r6sEzivRJGpmb3>#IisoQyJ< ztXxe5!#&TF{3F$QuZ=xbarQSd5!O7Hon;zT^!jiYCR5OY|t6Ybwh=-n@>zfp|Fxv-$cW- zpV}TQwLLriMd4G{N!SPEr{AH`HTE(RDtpB9i2p`^P^x zDk86uJylNv^UC5xXHV5HPGwgSvu(Id^-eH{6n6I1{m?1QID$7gpK)KT%*?9FUFsCJ z_tbq#3Xh?u!fmP_mICm+C9%8ETj%jw3g}RFNidm)}4R2I}Pf~WMDT#Nl<;A zxLWF;n>o8E@1fa#CKbRCptRmZXwq+>(aPbPMhH6){`TN-uii==mKA7kxRv1^3Y`^Oz}_x0e%WqgEwMDCEA zs;0B3jE{W3YAU2dgfbnAs(*nwzoX5y(*6LANLrcaBEnODGZc~|p==LZ<6riziI!o= z48)BdSIu_svV@P?+(8rM^$bQHCMYaqp#L=MBs`T~)Vy;C0tu+0Nz?>q=EzUs2z72- zmK%dcp$*VWNv2Ka{)^a3Y$`H0PAcF)zOK821#kn_Pw7=55MXtyWU54|iwFjM;MX_| zi2R1m;-=Z%ZE)57AJ%~XYzGUv%v0T3UQ^99u{lw#!oC~gpJIIRAu&TIM#E#dzBvT` z%lB&jGx60f;Sq6T{I@5AoyP)Z=m?wtmY-b5qnyei5e-!Zq<@)Rr_`4IXHbKf247M7 zAC&?k{eTbB&v_S-en=?nFG?fB68q2}qy|_^s~Bb+eKM})`t1VnmGfNY@GW;mGcsFl z?~fWXo9nR6Y{$qC)c9ut8*E5~{72zm?|+RPOe6+qS!W)$+5dcljtNw6NFWg?|Dp-7 z|M|fSn13=fN(&^!u2k=iv&rLw5tf6so6S?#ae_&46W z<+?9X@Sle?CF0*aC;r2VNG2MU>p%l-B$JAb>_0wA^FJV)41i((05x_^Vyk(AT8`)V z3&znMprGcg^A}Y&1y3wL7s26=F4Q<~MhdLWOO`7-kK&`Tcf&*JM5x4m0qI&btP^pA zs1x_V<&^7@6SR0|!m4E9fqMwPq3tV{7u7t0W`iTJY{zxxGRBnGtL_INbpX-Pczp=Q zC<8{a0Yk0^jMi1To-i2H>e9Yi-Z2b|n2~@tvnuy%X6J^DVZ?@5sp;?FY8^$$5ldll9e zc&iSyy1f+_YFBSA`@ZgzirZS%`#-F>?Sy*&2CtRh+TKHv@-_Vu=(b4NLVIU;W$zLQ zr{292t7$RWoR==H=oYo}nyBCm^3Lg;=~bbzY^NUiIkJCs^CBf&%eN@a=>3z0wS>v^ z=0m=YI6%CgAGmO<8V0{oLUKvlg-hKjp#4j&bCCa>zq5XA0``N%BD$5!$Y;xi*BpIt}axy49N!EW#)g;H#r>na=kSFMX-~cA*)Kpy4 zv6VAr8O*UZjm!c4P?)auL%Q;_hVVpCwgsUC2`f8XAof{J`6&`r0#4}TNPdXK9q)yH zJYOE)rdbr<6pcbuC2S(I%`iC|)qEUk#nlY5YRz%TKK+5ZA}X_1dH<$~8{wUW^@n=* z$A%zIZ`6s=^nCzy0E|!=amGi%S{W8%8f*xtx_$v97%tf9h?Qc8A-9~yKroOBWD8SZXGd}AOiNMrF0 zB;&0hkcd{S6JQIAIq!EiA{IpnWtq+n6h5o_a5Uo!{KW(;OyI#X8&D#>SdeA6js(Y}FM?v6+ zeDRQdf$zDYj2xE4w3U5h$rd_C!593CbcDIZOW82S@cc027`1YJLjc8s-P@6!Tv8Cc zJpza`n+p)!%E1PLAf@^OUm*~Eg8;El13}I$mk*aAD1-eMekTA-sVTuEeG`w>2{ww0 zUfL8?m8T|@ArcSy4>cFdH7}zAP?HtFY?xzG)zGbs-(t}{mf4usR?3v`wYZc5lU)xL zCP<7RG>3H|M5PE0k6;Px_I{FG%NM*l&lkLbC&id{3IgvJ1U^LzZ|y6@0h_=2u}SB3 z$s>bPQt@m(EE}H5MgnJIk*_aM2YYwL`oaWN`#;=5z=7q9Jz-cLq|G&`VPX)d9!ro| zf@uOV#|HhyG7?b^7cw$Y!$o%LiB&M64z`c4wNNr@qKUGT=%&X6YJzUh;M)=kf>-3J z9zWE>sb@q#rcAUtj1b5%-ycmNr$=P`M{7vYkG@#l!(~-qjAEu)l`_q$+=o3{3WAql z5pgGzFdW$D<0fVsuqK)LHI8~|RB6N}ZYAzH3dpgETVuj1C8`5jf37EkHKspFu}a~< zTKfII;9Mqya69d*ke;Q(F%=Sy0rUI3!L+4KFy(5cJ%dZ_$efS;#lD&>Ax>>DgDhy55h1Q6d{xQXMd?Paa? z*Hd8;(h>b+C@FY(GUmLNeQ)y`tIAt)nQCHxv~FP(#-o2wznlCy&eAoKKgVQi#$%oQ zImGgX&IqYOG7)3=tdQN zU`X$GhVR%_) zqtUus<`pjnb_?MK9d5@e7`T)sVcP+#JW1_BQCoKL4k%eolSDrh(j56DhRk~85v*%K zYd!LqAJ@$h`j3d^{l?_C?f*mZ9keSxpmFmqFKtA8&G{`yonIt%WqLrp@RrOkuKSTD zBd9vC>t0|8m-UAn!`lC5(->wF2abj~(W=>c=xb z_R0UmogeFb%hBh@X5H;fDJ7j4e@f}pe?&|vEh3fR!Ek=;!^`8(kKK)L+EYrpyq+Js z{tt2I$I5SxGo@tDj~&kZ9rI()-{o|szdL?sE`1}SGvce8`LPyJozZ%q^JB{Zo!uE- zUeAv`X5%}0e(Y~k;&jGx60}0pJ~fnVL~(Id9^vj{cux%`$?7A{)wKNM2v|l%A1sybqno> zZ-Z2VW}ceexZ~^6K4q=t+Rsz7jc>VuZ5`N%{ySo_Wn5hHH5}x+X55m11MMP)0x(hM z`uA6e0A}}&h)!AV8z8ST5i`#K#2wIo1i8%yv^v&Rm@I*6OeHN4c-4H#I?-&mw5@4A{KbJe2eh|uZ|yhRbMu4 zrS18WDo8f#H(0A&O=Ln9y^)bE*qbM3ta}3o)StL*r}ah#;DGwQb0d}WUMlCkYM`6u zehNN2Pa_-SNyTF5j3$D;G+eK5r+=eo)zfaO0GO6m?#w@x)Dq;Q^6N-f2auIWk>jqV zSHrOB{HC)6GBY7s%8#&?nIGFs`nU!ovJCoch8F?SKrz$B!~V2ifUo=8b+rbhEv1x2rxg&rIvob6e zH~hm6fk0#5-w+_iJLH(r+bZTDCmU$ozXNC-eO442=UidXXvcnNkQZGR>X@iIUoTNaVB56FnNiNpUz@=P_vx4&qfg-^T}`}fCx--SAAd- z=3kAF^6OO7W`Ndm|N0FugoIJJ7NdaG$x;*U=rAvLG#>|K%f8P)H{n-40QXpF?|e?A z9;7!Kg+9kxo2f9Q?O^`&@Qz5!tpk8uUK1Jw@v-x#eqa2XLh8i7XQeUzeMSW8h4Bqu=B0ft=R=A7M+D4GlhiSh3wLv|mBW040!ApR}1VA%eapCZ9-JpTQ8Bnkfi5&s^c z$H6+*Ej>F*{9AH1=_@k#;QvAV`(_>gmP^_$Ty*^V=WN8kPe0E1_g9@v{2LX>^&~6+ z)bzx#p-Br+xUu-RB*8Qu|87p^h>m}=hQzI4AmAK5{v9zs7XuZ4 zeOrU^c~Hk+aqtS`uU+&=9l=*O?2<1qF><6HCx$w#C~|bJ=NC9Sw?m~mm>Ozpf~oLH z&?tkc>bZP9Iv+xn$kF+PixCugEt8}3S{Kn4Z*+bhl2>etfHJ>x$Stc1RohP+U^XJ6 z{i-uyi4K40`GxAI0|6RLl{4+j7Pvq)j;(tS8L;Np9rU^a$^hWYy9<%F|+W9d7$xU(cV{VfI;$Z== z4f10;qqOA5Y-XBEWBD;w7p-+QLIv%XyO`dmmD}d;4UxTbtBvgA%8!v$#;7^SsQj2C z#Gs@>>XT0}J*k@7_(x*KM!rYf2L03daYH{M|96Y#e<|acn;Fx| zuH*3aJCds6@b$rZ%qEAY`knkF@HOLSvshYKd-T5|@z{X1f1q1xrTzJ($WrWZlA7_6 zjqT@R^{}X>N(S`3!ABY1kI`aU|HzOedJg~i^J6;R(pY}XTOWc9op8DyoW&#z!6^nk zM>=HiHll{s9wEk}@?#!EzKM~7xKvmmRU-3aE|d%vABStqkC`R~M7v}~YnLo_;1`<& z8=^8_Y!YZEjsECoLW1-cH3`gfk|1UhSnd4KP()m|h*8137y{A%FzZJT0z(LHED~lm zixwHLp+KBK;wzinlXtZ%Qm1)o?37bT(Y zQoKmQxqQp)Meg35HlCVMd{1|yuCKj+TvdH5PtAD*O^R~SyA;j9qe+#wVcol@CY9A_ zW;m_;BEM^kZ!PzC^3)urTZHk{(|DI(d3(ad8?K(L*ROeMF2nb@KVB{C8@RcjfW#A= zd1`xJ+U~zhh8U#O?DteZFSRumxcrh>@dhu#MhGkFH(?TXuoKY4Ky;nFWD`Nt9s&_m zBHRjz-{mwk@yD&O2$uwn>qh=pZE(@8&ZkZAkZ>-p^tQ?if(3wl zWBsODfIjFLpGA2FQZ)R!5gTqj%TqV}KW`xxBY@XGnyb+Lt@QY@X1_llbAo;5FbL)D zi;JGf5w@*dy$D@e1tw_jpB%{mlW&+-=D!A;b=}_Vx|^|iQ=m@~G0{zS}Y!8+@YR7*6yzDyc|^oGb81hx;wpf}ZfB zZ%KoyLKL9{b`oi20}oLT$)a0bG#R_O=uIW~Tl%lIGo8gs8?y>J!H%p&LIS4{>j_oa zkC=P6(x!-!H37KjVkX%vozVp-t=UY$LG*=a$s=04L`xwzwJTD0ZPe-|mFfka0c#-W z0KbkkFd?7EJw3c!7mMxfP$RTJq7gC9Ieu#WPaeno3+(4)4CD~v!)R_W8pg*EMRT9G z8J$B!LMBHTR(tYv%!}lAA-3exa1RTh19{?MtAj*ZI2N&-nJ{bfQe~85xvNF}b5S|n zwIyF`O_~h8<_IT`AoQG;&{X zY~pIUp7@{v?wt@y0}i_M{U{1dayUry;TmLm$M1yZuTQjmlt<1_+S`NL8+^ox2w)DX z`(adNM4*@*#)us;N;@KeY@J*$BLM?4n8%c)0|DC*e?z*Ijsctrz>rW?5ZGb@0Po>A zEKbi4WOGG8!}dW?TuV|J0J!gG;!6SmMUm60@FuSQrG?QdA4XGkfMD0EHt+1JuX`c7c{v~4?o)%<7qGqRlmtY;~E zUQQX5{29ohwL83p#;kr))Ya5i&Q?q~ZPCV_egGYQTglPni*^DkL6uS!7~!=s(T zr0~%&CF*h%U6YrZXuClb1m^eU)SS02zKk=!an^Cj_y0+L&6jK911*XvR=kgzUo#!s zDn;=x&S$&@$KL-0hEv<`!HUV;K6^;lrbnu2;vJWImUx@Y^<{MMEXhlpJ2<1g>i(~9 zX#;yz<4pIiAh>Gx*|#{?0B3ZoXSd3$b8kfyl15)0{I`D9UfqXRYB>K~$NE9nz4$~$ zd16A@;ELSAyU@k5H1+O>Qva<<7bYwp%=)jRzUqStbraNc`sIBi@iG@Lk>A3%?fLeC z3M8$ise5#hi7NqGPu9PUC4R!wx-M#pX}kmKpCk3h^X*4`45grTpnB?`yXr&O3&qTz zO~)RFQS_l(+Ize9zh^!2H4*|X*M)oT#GKSBAi7?)c$4akQ?;_AsiSQuhj3G&^weN{ zf*Ma7hq_0?6pOx#OSFh0$9k{ndn*?aMxWnfGOE2xfd&3UsuG}4XI$|c;7a*z(oB1P zZj-;oG8U-o?9Fk1hv%^HIh&TH^HCD-DsWd@hI0YkAK-0S3k<_H;07nF@Qu7SyYqWJ zKJ4(}TK6FsE0FdME|UT&n{lbiz2rN?;O=GkjkO9^?n}5q{v|U%46uL|-iN?hJwf2S zlpo580&)0JK|I3-u@`Gr9V%W{3?QT7E5wHZ-)LL_-{rVe<^FxQ4c{RA7Wi^-gY~O` z50Rk(8EW5n0qO1Q8i4c~9>v8P&Zi^Z9>#mY+e54yAE>Xk2vA?+0-(Obr7HJi2dIDH zH;(1Ba^J&^dWuObz?ozc(6d7qF@LV%JGCKv9gYFtFB1)X`*8#K(uMlbNV^Fi2GSAgv|EO}PRoy%BTj2W?H|qMYHU0)7@EeA&jfU^bYa76~6_1Vv-)nd; z^j*TbSpO6UzFGJ%@HZP5z*mC{&OdkHn}Xj0-$dM~wO?uYj;x4;@7Bu%e}fvrciu7J z>tMszUc=XFnT*!-ks3y5o8rTOuNf|Y&y7n}?jJ%n{(jzM;MudE`aYrT&i-9C>y@p@mug$h8uPF zmquo}{v1%%;+P_LD}IF1*wX%562BI3U4|-X`Epz)t#w_E3pXBof^B1dncOoB&!qJW zaHCE`>o5pSei}ggyzm4JEfIb;voKvoNcg!b_nL5h*PX?%>6G5-xKSZybXcxADYF0C zcvBzK4IKa9^so+JTkdNZh!41X-7*uW1IqA9TVEzpq>CgVvPCw1wk2*w&l^ z`>f~ox~=lsVE;%5rI`kJHlM*%JMqXK_RShshU~YYf{u z+qBhAx8>Sra8j4pZdn`-)s0S{d*oa>Q>!SE4H+=rS4xx-O`X=cK>$2ApQH7 zwDbq3rT6WYR9=RbDb6*k8Z(Y3%zs;)lLfp zTwQ8fU=Y75cc{~X_kt)Ga`01yn2ut(201M-ZlT(m7Bn83NedV*yXT#wnE-)8V9(w9 z3ZOS#aN@oduhcAQE%&Dhkad<(H|pk_p2Qt~;eWS?;)FLdZBF>|IpKs^H<70nd~Ng8 zH2l{7Ic`9|&ddn0T(7hNFWhI^It2g&v==7XZ9Syh8Ypdfowm+nTht3@;YMv@2889h zku41|EuE}eI)8%Ql25nfl9rBqWkdDbji#laaHHeSc(Gi|?zdZh zv0ky|9dxGGx;~ofw7kXKBLB~6`R{lpEkBDJ^|R!P-#@Q0Qb>9!w`j)g{x!msaasKWEic|t4)9A~g*5`}1 z&4$F^Y!_9{bQ!8ol=%(G{qIchO8zcXGM)9!=oxrl-f*ag*Vx(rTmVq<}bGMUIV zev67-J)p~+kNc|Jou9LNSkNh*aJ48hWIZyDS`ZJ_#BIAIzN9*zs5_gb+L${;`Y?Cm zemoCN8?f5rld8A=LSGHVSHJ{~3<7=b(3z%7%8fGB0AQj3AfaM3_y3XiF5ppBSNnJ- z7no?`LWsOKrqI9l~r)6o|sET_$b6L48(!%*97c3d*+@M;m8V?g8Enh5^L(_$@yp0l zd6v^(i2gq+3eToUo@ABh9#zkKwmdIedCdO5Mv!}7W&Eox)FjBl64m!{nIZACP4SaEt~Yz-{6KYX#EBUj^1ZSyn~y z!T2k8qUa+pLaO9|{VORcBaXuOc0+mK_8PXnHk@#$hrA7TH#Z^{1oco*3} z3lGNS?}~2Por;>8+p(OAnp^^Yy6Y)rWa#N{JSjCjiHQ{Ezmb~$hP*s-`8Z zX_i^jFjdp?trkr4R83nk34#AFQqu;!%lNwn543-=)1w|9o5sEvjaH>ByZLrh1jbwL zIB@R_E;?iC@^>WqNABHf;?@7pco%5?2M@-B3Yy~x&F4oHUOcIWuIO81;q}!Mg4gE) z%~MuQDW4D;YRC8SV4N+xPHtu(!=~~^#lI6@fG=(O=k}PhHuu#V+~d-n59|N$-(`K{ z*YMqe>7(mE-09p;t7ClJqD!6J0D<#5s(n z3RgwMF*ynkW3wP1_>RN84N>=}IM~EXN&ENV=fU+6M`h?{m`(QnQ~t#-$u3>MNC;i? zo0+3-7NDG&<(e<&NjpM%tU&6jeMquKfUF|eKNV<=FUATovn(94fe@UmlI5~It!Q+1 z^|i*3pGc-3TbWRN0uE=WOt{Z`bbj>(Mlv!{zkoD9vNF1nQR53rjMdcs7_DfOTTYax z8tW!?O(~=5?=fWh#9FoZkNfYixBLFvitpX^-`2my02aUhUhA>{WT1-l-(2aUnR(>D zS$Wmft`}$Ky9;OKSN{r61$Zi`z79{rasO=Ltl`yHb>hm?6jsG1waJxLbeE6D!(~}U zAN6^V^%?!F_yG@N^Ndfmu5mVY|1}2TlR7Z0oq6#bzkdM56o}ZRPT<$CdXydfR$lG9 za)NZq5DP5ipMYgq#W~>dQ5nKBM?*h9jI7=D&xNtz#_ONy|B?KU>7IWc#`o^vd-%B+ za`p~BxY7FI)-}c^t-BJ01Tl*)&8RK{Ph^23vZ~Lnn>kR%hoV^nt52z$nO!t1yZXes znYl%?auIq&RF@h*4v+30zQcd%8NN}mx~Z)0rfgnCSq%Ng{qbNkz-h)(MZA{DEA7Wb zjR*h56&`3Sr*XH{SoqIAtaO9_%Zi5OR=?y8R__JZ!d6(&#ZqLFCF4c?C$epNSw5`E0=|JNl=QRXL?9 zM0x^8tTpw^j{qMAWov(gRVNP7AjVZK&d-!77_$K*ju8+>8GobOVT?=*-_Q_+pqeswr}e2ZshB$KmAwmSMqgy&-_#M zpS0hdd|has)V0f3U#qeIN960k=pOlF{Nq2YfBsM8YokfyZuo2QV?PZ3Udh)+Uyt<5 z{I9m(^Z2oN$$tfZ)Bfq1e=`4*_Pdj>tz#7J?eg{KM@?k^ACa&7FX@p#zWSdZ)<6Fz z@-+h|CVH@sM*KkddnI2pygjzR^p8J`e!XkI=ka62f2VyVUsw0cKT99^5AeSz{`~95 zoXKRVDQomlkz8!ENyWdl30=ntGjq(>)gkIIDS!I%k8hZpIev*N>-$2nb{8~?mn zo!~JZf7ql*czLu%1U|*QZdJ4qssDT84_9t4@VA=pIN|%R;GZ1_|A+ot_+u*E3;eC- z|4;DGi-Z4zy}=)xg}M5$TumRAYw6N#I+bvDZOY(X*aI!AV0FmhZ*n#ozCXe3L4L|G z&tKB<@V0POOO&gkPr_fgHqq|?x7zs?WhS3a0$lphP<0kofxf;33tvTpcHyTA*ScZ+ zI!2r>Yw35%fGdq^*xcnD#LZ7|E5$e)jOQNcqz6JX;X)#QQt-Nc0$yI-kSNQ7#}|Fk8@pf6j>y-=zvPIzOodugK~N zAmi>o#D^vPKoo>$1%xN;{Bb7Q&me!q`sYsM0UhHZb8@T30;BHtIKa@t>axT?O8M9* zRj!L-6@3!=cU%AMUny^{S^v=g?fM@&Kc@b*i@!ho*MdH7(g%A)@Q3na9bgy#@I3l* z!AlxDtem`5LEe~*K691@f-0&!!iT9l+!=Db8Mh~rxe6g$?zkRBVJ->zY-9oC=n`Ml zHz&?yImr^@`4#qwM)`5gzXh-C6P&-hq387#*IjZzDMp8h%U!LpaIN4ML=Pe)`mB{p zEI;#bfsX5QIQFgYHThV;Ed9D{Pha((Sp?u+$+0|*T z7ri-!m*y}6PGUiea)sNDyRq2}M_L+~$-q)FH+ULG(zw^06SVv$KCBVz>?2(WDQ z(GSMMDqEGA4VsqQWWff=MmE5u7PyTenWDl-gBt59$JpG6&7aG;Gm4>k^JK#nu4XXa zaPAYqses^An#%|=>=Y1}(Gvn| zi~$$mKol>2#r`esE_>?4Q2WccunaxBN(+1_hQZk{VK?sQ1C&i*BfpZ)ObdE32ScS+ zM=1V!Qt{Vh_CY223z$q|%*B%2DP6!1Rh!cObAi8NqXj?A6h=G;{4-e{0< zZ6{36(6!h3>(sT@nzqy#u%*=g8ibNfs_MglveiE-9yViuu67Ei27F8)b%5=s}JJp(aT@O?%)@_LI;uPP0_0y65_yR4v4*EX;` zo?Ul6iuB^Mt8zmR@?qo*Ri9&eznkidM^>fF{SmqrMBW*<0F=Z#vCeqdQI$*k53kiX zqOi00LbN@sy02_H52qAg40Q~p!QX~PWJ{?YRP08!vytuM>Qu=F`!A*V0+kV2`XENA z|8U>x{(xT{{I4&*7TNC*jO0^BaZVM8w5g^oaR%hA-pm(ERNEWl-E*AN! zay495pPb>-(-2!^QEm-tvc`8$&B4=L^M_(7&Zmz`^c6L_?mi$dS2$$-+lOlJa-u@i zFh0Xks!wS3)ErKok%Fw@(@OR0ANACHo1$I^;PrLBx)%Hsb(rNFU3a~P17Ij$l95=d zSEBs4snbs?)h9oS{_)g&moohryrAHBD0n*xs(X;<0Lq){Rb!=r55k3|I)bw!(+n4$ zo+%CNL27B>aQI}rN@@83dAC0FVTOXOsKPnze4joc$yc=1HSaV4<15++HlwWKVumj^fX*HBTy^dY5sd8GWIlo@?MmS@8KkcxuldrLT}wBTb;@RQ`y z)X#kS6##yNYu*(&c;qWu?^JK=B*Dsec%1sSEdjbtssGKlsxv9Riw!t-@a*4ZRz#&PYdvQN3 z+8SDYEJ)MG?OMDF$&S$NNM^rL7qlf;k42W6sRGET5>$$isxKe{%MSnpRA>+&o&XTi zlnYJaMhrm?=NoXNtHf_R?mq4il=}^1FGaEP8hf8Jvwr%!F0yJvHgK3YuvG%;=WNj& ztwidMl$Rk`sC}*RoK?r4x~xMVi~R^|Tnp~Q76`TtR!T6cta5c-mO~_=6L7&)b*2RP zsEb7c=83v+MjjYB2jhx$nUVRsZWnh@4EYi<2V9F1**dzFSsBi034Y508_I^P@q+nv zj<}4fQ&~S&Ps8v^dqq$A&2@!HU2Cjt<)#kv&LoVhl|V=fyoIB9YsftHD6AE2!j0t^ z;AR?GFRPJcCI_xcMxSD%%2Yx?t0jCvbSEigh1IwC(Zqo<+8dA$TSwBp`ZbQo{tIu> zCfD7(n$&gIY1l{&Es~byscD1GDgs@7`lXIC++cUt5#+!(Ulugf<nswh4h$b{?Z;amXr0%Bn7Hyq&t=ywivhar7(TIBG3v7O! zJcGy!A6|=)v?s7LpthGVEkZ|Ao;%QwVUMPO5U9z^tBtMULNz~n;SK%TLyuq&3(b>q zj<2BQP}lsM&>qFvHUBSYq#o#~JFc<62zyR|&^jRW3#w)lA&axT?ZJ)+l@+a>c9o!k zFfI{HGKtB!w|kF?H?Y}`0j5)k{iN9Wl9eULwr7W)i2>CH=wFFV&w$GK6d&4~ehO$G zd+UD>+Mz%vbSe~A45y^sRIhmD6X{yTLZl~o#oNBZ3S-8wa!Zg@R`kxa%94e?+%dku zCLd$sY_~XN=}!Rho;Q0BF{LGUj5n~w3!~WL6Gdg!{+NZn6EVr&9J*P?4^w`@R0lRu z2M|QsS4E985KyHxp3WkFaq^Rb_&nHgwGV%wW5!Ozgi0T@VG1K~WB>V73AZpprM`w# zW3o!hQAy7-=_-|Uj7qwnNu!Vi^~y;38?k}Qe0+m@xk#L#5#%E*;|bDUzgtn}7*+%K z#7*2sM@d^}OvEF8wZImmRmxKSj8aL(gkg*Eid5c!alyDn9x;90Y}}yo^6?rx*2^49 zrV7-hS;ohHv=G_0EIy4;25wBYnSSzUi+@;0h0#^~!$%~pAjSV_5T5E_8GcRs54TM* zpnSUsy!yVGeWXlD>`{Voc*iUi=pNQ!w(G?a8SaHuxhG>p3+y$r5X%M5i%VQDBFSBI zB)b~BwI7iNVE-KM!%HJkN^XxsW#N0Rubi!DT05>l!{^Wp%pjs)Sb(2Hl}yIi2Cry4 zj0TKrq6t-Ky!u9&cbCiGO8E=*g`uv7Sn4AHG&U6C{yF!Z>8=G6seyFFbPJ!4jt#P7 z17ETW2CM<&LuZjD5ySyho`O(mLPZ$!jwZlzkyeDl`!J}j#ce@VnBZf2)M|{yfdLAH zWQQ!OVap^Y>nvyq)kDJ+w8Ju~4<`}-qQkDc)g@K%B#2Xs1685ew{6+gCs4Om_wyF* zb@>@;cht({#G&5yhHxW=d2k6lLKt-K#ieerwrUp(65?#2+X2IypJBC$7hzeMoOGI| zmpj;7g98WL4PS7t7|MkCC>ag|YEpK;95oPNh}NTbol-CXFHedccnzsAS-i>RJ=jypL6_qTO%J;qE22{o>ymXT2<7zrdH2ODm zVV76uiF_;nfa%{Tr++}Be?a3B!Bi>@SmSUeRXAUUy#{t}HFk@g3^Tpv_H4v8xr9o^ z@+v96lVmkkNItH;=p+Ajo_TSPH_!l;&7}t%ucrPrmiJK}4Gr`E@<@n5^(IQoD7w=` zECf$@M+K$eKb8E~AqEZNBNns>|C98tyE%s8zFcRCJ{DFJdfH$kLzUI&c)m6+?42j?K z&IJj^nljCL%!MvXhga;(@M6RIUsj z3*${EaFH5KvW0~Q66Bhbubzx#g%HHv74smo>VvMB!%3Nh2Bm*i+@CxOYQ>6ENwIH) z7cD4{>beF1{oLvppi`qjgIWaomr+PSMBG9Y0orZ2Vu8Lmnza+qA9KHmKIo6LI|B_u zItf^Y$lumkF^rJbVFS66uQ%C2u|8Z>0Qi8vIHHVqm;=45MhAR^6Bh>#Y2UmKwEwj# z2JPe8-JqqDT!2c5_OvG=9ROuwN4wC-lD#i-0RwOL(V|(iWBV%G_?+8B^g&O}vZ1Y< z$X3UwH=87ExjlveN5|?Ih5tzK81M&`Bl;1jR}`!l{X*Z?9T-qyw7@u-+6RB{tTur9 zN3GBYudGz44MlC%>`#xpAKc^hJ2&8{=dm5 zNaYcpHq|h*QuW_+h!&Ix%>;y!ef@Fv8A8b>hL7>8dwR;SE5nC{HiUehzey&T8~~sJ zvW@jixpFX@@^CE*&tqZ4CqVJO;S?iNwsTNt0J=H2C@MUOEn)CT#*IVncHuJg>>@yD z^v&dA5zl9{0P944+-PoU5O7`k4alcd(nI&6UH?IcYcb4ED?ctxAG~tRHLyJ{ZRhAP z?+O9-5VWmS6NV~cZF>4ik&4!>BLaf`?UVf@gO34$dfvt`wvtz8-d<^pBNBjr_R%$k zXT$Zh68_mlUe&~ADJ$+;&}A-Z?Z4fbfRlBB3E=%1tcewk%8-gOj6U4lfk}&8p-YyN z^P(`QCQA)t#m-DWc$S6Zc?3;QA9J>qaO0YNSRE`uL(rf4E~;-u9fB`Z5CBYP^GMoi ztQsp|En!?*eK-kS&=Nic1pn1%?ga5J8TTFsE)x7%0frye=-=l6clJk-#MwvVHn+0{ z@30dWLnjw}gY#{`xYjAd$KgcRybt-LUwMSKejXQ14s5~wkQe)RB+``y61jm!wuKkh zIUjBTYV#Xr7qDqqo2{+|_X;}HE<=KvKZwfS(hh9af^8RTIe=<5Dsi+yZ^{#Z%!3me zBPcC?=p?Ws?C68W{>PG zK*ePlH&x>spvMTnaR@X0tkCbETsqD^t@zh#D4qV#rcnRF56C}Qaj21&;Nb($EE;C9 z{x9zV!%)~P{+~Tc!*qnEz7)XRW8SSI?Q69mjaoal{(NZjsDf!`Y7Qs@%)MH1ery)9 z;wmx#JChR#R$=^{#bNW|K6~=h{Fd3cLwvD(;{;|wx>Rotkd^i1sF@Imb3hh#b(`6Z zlOfkrl+7Ce7r)I5vxys1t@!>$`&@Uop;3%4$-_N!4-$YmDVXbq!Fv!HfWOc9#z}e- z7B)pMIdB5Vm87q`6pLdXKkVEW@bsuWJ&h+Y82oE~SiKK<{0A?*GaG+%s_w>@_mO(k z^jh`(-~}#yItIn?MfmQ%^F;g|>8j6|LEV;id04tUi~i*NAwA5%cw^rM5qPyie_Anoi(CdFv3FX&t*>A z{gF0HufjMDc~`o#9rYnj&E%qsP8Yp@`6{MHi^Cn3pz zd`-O7t_nhF9j2?c^~V|-VO_01nvP@+zRsG$i5TpmRB;z*?7C#_de?lqWx*mRvFr6W@>1?eQJ%4u+s?$r)_s0EK;blh)&?88O{r5`~t zde$-ra3*^meM6P>V=t5@)IeR~4Xlq0)DE8mOD)PhQqYe5b

)zAjPMmT(pvYKD|I zEmu-5n;7);LHC%#3Ky{`FGq7*;qNN{are#w=vC(QCQ*-2n~&=2mOm{H+X zv!|1f$H?$9x+=lgz76hjCubqB> zsBFn6KcWT}`?L$x<6%Y(aw#|C!PaQRrY~RMQ(w`>Ilso(IPiEZlGgydIemQk&mCcO z1svt*#WrKJgBnIjwdL50$N>jQYc+}2aa4E$jo!ff)S_$I{kMA>qCfe z+AfS9D(8A~pcV0D00-BgGcm+PC@N>VWq*iq(mg`euSUhC>hC`8imIpnvpcGCaiyqn z4m{E?rX_jiwpo~8=?FuoZ1x2jjU5Sgw5g3Obp=Lbe(qeX^l*D5JgQ0!dHg{j3ya`U zXrj}Bk~jN-mBuK8x(Uve}BEM|`&B_+=^$1&2XZNJKu5ct4m zK!|+33TP<>C~&RYKXS}sj#0ROYD{50gX>%kx!-84U$k4z5)JKB^bI73{%uU|s>e{F z0NH%wtrXd1h`9tSTQ#N}6=M?c&3&x!C?sf12zxaDDvbfG>7UfGUo~H}Ed4lXG zu;Xfi^a6}7TXNkfkZS@Uiy?~P`-Mr05bn9hd_dvLo?ha2%ba>jA`9V_9T zcT8W(*Q&pT`_<#YUG*gXPON$qe}7W-AY*T=HEK62`xgW`L3m4gjWo)j+9(YD2H-0* zHXA&Ur}kM9TlE^XffNgjpWKNBL_dabC3~D{QDmZ|=+m#4@`X(~h`+m~qkJ`yVy1k} z^pE_s-jc5=O1`F0zNQ8sUs8dwGgiL55&8N}qR7`drhF}+6~X`fBkz+s)3sF#Y9s|x zc8TWSQ-kf1*ZdX|b{^>mo)RIyhvobuuaz>G$BU5N!-ABvJvEYIYzIK!PtNw-)QQNU z<-MWr+h{tj{5?QOwYqx3W=UZdrI3UY{c#}%il`)BZso0$l9CPCjo)tqNnr(a6vZhJ z#hJ1%*%HO09Z^v{6-6P6Qy_{kT~wpS*c~=GtB2y7C&1M`q(F@kH`pIrZ?pvNSP{4g zXQ>C;-%ppxCgtxC^bGd*CZZa6PVO_)bn_Q>!ZxJK07%P49vbj~E#H{rXTdSzs->3^ zp``W2=EAS~wYJt=rl$dWwQYoZ3}{*3RPQTlnO00Q{%O3@It4Gz&Yi6GZ(ucL(n#zp zxc{$QUS%>A-V|)hz#0=L>nua@n!4}M+R|y6*VhP~$ z>dD8F>UFYNUnWPrp?c_iL_?JOc@g%=KQo`cI{(b<1Xt}ZG2f|~iQAn!q>Cq4a`J;a zT7cZpZ7*(zPrb`t)UQm8Qb~1?nt!aD2EPs#!(_F0!|Rw1p^|f(E+|y;fB0DgQ?Lfk z2O?dF+&6hvC1;&|c7*lJzV}&uUss-O+Q*m_O{aQ?mKX=oMn5ky*{}tuTTF)?Q2j&c zaS*V?t4vP=?6w8#e~1Ynu>~$LB3$m1CMWu)Q-CmKqE%Fto?FQQbY`*Wy#s4 zdL~3{CDjvZp)0M;_?_(E?{&w=@N)-oJI>inNA)0XLxGTS(=*+Rn>*T975UJxI3t0j zt%K}Zs97*xg0T}8RCh2=#0U`S9q1I%9OlFoB8TXNR$oL#4joZzUNR}7Cwt0ZI8OnYV z!f<&Iu54GWY{UhU+nC9JdwxQ_tCp&aJNA^mEQ2e%zfV^z4F1FBM(QUBxuvow0wk8j zxY&on37Tj`i)K(yqtvX`(xT(fN4MVd=Q!PJf&=9QiV+>bfbJ`{)PR<-U(eZoHl4f* za$MUI!QoZOk>HxY0U0qnuI+DmV^+KbmxP|aA(F7~dDBNhmtD7tCX4@1k|nFxJb8dql%re_kQRN8{nAh%=N6l?rsqS)FuBWIT!BZgvo95Zf~Yte#=F zoIw2+x(2?EuDS+8c2bm&)i_CoGCWp?EIU`}kiAcK(jk$)Fj=<;9da3_R%HI(4cQj& z*37&{jRKP~Y~VJf=vayQOUJ={P-r~lyJPQI6o?tr6~Yz)IH(svJy;yMVubY1;U_xt zWTZB=@oO7dD>B&kYrhzS{A3LBTserE97k~|PY?YG1B@ji{M>-T&?j++aOe|r2-jGD z4YP7bB8Tu(0UrI=6A2&n2@NQCn5>*O719-Nc zIMHGVOKZ`X0%LFi2_o#4K0!Aqwf@L(rPkkh-0TLc2V}ho*-e{Q1jFnII$&dU`gxc_ zsZO++vLYm6P=ZaCNOxKUvkc6jxmmV>U$IlRpX^F9ZTh)Qn~>bdX-SH)`14S^@izWo zmYd%cOHv(idk-$r(&KMI~)jNjEUbrIJ>w zq|1?n_=KaS{-r8yB(oVR=`odbCX?P(Nq4KHyhgI5m zmG%MBjD;%6qmtGzsTxW3GG{lQtuQA{VxNV!Vpn8`Ig|ZW&CeT2-{e8S~w5$H-wJH zAS~B0Yp#+HF(hp}1`c*t2_!j^Q&eDI$lv6IDnw;1htIQoazO)B0XLW7z5=Te+~{0} zUB{=Pp>Q7@wV+j7cQa<@e(RjH@yyi`0$_aTMf_OTUBysZz#m%ZW(WZMH;@9ZMqzn^ zew(+jUu1SVS2*)!_2lz#U+eNL$>u-OUWJ+Pm#%rTlL4dMkT0W4DO%2#SkB0zW#K^` znK*xer3?&%RosMx#eA<`fgutLU(qsHe(^fsCWX%d+hw^m7C+he5f52tfFyAIgZJ!g zY55?!(5H`f@Ce$xZS2n>X!g?fvcMYefz4iQJ}Aps?RD@3Yv9Aug7w&ZEAs>Y5yxz- z^H22fbTtkOwUnaD%dlhEF(-xl6X8z7#suCSoljB6>SbmhO}_$iHYg#ZT)_jSX7t;) z6C%#6=y}{Bjr_{3P>zMJ7SxGNx0hir%Ue@%+P2Lxb(rQ~i8bZ@=Gu>cmqT;x1+kIB zjrlT>~Kl!19e_OoTz!qY=@k68Cc;P(})M{Mz z4kuS_Uk2@;Gl!lwa4FRJ&AEFi8GDVjvXS@K+;zacBSC1~_wK|luFF$C>E!R)#Ko#u zz=cd4xl!$G?7KR2rJZ1=n-U*F9{PI}{Ipm*z)$5PG1Mi3`Y){5V`44TM_jhNLgR;m$YT&TPzX!{i@$az{e`Yo!Oveks@Q=@=A0r_c zGT2GzDQ@Z>n`QhCpP_1GIIziylFHv-ZfCMk^!{$eUt6J1yMj^0zZaV?5=0~sy z*yjir;hKMsywAeHftmT(K&Rf^qF;+|zT=U1Nlxy&I zjcdMKR16bam7g`)HUDf?ekRJ#bj{C^x8(~V6li}Le_iv_nAm~!X+O^jlWMNo&nQAl z&vlf53NuTKEeq&cMdFUezsvHCbImMI*|HQ`S@3X~+c?h5BD%(GNVBrw;j(gL&u;0# z8!R{~tmsdS+^weg*7=^)sHt z{?AK-4JQYKC&S7LZqJ4>mAcw^ns8zatfYSOxAmRgAJ8+QLJMG@8pCAx5%Fo6EVevc z#i6*B@u}+ZC<~?QjQR42UDkm6Ed}>}6S1uB;dbf2g5LM($tRWR?tR_^n=q}Melj4( z@#!?AdH2Jd@fEF^u|(!5>x>fxfCd8K!lOXNgK3F)5yhE76@bA8RFu8`>=$Lrkg}j0 zsP99Ta^sdV#T-y5ECGzO)rt?uoNwASEW!TrAxk;$ukW6Jw7?oI7|Jf#9C*vW{bEmG zZ}1DJe;3YAq(A=Poe7@05&uAt_WQBb%5%<$-`af#OF4u~zLlXZ*hs3ebgzwBVlXf>nVd{!cFse5tA;h=A>t zz(>JwhJWY9cz!szCkr|7w5(uXU}dmjV8M#OMu6g}8@M=dD7eRouYk7!2zbsJxGb10Gu8jDtUqlC+FvE!&2*D z_;a=3r%q707z^P($J>GA`!)Sa>|MpQb{}tWo%6P)SG37yr=5vdBz9{jU?21K01jx*eWW?Cx5jt=opUD<^BItvFb=9u2!)^R5Mdhp&MByzQ)Ni~}Q%<{EC<30r;o zb=$oM-uL>y#oOmT{WeEnpD*y1cSEQwXRQZy3=!)}b7J*0Si! z3FoN)Nr5*K)c@=S`ltfgKPx09n_6_APfN%wNw<5a!M(EZm4|-^>AH z{TgHe_nlZ-O8@NgVF--_&+8I!j^$ahR>|sxzc8>}$EIPixz=FY)7J1<_~-tlk$H>H z!F~j=YXhd5Eu3fi+wittYsV&~wShKo;2mwlZePv{{|<0(i?(5hH)nlWD&}`PWP;|# z_;R>#_VZYdot@joAy(mlfoOF+S}n_wRtJ~pW0Ely&n`Wor9{7ao9Dn5Oses=-V<00 zEm|6Q-?L$7Da0liPWA*pPCoEapv|-4v(lU$rKuZA0+Svo2Z$ws&DjvK^2X}MpN*O5Dnl18rf__IbutsYQCHiG(dozya5fW$%v=Z2`VMj^M3Ka7M zcP1bBFtE?FAq-GTQn!o>j9;ALWqb>NTgL3a7PMgemk4L{$lb)=mK;%qW%4No%g^N7(sa3ioM_7z#HfVZ{S_&{Wa42 z>!kNL_)@n*kNE<-&Gi}ok^I@ug$`lLuI!0RZ;qKy+a`+ZO6{hbZKAlT!=BuZ^WW(g z#@cQ?vXEfR`!wAC@*r}(#DK!YK_B$k7R0a`@&;X6 zV$D6q7SQb>(Q4!{ieR& zqW7m}dIMki^k3rnYp#1kesO@KX5mJpjm9$+Y9mS;nNCH4H+rnh}PGc&M zjv-i7@R}IIO5%5tnDR8CU`HWe=wowR%l`p=9Np6AB)HUL=(GC-p~N{kiasY52z}mB zsp&{HoGK}(l6GTHnelagFX@wZ$q%8=c43W}7>uf4yUAF8gBhJ?$mq!a zWjhlWQj|0>z%NGNz+==PmpOXh!FGoRZVu(Yk&5<)QSyP(t83Wv3az8MMe9d)w5DAhL22o5)?lF}Sp6wH zwDa6FjkHy>QFqL26th7UmiQ=cq6=)27wEsk*gpnWvHJD}HNw27+odc2d#jswgfs~6o@iyfP(nxh0QIoI_ zxIfQ6pmcav`g68$?`L3H1QO=>l21m^!~>!Ddvt`qhnV~g@-a(q_U@Ivxj5( z8=i~s2v$gDSP@|c(tmF(m%A-4x5oc2`0skQS+{gQ>*~mVe^4tTTf-Q1;Or&;kxear zUuZU&XL=gkQGOS8Ki}d(@o!MNwxYC+6l7OSol}?Qn!tB8BB(pI~xZ>e= zW+(ZYh6S_{`#a+Gcs!0jkw#ye&7~bKFp7Qx|!t&>x2xiVXQ&@hBO6td?V^q>Am9+N+Bpn{oOO`*bxK}J6 zIx~jh$=}njinZS?|M@ufAN=R}T3v#&>HhXXXPfTLR@ih`t+3m4#$BZmr~0f5O|Zg? z=~P#d%Ab;e)k`32(tc&E7Xp{lzx(BF;Lh~-_=9!P={S0O`3+nvNe2<@uPlYQjL8UR zU>M9m!ktJk)=y$XmSP&=&jWvXa}VPYynN*S zS00!?emI6y&50?>%<^tbPpM7mhu0`f{?BGoKTM&1n8NuX*}P!u%aiZ}AYVYI8tLKRqtm=d{oET+8~xYD z!>G}!s|1Rz#N%3B5^$%XqBN1ew#;c#-n~2%fLP^ot@0B)ly|H0aM8^wm-6jy*8D{bvDj#+9jl1BJz>(3QUpajHc%S`&X=gb55{_XC1tuF0o&4mN@S_S;5_$jw`7xgk>zLPAeHBN%m3|rD zLBHrJH_jai^sv9jI0;bI_oM~ru+vkXzfl1RwS&+<#$)G!al-!-uhnSUvJ7C`jS^W# zLU;3B@n5>KKOjsz`w#w;j)D+kTM&s=p*ge)Z0jh;ZYtN^-=NCK{&2cP7jRD+`*#Za zw^GxmHkhYEix^%EG6Ac|8$5WiH>Y*1o(Yz{A_Fl^svzpEJYK$$_8No^O|U`Gzfue- z(tnCH3*HN$bu?CewH8RmbsxCe7SK7hRVBF@#E}nKd@x#)5WCiOHMSF<``*Mm6K*W4 zI}iU?^{;Z5BMVp|PCGaWKko~E9CCne%OU$PBR9h(X*owU$Cu$gNM|CPWV2_e-4uW! zpGdm}Dm*wf|Mmugmd!sI%#~%F7X|5(Sdg*_3hcfW+K|;6D8$!%EoZgn-_}4vAk;*o zHe{Vi9qvrTUY;UC@NYL^C3P8esOWIj$s{wXf?C>V)ZP#wDGR|Y#g{4NAb3nb2j~Z! ze!Y4kGF#r~v3RMEDwfb?Q;{kkXAB#%1H`i5nXN z>t3h$V4$f!8Y=$zSy1uld04oSdPZcqGElMWSoA#$Xmv5s*+{=Qx@6bzE-2M${;TBg zb3);7sv({;DStCz9H@A=zzd>4U+ydh5TvJfT{(mR*+! z9JA|2CF3U-SBBsxuWnQteuj}a*{)-)J>rDk|5*){+0UF}iOxP2Hs<{&e`>Ak1&uSY zzfJfnOZ5Np0!6B<(7t$j7S&~tDo#?xNfi#Qj9p3`iu2$Z?E`-&_A?a^s4GpV`$=+L znX~SyG_B}}tM+k>-kv~{C-8wM@RldAv81k#C$P>_&@xJ|O_=$_FE@H}HhT)zmDG(+ zE^(|5HuUubS{$1^1)E3dixYqR(kjD~6GU!&ca}KT1XrYa0-GHxJO#l~`Xa~HDcQN6 z9MrZM-_uGQEy3WiIO^&^%DPedBS~Mp^;*!A(}LXio>Agh8*Cha)*Wlj_W$mh{dJ`M z%+BqfxpKjnNc&lx+wV6z|LI8k13S0x`2FbbBJF2)ZhzAQHNS|opWC_pzaJ>6i?pBD zx&41kL=pch1QMC!zpEmd#PtF$P#iy*&)HUFO5=W~iuqN1$0(M}o z#fk2Jx*I$>D*!Qa4U=4(OB`6N*b-ck3Z`JLMUKlS{Pc8B&U(NNUXx705^zLdMKE{_ zewpc!q-R&X81m$-0r03QQ*x~cbm8jlh-L6+{SBr4hJBbOl#RXy-E#xSUTG*A zvTwmjL}PSr z+$M`!-=RR}$8GbI2ecS=$iEu34OCx)4Il!B687)??Pp%%Nku*A_%+By&BPn+u%vZ{<#%tS-D8I(uQM!j zzS`4nhb6f)EbD$!JKqjVc4t_|-SPA-c36r#!?JDHup@R@vO2?(d5Pmsc34JqhUKwi zotN2R$>E`vE{ zoSWB$|4P}X--&<1ZlBVaT!<>*f2za}8X2Ad6I#E8{-hNeShD;-m6E z`C|M}AGe>c`~xRVQT`{^MgNnpEB})g<9~X>D!&yF(VVx+Yo`AR{wo}ECiSwE|Egqp z7Mig9S2tMYAMQ}z^nYc-e}xU8C~xy$Wkvi~m^IUXH5j!R*GLU=%vtJ27|LTDw zfMUaMl>e$czW>U!+m-*SFZa<|{;OAf)_l-#ovv(kXXq1a#;5q>w>|o=$P(he8af-U znm$vNtL99SLQmgOY;)Bdm1T3)i2th6HU9uI{uljMoqShOzZY%|a%ZaVMyzkkMgLBZ z{;k8~70vQv{98{){aaeZy;Z5)TNRz$TL*3j&DKv*G|N>qJD6yr*?R+QG>bnay)xJA zyN>Ry3*t??B6Ij|JXfpS8GE;{X8`+|6*i3(DJl=5zb1CjUwTUOEtY@m@Gaf@$Ly^r zH(ARSF>bQkPlf7wAhy-$+cG+(yMzw=Kiu7aSNz?g_#3j*wSTMmQr- zz5Qcwg-88kFPR(nyYi30JxBjoh4{zdB(BI5|0*OM=UaGYUwmt;+!X)}FJ1V)-r&bx z`M!SK(f4J!ycnufuG#;5Br7$dvI-m5FK1w z&zNTcKnwMEYs{6n)e>N0a@_aQ~oR6{Kf9QO_IJScbojanrrYEvF~LOL&sH|aCB8*QMDH7HvWlvzDCOKX65-R zH+D+#G`LWGxy5wDB+~=t=1{kdpY%&HL@idWSROEfpgdp-81aBnKrmEIJBUHzZPTHAS;Io9P^U)V);y$;DB#En)=)XI; z3&KAxdWrNssOVd!=(|t=c`mnxzo0LFp@Uw{t+yT);{jeVjIZ3Y?bAK0xeZtFSfcF}I22q5o~?SLcH~gTDQ4T!L|Ynp_oQ+*7){ z{S^%vj1)YHAY>aC3|1YG9jcEr68s zS=Z1;59on)Ih(OpzIC+g#Yq{NrPzU+x_0zJJeJ_G=3wE}HHhE48aZ0j{txW*ak~5~ zuzrLRzO+0~&c4#r&7&9kGBU%D@{XM|$gpI}g_Ckm=g`E}l8Wf~v>ZhRO|@kgOl~=o zMKzYVGTh13Y`CazeC`>*JbkQQReMg!!ehJupYoaF(&wZ8x~fGbUTl~OZcp?C_Thj; z&U?zf&vg0wqmj$>@wNG$g~MS)J8&neCm70r6AqiD@ZErFVYLOQ7T*&~;UWy~cESs! zzBA?=zYi~2h%j`wCZV9Ue~jhl@k-#(0%QW!a!&`4iS0pB_QLv_w!&#gyI$P4a8iCI z_MaH~t*f~cIHKoKKj?Qcief`9jucgm$Q!k=Dj_rcZ`x@QIvIq3;WAV{!aV1YDRuo42rpGCAiDnHtvOTEm|owytT%s&vk^HhMn}ULMSZ-IqAY4v5 z=21e_nn@rtmk$-%5IORp0_5{J2W&D;49W5ELclIVqi6w(^2SCKHe0BTwh%tk294w; zG=GWat%&AjujZpy3mc8y7qLURPeR7Whw&=3cCsxr$aQz%m2EtBd>5K?p>3S18TtNb zkgw{vnvw6wL#pe=lsE9i6NC#>uD$Ti?yP?~p9C87oI13wn_y!4j9sN95p-?*^`*LB zW5E?mO#S!4=5A7HVJRf25zv--!GfW`1~@QS&-k zLSJ=?(Xf&rK^iN1-r`#WT&~ z5T4#J2ijvP!6BbdS!Q_%6PF1fPn|TuW8uxe5lw*BSVRyI`VBM-L$bJlfbyNxf+`HP zfTma&(3{lDHVZ?{06EKd(h;gKbj0}Ffh;Gm3+Zyr!jL)0G|P8V7^*N7hS|@6UC}Mi zEDQM~z9`;Fd8o2b9%d&C=t8t%W?=|pFX$ybET9X~^3B4K%wEt-`d3&~h&IA33^DBm zy`*!6L4|0AW?{%|FX$zmE3iw47n_A4z`Y=th=#xps$r0!bfL?8MK9@F0bPieY!-%O z_eig<#kv>NlCBlNg=99F?gh1^YXx#4nN6U3K`nG`d};0lcS+9*=t44^DECOM?nJp4 z^b&axt`wr#M7bCAlCBllg=iLsK$LqyFOi3MqP)qIx|(J@#4@L)G&R^sjlKWsN%xp) zOgdR`5bD`vy1|o*od~caV76>#Egj7qRg35|>1{zqIKU>{h9?!9F*Z?9bAqg;qw%9^ z5yd8w5?9JGB{4iX4V2iN5NqjZ5~*55!wCZjT0&TxxUcr$WO$B2;^wSlEgcOdRg37l zuI2vwP*+$Yo&xwj#1+;Mtc1cgP0)MdcC8Y=4{3!(1Sg@dO*ecW(sr#Rz7J`;)E3`| zw89~RmC)CwHhNFm?)1m^A+88vTt)JIh$}22XbIccG|KlOZkMX%`w&-nB(7@tKE&-> zwR|7qcCA{z4{?P_1TCSkO|^72M7x*DHUQBk2HS8=sPFR0bElIR7sy3`H5pqBJ(T$RuxwYt*;y`Wdu3ZNJC z>RRr5L9Z^wy%+TATFQGtudao=7xd~{rh7rJu0^>Q^y*radqJ=+MY$LB>ROb0qL*V+ ziDPGpBUIwpU*h;Kva2cl84rvi97v#V;M(NCIA`GMw7@MHbgjAJ0n}m_<8er%;LM2A z(x*R>dk`1>s0F{ii0*&|)rBee31ESXzq?^xg0j^=l#zRUW6z*YA81fdWTt@;|I zzLBo?S>FfA&7bV~h}AXWVH2u5%<8^$G=DO61FLIn3f^e14)1gJY(}D0-8NRY^F~** zv&oaP=LkPHG^gx2h=-{MK&OOujVP18=j&!*-JHH>FN=JG zBI#4#lOo@+hs`3{EYc`_<>|lYGZblV?k|Lx`ZbF5pZcy8`JDakMwf$dZYk2=wGyoi z+OrKs8k_OUR=z@!K~vw6A|I0*%p#RiWDt-62S`tttNc8DtCmLk3E5LKiSMamW&DJxo0 z-LLuJ3~q8z_eM5RO*IC-Y}z?%FL-80<$fdQa6#CUbbQl}Df{>6nI|^=Y}VfGC-M7c zblvT@NYF#XA`6YuGf(j(jY)3WF?s(Nda{!lcSy!HqI>4ofTbNdTMBlM(v!12Nq0J% zcFf!#){Bp4&TW#jHBr=4&gueVlwN#>Cuv4n(+>CkkUpXhGkq$VRwd?aEZ8$jA91=T z>Duh39oqig`oIhMeV2Sc0=S^wa#j|6F-jkJswZh&t{|eP6)@9I$@FC+@fxM4<#>{= z&Wnef4X0soaiaRPq2rE=4k^Sf9X6Co;-S<8?L40u9X8~&xX3|)@3$f6>jAmSc*u#8 zw_$igJPd8fO^%104X2yq;sgqf&W_^qC^;Z5N~F>fe2k)X4>u6S!%PUpypCuG-p`f! zxM+e_yQ63>ScH5XShHXYb~P95_awc}N;`5Rhr5E+C5}%EHhGd>dV)D(S+QVaiDOs6 z+n%IHpXSF{J}g)X+oIq-PtrZl@nbCiQLBu07aT5eY%gf^B;DV@EOF%Pd88L$$Muea zHc!%mCgzGGT+HQ&;=w>OK zy#(|F&8c78wPen_IV)4Y0EdD*r;L*|Ip1v&)2 zPJNSktzjYOyPSQgFsOHcUwzCQG0Z@Wzz3=CGP5-_=#cY4&gxVH;s{~9K|m%oVS=pcfgF>Oxd#&5EcJCZ5_=#<4U08K?8qL-Q7esD zre+W1ScuFKYqSSyEMne>!P)~gmPlsHrtN_)PYB2+ott~0#?#2$0|}m!`sVEEXgv2o zj0P5KjM&#bkfRB?BPMtc)L512VBQs3=-AtUID5)_fGN5@w0TOXglt#5CrJ?Jnx8C|W*dh((LDwkSR{ z);r)s(tMK`#p(uT>4;Tiz8A%4GV{fDR1}w+`7we^>>N?_v%?c`c#Il+zEj#uZ$H5@_UuM?w|3Hu zU2$COVkg)(Jj>(Z$)SCv(}wBzc$mrr-G*vKJXArlMjN7&;vvcjz74}E@h~J$ewAp$ zvnoEG5eI<{$C>ePv|%?pE_SgFhA5u*a~>5BRgTlm&M2}Axa&MFzHn1S@qPUP$rfj_ z3MIEHit$U2(6sF!%5Zr_MVVH598unD6Xm7M(ovKn9+Idi^CUx;qWmg9MnoA>h$(oi zZzZarTA4RiK{a8VZE{9c)H}@50WWxEqImHjMrXYCtc+@?_n9LWEt-%~eD*R!tZHhe zvnQ&bzG9A8q#~Z6C^`q3D;Aw7BH!|3EFv9zNKu?JIF!Z?BTbETFh!BdWR?y{!TS_N zDvKFnk%E})X^tW_kU2Ua1qWmlpL}MB#Rqix+BPmS>ShO|A|9_OI)%&?i%t}gVtnl2 z90Ok6%>l|;Li}gIue%Arc&QpLHelJE?O!4J;4lTU-I@K9kdHo9VBFpOX9}~?mj|4? zoA^{ob*8(o2b^ajZx7hcMwSjv!yfRiX9=;mdO&jP#NBfcz%p z!}z$W2h`t3wvIwf6Hd97ymOmtpm)@Y4dw%{?`8H_kv0vwh^Of*X6dM?q6S^W>2#3! zx{~T|`7u^KiR)j{lNNVWQ)P6v43$|HRaKcW_MsY7Xp=>CRTgu^A_nR;NA>SOW{5?L z)>u?a}CZ6kOEEvjs$E&)P^6*ZAH}Mid1J9s z=2sN2@yrs7m)KrW#44C07BP^fF^bkCW{5?LR#z0CDa;Uy4@vWtZG^01mX26O?5!w9 zGnp?IqbM%3`7weEZ7f9;PD8}ERNx5|z}&|)0RNIM$20){lDwD(;9t@;m=;$5Nk(A&75J9@M^dcKCtndp zza9m6BQq=D?JS5=*UrlfdC}q4(t?jm3qCI`Xb;~ZXX6>5&1`sX6X9v})jc7H%)ISQ zK73NOsTgtys$UjpE(?6bwPJfSUfzC(OA1Xu0xNuhZDoOXyn*%6GzkWWP!47$U*Lw^ zavy@zJx%;@RHahG%kzXCNH39JTri{+?RDvIpx1e%1p(Sdtf=?aRb-Uaxt+Z0@veK4 z`AMB~^P$@+@mhg!P(P=pD z+=&>9Di5MXqjOkCZHue+ZmEk=8hIHykCPW|o{AWI3bgPrE5@F6Rq;!IyC}i9Vi<2{ zw$4A}xRD8yUc5!q?>y)q*_wufJk@=1&S}fRaEft#iaP$&6PBR_U~DM8O$u(3lGY<#j{`w3w?cxDf< zO+Pw@vQEMVkYXu|vyx+LyXK;h)vOo-kys*HyU&1&^?FJ_Zl1gc2EPK{1N zl|wf0#8+iVX8jP`a zc*;8y0q{uBgf+e)jkxqp;K7Mr&4J^30*>e&J>~isaK;Nb(KE^*lS$PMnz9Q8io^Vf zduix>Vou}X{Nzd7?1Mt+Gh6{-AA&eOtXAX0XHBO3Hb+A%M!gL(yY;|6d9i8UB%#PD;fwktz@!JKP_^ zQ~`~uRL&XPj^1+vE^D9 z$@O#3$L%Yz=-8k^QwyAscej!8D+-5IW@-j5;?e4Eclzo^WqFJCPMbk&gkhGjX^cKN zxp+_ue2H5HEq(C$Rv>De&U&l}s^hZ!BdhxoRfI4dBPd=C&TfNVf_^j(x1)a%(i#w; zxY1%fnu!+XUgt?zev(w|%blXQF>u6KowFArg#*+diL&iL9H^)> zZUhG4o=S3$277BT5|2Y-+>XFm>7uoF+=e@_oz@lDh(X{8tN6JSZwa*{dNk||uyiHI zZbSjP^NtpU1Mctm7WaDV>F+!bh6Wv{uwBA_%vXS2#ow~So<`VN2@zn8y#1Ror;AbM zmV7Y8*wbSOx_?)cpyS@?f}rv6x~U{kQgMX0h?}v(gGVm*?@H7h2iW(x4^`PeXnHcE z5+Kln!*$nPBzAkFC%6sQC%ib$QR-NYOMRyOla=L;W>ka<#Vt5NJ{dNNr6Jx0`bKLG z8AlFx<7GUL#J0g2GW0Z7D)egt|I;M!gA?L&yLFCJ8QZk zeS@*=`uHdS>Uw~EM>#LGw*cHtSUy3E^Uxy3|A}Us{Z*Sg21MJe?5534`grC!_0>39?hE&@3u|z;n47q6o}i zm;~99{zz_~{4UDPm+w}3eY_ zB=otEpP?U5Ksw~?@i9UlMBW+I!X61K?I@7UZ6aX2_eJx+DnKOEyJ`m$h*fI5W#tfD zbAG9tkm+h_`Emii8g;J_JXh^s@dEYIQm{Tm-#mw1LWp@L2g|ZLXIWi&#!a|?Vav2j z5!eDIt0fEG!;poh!D_TrqYX#P%iHgWj+UPs;DAPT0Y$6H)pVi`%Do&s^$`=jf${tH zdIKf<4tn)sgrL9E@Q-v!4e8#1Z=VqwfKH)(@$f-7E>bC6ddk_uz{E$L5<{?CM_U9t zc6Ap7QxWUUZZwI=ixPROJw|YZlHg#jlpCNWaXGli{MS`06JXG{l}Y$d=(`CI8tA)3 zejkyKs{4n&tmykwn2D0ru*&SU9uiEpVT~F(hdGRY{zH}HJ_2^apsiOf8h$%Hj z+O&!>2d&02(lN#h4XT1$Q30i442?s{gQ1!gaF|<-Ut=}mh7w(dSfe!rYBp{;g=6~awk85A?M!l|Pm*t#T%B?3;!f+EI1dGKUXTF0@dU7DxL(hB| zW?n1qao*$~Is7}a$GPM);tTVxbrW*5;x316G|5RF*RhFwBm}Nw5w(i`hbvA0Lk$7I za0jhSw~3yzV#5Wf1;*AQMZopE(*(6kMzEfYWs^hwP+n+Qj|!^#;3jb=uTDg#Tec#{ zV&MG%8_-jBjU1J*{5*M985CX^mJ3egu&mTNEf%{>qTug_0PkO)teA7SRFHnl87j!4 zKB%g>3+6=03YI*_EJ-1S9=JQlDtSRSB?q%)+hEn^FjX>i*b<0@E=z*ponm>47Byz9 zx0|1$Ktnr~-lToGNh!yRz|pWTpJp>qj!UFD^B4Rg@%z6i<{nR`gnY6QQ$G7L$%=4=o}QhX4^cS- zl}9T;EGr*^KeZeBYpkaV_88t3CxKP+sHJc*C8D;GEfx}Da0EHV2h0>_SePL4U?lny z?9V7xAAF~BT9*)HBdmWrI{-oyc!``c|LWSMe%W_Di(>IcEJTish+| zU?^~5Y%8(#ln{>y)kk&@-}=)5-(LqR_z;+e@HxMAqXsDK*m`U6mE@1D|ATMMUX{ye z{43(X2fl;+PNEg*%bls_$8Rg%n@sJ3;R5NQ1y*!eb^n&@uFIs`?e||wM`y6#vk8k< zhbdXP6V9cojGCh3UA4TRko7a=|D)|);G(M5_i<21@j^qTNts7fD!N$MIT~mrnB^Xw zNi-|cI#HQ%I#yJJQr-p!%yHaFWo2b2Dl021>sWcKKuIaPpq8R`p|sr7XpwaivEu(c z@7jAVFj)P6efj9@+q%5#y{&h>>s@QvJekSvks!hMr=W@N^-@j5;vhCL``?NLs2C$f z>{dixNWmeu>#HcSs*Aw(XQ5Ln!H-GC4Z@E_m!Z%{SZI-1XdhMR+L>(>dh^i=Eq_^< zvp3bL1q;rBv5tsJ!|JDWa#9*=Y;V?R+H#%FY@@~_m9d*a6~O*=`iBbt34wc|DO=e` zYJVz`VekGlauaaFALLIbDIqcRSnGH+#!y$6H5b8^FUFbd$3#^lUk9qM?miTdfjBK0 z{z5LVvRno%)mxng|J^1GNAOws?}-f%mt}!QAdi*qcZ-Qua`$~;HZ)uo+8^iz)1p*%QA&k>MDK*6@j1OfvJvPEg%XM+rul$~LRtG7YjYrGdTGATQc_cTtBrhxY;xJTY%&A-?~T>0mbw>AGN zaw-N_hW5i@8L=rzUZRX=NOX-P>+#%W#YpYOp-zx5EpyNlcy@Op6Xyr}$psUQowVjn z>ieOY=eYdc8lC>`O|H!M-1{_tkJFID+W#?gP+vZk{R;6O*c{j^Qr`Q9D_F+@WkkWK z6{9LM@p8N_>TEoF{T^5`MRcj0+y|sT)ICZtUVlwUFFv+k)=>SMJ~qK;Nj1^Se#Fyz zDE9AXUSQF~#_6^N8&Te~@(x1j&6@rL&Gtkp9!cR#3LZ-ZZ9c=l9|V1&O%$@sG4QF& zo0?%H!9Jk=`GDkvs>sv)T|!Cq-d}z*4F0vX4=J^ClO*DxL?4R|!i3KlIn7X=cDokMBL1tcaL;KzJVG0g8O5VRQ@8RQAy?xnAJ@M}O z;k>`CYP;UAP8R>eS~Iule;9gRICteyaxX=0^0zVF%zv_~ea_|K{GK-RH*dmLl{3>K zN+1|YLrD+`0M}7^>A1CgFcqv9{nIkJu2kLQ9~rJ2IZrk< zmyaTS-rm_zro;>ew0i||AQ|VrVctM+$3X@Oqo$a0%OHKiW&~< zV=CiG^^`10jYWJ4vFYT0WyNCC?@t1|yqBcdRS{>!}gn0ZrF z-t<{vV&8w1ywjL>oSFA;D({O0;k;M0nO8B&*)196;@sjmrC-1y;J^ju?p<}G3m17K;NH0&hS{J&#V!_xU# zPkf>n-In!rOnvuEGU_Zb>+GlMe7`)5 z%(-pWNk@0X%p`}ud!^<-xeET{ZSHS_%OM^IPe5-pfMvph$bbX1s(u)NtFrn6x|L2gWKuE`!4%fFg1kM&G>@xlmVV9Lr}NLd>8bH;1?A|BRvXRtasP zabOS9K#M7Dw$jvQ%9%?oCYFd9&csQs#e!SYdF(TL*P5k7L{TT{<$@X^&o#SN$*=dG z`^B(09DMxbZ`3l^PaW*ga}V?IX>U`)iJ0^G2SO5RU>#;}{jTqC z7*THbeia{Fh%#DSip~64<`!Z<<&Py9EN9!k!R?zsU-J=(Onu zg8w5;DJkjMfjGi_j8RtIPlNn#sQ>6x)`xuA( zO0e!1_Ou!EF~QQmGcg=TdzN;pmG?AHX1k((tQ~af{aY1{W2i_}Y}~d$DAkKR0bx(( zBtRd7l@>#m(DczaTR9-iV5I+ZhDaW`cUE z0=46RBS7sO1*-B!hX9X8ubMwCUegN2;rY`?!?+H6#lm;=j~Qxy;CK?DWWRJ-7`$^d zt?A|!9dwO}r(9f>7b=fv%LqMYhrGF>htgtBYRV_fy~E8P_MBn%iVLOa9w^Xs>Bl9u zko}knwZQI9lE56rB27xDyTv3#fw5AeCuNKZ2S3ALg%EHuAkNVVx?p;MQ6!{`IL2sm z$N&H?ze<#iIZ{NRxqM%8cqnZzsU|9*{-QjkMwitJ+n}-K3Jbj6CX$KYa)sZQIthLo zq#?`2?Lqt+^1MXc9SHSGa{5QXbvF(gU|a(2-^O;cC*U{UJ%IQ2vTYy}-6kuL5Ag}R zhclMMw4b2QatFQ}*kU6x)tCxNR+&kpRY;PLB$*vJz|Kam(%7*m#R=~S8;it#No@N0 zvyt*HkV^)a)(H3k80^oXyD&eEI57ZMv$hMa#_3lE zn^&jF8#=Nvfv@-8|8@@IN3w`&nx#OZ2CZ{VB1CyeduSc-7L=EUAz>G(1HsUk2*DUJ zm?$PD9*lblyC|d6o})4{NncV;jzFjh%$XMNIL(>4*?vzM5+Ft+J}Ug@L}i~&932t= z1C@laD&v2uA!5qMY#gqW2%xPCI6rKiuWp86>b8!xW*m?;PpauEjS>Ir_h=Z$zA6-` zzzhYlmsJ7J#_)`0^pA|}EK{`Qp@aTBh(&H1gV&QW9sz#WV&Icq+H5Z+zS*@QkvUoG zpTJNBr@x)%hp~#-zTxoRDKPXwUWB)b|K_)SfWow-C9H4R=VS<24xNG>K|chKAa2p& zgZ5?Nz6lA4NWj!IL&|4LQWz#9>KX%&KuC>lNG=B*h48~{3U9_oI|Nh9{4p{0L=7-? zI$L34$ikSh;|MVoO;7R&x-B&uDV0%y%1xb#3A5HKRjucmwThmFK-Wqtdbkh*g?aBQ zW!`%;Wk?lZjW!mEqXX>tIc(3hy-fgF%-a}gf#$y%gJS^*`?w4E_pUhAYo<%a#5i;M zSr~QJGp!jF5-Uu}0c|8xI$;7 zRQSq` z2T@4iB;0{YXLM%&-wXu6*Vvb}>WQ~cjqLxQZX4sRn>M$F`2RI3#G^l!l_0Dmh;yhQ|L@w%mPn0iYAYJ^nl3}>kEHX zSpORf(-YsnECTEIKh+xRRQ3ts;fAudZdw7*pfeH(P7?Jz20@5c3mn@RV-y!*Uwucv zN89#Q1%ZNaD@I&k&LEm0O4gu6UnKVDF&xbe+=@}s&zP&Y2JQQ}Bii>eV?D!MRpplU zp-mIP^K3fgDIPX8%mh7{v| zKrSwDm2pO46~4yJyi6!>MlR)Hq*X!SSQ(bFZ&Tq=vIa=Pp$b$uRDo6A(EBsvj0ahs-hHA8=+aaVz~Vx)dA#~2 z)#BLRDUp^&hdMHICnqh9V1m=P%lPjWvW>W*up|gxCyC{+A^+qB=Adf=5$!e*@!O^- zBK~rFOd{^BXp@L_=Da&r@-Q$MX6+VP>UPM8j=)#aG!I6o>L5e;e_;awU!`B?#jCBdPYMI+-9`Ev}V);R{%Rl3PSf;zr zy*K!omWdkc0wdX^X!$Wdda;%01a^n#62qgC@Ezr+LD|nID)}h~$~n16)YE>JEBedD z@?M2XvQrT`0_&;w=AhmsK1g?hlAqvcApMc{Kzh+(h4g+>XyT0NVWcCJWZL7<4Ze*^ zVx+#3YJ!2WK|~ZHq@)5b@`H&-!luEo5w%E7!lf3ld@nx^OQsK7}B84C|1 z+1B+5*|sZ#`;0&z$Oz(p5#JN&PH{o}cRQeJRAUsX#@-c$D(8RNLX~byXZEhq*^i6P zp4et~-!_S(u{fHH98HNRRc%aqp*5?m2!|zw7>xY2O!3z-95t2fuLIu6U$wk~zvK%3 zs+adF+LQd%AkXVk8*$B^w^EJYkdASe98b|G<^U)eSGboh5^bk~GFPh65Ug5$0yYy2o1zw&<9M+-~ml{ zr(VQ67}0!$u_^4}w-!{X0WG}=`OVuo;!k#!?RAP)o5IDIGg6_Jzv2gsxThdm2CgSW zvLHB#cW@ajPpt&&epAr4(N&9rYq%D`U#}XfTsJRv|;j;~PM;^K7dt(YR;;p@` zgq&xgPDlyVRieclUf1wS)Rq4~;w~RR0Cxof;PO%Tp{Y)VchyI zF^4tRK;CQRcn{1imaHqStZ&X^R$`7fCg#pVK47j=ay(WeIp#12<`+5xcdM9(xZ{n` z2e@mH)K51`>hV&32zLfvTDX&Y!Cg8Di+IGoBF^j$WDbQxe{hTFiIQrnj}7+MRUCHC zyazH+6rF@v#*T$FEzRsvBHVH4v#QzXU* z@xHKHmX$v$@-R%t;6&m(U_1$%gf3YIHWD>VyEs)rc&qy^$@p)Zka%7nOe9yPVSbTzdkQm{Y`DOiTm)GW-&_Ze>}AhF zUE>?phG3%S3$3bon0Fsni}qZVgoGHi><$zphWiIkQ;EH_0$)5$bKT+^A~iO)i>DeQ zA{o#jhy@fxAfYOk_t^PguBsR1!h}jZbBh5X6w;+5JvT$3dUN`hrdG&R5g^bY9%B^0-hr^|iGA->gLJ+lL>jNU?Xq<-2I-P7H-JGp#^-d3s_;2Nz$${+ z)B#g-9II!MH{hP@@5wkD8-(biMdRWG>8iuSykEv^@m0ZN#H_6f!o>#j7UjX9-)0=V z-E`z#N(!T3p$dmjCZVil_@q+sM1sIO%M`t|7~`@_zNIO8DO@IBbs#|q8-`Cw@YtRY zSMP`Kv4c2*a z_C5DFDx|KK*+2O2rvBBHIH6t3Q5*L%Su9sb2d;t=1$AiX_!HJ*y0|sU2QJ?hmv5KL zhgh!`Fq@9*2O(2%Perd&J=u8UA0Z!gG+$0Gr+=y{5QlsrYP4itBV)Z#=h&$+sq<_l zkaZ>z-ikUSz%@g^`K#&UchI%nyk&KYP&qV5FeeXl1j|oR>Z4x1agz_-mhnGy!N&*D z2n_b~)ilALO=NXpZk04Cm}CZ{@YyJ>3besidJm(V-8~$gAQ-vqPjQz?DRZT2G^I{5 z68|1SsRWh}L8nS1oi>C>WISCdB$?%oNs?FJXiG)CxHnQoMOF}@qEr`>c;aPal%yGl zzQ@Wf#N_EsfQ0&n5Ya7;on{uvfXg%FY|hAE31#-Vc4)U&b!3=#PrRmgI4O8M9ABUp z142I}Ye}WPAB}#u&_3kUMAbIq>_uUb*t=$nezE;KJMJorRYR_NJ zc_#EGWD>t}PF z?}XGckr!6Wd@^=P7)xxm42Pq`w-e6BwtC@E=VA3HX0H(#_j3!45XmdXsc#8Mns19q zl9H`$k>u>J{&JGEp$v+~=g9o3@n~PA5b8(^nG@1&r~Lqh&~Ben2=JnE-f-)NkU~&N z!wP}V#vO=r5gsiE(xdtry~mCP|L+PxM z+*%lu9#0{XMDRx zXtm*%n6&Ej5NM@_i7nLG!O#C<*=Ym5Q3}5PvEl2Sg5|wgq)Ut5-Wc~+!>6^?(LbDv zj($ULCD*lt1#*p0A={V(kn1z{D7nT|8Rfd^?T}onq+z+{v+*dxN!pU@=6U}Qa@|}d z@_}tB^v+;d#3!AfP`caQ2|b?stKfuePjmgW{^huMrX}*-P~N%+1+#IjbPwQn_i5$9 zfw*a$b_{+S+{wIm9~bP6>o4vuEFX8j6?IyR3gUtb@X+j@8>XuddmX&X6*(uYCeQU) zcqVynk=W2QTr^|@+Lpcpo*NK@rqmD9KmCi@j*}8_eyepy^dJ_~kx@vv8UzNLb^w0r z>%UZFEFc*&Z>?W*vG{Q~-tEU=3Ur zaIA_$R&R_4nF(FsVt!V-ryRFvzo~wd8yWk*0q!JX4I-V4tEGl6`v9ER@F~;~XT8ic zp`G=n3ILsCCJb94CA`ks%;B`TLEWDlJcovVaMqc_zd*%zYQiU-(vZQqz--cQ=>4pW zAym*lh?~RfKqn+MJ@EAZEDQO69#{UKI=0XUmzwa0c}2_XrRC)Yx&x$@rcfevgM3RLYeeRJT68dMTw}I*P956}Z+^h3KhJyd=6`SOeieEs$&K+-7 zij{Ru1GDya`V3^{J$6@f`o6b|f9TQw2Aa`RJAL;hA(zwlNU~(!vs&tP`sOF#nYdoV z8>1U=?esmFCTZ8COWHRi?XgbZ^C^4{Im&aD?G9pxnl*d@EINJP8sktA8&8x#3)ssH zV$r*X&5bMSk2^viS9Buo2ufU$9rVGZh&8j*ZeV3=Y9I{Axd{oP0bYc6<$A$JrOnDU?*PS>Q!}qec{d#Z(p9>2-(&t~86tZgllg ze4Jn}vKwe;oV6ElkiU8h54B|4h~|uz8rl}bIsnO?Y3t>>&WzWzwzyUE$*|v!+%5uF z_I2mDxWHRSL(#x5!zj{xkE9Sl-~2ROyjdT=VXB@<&BmtN=z#Vhm#i<{Zc>6ZQCG1%>Z)Q~twN!z z79*L{S5bkBH|wd_EnUUEYeiS_#&Ak>PD`=_H&>a3#nMy8<)228CIcmbG}%&9rd89N zbk=kNNW&XN8pJogq-f)NH5YH89P%Vrdn?x(jk%JMi#M3Ca{9h7<|31t-*izt)R)+T zuoOrV^D6KN?wtOt`8^RNlR3bTOHm>kc7YU&0LUMe6*l!~96+mrOf7~6dY1}5gFNcJ z86=Tb7&SjoHUu>Ueih!b`ry_G_F&Q)D8_Wj3AmJEzt3X?B zodf#1mRaDyKhpYb%z|{AuO7DKBonMt6j<7{2(Subg4KwfNL$sR+lI2V6U@?1Ri*t< z5>eVou}afz?U9f6!|qQMe$1?|M`rzEdTabhtReO=jz)nv-&?$+q0PWySd2ltz7cUq zppVOc@~5B?);E43{kJo7mwS6)i3;7k^$WCRlnGFO)s|k@MYQFT7yvP#f#L?qSjS?Z zZ#^I+|HPJ?N8(x{2z|?sqHm>sN-CAX@LsFK>eF8l( zgkkK*izqA5g`sb{E$1`Jcdu=VfBUmUJ#qgv5$w|E&er^kj0wnS?AaQXZ)Ie@eZ?{J z)qaY6FGS~?5t;AhSoyf3x7Mz6O%{Uwuyf$~)vnC%-TMNv-;aEq`M1a~nEg@ayx9M} z&1uvY1RaqSMbKK{5CpB^MF?7nJLRAF;f~vmLe!J50#SQ@7)4YT=FNKIC53;@cQ*?Y zs`AEE^8KGZI#mfu462T1sYS<-s3L!XEYS=5jBU?=vgs6Hh*CX>3GhcysMYQ~r83jY z*CNz;WOE3$7?BXnTs$iyYIA{-&QFn)@|=M${0n(aLi78~L!o90O=p~ygk#PB7YlIT zDB)AsKXQsGz>*9CEQxMFEdn1G1;2;l!B(&A0(&f|jp}aBy)l9v%cr(tE1VCZ+lra- z(&&tbCr4zwqIE{*%Vxe_(fO((^Yw|9&$J?A8n_R!=LGjjTS13xBF|p>FYqqZn!PNa zk_V(V5Tp1Lq&DJ)v`~0lA|FM~k^hXLH!6A)E6+@uQ9D%jVwmE>xkGsIourDVR zR2gwY|4tmFM#cABi+$-3-{a|k3;a99ydu6wu2Agr41s8JuZ7gPkz`+x-+U0q$b?p|z>sOo}Yu#`3|Hs{lIxgexm? z6UqlE=SQU>tp0mZq5_Lw#8ZST!IIHi7_1b41t;Tu&k-zyY+R8Xv}^h_xJM3&|HXt) zO0kv^TpR`8fo`n83Yffig$bGD(0flP8yqK^2jQ2;Tyh?m&GzgB@P%)S@K3MFN`7vM zEW|H`h<-<`;eup-YeqnUD%;!C-oEfXZWX25)^WGdLz@+C>05%EY~FvOH;%{~qpG+X zS-e@#En`CwUt+F*f)8ym^Z6bmz`;JD#bWwHs?FHVVWn91#;s2Vl&?LG!~#W7eBVg_5wZW|o6np1F%w^Q zA>19BZ=a^GR5gaHdC*K|T#JKNLTu$Lks&4!sG&;!2?BFje+2URQ6aFuAW-o4SON=L zq^1i%OJ<@VYr2H=wUo0HXOpnSXA1bGy z853VZYUI9E`CIY@q z97Jsqas%o4Cy+PbCK7Uf6v%~tjosHM@C&3=a|Q+ISHB)kI^ZZ)D&K0~(?u&@H^VKoA;Jfa@6F8OkWvlCa& z4HgPXz}%?9NPam=L@NNMH>=;1;1I@_Ls}`&9DlsZ8#5+-&!Yeo(nnvM0|}rMia9^f|>-g00U{Iq(!e35z;VwfqcJvH;@~jPG&(6YkkMfy6RKR!uu!)oooqMBn!{12W+iGxu4( z^2cnHg(%V9`~THu-)F1kBIR%W=?Yt;O(a% zu6iFO-fxz8jw-Q9?J)_AKGJ51x@{J7UTNkuPk?FvqD71RqvRZcoXS3o&i&4ED|f%P za&sE06;^)Q3`jnzQdl`bwISyntE}xewthVO}LtE|Com8EuWi`n9K3clTpv;-%lD)0*5(^Jo5Fc}toCj-=^8*GxqOE4m!J(WVPihNGaFeh% zfO7wY-4J?;az5fuwE5ylm5fe;AC-yH_j0p;xSsjYY4Q_|4#|SfwF1w^qcq!~+H<9k zTaub5SB%SX&7QX|wLqR%rWWGLp0!x63sOCNkDgiOLwpOKx!pAL+quiH`ON%$PB)*K zpU>I6a{d}?*`61`V0+=6SVeM$RfMZC;SsePa5-AcSbUFMc{&pW<+C@i8zfrI?#`&i zrh=Xf_^NxeJl$3q@sWm)lmJtaB^Voe$Qf?L3(XhJFJUQ~e_o?hF3~BRVZgQ~a3Y6} zD%*cEwlf^LTDgKGqi-Q|c(b-VY#RG_8+aCXCT~o4=J@+)PGDn4jG{5qqKg0bkJxAN zWGv#CSmVvQSMrabEh~8N%{ZY3%PR17b}bPr2tBrwrgz6Hb!La)RGrx&=){>Ff%oap z)omjHr-l$a7G<2*ms{MZh6Y|x39jF$=4Xa7^b;Iu_A4V^w&Z8{b!~7Ybu#w-*%?EN z9)m)Sz*<$Jxuflz`fRiBZ@9LN5-r$_mv#eq+OG9N5@jq2o7aG(a#JU?4G-D*!Pq{Q zCW!kE7Q`21qFT8wNR=Af0TmAGGR;!!x+iG=NJ%046J>$w-Xq3TM#|e!j`c;zy zH|#efu(&_o)R`^L4@LoLjN(d1|2PyWF*q)AF}5UK%gjx1gXwIOs!jbl)P&nSapJj$ zEx3n=;hutE9dC6CLP@MU_ITEP%UuGVySX*Im%(6-@G6FH)&72eqv`0~4~$RYLV5nc zxK|QinyRRz)-eF|cc);VsZvHHqMdo=q%{c`l5joi#uK?M-$u2FkUYT>j4j)^Gceo) zMX+o`^IMF`a8XWy*F4Re8E;?MMINy&b!acl6Qee`?79l9WbJXp z8#`j!?~&cO{9{x8KvLO-z&{qpPW*1EsRRJ)``B9u%Kx&}^6oKyLQak+q{TfT@xvmZgE1A$+UCfD) z^O)y2GtVh1&ka~Dq=qyn#>j(c2lN_ltSr`T53d7NK7O54X~n6(_K3x)r)@b5=Yj_n zA^ZwkZ^>5Hx^2Z|^gaIA1^skFjDm>2-L>TUW_M4DEGI<48bFEJI+-8Jt3>nu&T^r@ z@>KI?r(532Ay>shNh)(gYf~_ zRWCGrCh)5xFqiRIyHdlC?j^LAo*9+8@K(4+EwYkq1Ms zo>#uwv5xTkkWH0rH~$tQBL!ucw63T2+;li1qiLHUUyuqs=xW*usJ^@^79{6 zPWfbX9HV2G^N-_Wlq32FMNxkGst^6?53u9R3#cI5Z!v@RP zUd>wgekHIx7FfO$2-{*D?2GSMxIJ5T?G_|wGD{fA!@mHM&kQOg!vbQwy>45x2CzM_ zLLoUrA^8S9gk+=(Be~G%cDIRS@8!RX9)uikTPw*{tR9#ev!>K57as;uibMb zn%6KsTD$2Fb6em-5MBB4S~TXtXOG$#aN7#P%M;VF{lEV%pw71Iztd#>;O)^TK8()7 zz`b?PvhsCMZQ*i7HMLqkaj}Y}6sj#6*9O&E8V+6aTN@5IbRzcX%sT&%od?Ee=#-~W z@#Dv_=^ea-M`%iF1|}*n(FJ=hg|Eu}gRZ!HR$ST7MaM%zow!B+@k#Lr_-8H*HkZEz zC4o0t8|KZ5Yp_?H*SxXp=b1@J`4V2xATs_nD8O0%8Qi$rHiM}lG`#m91@F@}T?V+= zyqZ;Gs}b8LzwjUpK%ihzLz8yRwKS1ZXzgapzTw8rIXDZx#k<4*L|6@XNDGfj!*?>i zJ_Bt}V%rngcAU&RIfd&kK+WL^M$`BpisUzMbqI&^-`kaWR%+1>hc7iX zxFuX__)d*~KVvJS&IgFVZyMUv6DYHJfJ?)FSx{jo8QSSB!HyHdb3O4oVj7lpil*}g z?j$1?(c7+g83xq2=l3*k%ub8b`@ZE$B6W2Y)mDKvqdn&cE9Vgd^4fzNGIu_%kW4Nn zOyaEI+~Zju9Fpu3V6(^LVH?gD!tvvDGE8A-NNq2L&|-j=d`YsHi-k=kuj$saGLi{G zJO$xxBt{V*u0jus{U>^u1#ghI;C+!13^04hJSrARK|E#4d%0UAJq8PF&v9RYEHBga z8L9b3!7(hVlKg9KH{hL~1po5)C>bW=ctVZ_3ks-LJyN3@y9#u)=PUS7KS@^;Q zrk56imd9S-vX(^&mQ<4h8zO2jQ=^w5VBJ!Cp2@e*~bL*n_EA8X^(2?*B0p{1r98zY%UpYd-rcs=&_g9Hk!* zZD<^WANAM)cjX*E9vPx~9I&3nhiwQ1hyoiIE?(otyvRN}kb%99!aYXxo#@ZA(04%N zPl0zB{Z5kAKb_3}Y2a>SRacUiU%l1I8;pNl0S&r|Jygo%@;}l)O+9-5m#9j&`ahQb z$NN9(=USzo&x98c`dO3&^z$-u9rUwY;bkp-m@ha|r82cI_!(*uh+mb!*N67lJ@xY9 zJq>$dL4@w!!bkl=>~p&T8`JT@KYmxEe|R@eFf4dR5~~oz990H3bUIXT_jn|!`oi-Z zxYgXDI%j63{qFJj#Es)BSS32xLiz+`3+I2Mmp%4Hm}vW-R3@4k_;B&oY^0=N4QIce z^_@m5&D@Aq8dg%x_QJDH&CLzZm4tC=Bx~W0dl0+raE3ZLb;P;w5okjw#E5X|UTOrY z4X(~``8!m({MiW?`E!#%U&e1Pl-Jn_E^G>YsLqwS-hTJZ%mR+fCC6bzf_}kTSBABz z_R_hioc=xJpJqqM=%g95;w~Dv_o9IZf){WvJ<@=C2j-#S8opsl2-_oaPHs?O0HUQ+ z|Ff@|z{Az65@T~}*-`T|?5)A&U@*zJ3nA8oRXTmU(JbTMGAx}19(rMoHE(lW+UL3sm+P zM_IDeUebh?+IO8rlLtGfVbf{0KX4u5t&In#!g|TW9fkV~^vQ~#=uD!B$Q=oH4*VI5 zwWw{QKLV?6n{mJ}nvJvoe)ix_{IhpK*6HEL*N^zM3%*jf&I9ad{~lvC-qPv*3Q`)& zndDjgl#_a z!(_>L5CbL+PaK5;7Ovz2OQqvYT9Wl$nK{|3#25m(Q)u2|G%y249fLl`M5-T78GZzg zh8ya9m}aFf<6g}#lpKza@9MFaX5dZ9;m&f;A)+<^Q*zjjcSZSxuz+9)Q0NyIC>%h_ z3;0lvPl6B!5F#?^MBl30uIkTuR)~&UzIbD!I{}#w!$vh?1L^uT8DiBlWe2;m2 zQkZ{YdQhN{cgkEizI4@7Nc*OTiX9lE*pSr{E~7<7@_{w6#>K1-f2gQ^L`B94p-SGT z+o%QXQbYx^$;}GpkEnznSoShpf#irpIMJe1wT5YoS8lTq^elD;Ygvi4!mkoZ!$@m^ zL|HG^Iw$+z`=_<`l2g8Vjg6EIIx3R``@#Z3`Dj$~kqGD^AA&2$hlhYbKIH1}amVgy zfO(Lc7f$Rz3{IfURE$Zd6sqrRG4=2T2Q1ok!4jA~o7_@N9}_ZVM0rk1?u6$-x`m!+ zj)_y_V)759!#HIJ_0vu|b8!BT>4J`kXN_uE##BAtrg(d4HS&6!l8W;9wSoni zj78}Wb06eGKI*oab1<^ayOpiBWYi2x)_de!DxEF$e=V{HwpwL)tQ(Oz)D(Ilw2zV# zC5gcEHrDjrEir3)D7vQLzhg*Div|G$F&nhJ1l8OfyP87r@nAWnY7lnZ+ltNx2rc^> zrD06!&XQA>-GdDqrh@GBk8_*{XS_m6us8c?u90LvCX0|OnKPuLE==-I>}C{T?>5fc zOo#kH)4RdDVk2&U z_rpLLJdIhbNKd?YyX9#V&i`zf&*Tx;G!H#Bc_W`1MWpG7^`Oyr=$ z`zEzr`=W2O%pdJ@m$G_@V6Nux-r)2*TsZnr~j^Er+LRNAeP{w#Wv(XL*OQe)KT#*ooCBthz()9 z1DPxj_wbbYWFyzvN|ludriXP|v}CF$uHUMM^ePoMJ%QBTUm^0hTm^zb#Vy9Ou+`rR+a|5F&>n?gUrQu5a>p{wC49Q7~O+M7PrF6oy2!T4xurlXP zvazA1viv95&rF0gq&XAuk5tID?oIkT{S(rh{_9d4_BDHl-EpGJ_qAioUPsmbK909N zvtQYfh-|L-UxLT+L->vFQ;whZ79H>M?awLs8t@IfsO&(FebGC?j(CN!P>%P1@fVdI za8FkSW2|TuJVrnHv|xKYyZ*I1?!8Bbn)zMVf9;Cj<5(9LcT!fc{i{!m(a-9yt?Iht zslu!-JDzeJI^c}o<&6Idsepe;)4z4Bjq_aa$>*;;7LQNRvjzB;g6kAbhs9cs z)3Yks;$_lylE>WG**`r6W)atjP#AJnd5{2GsylV%WrSJLw;2{akSW}WA)Rn1E$O*L zH!#OCMc7FP4D4i41=v6yA+`zfTJ4liF`kEKifelU!OY|pL#|jXg^$LET>op$?pNRo z;{)tv8*s;wZyM6bsb34sJqpwo;25ypaU&tEWm!-!^W=*0p==hxA)&>MFWwDqT(*$L z(*m_l57|-(C+q{s1_`TRb_6bIvWIgWp_G!r{U}j^F-Gr@J=%9w6?O`7RyB^%yH~kn zr;y;SViVZxi~JgV|E0LYJw3&Xa3ekj$DuFno_jD5 za`|&pT)u6NL%W<JyOFBJBLt%vV@+0A+@U%GU!9~Xu91k9kayT zW8Kmy~V&WWgw|f@@u9_k(ew=)G)C!#k+w|WvbJU*e}8_csS#?-ADVyj z5C2pC$KNmiq{C6=pZVv?kMM7fW)Itje-p%8CG4;+q~vPk85{EPs@pDIgn_|5_n_lO z+H$@Ft4bPcEUst0d?0dq8$@DWW9KrN;kK832Q4FV%G}-|@f_dT%cjZOm8yPBPjuJ( zn4$P5jDt(yKQtcANAHi-+QU;|Cc{)7m2S+#D@(u8^-|hIRe+H}ZYVxqw>|YB4`@gH zp-zw)^#C{(+;^hv+mf9AoMdH$6IGZ0fX|$hwG4 z9hnfsCgEe?fx%WUA1VGkavgQ=j*XqrG&vx6Y&zM~6BifPycOq}A~DoDP4xm};Y`f6 z17O`wfOT7QQ5MdBC4iFEhcMZ$Qddu+iAAV!G@>pvUtvnH4+3KWyZU52aXo6*i-8w> zH@5K!?ab#R>YJ6s$sDIX5{q^#XIzc9zcpeJs|mZo>Zk=hPCA8t=; zFdHqsEcraNWwY_(-85d;DMIL1pfPUj=Q)WipxbgEgai9b#$aN+X0AFKJI#uAJoj7< z)y!4v?B-y!uE2#JuM?Q_2fxaBGQa7G-9syY8V9zKQ}q2}Cik~9?z^%8;VFqCxL7&Ij;p{ zNRIeF9(`I#PpM7u%;*c?KJFO1l<&WdQHpV;RRVqLueT~5<(uJeI@{Eqxk~MqJPHzM8 zDDZj|NckMfGC}V=!ENF>9jy4>;YZ1QDxryw&glx}OlT`7!f_!L*CaUoW0D=24YQ_u zhQ<}0?`W>UqU|J?o&*2E$Yjh=II0?l<#_Ak9r1PEtUD)*^y5=P@GWym##{!m_&y50 zgoZrA10IWfsud}!6+3>;21*gF(R;=@ZK1&TgY)!_h>!fiK1Wyv;pwOU;K;0T*qt?+ z@1S-%MD({|THozhann)D+~)30%{xzsRcq|UNQQbwo+St#RKQSc9B6|b2e2^I(m~#= zH*R1HuxU8My?n!=)g~kdp*A?@qF;eW#K`Y3&PCverr()t{OcMv4yS0OIoges@R3{fXG|syVfeXy<9l7Z4lhdl8afoz96+z4!V>R2aX3I;;PVug1jn)HqQ| zPCpz& z{;R4Le7FA=N_06A8H=Nm0Fs9$XUDCT1v8wz z*d2MDEAzDQg(tJ>+i_(e30#vX?yS?jbCc;z%5ysLN<5A)scCy=y}Zl1)S_E z0F7vEuty=ge0J+I{-OEH3;ET*qF54Pu^Y7VkKkitu%=EDd<_YyzzV5?#Tby?5HbHC zX9Ktk*txQ3c<7QkFztN_xL^?OMhhlk(_)^RyE`xr+$i+?UwTfQQlM6+h7Jv`NZY=F zIdM6w*w7zQLMb?JDe-U4=1GJL`pEac`j&uwVY!&>TD& zL|=yJTouaLvMj8wN*8E)egbHQBUh-4B{W9f+pPguE$dZ9>jT=UZw&*qunz_CL=4?O zm|liJ)qazW_}^G<5b30KBXg*n8a57$10to1u{snEYK`r05dt-*i1`ZGUGQ#U|0_Bw zVcM|s)O-!j%=($vkddLKR9c+v?nK0*(?5q zYs2D#SSJwOgC!A%C0i_Ft;O=0H)Ur33`I1&G71p(v`rB5GQ{vXM9WY(5LE& z6S|!zz=KaX1%*WpKS2(BAi%a1 zuh<`8-fX`IToq1a?Y(##>Wa*_A(&}Dt^G$NumSGo7YSgv zfg2)Uhwc@Brh*MnV=Vr}{0sJ1w3yT~Kz3?d0;E+QK)e$KLX^+e>0uf74Cz;N2IY{d z1ooARVX@3ACuVHG8F>SDPc9F918$ZlOC@9aX0V!l;TmfUEkeW^G0)k)*`<%dS)K1W z4()VQ9fp3SVuf4xhN=kQfUr#f*yUF+1|Bk}gK^#Bd^cR~7# z^s%)$o~F+BxliLIo*oa$7ha!epL>sb{kD4Y;0eX|b>B6)9M}Ht+wq&~o`T;~+>`Np zsyiRQr@1G{_cPq%@N}lziQfV4i}8DoI~%`Q?jiDhnEPBj{nLFGey?$#ir;*93Vx@% zPm=F5+{fW*rn?({XSqA#_w1sZ9ll*M{$za3+HKHrE$&N}~nOApQ<;i7@7CdL9%PHoxbwgpp@_;bbqF+}>tf0%qh{CTBn*Sv4Wi zj8$vN*kCr{WTr&Xb#^NoE6N?vr3mL_H5_E9Hw%>IxuX`@qQKW z(o;d_#(wtFTakv=Mj_-IZ?3YJk^dZAby|8Fz75AYOUHSdy1LJtT<&S==1%os?t0E4 zqyZ04J;Bp-jC~H*C$N4`(`@_QpW?yXOW^c*<3VpquEh{*62K7uE8d5L_xOo|$!@uD z-gpYz*x#JKt#A{Epp5@GFaSCRaCLQ$B!4z`a}UFBiaQg(ecgY@?`-#g96c8kz^uR1 z)D%1%^fVniwI^;q^E72lJq9;V3H>}xeWy(^VLNlgyb*LkgG3f^y$M_%fCH=X8;GKy zL(=wO@m+z6Ho3Mf%EVw3xbVM}!zyu87g&alKX&G@HZ?9hCraKOi4x}p?rjvUb{1Iz!Gr;FsAE$lC?K{;p##EH zRN&Mvj(28O-GTF6t|GVBB2djj;Yl{2u*Wp%v>oWQIqoNOYc5^Gp2S~rPvR~KqxAE; zc(e2?I8yA2T|c`7aXilmbpO3_>3@aITYxH&1@&yU!9E{}JfzQL(a1Sfy$IJDb= zQ}bMXcRJ#$oS9qh7|HOuY_Xadv*?j#1F&rtU?m;S!~Vw8r_y3$O8DoP$g~O9L&FKI zE`5S*oqUOJ(n$pKByZL?m&=g+5?{BIa2(Bvh_HbL$~G0ce6@kM!4cG0DF|yzz)p{f zlsi>OoM64Ax&jpexmM)6IM|fsF>p6d`tz<&0#A~EF?l}|pbdu&+69g@cP~?enD!}} z2zwNvSQz#E<0uvVs2UB+JrV$H_1r zkSDYJrUeb_xqvu>b&INVe8AOi4)|q6LlMdGuKxmE80eSdZMu5uLv2FFz8Mb51@|R?VGj=9bBUV#HTiRvI@@u5XYyLu-`u0+pFGOdX#)^Se_TkV*LTPll z4Ga>~6Gwb$QqQ<+5Ts@dBR58`w) zX#%Km1U%Z3r}=Y0qbt*mG1EAV|Jh!)m$VoDfcGeVMuI0}qJ7bNII3~74GBuDlx}qo zM*a8>0NzEsuHHQv8{0Ii)%yrK)qD3r^~Mm?ELFm`AgWNxyQS|Ibv3@c_E&hppc5|V z`#kLb_M2K6m0@fgE!2O!nTxuG(a1}1A>9M&4>qZv5u*N%TcfEDpI3D*d<3X1#DMvv zSb?#enL&4z1ZE13A0S}X8zZ>hfm)U z2GI7`kA;bIj;HDDqTY0aR4`RDd_lj3juXcr)rYYOi8c8O0_B@FYYoSp4po6WlPsB` zW$v2Mhv(3rlkNHK>>?YUF}6mv*#qB&eHI9!e5zNa6V#|ubV32?2dbf`HC}fJKP>!J z@dE^dov?0OJqAQjYhWQRA%56&b2L9hmufkE)tJnfpvwMx%d)SIUG~3Ymc0s?#~?1U z5yI4(w=#(`mX5R0*pzH7bMvebWCBPyH5%5UagGaSgmg$Qf42mOe?~$ArqW=BK>zM8 zYM@Ger6rDH)fmlXqQ#8er?g@<J*pd9+N#kDS~Y#4g#-m;#zu5_6!NSHuw% z;=L1m<&mojU|__Hf>{Vc++>>=neK9;Kmpc7R<&)EQ$_;qq&6<1(?T=&m zp2JPNzYOn#=Q@19z#HYjy$dIHp+n|Z<4TS8$vzj3_cAjCVNIy4G(jp*8PArZ0Z1tL z3@F^E!sflH=S9BnbG%>okp&Bg@;T5c=jTl+JYFW-WgqctdGNT45VVBl344PHvOWS2 z9Iof1W{Oe)u2vK2gDsc$rLu7`%`!$&SSVq?TP)u#R869z3gbGSo|ED7{hH(52S_jo za(J727Ikug!xMrxh`qUor)M40fpgWWR!R?Kzyt-tCPhOcg$hU{RinKGiGE&EfyN)= zAg82eu!(takFZP6^h+!@ER@|;z`636dv;v(~Swbo5NZs=a)3x<@`;hKQ| zlB%9Bb=y0atH5xkF&1A4>7;F8yXQ2_*1$*;#wn>zL%le72--!Wg3NYH!@_`C0EXNB zC!0*|MO-?8%j?3pT;J{w;}QkXVSZFZLVOh>U5qHHMax1}IenXqMZX1`MgJJ1;!tmd z^7Rm7C_SB77)LH!-_hEX7m9Ap+c``rI{~k_*E8L#g6;-nmYXUkTp9w^{9eO%0||7iFMbPM_^5yzyo&b(k8gRN@@* z{(igCuOQp9)PShNWi4$@kuTWckpteRqZM_fQ zTpyS311PNklvZ_$%RV9?`sx7nRVDRRC1Mz4N^T$mE3e)?7s`2R-_0PXUigC7-IMkakHic`&3Zqa_=P z%9Lbw!XJtvHyGKe$#ZB5Fxzs`@X%KgKr$^6o;%ONo0SisaOX>eVWr7@C! zVP$_rLlmV_J2Y{C-U6C%tAf}6|CN=7+z29U$g+sAx^HVDAndri42oMQdr?s z2nN5*fgTzBB3=>wRP$k>TN^MNFBsB?dsc6zA7c{+G*U5&YRMe7-!v{r-@rN5R^##jg9H7&% z8mch22o`HCHgab8{J&r45Z`?UsU{^sjYtXTUsw~xE`>GXJ8Oh_W2O|AXas0-BmE7a z;tN_C?1unw#7EtB%_WLDOk~H%x)>%>Fh|Lam#0MwhGcbR58a$vmC3|51A~Jk;Q7=R9`5nB?nC*m1=sgSY zAS|a{H2xM7R?rwEmtpe?x+F1sUx|z6U$ufyYP)O9nfGh|9meN8|LIZrjCgCg$}tgG zs!}IU>g))bNE{wuJfKElMryn7#Q)3uKeJlu2gxxmSM)u>@2p`mA-^2waq*@Q$t0bS z0qe1f5=jIS13oJ3$>?orS9E#AD>p1~MLd_kGrqN&3HQY!LDw!q6MRoXog-hG2Cct1Na2D~jQ$=Ce%7N8broEhUC zdLedXI5=~3%L)lbSg|91Sc^c=)KG;}VpM1u5|LpF1= zAkgU|34zK3tMfrZpbE?f34tocgA*EsDd66tX3E8_EAxw@XD}6WH(TR7=QP=VpQUets%3kgVD{B2`e3Vm%2C(yb>!0!JT20@GjsLL@M=D|1KDV>D)p>HQo* z9|P_KgHbu#p+Jv-FK{!u$C=~JImWY;lT9CV{pVQ{e|lu13R{S5veh(fe_n^x3yt0^ zH#i^5ZeSbLHDVa#``oyGFbpK zlq0mOF&~6@Rm&cH+HP<42^n9b=Qkoy=|C$q;`T#BBA+bTFXOfZF)pudHBDc|4# z1TC-!4w#uV#^2$W(f;wjqQv#?UBTCA3e=+>+Hb6%1B?b-CDaRt$I(&^@vJzttYVcv zC$nkhaX7rU7CV@3alyy?e&8j}fn|PYB?CJLUc)OglE|L)pU%u9Gm{b0gad!;uzN53 zpSv8HTim+>R{?_%eJFsy1VN^y4;;Qvotcd@uYp{<{1<^@@aF=~kX9%+9|Wxx=7XSh z1s*5`OyTtHp%0NcU72-76_C5ruq=UCr~s9N3++oPX#dgU?Oefi}AV~%TwEt!1Sp2g`5Ml`X zpJGh=KZ#e}yn=Jn`0U3Xy>LXij6z!&1r-7Qi=HqHfynwd@j2abASc}u0Yl3GqOAI@~|eC zS8{pbRwO?d^UU;>k}i}!Po>XS>3I^AnLdx{Q7*+#gQcqXI6G|wK6X#V?a(J^7>ozL z!LU*y#$>?2cuwPu;2d4pY9mfyog8=u(PIg?Co@#Y71O{@y~jCU55_ySEXVlDXjb!U z_R?PjBoogi)kHt%E!8=+tbm2kelIq<4Fs%u;@5lCIJcf3fEqDHblcA7V1o4KJB(fV zEi`4({W6*$(Nzqrg#Ul~VnvB%Qj%#%&fN*7M6nI#%SO2_Fjsc26K9^9zr)n6z0?f; zF7Jj7MRgT{Z0s2jlV}x+2+I@^R)mSLEnTIrWL04zb6*z_xl*OC38#OG>7$5t+o>U< z&3*h&6YZA0AX*|SC((!uimHcKy~i6}hlJ^NhHNebb$l^<`4%V*Q%$#(AXf+-AD<<3 zyP5A`O4Xy_2)cFJ2)d>4T?@LE8xt>WO*n{BM|lf7&$yBP1`4(=Q9o8-PG z42Fc$GD_i&a|l3>{ld;T-#Hq9C8Oc=P)B^UV4U6KV$^Tx0<L!!-Q!Jwo~h;{`Ku zWpv_s!XS^7%Vqvzm6-9D)0rL}loIYPK*6=CAwK!%*gwrDV^)Dr7uGVcfoJmoV*k-@QQBxIKge$ zR8b0WPOUWdkvh4|ugAsEqogi`N<*b=P$?UE@inOWCo)GAelq)q@N>bE2>b|nepmUu zI2-tZWC(uPDEgrgao^*<<}5)@Io=sx!zUv3!>}m|dHSTkG4)?de1%yWco$?r9~PDy zN6sW)Cw}}zOoe!RF8Df~cx)k9M*G}YeBHWVH6|p)?o9(#n1@FE80H>B^P4}Z{!_`q zawQw+KSf5o#R+llZWM~eASWUk25J7RUsqz|1^=MmaFJ08Ttna!NncXUV&F`sYmfG- z%1BRoF8Kk0zgUNPN0Kb>!zv~HZ8Wo-Zy2o|;vanR<`OKpl(I1o%-tfpCTspK&2qjk ziYdbOfPk&&0l;&!g6EdD;SoBJA+4zJC1$UHkt4yCQUiih3HS69$lp&x{|jmzGhznzhIzJVtJa zXx7zai?Qlk)(1ygwxnC2=BYs^LPJ2Y5tIVa7y!SLByHrUFn9=Q+8Uf;jS~1_u_S1R zMYXUzMkN{lJ?BWXJ*h*g9V>8_08o3rbh7KnK$@pjC zE8In@IXyG>=c9o?hmgOUyvyFr06gZ&lxF!V)mfqzHjVH6{@jxqSTFg0-LQ=7S^r|B= z(Ck`4N;|%ieu`p))Npu@0)sMw2&5v3XvUMcB-uP%ja?8)&U(oppM44kkf^p;=^tyC z8&<@iLsg~arMUV+h(;cprgxu6U^!7!+rT@F=$*Bgtvw%+YTRI9%b8^U?qm@{$gc+C zBYu_1wng&JxCOy9fuOtr07O!uRbxOlnZW);Q-ld9QF4r z2}$C>MsvLxsw%Yqf7E>oe3Zr2eim2= znz)OA1_eztXsDn`ftm>DE^c5~cOhPh0-Ab3Y}G_aFbW}o1z}xQQ?*LH($;&m;#aCD zwj_`czzgA`fQSSTd6z{JMCB&Q|9Q^5d(8%epI_~tAKAIQb3Jp;nKNh3%$SEm#R0Vv zJhBd-i=M(S%Ww(@+^L0~3MCJ3&(e9+YZ&i`Q}Pxr3iXc!pXRo9P(D>7LOHbxdAYXB zzXEr*{m{b7WqzkvrzuVib(cpK9%er)ia_ z7Yx-#2Ip-l9UF8g2W412RUBOMfK|6updU%-mIb6=qYq|F4MI`hly1Z~QB6w+`9 z0!m7?d(}I{-ltS@S|Q?avS)wGMihgq2~--Tp?XvRSrxDZt7^MZ{v^mTJXjHPpxC{F zno@gCeHo_OOWFNwlX--|-vSTdk4+SK0DLj1gXt5&4-28>=7;Wsh4!!(I3@37t@6K& zjah|^r&TVPB?tW9kT8Adng0?%%0UBkD0i0g zd}8`$oKgJDm9wi@^Iu6Nln;k@M8ER{Lvi#q+FzP!Hco*PWDbGEsiTE|Rpfa^r|-7( zO0_wAGq4uQ8O7+atHu67xD*$t%jt?JeF*VX$_QhCqK1rs+jsehCpVauULe1A`OW61 zRQ=QYy0-KPb&n(?zAZ_c;wHNfKiXxOveo0mDFuO4rXV|KCpPKX@)_BHfJ2VzLBqFFv!1RX3+x}4o&te- zAZZ4W?7fmqzEZL(yBF>rCBOy>K*qrV$kMvyZVL6g?^2zp zaiOGq0NVpWNI#H5b_V3yhPaz1EcD}ZiQbkU2mq?WFINagRVSUr`t=uAeou38ll ze(|kBij)%<#k4`eG_1|v3Q7v~4KLJ=!9_aD&I$GJ=0x6qj>5$}A=Ii1 z7rTc&#C$*2g%JX%m@e!;BVHF4DTH%3Lrr}aS*5!fYU;m{y@7(UQnAi3qNHo2c*X2^Z+VO!JK*i$HL5>QT0r+U0X34xa(ncuXj z0@$Dc3#qjQ7Ogy0Z%?N z1Uf@M(u=(oPH;pw*L{U!<#PGT!#HcIG zPVcFlpRu->d>J`>fe4m_^jze0awlOMwr8hZ43#}DMk>ZIv-TnfO?Q9;DjnfaAe@>e zI}?LOJXiX9Sa_L!zm=|jo9)#*I`U|>Gi{mE0I8EpKS1mpl#DYsG}XKBRf>0FjvX9G zUcCen0?(#mM4vdDz{08?%2vm*2aX7d5LYj#AlCzLqXdvr*{iLP#eF_el zp|(uZ+iHU3qn{M^?!xG}aSBY%Nl>W!VEPE0hyrkV*K6^Gm8=dbni8BTY&Mh_D=zz0 z@p{g9*_;^iLQ`ly#rv}&OVs7YUL*O!EmPHsG z&jM*44*?E}3^tb2CnkB+M+~!A@t}k{TZ#D@eaiLS@VwQ1wAYlU;j4$Q>y$shw^aCp ze3)rZ!t?LC?{>wKB5G`iqq(WsFJ(L?rvc?=fdK2Drf2ionzNusxWB8 zPHiQyb1?ru?^7yI?N65?pwx8hBb4hgJ19deu@PnEzM{ zbeT!+6-(XCz3%%nDow&)A~#paKW42fxt=_qmT5}2ra8)YLyH+emDM8OP49{0p$6Zi zr8t1p>pnlOd!O4QF@W>RDi>GAr7N8i5NB@yuM&uN$yLu_; zve$i2#*PW5_aLT}YI^}LAQ!{{b-yM#Rur7S(%}pR8FOJT{oMx?az(a>$c3erZXXDm z!x_qTfo!|4lSx0i8F(ppbo1~-N>!oq>sn2AiX2&$04{lo(>EGSdClZRe|Inf*fw#- zvt+Gv=BzFo2cY#hDR@F!i19+8F8MV8Hh)$aVARQg!{K@wA;?!y4H4Ilyg@iE1DuZZ zy6@#!I0^3NE4`prgBvokR$+b^$*BqK#)uiBMCTV(EOkcBN;u2eN-%S^GOfh)@y&~^ zrjK_{<@6DpT)}dgZgs14kqDfv&15Fb(LA$U(u3KRsIo}rXpA8awv%uo8)J8`ko9NI z>gf;Q3dlq!uF^!alY}ec=8)`P6@Tsko0j8x*Ct|`>YeDwIZ`r&y})dwZsFu%dhD@U zJv&-p|66<(+okFj{WP0|^)E$#=+EZ0ZbeAt5!JLGr)l7t3s*ge{jyMVX!QIKV6u?; z<%ssX9#Qj41aU9?x((vKI8x&gr0nqe@fD^2*r(`Q(e3MM>cIL@O(FUU1moOMbr#gMTjy>Wj=ua=4<<8k9Sg?it;&3K{1^D!`y%MWoOKhmWD07TQZ7!(B$ zXpi-kE67TqU(@RVk&{ZG>+eb&1jSi&c_GN>)Hb`*`%ofQluqxXW;$3*OoVoEAQizJ zHJEXM$Eo|a!Wc$@9r7(ZLHdA3jfVU=pOy_~;~=c+nY}p2WcRYA zmE;7kLH6p3KcgTn4y)q$IhDXNKP|z{8PF^~FGC=tuFl;;#9>8vFEr=7mKI!Ga&Z`* z|Femx zNR_R1hNeQvFWk8p4nZ%F+A5J12R?W{VAeVO9@=D&M2onn5`h&Q4I)C7)EuO(5Mq?S z7l9bxbPXa##=ba+5oRxmK~X72WB_~FH<`i$=QTg?@`@1=v_g6MDoSPQ-*TMC@4!OT z`o&7@h`GN~NF2&sUC<}>R)5uz)CFB46wX;&xIWaT(!Kx!d@9KhgGF(#@kl%xK7 zT`}IVy#fQv0zsuHuqj|tO9gfBrM+bpxcoE=xH-;zEXfAeIlb;oILzMy^|pIS9zrl+ z6=5gvF_EaR@?#E${KMtP`Jp9;Di-@>6Dl20Q*RwjH8u3GMY6v3Ir~ zw-U7!?{Rt`V|7mN)2y6_kx#p#u9Lbg80((m6no3Zff`)6=gRrKY!_77xN7gClEwf| zg>wz1cjNfV!F9XibN2}4V4*B2q8L2KX9{du_vTa240Q{Cyveo2_W{*=u7CrxY3u=2 z!v=z~f7zubvw<58W|P@!rY9AiRC+Su$)pFm27E68tZft@$8qdfth*+E`4YJ^?>x^Q z3|KHu&`diu*nU6lA%l&S_PNl$6t>UI_Tk5lOR^4knw*B$H#gmI~N5YTEU_b*^QT&(d%9VN#ml;FyaKIco` z3KYovY0Q5C^7kY*=oQYWVLO)VC7u&3k;Mften#ZM_;rSZ`BAo_e8!?|Tu~mN0V6Oe zn;flyHRxQQ?74|yoNs+J@}6Waf!1mRo%${1>m`kG`IqW`;-~fUEF?`7`UjcGynk9K zMZYEUn{U|Q#|8uKah!D(^f$`v)9Lw?>ys^4O1UL>E86v50rVSgr`5)}fJ7Plk&`?f zj;xMO(mp7sv7B4y3_CSHtYdoij?|0jC2B*OjOvB~?k{FFx zNVbjvY?;5Q412~&b=+}x<*Y9DOJ#vcBrEh;WJuh7WY2jZvAB!+c0Fq7g50EkydPWE zL-KliS92R{w@L$3_)+NTh)_=-ninnpx@2x}^3`7&YR1OoH!S|zo zfYAeRN-jPwn&4=|P-r(ht#ITVDh>orLTObfEtPl5558Iza}A5R1jVE*PR6%bFzE=_ zMoF2)c++%n28sx---y2~5yE)jSBp=HQ(|1e;$ zQT8B@$`A6Wi9sG!O0-`f#i#`X*?fULXI%Qkl7Euh$00WGc1O;pvhLvRD@J*H2!AI^ z><+le>L4&i6Q|5yLttm@f4j{|QkW44w)h?nVxJN?C4I2+0{$#h__Ka`2B;f6ZRlE3 z_iiNKeK!GIfz~t6c7#gK=4wq)3p`;N7t(2wxyTdNA{~;i3n#}qk}O1$gWAHCF!?g1 zBmVcPW`>hce$rx2l34Nv^I(J`@&vwG3=WyFJc^B~`G0|$|08+0n$nY>xl0=LEF9nn z)BtU@{xOyCaV8v%ggKSobWcin% z{E=wBC0zbsRsOz%DBq#VpQOrvtY>8NmB1LB-Sp1H48s-_y{mHwGM~W<$UMfP_br#E zpRJ0nh$>oPA_Ql%EE%<#+giyJ{tH_P5NdoMBPK@Qf8{>Zu{aU<<37~2-q( z)2s=277w@haZe|c6=lfwYqmDffO*N6Ja05iSFE!ExLI_6eT9@-7oZx_(w+w7CM#^LH>jq@>*f8N}&2D z1}M=ol6whfxQ-=VE0(CUdZz|GX%$PPCOYH5_r6iHGuYnz9GM! zh4akDNlZOTrG7FxwR;JdBnhy?^cwp=M60tt1H=iJS6PV!PHzE{*i-G^Qm~97Y{php zNc7yf;ykuMoToWM}jR;fh7?&UyDxe8ejLPrY`6%J@mv|uXq zB^UmKTQjVmPm5gMcs@p)Ho)A78J zUV+@W+yke)@XNbBCc+K$fU%Xu(Ne2!h4iXquxcqAYch8*g^W#yL-1Dm1lU|b_Ewwo z@I(AoHX9-RsXa$&5KB(wQNae(%41QR;07M!9X%5R^ITX04WLLhk;7z~6%c$dE}J8m zwp^TOGX-2Q)WI}s0_9<>u@jgc3S9z#=j$xu>id-XiAFAB#WF4gpm}0t?L__zNk0u+ zd+wHwrrFP;ZQPkT1Q+M)@p`5gKA`@eOG^{9r0Wj=o7A30Rxyl`RQ=kwKLA5SEpo*+ zwfdFu3EEZY$td$mGcftfctPjD@uC_zh0Q=ZX%5n5N?3J+hlZqEU^i@L50m=}%!QD! zzkQTf!Svk)$C0zq%GNn zo$W{B9&HezbbNc!oyE7XmRy$0yhamw^KAL8e*F!&>cR=_9;yT=Sy{NRvWN7(F zR>XhwGY(7_y2(wrX4>gfCsBCaH7`7DR*j+U$K%V6fIOqoOl69bc=zkA6DwxM*AwrA zuoYVr`sG_cb)ISVAJ8E5>-MstV81pV4n*e)hyv~-9ZT|2rRMnRF!gvLg-sM9`HZVC zgdNF?u;`^7Nh zPaZ#Vyx#mU0KM6GuIkM>syFYy7}1+8t6KLaSUTXRJ$;0%xz8XpS@xK0xP);x)MK%I z1OXShg`?anPV`XY>(%P(HF3UbryUMb_g!1!HRljls8=1+UtI@Jm#saq(ZUs}cIcE~ zl|++BOdb|>IvYvy2%o1vRh-{UMFpl$W&)LC0%azM^{}I4CJ-8|O_9m(NAE&1F2;N9 z3phMR&_zqWk@ACZF!$bU>M%0xKK`IN7PiyQ2`!IGuzZ}2`e;KAWc2zHmmS0Gy#^Z; zSHe=_8psBHCcTcyFK2Vf*)Yz*Lp?w?+Ai>U!^N)>+$_{xlMSI~B``AmexeZcXJ>v( z(D7=~Ziv#75UdorC_MYI@>K27Pg+fZqWbdZw3eDe-534dl>0FE1Il*+bm&{Enw`-% z^p|roiii15&$s@@4%CPRX&k|7!lG4VUl zwXF{1#p!^OzuqU|wxF`ZvYfe90YZ!AU&Hf$6;OZPC#(2-sci9^+1gu^;6d_8B~|FB?MB3>>QJg2&0; z)XVCj%DTI&l;s{aC6s$>A#y`OIcx(wLVrgONdCt&z-J5f{J&QD|9W1~`fy5(w53qm zk`XHH4z?u;rQHON_7+Og?&^o`06$ZN^QX$ME-Q;)Srvno7;oA08@B&wA7pqpbI<}) zW^!kAFwy>A!Gm_g?HxOHkjL|u7>o&j?wxrCw%+p1_9b0^^`QO1gUPVD%TKZY+mOgi zNRQX`>`PTH1I`bXX4F|S6aLb%!-P7^AcGKmo}D(%a(6F01?m!CW1sIaEs(Lk3*k9I z8+G%}mRSII?h%6fLd9)8i9AaM>vcSQ1Wz_RDfHOk$)G16o@~g*oL$MDea5f;2bxU7 z%$@2!;p0JJoF8VR2WgahJQ#F1K^Sys1p}}O8v4eAL9g$EFu+l%1nr8O6b!6~0fWjD z1OgaM2ngHX8cO`GXa^Lo*8qk6XU0O|-7qHD6YcMI3_-zew!a(31e|+#H;f5bU%sm_ zp(CJRkHQ4-`nI6Z{o5cEx)2Js@d^q<4iOWEP>ux}VN>D9F@b5pqkGM4v)UYH#u+UhDH+NT~M1DPBu=~0AX9_Sn9fd}K$C`E1P0RB;^ z7nP{!fBZd{fdj!7_cx);|N6boKNi6w{9_68V{*shtfpwWw)Z2b6T5`fi86n2e+1AA z&0k)#J*RsKcr~67&$%YC1gb!uUAYD_js>5tOu;2Lp7k>SYEvifXrUgRbp)rapb@&r zkEoE^P0SWpEe9S6PyOPP`Y(-JKUBfMBbjF`XvdXiJ~h5xJLxzTYRS>H{aMKuFx8LK zKNu47iS#Q`M-h63e&U2cc;>Fh^h^GCzuafni@XLxoda;7<|*fj6w~9_zeCqoVQz}k zd2Pmrkv;cMikNl6Kv46~UpSyq`XQHhLMq1(PotS;^Smfc!m*44P9{$zCVG3`2`6TA z?KdZ~x#q-pk!(ULl={1=LV@)J&hLq+fnMbSZSt3E|NJC4%WAKEpm$5g-#-N1a$?3T zaOLz*H_g5dL5C+j-S1T0mGQk3eFMc&?TD0S_KokZPXvCjTR4^k%Cf6HIbF+>eEG-h z%!L)>-B5jjbp}G6a3F13#h}_$8#GGI&XJNWgtyr%YBHwp0R&JEMDvCu8Mi%JFpN8v)UonK3*Rh z=H;vOVfJr^%8nzPtw#6&f-=H;sLGS^9Ue_z!SNlck1vjh0%Ewuob(J!X6<1mrYm-# z-4L#HRIt*(%d9bj@5f=(-jPvzD?DmppVU7B^+&89g7sVU`oX@!^?OT!iS=5|A0n3u z+9&Hm9bdgt?|9&^Y(u8B;GfchH^cP?eNulh>c`Xt5D~w#gY{3+>mP0RqVM2g*lRc? zIJ_x27&5R}M@snFva^QZ?gc1HV4YV5D=ithCd?Pw6Qh+{IvdnzS+1QQYAwz$1e@!> zSI2a_wAjrS1OH1E9R}MQ>!Rg}c29rYl+!;w*zU7Pl-;G#d|nyc4d2~0iOaRWuLYP0 z6|>Z_QJ}Imw#>*d;bVGGUti=AMp(+>hjoSc+gn6N9@OVMOk@UB{-3PYchUO)W=lx_ zPj<{r01;cE|Mz2A0R8{P*_acl(*-NHfKa~c8(;r_X?*>^D^mZD@za*nhcIK|iXcgx zr-M3Q@Y6K=GK2{W|8HWU9S^>#gl|u@t-eCvIS518$?62c%05Woyhh->DiW?i|8dK| z?{QtT5H5f3niDHu@SE@NMac({_PjulOz!VpnOI^4PsECDY6{l25i@8Lr|Yo=GJnFz zk<+I4Mo=P8k9vp0b43c)NBDj``C&+{4s?+pTD`xg@auX}!0jy{eqrsxA1uF%*qDjL z227lJ7BFo)E|JKDeGe3$_yly+bqr`2^q>_FWYc#X@Dv&&02mf8z-lxOm#Vf_qTj}c?j$-HCpKNOXp_CJS|{m*US?6Ch4H8=KuD#+`6%B?8POEAq|ODx8Q1{L6F zBkIUw9YBnFRueQJyb2$z0yjL$1Hj*#3RDDmfr{ZoHz3hfV70~}ACn=%{$@9jjy!g( z)FQ{8WD`ukSw4uuK4Vwp&^jSG`Lkr<)&^+>R7Lq1;|=&x62?LuE#vJSyVzz$PCCt@ z0ihNnxzJ8(WE0z_C?SJj4f#?-$$dm)3|a7u^BDA6j@6FIa1R^2hwHGD6{dT}qy$dK zAw}R0HV8IS2Rl(4^d&~sb5KrBdU(pN1GC_KCf1-`aGS~FJG7P+Bl8S)uRby}YB*4p z%VQ#bLO36gz&+VI8$zpiF3bys2)IO^?6oQdr?K)w0RDq7!_1+Sl!~;}e=6pX2LOUO zm}6U|lkCTD1W8uwSf!(}|Nb_PUI@V`{`m}1GkX6WBaPt}G{K$~TTh*s?`f=%wUe=; z#dnOxwMfLPh}gz#yJuvkd)TWQ#{%l0o3ptf9*O8WtpwoJQ+H^o52m)bhfNKow&P@_ zZ!|i32)jC(jTt<3D{SfKLzi^O?i-hWzIG9sSurjB`~=gi4Ma)BAw%?#0^kUOVnvUw zeV_5NC!w}@sxzl_N(-uuqXGEQz!?K;R_Ak5*ihojMr~dL>h&3o$O-FXtpCPJcA2uI zi#XUPXZn`yj>4a7nGdzVz=&RJ_WIRV=HFt;`p_v093vV#_?EO5Hg(?tE^K32>~MV8F(MI(cmFJ@jG z3et0ECrf&jDivy0GxV>WGOg~W-`M7M>MZ72^<}^>R0>rs=J%D8wgzrvkx1Mvn0TC? z7~kv5PT_H1DzuUI3!LKejzMEa>Ky83DF@|cfc(&PpRu1Dl^(}-QW~V8h4#;#&`mDH z55BK@46yh0IrW)QqJMlXh|zXCQ9EC=tq5HneiyC$=8x%Sy}yD&g{Sj{og6YaO}N4DR8b*$(ZqR%Pk#LQnl z=x?>*n4Vd#n!B{_C@s)h6qosHNOa$o!NiX7ds^P@!^Q?LGxGI0>nclv<{7SJVCjHr zu=dX-dRqg3kDg~0d_QL~QEPnSDFl4XA6sxzaK_OD&}+Fo?g%_kvQYJ+OQ7F+x(lwc zSrx!(!cAJ?R?6^w5|>gjR*mHkx~Eq6o}{@j=eN%|%yOpfCjq4jQG;^652W*fM{}-W zwaxG;F!a+A-ri5zJiVVE;YoUuX2+gGcoAD~L|HHC?x)RWsqqG7|3!2jYnu$h&xg!lVsQ+Kl{sHG>= z&5#R!1bKo@fGnit1S<>tPyF&t5B?Ab{^NjwltcNd=2#ePn&zxzs+=#1aXiZN8D9GA zjO#&gS@*U{y+N9zd`WmT*U{qOg>$msh`lpUGYsmW>3h49O*6f{*Z{``RSk|^Px&p+ zZv`$34-!D1bV>`J9)EisMxfGW*aq+J5#Ig_MtJ&Hj_~weFw)oK0*uwV5d)JdZF7@O z#+W*CR+g`rE9G0}O8Maec~bmonvvmr`Xj;=o}G`Q$J$G~U=RQ$)e-9F@E!eWEi|(8 z8I-%Rbqh&a`(|;gF%xzn)?XA7AXy`w|FtL?R>tqTX!;4RlSk|8d+_)KMN<#o*qWwR zyFgQe<(7dU6VN6s3oRk8o~G8J&{0Zl2Z6tuDjTIp1+9HvdaKGe#Dm{y{Vrg>r`f_7y{i~6Dw zx_$%I%}kUA-unY3)PrBxtD7%#e4S&7qn=$TO5akm(Md*YR2Um#Qso^)+ zooOp^MFJ)^$Rfl~nx&X>P4Dzhm|&f8wD6wdw7^6$0J$X`Iich_Q02IU4%UjJ6G|Ka zL6;KH={rf8mB@7Xw|ABFvEqrw%nmpqeHV_qz^;B0FT6zg{(sPp36o|X47cwQBrbO6x;Sl%Y%E`n58&W7>J$LDuV<^&qgaqVU@Tg1R_ z0sIy3%h9}qVjM}Lung>}K(y)YXVPDVTR98p?}LY@$QHn@xD;m%5IK7$0)Z)Plq?5z ztmB$W48PDAn4egnpIRnePAWu~(~t-H`N+OtrLWCrjLlK#Gk~xUbI_Q0_Kn&@o zfE1ALKMUB7M!$wwdCNdGYwlToBgx=+&CxPdQ~r8C>NyA575`|}oUW=lzwUu#f)R&S zqdAkA8O2v1W4Jk${)fSix!PIC_!%|iF3TMth>-nylgU?$NSxScz@9kP-Mu*p#06VBo_;9%79kJ&j(}87AmA23&HSoR9r87UAQlgFu4E;=xED7O2O&anF&&>XRB5T)sH zB#T7g01Ugdud8IJj{F(0IS*yxewbB+ONbmkWYA}v)Hg^DOAw*`rdk0nOb*YYG=cxv zO^~dw=g(F6vCb_{z&Y%ZV1=8?Zb3U2-9wlSevuB^Swi6mU|M18oB|MA6#wY*ZvZfX zS3M@rQt3s@(0uGv%yuMIPS5d3?z;X3SV-f@`CRsw``Z# zJb1rT-XeGd;)T#6IloXLK~P`vS{15S-)dB-Nrm1~A+aF!CBLRZv=c>{&#F+K3RS95 zkqWt0s8WTdsL(JSfRcM?FHL1{O72?wysA0GYWvb9%70Oeg3>7L;p)*yeQiV=Y zp@k}BP@#Gi`nG}ancJj7yH&`{DZ!WgnF{gXB0?XjP@W1^sSvGQ@$DZfRH;HQsn9|d z`jZOPtI#|ZYEq$c72>gMlrl+$GF51T3gxNLjVe^6LM|1mRH0!iv`~cxs8BsZ#6Ld` z?d?8n`T3IfZ!1gCe!rITXep7Sf#I<#Obl7a@Rce|G+EB@5D72Vapf&WWvD0}VV-AH zPZgzOjgL_sRFsZ7QyJA*&$<_z^^r#u_=AeeRB_ic*-90ar=o0(`lpI2Qc=HV)L&Fo zrHV>r)FUctp^7>MQFvcK#nr30qhBD|L>1MfqWp}yPDPm&9&BXPa21uQqG}m+k&4Pw zQU5>`_ODc2k&0WuWQi)OQbj$?sPEQD&ljqwX^h&TqUu%D?-;d4MK!6Yd_+}hOH`a$ zVN5QQy`rKrRn$O6{ZU2bsi-tY%~VlED$2yDLKRi1qK-k#gMLWGEmU!P5U1HyRK1GY z#Hhh4s!2tyVAMG(%B;|C5u;2hDpN)M1yNYvd@McBQ*o6{rm3hR6;;ltPgGQ;in^Oo z%T&}t6_wAZH&s-5^fmFacD| zVo!(nGv)0C??UB06W(RYdltO!>9LbK!)9__;A%*A>Dr4xVI3U*Qy&Hgt`C2&!7v&9 zY3N{jw3@~zxL=?rg2u@v{C1X4T}+QwaZAm!%(D`ZK%VWrkvgq}4 zHX0rsYo>i1#u^Y2`iS8%<}wd-2D)l5j!*mGWf1d-(1k9fKp;$#=`SEZGnSn_fS)N? z%Jf#&>hGe;1e2j2UlS3Vq+)~Auj{{Vjn-d4qY9mA#Qrg~$CzMqrkYCznBFc;v1DT> z`CRyVO{j#wSIOz{p8?+)xI>TUKGti-;cf34Yl-LrMP^h2JoMj>g-f_WF+RngTIXh|i)kL+cCo;qy(thhzj+tLGVt6H)O{Ja^ft7gh}?;{u@l zB?a`s693vnSWc`hxeAIg=gF|aef!$Pl-%sKB^HV3B@w+CagjuvArWUV;w-Kou|)w@ zCKQ_cwT@OQpn3E8Y$_|1vNRRCpp4*^$k1#{FsvNY_PrPh8If;}Vto|@lgJ?TI}J*| zlgw###@+?e*VolD6#5;t9DPPD&~QA9TE-B2se~>e)iiq=P}Jc*lu~TNZ<1-&M=Zl< zTzV86UQf}UyUvn$hQuY`bfyK!jE&kpe||Eg2G(ntQL_Mv(0%=0EWNf$F###X@B8|# z3eY0qG>i2;Gm_(E3(mCQWQ%&BhZh8G)?UO(avIw@kw83o;_<2*DV@GsaEBp`-)Mid ztGKIrGmE=*g#8-pyU>uK{l)1{u5Vspz}=E+nz3 zM4R`@Bpa+KZQijxY~EW_Y~J7ZmZs;+??fsHpxqf~12GlYKxenv5H-;TEWFF+xh=iO z1{GkjZqW=a19T{`Y&KU`+P$ZFr$9fQm+mR*ue8`P5c3(YIRaQ;*rZ_1Wj6%WIYx^P z>%mXNhjrz0=_{VY)gE1~wY;0kjGiOfYy_YIBaNYT=J2jejMf$M<6k3DP7xA!X=2r` zk40?SL?9sXPrpCo9f~b&+@FE-a0{eq>fS8gq&Vv_MBsjvm8M5-V@@c(vnp{h<0xNm z-0L_Nita6w`ZzoXM*CpRgjx{st;u~Jk~(=Z<_q2^x8CW^E5ZS{;u~GQ8><`#w>aEK zEv7l&LilibHaHG`=793hm4-5Vpp2_CU3iPq2-S3;Gk#p22A3}%s`AaI2j4@Etabi- z;82+%>va7J4r%KS&{hS`Cz@vSab{dQd6}bnPiGr$QFj?Wb1Xqmgv;Xs2-D1Fq%G;R z!cvNj(cle5)mC@IWq6X<*{>Sf#_9Kl2+*Fh2KrCraNrS!ng1XO1F>+1394=$WP(OY zG@G);JPwaHK;{05v{Dt#0ke?pP2_+TP#1z@Ow3GeQMhFe>RD|l9@p?W`mJ_&KD75c zY_C3yTT{0?ef>{%;+)*fUh*CJc$;$t`sDQNaP|ApQT@YZjpp@J`U^6% zqj}DpwYZSYVH&;Kg~#^}Zg!wajB>a_l>_~H*FulUxjG(P?7kxD4$OtVDCx}Pfi(8# z45^lFMO0*8z#`XKrAU`)^jhf-NE-ctsuKNKDf%7lX+jd6g8o!j&Y?%x@kJMu{)TH7 z^a{mS0sfng*QwY}Vv9}c*QUU-&gp5OoyzZNWXG!q_4_Nw%BR&@cZoluolMtfe4#}4 zgOYvN5858q{j}Vy&uw$ly915bKD=HzZKt!JrO4T@E^H>{OslgSj)GWR z_>Ys13NKt~E1d>BtGd$V*$m?;>A!zGL?NE)>|Vx0myk_9G)8@^?w3Ux(t00NfkHzMl zXyz0&)aEViVZ%(7jhGZ~UT>rx=f&g$Btzm1Ccf5d?@#)xD7_zrpDpC5+FSal}zM-e)`j+ym%~LwfnzhYZU6)9LvKfwMeOA4!i>I;z zjrGi*guo+;YDyYe)4mlsB#??q1tw%i2=C9Ob2-nd^HYUA}u3@F68@ z)&^^JP2%Og9z)rHE}r?7EU@x%DR2SF98_=dJym>r>hH5YKof1=+tSCOWxd(qyR2Co z(Wa!~zNAZh9;WfkrA9Gpb9FTvdY9n?)#@&2-2!~@%zuHu@*>Cz%l!t7Y984NPik{O zSo*a#Fx71Ga_V|G<=Z*s+X(6cMvH&}>f_Kbyb{Ssjg0qiK_s#O=;PAUD_LHqbwU9-aq!RHE$=WSnTOVGZI^JP)KW&N9N6 zeo^kgTLHFPuoaAE4b3&|$Q^i1s?BqCDk5M3V>7I`4jh~AxsmNgUoZEKGbSJ=!*gRs zC7{{ghN{Nd49gMM-*aPs0!={Vy*$-sSYaJFIny&Kvl47Me}u2orMUwyA7t|kAB4hS zrADA$n`=0P*lfgROKdu0^Hl6m#13t_9H$Z0RR|97FDIb87;thN+{7EdF{xTyhD`+I zLdLq6SMe5vD)HALweCN-%~9Qg)VnQC1D=6>Uq;B`uB(Dk14o>_waZXr?c(&TU`7t2 zi%0fV8N5xBH4`~(=(|mj0{6qY4_Qp}j>^cZl+3}*nBr}~19uC)6A6NM;)dQ=KwsGE z;5!VJ-o+IN+PoEl>|XmcuV}Ds-UY-_Zzbu&=6z*>I6_-C?|fo6QEQsbTdAn-+VtDJ z^XDTPv4a46r_J{S(akn6FVzYfMB|5IWbt)k)&WqV&DZ-Z-=KlMw;Huk_!~p@neJfbZD<(%|6D<{I7s!Wv|ap{U+aW6SzV z`VYX?qj6R}2K`qtT~KmwtKo2N)*5uuOs={OkPXEoA_n8ugRxyOjw$GTs$o;sGO|`f zy)A1w##4p4*v|;Yb+H-z)~pXWTmVvko8dES5UzSWO4j2rPCw*k?Ti}QP*mh-ZdRjd z_=ZS=HmY!<;TzQ4KZrOfHiKr(s$*|LLx$1R2tpMfJ(Rs=7&C&y*dy*Ra{kIBO#9Q< z-|1DLcDR4&YMNJp^|If~jV#RncZ(1*e-`KeS?!$XfA>WD=J|8v4KAghm_dm=`g}5a zSjrpNi8my9(hKgu$71^^d?EQCa-i8X`wf0XB4P~rM1{C0A-G1R>pk7(9f=u#4CwP_ zEL86>+q{KXsFtUAKJ||2?b&Gcb_48fR_|4v;9B4&=6W4?5);c+;ymVs#iU+%G8c1> zfv5js&MWYwE|%#M2neL&3U?^w^L)^Q1#UJ)$O4fn{bx{&_8I>Y$mah2)a`1?n$9Ns zk_S(=pa+S;*YL{baNW8>X+L1sfFq8`dIz#xpgaJV-i&e(h<6j?)643dB~JO ze4xf7+q2q=J4g^!%7p~+6&=pAdbV=%uRxHg26266m-!FsmXl2LtTYmEA3b}Di*tXb z&4Y;yxM%ZNfX~1^c!1QvJ$QiGQkezljg5cA^zh`Rkhy#EdaGv;@4{-AsI>TOR7iEv zY45gA-N8kag%26oHTR?KB6BXIEj+Se_jd~^T_f}#ivH)Y9r5&&T%4o2Y%B<;rJHAg zLZFS&?jXA$0-&veLTYdN`TWp}W~^nlp%bAd?pn00nm6^>_xSo(cfn@)<*sK_SkO*5vRF0%WFS z+j9=Uo`V|XwOYq&)ntg`Qa&xSFbv>9ERxk3J{9{Z)HQDg;h(eCH1i!+UuUr+jLKoA z=EDU{Xkelp%0#o7vGAnOqorXKbZz{;w?o=^y?o$2&+bUwFztuh#&a}uhUbvdwHVOQ zZB#h|PxJA1r3a1jtPEPI+A(N(IG=#ro{!zzO}r7Q-^T(ZN^&9ln1iO7-%D%7co{1V zv5BPOBUO3;=s}5BOeG#fdF}TAtKRDD$W{ZJ*p5^jMl#J@zyi@`ATPSV!rrgm4oKV6 zniylT`+9efHZw$x5=~IAhSncVK5V}423*~ap3%|`Pp&|n(PW48Y)@N*mxb`SR5^y} zXz|%>63RYAUH6!!p|L`N1WvZyKw#8I0RymD`L2NeytiR2l7=7Trn>Uef6`m8ogz_9 zDv<$!%DCuU_pqujb}8;3)k;aJ@Rz1sz~70q(F7{;$D1i2hAmhk?=;3m6u6ZF9=yGX zTPfhN6Cku-oIX;(GM;#h!)vr`_Vj?gWfi(Fw1&;hFjnzmEq#3EFN(k_=EZUX^q*?? zfjer$*(NTlfF~1|iz-}ucu`cBX`i>n7ui>T{}^(WeVWMt#8}`5u29``lz8U;0_=86 zM|-a=PA|0Mjzm6qb8w3@ZKJ*A1AE$M_O2UUY0KcgWy&7+hO42H~3#ydxFYrI}4LpGI$-9XmU_k4kj7*Wvd6DL7NN z$#Jkjooo>QcDte4?p}vw)mE43%{>moC(tP|iHZh$aCyGMmv1C`yTefH==P}#zwS?A z9tMl>RW8pShkFMUzX7{@=MN6UCRexps4l@}di}c&j_Q3KTn0^#a=07K(lqz&02%JU zE56iTw;b#t!Jf6sg**8S&34lZn-lHTI}>dW-P7XC3gD7%N6VTL4dptztzx;3x;o;k zKMO@TJzbn0bRDNlBH*)_-y_2D`R6}aZH#;vy(7bYmy)T}15_ZbNX3scXWe~Q zaS|$Z66wG+F&dBSg5tG6JOnC{j$cw3;39^BR0bC4feh_&a${gyNCxY8i^#^$+z;9K z;`>E6*7RG6x}Q<$h!Wxhk_%%3%8~))k!qkHhBQcFY@#;AtMD_M+}T2g3BqAI;7mTv zwz;*IKGDx(>9N2;SkdPWw)02fW19UE)1hA#aD(gXBj#xZj`!*#;8pZ9z-v~gD0q2? zb+n2hUMD!1q2;mXNN_H~jX2m7D=P);wEF~{e^ya9GU^jVwF{hkJ_Z0;32a9IN2zZMzAy9+QFKNd?+fYo zIqKI-Rt!7;y)w?BIB7=X2(FprzDKN~%o2WI?t2umE4=ZDpn7*zJg=Y~kjP}a*6FEp zV&~BZxmJ4>psl2IDrd11 z%-ZXbCNPHb51u7BDHM|%^kG}AI2*fZtFZHhVUD`M93rvPB;LrrZ)(#0vHBUIMJn&=h2fvk1noI(m=x+_z4NY3G}B%5dcR} z%2R#;XHbvmGLWwwy)iUjPJAO`zEp4^6-*>kDWZ<0iiOXpSqTS1m;R!i>3#JJvQlqRDL<62Qsuj(m*w~2A}bZaYEJa6oZ6MEe2KNvIQ(R?s$XZ3icqD z!9EWDN_OSP80D!CwvSQniCSimKJ@o___PG*L$J})`h6aC2zZg)Yg#d^%R52(_#Md# zbdicdCY`8s@5?=?LI)Lqf_N%}o&`bALU>|HMCrgZH|{7RP78E>S2Ypy2wX=_y=mqQ zsS_Iqprcu;W?ydz1!J3perQaef#wi@bG{(`H)uAEJ#IdaP_=BiREVTdujJF_2lkG|1Qa8Mfd4Z_nGSb2eh zo)OdyI3oPRg0T*)OEN)C-;VP2@8$B{-RQ{qZc=aTK_i^Tuq$V)$vr`+2>Wwik&3>e zUbhPM+C78Ryv@ZYC`sR?1IEN9COKsTVj@`y5h*0qiAZfR=tQJA9*O9Cm`mtF=ee(i zhzLh<3ld63hG+n)CcXrqzY7ic74iJVLZaoc^h;!V>kB6|y~R8|gp7n^h$KtZVmvmL z{-}~pmNH&JvQ$H*lVyneZ<&-b)Y)8_1JI}h6pIE{N@IIVWA&MSjaJjho`x*he8$Jd zNPDLhqDgi4L^Vk}SP|KVfHy);boyRMUx^7>ZJ`dPRE8sL!pd;wgsx9_!P*W<{GxO- zxQP?|eI>#!Ox!Rh!D<9*7-!D5XZK5JjmC@K_PQKKB1n0vXo(-WBZfj|V z!RvtM48V7Xj}H`Ez)n}2=5$8{uME$lUB-OrB+NX>%wIu3j5IdzyT#?%?Kt>3?KNC! z8(fCH+=W)CEmM9I#saXv2t}-n#+Jbs@|&jjPrgS?`Esm_v$Z`2bN!ND-%vTjz2;UmWA%NKBO1Sl3E zz8+r9%<5&PoXc$JVx_p{^$}g1`m*X`rTsk+kO{oPWIvZ$5o};BVDk4E6^t$ly@H21 z4O3O{J!ZAUVR*4rp|-2o(oNFBdFc(};#DEGYzil108-i&uRGecF)5f`>_g5(QzEkx z0$OK8DyuyxJoI8QB>CDK`&wF7s4M8hipxnbpuu(-G6rxbpzQ@ z`&CQOGLC78xa2qx8fC?(6EO~u;RE^Gt=9;@Ncuha#go621y!Dk>c^;Ah;n-BalQif zYcNIu5onb(Wuq9oS*w*;T!Vf@djMWAsvj57?w!Vw`|+h0?;j6wDDtQJ5P!N%@h9O+ zAXVuk_>;JxR>f`>r6&sWcw7(+@18bck#CxLP>7sjGz1o5FJMTA2qrzJ&{l!`7AXqb zB)AbpVOw5M=odp_OsUm>q9|-G3&n62w5G5Dn~)^LzVsIMTZd;0%wb;T1Ygf~rs37I z_tQCC*i;9A>zR*5J3ZTN-djMNR||34JYVJZ+faeaGEK8-8fSI?0P6gfAiz|VPm(9< z;F+{3Ni84ajW|&0BvR?{R78VHhYOV|!mE%T2hB*!>rrorxft}W$537Ysc1g)MNwXu zAVr!)npc=6iVT7J6%q+U4YY*}LXjVs8^S_AM-M9c2__^!h|@r9$ejpin`2V22<-(v zupTNObf7(o7>LXIm;;toEJ-apn>f*0INu0jD4F>ssY%T%vgT~M3M7MCiDuf)rD~!& zB&qb$KyVg5!ogW+3_n0X&f^HoM?hClBg#%$S)FsXr|pN74AEhcV$6^sDItR|AxGfS z%7{Q#FxrvxO>sKJ-g*ykVRRK!pJ*hp>_Vp}1Pl3&X? z7}1&}pRxL*Y@R<_uJ(7;3qQ%{|HA^Tfo*2;U+(1AZgOA%ugAT10hXKUer<%+{o3%L ze_Q5jEfvGYyn^q=T}^KrZ-bAAU*;Nr{d5^X8&nx--%P>5hPy@R47KjV4_#U7Tv=OO zSzlr!G1)YmrZG-$H>dXoqoX>I;;5^^_@I@ZV%DHy-s9?az~SDI;4&O>bz4p!ehy<5`zN-pV>f5_8=wT=fc35eDri51>R-5d z{_y}Snh0&#n`k1m->$6hU0E$o!z!2Qg?)*R>Rr%*-{0cOI)=A29WAR$v`{ZG&Huu! zKaO_&!w+%kL>BN!zjT7LaX$L0Rtu$epvH{786;uM#+**LS`gQ>%kHkl!fRIpIc6q4 zQGsD+5^#e8ai2+_DDJ%UQn(evD(3Sv(yT*iEcR#xAZdE=o31#oY$`NfTRtk`fYnr( zZ{}}N>VaHSp*?c~e*F_n<>OQFQ<6EsW-9kFpQEn&BsddH&C3zjxDr3v3CVdVV}jMx zynlkJ@e4#1?nG$Pw@DLBlh*fuxAF6s441{v(1jU#=@~9DZRs?@bcyNvL^S3S(<+n} zRq2-LCs^s~_!(j=MLpq4I{~Lmvy(A0sNI;s5=_km$`<1g36$p|rhGg$mFA^a0N7e5 zilypWBGb%Cuzj5XAUBpVV<9sZ3N#A^ngCUE^1$E9x0U#`6MxMF{aSwM*-L#{i`cz{ zY8^j)#!r2k3y=v>JNWZ8&3y@D^72k!b_(ZDM7n9?SHgd3zPo$20EQZi3 zFSD@hUHEDILFyYeTF-ruar;nJ;W6Ypn8Zp^9~#yen`LPHEL|i^FO|hqSY~l`?B>$h zG7(eJ#Fs)DUw1;GmzdxvjKyz@B9Q4CBhlv%s2bXhL?6V@&^8i1zzipZL=)S{5g&;#%j+|DEN&#|<(vRIeT}_O788@D zH9GwSAwlp?*y5M+`?bO#I6s1S3P0B=2bfDNZ0UrV+T@!7=`I4be-2y>f%B&bLb#y} zJAj9em>$^;6HG7%;}C3r!c88i+@2TE1$*s#j*1{NZ@!&Bcc(HQzoup|cT;m2=ga0? z`4w*8ES$JmIB~OZ;%4E*B%LzL0q~VeLH3Px2TbK%7@BToa2tX*nh9tUPkM=YAO@<`8 zL66?g=yw>B=q5&kjk+w1e}qB1@9hLkxOU%Cab^VQ_-Al=imL(p!D`Q9dhmKG;e#U2 z?-C_Yh0LZ0-#8hmtGZF{h0Y3Do!yn#Bm(d+Ejqe9pSV0eImWe-BRm%%N2~d~ z4TcKgH+lw-7KQ64pCE*n#?R0;gzwQav>U?X<7a3a!b!|38$U!Q6HU{wE%D2*%E1gi z#NTeTtndh_e;q=fFr=aLh0FaHV7&w;Y?`$Ib1B}Na8z&aR|d;vgf~OUGHCoE5guaV+yt@ z;l^Fojk^Zl&^uS2D+`7xvPWu~`6vc?RL35tjOsq_6s2nUrDqyD^gIrCwHf#wxuh?{ zb|(g){Y?9=_!**DN|4=!*Co-FCdMxV1l)!m;ov=STNzuaaDZT?ow!?Va!cl~t5$y1Zpv~a;8KOooYOeqCE>%OjXQK7-Gq47wJiuHZ2Qe=(sYSNFqQ>Gm z8dt~Z#kO1Lb!GevZTIvDwhIZ%cK6gDKSOL!qp5+NSCeC~r=8?Rhd*HM3(?1^I(?ka z8i1Q;D>u9Zidgr!3W&bf$-3h_vip04aHgcvKRpvYYW$EtoHrXeWj1c)?1sNP%=js1 zy7DnF7YSHEV)!e!_)8T%^?dnvtiMneT!pg0DttCbP<{5e@DX{(lb}}Pk2Mq?B1Nrd zlX|Yw6JQ+{m*QU4zq^XSuOZ7W0IA|;a5}i>VHNIzXaXtz*VEuK>~Emw?PuL@#m~?- zW)|of+Kri`<7bG%%qV%gc_R97Lek*gHgd2IrNG9#t`mXq z==d4hhHs)lw$`0Mx?+J^8m%y2>weyEKcu@L@I{=#w4bx1)7E1vUbka>vboC5}g zrTaoqpK0bmF3>wZK~i*fe~ug8{}s!0w66+nG0o(aKxiKui}o#s^Iy?E;H`1;?HFkA z?B6T5=dH>O^X~YHD_4=Qabf1;kH^e6kdJcIvzE^_yBe$`S@dfeqBjsBh z<;J_}OFZSqbNqxB#@%0;p+2^?zY;q~a87Eq%hHD}j$|P}w#$+fKSP*>#O|^zxmDE= zVj(}a%ko3==ml;k7Yr3_OqkUNO5AKGdz7xQj z1@W`A!kX|7&QIBL5S)|AGNhcM(D75ZRk#`pPM$NT(rS`QhyTVkqpUA@xRKM-hMO=v zn4UgVZqFLJkk8$ObN=`?3#T4^i-q1)&O!%eLee)@xDO+nFZzxP zw^>YuBQPr!-js(QHGPdL!Ui_xl}7B_tCb9QPg>7i$nYSiE4a^9D);RLbW!=k6d91c z9)HxNt4VY-%2B&8;eD6TPK(-G!Aw|%tl0h#XGVYyI#O7}A8IC{lt%?Fi~kbn7;6vR zSKC}@oG^Y=Le2298;i{REl90dhTqKEt<8P=<4aJSd2k_&JP@!z>M}jJ6=yVR%gReq z@pHSS_E`CgtV-AQ*Ho7^uc+PH*if@$d_v!mD5SPe^OrT&Ans&9wcKuvY>q)&U) zCO004PCB$z(k_y;mn6MB+4OypviCS2 zxLJFw*_h3|$<63_pJw!YYqRvcW@qwVW%#sa_+P(Y?&`M9 z;jYKh^UV#g_4yi4tLY$pbn*s|P)*$S*%O*5xq zqm0;+Jr?~xR$hz075J;GEh{WZt+AGs@8{1q{5gQQ+b#6%;!gvAcGn&&6i5-T7Tt(4 zwl*ifPWQX!o-fe-y1CCYbdQzaUVtAlhJpLX1wbsg&l166K_?hcQ+-{tzoy#N{7p@D zZu3#Qw@q*oCu_fJ{HXTp#!qW^HEt99d>NJ2>?lb{eoj1hC-nTIcy3SVGY=jV7k3DV z(zQLC{k6lIm(?1Zk1F)G4sQIY#yX&}zQ)?Oaa(wpKqmicKnH57jUoJJj)RQY4@@3B zX>E@hjoVvuZRawd0sq# z$`kN7J6?MV_8P~XlEO7jEG&*Q1o6NW1st6c!@xlVfYU1s97F&(hzJ4)5daP%0P-Mk z+8VYRor?@MtpYC@U|NUYzObOt>HYGarmqugE+2+ve$C}Zn9k^&W@ibE&1!bu4TG7Q zowu8|DBcr;c@e`M5792g=BOarVDSK?{lx>2o(s=U8O~V1$Ad11DwRW(Ae>4rA>n z%>y2x`%&}YIdp5Ahn3TniED7PE46k&^L44UePOo<@L?Y7*?hMJtSr|8URK6w4NUmE zX2pcRZdOcqSFn8#6*5na~I@I8|se8@x@gr(F zaK8Prd#$nY(%NHGEcm&jpl0Xb5w*xsGU7XwF?hr- zlu?3T2fO-RAO_8{h&kJhcG89Qwro zvva_R73kXCBbv~)0VBRb*X|zCAYDs9qu8}ny6BpPF1l7g7hRL@=$d?=UjDLtN7wkh zW@q0Kbtv)n5&vXQ;p;nMcXwdoh!+`Fpkp}%9bJNsEu*2NXPX{P*$D3HOd~`&{&Y6{yPe;6GtV3xPBN*-Q_9)Kvl%5?GLoOm}ogH4s#4 zth#Kniy}wP)t~~1E{qjnr2(NGm=?>|#Fbt>Oy54~b$Y9$I(q>yAm~C!q3j_uz(6L2 z@W4s!Bg(`<5ukQ(;|I}6Gg>7@shkicY1C{clCfeON~whwOCv`QKaw-6Ill3`r9MM;Cg7Uy7p3=8c( zk6nqT9BW<<_85Q+cmQ(W!P>#iYasP)B$M1pCK;%)4nqhaCHWg$zpsXTWh zbx5&svy>U5*l3G?Qs&qPzIykFmEfxbMtl#xdiRL>?*6}ulv+4o{}pIqSs?_`vO-9n z#|nK_;0q8rlb__5W92w3r%a@_H}P_b=`maE|6xIsiqz=5`gH~~yLi_HJ{40yvvL1W{Gc0q+&;E1kcf=|~hMe37o zV>$?T<5c?Hz!JMkyX!@!zAXt39~@5=eRm-SFx^yyoB9yqkjZ2W0eED`NS)0joMu zU1LGL0c*Q97Retq{sy!B^{KVP8b??l5nNvY;qYQC?8b13J<@{En1blNd40p)zXCf^ zpkL!&8yXeVC5LFd#)_p`n9vz)h@|!@%mr${hb~00396LVTH`1Vz-1yi0F>XI|3BaY z-Po!2kxb`SN!uiuC6}Yr_Dxy~TP2MonJ9trb|!6~;B#ZEq$u@&Coulf+`ARGyMB1P zhwjQ&N!uK{1SW0Y(0yl(P1@$ry~d>N8@lIPC5;`r5D#s)%u230iw0i8Rgcj3{{>ea zXaU&3RWG0m9qYMt!`xMLt6>%^YSnleRV7?garuMr+)c7w_(ON>O`TO++c+Hx+Qyrp zk!_q#-g-9vuRg) z&}}Y%zCyW67tozv{(O~kmo~tqydF4LM*qlc10hL4s1$CXR%hF!`q9d;)10Ct_l1K1rK`V(NMGu-h0m(DAx znpK;zI-5KGe&he;zGCcVncz^<5FHM?#RE8eAs)ct6L{K#L#~cjnQ@Q6FQZL_lu8Za z&yK|HMx-^D=m1#S~iC*rEWh+D0~Uff@F@6~PG zU-bD^5FLKT`-`eZ%l$=@Qdz8if6@KD#Guaj_;2E$W)EFm6!%>FzkAW@Fz&hbzw#3d z=i-`vKd3&oW%{izHj%xx#rFkhD6I0r$8vtm;`@yF8QQkpT{T$M&~Dq^#ql$=ZM%C1 zGn|m^?saYCXrJxw!9l9N6R_R=GJcj;w!1&G#dq8x&t_XrWXR8tpP}s`|8(F94tZ_- z3~dj2F*BUdkl)fqj`j_CCq4HG4Eg?F$HkKPL;f=wT=Qx$zO6+w=47@3X3R$A_B@t_ zFwL01rAI$f9D7?#>x*Jq+b-kkfVEOYtDDB2db6bkCdHlccN0!d7OE4LqcUMh+{!4q z)$vNCk894{+75XP&*BvF)K2+Gp4utDxd=CiRX~u4K9fU>V;<#E$1dd>Gd%0VOIRkH zF08tBLt*aR03a#DXI>$KD{4@|%PgFp;FUAV^oB7@X)X=5o&_5V7O`EetA^DGt&w4~ ziZ85hoiY}wK!oYR3}wn(C4qe~76IEg-kixniGN<`uifQaoby5+^(EeUp?mnLtx4l5 z^|7r&Rh-6Jj0bw~?cLtYg)Ms=gCo z9dF0a(u#FBJD%?BezR;F{mc``&v5eBQ#?L z=RHi<;)Kr##h<7DAA9ctA60Sok0*r1pu`Odh+Jy0t0sz?phyA+HyHFRZZrawDEbm_ zF;=V*6Nn0!unA;Yj;t+OP+DngEv+}S%DtL!F-n_9NH!?nRoNjJH z7&ea4j5}%_GMf1SL$zTGfX<#*qG~f6$MEr|h39$YbPBx;gtO~Zzc zO2iP(G2yC0x%vJlr9U)6pt;e}ot{2NNkf~1*F2iI0Hq-uusKG^^UVTbAwOP7zP^bI zMC7fFVS0Yxlt0IDf|T!)xIpWaU-@HILz^l8O5y@7DK9-e97IbrPHg9w&X!_zw&}Qm z)Y-m18|a|Z?NistfE^t&sF-8=PdK~0ua%HNJk|O+Pqlt7^TZ99lg1s<#Q@@r8g>Hz zz?2Xj)poyBow!TCW&?VdShm)sA2;7i%%DUwze+R1Efqg-$$PHP2}<6Ri3_wYc`ma+ znoI>jXJIKXHN9IX=oP&}NQb zmAF9b9RKD=C(7}UTPe|!(h^|W< zv>-Mr^uMV5So~j#umermB4`@)X^rSp6>~>L;0er5ky(PRXYa%tFNwkkUzbDzCERYg zl&^sMal;4)dm&@=irDc!GO;6Zf!3wjYZhp;G*>4s(7H6A#{ws$zq+bZRox(o#0r)6H`$?{XdwWdi6a>{_T6E|XiLnE}$ccce z{2<{Rd7pZ)j_CIuqn;n12O&cyIjV2^9z^_p5}kKgT;5psyXbR?N4o%S#8){kOiFa#FXQq?d-36Lf%u()E-&l?xg>6k z3J3%5uP0bmBDx@+$f~BUG0|7vkIg$hE-&h_f|0zBdKCQl&_(g5zRX}G5_&|Pgfs(_ zs4yf9I+B==pI|Got$f@Om$!93KFYjp%}`${`=6Oa2xq(zE+Yd@ z;tU3LS4OMne-K{730Ji7rHt`VL#2Zl5A%3Mlnr{QPbkHY?As&d4}5bh&$dREMAV2~ zyaHkpJ>38?gI7e2koSlhA@2cK-UBY*bCHLa+MrzYg}j)dDz3cqssmP-ij{XFSVedj zVK_eYBJGvnS7@{o^&wCQDr0#dzo=AQ|4_p#8-Z)AhXbmnlK~VhT@J#q1Ks2y3Hj|) zS3%|TjXWIet==HJed?4S6NUS1AKQf)|58w`F@%9ZVid0!AFksS&hu9**zw1stU)5N zR`Ih~8%Kw_xV)`vm0ad+qgLq~m$!ATvg=g9ZKGCsFD`G}wMsS1wsCYA8<)3LtzreB zQpYI&jibYww6^ncd0gJs`B=fcZRFz}ad}(kV|V6lBOg1(uwgdi=7c@i|6QTLJfEjSEg~RKQh;By<>{by#OGf; z9W?o5z<`1q&npz%&v=D`E93Q;r-Rf7N~2b06Os5BM_v*hz_<_93iVmP1kSicZb1E! zxM?i_Ok21T35pfb&2i>=oLwDf5dSyg20n=GPN7PL+(0Jpk{eLve{kbY8HE5gWB&iB zfsuHXQOr&hH83^RBxvX)Q_Q}V8xZs}+Z&~M3M>UW%$TxcsBY|_}B&hiS%n(vkk+vGE*h_HbddrGC5kpCaWg;yIql z)Z@o<9LH>JQx12bS)-LhQ}kZQn@0dOvZ8XVc#g~BvI6SA7M@3@ z+MGa3)PjMmplx)!I4*0eblY>d&2-xym$g;8J<6oD8Rbbf*i)ehUJmF&chvhQELR=-SqHy8>%4wV<5mvB-D#U6{kGDen@*6hd!C zGW~rcY;OQN=k0Hh2Md;~dHwE@y`cUh>wicBB12`2NIXeY+tv+c#$}BXiP%`Fh0NNv zaV;+{E1+88&VNX>vpUzY0%68>x4~bxnYNe2Wo?zV##e2o?fY?AV`%#W?Zj$>J@E`j zy7iwd*V`QQZ**(h<6nX#SkcmXjjUir01L42qh{CO==h3~Nfk@Dkck+sr|66#C z=*z@WEcdEt!A;@V@ZVQ`Qd9mX!dF5qbD`6UR*5BIJhkR|6e#*kspVVuq3xDh{+{70 z-wy%?l=NSDg_3@oS8PzP=Ji+`)ITIm5!T&p31oQ>S|+=_x5*85*>02@?6MWJ(a`wp z+tjB2n}IB2==r}KeOqk4w$SdnPfglgB{!g5zTALzm*VDxX=iHK|8s#X&kLAz_>tUz z4)~}FqzZKCgqya|;lIA`Vr_B$J3sH(Wzp5C`|A|k`wKksps~fkR)2P8yE-D7(@jm(% zNc{vcB17Bvh60CQI97~E*Pya=`_$JtY4YrIYTmJqTutYXx6)Crd2e}NTXjGlcy3Auf4 zM`n?Cjplt*^Rc-1E4R1F?cGr3Hy%Ed;YA7^8LTW@^A+c6$X%lOSfO{D<^u{LtTc{9 z4&QKOD0F1!?Bs`NHZYl}dR946YoQ~RAkv9%cj60(m5xj|USzwGmTTO)~mBJ_>2g&eWbVJ5F15;}uDoH&xSnU%svgcTG6x1X31*lqD;L2(GNP zTGpB(?|RpP?XIRnSGfADy;kpXs^&dRYE@t*xQL(GK)Z_S8|`)XLPCYeCb>sCoRkq? zG5)*Iu8ouxH;CZttoaI%I6PPL-H8A9Bj1A%h%d;@xD4RW{TaxRsWRxc3;)_b$teFZ z8pF)?h1X{{fRTWCqriLvXrMW7Dne@BL;g6hkRaCkAdcbjok-ajr{=v*^W^^{G%+cu zs)OdeIyZQlrjN=61kJnEm~aq+i-jRDjNXvru@ z$%Il*{%;7(Uj>ql0iQs&i4HB8X5AULAEGc;f=+oKRGv%rqmlcKu^kleQ3q2X_MjPa zvA71_dv1Yr220&OX9+~D*zGGWg^W!o1pnP$XNfCoo!eVn>N>E))pYm@cb`qy>g_vv z^1G;(AxCjAl}&Q6dhdSeNny@wUchKFjDPao3Os4vO~wv+k{26r>rd3vjK}}V*2H%$ ze_$DAHdbd!a8>V8fzT3osi0NOn)d^@ZtFR{D5+ox`I-HApj^ilds!Z9wjzy#lpf#KHgaO^LV zL2Lz;bnQOBVEMeGfmhwUdgnS8OZp5)qg-EgY{a$9fB8rDX_L{4%Xi!B7x0bV)ph%T zBrWe<>VY+W_LenE@FJ}S>C z7VxMYZ=<@#c|}2~b`>#P30V=fe=~)<&QZg>y6wBCu1H#Tw%kJuO?7tE=yv8mK#*7f zW%jcQf%ixDdcTYYT_3wm;cWw+QE1;LHI-}4=t}^MlR1Tsau66@9R2(F&2j4(e~e3) z9m0WGwB-p9t0gLl+me&GEyKFUx8?GW?e)#l>aM4ZA0*Uo(TckTThnaNe6O06uQMq> zLs9;n4-SUv8twI82rS!}^Dy)c?5&2r9+H+e{Yo|TN$(uIlD#vQu8AA-_)B1nLqJ3^ zhW5)D37WIVUVlV2=jM;m^B_!V7^U34TT|V>yVHZ63;u$)Nd?RKyOcln`sw&Z)t5V@ ze)NWoZtur#Z$R@Nz~~O+iDIV2ZI;>SxvJ6IXBLwO=W_h-rHIfA zwP<>pvm}ZLc`J@X1RO?_Vz$~9Ai}wFA4LSCx?4O6Q1R|_a+CbVvYx7DRV+2)g zc!*Qle!1j-fs5Z5edhiUh%xdFHdQQKphk2{1V3X?zaYA{SUxVmK;Oie42bJsdvIvm zKzka(N^`?FmB3VcY4E`Axj!BDRCg_JrF{w&nwIsZmIY(@3+=!MTGLS&g8Q}PjS-b@ zJU{bGLD!_QFKv(@+x2pVbG}?Ea>anc_xd)4wgCB2jnFJWKErt7i`_uLq`GQ`@nBBt zEfD)lO!sks8P%3d07gT=Le=Wbm{x~}AT-{%@#|Ks4zcfz9&aCGyz~cpMj7+5td}Rn z|99i~UzVS2n{Y{)zbrqc-Gt6~YF9a!_mx8fCCH3~_LUdf&%#Yg`^p^VuKZD8uzJ&B zLJuU{DtpNLZBzf^WkjW|4(dUmw67in{d*SkC+Sm|CUL-cH)k!x(_)ZcjboX{tNS1rdfI0ZU zcORZnDqK~s8Ssso}fy@LdM)?0?y!HNOdNg*1EN7OiP-2TkuXP}7Ge2ixU9 zJ9GN&OM7ED^gg7%6zvI)xGX7Wr{PGaCEfK`eBXI{YbPgQr2f# z?cw$*_WHY-&j*mO`ZV8Y@N=%1pMGE0j-O9Vs^45i;vfCTL_q7k=))mN#%a$7fU#s( zS<$d_djfsE>xT$!LqY6ed{((z46MCmL3C!oeHp+^xX&uMV+eQYbMbJu^boiQ;4w+K z-HgWtZq*|#VcrsfIb6X!g)qw!z?`mN22Gf~jRL^*!!SA>4ekFL)(x^x|0q<}oRrcb zc)4gDE?}5)TDxiJDVt zfGpaQl=dmMlnyEFu)wmUJ>D+mPjF1_Vd>mipy$=wFOzonM!}~D`w0d6q|^xP;6<(A z*h(^IBkWo(PjzNe;r4FT^43k72=VJwT;wax zEb^6P56#&V@BpS;AC>IRd-s8BDe%>0g%EYD1MbJ*tQ5N5|C{2=u>SL|k#;J@9+@n3 z01ug6-W{?kvt9$1HGs&mzohIcult6h!CII1aNt39F#*XrNei~PLaU1M{x)gr)%Hbw zZz~&`_jc810Zw5w&x-CEKB|=Wg&=+!D!U0Ee0?bO5d;X&+cx1tEws{=xBUSz$ zIo}3<%-+`B*v<@MWacz-V9&s;J9DKLdXw$b^0rLsXkT>s{X=sag9F$ zR}1X4Zex*AmJ>gF4L#agPE>$gp+QX1<7)j733YN`pkRKT6a=eB1B_5rNtRy z++lt-Xk|1Ni8@9OYtgn0>q{*Lq!uJr^tGc4!oII2eJe;`=){ul(msZ@UWaD*MqqSb z*y9f;R}DfBU0t1P>DPDd^?#CP+TNRiG58kT%c$)Y{u>W>XB;Ms{|<- zNa@abPbrhjLHwT$0|xnm4Q3H<2y0;r97v7EA-tU6!)lgp8~E0MB;#?z99{n+L!~*o z(thEPTY<#z_$uumI-J%`A*e?CrkI6v+t_iaeOSx($JA{NQ*$`{=v@bwiN#~DKa~)~ z98qHuW^E%dCXICD`hESY4GbLLR-KJ1?!_$zq;t1J$=Ci~4IIdeeCFgS?H64*bo6(_ z`&G&3{;IQRKaBX98ksJUfsYG<;ZmrgtE%E0RB^JZV&%3W)Za$WgthcnwcG%gQZ3J{ z;fs4!4Vy@R^qkll{=8Qj@nh65AGc`4t*8O>-)9oF;{DU56@yLqo!NrN1b$VO*-|W8 zUYW}2QD~FMh!aLpHpDg;DoE1sGX=yMHn+EQh!zlY zB$@;U{bjQniSDQBt6@3MLl{2DitBF&w}&Fhly>8>7$6EKw{Hl#dF5FWFn~wi(2Vinrk)+ccWU}mS2t~gxSomr^zC&7kTfJyj>{3pbfWBDF5E#bd2A! zdX01=MF3R8-o;Dfn_X-LX6S(98c(4>pgP+lcV3!g9DWthA+ErNczaf5M{Sm&{eOwE z?>k{Qi&mj*|M>gS_7b+em~AhHnGKwVBcenza);RV!CGhoEbgj&>C<)XG~f7Czvlaq z=DQZwI7gXxug3Tq;WiM0-P`;9UjSE1i810a_7g(q9+dIS^1Y$pl(*he^q<8}?b%mB z9H0mJ1ADfHTmeX^_2n|MYu*{=vM+k4ajRJ)Fu$1^78&cuTzdYRJbCc(7WdRXK30z*3B5!&r9m45{5HzV;}GXL~)D^oSV9WgGM| zBw}Hzk_hZEP5-;OsQ^V!=2|-vcr-5laBqlXu-P=9YK<}bs!u}3yC1N}_kRB8WNwqD z=ihb*u!W(bNz058K4}N%nHt}~tRAA? z00Q!u%EuHu`lS<*yy=mF+wd-nmZ->x9mq~FR4e`-Ai-knAFlM35;6o|ETKx03zksM z+F**SYkgfOTsa=A@V%>X$=MvNfZ1A9zXz)tU}I9yMbz-&9e_F2?Y+a% z-R0}(_U?kg7TV<5pG^GFiC7Vc3E4&+fXmEyQ|k7i1opxpJ=t}etLg#2ZugK@v45PEXqw2F@EfVc#)u49pVT=7yH+l(Rb{T~XE2=(1?NN3X@PbB&A)(kl zRH@mrr)msXnwX-*I5TSF`lWaROaJW)+GeotbZ6h`PKst4LykgPWfi={H2{*t7oJra zQOY60(+EO^4ctk8cFFM&!j?EP!ajSrg+hr|F1T0x=OhC-W=HE+C> z5q>4y%uoA-%`|gke34C2j5ku1&n$(h0Ne`Dyy0+&!TzM%+solL2PHQ&RVp7E0G|)Y zI#-52K41klFS>tVT<(G~=jL|phvvLn*nq2y!AY*Xjg!08 zVP|z=mu_zTruHt+kxt{b1k{>`xzLK;Fr{Hn$1+`K zj-CV1k|vBf1JIIYE${H;&R5wNwm-wIUx!8<>NIX=@Z?Ara>Gf1oy!;tA2+vmn>;A{ z772c8rsMUn%`dl20)86P!~R43*&+NmE`R>B{YUYKd{O+FEBxU?Sm&$l3-3q=gWkHj z0asb#S}~caow^t4rC`uM;~2C{F=+jkXa-?_1b-_<$P#=-%KBXW z+NyhmDTGMEehR`GLk}yeW-6+7-5RE9Ml4k`j3+lLs+N$dSR(E$#7c*=oTBc)4-|E? zF;?fUjHa&AFHgnL*Ud-WW~&qW{!9mb^N@5r`u^mFrXn_8XWeu`Rx25$5agBo{F3b?F zpXP0=?83JhO9;Vu{%@)w8SqfnyI#8$Fm|Fhkw;_?R>&|1vt9K^fccGpp(Kgq-~ZPz zkI1zsZ^KOE+jox5qbL5BkVoua%jO6}DyIlT-uHna^O1BshOBz-xD2T!LnzDHjAN?w6$ zj&C8udfF|NdagNswK*(()DYoiDL0x|{T3-kz@Amz)fCNm=8q;70}mZ@f-n4?+(P$p zi{95Rw9)Jn7%qTTzoXcv(7yp%=qb>ybTZOy6XyZhMQ^JPhc>2o^0gRLuMt!q20)_v z_IjYD+d6EI?hnSO`8WqLE+L*uKi`;Oe5^B<6s-x3vd-LCVr&$my{aZnm}-f203%W+ zQ+Pj*@3DOY4+imnQpMtC1fDgLyj-S& zbmw9@)QuwKXm~&-z+wU{;et{ryG%K!ckt}SG9(E~KyK{LHsERu`-76KVuFztOS8&3 z)K+k&hrMO92rM%e2@FU$G{_JPVMyK#VbFU|d3$1liMYt;pxFMy?MO=Gu4#jkj3Zy} zhW8L;tIRSt=4@2LrMiRcT^f%+Ywl78U$jPkbrtwmB!*u@_)h`;o6dI0v32xMP)AO< zjz2}}i1NRYMbyOpH(Ve{hm2#>MhTqUaMB|;yR4i2)(sEnF3Z3ZH->d(hZ_|W4utIK z?H%^ch45ZXFNA{-?#g+W!MkeSW!pQ~30L?~!Uvi*d?@F`HuIsH4+bmn%@WjPLjjxF zCt=te&^!d`q9E!V2L+3{4x+>b{#0IlE&MjXu?i#o_eydq0-uBhLiO)?YX4WGj>IsI zA6N5gz=hPoY<#oOfq@(w<{3=tu7WVR=!wWGQ_KCYCi0br}k5~$tvdcshaOh&D-6R zelb_6YetNl=WXsEJV}p8`>&f5qmWe<~uDr`N{;b|PJ^5?oT`J09{Z8IG zjmOnn>~H)jTvC&Fn(?4|SM14uH2khOh~2X4V%X=S)!PzJent3g3C_vr)oOocka~{; zHO1lgrSiU1?9ZO+J=DYf&<+LFXgm~)v)YrN5zb#On3NlzuV&-t)R4=*m#I25?*d*h z{;g+&J8It9d`tL?d4u_bDkCb;J6mbOIkWM~lmAAz44>g%p)cl*(SRcMg>&ZNzF{_h zQRjTQyu1Jxx36|FpS%m?$y>uGPyYR3Xv{0ncw-Dy&>C^yFq^*s-6RkEwWrsv;H7ho zT+(Ydt0!Ji?S8quZ1Cb;z>6n8HCz$jN=3XeHi^H=oP)S8^UmhQzGx0tCh;T-l)gFA z2YoNI3!)X&D1a(Y-Woo6@}FBrI-UYLGB4zVRN<{Lj^G#0>5lt`+58218N7IB%f&Y* zTM}Q+l*9$Rc=AUJJo1Ha1sZP*2cQ8!G4uLfrb{jmD&>=RfjoI@_~gm&5eC4#0)RKh z$M7owfN~b`y<8y|Z#6I81@h!=;FBkR`&zb$7%;B@;EnNH0^mrY)Q9ZRiq66imBG=^ z33EwX8P+Rm*GMHAtEX_*6q^ySQVsV!qD5!bA+jAU;|J|WSasI=bCItsgBx5uG~bX^ zFO#2g~kMoB_sfvJwXj0vmqn$n)1pmRzGEt?pAAf)s+RcBtsH68m@u# zqo^7K|H4l);RfOBy_FZwp^QfyG*no~a3B-=H~jbPOk|C+(;htCdel6NiC~ib@g{8G zLi?Er*RCS|vQ5iU%h0+IH27>m-qOfw={vN(e&-}mc8yW_IH{;or7gRNt=@Gxy;0E; zdBo_$E~M$!^DGBtiIhktkPQGLg*QsBw6mn}40D;!Tx|!CZSvYo$1^b_kQ6B#Lr#kz zF;p}<qjIX_tpk9K@V+o)B|7FCgaR4mpkJe>iwzl5|t9@?U9`?24pe8rJ^_ zsrGcGMbubcqf|*`G{=~Y!9U$hK&EurzkyF0#;**H%}D|T6J3t(spdm2AG(_l8Xq#v z2Qd$F@qp3r&okf$`DkEw2>uUmvd86<9R!H^2`d$Fot<(o&^kN2GhKjnc4qRPumEeMZye&0vJ^6oIO;kE*-f3iX zpq}q*n|W{C2FDT57w$T<1ccj%_1NL5MVRbk>p1PJt0#adUBAW!i?iG~M{_9JZ)6aN z_o&OeU;K}faeAVDXVtB66W)3bS$9+|C1`f{JLntBm}asN$2=-+h6~d%C32`)11e%F zNp~bJL{1q`Ejok<7d1WCaFjN^k@0Wpd*eTwj)__tc+LaPq{)MXY;wa&an$D;-7HDAiwB^$YY3fYng{! zmf86W@>k5x3{Cfl*$Izu1(bBm`s{VTL?Qnhrm9>lwQivPtq)Ba$c+&yCCh=9NcvgOyT*IO7%23!9B0ip z<^etCWMf%U+6hSe@ocPqm{K!WC8A?6k+@1`NRv!r=eo&mzPZ4mJ{bJ?(mYUWc7YJ(`w3W~$PD^nJ-S zOT7j?NMlZ|vT=p~`<@UyG3!saDLPP6Y8E$v=wRq_jLOD{gXHE6B}2Z)6dNu3rBo_L5bf0&Qd&lua^^q=XF(b>a3HP z$dm39a^1eGojfw0qwfo8OOukWdu-OVc$>FzA{3rND0rvE2+h|ZkbHhZ(tI`5ynrgZ z;chxop+AkR~fe~$xGge;Fykmt*5Gac_2llWlrJY0pB?7xBwld7=}z5Ou7M7KTtJE-vhA-2E~eA_f5#XC6N0dq8CQFHJ7rl6kp+cxOP1LGjGmuU?&UoHEQb@6<5Ggy7n=DX z_C<;LAofMM`5^X1H6GOJmgjKtI1v`9+`B0V_e6!sGGGBeR~$!!Yq1NM8il~qlmGr- zOiN_0RE@bgtqiHyv_zy{(-M(tO-qEeiX}3Dt+hIV(xPIKuqhzR-}a!g2}6}dBH73a zN)0TN*@F7hzpRVpjG&9t_NM<(f z-M;J6X&9d5*3)i!bx4xSmrVb|jbw5r-V-;K4>l~Gjn&i8ftMsDWgW7g+YY*Rja`@J zJuHb<;82S!gNlB44C{u zdLsq>fGCs`3aSNL$oszC15uIm0M-fruOUkIB|kV`V zT;L2OyS>v?pP0$^dh#!p_F$$yjXfsVRnuom*Fo?V?*`+QS1@ejloLX__-ZBH_m~v- znbUq#y27T4vPz5|7!TTNs)#wT5tTF5-6MNiAFtI;- z#WJy1mN9@5)}LWtW9a~4SssI9nYx>XJ3rSRFp6V4+Bm~+TH2&hdZ7H9h!1xg?B8jz z_V3JpvweM2eGL5dkN#)j-*e*d?Nc=}r-gqx*0UStI%>!&Ut0c|n1w+@XkcL$ID?UF z$QJY`U)P@UM#A*;KSS>6sfvA=YB=%0dO&%4ronGHXQ%18{DocTi6eRh4};TurM=Aa z#z7<`Rod_v>@}3p98CY=vVz*fDJkQc`67jx2cp>1%&q4CWkYcu>=gJFzdPY~;XK`# zM^^6q^1cJ#kMo$P;fAsy#c`+LhTjQephy~J1|4eA3;>NBfs^tjNBx2GF=xP8Ixcuc zy!lcaAcvx#jE8koHsPEF*_;txnU9+Pjf>qM;SNzQk<6z3ZuWneqB!V)Q)}@4eiK@I za`;qQXX^;L+K@5Nn{Ai#W_~$vwy)5;MuvD|8MTW^ELjis73s@?J*iA%{fuaQsd=!n z#JBYH2o#~Uk;OCIsr`j#slz?{%DF~Y%Ke2>_D+l>jPAmaX4qI8pn0k@k}6NqJP+fN zrD3^%`-7Wkmv`n00DLc423@#1D6U>keHGnhns%)S>fvO2T|c?2&W44* z2hxDULckLzs=e!t@@5=#LH!!*2i+Li$aj4gwxSS0o6~GAoFRHh7>7HmGiBuxslUEW5`SY!1@QXPMu3!nw_b*Kn>4-Rjrxm zUC%-(4JTggavY^=Iv$N{UIcyh{Jywl zCVo}tA^E~4Y?+mBrIN(%lGQY{{6@4K9vP62d#%$NihQw8Q6aD7HT?H|y^YIg=B5R3 zfqsREScD&meM`>@aIg~c2&n@xtUAT}1M@3H@0v7`k^_N7cIaAwfp#R%4REE!V-c>}Yi0z*+|Sz;r2KT2JSligf73 zLX5}QY_cs$n-PRgpk{dS3t#`c#GeC3y?$8B`Yo7l!a%@}6nouiT#NSIlnE$M z2@mB0k`p}+$7hBWyFuW0Uv9_6}wtf4f5HSLUDAe)kvJtLJ)zmFG>&ro{Ya0x7fGu z@id(GtL~u@A$jF2SK5pnRfIS6FVHYJ>eSm9aVb}~D^Fg0251;~Q3z}02iz_S?pc7_ zQNdmD>mk^mGJ3XzJWxR%y_^S31$YnR+e-xaNsGG!Zg6A-6F^@2LKx$ha0`sf0ohpj z(-s(ix?M2725^b-1;%dxl<^7rEIw1PRbuA$4abq5o3eTEs3d1?zz|ZKf_)K~PNjzl zH6)0>Rk5><7Z3pv}dlp0@4T@lS{s*R|D@B)hz}SlL9|gtUayU0BKkksmQ7!r!g>0SZ%go z?270Xl!<>7ya&R&g1W(r}lroy&Jqs>?Sl-R<4$_Wq*? zvt%9St1)5?7>AQp;V@&O^er8U^_}f#%sU%YV^|ri2G2zaS+S-n5i4-0&z-k@(y*Zj z@-VEdFwdwOfc}R@RrV;tG?~T)%oi6Vm&(5WC6K109j0-2*8|6I9`(%74+2)xEM$Zz1to zwNJ-kTze=3gF(7|(eP9iK&CDOMJN)3;5!F~ zEhI5tNJL<`({`p(SYxmMqr8BH`Z;Uy#Dknp@Zk=qv_jlt7=yZW`Pw^N=pT?@Hx4Fwx4OL_xDZGW0_-$? zzFG3 zx^2~a46xyZ{$CfP|8pLUQch1-DCHDg7OR?!d1Kk1P?>fe25HFUJG01lTX~W1r=>-C zx29HMp$ooda*W#THQe6a#-{G#chO&(&KBmjPFM5nvk(>340;oDJ1q2%Pl^%xvhZ9Y z%0Dqp$*0H`k`I1>T``+m8|jd^gseh zUGj_tVq6&(pb=L!T+6Sr$s6P)MHTbkr-lC`M=1VdD3`u(xd*5-KinT-O~z*`ciCww zH_Qafh*z$SG`x2aItma4_>ZX)mr4mNO!FlQk)=XY`d8+U={-2NazQoCz9e|*JIMVqVO zjfBOb>eQt17r>zclP4&uVd=)*oz#hC>$vFAz$h%%?tvc{*oFog51J05sllH| zRczjd>vyt#m@N1aNzDWnI8KX@Kp;CDHeelq!BBJ{4M=}+88ps06eeh#NLwXXUVO&akUA^2Tx3|~b z$vei+#Ql{j)n>2zvC4_N6!SgeW7h3PLl~XXUe|;>eSt*96!|Ul98H-p&c5hd_{G@l zo^dFI{xWRXIJiMxI=E1;`3?az3+#&;HP1o3r-uX%;pIl==bl3s*{88qE$9!UKvvHefQYZl!SSY-kB(G)AB@cS0>E+_%P&6YgyZ(YvNN8 zc>b$j?+q=z2$_w$aVO!x)&47)Jxtl3iI{nw)pG()MPGR{vI#MTzI$jv`^z4m+`f}7&kcqM=QS`+=8QJ zo`b!sx}ob#2<0a&!zxS^6T;knyF0j@%6AsGFS#&=+fAo}+b123;WnuE+OI&po+xKr zfIA8MXY8JbkAGS=+nN7 zZS+AkzAQt-mfprD=CFxMN=?zqt4cP_%M>EF;1Bt@AC|k@H)v zmQQs4?9)n19a7;*{c-2BFeRq$SLeTSc{*k+b^tu_0V-t7GJa`+l>N8J(A4VruNe5p zKVLTBUxKe47yqpfm?UWh|5oXn=zQLE3s{6d{acQ&7-D(66q7Xc$3uwYYK;6P%rK1F zAUa22j}?f<7!(HgYFKEZZjLQK3D5tHi{^jANplPM_Nj|h|I6hVjnS7s$`0ZRqjzx) zUt1>${`eF(0C22AtL8^UimP4TgLI$j_c#xJzE?zw#>Xp(jJJtKjo5YAMt9`J0yOeQV z#cc6zQ|pJ;unWs8GT8bwa7*^r!fDa(qwi7kPp*bRulN3-7&}zn|FMq8(*9m1u9l!- z;EP0>8j{_eRDmG#2gHWKwzIO2R(piYR7?2-Pu_R!3oE;aya%+b51Njig&0b>?q9HdSGjxqi|Fygy`gLnsi11xSqAag=s_9 zdbd6zRFt=ALR0X3?^jJ9x9{_ncYD*v?fR_uZr}8ApY@GLPU`ca)4s47lW$T+RfWZV z?AIDsJ^^k0)?3`)ae~!q3E@)Zzv?8?-si=gTGP!droP2YuU~7Q`cKSN>{C9%Go2htkfC9gW2Q)gnIDs|QY0g8#Su=_I03-a#{8^MfoHePm5k`A>RgvwzY&>K zJejiE>hA4RsxoU1cd7a@)&tz$oo?@@HyGSB=UW6}(0nFhwX29P1iemtDh(Ix5zfCf zV#|#|-}MyJsyr8h>SJ+PrXYCFDHvzKTv^Q7`8tRI=lz9q1$!6wAwlJhfi*VD_CH_~ zumVm3xd?Dju2@889r(V=bpw#R$++lo5$4KKG~U_CeRI{qWw<){9!XKGOYwV6az6B! zDCLCE)}dI=D1#k=s(gj)J|+eLOAL&Kv!q^oeLf9!#9L|tJ}omnW@f7EV>V`+*_aF= zl(n0KRvLT}rXY5X<&#On(Wm*f9lT%$<$pkNs9P_7mhiB$&dh=tTeLaafkT>p6;4KM zg_MM_^UV~5pFOaR=jzvJSsP)$#l69YtNO7HlDbIma&i%ZZDY&JUOy0My7G3|XXfC> znt!nVN9zS&bEhnClYLr$B80^vwh)U}P&IH?l2)4h@NO-j_m#;|)F#4!h01B)aDNV@ zqbR$w;Au5O#MhP8gq4>g5y^G;S>yISBit?0J0ar7$|J$kx$8mxx*)44NXepTr_0q0 zBLeA}XW}aiK=e!tJ#=%o7o7oXH?i_T0OY4CXnyRZ7F(hulm(5MydPNdB74Ycy(Dk} zq{3WmKw9ze|i8=Tl69TB<0x>(!>pN&ioan%4`~xkbT;EbP7}3Q>T~LH|{H%2@&kA&QMU^7&d*&yrTz%HLffGqr zl>8~*3-yqsIPx|;VjiSoI8CM`bY3e)-oOUb%buBu2Rf`b%JXvbQ1&c2fWjWU3+Zm? zw*9!ed@iTU>%zc0Lx9*9b+#|Ozg<~@_xj?3hWm$eVKyxDEWpolWHpf!8mfW%MJ)Fl zAryaeH62ME+Hlh;LmO^`8;7ce*#sL1Vj~M<7h^H56r1_Dy1aiakm=bH&e4hxqYLEe zPPn+LMptLJyL`OUXUL8 zxgfMvI?ta`mhcHzR2|$b@DVo&Xl<^lnWB^f(N*5*p!7qe^nGEqSWt81jH*1XHk9m4 zN_wQDTOSh&+=a!eXyKZEuL##A^W%jpI@|3k+w*^j&lavOcx`lv993dnf)df$PFC4| zmmnJ!NVBm(nu|>(Y=~2+ArNGRxN^%?QK%4}Uz}e$8(wuhD(Px{lKTo+f-$&}Xm&j4 zjG6Sobz!oV)kNMdKmm8wZkPA1rodTl{q9gvpT8G*_qm$BOLap8D6K;q?n@cka94X5 zGzYmNIOMIfPa#sSytnMrzC*4e@84Zn@41@(c|}p5eX`S~uyZB97hd0R<*m0*S&htW z${N;e%C_74jBJ##gHTvqJ}25nvP(ZWWAP*815q-*)G@}5I9&@l{iMNYnn?hcH&z_uTzQ(WbzCxnG?d`N&D$3 zNE@3-+!zeIJtB3DWf>YeL!NJkobKfJ<^Y`D!i-lWv;d5&XyQJc$SLdNQI|@5) zq32oN`bYNoVdiWJt!w&}2Gk7U89v6i*41YdVr3;`Kfx4f5iN3-3QDLB3b1FBOzazr zF>)jY&yPlF$xj8P;R#UELTg~VPV8R*tF4{0P`@pCXu}=toHd6-m3!RYMnoV2f`$0V zNkW4~w|#KAn4P1pg4uc6Ncfr3%-L?-1)n(t303Ibu&}F-68$ha9lJyx4+3dE{=EED2uba}T_VrVn?AGV6}o*t(m5h<>zQUE{d3%q`*i8buR2oYs$8_i+pf%S zuYVj!57WCOYk6BA$fHe0AGkxDiRt}+ln#rDFa;A`l9j&y{;aVsa3^DT$kZA`0O#RdYT)uI`W?$Q#g zMXH7D(FXIwf=`Y!u*(A$c1Zhf?q z{fGLq?m1}!XBaf%13xDpq22`>>#TuUC8$6wDJPk@D%jL6tdqx}%-ZpuQYtn8uiT4< z55Ym>f@br$%mB`rzE?G*vryePBE#()jmZs;^xTE18~elp;6b|Q%2l<3eT3Lb-;wm? z<_resu%zv;sYj@Ktf5h}zZ&G-ZOZF^and zGGm|>T_d&jii|iMLa@jI!x=Co95bywc3>HKI3TIMFwv1I`ykmIteij+=GLt+w+fs& zq3|e!ZA}?=jQ)$!HPFgx!N=T#gXL|o9LU8ApafD#nT?W$zK3g(?tn+fGh(z8k%LUj z`#XEVG~tgT3`Q*7_C;=gAc=4C;j=NzrDYu7c0Q}R18XAp37uTug{xIFDZ$#AYIA!(cW1#WJ8XW%*VX5UEBUJ;IB-qdmCDyj1(D11g|5m>W*_mh z-Kf2o>Au^rz6NVR^6Z3m;*27!;FPi{2))NVqB+4g!J5;baj3`wg!L!@QWk=i)f_=g z>(k685eb*xYmikL1wfjus$<(Q%jHN*;&A4uA^|YJLRd|a0tV(>An*bNS7RO#U6i6I z8$0XO)V6LnWdu#kKq`F%&a~tWCb+XeBIC+W5I9?cI7^8=V6roF@rd6>3gMo@+lVWP zDn>b;%OxErG=VLJN#lFqO4gAMB-XWhr<2G=3W|)sd2fw_v$iQF(9CtF%)?09jS*(~ zWf)-&h>R!zVSrQzZ($vW;#Vq|sG)-F+=%C4dV4q?V7`i4F<=?Paj=2UCB%|m*MA|^ zLhw&jLymo6IvY+NH?_(AmXEUO4VSRQEH^1=WvRBYDa+NdP~zGtYNAlv*DT)sN?qb zsegkVQP?n|y=9aY$#=cgc#0{7%%=|Q#FXla0?)@-9)bu%gJ8Bu<)J1&v^Ba@Gi1;v zp}iqPKjKE>&DdvC?e&(wsT5VYE507mB4pyW_r zUk6OciH`P#-n)wn8y+0#_LakqTyAQv%MlXU2Cc&jed0sL)yheHB)YQ z>I^#M1I+ha{1OvR83|s04Sa-&6neq=3)I?8OfUHB6tfr90C`f{l0Q%sh?g=Ij9U!E z$w()!0By+iKc$Y*NKwbJmcJXa`s^!89ajiGbCoX#uqIw`(Gm4TT+93gAvo}1S_2`c zO4$ZlP$!4yH!}WA1ZCJw=97|CXS*;&nd?t+>qlA^K1C1ZA&}a4;@G!_9G?tX4 z)B7b&5z?KvnHoQh46wR#31-tgjQ}Q79H{^Mp$F}or_?>cQ?M1{=F|%fAy}&+6eXhU z_F}n9tRo`erapgCI`ymS7%Ws!5($&HvdFvIZFjGPV7M@sL@TnHj)h3;BkWDk3izTp zX03c-3ZpBpxyt6w3kL6Y)3$Fi&YP|*QR$u#18INW8cKx1TU97aL?#XZC3Usd1dNRq z6={*?X0XuOk#Y@*3jk5 zfkHnH9gw~O`AKqxOG~mUat1Hp^y5R#`wou=U@(p~t1%peu4?F&fsck^d@jmcHR+^r z!NBPPc!pX9gin{8A5h(7oTv`zI>30Ii9sf=3~FcL8jBNUR+S!}0WyNq7FB^)98`J|kj&beey`jaB zay)D|3h*Ew!e}xs!!4#p`LTOWS9Bt&KuZQupZK4?^AZc61f!xTwg@(Xv_X1 z_cyb-3xpXBf3Rtn%koaNRquV#&V2Lp>KF6yyN@|M_zI7ze>Cb3E{WQ4jJ@UjI1?Kh zYJS`+6RfM60Zu!Z)zZaQTlVOy}tB3=C5;w31>;Wr%G2ie? zaJ&*aPB-bc_lM@8=68+$9n~pcVxTqGY{Pr*w`e|S3GM{Xa8x4+1;!4=eDLZAG1~DA zluCX>#(4B2mNw2m9~n6-Q9U+obIJr5Jhqj%U~y?}unz~q+3dwwAaxpp+Hr2FQmD?6 zhGkRHY##A6X0y3~Gt4Xii<@NfPOHXSPkzZH(ixwF zvYPcYIUM*SnN{1&d+U{PDx7ixqIH0{#&&`09CT3c@IM0U3+e5OdL@lAa5Nhx zp5)h3`N_*_bO)7UJOp~=epc&iAo(Ge^W?IaJdysP<{LvJO*W9@qh$iRH+x=J{9`-M*#- z9mu}0%iuz=x9?Dp60Y-gXf}eV9Imm~UDbzTxyU^@xvZe6DHWef91MT^>LK7C{3q>o zUet#7#rQm-d_A@9J|rmn0&f26s#1|F@IOrBr!UW6b`<~{A3+Ww>&qQ%fZPyw9s@hy zc=iF1Sx*aPK@&r^rHSB#YNHZ7`=TLOfWY}amGwO{tF)ivJ79rnOV-29FAvpex&mYQ z78_Tt{Y=FgO9DNm`c&(tyGRet@5>c42wuTXMexTI7B4HhFHr=qmHP5l*r&|?F=@Sm zc4dJq_`x7q!9$~22Q_@NR_lY~qrKopg}EcZ!vAVpB~0=rIwrN1RIc9hjSpJ64Z9`7E*=61A#|>QPemjE>zST7ecLuY(@3zEnsLL-1HQk1M9CJb zHgfUd%qSHTfD?~WF&{QUwg!$r8csUf;yBJ&C_h78j<^mDMoSPFk(ED0ilC_q9s;8qdP|e^VOR*WD3Z< zU^cF9U(I}8vM~Quju7y}))3mzKTN+AYeq8QyL}CQWMV9yDMxx?;V5svecE2!z^P7^ z#t5|49Q$2;HeSQMi~6;bPf~S(SSs2WjxqJ!$vu*9?RB@a5x(B-uLBYFuHRgX3qHkH z{|KOBw@y|dq#->y-hpq`L;yl8b2ZD-`}OM}%OR2l$_cxcrkUDOf)+kN36cd#Rb14O zl8=P?iMfmdVO2ywbr%fGgD1M}w@-_HdiV(?KaHd*<;NwJiTtP%(fWxg#+tDrKYcDw zAU~%_>DJ|E#yxG2pRo49`XT(>oDhYXT36EBG^#yI{b(WL0Q;Rap)>4t!PAqHaM!i6 z8-BY~rqf046s>tmE<}lc_C@2I_8KnY!8Q-oj>}+c(8PliU|fIfzRUHorO& zPGB&(>)ojQmrMHaA;Q86d1)H!JC}onm*L~UYJ6#pg_`KCoKbYw~bZQ zg^Ok@9pv!}QWu@hTu8QtZ}`8zAk=CxezOjv&rjKu=75hmFqf-f_gur;bzA*h^ZV4s z=wFb&a&QlwqpwsX#Fd=xD>hsfGz z?t_>s@vdV$Vf#WXPV)-=>8yjU8cWIXy+Zs@ej_g79wxf%Q&6C+c4-4%FqFeiA;>F! zJbLm6DxBTkDV$3(JoQqUR9?w;`ljzfB0z8B#rw)UDRPq4%<1#3BD^vDY+&;gqQO5; z{s%uJJ<^ayocPDD)h^{j&RXMEm7SpZ=gEIbvfGiJwek=44-4=S1+rN{pRxc?;;Ah2 zgNMZ(Tj>q%R^U%m+wv|4dx0`5nH_ZLj||4%*lko(Y9u zxO=mq5nYgt%EA-(4T~YI=l@hm>kX|+>)w0WY)rV-`m1Sd22{UpA*qCKOt_1Z(HxkH zCR0e+LP{*p$nBhiIv4ttkd}xBpC<4{NL9{gA!UlufdCP|^0EX%>XOo}3F%vOx;UPF zX=zT*KYR9yC0K4W!G6u%`9tN3V8q!7T&Cx#r=}wi>trJK9D%`UtD;TZsCW z!6CWjTrQfv%X-Ap*BMRU!3#m(Id>h8zBk+xrmre~Jo+-1v0K^`(VyiM%|=#_<7vON z=-cyAMPIyy{@nLd)+F?moH6>7DaJj7s;8~GBmsS2l+vxyH|O>?&{u}0`U!9^Q0p%k zmD<_sCt?K<3pUBJT2p}4Y-htnN0!Ww#cHT~3mVkEFtz3oMz49e59`mGLnvOV8oluf z1X;R3M|+_l%Bgb^>jZ8pR5cgcab66uPV}^Og=m>qbMgbmSuh=!PKFZFJFP>ShSl6_ zuHb7fVAQ@k0Oxym-l@1J>lb|2(m0%RH%ThmMCv@&`UNu>Swg4C`o%V44~%OBQ`_{% zAv1T*AlGK7G&1fIsYMv4@<(?JrWmi>CX73!UjiJzDJPDtF|PX7HZabTd1D=%%%U}L zv7m2SV?}=k^7HRdBx_v*-zoSA%~Wv__{18R8H{fP#fS#pD3umU^dfNNh38>Y4*RiNIth8;^vebz2U^)oaVl@cjb$0$Bu8%!D z9f-%v>!ePWy!PONRFu4)JTXRIpW-Y)MhA+q2k%HA0-Vr*x7^|XE$C7@Ii)OWE%M~x70qaYZfVJMa8}10xO%+#kdsXB`?jsAj%wTjE zhBk+nTK1cCo2?}5K|iV;IZe?`(nz8|^ zPE5npLtzuW!#sF*>&?ffoPQ+-v~KqLyNNO;y=O*jf3-g$_WwoFAagc5{j^vTXUI!a zf2O^Nww8}M9*NHp#6^Fq;)=uxEm&qSUX!+1`cuyEnOoty?aY~|^J}_cp&MwTKUd#I z!iZ4L6ZE2mk|{~Bc3mH!$$LA#Z&pkFdeiY&x78u+mguk1 z^b7;P=8*@aV3t%T6jWuR`zBM2`J{uMmYkV@g2DeGvaPQ#jU9CYH01n}C!C_iu3Fk* zirrxDNzb|Icoe)rkdpbODlQb1{*`!rj=7B8f@);AO%=h%c7;f*ZOC-B|5K~zC#j@g z;1*Iq=%-3V(~l`eIRRt;=iCJJdrnHXPQSi%H#zS7++0dm`#BGaCw-*j)cw?&_w~L@9`)8`SNx@e3&zQ&fji4H#U%E-Z#fpCIyh6X7k0|;{D(Uyfo5S=| zC8Fua6eE*>^|ab^6437+Dcw5#_Kj={{h(s}LZw2UQ!<5Z6E}YQmMBtnT#WZzpK9r~ zaXOtaa;by~!5?54ZMtpz0;TD;fmg83NT1!KO#4v$Hjr*PN0@#a^G2Kf-a;m!--dv? z;U`gk8yO~@*C;waISpu6O;%KvG*bCW0WMOi@<&sdDaHy?N>A(QNI+$qln(33u;0d` zBTy!~{Vhim<@&G}&g!xin2A+PxyiO}oVY=){km`$dWM4;xC_nq4z>rxYm*zoN)n+> zZV22%2yYKwDAP9E)Z5keAgeddydJc}z*j+#dhd0Yf*>*>YQzq((enl+5S$Rb#8+W9 znq%Jf8%;L0)&Jmb5)mVw<$vHb`DrMAuB%6_zn`f1DQV>A15%6dQ{|85CsT|shYLTi zIXeN4{iSr6pDhg4#n%&|BfU>10z$u< z-y#3bkrDcR-X{TWb4tSW6PU+Z|6m3qiw%vUU$IHQgNlCB>rm^R4=egf8tHe5)FSj# z`J?H_6yp_AK~Fm+5su%CB95)mue!J`^rJf>e3@gtI(VLF4mvj~KCLV8exZoe-H*o< zJaT+|3Mq0_@C&1Y8NFW^nR4Bv?8njaaL^c`5{+wcRVSalD_H)BD8z%tB}n&+|6{|= zh(g)^BEUjVPE}#|U)vhxvl#7RsN#FvMP=#P2jiZftV{_d2?Qnd?iGKIu-UQkpU}`^oN-Kt>&HsIMVmE=SyX}6 z;M|UPKYfrTs?4}_4cqTtTX=XoeS>5<-;V{z}V_r~p# zXOmpQc|aL6x3Bk$D#uH>_~-MIx7GgWauOzMtET@liAgwKH{%T^0Szb5nt-}DQ=nK{SFQ`V z2jy^LV2#o7fzO3l=tGaq6ObDxKrm~i7Tq@eNBE-s@9Fgxmdf!XC|{?LU66l#^BH?! z6iPfAJ&V}Pk*u>g9qRX#UaA+7`0Rg!CZIMm>?+&Em_KTUXgxt$8-Jw=!}l+f#5H`Y z4Q|`NJ;Mrf(~`1lvRa|+OVN~#md_XB^amm^cjWw}=ExmY9p9`e#6X-Jgue!F+Cf8= zkeI~{vxnjtG-R^4HolHoYSJ?J5+oT-aDm6UYDWpbSjHpvXh2#fzyDB0C2FdfQ^*)S z?e|7L_`~)4lP@HJ)cSo1&VXYH|3F#Hl4!$uiiEoDb!;OWXI=|%P(v;hzL&2|HAGwA zlfUD7@+Pc>(vcW=Lh78!`)DmxaSiAOE%Xox8rDKPCZUek=-?LS_f&xie!H0sBbCW- zJQ}AEh@N&wkCupBFNHWpv0m{jQwYdn)O#-0O(i6g7T?qIE=uccV^@xPMvsz#V&{1# zv(-S+w*`w;|Jlt3d-j28V=40ZiTZxJhN$9a&H-WFZxcdJSAR3qS;)13s zHQH#SbqOjqQS&rGkQ=#?fL7w#xRlaX`$SAMf@tC;kn812T>3y!AJf)W`cx}eDr+?? zWf2!ptB8FnF4b?03)Vgg*qZ?dm;|yKoq7)*ZpCk5aS2$#fP9KS=z$bWay29|6HzA;IZ2fFcy;p!-xTd%j9s z&r8`IB25Ldd3mk!E54^bQ#3?3RJ_>RTTvSH0j(YDtuT+Ts#zIS?xh2rcK#qJjwWl4 z?nRSreQ1&?rA43XKJ)z2Nqeb+S0TXSI-hy{QD6G}qsTPdvDl0L(PT8*v^bw$k=2kx zRF3+{qO5YLm9A#Ad6BeVdRtZ`We2oSy;{1OnnGgg$ORBC)mo(}GQ`3}#MDNUa|-k| z`A88L(?85UmP0X-spHiJ0aC8^gWUBJpqda7|7Z^;M`$i5#H=gT4^d+R?)G8>*IZ(k zu|*n^VgRr$g9%@B=g+_rAoCwd&#T9hk3iA;T3RHA8Vx3+v<#Zm)^ zr`=kh+hp57E>)$=uRYCzfT-bXERqKH*!L=JaZ#9%#0pN>v-mOw z($dp`(>rmBDpLdYXMM}2oMiA~cb1A41X_HS%8r+fi%A5d+gtyiB}{PYXnDilRCb_TxzW@@%x>gm_H!L2*3f-i2D&kI)V#T_r%Amr&}|sS_Md&B2xl5(lY&Q;w^aR2w$(x zVVIJA{L7QUoqAsd1;Cx3oR)>Bxc(n}V$QWX0c6OslZ|Qv0iVAz_&JcUpFEZ+4R^ke zrLHWT=Qc0hEhn?)cQ#NBZC-Nb4R=kCCJz>N*k@u**cD%OySgppY(?5)kIso3VLzHV zDm=_fXNPFgXV&kYYGC~?7r~p#o3s?Pbp*kGGgFBr`^S=_*sXgm@snJ%GHtV*O*ZWW zZ|7?EjJbk?-C_|}{ShteB+yqL`-FjMp1lrX_-)21_g(2a_$~}_at*hT6EuUDw#APt z=fNGT4Q6$f$8;cLsuIg9Ki*Wy9*fu!9d^KDC0kVy6N+(@_|STsIYX`LCjy$s8^OZW z9UE1|CO~RUc?;LzkJ~lpi1E3UFmr2TkywX1UahPfZ6pv5?OfZm&tu9_knDhMr(`XK zLUPpFbG$k+xrIh8D$NpokUOyDg)SnPdlwSz(fh6B;jP~Ykzq&8gmTWGd$%FC;t$y{ zaMyn9X87lT{uPh+=V|#seHPLLQV%F5lBk|ub8gxD+4&l2K@PghX9Dv@+)pZ*fphGW{{S*j~J|vT8lfCil z^bpDVX!EKKyk^T*55Q$EC0i8!7XY;&w*|=MO`qa|`txidn2(~{o%+`z0*1+I zlaK=TuX2)1Wgk+T?rf$;b547e{lCMs7nxnYPXxzuYdeV9jja7)6@LFPpM%@R4L|sy1t(_((JVKk$Y&rfSQ*^#Rb~{k(k1r3(fGT~ zjlXZJBQ?LH*4Oykq-)Aw`v{=)czl%{ra~dLz%89I49q1jjenwzzQsJa=^w1NVn|1Y zHOkiEk@>e|(N-0ayE^dt)h!2`>aYs$UXUsAf(6?HBXU%dvmJmEM@nIn!3prZh5l!- zW5km$IFmu{82f|=W9+&4^c<9TiO#z%zYnX&@d-oKq~&h1LT0#J2C@v%I*$xe{Oy~P z+Cq=T7;r)Sv3JuSCE0^xIdH(~a889ryLF^MJ#FOJM++=!DxNfKxTQ9VByA!qfxkrj zl~P%ZXi_zyS$!siv_LMlp1(@~!L%KYsXrr)se662TF1|w2YY_*quM%tUf+8<@%i)H zIXl#H>G^HfLI1-1R>GVF^1JB}*0Oi?6* zT3MVBRf6hh%I*-5j)PJ;8xBNr?1O{c>a1+J^^$mbxDQUeQ5T#*AKIOKh$!F{ z!S}4<#MICg`CwO6hi&%W1+tP%2zW;S&sWFLy*jR?q2q4lnZbGseV!R)V3)S7cA346 zOI6~@s$*V~d?q~OfGJ0FobmyWOR?#wp9j&2?h!hI?hMVA6TvzK-ePj<7G8?{Ao@Yho@WTf&QdyQE*byo`2xx=nA{M;q)Tkps0^9H?6 zO)4WXORMyL|BT(6EfN#p0!t7a@hv!ub+pjGezxT@&d(X~gV2BFQ2Fa2 zrO*&qMtkQB6~a{82UC_Y+V7unZ-V5h8jl98!h|g4wik-OwcMG@XdbWa%vFOSLxm4P z6>WhhntWXN@2Z`5$59$}i({#gXy}fozS(NbRJzpLL93gx(B(6j(f}N@ z5z7WKY?il;PVLLE9I~qMufno!VXjlf&GaX^i6vaI3exjzCD90~j@URVb>Kd1_0f(* z70?}-Hk*{N;J*97;rWs2mocT$46H~I=-Sm1siCz$uF4wLUHCM&4O&!9mHnmU#;i^s z!+Y44Gvq%t`BK&g;Yk*>hECVoB`vDMR^hjTN6*L#F3R}+u`SK6>HGx3Ivu*LfwkbA zk1Mg7pF~1fI!+oHk8_6YTO#;}y4S;b?TSe}ts*prQ({UbrpnF|Uca+C9 z=JXU!n8`Jrt6ifcU5(HCmJZNjf7-+LI_K|~o|YB7e{oM)J+MMLEY}hyfTp+{NA79# zT}qxX#rrNr*QMb1dTxo~cX!73k<#H=K=?P|51q`uo$>u!KL6L0pJveai!#2CbNMCk z7)t9oF1>>@v@rsq$)tu32~NohuBu^bk0hEaB-09vl&yBXK@b!LfubTX=uV=fKdCxnAra^w5w_EwSA3SXGlcUDH@PvMyzY?;k zUh=b^k^YS#COq3Zr|G+&G-=E(hxU73Nr|t?Z4G*qo8bH%{Ne>?tL4ZPoO%a9~%7nZzaS@Ofo z1G^$qqxyHT5h_imHmki<{8Y{>ms8%73ml!$x)@-R2HOT0mok%1dJ`NgfT=-ObThX0 zrBjvV-W{Db$mijU3^1%MvnE<`vgVvbtXRkS&bnO}{MN3DJr%spZJQ}+JxX-&+kGj4 z4#AvF6Gd7-zjMh)pEUuLel^?aS3hPw6a6YM0zFu`MOXAIyTV}VHKv7Z;Kr$z;XJ`! zxAVHIKdvIlwsM9T9T*D#MsAspT{1PXAHm!c8@5(N=FhXQcdg*$Si;T`t`MOaqsP19 z-v=SfEUyE=5PYK0V{p=AWy;FX<68R~2F1L~)In32+uB&~FPn=6j6m0^!9T)xD)`D_ zz)(a0jgtr;gn^2!SPTwXTSr9Z+v*cD!sV5zCd~-jMoeADXhFZ45X|p#3OiOum(8j@ zkDReoUOlyxrB;uUUyJOud)E7qX#J~_t+@cMV#Px6t2iH`I!Iw%t3Z!M{X-5BbLg>^6dU?^@oTFMMGS9BnH(?9BMs?G?mHO1$JpI z;sU>qmW$7^LtOtlJe`rz$${5{N;Lb$(m-0x%MIU5gX>0x za(GzuPY=9%olUztZ!}bGqmwPw$xS4c^CvAr7oX@bs}>9M<4mtCD2rh6vaKhn+nfI* z-QHH2+5hh3qdgIYl+j77-x%C4=as}WJIlvfN_*>4N?Y+A*Y9hs-`{D#%|FY@$4vh$ zlaKogVk+-PpSXVS*mb5u?K_rR{a%gQckO%AvBITi?b|KP+eC~Ju2}5SE*irobGf?d z9xX1OvFWy-$T{ZDoPdX;Vi+sl_txfB0a>w#?t(MK%ZNHwXJlXSjqCV1c;6(m92e++ zZHAJ}_^hAa2*GYY-Zjq{afW^E+d}6I@q$?f5J!t$w@+O#K;AK#?bBq%$%LEA8F>lC z9Vy2>8_y+|KP(n#Yaf>~vwid?m?$a}|7iOz+UNI{dw1AJwdVG$-iH&O1F=sIb5$-#+RF>NOEZq)^- zszBIP#WLX5yW0h=Z>6nYpVL8MtK6R9TY7Op@b&<>vG*8m=G@LPeU4@~L+a<-U*^2k z+y2%6OW9ux{)xTUU#pVi3pk>rfe~a_?o!s9yMzB}5z<yp>2ZY( zFH|N93%fS-HvQU@^p7o0|7h1h*Zhv7uUi0<{vkn|wzj$DHIs*ozPMxhrI@KZtd}~* z)gpVa^4)G1|B&%@sXnF#wcULxOAs4mynac>>z9@SIxEuh4-HAkH1SK5JQk;R*qdsM zy>}GoRsrnex?%inD8{X^I{T)RmtINwV6p=G(2mt^w&F%EkG(%zm|Se~HXCB5`_Y&} z^F694#PP^fjN;&&*S$?p0=5wlz!BG zh!7SqQiE^M-ZuPu7ayX*^1Xe?Dj0Bu3+IJ{3B-@bPyW-A{b-`vRl**Y{gHW%MFB{Ic1=I~; z{r-}0m+*Oim#NCkJQ@R#!VnbS4Fqu?m`3#+!TfBhTk~MweCcyj3J^o0O_gi|g<}Ob zTe+M3)(Ul|?llQ<8zV?xr@M0HY@{+nehPab;ld;k&979Za!MY?^j4|7DYAujH_eY< z9x2n?XY-Gvi)``6UWrfo5(V-eFb?v*C;ukMON)!VUq8`1#pnIc-@YJugY~ba*Q2ai zdsAPS<_06Pyof^oI-T=bcG0iHSD!DRcD&Y0K8@;rv%71ZL`S~#OA{Y2n)uil!pyu1 zeq>sedPgt&yps#kpO3VjgGORv;lWPWK{~f=P-;Hf@b(f(o^E1zxjRngh|IKY(vC4? zF~{;dCRshOdB^I%-26ROw^M^w%sLhQT=Im5UK@O9@It$K^N!BjpSq<1L&%^xvz^r0 zU#Z>&tmLG#zVpU0*{Qg{J9(DoExMlPEonsGxE%f&>iMTSH2RBw?jGSz)b0cE4LNnE za{hT9T(RkFxPq#f+xyoYYdriy==Q#Ot5`z;BdRBo_%~lCvG+E8T%WL}pv-xv_p83) zHN2RVMCbGVQ-ipZ&wIZkBuv(HO;OQBl8(ican-q$F;WOoJ>H_)rERyHBCa@G#Y^dyc^W;gsaFF@vZx=0O%YtnI%&_N@wv@! zF8b%2yoc*MZ|}YG08Hmuc;Z2S3YyC>+0*6*fUT0=p8KYUm>^4Hz49 ze#eC>Eq&`}FvV()}9V?&{A`i_&qV&RGA@lyQjo7u947FLf+E z<&S2iZxz5 z?G&Rwlf0(Qd5hqR)Omi6<*&XdMVk`6Vq{pzEhY3icJAK6H0&!po9~r#htNy*<9yl;QmtFq377b=S zoxxSjD`YqkS7E6aW7%@YhG6XUZs!isHC$#NE2_sqho$-+wA|5`4w(?S-bfAUNY`m@ zcKw0zEuXfs%>Jc7m~w)Ba3gJxgld$8s!f|BhhOdYFW>z&*Y<3p)G*&ecZrpF*+oaD z1tOV0Lm<`$9~_z?5X)7Zrq&mo0~4G&!Z87FVS+skrU^tOZ>IZwT`)sHQh9%UyB7~Q zT%I{1MGuHU=!I$RP{gTH1A8SH@5{s2JBq-a~ekc~~`Fh^R6N=)@OSZ|HYe@w!*JaQN3 zx=pj&sof2SskGu?+>1_97E88Ter2>`F;kbBdcxe0o+LdnWp`+U^yb5}yDpT$pnyU> zo)R|&p`WqW3c?fufS@rK08+UH53N(MF)$nn(>Q1c)nkkoj7rlwxX1zYm~EA%+bb*( ze^un16&62`qp=fPSt0-6K1osB*`JaW-ML7iOD|``OnM#;2BvUJ(@7&h2{$WH{75q^Gi7JF`)n^i|lgSS}xJ#G@%zQ-4>Z%r81A<2LV;YDk%}I38?Ar{MhSSy1a#vN4l|EAysam0si7h{OX=WQX)7tEE zTf4AHPMga`hfy7~M*9c5Z@R&bRQZK+Wa34b*E32KPmHkALdsF`H~(o=Y{)hA+Pcp0 zic*Z`O1It@C8gjNIQIRbSvbQwm~N74yXilZbr1FGqRDxI>i5lg+qi`Or}A~YZ5^6X zF!Aq(I7a<{z3GFh7u@WlU{{Qx`sbRMQN8k=xn${wnF2?|%6I0Hel{`reEBlzgw+^zL(;lA3zF-`c z996)n#e3j%u&xWHP~S*w3Q7c>3CL;IlI8Ur$yyE_y!jjnk<;``rUx-G7}Lx0p6Nk3 z_KDJWySoOM8v`BPx*IuRHtp?7VokpYPLsQtc9u{GhlO2*kcqPsNzGoQEF|oC$GCJR zSt|3j-KFPs&gIw3Og8umyQJT%$%2ESset8nKGl17g7@#QfOZ4rTa_DS-j~Zt2)?5S zI{oc*>u90-5XWCUaW4jruD zsn9>Z;Us7=3d@j=r4T)fX8LKCxcx3R7`RPhFXQ4O0tP?d=!7;D!nxTs4MW2yHI_+O zQqeZnN{DU2&u&^=F0hf7h59x9^yPQEx}%S0{VnHMeF^scE04&?2{>OylanCybxt$q z)MSog&UDZSC_vR|tB{FZW1boqs&-}Y<7d;BQIq>> z4Slel9c*R&!Li9%X*T)%{=4MaUj26;fP4x2fzGe#pfqQK{C*ADeTh-u6u<2&p@u`tuZb# z;k7$Xk$=lY{*xNpaGo9B%ry{sb6B~Q2Bh~YP%!k|ZdXiUmh3L8s}@}6`DaVd^CH+b znsQUF;OZwF_A{k$aenXvc%@u`12rn^{-P~AU@4;3Ku1w^4?9?#3a8)Yslgs%<|At@ zK@F08fjh=3Q3nAQc--oWm_no)N$GM0vj)P^sYa5!tii9`3(KR52fueOib5d4{k*X8 z?ar?6jQQjGd}=Ji48#y2D^>NELG*9O9AE zgCW((4M@GF!5XCO5u}>zb@(iO1EdB9OV>K2zNybWNI^?l#q%m;jq+I{XPIxCk;T!} z=o02XgVcb|l+3|z+Yl^4QA7d;zs4EvFi0~e?;&$C-k2OQJ7Jv!mj4(+v_uys$5DF% z8sc9x%*CHLv;^+Kr1>plv%CW?4o#Xz{zX$D8~}uP;%v;?&m8D+8CJpu2>{pdDY!6C z*t}>)?fQL^qZwNwEkCr{QVFwdPxZ__!(yukYoC&oa)-l-1`{l?7X!_!I(S?e{K682 zAH&4G6QyND(C`I7s&iRUNDXUm8y`;p0y%?&z5p`82T!`0oU6{RF%F*m0*TVqGW(-t z2%&}a=uHQj^R5m&Ra1kHe&Z^&Yko)_0P_W{jgzU}{EcG)aiOb5NuX2N+Q2Y$ zDCr!CknU$`q#JDx8Jb#<0D_FNg2Llv5`u|wSk7&aAuY1p&WND(pKL(K1Z=Jr<+R$u z4YbKL9c_tu-;ogbyg`%rHSuSWky^urSAZU`OyP_CN+Brl}O=IJynH@N1}EzXEupn?ag z-~#N&OI&CWUTV)SiY0dzA|nznyLX_M7~^ug_Tos9+#t3$(gL-XMLq&m$balj@VkyF zXoykotMrF0Y5ifOBn3;Dy3mBPbwz*BHLY+$1RhsUEmX)3KC>`q$!^}N8g5k$w+07l zyh>gT6jag7L5W}mwqQu4g5K`l!TxL9;M5_g669R1r*5!f20g0_BE}xcY$nW9_{@4< z4_1m@5cD&wmKAQXd~aqT_uKtFa%tS%M!Ae6NuMNLO$4fS-O6AbW01JR z=;dFkeo`%h&3~0(a1WiSzKrtu{d3OR-u?fLFV+9mKi9hcd7uW==68gY8h4(qG_JcY zE9|i6o42O-enup}GiXx&m5^*_6h>1wZ|(cNz<;;tPvj@V3;RVDM$5-1_AQJiTWgJY zZEk#sX&THq<&j6DHLbD2{;1yhY%yxJCQY_&5hir;0wpQ}$c5v1V%FH&rZ2>kvCHgs zpRQQx=wD_QYVEL(ZDJpm5gfPJP84bOq@njm8v)Yf5}4^2@U;RmK?&+eP#aBF)BkJg zgh!*;&XO~-DScC8O;*EYZi%k`f~G}9R4%KYVCJnAswR4aA?o+>?#su};II3xZ;;UJ zJ)e^hJfhL~;sS%tE`gj`|EK`ETixx7M3YTh1=_z*Pwdch>XgEC8@6S%-$JQ1>XUHl zJSA*iC0=0i;yJbW^$bp3=~jy*AIgy)j)nH&$QW3t+-mutJ4hTBD$%n;R^-WQ7}>PA zT{pxBJ_EeJRf>&xe|g8D2vzeQ_3n*(OcCOU*;L-ae?k>XtdSb)fi9f1*z{+^XK)K|l&cOfu=ImGk`(3p3!zmZ(;KJnCT)95)6>Z+ZPL!;ho~7K!ODK2F z39j71uH5%-w1q<}_rB+MQ*H+RnyEax>&$&k{h!)<(!=_v8YejDT-lCTfcY<*Mcq@_ zq{5)9aWu_rT!s+HBDu@*`dIJZ@p8ieHlOy7EF3r<4lD=lU@=?83k(A1uO8zZ%8QlL zza-5n(m4I!e-{r*om2?~7->@WQ}`A?4HBf73WM%Rq2qbOY)b&Z!T+shAdBPYny zV>Ey*9M6b;@G?sAnvq2XE<>@d_&-|)^RpAhqKVN3U5Ajd!0Gm)klqJ{c=$-iUo*1Y z1Bf~RXZHXwk|su%7y#tUHYNuGp!dP+hQXTE)790pS5L3zB{IyrcO_{{%>eJ>zkQ0p1z3h6bG57E2(bdWn&Gr7T_csWOJEiLP9o|7lS{^V?s8U zd{R@*kk2OKOgyYEmOQ&LmN0uvEHN`ml6YA^!K42JaiQcx*PvKv#n~3aSLgL?*8nhE z69tm0mQ>)phvrQH34YrHR9HmgH&tidG@N>> z$($UXuI9Jf=GBtcod0S?2v0SF;i(%y3(wO-kV9`DZ@hj7m!`7Ze!>er8#>3mzFQZV zT26WOcZg#{*tptg>iX(*pPLdm#`kyM(l_F-xEDwiX{hUb2sGW&MWwU?*IyL$N1)(^ZWO| zcAr@C2SpW;C4cQV@u6t)yETjrvE;uqqZnPA7U0p+mm=|$aHDP17#uNsW#O<`B5+pb z)X*irqlf&yP~>)})iW8djh79}fw~soJ~0fC%Z#3GS}w{4E6uOM8syWkp>{`ZB6Uz^ zW#W(01BC>hYc=CXB(A*V)6T7EgkgV*B?$;LmhcyjQ3g&oM%m9UBblEd#gf+-;|CE- zJO^)@{6D??Z5w)8rfPul9n%A1ejCDCHO*lCkxN)ldTu#WkrFlwMbj{Yu5WvIbIpL~ zq&BJ!1fPiiz@Q&pX}#boyX0N1OTzRJZQG-2@v__j;!FBdTfnnLhtN$h-zYX{4r`DM z8F$+y?;b81w@>H`Wkr8S|DECdz~Hn=4n*UNBsH=k)4odW$2Xs*6YgH|k`2TJEc%5BxC^f6Bjf9j#%pU1?D!QbX^b@5k4>j}&Jt z@SpIpa)YN-!hyno&TF}nW!o>OgkwI9rUpzzEWEC#jc-|GneD;f;Ujz3 z>&ba=`bpy3o}0ACOE>^$yL91og9;^PCK&24G7Af zIx)EPtw-JXw86A;MPy-a+j#bWUcVo| z2iG5_`}%`AXOoZHuh#FQuYWd-^hnIIK{Esz2&Gc|$%{(1GlNZlP7KC%*RfCAw?tBA!>c z4}_DV4d^F}^$8~Hei%5X70?)oSE7k01Z}pyB*T=pQXXz=#$`5mXipo}k6um2<#@VD zhZ{aVF;GK8)FN1NQ_D?$ysRlJO?fwxvlWbCU4bv%7HFqG?hxg}fo6Ie81hfLfvBk4 zc-g52iJmyUl^3QP=*GsJ7lXxenb4TCO%)Kmx@u76_2wni?7k{}DyQgp#*O~+(_=bN ztin=x+Yjp*b8^@1X3UZ6*!plQV~H?G&l7xjip7TtoNTv$0fp4yUtj!h=%1H}!Ypmr zH%;(TIrksu{bME{sb-Wt2~U-H*{E*B1|h*9kxM?1a5BL2&%rxX*5(dZtlbTg=};Mc zaTzRJW?bxW+2C<$1ebhp2|hf+;lX56c&wE8a(K9;J$UFjxH81!Hc zqiYXdjTrJqWnw*>_ej=xt#Y91=LXxK7YAu|^qCKKGBauZI4^BqdMQ_J_Ra=lo(G-j zoB88fd&d8dYlfYv!(PKu{&PDO$5e2FGYicX1>=p;tcIiGWq1A4kt;Q5)ExSCqB^Q5 zK#ilgITO$~{KDZ9J<*1z0$%h14S16$<;H=y^Uf ztkT6oyMx5T@YXAFZ_~&+_{i5_SarA|-9tWtKNryuoZK_IXJmD|4s|}{O1Bi#PL1=E3RZS$JGPN55SZtePivqJv$GE#XrUUe!u z#M%aQh|SuQv3V)DKr@WSW*>{R%=UVeXd1k$!-w!vz~v~^1ReVSOGFU7)@I3ys5382 zCH$b|JETq97v#=W8%>^56ic2}5KEp@Ed58(6K?qm+EZnGc~JTBOO?yFf4d_7DzT5Y z7c?9?I(cAj<EgeNy3lqsmDS$-&kgih_u`Z36-*6|F+2VX*^8DtLY}L zOHbq{SUZ>2Oy#_Kw9W@ydYBtW&f^Q?NOhZyBiyZ6A;B2-a5sql@2Knyevy_VXh~Vy zvUKgSc^|f2a`0;FF!qT?X%|)?k*lN{9WBcYuR6L(njd|Tld0 z1-gMmZ4v>B>)=+^l|HBtOj}i#=5(@qvJ7>>QTDXR2@W6x2kHePcS7*Pfso?=MHiKm zAfkD=x*=B0$5god>*`skR+z!kPwScEdEuKJ8^wxe@;70Sq z9If$Zwl%r)e+c`b?dq`p8(j3uT}Sch;q66+omXAqvJO3`@-F{Al99)?_Sp>VZW}pW zw{uc@JCU<}ggc6Y83(vXKL3Y|=;z$A#Ou2nBV0kYBWbPriXT1}<%2fzF*qInytbg> zw{Gp(Qqu~Kar%rnun!|Z7~w8>b-m<)-r<4<>*Cqh`EK7}2Dbi#mA`jvTaFS)UdUj2 zHcgIQJAPW0_Q{{W3zittt+*dou~rf%CT;N46RZyXCS!?Dqjg={ejml~h5j{A6-_+o zq!Rj9t_g|iXw#DA)EX^hfnLOy1okxbS3IqbujK*D-<>t~ZD}nR&9A3*?jvAR{ds5i zn5?pyc*A#T=|8V!rgHGX7V}Hf43lJQrq3g{05Hv1`8bc~4BYDw;B(xv4ib}O<*C6B?Lbcw$Z zTTehto-#OBI`O|Je|8JG{mN;@Mdc_lL+I3qTGcxhvPL!bs#1I3c}TfG@>epmpUl~DGR?13vF2@kFVJ|&00d|6*GIyN?R^SZjHc0^jPH}W~-yDV1G4nYfcGmCFUCq=of3%= zHaL04GfZ|*YzVsc;c>(e)MxmQP{j4L+=C{#2!u+AVhr|OL@BP}M3;(xy=*xAsmerm ztn|Gpg|UPt<7Zq?xbd#LkGU4{>lQw-!eJ>CYF27A`s^} z6M7i_x+VDFvIld~%cng0;w^tU^vvkTozdkx_Kz}|h#rGs%SjVS>9j^rV`Jq6!n6;R z+^y?x>;5c=oX4>7ON{ca|GzxY*+nQVnj0Ew2GU8-V-Yc4cK5qpvFx$e?3ZD$X$wxr zKPT+}j5cfOX8hB@v%%lS%g#3-8hAQ*X9JIJ{J`^)95^)a_~n7*FcvTCy50OH8vpcw zNc<^`k%U-SI11xra_C$x;rd3D`Ovgq^O;a}P|{CFQaJc-df zeSAy&5bOA&IzN`Wyqg%`)N!N9`Ml@Omi_;zRa|U-i8X23Z%u+fXtEB0Ur?E>DymFQ zDXvPUB)F=QKUrj#dpo$WZR9{)&=16iWay;p%W&G_RMo8DxmFCXiD!mXUj^D@z z;|P0}}R2gJOrNHpIB_Wg&p)?{omR08N&L*>?5wB;T^JdAK8po=Q##(AEftKC^2!#t#7Bf z#AWZ{5pVptoB(Vv{I!&Jr)zss$C zQ@eS3MjNh?ewHN~QvbkSE-+J^NYKu+R?@cE)lE=h=-h2Q_tlVOAhW_)@cdH95+Q!M z`b#Qj2`=a;Cs(xNBlzA!uXhK(cJF`g-jCAz7kF=~(yLQAzIfpoXCp)3Z+N$j1%!*D z)*mkBf(D^o_imB0E}9$|OV;KR*M49u@qj21OFX=VOT6sOKy5@XoTVmVg{*mvwav`e z-gJ9i9sNWn{O5L35<@!fMp+cEr3wA{N~W(@UMzXs6K-gDSG%;|B|NzF*J36Q&VGCi za?ss+<5k2oxn@(PlzSUolz^A!Uz~{4k9X=Tfaafk}|HLp?Z9x zqI`A5uHV>h|mNQ3+(kUs~&e^p5lmEkqE+~#H9A0=_FzOZjEmL{- z|3vcHEG)9argC0lfnw=6{7hSRG(X#>9>V<0u5`;>6Tu7zZX#{?pMD5wv|x1;d0U-Vrh1ncDzdPm zT;0;;yRazu%3K6Xa^FHh*kX0@-7i(IscYJO^I3Cd#*{_3v&^Yc%&V}~kSAXDjW@-< ztfqN`apK(KXlgP=C$E&?yvd*<&kW1|Aw0@xcb2GpG@JKZ%Z*Q@; z?7*S4XzI?Yj6{o>#~b?Kz2s{?{jiMmtK&sHf$X{17ADnX)!(3vc<=v7hSO!4=eE#m|K)<0uyyH@~Yv%GFfv^@&xD@2O_~3_jl*npdfl(3$%@GibTFnD;LBK$jjX z$TRPt{=DfBV9>LaeIb15XWy!0#RO`%KUzDux5WQ-7Jtr-u-BhQlVJVVJ(x>97^BJm zAf>FApJZ=CR#PKmlkphH1RdQ5ORr1{8N;DB3IKHupRW5`E%Uz5SxiP$M1_obw zs2}pOf+u=3O-$QEr;?xdjUtlw?6)=f81x($65cRmUA*k3Eh042j%X3v15%AeL7s?-5gNDy zBMbK$pE&!%aCCH`&!Wk!rA1&9TrpF!BIm|D)~3hxM>w-q&xkBBIO|;(dj|!V_z%C9 zObjEZ8G6r6p>0ng{5`8kxbawR{@)2gU&L5ymXynfgRy`WhW5=!sMsLH^_&6aw zKK|VKA8Sz8_&88k#z(s{J{IUX$#n8Aw{a^KwNa~1eI_+{%v=fj4Z#oEd&w8peD@XD z)S%)@t>yKNuO>aXS`ZljCfL>ODs%EL(sF7Z-{O-C2r%y5)L$&GR)f!o(+GwVm2-uO4aBCB8&L1>@mD z(I$B+Ym{hBT$UN-W66;$N8SvDr_CTiWwNBQG@7fJb6bgl6kITRi>z%oiDXtlVuOi$ zC*SU#VYOJWH?^3V>nXdZM7MoqE{p~%9s${7?%V01_gU2~2Y?E_R4DQBeU%2{H-;9(QP zkZzzd5`Vbm6~1UXBuG^Z$(jnOph`B|S0*RtS0#TYB38y1dm>&6HnC(BQG80FJmV9a za2KqweYXvxL(YLSDt?*4p6A_b?8!O8ntN|nGQ)(zgh|(xyWtoxE#|u>jhjRc&zODz zshst{B!GGAzWUTV(b55`F*DmGE`zAv!nc3 zaLuL6x?JaA(2ADJd3g~6&CkX~#2|XSNZX@dwCp3BH8m(vO?++$RB(R=flj{12oz~q zo2x_)9}xaz#HmnwYT*{uUbK5fjTJ)5q+u*I=;=`;F5TFWQ{uuJ{ zP`1j_t&x_y1P#6OS8(l1|I`k!5GJDa0;+ipQm&>Tny4#^m(AMj`+jx4_5J+dEOW_m z5`-gjsLQg)sSD_(%Fh0UYPG9o)C;8QfposoldnU_Q%()f%x8y{ zr`6Xs;#_azNQ7G!`y^2-LQc1n%C(F!oTz1BDhz|_u20nx4YBbIkv9d)U;C6WchqdHmfpJ~8GHcMgK*Ru`%AVM0{xB*P$bk>Tl8&oGBvDcB!4+44BmTbNkd zo%*Lg+ch};4WY;=rp;u8tRgs`x22^!;W;+u&Q+1AbC?t^b35*J>_vKhIq_wU{%)#a zDHF^|Q#UdPWtK6ItZ4#fWGeHSf}q`*$F_>5l;3LC(3a<8LB}_2>DJ=-l&0;ku`4K* zcgOr#7GA!ooJ2dFYU&Q!a*dD86RurjU{2*dai18?H70s6hZ26hiXbBj7>oD*QIju_ z`|{u$xhPeK%1(|gu+?RMswSimN|FjDnG@?ctX2Fee!-_*E4FtzW=o(_+urZzUhsW* zSV7kTu@vV*B(~$?jeYnTNX0}IH`vPr(e*fJJ9z#w^^J}6jq43%*QJ9W-f8{00d;!U zJ)(0@V~0(ee)nx?%xF%W`|xal5K}w$s%{Z`eU2!{Am<>2b9oQJJa@kGMIdCBiG5|N z_djS9)@d;~hR#V)2{b)>50f|Pdn)IlE3wmzR;yrI(6`W36AbzAot=9J4IzqVPIy#d zmSd)r$C5u}7Sl7g(X@sk_dGwhi6suhkaC`%+pv5*JVB5Xc5if5CZ42WVhja|H-jZJ zWpi2PhN#4S?LsZw&-35UtJP(Wm)O)kqglFfE`$-ApI!8n+W%vgDhsrnDCBH0HkO=J zfB<2QaTsR-yY*mvGXogoyeVZ_i%~`4weH~MVbZpKP-naXaHnPg-g zX|wRxi?3m)U2x3Pvhz95UDK>X?U1e}8>=MVT49;lP{GM@F~S4rKyaq$sK z+~bpb@zwajP95TwJp%jYP28M6pH1HkK5_$IlYNsn?C+lwo$$(a{>9NmkNc1S1g9F2 zG#z>J9`)WnYFv6=mRX$`)o`2|n(s4t{mNUu2(Ry|55*u;t&z#=d-RBHs!2#LTkaSD zd|T3MC8^!aRvs!i&uZ<1Z}1$#YSZ^rUh+&0Mo285+(7f(Zl7~zj?3_@5$v>Q%}HB# z!T!6R1^~`c=APb4UA1U^Haj9eR|@RZ0&6W=X`goKMUlTX?T#WL1ymhTXo9Zb=qYl; z>AfjZ?LT{pOgVoy6mk9Q(D%P6S)A?rN7g$~rGm@ScjMA`Rou0?8SZNjXpCd7+gXCI zafVAyuUpM;H43@?wcnOf()>=7)!;!V+L+%q+B3esy1MzTXu$FUGGPK;t)>XIV^TSL zo0b(mX1vyFawNH^-Ja&n^nSMT^vhJW|3l<4gTC?twB^+ z36oh7D-6ZlRdQoOU>Z8-74qrE!h*=csaB@uB}IG*j!8-2u^40kE=NLPdXFX95Gt_c z_V&iYB0ZG&2lg~M(~pvs=wTBG>mjP8t!l~nT++HFHXgQEwQR$-^HP>rF19%56O@j= z?byKiEQ?#RR8}au80R_!f|A7PvE-5A4k&_Dy&p?_s-adTGTEr;eqQkM4X*3kQhimu zDokRP$#Xf#$#gUop{`*?Lk{)L3TA%f9_Vw|aP5;D>RWDASu$D_l7ha4XQ3ep=T3ML zY>_N9tujCK;I}F-f+yMw{8*413v&DS2xc$yK(2!<;KO zQUd%HPs+h%tqaY{p*@5{!CWb{pa?zzoEgl z234i(29JG4@Ziuj8h_VRChpi|sgJePdsilI-NJKQ*PzPO9l9gA=9&+#w&ct`&n_Qd zk+@ZMm8!%oHC*Cl?>*^DdZd_UPj)YSkVMY@c#$Sh@l{RIwi}}<{lK%WVk)_8;Jg`} z%V~~gTs~Sjz^3l&xcsI`W0}D|B@_@awdR!9aDLOI?_||iuWl0aVxb;~0cTQeR{g&@ z%)_u%ZGNWUe1h|G(Pm`9sdI*-5Gwve=G zkw7z%dyZcQP~?XFmPb=}F80qu2CFCh z9~?T#s(Q*csv7ZCl`c$GpLr#WVSdnEJ69EjkKLY_{B9{X+TNj_kK0WnHjX;Bb=Hs5 z`U$~2>km@Q>;f&tB4LLY7GWQGiy3Mg6#m1<6g&G}N8ur^*xL79v0)ox(7jW|)Ad2T z>mqfduJ5>7n66TDgH_=g!HRiU-h}qs?O_$pH5k2H%bXy3wV$Sr`I%(gO*h^-<&l-@S-9aSr^PpbG>!@HXrpFqAZ=0w6K=mwsu~@4 zib2ExUf1ZiNWU2T(8Gy8K9A&C^;J+AN?%%n>r*+??|KC0NbDBT@~UKc31+%_1#>+{ z{7@%*$=jz%JLMtl1Xxv!aC?xf-;j0Mt8kR{k%cONf%&X_tl;J4krv4pfNQWm=MZPV zV8uN*(sF}+uuT~l53gf5oY_uZwxrMHg8sYKD8nB6**uFf3w2|Z`8Zg#!c)cy#56+< z&M8;qMfT*nbo1H`&eb8DCQ(dq=IO@6sp|`;8aOq;sRhnjOE+(W!8s}or-NsMqZ<#W zs1KZJO?-=mj+&3EM2yxGXcY|Co7bpndtk|~RfLDSS`Xy)<*rikMarGkK)3SMo7T=V z;H+lJM@1p^f}_$5Fi%{;{>KnZiDo!L_dz~@)jK9O=-+$Y6 znA1s1KRvx56iGjB+o_+r+(TXNbCmlSpZipoyK~Plck#}-HP6b#MY1+utX94B$7IJo z^KygvUoiEA?X`6yjdwJ@f^aDK?=GLh;=sgQ#`#$3)AHRlw*{0VPTynIB`7H|138=} z`3#U^@$Urhh~p%=9ibWHTS3GShNx+KmL&VRdzb+cq#TDFZUHE(V0Es zq;oH_x-n_vJ>i%%owEuu)_2O&`tM;94ZDdi!+;buY0$GAQ=@064?8yB;5I*f<1B4{ zYJz~yKL4PlbA}o>UkNpsdbe+DZ2F*K}iNr3~f5ftpmfr{-`h}s9JRdukk3N+; z-|SqQ^j&KbFQm;^Z5j5fDQi`K8NFP#ShC5n@a%R2+$v6vCJyYeggJm|tJxVIfTYl> z8BWQz&Loe-(hCbBEgB1Hu#Y;AH%f(D%w`n25*!8G>Q4MxKi!%~9-Dx6a3e+0q2VW@ zJX>BA=tcUT%DeR>H{A-83j^ubYwdH+S1L26TY{aQfX;u_&9pR*r8n-TC!oFFGJWj* z>@hC_Ua)SW_0-q4>iiPon>lVg&Wg{weud*kTbX)%28`GTRxDMSJscOr?6V?|9+o{~ z$mZdDy+A}-7FBP4qpdvh=ttd8FMscF+&Z%xTBW%*32s^$TIL!*z6Ot%oNZeAWIsSE z@1rD6V)Gv`2a<-f)xeew;u(vUJ`s(?o{(43Qf!ezw>VTU#}Tw?+3*P+vX;pN4w5vC?+0sHAwj@ zE747p&O_UJ*ECQc=0shO2|!fqtf|2t+$wTx2=>Afl}^kEnB^Vzk@E z1#(H0Gi{9)$IA*0q!fz+TXHD~4ltneU4LwLc@vg5QC?1_XuRzG4jbyoRHCRDjV00# zUtS_)=66^r&FVz4WMYFZiE`ArXl=Y~VLD&66;>Vm$}-sw;5y`Zz38FAG-WBVlhw<0 zu#WR%QF~I2jrJm_vs~BI#*!5iV#!LhnI<(hgS)VfmyNdESR>~(@oa%RbQ6@ge2uYW zv!02Z?6Nhr>nUM!D_*vr<;MAXo+=+r+@j8}^XpTK^dk7%Vk(+iqPM}cMLqo9#0$iM zK-%P`T08{@zzR-Mz4T*~R5upZnu3qsWjh$Pql~+#hPw%H*TfSgm$Z@JIDtE6GC4O7 zPm3cmq-D`j|LtT^@50x5BUR?x&=Q*Y&W&f;|Ka;x=fd6hG4-!j*S{8-+MBd>dBM6|chdAu~^ zf9&26rWTx62K`!`-Mh&keYb#6T&z`g{lWKvk@-^h(B)l#se1W?NW1qHNin>#^&mC) zPA$UP3gGS2boWA#(2R;@vJpLUc4C1BE}13J*EvApX}5jOnQ(M$LQZh)svedzk~gnX zOTcoQ{6a{tw~QLSo_8U5O}+-7-08WXkM!;AXMQcVzwgREzC8c~;k@XO>!{G$VAEId zH)rCpcW}+8|T)9YBX?~%Tj=mB(>0Vqm(l3Q#a8-y-SBnXH z*%t#s`8gJ>*FrZTT1|*QSlDKA*YnPq5;?yk8Deq({|d)d|n^S-AsH{ zI8TF^1~r%LC3@S_mmrN3{NXvb|jU{uvA4GPfMZVaT$=loQ zGT#_FHTcORH3n^twAAFPh|r!!M3^yvtz-dkA}#RIjhD~@8@DMa%f`;=UIc}GBD%b@ zU;1u9`YtzpH!yuypu5N))K(+0TMuwC7O}KgAAyI0rSt9N3_~&IB2mj?CgcdE? z*VclvY*r%hsMHxx$h0bIj!qS>kC)9|qArv>Dly;*tdHAFx8lO)89bzVx zci?yB4?QDoif&S}R8GHQ#Os-YmU7?Ht8FV^bQ0EhjEK3EL|^M!SO|7P;e!bvNA2Ag zw}MnmF{~h&<5|xN(vsDzAPqa%tsq&ihj|wn7CGzRWQy{uKT9F-Dyzj)xpuLLW-CZ8 zL(dA5o`b(XBKe~gq+4%6%+URNA&#v?w2CE1vkP)@J4HzhqF=eKAe9;V%I5i*`id7p z;Aip~0@SIv5pOx+JwXp8{-Kr!5a`^3OTrs3Z(-Z~9~KGgud3T9Wi$bg-sM+>sta(W zc9Cfe%2?GP#g2IPw9$S7ruMs=*VeGD2A%CDcD;Fn!#`t8Xl76j=O?bR!&v+-uZ_Vl z?PLz`FAJ)OGuBACRY_C5s6U1> z4jbU@2s(I0^NvfFKRv49KwNQFe$D*vs!BK35AQ4@0UuM(O`g%PKOf&b=`>Dm+*p5X zTW6m8bpIPKG5%%=d}`2J?L(ohDyCGCmQLyrP24w+XD(ty;vX)g>4;yjpE`84k;Q^I zb`6fD?1n*&?V{n=;DGsJKsFBDX9KZYD2|sceN-Hv72-C)cCjC8rfytj>z@x>K5-^C z^lHUY`?iIDo7F+OSn@t6Or~$JTwASIs1}L8a0rL&|8^cj%NzRaxtu_AsH->NH9i?* zbFlaU`elkh%2vxaGlqZoKZAe9Nx}0vh4=@NiW-;cKQ0LA>^t$_!9Kt9A3rcuyn6LR z`cb~25jw17%CLD?N`Qo4e9FE(83+X)!X~S8CWIe*2=0qdxf6tKOTS6Zpn}91B6Ehf z3+xqjV-9NaT%-9;E(-U53!xd+x4uI2wr6)1nr_+g@5UbC(#&C)9N8FU_1F+J{^lQ6 z@2vva-JvF~(I=9)eoX&Vlk5=-5xJIArXj0YW?*hbQ^mIFN?beD=2bP;p85iH%CV56a~A!5zsorj1;fW`I_>|+hJ zfg!Wv_@Tt7IeqRHzards-o88`98lW&YL3y5dZz4deWnVLxSRDEXwz=Au{cw1m)v+H zqe+oe&S5Vwn9TZl_GqJzE`v zi4?RZO9cUXK>t0`pcz}O3cAM2j?DnAh|D4Wzng3LGhk#`sIfytqur~~rDeD_LW{W4 z

LqIDi%Z^)e`|c8^9D?t7-9F`mV&XvN}BSzp6`RL^mu@I>TM7Ua4fOjRG=v?Dt* zy%lWi6}!XOYeWLvAPOu5Y%RCv>p@%_Vpf-wgw%6)aJtpw zM0BhAiC+Y#uL-Bp-Z-uM?XGbe>v0;f8=SgwtVBb*^A;)kX{vQzYkGfX%V@G_0!iei z4Y3yn#VzW$p+Hh~jVcA5*YAD}*~zEl)PTMBcP3@Uqpxxt&QP^2z42mfcd48wmT;z0 z&PKSJwUmP)Ic!1^YXi!c3eWttkk)oe{`JAa*Gox=YER$B>M4YA~SqD{#tf4 zoA~)%2N6<+wO@%vyCM}_C>+t6^=}$vgM!$m^1fOcbIz2(_wQxTYfHyXbjVo?A6YAenbNg?J z<=FR6M`VR#>%-i)snU*hZT>&`mR|IGa+mbGUh{)K{F#f2%SM!$huXKsB8=PHOlxHd z6<;FNCma2m&7G!L$lyZ3)xjtwmo09&B{sn}296w-AIv*baRYEWkPw02r#Hcn@v?3I zB{oFp-zS-+#Zn6nFG-nrCRlnu_-h)c5cM&tp1e=lV7}#7o{Ii(_b)YetLtc;87~LE zyuw0aFl=Ue|LJjtiu#!C7#sYJeY6$q>>@cPM@#bxc(g@qj&R=)9DCT7ZntEu_{W^y zSl!fkO;$at*YvuBSC?Ody9V@K8!X2pV1)`WZs>;w@8?+E8}?LNSJO{=x+d#5Jr7B_ zi{ob&P0qHu_z;@(N@3r51vB(j_q%GrW9e$mzMX3Q=r+F%w@N(Ez)|3L)LNOrzTtMt zLi-FFyTQJHZ|oy2e}$^S)d&05drCA`ErLT1^RMQmU+sCg=FURhHMI#AOZ@K9_Nw7p z%d7d9<^u3T!#D@+L7Xh~Sf|Q{;0RD+{w4eu7AP|SJBUqZv~E%*^_Tu!^RVHW9mO?@$t>w z3i16ryPZT#@<_`B?wcl^OHV!A?pUR28Dw|gVg4Oy*^7H~K8mz_ss@cuY9z&ncDqD9 zk|*&-G$~zwba^y+GadNCl2AW6yPRDs`cC(!6V_{Z*%rK!&-McBkNE$5U)_>^J37DV zhOt=+E;bH86X}d&*|u3J71F|mz!3Q^faRX&8z~E(hm@bJbENbRHJ7}QLCWrbccerh z5!_9SIF!BB!C3hngYoC*fU(fSFf&;y@2CYCFqZa)L3TM71XEr1dzHP>XD?GNQ+dbb zWNeGOai{ER^I(L_eyOsT`s~NK?Cb8&D7|dg+4peS4_EdbYaIb9T=vO>GD`pS$Gr#u z@>i?$HRoB~w>(Ssr9S)VF8dRoW|aPT@9a#COEXwL@Izs-i`sbZ}t-|w3M`R zc`S`?l;#=3e{5~Nd35=vi@Bn|N71Ig2B-V-Pjlrrc!wx6C4Rei`8cVZ6ff(%U&DcP z^F~(l;%gd%#(Oo{%GF?+pSdG9Z1yzYJfmY~QaQm!>b-J}Bb#sY{*PqTd(G9o$mZ(J zD16Ft+m8F5+m6ctPMlA-pL7=uslkxRVITc|PaoC#K~Ma^EB1v$b`w7kTVB4pT6nS& zePw|eW$|-RH={cgn-+x8E72jhQy->;5wljq#RN?t9f;oUUDp*T!wb~>E1U@$tXqxa z-I}aV3FNF5rt=DGTdVtP89{jo$<{<+-rLALxDqQD+bm4wuB}igt6s%KLoc%H==Nb` zM_XKECeWtPJz?^R^gid78%@q}rI-U+jGCCmi2Vzf&@{olG!3A(fQSumeltxf=TVl( zgT!1ij*iYT;gTl`nfoE zFPzfqcxJNSyhb;U|1ZL;2bVL$xg9834aegAYDYnczs3WU!Seh9))dVok-S5x=xI+& znFwoi67Pbo)mEduRHHXmxf;pRMvV^oX-18LAMRYEzBN=mFwWha8!v18nV}zDqq%Wb z*Pa+@_PATDeiI$+@wL<>tDenLghO6fNvOA+&MZar$$Og%Xuiz%XcFx>42nTjSdm&Q zyuuKKj~RbsiSb;p=S9@uwY#Z7YVgU^g>1N#g`U^5+e8MlV5!p&A}!{0>gl0=5-h(= zPFM1nG+if^H*kNgUG?>!Xt*R^_LFv15u1$fgNd4aX=lq^cd|+PHYuCu%z3jrNGNhU zvS?smnuQiun{Budlp6m%b7MHQ226Y3duB8j(V?TgEi|A`W)v0ws@_Hth^G&F-l8kd z;y4=ijQyw+k706Gg!9&?!*>*>m+u{j^a}nJe{iPK3}mIN_!a!#Z#VfB-d=BY22DA; zao0}Sw<>ucv4=|cZg^XfkDjg4R?#e}BzW6aq1neuEAk^PtY`Da)jD)iQTw0{bDY_% zj8z{mi{LPP`$ytyF}e<|q7h3ETl!*&r`eSqocSXiTRp=IybB62mLV}$WQ5S;c&m@! zc2V@YiK4e7nv8eAjQ#(^NElzbR-7A|b^~ac4~w6L9Q!R7y{uZ!1Z_s;oEK&wH*a6w zOKu|KTBFEK8Ol(19(OVlTTQrY5vqNN)z&1Yo8}-OL(iX3P$DCxq}OUsV^|p`@*$I? zay}VH12ccA4mQr-Ni2Hw?rT9TP9)xqO|0^)$A!Qu3W9v>Di(F^zf~KDaGxk^0+cDL zhc!|s>UDMv>&3OwobY9JxCe=|88+bR4nbq^pd}c)76QJNZ^9D%|6$Q+Mor1459S+2_I&=ttlk=SqU{vYb18q*YQyAF3 zspwxOwmARu9)}bMd5IbL>pB4GtOrG(#l99CYIvD2e0&S<<7E>p(?H?^Zt|Hr4;3!W zYxIoZ34X%qGP#DH@8i`#4#tey8DY0LF-{(6re#D@AJK2{Zyqqx>CdKTy)GjY;T+B{ z;%Id#8|AbPbIi~mZqQd&*CPzdPW&0NvUFR+w`J3P?Qrj3f3Pf3j>e>8}LiQXoNWrElSMD+DO@R$*1b^e~8&xCiegO}&w2}4KU(;d(Q zdn1_-ysj%g6XO03;wRd>3x>xF!}q>s81@17RRKGwR{=v1UQN8t8jt;SY6&91or5!o z^KK5VKb+tE`mdUP_bim+@vHTF^UF~|a*{1= zAO~g?>P_$z73&dnHx$r`%u=M(nJ4B9Fi2XqZG~zU;ZHX~>UQ!cp6~sXhu^@8k=WJe9NIkEk8LSqg=jnimUbD(`2%&rqBmzD&AE zZ&ff2$>w!eJ4n+6=`s)LbO-4-A7nuK-seL4x`T9vARX)>VLTB|!S^yC9l9$>HXr%f zk40-{CY{%31Qg6Pj&kqp2NR@A_C90TNg4Te!VhdWj3x&U+=fi>X0f#XU7DB8Yho-g zCP(&C_lvX?+1PJl%5nlF?t`JXJVjp{A73JU1qQ=*FvY!Sw--~3dBS!DHhIBPo$PQ~3Z z_V@sZ?y@!b-Og}KvRNb%NlFdEV37f*)xjwRj=&5Nn5!HZqKt&qx7|)%jHSDT5pytx zdKlUs6%_3Z!$eqU2c{O<^H7}+{l=HxD#}G#7V+D(q=R1!vG?+eip7%49V_fMA!Ub? zi#W_N&eGvG_{ixcT0dfb@l`4A$o%5}QTq-Z!iDn!@y4bHZ*v{$C&SgDdMwM^Yz`&+ z-DG{?eD@Xb>Ax>>edp^cGnH2~JcCcKy;OZCgwV%|O)=JePH@0R3fPezm}mMAFV6sW zbT44S(z3sQrs0yS?5{6$xD+~E{#2Eb{jEzfaZz@gKh1O5*DWXe{XYAVE_-%qM)tWo zWjB-1H7@(D%Kkl{-ESGYba6)ZAN0-+Ulch<-C_rzQUD4)0M!dpw*NW=)qh_{KIPRlSa(=5_60WT4C*c2zhj!N;LI&&4INR`--5{>q3gI(x}U z#8>t`=B5uuO z0DPl@zSJvff))T$gU5a)1GcIYLzS$FF}&6WR|C~1u|Ma12vWq7mfCLbGRRZ0y$_$9 z@U7l_G6d1o!zA)`*&h5*ghb!A{t|i%dQq3U&5JtcEvUfKZ4??DG(D6JzP~lEQa7Z3 z40n3A`c_&KtX7sQ%GBxg8O+`1FP!%qpPM(-c5T?(c7}%I%0+KaN4*mlAC=~Pf6!=^55$P8YpqWUuP zm5L2hgO1rT6jf(~28oy2x&ZjnQi`AqrVB&`)-B9D&#tWRCLbwRzNFtDZUG|mwIOz_ z=0Etdv$363s}gMzuh#zXVyv1!B1;=6-Mbi+8XtBv_k(@;d^aS(&`eJV8JBbYcVbyC zw0Q@6%YSXi7~_~!q7HuiKiwMvn@C|sKrx@IDbpOi)dL0Mx(s!1b zwLIG#O*cX3)Sk|g2}>;-RgXajSDmFavA%nn>nFU_&;on*$`jWf-HvGK)+y(@-3zC& zUsro{rA?dbnZiu05AOQMD+*#sbDEm%U8QQIuQM#sXxf`w-Sx0a;dE7+K`uyY!p#e5 z!rwpSn$W9T{o4CB;evB%!uQP$NNYVKE(^K*(0}%JIO#KhYyGDuKKT;HG`fI>ik;$< zi}l?eoTkP)ba<_#p_buEtoYN{$fMxjC#$0`b55U$H;q4g_9PuFP0afb52PV1Gi#_{ zH2(C9QlZG-$A5U6K!xF=834BlFZ$~i!_P%#aeE-@O4O9$7oU;_?G0h752x;Xcx$V{ zo8i2QIiG>}Ou?IR-^u-JfT~8pdzHScPm(T@8uV{}cU>LF%a?k3I;sjV<7JPxib2gK zHPAR`Z=pb6;CaoLeeaH-SBn=*<5gd2a$4lKrfqO>tbCD{tJPG^50JEl5& z!TT)!2I5w?bm&30ZSpysm zT9Bn&tJ!E2yX7;y>;?bDoC1;FZ;rA&$bk@wf>at&E!Yn=|EgM z4nVg~xQ9>`*7Tyje%$^RtX{owv#egJMOCM4m_=1*nJpJN?A>oT!Gv~0#2RANe##oK zA74d3-eo)>{JWa7UU%j@_;5)0*Qphnzus#iC#}I(QP08%5dNu2!fJ5HnD4x${ku`w zzpK>zeTAU?C1rrZ{#_#XW=~-PjT${|-c0}6!G7pFMdu{28%B~L6y^v?HZaSb2;FZo zs$xP-3pu;uQA_x@yiR`J6eLwR<3p@ByKq7Ti^*3pSn^;@Y%V!4_F;^LsjHY%Tbxkf zCG0Q0zgQWqlX1X}ZL7+~BB`M5Rd7M2zMsWk+$;06_4FT=R#MeDtHZO!tP_Z9-prwr z_`Xru)=Q5obtG7uwvNbjsB34bjz9BbOI+CpP&+ouhYj;33h3P4V2?4A$)@5mfI+Z2 zML!#QGk7%NCcVOXhcp*NHNsicM>-F82yrn4dY#(Np3KikRddiPLN*)U?&rt&Gn%-yLpB`YZZ!6-6Vi1PrS&F(^7k{G^<1^gynpaz`yTt=I=p^n{db60R$!%u@vthw)MPRV4k ziBgfn$~Q4)|A^v$?E4w6WScvt}6r+W3j_mT!dCel=%t zdN1?)B}%`&$3>)Rdo~j^=Jy+=3;Gw68-H;DW;GA6612!Rsik~N5ct0?!ZxckcHSQ3 zE`=A2AqeC183+nPHy#!(wp!IpA*EpP>ue+|?_`fydpsDYUm9w|p3OlNRu=X!tdiQW zlM795_ZOwUasYUik4FNNLcB8$1AJeM+*#P6HB;U>7Vl(LigBG~P2@`$0pSlF`~ej* z{H5Gy%TE#M48$$vCyadppMbJO{5-6<^I2&#e`Zf<5-w2$LLs<2fb$u+H7+!*#2gGW zvW4PoZy+}jxu<}d&u3u^#IHO-1Qvm67dZi>ePa)dD=4|=l$atUAfA*TljV76Jp&Z8 zW-Xa3wfHnqJ@q=DR?5@k8EaA{mwNbCj&~h=hz{J{3yd}5PJCG4^nc}(hxGb0qwZCR zBD=;mtj?SQ5;^yBf`*FHQUBe{7@sS1wz$E>(}2eno~XIjXC-0{!h8z}se)rX%O_+Z z`h-MHW$+_1XyA!7D7n3vCkpw!14=8grP1a6P8H~{K|x#9r7Hisr;HXUHopy0zF_DF z;l2pA;mSm98(O8<0YpNUpjo~KZ?lim%oENFCNMSnh?GGXpGyv??C3=!kR2UVi@WV& zY^og12*wRMJGu;Qk{bQhe!!mix6tw|wv4_gQu4HFIHN#|6)X?LosAecj{n<5?F!TspfAj#R;&-5qwANH74I=j`{5$aM zFO#mU*70fAL3}PrL;knBDQFO#LCMTz!~GQ>TCK*DLk+RQna8&M^k-bq1I%-BkuXoz zb&7fB3r@qCr;bx7g!;qZwoONzZDds(DUP4D#u9XvF`!iV7$$ciKb~k(D){Sj(VDo+ zw7txFFqi4oc9_fO|2Gr+4?m%~EG{`Zp#pJlKWpNX7cM0J#dAed`L<#rrKNVt#aGt0 zmdz&^HLRb;DIF1ro7q=sT31h9of{yX)5=kQAMGFYEiz>2Z%IXWt&^lWcc?-Fqz;Ay zXX}x16A6n)f?F#5ykR6bu4;~tv{0qu2fl`Ji5UA5?mvL1mVayx7mF5*=Y_$tpcs;f zGq5O-2xy%pKgzLTG8}BQ+NUTR1%s+AHu>P`3&af{2)R0L0f+%Q<#9*Ih2sQsXSik>M@yF#HD*by3$R9v5 z{*)9aK)qppT}rfI_1IhTreMHRCZm@BO~C@rN1u-8IJyab__5ww_Qt%kppW;hn3(pz zd5}mK`&%>iO@YIycqC%43ja|A)VCgoALLwo4DTt&!nU)a2?B9HJqgOb_XsG9>0eJm z#fgM3It--EnG{?0(7&!gtDDGoGWC(~wKg)M!;i zjd70`0cxm!i1jlkOMMtO2N=nZwK?n23wijoY|gnFzInWv18n)r`^fmS@L{F@Aidbz zEg=GTL-M%sy%^S5-UPB!&>HJBmfV5tu97Mman$%7Il4R-4#5RvGZ^1wM;PDA3ssm3 zn+t=@3DOP*n_QC+?&~pZNwd8(nH=phyyW#~elecF`BJ*rY3bI>>ZK|LX(N6BX*2K2 z3v=;OzCZH?`z4bNu2^2WnyAZ#^&#lXEyVs;sR>;#3pu$=fh)P-aBKCKcO>jM6_#Tf z(za2s;h(L-k3aKbc^5$w^U2>FKSlnnRvH#wn9uI9ao~JD`{>VXEpK657lUK|Hol4^ z3M+Uah1Pqw?K)JEeOmdf9a1znA4W3zj7-4g^JlTBTr$%7GuMm*Zm|CWU6@sZ2hs&z zSlMWT^afiDrcP!d$fDk!zle9`OBUk?`G47nG%+9d(gZK8W^4lci!1uY!yA>xO~$g6 z#e^lQp^AAWs0jIlor3U2Z!*RmQ%yF=0%=}sqp(mbTkoH!=!;r#j{QWw^dfHBs3Rqi zYFKZX%wgS#CBFllhy!A+rGwZf-U53GHGY|%NPOF!XG8ZSQ1`&<<{vJ#tkE6fy?hJmeD+x;H|(wCz41t43K=v1^SwifJLsQr7Og2q6j;QOFfkVcF> zhINj&N5=ayHh9XOglJb*dj08G*T60vyi=Tp%U^lvFs8E@yylHP!1#fTPw%-F>Sn}a z(4SrBDdn6*>;zixTCWzb1Fg?Xr)Jj1Y`Mpu`OWP_0d3QGNrMN1A`IwLYwXSB?JvE| zqCkPhx22X~Z*tM~8l*QPCwb}!0NlAy+1IP)DwyXfm`N`wogHYs=KK(tg#r`uG$_92 zMIrcxc*Gx$MzHrn-r}2lfu`6t;!TFNlYn)~37tq|tQ>DdLO+CaTyi>sXlDmh3I!-r zbWV<**(ROk+On)Ndr7sl>_Ai4DZg0(-Hb< zKINnU_!~On!kAU<1!;K4_RqDdpnr}GLQtr;@KiL5Gj&qnK>M)UPQCx!8g;Q|#F_>5 z8W7~aJNtn5z`$d`tl&NHGlYYJljg0i#rV~Ip9ns_8AaA?xn(u~x@4}u*>YWJV2XyQ zeTJ;A_?t$X8wSqLJ`o=mgWm-HdXcNOqA(tjRSC##+jMHPZd;L%58}4|KO79R1BLue z@b3G0%lR0>5yjXYRWfVyEB+S*|V%WLo+=y zuEtIEE~tuS{bKu8??|9W#{XLr&y4f%fTc}P8sE1$wjcIquYWtnGoytxF#Z_Sg_xfx z=XkssrPo!py${ptnYXdm&@XAoZy^1?^Clz_fDMQ4ZY|2Q#Z{$)QEu+*)RHyZ>funX@8=^dK)JxGlF_+ody>gcrUFq11_R$g0K80`$upSS|VOynzV$<=WlKUX2CGS8%LW>sOxA*?6y#=e-ZZ z`~KCE=ngu!E1SdZeEj0J4SR+OMTr!zY2x)CXfibu^11zCDBfjrT#9#WwNbo(>kcJ| zd8u>`y)ESHnBB0~C95R~T}%Ns0rdf)^{d8x@d7 z%8E)vnkB zR2B_$wQPt3BPH&u2bmvZ)ol0p_pG7LnzZod8%LGglR%XRW<;fmuU@JkMn~b+t+|niiF%!bGb!A z)zTs{po@z*D?*6l72;&WVI56hwNHvdoR0H=zh<*s#QEE5L!8!Kj*2)R%thlbFv2jn zLfrf*L!2d@qc`3-;#_zFh;z3;DsjArCr$!&Nuce60~K-P7Q{((6Gzq3#97=aNSu-t z8x?Kl8NoqA&{u;nXR>M2oiKv>>Tc{tacLE!ukNn|`fi=!qD{M1hBo6mMMs}KmgG7c zmid8WIO)pvTj=(+?A)qD^#ZMruc!USk>`oyL7va2MI{fjnH^?0iBaVFwVxu7+=4vu zZt|#Fnmo-r2FU}(Ru@7a7=576fY#CJvmVQ=PBhwM{g3wnfA5sK=riq2L!T`jj+Q?6 zv;A9j`0y>9a$y&~_ry!*J}8ThNDYBL{s{EiFHr z&JEJ1WCax=$nyYx#2m|lR|>{*)}dGjfn)-R4Sl-R(|qIT^HwX+=fISx^x+A7htY4FfnCVY z<>)QxBe$T>HWWMPqiSjTv_B_EALzHN5cz>5LVhm7G&`F7yxb-Vc|5a$zwhpKk>|-b z40(R~Qv=9T@A&g-IohAC+t>8@PG?pLw4Pf}`;DW|nJqz|k&~m+=fcC&r%KVM7xpHQ zK5`5CaL{+qN7d5wDNhN~r({KrBF__;`-uEpAmqtx;~-B@RN?J>sakd*Aqsg4X90af z7zY?sZ%tk|ao;Q2;=emXlkfLg4!9r<+g-sYgs z%DW@d2RR&kDHq_d%vMq7n}Sa&wjif-ni)hT{6n6y`JM>qyb$xZb~8DDJ2=IK&!w*! zd^V})bB#6{U0HO66Qi~^%0m0qGbDeaZeO$e!G{expE~Q0MrRsU<*eI^qocETz37B4 z$ydz!5Pk%?>B6iT9UU0%<-{=a+x_XdDEO@|lkaChV31!gTVnA0RJ-Wk-yr;6FYWiy z?Q8rle8}LpUp?(NPMvIS2K=_XD*fV+;R{749qIG#1-Fl# z=)z{oiw2uTNr%T~QJ%A59l!3hZ@Lmh3k^ae^w#?gLXWQpMB@weos9055Vt-Qvu>d zM0XN|#&3)J41QlbB|3=4DU^#2^@y=1-4PML9FV&lUZIpIg)%V_Si^uUw@~=AQ0y3x zrP%l{UPufo6p(16BGC-|hy-*J5_N9xAW_JGT*7FsNFs3m6yWdH@h%dzd)|;}Tw-+m z8HHa|@BFJP+i#)UH~c@x(C7Gi+HV|vp7<~5^ZD4Q^yzds`Yr()!DIIx@|>r7+HZFg*xKjuVQOh)FLP7mB&)> z58Nh*&%mmC9ar7!tS5)6^~XwbMjh%>lsn2FY_Z8fYd(BruEY>eX@K|DnV7O6lGk&u(Hc#lUR}8md#n4w?{T7Pxy}jN%2rB>kwr`Mz)ij5kB*<6d zT0vxBge)U2D@y6ucUI3NiW{ME^-v&T10Nv?O0&#`*IeY{0=)1Z(8M=cf$NHV&O9wS zaz9579`fONKJHg>9b2t8N_7Zu6^bqEL^2B|^Lz&p_<|S3BvoJ$Fv(B}(U!;X$>7(Z zgXr6j`{4c?opqSB~_Uu7`}z*xc<9VYtfI zTE}FA+X8V{@9zP$o!+(y!bd7SI{|2;WqIXMU-jrfEFMk7Bh>DqigvT;233@#ivGc( zOH@(3Dyl{i@(-x8fA14GFSA;zD*8$lEnrbwRrG->n#rOjs%VueDq_)($4M_1tD@^s zg#0n8>_JsFl+`w>qG_tAH;ewNif&g$=d$Q2Rg|ZSPGr&js>rK~Vo_9SO;%++RoVA3 zs8*ng+Nq+?S#-H7I!+aBU{OC+ba1bH_!}(hiXs&UVU0?rup@M)=F~64g2EgzV%*=j zSp`3I2D>8oVF{%Q!4I5sF!(`!!ReeMB3KL@grGQXHKdL}T87IKs5T&6-2Q+trvaYj zxrubq!d4jFw|Z^-=>Ayf@1larrje&rP}z%AI2E~x+5WXnvi%2}Ol4G3>pP)PtlL~8 z&=ZTy2=wFeP$*z#cE!suvOjyt$KhdQ=P&?7hmkRW3y46MrMu{=1eA?6uzeZ1$y2Wb z?70&GdyIyyN2mA7j53=L3cDR)SGs}!#u&C2vIrbmPxlMl8b;b6bOga=c?g7Ha9KWr z%RZZMG1Xa?uY3nmCz$|^`q z5H+n`9{o}-UV2kh6Gt8eZv^A?wNC=6jUc*Z&ZVtNgI#JU!ljLGPE-)0_#~*Ad zVL3x0bAtOz)LCA9Kb@bnNNR+6KKP>L6+oKvr>&zvFcNO=FCuA!|2rhcdb@=!X(LZF zlC~t6Hr|#n6`!_R*nSVj)-epu<{vr6b!5DWwww|ajLE!&kmc)$Qi+3oJGL^8cVL?#W0EF#BT7!(m#q$Q9qz|8yw@s>jYa{^%w(=fGk zyfWQL$K@`V%><^3w0xR~_9Mh~UM2!99}=`5HqdexP;Ipv6(!J;7779_nG^zG|4IynC%C|+ z2slMy$%jM=FX>ZHC~cYy4t6MQ)1P~&@9T5Jkx}_Cv@4=fIna+-Kq3T9WjX)drgH-N z=c4mlKMI|Te*>L=X=c-TR-&de^jl4mO=?@FofnG!DhG^9zD0ns(GNprjtrR?AR+(Q z?F9R-x%W`Dk*_VDz*Arc44bXIGJ#X$W;Mr6pBgtOZq{R_U-*XHk0XY%{nbq>vk_W4 zl??OI?V#Q(qg>2#)1!u2{@TLHETj7dnT3atYi6;2%n0%dfDp}DG6uBT<(O}kKLpaFAadSu$Uj;Sdxb<4kABMD@4xy z6-551iB05!6E%?=tRKo`5De81sj?9mDj``6s4N&TV`+mU1U!qH!s~D~WLZm_X`3kx zHq%XP5LGbN;dN213n-g^E7{Q;vZYx2VPjD+hqrQ-J#(td%R z$3JKY3W9^&QqH20S7(PPrx8qUTswwiH2PJ<9-f5rQJ@EhC9t2O40Abf=bNu?dzb#2 zEMEY7Lq%IU%*-rnc^toiZTZ(HQjBrVC9-=+4*(C*#8d9)Hx^(3FH}1QthH_QH`Zj- z_l1X%Pki2~T0C()gPFR>NG=Lq?fG$AXxBqC4!FhaKTf*NC7)X#F!Fg;oKrqO>Jvpi z^LpYt8Z>@yDS&*wbgcrX<+Ih@Mm}F}>I64Rz=gc=6I*T=5^U>h7u>Q2d73^*1Jvi9m346K-e4k5hfqnYx90` zMBewz84nI8VhYu!9g*?19>f2q{J-G;(Ki2I?dJbVoB!bw3Qki#N{`0>-5SjQHXo!P32AxMLVE@!0?9X)C#~*fy!izZRL{HE$TfTz& zAK)~8G)%3KCr>a8d6o<2N4*GBG34{2jW!@b8Rma^fZ5P#^Q+(o>$?$0#*iar_8UbZ zUm)FzJZ-M-9Kw!;Ukf|7-vf4h<~N%iGg@kPtnq};rAYrH;lH4&)cm*bztoT9+93aJ zXrUn@a?4 zMGpRB4pfn!D09PnI$jHW@FEua%15OX%Nlup(Dmw^LVC(*=;>)BkK;6xIhjCmGB+rM-t08e#brt{4~ir@K>L!hv_Pf!Ev`W&SA3NNHj7$MIi5cwW9#2~XJk(a_&a zA?@W|#|+XVeNr>X?=k)34ANKrg|#1js`)1iDl|JyTSqRVtLcI-MP`1rATxz~ZJCLS zH!_n~&*nv_)5F-W3EbMPHRloepGvRQ^UJ&uE{X=_%^e-X){#_vcgn!$_k8h@l|34VN!}Mp~{&4*{GfsEl@cQ#G<9D%W zN;%u$=*I7V^GL}LFLm+aj2VU(KY<%2$Q(1fkU1iZ-=1^vU6JNeVdHn1WbdMVlc!rp40I0`^SGm1$7vDWDL206U1l?Ii)jE5qbQMMbBL9xa4zT z$6LMuJAU(%&5m~;qq*Ua7{9>}dO=5z-`jr;=f7hO#D?-;z5dtfxg73bn0n!)$R|VU zG5Z*L5jfT!*8lp+;r*|}uL6U1xx~ew-}()M_JRv3$e_DA29>4LzPuwP$e-aOXSo0M z%Ur-*In1RoPrb!3X!XCHFvmxMdGPEgFl)YuGJZz!zjg=rSYroA89xv2f8EkSRJ!hQlFm3`UgmvH{P*+6M1e@eO- zSN<%ge<59zR*n4jgS`N!m+*?;9b zgEbJzclH3aKtAl}0zH45dFWfb15Y9RgUnwOK5es0l>YygU3ce~fyFHSlX)DnM-7hm zvX@rJIp4rfgXkA|>hFz(v2uBP5;M(+WetNimH5fW+DT$|>^5JS*B7n)93!w$pk7x2-+m958d;A|FWmkRyDcf3WOWDo;4f00=^2Z&C{DBqR zS!{u-He{A?i>0d}C>s2gB#?R5&CnJV~Rk~)ocyrfO!<*;*=v2kK|3nf*uutwd zLvd#Lellei2Mm?{D9k?j_A=vNSmkx8|D+p@`d8VOg0Sq5PUX4W*K;PWX<_uQjk9z zVxL?@n5Sx(T7OQ;Hw@a&1#|0JkzwXVgL$O($-FIK-uL@9+CJ$f9aOV>r+vcspK$wR z)Q7^Wr+)@soxjWG)z143ul`Z?$-?i#`E$d*Bh-)e^QXnpOWV(N9M}FA{CUDK@X8Mt zyZH0jV#A-m);Rg|x#Y;a()E-h3wAU*ZZt``0q67R%HHrQld;8{Fk#)_^9J~H^&jE{?O{XZEWf8pVoA6(#K(6VucK|lW5$)Gb%A+v-pj(8Xo6KSl9 z65n?(VUE-=HG{6a!Z7IdE|_hiz+8BI6qrXkK5pFr=53wc=<#t}qDWAfe`x`b5lyt)`0IPSm@V-R!)ygRoXmF0$&s1uDF&cuW&<2y zv730ZH30cCvXZAF_CM})0@|P9Qh~Y1OzXv&w}IA&zH|awa#9!|*>8~{fVkg+!(@8x zI2AN{ajY|wZ#Nw@%1pj*agc($r35s#R`t^A&}8xzPbGpxJ=iGL6&uA)LE3SI^l)QE z7u5sAj3(5!q<@me! z9M%p#PrbhPA4OkRe3H|@rgMPLmbGhfv#moKju1E7!_tVj*|?vV2#M%sE9Y^Uqtac( zPa128e;a&3E;rjLZNtbSshpo;5D4fW=4QJ=yV+#?^JQpX+X;mF!}%^w7(CHy$z59>D*9b5?aYAc{noJ@8|rOQ6e5xtUZb^4rYjL|~agw+%) z6*wG#hwG4^ai;8DlduW3+g3c}=|+0bRmR}>B6KP)?Ly$PWlu$(&Wb!Ioa7*n=ksv# zn3HjwB%`Xw0ZAc*v?`Co2Z9g1_*Hz!uT0=l3KTex${4m=OA!65vKoSLVmzpsXbY6R zvY{@NeEq+Uf8IusJ0Nz^Z8ba&0^!}cd^=>zt9shevAY2`B`$m^dv!Hp7dYC3PnkJKUVqGq9}neZKI zX%rT$z0iPw?a=>kCjPVYkxi#+IY*2(oqxYIu@EhOBuC;x922TTD`luyu?{9gkFEAN zv2mv+eFNf0nE!kSm|v-2KT|4C+p~z87$I=;`3n^+zfi$Tq#Wsp@LLMKc7}AfCl}Fh zz*6AeI>dCT%melXqe`{@3CKu?{O36N?@Dj^>Xa&J&NMqGg=yZ^F}2UV)(7?{PvgOY z9-+wzYWTH$!~rcmU7g$L<+*7F2ep;wK<3S9ymRz{=MTzxzeu;=bZXOX+iN>}1LKhK z{|)ujzXsR3#=g(J)dw!}e~l9WK4)Pa83IS*l};1R&;`)O`*F{G`E=joOo1jiQ(#lK zt+hxTy8d_5GR_r{YpG+-7HERA1z3SCbMvcYh-fD#3G6$SZSfd^9k}u=?>@SEeLPM$ zOk~D~2iMfbtpu=`(yc|U9b1w^TguU0Wm_>n!O1wq$=1hBK^Ey^DRSd4<$D2ddZjE!djqA? zJFDXXA(tl~Z%|nmaH)3ia-=jhWyJ9Y=15)!D??smB6P(I7_08Z+~LX`?Eh{d z^5VmO$@s|_*aqd$#KGY3DT;nNb~5(YFJ#ZaouDL#ko7YYiNV^QJfT2y_Ox|mcsaAc zU4j!@auHP7KV>lDE&J!J9)%@`HdH6# zf+yn6coA0!3gr&_D()0yANx+*e+Yh2^@*7MT$c+Q4=2s$cq=Z+haKnfcf?}8nfa z(=ndX1@VeCaBu*>Yd%ZyPdc{em!O2sg?m-4+KiA|*4V16a#Ae<0Li&1n4`G&~D+aCv6NBkl*(m&2Z|u)3WD6_sU(GLYZe3SF>&b0Vvh1W; zBT@zuYpi8sja{V^Pn7N zUvo0w1|OxfOZX?BorRmQCRxL3iC&Os&G;Iak~Kk{naH_Y^E1*j0HH04@@)PP{Fj}L z2OLsG2?XXY!7C!Y@{w$SC*HsIscQM}Qdw&Z|H>733;=~Ft$CV{(AOn=2mhq6L`PU( zSwr|IPq#XWucE)K4I#SC0i@=U1nGBzXJ!>1qRXv|ZVd8If~V|8Zkq($c)pB(0yhCS zVQ^W)+Wm=(zmM0T`2xOV)p7We|LPX2*c|>ziyLtf)?yV3t%uMevA&J3;VW2EzRy$o zHj6Y(Yf@TE|J(3PHHE?T({lhewk8eL@MULv${wbCY4y5(CR>UX4ks}<3nZs=$Pwnn zNAsTlnER)Foe#>4Pjnif>~?k8v71>auR}@n@|G{(hU&iZ`*+~SpP73M^*wCiM>gZ0 z2bM4Ag^Z*7tb>fT;rMx=CZMFWlV@fR000a1mo9g>>t1xcebE{C+rd-zDV_yCj-89G z8O~3#HDuW*yhYCo@R0umxrKZ$RIpgXO8;0Pm+;vNYl2R@pl~W{M2-6obeuSnEmlf< zy2bgpv0LOjG$~la+VzjUJi;9PC(*9b?Xo^tPy7&?I+ZnjC7+!w8iXAb4ZJ9#@i5wB zOYPW_e%0$=S*$vGIeu!I;Smtj-7}N(4P13Df&)kul|9XN(EY{u$r`2$*}TC=3-^0Ur|ds;sD>wRh7I8n?7IIy*I5C)0gEAqE)YrlgL@Xk@iZE= z@si_&DVZ6L|Ab1pxS{ePVQBC2E!w-=@Eg(AWd&pFN~JJcmraQY16y~ZNBUQLscpaT ztTG;{rVN?>xa#X!o-n$44W>m8N-u?-*+_6WMklQ%TVyyk3)l+KY)i}_USa3^|ZA7epd5mp7{GDr9)@V!aa59 zBfLOBCgvj6BYUYsu|k1)vH&6miB?Q5=Eye?g$lKgrR3v*FL2|b?CNjgMh`4+l{~C` zL~_Eg@~e{*2L~=l#ylJ6SU>$=0&Fp?ynk|hO(tk&Ek)2zO%Gf(gu4aHI64jUBgC@d z4V%r*JX)~?kl#oqJ5)j>KFis2ng9`r&kBb4QYno1Y|0SdQz{yp z6n_Q9qMsGn=iwGKV%HRnVt7?CI{`nO1J3gD_2}X~NcqBM1SnUs zK_xzoxa4EvauI$b;*u2%E~Qc!F42VM*C zqsB+UYzN1*vEl_Rn$0-Xg;Q4dXC@ppIAtq>Q)y1&^Z~|vhz!(huOFMu5hEuYDfZz( z#tZhmKT=F#d^BO2ZAxvUHg!1op{R2&`@W^qv~z-o<6$>_^kBY`sysDVJ89yQV?ZbDW-(E~~(U#TxnLU3q zwB_4ETWLnob~z(BjD8b9FjI+hqL}4B40YSGpP}3K!c7^j+sF+2(I@^BW{5%iVRi&-Sat7^0gB|* zGS-Tj*d{`Iz@R)-{O>6}4X+YN0^h(t0g{LtVKX+YyTE<25O*?~6-`-% zTlSvi?EPl^s{B`>{x#Mxs*<(B{cBYymF|guZ4vH7YM1dsB=!kjRY8kg(EiN&#eA8a3trS&t&6*B!Qxkbn*8FNwNdxOKzSQ7+Bc@4C#U|FbHa9 zN7KROS2v4?a%twzyp63+JZ^A#(`JI7n)k`xdl7U|vo<1@%{SKE{|n|kq(7JzaC##UBa36&E*Q~7o7#6UGPjf_XbfcSk*Qj*eC0abuydaEMlj03qE@JMapXa zQZnAb1zdQ8Vv4Z#ttJSSHOB$#hKJx1n1wp-=uBB^-cK=J>Qv!FhXzbKpo-6 zWU0JbDa1(UJNK2S(y=im#lykYPhjwqbdCcRd&~L3Yy;Fc`S^3x?J|AdBe~A&cbx5f z=rq`4pSN)>pwAs-7SO+1ffa2SgVHhdG?lMI3$n*Z-A);Z(dR?iEhBk*7Rsk)AspjL zw2u5zx_KSmxxJHFFrQve^XfPXX;q)@%vQzP!>@h1Gt#_OIZk&@cpSQZ$Z^he{Ol{~ z$z?WQ%0T-#3Tc{#E}O--rQuhw36p{PBN_Kff0UW?Jv1_}z)}Yp)&692+R)M@ATw~h z3z_`~8e~4W{P4(B=X;ojwf;32y$Be+gdjR-5E`MgI~s&`s|Q5m5c<|*KdQ+86Cg<>cy{MHOtAcWeRJn<+uRNzxSRHfnj;R zPb|Kc`R832op-Up=+|#V|6C*f=6pDtScY3g{u4$1b^AvCQw=(&*VBIE(3!A+^4}sl zInVK>MPsWt%AYeez`a{?;!1cJF8K zJN@;e#BX0|KS{T*@jF?^4hCAERZsisxD%n;5$M+?^MT*m_=xyrzM|l9lhSgCdX+)W zf?7osV6!y*z`ZKBP`{j=i9MuFvrx6vl)^f7DTCA0u!A%i#h}qchDQ3Z$%LTFwvP)E z3i15D+=M9fi9Jd9zom;l^Rf(mzJBc}>GNb;p}%h5@c*A|{;#L~#?dF?5%T}BQR#Dm zeH=|x`iQL=Xgjc@qL19tNO99g)zb8tw8TlD6*MqGqIrfyy+!Nyk@G;c5QUg0&tN?? z;)t4mBGhr87B2eye4(LFza>XWpI9^x{nuQzuj$h##n9*LSEIMzIQkSm1p53XE-HO` zAD%uNfn3PXz;hIREe+b&8^o+=4!fQ0$ zs$*RA8J}+Gv*v}Pq|Y=o5Blr&wfw9)-O%TTdfIOsed_K5eL5c6c_^FH=Fe@Tit}UI zZ`}_+{>%b$L7(-ARiphTx1dj@n?9;e-U635tzd+?E`9uF10Yxgc2}HnbohHcWObWa%Pg=_+ekT5P(y^_m3KMG~7A zT7WF2F)p(7>1D`L@mzGY8MTJ!TW7;&Qb`wxkBy(J8`m;3^Hf8VF7-6tIGU`k08REC zj7pQ>5u8zUnmV}Za@x3{3AX6VBG~Hwtb-u^V!~}RTYS1w0EPt8=&v(Sy2=;5q`3oTDB34u9J65tyb-v?#T*~>5_uv#&>#E;fwIrjOE0!5$iNH9F#aTb2<^Bv(c+~z*t z@w0M}_{0M^JJ4>ccAVhEk;rYkoz3}#`eOB|TqF7b5l105#(GO+Po99_{mMYq=iXLQU zMbl7(^T!{Pp1q;U#ejC{l|T);F){)ry)) zyX#q=c+au_wTcnj(e}TBJ-`jv*BmdICjNl)7c&9QoPlVczZhr=fiF0q1U`xU7ifKE zS2H%;u?PZ>btHC0l7OH7Dfuis(Zq8f;_HKZ|0Uh|Vb5PYp0M})=2AAk6OFR@<%tm3 zPksW}k@AnXw}A`XBRYR^EU0NM{uRf7LTiPd8yP%*Q4j#LEDOsP;pZbv_L-~o1hhYEgk0Vq5 zrT3kb_nM0Co<6#cE*MO1Qp_A$5Exux0-U0y`;qUYW#)^>G8Ny;Em@ z&_`{0anxq@g!8zVn58yvn)AY@`_=xZUlg&uCjW!NG{+KBcSK4jIHgZ?B!OtJIwMIS znq%`@f|dKhw}(8-F1rlFZO0hw59vsZ7qvjtJmQyBoU-KHc$OsKK@k{b{Rd*FjsPZ3 ziv=e3?RBC3m5v7Ozdsg&_Ln{iV#1j@xYv6I?JCcP2E+I+eImu{F#vR*2BcB`LxMs1 zL!p2!7C>r)>hb`;`2vuteK%5Q|8%R+t)9F<2De=Og(L2aDHP&yQYH!L^#TMQ7A zZWTM$3-qa}37i%3DY&a;F3UU7opDMv`mFq1LxOEJMUx zRWz7IZ>yqvRMGh?T8bjA{0A)thPYG>`X?QzPyOrs9;-z-_vF%=%kc*I=V;Cc-SB%a zoIm_;7gJr;-Z0e*3&>PvHaIAM0tFg1VO zcbws`UM`rsHWQ{|uBS;DKazKh2f&6VvRV(kTd{RoO-tX5_(E*$V>8ld=Gy0jj-y!u zeVL{|-jx=2xO6FUBCBm1`J!Xr^~|Zl99c6#_EitsWY2j{lf9M zYt_##GLJvkka^8~Cz&UF7$mc6fBiv*RWxXS{WyTMd>Wjl@Jp=>g@?PqH5G6n`|B$K zs-gSqzX6IxzbE~0WK^#BxE?Bx{eW1Aw!gk^eF&YOm@IV8Ed!lDnrG9w;2BM4#P2lZ ze9)uIfBZ1@lly#|-B0TdG&Da{)ckpLD*YWj<@k$k$5pY|M72Rf5wll`cc8u44KrzFyxwtoG>Q{OvRATYn7wo z%hxqr?OXzWux8gD8ABe}N@7J(JO6x_sEDj~u1C*YYA4}tVaH9=!H)eaZFc z@*jI<&>fEaV9<!0IkeA)FeBOSbf|euPNoq^Y2y;?9s5u31T~P;beXi)5M4}{JOjirz91$q?w5T4 z^}+WpVt0u*#QyjJC#V??P*Y`aX$v5>!Jh`jy^i)9;i;hJKeI zP%T3KnIq93?7o^HBrExtJTF{-JpY7-c+~pCBDN|P?7+{_>5milg1kT0x;W{%WWz~& z=Q?Hi`HfNZN7rh@N+C8&nErV7SED~BYnWPpY>zW6HQfcXhro=WKUP&WTz`1L0M_8$ zN2WhkVs;T#e>}D!y8dW~p1JhL<|5(0@_WF4P3PGB_voKBH#92zbN{{GvliW z^9!EwxP1B|2La8dKQ#m>{p%^aE;ta(;3cM2m{FOek;a9Pk>at+cg-pYhsAGG2n!BcQ_=O#x@a1 z!L*T+LLCR9Kj}Tdj(Hg$HZpgl9v}LH7BW6e-l@geOhD}Xk!Fx^_zu2btBH&Rk}Wu~ zt+bNBSu%~y!l*M0)L`N@4Ah~=KfgXl>G2$sKeEX<;f7U{zzyfkvbo{iM-4Z`ax_u- z%c9zUO9-%H!D9Rzo&FwC2a0sv<)ZzrQw{CUo8zR&?lr_hB>QhwkocU(*>lb?{r&Ba zMt`sR*2M)$F@_7)R5)Qy5SS74_raA7*WZ@_<<{)4j!b_aklAB2`>&d)h+_YtXD#p}(*F0aVZU#zpnIL__tg*@^<%{;P^C@sr*( zM6XwW|MERReX!F->@L3>P#?ns6V%@`9H6xQ2Ovjg{{h#^{`<0F`n!#S>CoTpH2rM- zoikSG*ZeNfue8*r-zg6p`bE*-M`!=dieUdeq#-uc{;NO#VTmY_c@k9sz4gbO{~k1C zasK;EenSyFH~xm7|NfxCY6f=Tgjm(VTcsb@MI0aDgTrQ%#-0COYxGmnS1#$;+Sah_ zS@0f_W%Ffr^wHmf(&6&Yh+CSOM)-(Xbt{BB`sIQ$KBH3Aw2-!r3D@qaP>1BLVtz_{AI-Fik?X6gInb;&Fp;3dqZRBa-<4sh#gfkRt-;Sz}IHikowFC~W} zxPf5lF?efbP$rxn1MlnjJh+MAVTbS_6&=7uKEUnoy8-agf4M~Bw|xfSB7X?LVFFM| z#Y*;qe(BGbLMmRuU1(BiZ6Ai6;?^Eq$;{H%f5wo7#+~B!w#?ncXfOzIxvQUflc*89 zp}>7^R)N(X9j2HR!cr`z-(lNm5tF%v5R+E-*kbbJ{hCW^_C?EntIiibD*ik;Eu25k zHIN(1pHcO5K6o=%TdvcD3&mq45f_}JFzqi`QH)7hwcvU1`M}9D-%>$m#aNTKyV$XN zg5i$oaMJ|!bB`54UUcc_RZA2zGAF6aW)0KN-2l>RrNQYL=$Ky(xD#C9)-5Nv5dEA3 zP!08;KLeV}_ig{=$n^6N%txZ?=g!itX!?1{tBUb*%oOE1q%gpC)WqAtcn?gr880=U z8Lt8Qnfo`>Fo3K5n`a|^8bTy;M9I9QHUbCqFT#8BrMwjRtdZCY+i34uMl7Bod3TV( z%+5qBV=5x0>`b(U^5Psx3BuH|sv*kGY2A>C_ETgqq-J8fjP2rMYYo3vWuh&R@&_eT zh_}ML9?V3$NHm&C-o?d8nRSI_qU9tE-c`v&D>cjp=B7Fmtu(_-vn_b1q|kpuL{b)dazyLHr`fR2JuvF~Z_4{z;%*9WEFPxd^|qiq2$utYJM0 z3kYddhTAPnL_`X5xF$j>f^u*(lBY&Zd=~sun!FtwTQY0U13a)E2)E;y% zt`V$8sb9MSe}E1x^SUs+8vDW?<7@UIJegD6fp`xe6~hMbPkI*5mVs-22P5_5BSCUm z7LoDYk(9NkN$jjpp$N~K-q571Y)-N^5WicC&XN=ZDe4l7< z27dXjjbC=w%7BH(GHceaeF#(qptQI4O0&xXlHTHh@rAfg$ z5E=cDf^`#G=Jx$D+TJr$@09HcLX#8zcboyxK7eva-e<31?bWqSo z#MX>p8z5RCUlulj^{I%bk>g7#l<_S|LmkXF{D`0itU}f)6{H-;RY*g~ z(}6oN&C#10h%|zpmJyS@o(hISOlO{=y~~$7MF7OC&uE$IlLU z9Z2lxnaLG9T(w6AQNl9loK8T9(Ro89DhGFy>p5H`2!ReUad}m@y|v))4M;Sso@WP& z<)=2%>*DjewN+3$nI9EbgK>5ItiG_ z9$o(MeB!J8=bA5g>p#%RQ#uz{BLBGU;ZZpT>gn*rYbqe1z|En>ehl)}1G zf-c|hDP=}x$oyjV#w|MKTaf=_;k`<3Bn^W`DRIe^G}Ir#%%Mbf&5a0$G61}ROJTbk zu_o%MMh5E!_wn8^algxBYcCGIH+Kgf24BVZ$g3Xx>IaTjp@FDUF%VEzDR@F8*=fH~O60+8R-^uR z=jS{b{`v1Val)gG_44~!(VtoLqBa+2^8L_+I{Th78Wjni1e8vg#%pGBVk6AtL`4xP zVOm>hUMEcZ8S5@q3SxxVznWlbBrh?eEf(`>l{L3w?rmfGxaSQ4n%Y+f5LISZ_#QWk zLOY$spV-Ck;Yvjza@L#RIQ!bz=c{m4 zUrGTTGr8bD#;o?x>wDmQJ7#s%mB#DIi3mjuC=p}eh~(E!?8{CpBsqu_K@?roh6@7bJ@=Venbf{!ULAZWw)=w z8B0v|t@2R%+Ew`iO`CMv+HJ2rO|UnDOnIJsuQ!5JB2Y-8T;BDSZ$e&Ln$e5c?6h?x zDvt5mtPc8e7hCDif?k2Rxg%sYKlobA=HI@}p3NVas`;vBa|AaM{p&~KKcXsk#jmWo zBiw(qdx{3xQ2)_CNsO@b5xxFN$xteCffQW)hJQCV(HFSb6*ccVGf~FaKrbJdz?!*E`;;28 z=Kb3<^0AJ1`Ba1-iFU}sl6M{%FyfN8;MZC;R?**fDz&&w*l=y0Iv=mkEjA}^o@6+& znH@-V)cn^+!%u@#D;**N1!~=F05y#Nj)ecgbRqmdCIbK8eT4jfSpR+^{QJoqptG#m z%^L0BzhpBwv%`9q419IK$UwI-rd_rH89vKSOFprt|n{VzTQz&GD^iNYy6 zj3`vy76R~g0T|-nKd|5k{rlOMD*yhp>c;!`zoo^bR>2HHT>kxaPZBke{rlPIu*<){ zf0#(bYq?O&okrW@P<@x?lKTAn9N%}S@%?(vl5qH!kO%qU`HS&ge&G}4kj$Z(Lj|3y z?byZ2i6=mk)A7F;;Y7z5V>nE#y^I?rS4eg9nx1*fA&f8Fft@I&9hFN}tO;0HY~8wp zU&iB`-X)(@u?0L*Ezz4=414Bk9!=<@Q-4ZInrM*%Itq$W8MS$EA;!~GYQQwH5B5%viT%vl zziKDEe{tsCeVD7&8^CK*a#8>rui{cF23w!m|GjKx+QZy9nDVJ4cwJ zRs-MIzrG^KfA;Fh z_%`tR$tssHpZAHu>%Xpd0=drt>x~U7B7#C(k^b4CM#%; zh`+AnlL|+~_O$~5rA~El3*+n`;6*WbX!as`Ds9+`BZX{)wt@KrV+5qC;zbBnK zK8-p)jeUoQLs>-_{~i%JruBt`8+jb7b%P-GQ&t2Y_-Ho4Rsnra7J~yL3{5F9miz~8 z8)+>}BbEoQm5WsGzU|)XgBSUC!bbW?wFOtjHQLf*)6#;hOK!&rqp6aOn`T(x3eXkN zfX?&vaG>glltjH8xxMIku8(cH^E%J6ma}{*C-aom2diu20_FdC70F6HmZptR8*M<~R=FQLf?ATna{yJp87Q)p!pZe&N5HY)>U4jDGJ) z{)Ru=Kek`OGsDNfrVSnc)^Pk=;S!l+J~ATnBK$Xh!1&kSjDK$gh2@X*kFCAt|H}CH zpva9%lu~$KBga3AJ;uMjYWy3*@h{hw>d$XAQXS1d=9#gbmYRQ00p&ZN@|{md17aDDL~KYp@#dof)hif;WkFK)wVX4xASptek;|AI`=X9M(UVO-LyklC}g& zKQ!Xk(FN(BbHgBsf9@uM)Cm9FOIaAeb}u;s|J+ro3l9I>tcoM>&n1mil(zkIw_Ye> zaJE{5|;!)qVmvDN%FM?$Np- z_}~5>Q7zkrioc@94}$GSrel&!d*_Ja2S@!)#}D>--NjNr?=~#e?3zdjAHn+*aS z*;8nZbgp^0vn;ff-3(E-yL^8iu@EhOuy7{H>d3Qj<^{q^+Xg_R4j*pwku^$_pY!9S z`p4(P&>t#xWOAeEzsk`6H8=ggwdsGQlOVqYqS1dwgXzDL^k3qp|GPH*uW*7Z6>y>S z2dD`QNa>%&anZl0kU9n#{rCqS z%@P^O;5(!{^D^mL2MncHz01L{3%}c^Aq$t+%^_eFH#(ewFqP7RX-O?=d&SB5&4LV# zzmw?bq+1WJOhUBE`I*|w`G#r&kHiru_IzQ2GQlBVsr3CRFK0U4ZeF|(DR+4};V!hT z_Xc@5J*7`YX{8w!5jWK$73<;Kd6Uj1uAgEyaH;qmw=lG38De&RL--F*_^#fS=vg)? zwt9C$^WRa5W9}Z5DwCR2?~ZT2PmRxbfb;Ff$b<36H2=N4FpNlOGhxPDEzopX}J`V1gu@lCQ-Sthl3Ge!IQbl)Nb$W&rsZO7UCQaDs83;Q~ zuGA(Me8^TYj3FEh&X`j&+omENpL(&1Pen7Zv{>;HR8(j6pq|WvDr?c2(+{0)bqHzA zc0zm9{HFi|Wg!O2I^%Mk4)e%%Kf67z;3ODt+;1vA5WgKdY&)J|BQnsj2$RiF$8);v zct(IDuz0grWTbu$uEN~SKkCm+w;jb8;Sv9lr`*k(@mSo=I6|6-uT_%GVaFEH2Ta4v z5W1=s`Lz_G;W}2X{CvA}#+9EV=P|1I%P|uF#OP!pGQ-n&4yK#P`A6b2jyNuiYE&jYx1B0k!+Jy%uqSpklR(OPXKK^sUc z9dC}~4Ui{KVsV4kP`t0yQT!clq*&QU+xg5i_5p8%pYT?-^Q||`Th@z?7Z|_geC0mp zE7R;(?!r~XsWaX`c#T%ZA(Q8t>4^0D-^`D#w)PL_+}pVM@&4(cS0L`v?lPLU zxB#PhS++fzugud7RF8kST2#xPT#nzE=kgC+!$F5Ih5=geBcz(l2`BT?JtsU=g~?#- zR0eB2_Zm20+Vd{UE&ZRya+@{OX-Z|31}!(|WN;0GP(mhyH%X>~LsfR7f=mKR)PVF{ zu(;Z=+L01D0p$I+RISPh+bPh~iC#cGHK3G`Y7gj?I6iZ&P2PGU!T zf?=u$G8Jq|4>9C>GQxYrzkrdTzWf9y_(JA^H>3%P4-c}*-SH|z?sl}?m3{sY zk4W&ZD^}q@v(!2OM{02fq^Y#zI8}{=zcxtt^U##Z7Xke&^MB^I zeEn5W;=X5HBp>j(A^Aga+HgftSz(AxxOjRPF(gFiJ%)bRRL_$2fUyRiko`IU8%SX7 zG%!u}X>S>_r-lOiWLgkdXnxB)H^6%GTVgWi%uw+Z@DKWJU!>@tWu|ThuUDsF*&g{V z(?arFW~*?_!6d*pX_8=%`Z-J?NkOD#d{?QAR|0i7dzv&+a|9^!G$;Iq9s$PUK`yPg3gfM$J{zns7 zUkyw%`;%`P{Ch)z?VTJXb}0TQy8+ftjHGWQe{qPuS<^xAe{ex`{4-CT9J=Ee<8M`c zaWMR&-~bun;Th@Gi5nC#-7Dar>pBR*>einlycs?)B!gyIpxM)gX8NohxBw_MR|ci# zV$4qr%|u}GprFoLEbGSy|Lh{!(yfMMP5OtBY{{e`7M>;?AT>Noy6kzX-cLA&9Nr>T*vysM!HtnIGhCW(9wd4pM2enq;9V#rf_*$VB zCcnMDko6u;kwL9|nOK|b;QoH$)XD|578q*jgLk?rYB`ou=r1tT!ujetKlp^_fWKjn zxri0F#SrWAej)ffMs++)zUD9*p#ebP3 z0FCvW)o}T`;arigg^$!vF*%gSL9rI9FAn+20Luu)yr9^7GP$Qa1r*D1P|Ry>$x;?H z0s!}vaPN8YpTvUxtP3pY5f@1GKxsLcC*&*f9^tZdhvO7z+qOD&o8N*i{>sQyc6VXiU2yuEK-4>_R!J7Q^A2wk9 z>Zs&v@&)1Y^?bJOKttv0kc{On{|lGeDPPEnBddU3++e?4Q1C-4+r zAK+Qu%4=qkIHjUGesq6GViyiS6F2LVDR{h3vRCK!KyYce$-%J7#bz&#&4 zhWWq6aP-UOKU66Qz^ zQ*-RfR}IHr?}FJT3e1HJ|A+*$W*ht;%6J&k#8;7%jKf$GhGx7op)V(wSXAAHBtpLO zEhgjS)@0ZZt>@~|NV+Y@Aia}a{uz}ss3G5kcQLOYg#^U|%2Sds4kh}^a}XjuZk&je zuRJ%Q<{E;Ae`hG7gBJiPH9qN!gLR)dLs<8kRIu*0UN-BF9i%y@W~bWhb@ci_Bb+~v zHBkN-{!Er5bHJae|3m&9{%7z?mj_(@`RxY7pS?1i{JHCn$ozRnK@?tz!k=G02AC`7 zDVUl+Pkq_&XLY(0=J+Tu4>Bm@kKoVl;23M{eU0YNEw@MJ&jUb8IDa-hP5AR~e*%A| z_ptf%{r(~R$^1cucK)C*c$DO{J+dtyTUgaTdi{$9;bc)irIK2MYr+>wmwLh)aIXpP zfNm>=Wx!P`cr5Gav8=N$knl~lI*ctatL5l7ZiPveW=-?7?AA}tfd6?v2nU~IA|GP~ zn9!{;LXQ2i1?COa0v@Rr80@JQhv6Poi^4v=IK%JujaTobkPzep{ej)FC9+?d2a zY)%$O?ffrT9=(!tHCY_*gDc1KXn!tvmvW5s1{_Cq5)JIEm2sh3AuT}-I&AwRCq--I zY!Uq6I&R|e{06eo`hJPAHOJwCRVLoSkb!(Op?2zEdapiTELd;Amy%EaaHeW~52|sA zvj8aD!E4=Q%@j=D(OesqA4WkrCANlLgZ+XhU5l>7-|pNcqjAlviEaEEbWTjsWV?+z;sf-m!$bZPdhN$W$XCpf8rF&O8AU@$c-D%UIJq{nD!WXn`($~JZY|Kvk<;G&XW!q3z6P`P5P z!7$i}6_b>SRnhU6@z?&IijldJ4WS>VHiPq-1EJqr_$J_{SI1Af$5^{&Q4MR=QhrIk zKXbw@X2{8@rTw0xHb`Op_Im1n%#RT?j#hQz19p~)4|d3}N{|#O@xf`*tWJE;?Eet= zCh$>}SO0hd1cDMLDrjWUQKJUeM8#$bsS{+m6DJTBA%d-Oi>Ygb1jD8YlVGlwtEp1O zOTbI^_-QZNIrI0jNeK@5C|}sJRlyovSnS{Gr5!DI_s8 z6YYr>+rvYl4lMP@U*}r-)9?#G$!Y@>66Mc;xdN0D0tE>Spr0#M^05ZX1uj_1T(Fe4 z2TO@c+~aOwKLQ`P^RG0l!G6Fe+k?-zm&p)0yK{FVFo@Rg1{M{hyEZU@9wlKbR=GcCUCy?aQ@l(HF%Rf>`0YlCOl)lm zC$BUDU(NWO9tPzcY?fj7oFc-hVfW~5*dZiGrnN8n6`sMJvPoKR~F?_aUS}*duwS!Y6-b zB<~NKA8>r(z$Tx~WH5!+<*9`hvgoz?W^

H2)cDI*>l3zPAx+#eC^rRA{z@n!d-} zZb)|V8!s{O*YPrJ-}-%Fprz3Kvd|Z98B#x?Q)tfzA>_5nk9^iSl>AO%;Jb>k#21{G zVBF(sKuISjG4ddDZ`k}eY(||kd5FY>iWT5NhB*4781)4iGEQNkfaa86@kwjQ;&Qtonk7(*m8}e$+d(+ai{R9r zbI%U27?%*7cW|TV<1IdhjS7u4Df(E(ClEOJ#Q7s{=()$6-|+^BEjM#{1N4xayLbZ_ z%gr?0sK(3jOA(lp@^ej5(QRI+QX=8#J4HVm&@$*JNcw>&%|C!F{l9=+-DXUV1v0&P zwZO!P3uJl-V4*g5(U>kxAEo;iO-^b0G`0KJ_|didW_w(>z=q1xL0IH0UaV0!q|6N4 z`TN3fx-&P0%zZ-q z=9hK5r;LUwyvvN>5Z|KS`Ar|E<9c;+e$$TBq21rZ?+KlTcK>)NR(fb)`y^jsVEg1} z1^&@D0LS>g;(wE5fMf9Uw%GEUxVB)<(+ zgAr)<*^O9qZV9uyW7xh$M^XO|;)>#N(}$e%2+aAz)FIv1>G*Ei2YjPf7qV*eWCeYXwNp#FNp7B5Z^c9K=b61u-y}S)?a@= z(!6Oy>PYk24e2B8%ngye#U(P&k!IfwEyrUm!{%p&<{Qvm(7wG5lMS2igz%l@NIw#o zPhqaN&~%Duaw>ksVjG<2;jSh~?_7;1hWW138&?nWZNAo+ujpqwo?y+;#BKOB#N5u- zPDh=Nx0;<7X~Jl;)kMGPm`;9*_~|9wUOVuQJMu97ms19Oh~>?*b_%xmRWT zt6*_uT|b2l;P}rIEM2ffBN7);P0x~F-wpH_Qk|gbI`E3C>ALiEYMqvAT?#y@_Fds} zsYJJuS(jm6TJfYh6fM_{@d3beCE9PIyMNr7fQHa68Gcwi;a|C3`oSb&M+M7XAK!6 z*oWeO16dl!TfwE8RYWanuxe8US@VtovMxEvL)O9^7g?`S`r$bKX0oM2a;zC>PoI=CbC*yHl8!T64)O7~R zh}BJW1Sly{j3IqhdGu98N~zf?$|lfP5^q6Ya#ivoGAO~~NUKP?#75<;i*{luZt^rb z;-nd8bd*gWmU|X0qYO~)YD;=ulEzxJNv^7wICrB=Yz+wiTo3*e zAiDzohCuZB%%FxpuRLCb=y-DPK_1osxm>QXte6Cn)_#Igt^taHq}q4%GB%>P-)E@l zdOlFFkq@I!s{{YJY#@*fcUPRO_>c6%k5(K}+%dbmzX%i5><(iSUiWLaGx1`i zQ%o8=bEYLQJL9)5v-{HDrnCPU-*IQBCwBG&PK>ZKK|b<6Yj$&2u(<_Ol)RZ6a~YNC z@suMjqivlSk5j{l^LZFL3bO?|H74R^`gnyxVLRm#deUKmSVB=tt>}aedlGo^a#3RQ zd=TSH=V_+k;h$>WdFUi!pI&O<8?bO16(*m$>z(L0S>mlXzaQ(X`vCXuI>@4P)2WNN z_VI~R6ITA1Ke{V_^+|0OBYj-Qi}BEi_AB4sKj~QX==`fHVdY2M@2>o}C${PA$;;Yx zCaRUQr8C#vCHIH?C)+Ijq%K(c7b<>a>D&5G_EF=ATl#{LTzUkK%l;9!ezF6De_-)f zbJ4-`f-avl)Ut!Md7MY-x8v%c2l1*6{|O>~rJrK%!V79vku^YLrFnyUZ>Rh{S@tXY zNbFasCy294lX^6bkG{?Dwy?X;WH(S2sq@?P1M%!A#+dZ4xczN5asBZ2x74v}DgXud zH-f@X2F4%Q+a`e(V}EPA|7+s$@E?07=HIuY&5d3rP5t#mqT}0bYu-H6`J4e)9s18q zDuLOwjNJ4;|EkwjY!o$drt8Re#`&<1+BJT_bLQT*o-+#L3zYocM>_O21ke95 zA$mysi{1SI@W84JxEhNC``{zDwA&G6l1dm@G&b|Rq4hoE{U6m};x>c;mz^6z953(2 zO+xJj7`wL@2m|C^APi9SgK_)+XjLapwkQ8TUh%(1j=E+QSD)vT9R~!p{wD>fm2s?x zS}$a>4RFWkN_9R_{A0PGLxO*kH4V142?i8cbY`9w!Rn9yNcRAj$cpNs;mHxeHG7@D0Rh6I!#0Y%{3uEm~ z{~6o(_ZR~H5Nu;}m_U$hr$*w}%nWBDMwj4Jcf@{K*_EAj{@k$nDBgeVJ~FOy|~Ha+92A|Be;HURq51P>J&hCk3SwbJ|LVSE&+n<$?Z3v;Y;E zS#tKzrsG5q)QHujB>bJ zzY%Zn+iGeQJe9mI2DqmZZt0vnAb_@lq=vX!Ha>?_Wjz3F~Y(W&JaPE1#?S;bZ{J;JPWC_X;@k=cOcA_4zBq90@z)?ZZiRDTdjtCB->1NPMKT zN2=@W(TMix?7`vlD;M0~p^VzK3#Qs#dkuTgF62RRB6;UYJKb4T7&4ZR2eI64sPXS;N$t5J&h=pg0ddi1tt}sq*|*Q9U2RmaD&2gs2tu zt)gl?cfVC6W%eX|s|a~llx+teKU1IK`X>OaTtHUimv8YeN}G@;5*UcjaN$!%)5$4- z^Hp-nGO$=2oAc)k<&-0VuK<-SMPzDfvhUtgaS)+f7C)?&;;Z9gLc26nR!mJrtJ5)? z`FKgn?3%M1<~a8oZc<8r!%a%KAO3T{;l?2-pkf-wiYLo=7$?8sHa2r8KkPODAIlh; zT+vNRA%lxODkx~jno4a5+t)6LN}yu;8gl$CDN-5Q;np`P|Fo`^zzjeVRbt2 z-;%~${4|{3p*i4ZML@ajR9@C{p4&86nzO?9t!g`?vFJbyw>_d9&J)#m#qT+u5;iGZ zvJA6>?Nl!k`RuV64c(^xiXyB74Up(}YX8Uw9`#JXr$p${0`6Q;M*R}#$8+=fav|vF z*=rK$r!129vmvCPu8>TMTPR-_$II8t29ch$|5S-0DJpZp{LAU1Q$lh9C57WD>61&? zBHX6N?sB5Nfk0t%v$G)&+jAOj4hJkKLkmCbpP*-j8?Z~hjT?F6timsBUM`opEFr&Wf`5yzPQJ#3=7JOs)s|&n-i16ITSUr5Ut^<&rTU($2s^NJ zPm3d&VRmB)Rwu!0la49x$$CJc-_|>25njZ3r)d3;Z$! z=Y9drgv2E2&!V`wMO~)}k&h-`9A`cr!5g4DfYIdS<3=sU&+tnvhV!=!y$;b?vaKoj zbAHgjU`S`fEQ9|Au3mQ6MfrM+vFxt313A)nXkYI#;}Rp%1g~8zj6IT9$OBsqc*8|L zggme{k~c-_1A&bUgl5=P8BPkStASeREwU`}IqxC#V{NeQhrb`RgASl_kcL=d z5DYj2{&(LG%KTEx&l9iwY3$oirt;kTQ`@%(T`ZWV?At|w|IWU>mn;(bUv`Q#f5h$r zbQ#<&Mk$a!CEHAA)X%*1`No`8ikpng?{AU$0D9<aO(#3Ek}&$nM&l&&$!(;hxV|0lG530~7T6 zaxRCVzrArV;eUwpd7%vJQ0MdJ3s^O7iSKk|iF3ck62IK~p}WT!N9!d%?DP4p*fTru z55$IrEwKu_^eaCnyl{kx?SQjnVI;q~pZq$D$H;7m-Vo|AKVS}y)C3B4@&7PGV#QT# z0hRUHJKL4nWBJWtr5O*rARH5=b@VKm`zV$7lKker*>xZrC9I#sLk5x?rphO$0iW89 z?r}Q@BK%1Z;iY!VsoZ^_sxUGdl>82H*YBL$BktsGaQ%@L-G`I5KdB;>yCJ?sqYvcD z%Te#~aZZmAOcsEl#L0$noBX-ydga<~@|TIQlCZO@8_F+J+JArKG+>7Ny%DEsJikA3 zlzZy{eb+M{{NT!y5tvXRXUVkAO4x93?A;! z%|^-pOn!X?WaPO&-oqPLeyzccl3#DfFD<|JI7(wkg8cf*56iE+FKS1+Oc`9^q2Vq2=43 zK>jIl<)3kh@{i@oKi>flJSlg~1q6hWauemBvoQR_lYh{qbGGizm4C`zw7VdoyB+7V zySDNVx;kw62f$YH=U{=p&U(DIKA>yYx#nXDQw|9qh2pD5*@-QJ2Dsd~i^TmDgB zNK4SaKm&jis3-sAwBw+&WMSHV-v#=X$}R{&Is+;|kx!r#P=ZPaA7a7y@XZyJr(8o( zL$v)$55BT9zu}ey{T>2}sO#saSvuvcGuILXkg42kEp7GqpLf%x=BHqP3-*_L*`cK_gIk3~ZCw{>pJ4uPT-pt25$atjaN(s+A#g7gD*ThU{{L6*U#u zeQ|`D*vSa&oAC)f0js%30jk;1(E-DI;{VZ|tE(~~F`-eMZhGE=G0WZTOf`8%+mNht>B@_4Iq8$bRVb&PRb^_1C829KHgPTpK)@ zxKlWJ1r&C<2>b}V<7FD>#Tg+hfa+_XP6zdl{H^lQ8rT5lwW?9m51Xs8Gc6*GdY z2snOfDALFXvcmpRMm`prZ)$B|;mOf(G6O_P8zg>gC6>O>Dn|U6zmS1)`*|<%V~7>& zjmT0=VJn~6mme$){Ik&f0C4^%!^pzs!B~_SCbK^j_&XxD0^hdW5C*P-LSg==*A~>g zV#%tY+bP0Tft?aBw$<4W;fd>kjVz3p0niWM;|Lyvk9W+*!8WL$q|&%3WWF9-L*MLU zK|0W`drHgSpQG6Ug}%V)>;Msip59W?L)df-^DAc>_=G3Zy#N-bWV$Eu%X|EQ_jnF| z4XM968DLF>DI;qYPyy1JeguQ|<@d7z&nf2&HQz(PYKsfZ+h1!*Lx2uw0r`#6aB}ea zIoInaGrs%dy~kZ{tQyZxw!Nk@fP< znjuB+ZSTuR`E9Qbo=8EXH9N(M1p8q%`>^#D_CvAKcntZ}v)eJ`uTDchh(Tk#`Ko{6>5%{Rhw<$*Q`;radNW4Y-+5zD23ZMNwsRb;I z1{j75%$KYBB&Q%BJYGw+gNF>(y+;~WSnwgrsihspyRh;+V@ZxHcRd$;4{ ze0z2zujnjJi6Vd(tt%;Sx1P#*ePBTEPOPmm0$VCj1x6RP--p5v@U}#~gRq94RMXs_ zjlkQ!y0bWbm|zxg-2J}>%Q+DHetGC*ucf1CyL6W5Xt0`n2^_*m{<<`OPh&FNbsj*;kUeQ1u(UZ8`1;P<2_PX+5GH)# zOY=84`M$+#Ig28I?14Ed%JywT2@}|6TAZNxxN;S4(mlqnojWJZfkRs#!(E5;gn(t0#n?g4|>1+PC<)(xw%ug?2tz+7`qB zV+Yv|l3pFMFFoj6{4Rp_?!2C%uO-6N0F{z0M5H}V@i0O~0R+~!J2fg{o5K*A*g)|K6|Jx-}e2ITE;er6f#%v2Q9- z!Qeb)A1Nc>E^-a%|C$Sp=`+JQ-MN}N3XnYEqAX7CNW)~l1^9j78+*Kn{JG3e{3mGv z9^ml`Oo?&8um++#e5tlLY-dg!VTQNw8ev|seeVdn@Ag7_q7&}_cG$iJbNMo~2T{%6 zUtDB>|jjp{oXVWQYtF&V4+uo;n}Ga&`-o-z>nt;oUTDW?O* zu*;3l1@KS64matQmZL)EH(~Q_ka@Hco_5ZKaJ=)_^clDjHqHEb_}#HG>UZDo0Ay*w z1oYB9+nqmZxW-GUpni(;ca?0Y?a$x7!#sZ*V{i~UHI#7vj$Gp&gwFi(|Kj|;>hJFP zXUI=;{=Vd2|1Zwp?`0Cd_4fsKo%r9Kzvqz!+bLgd0K2mLJ-ZF3vD2d7X>7s)jYb{D zPb&T4hr(bI{XgAL&)%t6&fwlU1G;QJk{(2I*CiyMuVXu4ao8M0oC_j}U1O&ZLy5RE zpEnAKam4V119{VQ_dtI17x4%36{i9+r41bzor;pMZZD97mGTgE^VOZQQT&G|4pv*L7fj^Y zpOBpR+|qpW!Z_#Qw@#5!hym&d7^>5ep9ZrPmk*rK+S;G6!|G(BLFfJ!;%nUD{G;`P z4v%aFIvn?zhYru}b*9nKOe;Ly3 z>i>dzeL0uIus^kkbN?aiPjC4Ng+u9IiZH%}C2oC7mUziKSmFyl@s@b)ZoS07{~wDV zQ0rfy=pSTD)dutr*+gg~rhmCm29{ud>Ld%(PXB@v{7fofkdk5)d@*Q8v=43b)zTGPG!f+u6eTh|!&4UbSNgoIL;4Eun@ng?eUmBX_o*_ERp8sYqzN1$ zDo%i!V#*Duzb|>pIN#!9DEpO~MZH_JeJERLaQLYzrS)M&=dG{4g%{NisC+12xauEo zKOYYomHpf)#IKHb^G)9#VmF^gGCbrzwLXuwU!Mg1kgu+vaNailNk?!M>7Vof5e5E9 z{~APO#Ub0%Ux+e?QswF-X1akQpch-hD)@0s>B?hD(_Unm2|~3&P0r_lQlYsPxu$U1 zH98T#Q01(_QomAiKKjF^Hl>@WfzV5!+_ox!xNhLvpX)ppS(0JGvhK%K=t~#Q? z?g?oJi97=OG~Sl2qI{_wpB%Px5#cZv>lArjj=RjJzqsjVw3!7xE{y;?AybT-G|wTT``u z@37{f{hK!T)f0$Wcc0=klz-C^zBv}^|G;Uw@*2EMg#jrQNnyI<90;q?ZX9(hgW77e z8`qdq)Dhwobrn06{nhh|`Vy`vYL-@euP9=EyQd8*e3^Kb9%o1W^y@<)`xhQyG{zG? zQw9Jw8RR|bZT zl=Oc+`p1d>Ch{u&f$$;>5d4r|28LbTkPsJhOY26XuC)SF-D{ZNkQ4YZlq@(@BFqnw zf|vv(g{}MqA~jyE8*>_Sw#5}g!>Mgywe+h)!0IaMixcx(%qMLgBEJRnBYwVyek5D2 zk4oB1XDM~d;Iegvd;`0K0PELaUMcYyt#{GTT|zs~!hHIg^DH_!v} zR|vvKE<_QG+lvG^A2=_O0J=591l7i6>BMg}1VbNN=y-Pp!3x+iP~dd-Q^POgfRg?0 zpqyLj8)MTm5#UAsp1EoURr0tBZK-yh;pzeS0GNRjz?~x&Sm+wkIZ2(SLBuBLvgrb0 z-?=?*0@uh+%1{RSO?X2Oqo6l-Dl0K!h+SYi&fG!*FR^{Y+ybRz`=<$u?7aJByY-E> zjn6p%J_8&q;}A=TgC*>`+^_%&e8bwAas=KZEm7TC7R0QJSJ$M1QNfoP#hjm=m;^(G zueOCtDR1+O)hm3z>SSGYmAqteX8^c~PT(r7O8Bd^gygxZqghg#r*`{(g*d4BY7fB` zp!g=|ntV3G!j&UAiehKf-@b39IR!9;B5w7pEGz|vgL*mJkS@Vo@2n4~)@yxSB~VWZ zsE41&R&ez0V{d-s7iZJ^1U+QQAS$ysBa>sRM)ztmcSv_E`~|+zAyd9e9;x}|yRYNt zcPhrJ=I5(BQwj*wIjQ6X;7=Q*o7~@Kx{5yy4C>b#^y^|L>&@?BTB^l8Ux6~8mRHDU z7>2i3*t*&u#=MK6pc@*5{0#)XTQrB((uGp+r6sr&T9^0>txK~CtufglZr6p-65#Gy zvaX()RPdyR&1*B$orgX|@JimK3w6>MmLI84qSPD zQqDGK>;;s}dYvP0=4Ljsb!))sa;q{B`xej0974SsvY)_|v=Z9-oOKORA#3n_;soa| zbB5C{hr0}HBguIPp`Kuc%QLs*PJYO8gVDM0;R`Z8)yAAmhxc|`|+H0>5&$j7+f zE3Z>BAIeKw7Lwm8QK~xmng^XVIW52;Zi5sW64RYfaC(!v<2KJ}V)PYZd7wd5>-TsD zL2BO1{VJ08(y_!}oY?N-+m>F2{h%twW4be-2eDSR4308v&Ek55t-IBF+{g7mUbo82 ze2XVx87dI%Vx_IEP|E-}vy@kwWEtMdk!5&V-gwLKxZK8;VHlUe;4(Bs2`d`pszkpV z26z?_B-U^vXIt1@hrkA=HmtmYGgC-ZY7P$8ZmT$d_29wD7*4R%e5oG8D>Y|j2zOTw z*TOT~!Kir|B8HNj)lGUyo24%mUPUz_whV?&J>3IatDSb`9TfZLNI(;DV+%{$Dc@g& zh0BrO>YY;mV&RU;KJ>ydrA^?gnb$!5+@qj0Kd|riFK8qSY?*AZk7~3hUo;pD<*chu z{#7IN$(IXEU0}vR5iNx?2Sam9+;i&}A8h%pivv`^np@zw8+{mZBNf-sSyO-FetOzY z8T1JRU=DmmLp<3m>bDE-m8=);RRXFr$Rljii@RE zu`^9o$^{CcQc%#o#^9Y<4y3HEMl;BN?A0rmdgabwsV92*c@5H|m_FulruhD<*Ii zN3|Vb9)U!%TO!cX&!L~{&Z$1C+2iEYu+S zRE-rEMDlKsMz9ag(QGE)XvuUD4#Fpp8Nq?;osa3pVQv7rcqN+{3_4Pi#)$llB5?-CnJfNIZXxg#h?t=MT!P?iP~r&w2>@896*q ze3eFI0O059)f?=m0J2=&*-Yvwto(+q1U&4sugE^+TYLvNWEEunX%LNu1JZYvBX+PG zY&6`Tjlf=?{XiFfUu98`q@i#J{uCVU>E&?0^~>UHb@rX5fW>_Tt@vT1%aV6%hG+8{ z$r~p_Q)d(L(KPY0Xz9>EL2%OXNO-FsROdBy17Li$|K{8LnrXq#ohuRI z5TFk8+Wl09-+knKas+<}& zj|(M*NJfrS$AwlXwV|+XN99pr>$EQSRDg%3rSQVf!a%qHLT?Vy9Jt-NXt=|php(hB=4Lfg`tJbd$-`e<)pCvAb;SziWIC)5s}7RLzbcIStAYfnGv$` z%R<)Wrg!z=Hq2(Cz5ALF_>!aq5uT=f@3e{Pi?O6!AcaAkYxd-OMSJY)YdL$2pqf`rU(2d+<7`+$8A>~{0nMc(*s6$uZe~WeMiy$2 zew;^G3-aAX1EAkK8*;*$U@A^*ly7%jr;G!llDK~(?E`IE!#J8*76*cQUftG(%jfIy zs5g(QlI>d9wTwe?da7ZZ!(pWAVc;0fVf=1z+%S4{Fbp2!AowsBA_lTRYNcHAUH}tJ za+aN?WS{MP+@b7Kl}gNs$v*u%kvM--EfwNqpCTy-3@gfLNrT2GL*REHSxV1SrRU?) zUjFeay7JFzRcWEBv_w^EBl^nWqy8`y_B8P{{Bkbk5+WDPCPoAq4gIQd6C zZ*Z0+5k7juvqpjT@hS3!^QDo4T{&2sSsJ)#G5O~YQfCz9AFl*q6_bDJq=f5((Le}7 z{*l5M(_Ed@p`nqLV)BoA?ijjx>e|d^=T)4laQ>Id;I{7eJByVYTKdJd;0O7{Fc0!T zwc{X!0`qHSpP3=g^+6CQSj~H@SB6=E&81&=T;QOplsE{p?|=9Eu%YmCDQb6IR)pft zv48%)wdFYPSvj65{CXvks&`4-iF8OFnqR%N2#cCjF_?Qez83~>qvDdVRRRx|$GJ9P z^A8QUMDprW1nOYg)wst76Zx`Q%m^Eub6Ytpcw~;2jgp8KvMw<~*27%&kahQbxh&;! zfkQ9E1ss~t2itDM#p%(NQ&%voADqqj|6d6+jl9NUNfkWPf3_7e+9_FzF#SYDYbwN! zyP8pebHL9n`e!6>YZr|qcdf-Ue4M0a4SzUS!~FyNyEBAPP-`O|F%}R?WFrA^ zPlPh$#T(HklAx=v$?Miu54#|_<+hsr_NM7`D$hr$H}A|5lZN}iqi+|Ex^_-nZNqw?QA%*e5X0=0F*`2A_r;QB zvK52KkqK|DCS^#znqS3$nyPe}5|Tiqy?+Czw6@Yu3gtqq&Obj{X|xhC%)`qfH0oUc z5^)j<3`E!i8ndg`4Wc{Y0`e@au8-<(Xr*-jVo=hu{v44#N8Wj7>ZN|1soQP~38b<2 zMb#Y^Dun5(q$)q$-J8wm?(~kjyR@V3)X}{x@#rq=t2-Z8*}UbjF+?9W-1<1bH{iQ`h32Y|`7ZolFW%SM`f3KMI4^?uMCx-sbAR#s zOZbh`2^D|~x3~(x+26P}(K!FqODNkN%0Jb04pmN}kOeEUWq#1VRh&+2;rPN>wO$W!rt<8Y61gk;VN|*f^ zAMqHPvm<&JDkHG*ghRF{mWgsPbHGci$=SXCeF!PNzWg=yHP8bS9#ug4uD^t)MoBBc zMh~T~Kapx0eA(dx7nc)dFtFZNM}AJBBFGaB zHdbUkqBnPOJ+j$_>A2kj&6Sfp>3zw+Q};Y!0l^$+AI#jxoOe9&6QaZifg}{kV8#l( zbOQxQD6gOx0UU-}Iw(r*Fbd}KTSk@8A=Ui6?EFf6wWl?;^2E?z%PK0$&&xSCr!X)R z^7=&>v*@6sXX97wZM0wF?NN!htyC0INlI;4HWpTBubM-3S2OYWOAz>Z#LJ>;Dcd<~ zbGy^9Hd3(&TF#D^snmI5P1NUTyn}~AXQOom%&vC~@GTxRra|LhW5uyyt3DNMBWyL0 zYrtikN19&AS5C&Gv`)ATg~P-EoNCcPV<^ygN1AU@->$XWDtDnZJj6FdA8*2Q-{Xz^ zIK|u*-J4HdyE4T5M{xDL!yN8goH+q1x$i1l+L}U1Kf9EF_ean|gMJza3-fs;(AxS6 z!cfbZuJF$q@Z>Kc(_48@;ZmK~d*4)SZT$$VBEkxoAH;#lC@Qpq2uF#|mSfj|dsUqV zUgC-l#%ZpeXi#WX6InC>(#ma~=~8av1+X_rN+rPhtmk=z09{bN9oU!LXDpGgf~!i} zBeFqXj89?7NjucqSZHnt2Ug#49o(aP4hA%%TL@@-RB|}5VKOw5uup-xT?+-exye;d zHa&NK66Ciw?F$~GIG7uXgNG53jM8D|wMEcO!mYohL8uqx+3U&^k}*-}ez}tg{LHzT z)tI3=^i3-YS(Azjt-&C%H^Vj+vo~i@7W?!&fRm~aHyM3?R?CT$!=w#+BvcO6L5X}c zk$xi(0ieC=>sy>oD3q6)<0e4X$6moCjiZZ!IhTr|O`SCsJSRtRSXbxfDkBjzt7MgP0mx9@CA^Vxy|H zFQS!TYG|;VYH*(0p!3HcY%DsG)yUqQ>o&Ms>4Ek!AMtJwar^5$ym&c*o)R3dlw_+0wOI0MDi zt)EG{Xr0Dm=5BbO8n@J~i^Q)^1P@z_*BDvyDA7n~D*nl#mta(}68WYrwNA%g+_yE35VaA3R7rh6ZT zFk>jykJCC;eg>m4c=8hq&}X6b>_WNRw}cm{+j@am{&5#s^EsR4((4^u=>7W(PH6(Y z+$VMdd0mnD3nj>e?S5l>CWDF7044m;Mq!n4(cFs96@|@z!Ec@{u-v)fShB#6_joK& zmc;}M>=RpDmj%NAbC<{eDj*+Y@nkO;ZQv#w`ZB}1Pa1$ve`N~psT|wirSf?EtUSIw z*zmXl?>1KI^oG@#v(I!G= zD>m#38VYW5Kk&PJA14T}8Ax@~vVAE=pj2d$yrX3l=MeXW{>?E#!=4V?s?svXwNs(n zVUTXh#Mc8D;+s4+v6}Pd%n#6s*1PGBxZ^G(UxNMXTh2AjSQDwnJ^vvX#a>p8A2}PH z5#nnzCIjs*gBv^*op##gukqI==jeCA9qB|vRWOGsbC7(JeyGZO{}aXRyt7yuQf)I@ zl>LimL8_J?kXkt0iL5gUh)B8UO|leKm}fl1;C+a{hh z%C$`k?ONPI3~Kwd?Y(S_;Wu0&y;_Kr_N^ecc1530rK8uHok5Z*w!mCoL7#FJ@=LFN zmE0z&0-CIP85=W4BKHiacXd9Jct8Lw7ep~Ks$b>0Cc#?}_6%4Zns5{ODw#p#+%^q1 zj_*O%7mQ_X(!NLdslLUbpr+0VaBXv`(@)$33S`L@DAW+Q{{6)5Tal+UuF10jSYBRLFCAlSiJc=A1oEktZAF`lwmBlb!@*eN6yVc}^VB?*8h~ zM7!JB+QKCfqV2lHCEBN!3ekf9Z`M@%qQGme?vYtwNwwD^ya7~O$>N||4$CR~V;ldf z5?RNTg?|~4f2*G7!|(G3!w|c!kNn* z)^ocEO7MEmL1EhG1Rn=gr3Uru4hJ;`gAzV=M&e+=!^Zf@A^<&Nu5a)o2z z%TFWs^dFA_7%}t`R@#!sci53j6Pu8mRexI!8=} z{r58hRrOd}L!0cRpRdl(NXBvXhLLh?zfmr|ZsNrZ1;ZxQ`Dv=5u$iCRg7}@OxzNu> zcR=^TBXIRRbjI_0?bSy@kiszQG0YGW&2tlN@A_U?QO`VT_7sHQ>;$8r$ z%A^4pFf`x8Zdq^tmtI!Ph)4vX zh|IY-CSS4Qq2;Te>G~pH`Re+2VG|mL-g3ChqX(;(2j5A$AJ`cVG~$e7en9N}K(MpH zR~G`UyN)PO$3aI~0QRhyEG$}$m>j(f*;SUzAJNlq=C?L$`48Wdu3NSLj`0)@$6=9Z$7+XT7}$oGdqXBPcrDlppuCcZ?N6PBPqCZj zY8x~kUnpSLQsky6Sumu?y9B%G-pL=@8aeJGfZp7LxFOi>o|19#42^lhJ;IuVISe03IwscEsarixodAK&6jv7ydY+l@5|o8IVPPHS|NUUEfw z%3s-e_ut&iV&24Rn>t5){7V+Lpu4&8(6Z;3*;R)oc}w z+Gs&YlYmH|QI{qagy!frJQ|%lHjzd-f0CG{(Ttl9L8H#Hl=k#_2u1@6&DA5{8wXTn zKi>3!n!9?VOLoAT6!exSLNANZ`;BhlhoSeV`edT1m>T3y)an>w+c`#nz=fFNE*``_ z8j}dIqC|*&dgGxWW_IZaVvp)`pSC<|gj0v6#lKasNn#hki=bTF;zftd{ScBvM>~9d zZKi0_uuRReJg;bh7K#LbVF^36N8rE@DMjXr54ZwAp88-WBq29yND6a%v}ZuYfTO9Z z;gubw%fi3(kDSxo%wjYNGRMwa0CFDp`sxMl=xtWjPI>kXK7LdH1eSH9l!B5J17Q6=>smSA%3%#I>jgIdwH`x= zeeHbp_C1zsN&1OmB3& zv(yLAw}%Lp0!Ogdw-eW5hef;Jk?T;_&I?Nwbx;)fVc>l92YUt)r$<$)QoLUmeTQ9}22j&+=FQzKro?7Hg+_s}Nnj?yR5b!>y z=jT5;6)$FX6Zl6~?9{PHc{+pU+~u;J@C~?y;tyhe<_&oQZy>?JPR$voq9Sifc(Yw5 zIhF=Cn%|@o{^d=+uSBNqK3^cnW{%`%RKLbL2_X={x?>1F{~hj2gO?Wp&5=G z-mO_7YZL~41gTeXR97h1NGA}?gCa{N+u(dae! z$zF@(`l#~31fx!p`{ly;cnVeQ2rL*~ahh1IL(Wc;Gs_%nJ*k?VQ{Ysynt)l2fsz{X zkM0VimLXu4+`RLZb|GDlO7ZoC+8BV;R(!i-Sitb>g2M%$Zg>~^;1U=K!y1iY(HMhc zl&c-BRjePw;>`0A+KX2ljtfyLJY<-FYX+XHSQK{0w%I-V;?&D<4?%eXY&_<}ghR+& zx)zs6-huZ;t__*@HRHaeN622vAI?+obqSd-ZIMEo-9mS7XQ6Zy;tzGcK|w?U76g$h z|6xYMk(X^ ztEvbEqV#+|r+~(*o%Tk7l1m$Ti`Rq=Uke+sQ$}1BCzrBq_q6SNweNGaXLD@O5a9xJ z@ubT5r`*{S?)AvC(4NyBBgYPZO7{WKuQ~?~!u1LJ`&k@@oz`iS$`2zFPwP{9e~)V` zY=@GE_!jj{9tIzo2G4IoHevCtdwJ#t=sQ4<^O(%1lXf(yU2AAKZdON`sry`S9Q4UhhwQS_(i z?RmxDK!4esGi(giQ^!Kxp;SG!`jmj-z$y!9-1i(r)SJJ@YG9CM97eg;aHP{-3LAK@ z){V4*cWQ0+015!R_%jaxhK#8p?OVG2;>o>?4cm<-=Oklk^_?%i!^5~?_mwT4$OCCU zH}q;!_gm_}!URIeTcI1R=mM`IhzCf!KXkBz#;4av-!AuE)^&q0lGay%%5428IZebKL;S>GM{^t$@R%&A%j!hKng;RE5lc zQi8{P47e;@YLCS?z|HWcUFdMr-mu+cQ=uJlB6-bQxK-ezSTi;`(Ln$SynrAvhRnZ* z&Hc{gjnE^TpGEn(H6eEg9m$Vf?vEr)T%M%6Km7QC&7%qtR60(?ng%P=#k~ET0|ni) zx?zdSGvZ}Q@nK7R0q7mMR~KT_T!d6yNmcBD%Ek=2D&Ja?3kOAJG9Oo8y4oOpM=L(Y zd$z-S@*>`|9o}W{H{g(P z#(c1YQ*iK;{6w(zd8YxPB#mM&!N)&SE}cBt9L`g2waZ@cIbO)x{hV+lr_Hxsn6O+Qg_2?UQzWeb(XIe z@T;?YgY@?`)27DG@-J@XsJRzHnq>j&;RSLLpLw7Y7uYbV|K4ZtjF05hJm#}8Z*!%5 z6W8W1-8M;cE1i%2hs`d}td^Fp^uyNyYx~?kiF~gq&IRwq zSiFE7=4^}%JKz@A_{@R2Pk{l6rP?!o;qT6}=k)rw;r`K1@ET!$$EPy)dj2DSPh}T7 z>t(5*SNc7mK(*Xsw2|z68OyCj%hvXw&5^u+Y|^XRWphiKQ}(wViTN?k<9L;}HrZEKPS$8iB(Y&hq%oHH z-#>>`13q8(gxG?7h`7K;6GD#E;jP$LX8aNx+P=Lc{tZ#1J5Xl5(G>0E{p#ZVO7(uF zd%yhr<@?JzW6c`$-D>!TtPeG9?^TlCjD>Bk*xMPNUU7;zJfHqkLrZK-O7 zl+Ld6EG@qY3&q}0<}|-aFYvTyZl?)QsjIjge$L)b8EZf=yM#+(t9PC|c=0YJmHlW3|IIr80u2n_l2zcC6(ky$7V5Wc=JPKtc> z;SM^A>jN>O?4z@9&Rjwo2IpFSFB!p_>E!?GDEg#zd4r-4@cs=Y{V4vXgH{3KB-C(j zZB;CljKR5D-v}G9Q;yyDvn1yz4ij)^e};WIAff!@jXm3prUMs8J_eO6SM-;R^oNhi zej3SJ)J&kBKz_xhk;Q;NrD3zkkMMPK4Rr+4?Q?K&3EM$G_B#?S3ptDNOay~0PS93I zf22f0e)2f}Tf^N^^K`{YXy3YTp7iL-J9Bja1ypNn3&U8b-xuk7LV_o&V!0}f1(y5% z2Ov8g^$nLP35$y&+7gV92$!KK{)0tc=}7pS)@|qyqdcu5x>b$h@%eZY$$NS|;Xz{& z0ol?kY~RZtvdgb``mdF(fU|E#OBBks$o0|8?Yx@f%fjZB<&nHArJ1f_b7Tp{gz+WP zz&lR;I8Okg^$kkB0gX7lkLfs?X}WA%h90k8d- zFjlWOna@xbY0G@JwX|nGq+IB>iZFksV$6Y#D{M)0Vc2?nEm{d%5(_802(~LeG2cfB zwbE==_H;$7YW5z-(O8$fw2J497&}`$gX~NmYmGa$-^98~lqBsrY{Tk{WDaw+Vxrl( zXw`l+pv$y2vKRru@dwtr_qf2Ku?pCXJ-{^Kojg-XM7$x>uD5 zuJW@OpEys-xXI`rn%e>YwbM=+b^*`-eVPzu5U-rhX=;5b7DokUeELE!UGQ)62iqHekr-*s zPPN|8YkiTvf|+lT`2*mtrYU9n5G4QT^Tqpc_x|@fB02EIbq;oue@LxZ@{gNW5Zm7< zT@%dcjL#iYF4u=eImEsu+W>PHL|!YwQYJO<<282_!H*wdNG-#Z328x=if1WxwfQj&@2dgv@1rmPcCH zcRp1r4Yh=DsaVrCL&}9~xqfgv#J4e2hLn|!^lMXVT?kK@LaTS7H9EBrh>qa4eq#$5 zK+x+lxfH-Gln(`b2nM0sV2i=|4wjQO!XKx1)~P!#5YkkZ89I6xk);$@ptoI*ztv0U z^QLl!VcqVh<_LD+AlxdTrs0uwoDs=uSR-Q$o5SP_72|TT?eS>%P!n+qBItPk>cOLv z5V$`43I@K&$!rwcraanV7D27>9JA{m)M5*Qq|LLjkF zG2-ef;6>Mflpm{3qZee#>$u?Q9eA3v4*rj;HJXgfrbIP7Ta2D-oCp5OCHR2B7f+y7 z#%-vq&xmgzxe%zOX2Ar!^CSN+A|U#dnwO(b6t(g*oN>SU5|hxlVcyk<;;?_b&dwkO z%6`h!3=hh@)T&=2U1HT0X~MnQpe%x{1TUourrno>3*`IVWJ|p&FcF|cB`-jLYV<(Y zy&!drEl9_sT2aeoRLF8&^)>m+KqrCr{(4N@dR=@^`}Lxtusj4N;|)yrMpYuDMCh`I zfE^&y+6*~GmttK3kG=)`fdKrJXXj!cfBiG`3hGl7%Sb>mJ24mrv+^Oe{P{UJLkE+h zc`*6<7Q?DnirJ^;o6XT_a(-r=rSmvV>%RH8;EOHOQ53er=;bJovrgGpN_iZ5sxz18 zip&dn8Y%!;Iln&^t&0Ae`)38-yIc=U8!f+9PZ+}&92dAS{y_@3oSY4b)~2Dfp)_(J zRl>kf^AyJ-l+ouYq3Mf-Ci_6m+jGERu zOyPE<(%!d}zgjSM9hLwEF|>{cUgcv%h~-Q|BR73S9m*R-b}V!miLQ~aVc<5X?gvwX zoa%hSQ-Qk~!ikM5c44Wxcs|Pl6HrV=S>QM7Ehd3P^8QFxMRcv8W_mHn9#U7$8lita zbnNA--3Dm~K$-&cxJoD(!Uw?UY#g$fOlxpz>t@lv5i|}Kv(783St?lQ>wKch;wm=ibuDaW6xQMgKWV2wq#l(R599tWJ zQ~A%-{RL|pSqX0!diVJ3rLY3S=Q$PI!I5EWOnTUwm;rB))Ua8U9!4xeB=49;Vg1O` zgU`f=Z37x#S}&YFzz&@3P!ZY90=p`o0m_iU!RcQwY;+zPN2sEN9nZjT?l}lMM&W2f z^l$js4MJpL-}BiIA(sTq>^(0>7~_h{sPMO2@k~N!SI+Dawt8&EtD`Ib)zTRb0$`;L z(d*?s;vgGm=Cf|T#06gj5#@I$atk}{30xpMUZmrKgLw0qdgG`!*SK-PEjQ*gBF%E$ z79_`uzK%Z0&pQaW&2kb;1bTf$l3kX`v`0m9;s+T zLfO@RhR|V#Eq^$3UVJn6pqW(F%tKx?fBJ!DqF0lxiyU9}TQUL2@!*fqf&c!&^Aq*U zyFC5!cnUd45kTf`A~gW7&@amsri54sa3$iO$}_^&>;)(iw(ePo3xJ4#OBL`XH4ssb z$CRkU_~4@b1TYZU*LtSrSMN`*jH2>dRk@Lu!0hd~ROZqMc#^PY+`1O}Fj)0MR7d0k zxpRlTz++Q5#IrXEL9P5;=_eoAu4w91h5tD>#nIH`vlUInkG7+>Dd%oSeQ3Y^R9wp% zwyt(Ls~8DC$F~L%eD1UNVB8_=1W3AIw@^a!b9lCd970lKO&Z5cZu$=F9EtNL{#FAyeT$V77N|AcheUf$AucNZ<#Dt*GzU8V z)(Y&lNW(z1fjc;z*HFJOaD7JQco&d`)=ccCn^;a1Ty+}@t-m&)1>_)+@ZpUu-SM*v z6xc9%Q~ro1QGE~5X*7E9)qV|6#+Kn;KRCv?OSA=VI>H?=ws64l*~I`b?9Qve*N(6J zJQ~JrL&zSR2{ya`SYKpaXAV29@&t;Zy-IOW@)sC`Z#LyG!e%ew2VA7&D(WO$2ZN$c zQC=ql&Kfo_DSyck0+Dq?b2j4RaL)AcEUVyx*mFqa>vMKP%EQMuRElQiPdx5g)t~^+ zys`+kw&F zGpkXQa8YZI^TMaUKj`@f!EQ|bDPf?>!5!bD5FlkEUbb#_K}6IcsJGy$G%45Rne*lP zN@g{#MCC?Y<@`FZRJE=8o{#WDPrIA(DnU z);7ft#m-}=ZT?*xKfJf5JwG%edtq~%A2*8CL4I67YedaBAMOmyz~fA=|5l7Y-3kGZ z_5}y2Awg1&42*3%YIhAs`B%?sM4#wrl-~s+5@oNzv(@?iy&PU0&Kc@A=pRdE&dZrL z?7?@{oR7x~$cSe}2LiOIO6&4Sb^AGo?MuYR=twvk_013;Bg8Ty_s5$v#K&k&>solV z_$Yry-y?r8cR6ETp`5ebxe-^u`r2z@#IyUQ-2zX7dDFd5GreUK22`;{REAykeVA`K zu*l95a`R%t<{#|jkh>+JLYT*a6=-z*!xv)U?~{XJ<7j$`np4t)u-I6VH(-1{8-x)S z%P8O{rHG<;&#@aR@RIHvGz z^Nae)Mx~$J(*<*`+1V&le_m}i5ME@{vC^xn`fF7ZB^Mk`xw|Db_-eU3OtU=Ky*$iK*$l{?=)PrMY@unv-i9w#*V!1*uml9*iE_9;M*-}yx zg*Kolo;R`vJU5o`2lqNYm;I}cZl8Pru0nIZV|dKAipkuZ6&De`Vz09X;7k+f*B6&c z#Hehc(+fTm;taefmhE#s8dZDLX;&fJCmbP^No`p?#Z#;wCGWGBpYm(Sss+(_bW5 zp)yfsMhG^!P?<#5XTq>G7+uDyO@az< z3KC*tYq19W!6(Y`1#(Gyh8Gioxu%gF$@~0|ngNzeu7N7QvvmQN4cRQL+hEnm$3BYO zAEpsR9Z>yJuRN3c*j2gCGb|4%VQ2;DHB?k;8dxd(UKAQ#Z;V!tO|EmPDd~)Ti45e`+fnY6-U(|v!hytfQgUQ+bx?&N@_5d(w(kn>1P-!{cZjAHKhyJj- zQ*3Fgr)4EobfpB)(sT9TEC_I&oZD|Ez38Q= z!4{ayS=(vb_Q%P-_fJuBpfJpuRfOKk>SgoMKEwuffbbYMXkv>fn1lE}9ZKMAJuH%! z{sLF_Si&pl&DJc)VAf-OfQYOCdf>HF_jHWu#P=8*yYtaR8Tf&%82IM(YT(*zc;tq- zfxlbXe&BJ9M zEEHJAOC_A(A=k4hFsEyIPJn{~6~O!&ASm4r`R9x!D2WMj&XHB+D+}%Gkp+b{!01u; zT7>Dr(>=)Bj1VG0PeE43v+rPP#ydfOP>b%Yc(Y9#NR^83cdSt3TQT!QxTs$^3V#NT zE)DFd_@sU5&L|xYygRcWOCojIpiwONd7Fad`(TQ~*{}&gABlRf=5LsJ5>?70xf_qb zfSM|t4r+q$LMy8)As}GpiRfnpEAnecdn=-C>i|ks)IwAXd|+WiUBs=CThhFT2NZPF zTNcGQrUGAb0Z&7%1K@+$QD0<;$oTL`{jdw79*#;itP5d7w^%Z4-LF>c9be=a6f3lP zc8C6;I}-UeRrb*qrCnlAZ*oTVrYz>GyB*4p!4$vF?% zOpL&#SruJm_|!>$<8(zs?%=tlWBABiRl6>}b`Z4z?a8^Q9Zaab_Jkj=U5?ryqRC~b zU7k?;?jNa*52#5leo&x-?aOirSoKLrwxy?c5@cCS1on@CXfCn~+mKocJ)786F7qvt zd@H&4lla{F7o(FUxJM@o+|P@rMlu2x-=fJzCg9lQ+=%vMJza)m@Z&2R zoK5r`<4&>9S&N?yWMZg5PG3Ajb9zxKMEl2c`Z)c;Y9${xay=j)%ksPW16Mylhq5_Z zCr8m(yT4lVq?WaiYfSCk0$%NugTKPAyY+De0l^^RpVo=nDaTvT4ox$)fP4}A$2mpX zu#RTq^Vy7bo1ab2liv?D%0*JkQ8S@C`Yk&uXGeCwQFAB|xaS?nZF)HRFy@4C4vWE; z_TQ(qXwIHHlHV4K+Cd%4sBo&g4i%6I6#L25*lcbnrq|C|RGn%u9!e^tg%830<}54Z z6jWWPgP|9uf|v?=CWxVK7&_$Kqo_lM@d>JYDz2T=!m(QD2x{T0OVANG#x!igI>&=J z5`Bz~(itb6sKX!pL8=KO^WJ(~B6(Av)B^YLD$!ztXNwlQ)1yQf(PD=!ak+$#s=(eJ zFmMRR(*yN8)@IMXlpWN@9grdNU~uYOUE3*aKTLWETTjVqGFMGDT>{Lvp~}V~2_ttp zbyGsIbSYZr2~~!5w~XCd%CRFHt5GiZ>0ud$J1nP*i~tdGL~%nO)>QZCoF3Lc*m+&o zSm%H*w(zF}t3zP*M#!2DN3F?O$oK;Vf4@m54N7|TBpHYj-i8e?^59xE=Pb9q`vE|Z(Dd>F zkbhSJvjOjFv`5rtyDB)*Rew*0z%s228Ut)BqpNV#%N6)Pz|GUJ78$&dQ9#LobVLZM z+k-DN7Q&O|k;h4XIDC8|Z7$EO=GDB?5BtaOT+ESJqmiI@`83?xhln}vcmpvXDns*; zJfD<@3a6$7_boo7rinjr$aH?oDjm_bre{-D7_4Ohd&l=ZCb<3$k31qoJ?Jh))M|9? ziMryKSWxI~;$qc=f&GAzkVsQZ2?A)RtO@EnOTQjT+z{7=EBLOhl7?@9bg^1R7_)Q1 ze^ZP84D*f?BdFkdxoTHV?qmW5DvXn@f?3=Sv>ZN@AJU#T`|GI*jiC{)DM3A&|TVXx5 zdYvbie%ZVr*(8!VLNT!6F^z3-rAA8ID!mPZwadA4 zV2fzx18YP&SC%^Gla7QD!hF-&vs@{b)O(%j5+sRFm`1zObx&LEWvVr+wxbyu1?I0n z$jU_cXS4r>(zfe9e_L*C*GS%pGUOb?0@h(SjI2)OxV^oF@_n3r`c`o-zB#GoRKqR? zEq#S9{_-rcHf}lX10Y=6E=FazU;KggZd5L^qk1@mHJ8x`WRG^xF)NKNItzz`-Nv6?ero>19qvlNxdWU2Ddr7$?wa*moHROYMe z%^lND`2`^qXjBlIj}oh~(4=z*zp1e-HH&)l3I*lYPm@uC(JY1-Uq2*sIEe_{N}0By zglR+_cqgjiZ2^xwY9M&zDR}BEdJ1*p_8Sl&Puw8Va_8aS(zj%6=J4wMA5}m@l=ciX z8H91l{OiCvANearw}vTT0Arre>Gh9qpIwWYqD6s{yLoZcaPr7CtY2lob<9tkl2IZ0 zY$l-OdkAe|c1xrjql3f^Py0{~C^-=-Vyo9xxZvANelDrhHopPWrPxz1^>998Y&Uig z?3s+t;TV{_gCV|5u;!^t%qu|~BS9N~e#GU(e(Js9BnqCIKUeWoHR|>Y?eSC@gq?C5 zlDRqI2V|iu#nP!2Ivp(ZX~ooV4Z&Cvd1^d`bVxPAPCaSOB^RbGzZ@V{pN`byNuELf z(Pa-3rcCXvP062$lYzK`FJ+&lN4dzR-s`+3fD2oCrK_VTZuV|UfN_+^CPXquJEC`iM+ z2Z+_eEsj$TG$XXa*!Goi0vxFajJj{I#Zlj3i=)0vcJ5N0I}h*N|9;=tyh%{SJ?ed< z?n`W-?K#viCvl78c0o78EJnn_QA8|UOwkrf+0aauHh2Xu*<0L!lSSffGwKeHFzUX_ zF%ofmsH1yjPu7L7!ATvA?APu=7;bb#?GJ{%TtL)PO9*@Mj2K%6unBaQ;uSV1QWK#& zQg2WkavC-$UfRT{ORXP(tnz{V>o=+Rw{?WCtlV&a;w`@;CdpQpa;Ye?Kasz!eGie{ zlKU;Vj=Vtgf14@Vz0OBj#h-^sH{*&qzNlz?vGN~A-KNVo23*`r~;epv{q2UoU~R7 z|B>73hPHBBov{>vWPW7HZnaJVz2CMj5b%A%<1p;7bUVA%{znLTXh+Cy)s@@`*{wMK z8sxV+B8%u-XuNer@LG)+ZwkJT-9{?siuvVg#k{rru2=FqNS<7=Px0>OwI-#nzzt%S zPHsg$1lL?99N=Xg`1C&I!Cq4>zhtSyA1dF%V%YCdKt6yPmazt4*9^sdP1n6eV6a2i zU@pWL1SJ-)uyjuSn1Vf!^W(!Dv@AcVuZ=V;KVhwu@Zl2~e}tzB7bBt@t;CgZYSZ;x zKIi{Ing6--IsYUP#loZrP?Qx|*G<;>3*1##LE=!*C=f8fCEnD44Ynd7&IbDbn+R+vMWzg;6(%8v2X`!pZm(2)P^w|dI;K21dEOBa;^R&hT`t!)GBg-dNq zr)>kwC4F;RRdcRWiB>zUk}hOlfFck{6wp;##Q~^e0fs*)h&`Yn{s?>B$`;%_)b0v5 zlPu1`a539)c9&pO#O@-X+cf%84ndIXnXv6He%s3Kg6+pnBNYe7<_|q8bB9w3)*-Da z<5;W?NU_KL$uP%d`_Uq&Q7W*%M z`r{qiB#G%B-A~m2cirUhFN8M7GB5mM{H+1*r&!o2P{zT+R0;*;5FtB)2_jc8AgpZy z>`?EO+ex!9ixM|sG|MHPh5c4jsnihs!wv#6_`q&l0yzZ_*;HDO-}I5l&Qz#a z(*OI=f77+(TClo_|01i?yC%TERDT}iXW&;-Y3M~(3X8^rob_OUM;>J5*fih-i98!3 zKz>&%A3eB5O51t3TyG+Um-WnIG!wF81jS({O_;8QWpJ4J=0JD=EkM86l@5>~T^s@h zjhfu@wRNa2q4aE$R$k~&&j1#Ap~vVzg!}LuqKtqN30&}*6FC$8Ou{vH%>N95%I7Cx z{JG`-O)ULNMFqA&1g%^&OZt*qFa*=OHk*KmIElQrS+?a5FnT(!P_V2a05Fi{xPr|2 zlc)R=E{KIBz4?PrrI+KX(j5(KL5@xyMu^#gTw;8vNs}`#l!Pg|qKq!)1(JD&|_x38>}*v=;)kTdrF;nRR7?Bt z*UIlHTuH-%wEkfTz3P(B=#q4PQ%}H90bTtAgNL!IOA`JN)P?YA!Acqjfr9{Gyz^t+ z3B-DMi&UD1tKsijP>$ljM%9zY(^I7ck~Hd)9$Y!-M%HSs(CJ~l2~mUp^MiWurq0_W z`)m5#iVtX+jbOi`183Pmtgn>eF+fnmii0?^A~?O}YSwy9decFuWr+9`#v|c7d#3HTTzLHS~hbb9_$B(Nram-3oV#}P)Iifba0sC6C z{AhO0ulc=lVTl?Wd_KKgCS70E(nT6)k%{Xaf7P>44wZ9j8P!ApvxcA9OB&TAc`kZn z@=Mco-WYJ`PK(IAAcOT|fRYtkC*~1;@NtY_Rc6Yse!vcxHX=EIpD0fLgmgY=trD?1 zI9LI#6i6$xJ;YVzJazUrTogr|QY;u1dmLA`qf=J*Y{g0u8t$t7Y(V!HYmflMT{vCo z9_tO+W_hnyaX~uCAZHXa zD{}}QlM&Unis~rI)|o-F@Ja$Z3@M{07&F5coN)OTzrFlzrp)6M1UtYUf zPITftR25FB$CFR%#3Ae(a(v(d=lm9KDg^2a>N-y&oW7Y*(9@^V0IkU)<>(S19#tZ) zhBj)nVd0T+DKt^An1LDv1V0H2`8EQJ+rNv2MQSW8zDsEj77zdBxM3maIvs$r`rj3U zu~C@%rl?p-jJ1!c@%Z_O{z~vOqIAd3#N%r732;g9F=i$*hp3rQZ*<9c$hT}Vvfp=` zf53DjzT%Fe?9HVO*830A@&Ml`!sFq4N|2K8NJl2()YBpxyS81*@w&cR0S5FcBMuSC zm7|Da_!m);Ok4An<0iV})sfuw!p|tMh<9yxUFV#oy{-ZuYuE$IVj~K%5?VnutC+BXdkQA-Gwf?<&2qW?gBl<9KY#h7-k0ZmFWo2EP`=K)Smt%fa?I=P ze^K+=pB0!X@Ai$F*V%r~t6hiREJ#EG;`C(Ni5*4{+&Ah3gfi^FE@SKva<8n@8-$R5 zVS*So(AcbPSJ}GTIguSLMAd;?H$)~p?vC*(&B{6O2?vVgkL(>tUhl4,!a;alzzK?I>}1p+$A34EdP9?Xh$ z9abOg{0VFCC0)``39Lul#QR3mhxF|S_9CexmyQz;3yWIK-YDOw#BVbQ52#s8M#9#N zP&N#?WGMdhhUN@TqWYe4DKF?pA+0_ynl_)qG+0k@8WJ+)GeIOWG}()Us8b2k;{sBF z-%R=U(M*JBtS2(eFoLfUv{GoS@0|o>)ftcf}#CSgM$ngyR0vBOEt=mPRT2-j-7=(76);|u2fDF)}yI5i6A z@AWC1SE;A0RCJ`_h3MMf(D}FI{P$z*Uqdvo>!gcd;K`iAz`No1H1L2QIGQT0sP3C& zZ#4|^3skS||4T0rkUnm9yY5Pnqlt5qF6n{;`Xm1T67DSRbNXu0j{D0XIZ`)eEuagK^*b z1jkJdiFyqzZhG(^ZnAgp(e^UZ+G5)f)7m1p#s}c9)8_ z*R&IrjK~e_=`hYrLQSMHq%`khT~hGlqdXPc zet{v61SzBceg3HM3jtlEsl6)ygwPZ|FbDS;I}V_&B~{rUgMu(*Mvy7eb6%{1+)uFn zI`1VXQg&(VC@mrd*sV z5*vqUXEpBGzCp~4a@2_6+h368fe*GH4LlD^^&#v)G)JXpShF%!j=~!DD^QEKEX_z` zorM$`@c%7Ebr7EL2W#5J{7es{V&gJ=4T%~9Bx}gz)-d{1$*3s!+)tYMDfsB%01YRg zL7($L_UY_1(EqkamDEp z^49Y>ETU_~a&GlY>6gnnwSkT0v?0N(`3JG3%h*fpi5>n~X$m#Nf!mSp3unDUcPhv0 zgrbT=IPeZwOUaC=#^+B``-{Ege1*i(VnqAT9sX%4SQ^;$cRV0>5x1;?s>>jk$}wR3 zxxgptx#UdpQyO4J=?+ZhoiMYwdus5got+1uaZ{4Lw4Rh|I0aa6y=ELlUx>)nFUK z{7bRfqvtrfT1$HQLyyt!^@skHfJ;%0&Ifo_&mFVyuwO4+kWMH3QZiWHcFZ5LlDR7r z@C%v14yVoSg}`_gdy8bk!c>w!D-&T#7KyW3Yn|(+pd?DFbyteBAj{KG^^%L27sn?ny5ac7E z1XPU0D%A;;WGXbY=bQE<6rjdPw9JHBf4PKLIeXIz|hgSns*cxfN-nkMA`h~NhOwc3J2Od%a$IC)! zrJO(k!{o%l?CHRyo#0Dz`Aje)be|Q zM$WG*?M(6+)i8=`#_L$fARAuJhATFbQlJIJKaqg0;EopTk3LeaU0eA{l=8#(ly+W& zj}jVO!}q$Etmpn_b~-of@(%8*18|#zt}i1=kK)|S5Cvfd3dl{deN%4V)Yv!6aAS`a z=OcQs1eyWO7G9?%>M%Dzi=T6esZ5vMjca^a*31RSYF(BMuwI!*e7jV>q5l9s*eI{h z;EJtTh(25=jlGORnTg)d%ahcAAWhww$5q2$^# zd@$_yT@2WZ#4pa!@r&uhX_~0jGC3|Rl6rLK_p|Y;*N3<;ti2pv;UO;`Y&aloOGm&3 zRS+WfD2V-t#dYc6HaV~ynSK`HGpNvDtc~!Yoy}j7ptF%)_|WROT^l3w=#k~4&w0y$ zr5Wrpxi|Y7$Z4LXy=V5xcBu`i60oCwTfdtLzF_t{i6aWuwSi24S}_~SVne2D>u8u7 z8xi%%XBm8^aj2*wyJJWC3KP~+Q8wI{!F;&}gpS2Z47k`Zdm@44BrL{jHOO?$?@ziH zhvW7dlD^)c36aJPYs7c=M3~jxY;P1cP zKVU14RK&iD%YWpY)?(Bk@!{#9@v(ViQGM_=2>+V&QKN$&!RgVEJi5AXYEg|(cvd6I zkFLHxH4zmfE8TWoaW1?Vd5POl>*0ou{@{mF6RA_cMXRRnXmW1#KvfA(2k@EWU_Nbu z`LtzpbuJhmd?JoR#AhZ!PtixyV$|U93Dyze`ZoNUMf-^3ADGi#zX#qlGO7P9*M`4-$nzGwLjrKT_FpB~ih+?Enr2uXK8mQEX`PHF;X!@-K!xPpT(&S=!rvd_k zN8OZ9))5oFIJh%{ZLqmEaMg5;djdl_OAjSe4W*B%yb5N&^V=H=dXma78y-?X7@)qa zzRLdcKvp|IScP$ta;$m~5+PD&ZNi=Nc(wER@1!&+={Mer*JM#F`zXr_z2Ju#^`RR7 zJm>2>aOZ1zH7~oteScz8OUqcSU(CdI(ho|*qk`MR7voW!VHHuztanEf|80GY+yV1p z>to?L?It-_`uUgaYhYgnwFwAA{;_TT(7hS(3zT$2s-g}?%T^#K(&vS8rtBvZ9DD^X zjzfx{1vX|t;fDH$EI3e3J0VUa!)U>Nm_tU>Cq`Y%h`^UP)1)ult5;&30*U16sbNDf z8tgN^f)9^2$`)(nln3qDH*iwOLf9TX*F*l)bL0xIlhl z*VQN}o)7jz7a2WwiF9?;`GWHA_zEl{| z@b~n-82V42`=a%G`2--4Pk?#ra0DJiX`C<-& zogjE%gTellZ5B>g1UVJV4qd0~_YKnGALJ6>qN`lJt!V45vqK@KM$@(Uw~)a%hLj8z zt=CLB>C&h*fm;Sr@ov>tPt{hhw%Q80e)vlI*(8^^Z%tPk+x+gnm^ObuII7L2%r@Ix zrfU6T8@0mBO3qc84mu6ro9kYJIaTN}I%^yZtudfzk?-PDr|PMk=YHHljqC!}T8Cw` zIyi2yoO%dQhgmk2{*^LvZLY4eNq636*_Ij{I#PE^BhyWML2o9Z*nwJzjd<+!)aHS3!O zI_9XQL$UQ?)0U_|QCIx+h*M6g&tjo3iDLNgAweR&QFWgIw8(3p_2<_e>b7z z#5e$ovhjPH_2f-<{CZ^-`(@`ZTz#?h(%Im1MGb7ND>f)wDcus&<)zy(h*3(NT>q8wYvQpoC4CpbUk@tYorp@r8RO7u>^gy!+u_STig6W zvEG{SN%SeV%^ytH%MXIGe#c-vm=!wfPsLMFl=Z{~t$`qY9=O%Yb-FzFTByk2aX`8~ z7W>cZUOcR6OIwS0A%(vUC2MX+@l}quf!a`T*L7%jNvS&4V3XmR-k@&e$)z-{uCNAv=Dn8R`htQdpjcu z7r;B)mT#TUsDBpXz4EViqg<=l=MgM^UODEVf2PUr720d3d?gXTjjegv{+o4L;Oh`P z@PRCRFTAH#uQVgBUA2#$!!rsyteg%89z?82)n`_;18;qSjUAx=c5s_Q(bymR0N~%dO2NMmO2DkG zU#+sQnkk<1fPBzjYWV`H-WFaVdNbJ~M7LM2+Vupbhr^^OCm}o18s!S*w{~-(T(SIq zUdC3gl4d8A+#KCWN4=}@XFrv`8|}^?2XuMhesuTd${2Ea?e~gY%#=IMZL7Pn-3h;p zy6l$n%)8UE0*pif>MTt=SF}I-@a$4%PRjQOEkE_nZ7TG|9Q?H#>i`+$)Uz}?Ku%HP5tTert*tozXz>#CJHRw#@@^6oBJuV7-4+6H6~TCBJ9t4$|F zq}@_n9iV6+hx>x@Xv;UC))-KSG}*qU9lp9|c%f?jW)k+nB7Ou_cE?y?qPeR+!N=kM z;145z+*AHjplt^ZyvWw|-!}o9UXUDo^f(fW82pi}*+-pT(H{@J_&@0V6MAUNJ0? z6P8}C$Qevwn{U-zqC^P<0Kb6H_fWlnUC1vmrYwR4aN!py!t)2i^V-k-K>n=!E9*Ex zfqeyJmT=?p4;PL@S0~rh7y%@5sJdH9lx5;}p3EjTu+5Qei`{;O}_$zB{4U1v|br#c^Psm z0yCsB@G#7ek)7|EpNBTz38Kvx7_1c$^(Q`R^R9oL72Rf$w27^_W0S*w;uHopCtC*) zC=vcGf1!S0`YDjA9&9ng;pla<&*$`GLbfo2iaB@;Ceo^yM>ZuX*Dwh_5DJV6=_}?9 zW#MEJY7n<5cJ}TU@gr-cGI#{6$k)NCo`iUzoMOnwb4zB<9!NoX;UJGffvN}!Ok!2QNf3lA0AoS|>k+hkxYPXUod0Uh|2?tu z{|{&W(>WJv#ZXY-gR3Jba7qLP6#Y$OY=*`IX$!3i9^58)z-Ea8g=n^Z5t@B&ehdn9 zU23DiKhBJ6wlJ#MXv_;wQZ0g(vN)e*;gEwBBe6T2SdpKKh2PmDh!r5tdL~B?ZhZwy zeqaZKGcY~Y^g9)H7?PG* ziH`HZ4w-|Ob-oxv>2+(z+`Txw2X9o;VAWOjlh}*m!ey1UI3BSIu-2eV3(kGV9r@Wb znLw%FK{nDV(gmTCbko>T`j#rw%h^p*FHk=|PbRx*O zq%Xvb>AFBY`ht(H#iJTAFsvUgUm*nP-Rt= zE;&%dbk{80k!lPA#11j!;(&Ym({I0N5uWxTPO=3ftB;Bs5%G+p9?UTeMV@sG8fAr#m*kBZ#ke(Ey z7XRL3G2ph*+PNzDR}w%m_|0ht&QMZc2PFKl$Lxtf!b|@tNO%q|zU+7B49rE+m|hrg zPpqd8e(UR@*qYoGRjDLx|F zt;nzNuwxj<4t~9&##c=JYX6Yd~@QS&=l(H90h6N)*;4@e*cgB{jeMoAIR$N>klxQlUkQ<$>& zx~xbQn1>k*#NZpWkV&Y|h+@D5P+(&j)*%I5n>!&kv0X1Sdd=4Hq1PMAiJgN&v^jze~`@3YkR0TCffPnc)lW&*Nz>gXireuq9Q% zr4l5gq2(2^4D#Duk3f%I40$qpt&k~94dgtVPiYH9*-s)dk|kGMvi!6z8pp9foa03r zZw%Z(LeGhOgZVJ1Ttl5=fqd(TkKfp#*PJqtR*d5-0x|2vbAA$74Y9zA(!U22$$vus zrc+x+x>zqWs%1!00quTeVu!9yRS70<_9)9#p`t=rAER`D6*{@7KX{bFft6bIdW9au z1>=xVcFo32Fu#PhD*DM;&%h@Gx4t9aTr{EAoUWK}aHiDK#A?OrN4!ABv zKgeeAnd@!3ipYKRs+{$KmlUh1sE7C6-kws;SGKBj>`B>~{*#k3Cw5XC>0- z7X5k@UiVgC_f@Z5lcT;q3$OdB*Dm$??C95>Bw%2lo2&0_XjaWWf}=qip*zHz`R5wzC87&uDEY*9^kSG%ASC@T85 z6#p(H{4n4A1Miy5AwXD0`BhF3qs3w_+z_E8ZceWDxdLDgV*KxCri2aC6$6z?Fl8OR8iNmhw-%Jpd)h`pXna8(Q{=ysiJBl;bTNi;>)^KF0tQ?s5lRhiNFZNf|nMy#X5yqH@V>zwDe~s);vFS6N zzS6)xAd;;gP&3|w;Sh`JaV3fgayT4R8QT;+wesFZ8pTN|zpL?lg4y>Z@veb_iVraZ z3>YUfWQ8vjA+vmq+A8;?|jz-ze zwtacopSu?{;Wgdo*Z_FeXIUd~Pa`W9TQJSSYF~qvOJze@CkjT^SnfYCUFFTt7wqrg zo~`GIF}6a;+a;)%9Gt>~-638T_y*L|juSC30NH~#YS*x@Kb|X3HFDixW27y`a6r#) z;uxR>O@_xYzJVlA&U>d{FenjF-^0D~lJ4%6!xINKd8>yfV{Z@R8(zQHA{HuzM+5XP zV}Mk$|G}CjxAoRcbKLe?I#cRL;KtJPWC{h@{DIP!PTmjq!H8|^YXv_ondRKuX_qm1oOUe|&Fo1jRVokagET3zyDq%5gSw}6tdqbIaQ$>^_8%-El-WKP^d%@ju=R6QP`_T z01OoQ0qkLqW6-scogyTQ?z&?&o2OHK*^-MUv~a*i`c)>3U;u z#H?-s5%T=^Ly2=H6y+m8en|h;1L)B)(?PfYsIk`K@8L7lDAx+ zn8)`n8McEs*w29XSmBNSWcvZJ4*LA)L;jjBunrjMpG;y&wJyc@+%NGbW+pW}He$0< zf7Rz_>HXIVYo6C;q`DH@EcO9dRV~*QYLQ8EX*N|v6eO!As_kYWuneLk_6Kz#Rl@Ld zef`})^c#p}T{fLqrH}jtRuvoBZ_mYvNQWExQb{leuSZeX??AYJ7f~~e;3c4e z61G{w36kiW28WMXgVKq}C@$)3W(WW(Ye?a3y}pDmU;;R<{Al z0+Gael^CeSRbpxZvTBZUoMDA`z%v3U&+OUV##FOPQ27%Mco(`|#6WD~w#mvcO(~OJSr> zL^Lt7<&T1q2~YCUFA*1tf8nw1Af@8$uu#wonFy5U#IPs%xN4+iqftn?SS@aYHo57- zz32@o`HpYE>v_Q)zNTHix+Bo8B*h-TgpPrut?3g)#aOOh#G?}2ix%K74g{31K8k#W zMS{~M_zk7=5Tv|lqLluHl>Rhtz`GIYl-K{=yu>&1vcGaKQd>N|sFuDZL@DPD01Y+h zSmnI_@8uwHtAz-QUdL5TsHM-Y1~rj9p0P70;`s{8K7_78>D#Hs5>X z`n+Czho2q0S^i_7H4+rJZsCGeE2O3S$~rlRF-^@}qaQD~hj8?qlAlM0^OXqbOnC*F z|CRN*{dA9Ys{M4Y^){Yj?SNZcljP}o#Bbr5wGw|s-av!bU;w4E=M)MGp;qV-DrW^L zo+wF3u*0+(*<&lzOK~1pI=Uw9rzFZrO+Yz;6;N&&ztnaUaX@OqcdRK~0X*0KeY!!R z!xd0}QtRJE;4oWIN<4pshDm{ft=dlDjE#T%qLCJFqc!{&B*a@2tYoCLq4YtT3T33o zCSlo_M1C^tPHs&?E^;g#bJM81lHCzO4Cjh<^ZUvLWAKTW;waU+63^m#V%rCi_SXUA zD)3r|U=&igc}e&puOJqocA=Ve>E&u1zHpP5~HH2t5~r&a5$3M|S=vNALU3Pu}cJ)w}-7;3jar!VeGsT78)DGd}F} zD|}d|KlB{yLkzc!D(kzy#1{|Xi@3t8BWVeYWGNg6=coyuM)YQ6yO}b2B;6@~m`Y$; znVd?1n8E{4%FwJfWp^$MY1aqJc^JN z{f7G-L-;}jEB*8;@Cx8RP;Mp=2G|U&(cW0l1cxaa6}KU93&JFHR@_hGo@Q)2cUR4U z&7{`_02UAoPnAcBqKdl;I(D2r3f>tHN@lcQQu%L?EVJFZ@Vyr+zA(o|8ZtiF4ZBES zh@c9e**D9`-Z{IEL|=f|o(My%?zoD=8?VKk&5@!1Vje=#8E5vyB-N{~W3_j@*kDs= z3f>JI4^B1o6i>|$(`5idx@PI)vE=F^B-3UC&7$d%PG2ZySr1Zg@@SclYT z{h<|2sV`Wk;^n|18y%^CM5ze$4@czl{A`XCz|V+F|FOfG^OlnNGl-AC6a$2({Wd^5 z)nz+cbqDq}88LlnD>Oudkj2yB^*3oi`x zW#<`4C%$5;xY-0zf?%p5hK*F-fV&xKft))oY2Wdt;%f-XAR_7UO)+k8?oLkR8#HVm zOvM6))_Me$aFHYn$4_Ska!!gA^`fX())*lepn+MBNc;&sV{%e8*WH3fK_KTpgPblI zcw)#m2EQ?^>GF*YwBt6+XLeC4fQRfxh62=R$DJwh7xUsKJdS_UKCf2x`GF+NaK%3I zL)zzLhK8xH&~j2ahtSf+E&+F6CgqT;o6keD02JGA2l0*aBpw8A!56FY{BSc6mNj8_ z-keOkX_dUc%R^g+6o5dvaalb69iAlS!^UT%cH|REDa|w1+;YR6o*T-FuQjq$OM6t5 zCEqstrrS%ql$Uk8&0Sf+a%*nAc6P}Pvplm=!d9cNdS8c=(lq@Nk7GABY zbi1qmE+0*wdD9KIm3WF+?J4-+rrU0sU3y|sMOn8QH`-WL_P_>l0 z%Pw_?E_D-2l};DMdp9bzW}GLun)?YY@x{W%9C2v6t|`QRbY^EXO!dx*EiRt;RSVa( z^wuEeoY&y5*vMIdHK$yq^wR>B*XfNFYHkqP*4HpE!Er`&I$+nA;T|m}NHHjA?rtgv zOpfyAM5+cl%nf)L@w#bmh#y6*MfohH*(ALo_8N=UbwQ$K4zES6O+(1}Xx&pSRNfF( z6#o64v&17(ivctMYjsuT;JpA3{Cj<*E$3TXou(<{wCngph%*e?TPO`au5gkT*7<^j z3LsGo+6#n+eV>@%HYG+x`WRS`6%5rqu0L#x>fc39|AOz>TNZ|*pH``c8;x(6&Kx}H zftmU0T9DlD?hZ#sRgdb>l4o{Hl}JUJ3}t>MS=tOW^@snUj)77K9|H)ihzASkifoO7 z%rI`;w6-6*ac)PM+`2+l2$$WyW24BU57wnK~Y{x9J^obHjz9ULpq=U;?Fu2o> zJrK^ONDB5Xgidmt_8y4{LHt;f(qGW87)74yvyPuxb&L@FDE}vSA%edu9M*0c@K-|5 z#&oewVL8K=fj6Qa`el@UQ701PR)9KH;jY zNEHEag$`qHYope~(kdknFc*hzT3>v3Q2Dd6@X;Zl3qOL+8~MnqJ_2rnX%XSGtQYYS zQJ{dpDrC}+6ofp%--vxpSUtv8dU3$O6+;{W3)CL->@9PLwzrw77RUOL2`j1kKCuZh zRY*>INUfm^kTYGs`9M@?{~oB&o4?sD>*wlGHXp6PqZ;8ARyaX(1ktbh#06}}=~qhs z{WC!j*aw`PN%_b>RDGf6fUV5RP$oKj5*X%f1eJ#z2#Vdw{?M3YznpjqbDqcybqdO< z@Cksh*L;C3;(h&?11VsvjldNC3v1c|LY1`zHl-1SDyOEjPA^FIw!6*f^;51%-`Mgg zzQG;hgN`e{b)(Qww0~6%?Jf-ORL~H27}0%i1Z0O%1#dB!Lh|?w(z#bQd#D{o*J3t4 z$61yN|JII=A-P%QHp#8u5Bh-AKqc5_G&_T;HZwCMH}r_?F~Rzw2eU;TrkR9;cF>~i zFS*)jQtvQQ=V$8XG&w$hgH4W;W135n=1!2k3xAc##SWtyG!=e~zuMSglqvpTXNS>e z?{oPP{I}0o%0&8`*fWuDJ5*0eGUDgrlp8)KUxMlrx{%l>4j~zP%r2u_&mk1xzd|$w z_bF)q6~rhWSd9`2p*_2F8vWs2!TEy!0KwmBa1eaPfA#c3{)GD++kQ~^-R}GY_ocaGYX8zA^Z~hryaeVWSCM~~i&Yu72&iuzT zmn6-_&p(f3h0#t8wZt%^amN zE!L`%T@^9-mzTgdkoI?=2&4gPri>wb$HoAB3*}VlnyQZKd@q>|NJDIO=uAM(LmlQb z0&`cx0K>c-8Q|$RHK)o=K_owf9Edd~-B^v4Bxd<382~eb{vYP7o-fNwOis=7J=`z# zP>LDzqp@fi=@lZg1T}-m3z*?(elnvzL7xM_m(dvCnRDd^t?FDb9gIZSa3xNw+e?@W z%f0XikdM7SBssBn@WD$L7u9WoK3EL%Z#$2P?l^FJP388|BuJI9hN+~wVLiL@zb%!u zrQK|Z;q3rIO`vC94r+xcF_bumZTHys2U~)5cHzpcC6|GTrzMmOH=t1!0vKuu4N{F? zQT7-n-6zxW9mbEA(p4I@8ottT2(6z`ADaQs-uEnpn#*uy%}U*rJ{3B(msu{U9q_M2 zvP`k$VGu3jw>&AK1-oLn4lxevZ&)oDqbzK5@VECvA9^;I1h-C=4o-w?XUG{g@5qq- zZ;(h>AN@efA4EckhaA~-P_=oR68Uxavr48$7zP5nimuX2Trb2<6=hyS{NG?N_zriQapyc<<2+uD zJEfz<*)!Iq&6=VqSs)F#OaV;vP`)2qe_?)yWOP`$hz`0qhx^LVCAx?hszDc#TxmSw zx6IixcG+B~h%YutgUDleNo$I*4}T%bK`GaF9g}FgEaM}0RW|F!&wBOq2DS`X3oEb< znH+F{wRzy$4__7|B=X8^A@M|*O0-69$1qhrg( z54spMFmmv%Zvwi{XxI zH1_^?91v`WHwMHHl-eNvMij{ItW*N2tWNDC<;LKf&QKgopk@1^oueI;o+ z$bVP}=IGSVX#=fLWkVCd-}Pc-U=uj{I(_69VmxS?HClfWJsEKTsJ@xi2D?R;fD+K2 z<6(qMM`$=?F|yrc%WeE0`?c0O%o@y?v)a`i)BO2OME! z4!yO+7Pvv6e9M-ri0YkTtKONdRBw+~__vpwA*%OwvK!I4$z&XzyCnTICe69EsN(MQ z(~>%tqE~dTpj9-@R;#v`b{hBtbZum##R4v0np1(8H013hbcx(~geM+J?1x;VB|Q;8 z27P}Fn_77?%%OgGO4U9Y8=sPBKUCs)feJ8)^1CtA(m8R1rT_AOINYqRghD2c4OljSgug|aQNrqv%P8$xI-Z_Lc zZA-`pxvpjeRtp^9pIc}))({RneH3Qcy zT(cUmsEGxhZD?u5FtjxBakix6Ixy67REe!|C7s-<3GVJ43^PAue!zJUK#a6?XwdKs3$^@!pE(ZLY|3?3q zmI7?1fQGA`=GsFYq8y)MO%iSIz+$9qOjjqy(0--DVe53<0I4htBe21Pz6UytNLa0a z@wRpHxoWefm*`fE=Cari@L!45*uhWPlG;V-6?Zn6GzwmWZS7lM@#uFNQ53^=mgAy_ zNBi~@9HXJ&5N8RaS8wtt&1VJ!qMNa%~|3>y2#lpnWRgdVBfpuu+uwhak@z29pczEGP&0>SsY)%c%1RfVMa5(jQWyNM zLHR>9Bq)a26bx)>xJu_R$7(TPEIp~%$c}9wUM$58a>E*&UYrI5^wg>2@Qy3F3U@K* z(hAV9SQhQn7P{;Y+~yO~FMP~65UC9Z9Ko7ehUdBN)Lam)S|jEUP_EkO#UCKwO0mlM z12n9)U+e@n)jF@5pfL+RW)2qZ|1sd7ILXVdIe#{QOXbt(SS+OM_-{YP z6X+@|NRLO*)$A#H;4afhFq2w-5h0k*&yFIPGMiv#u=zsJA_<1TE2@bjnW#PX zfg>I!9l}Z^y_4bDD31Joz1y8RBhZ}at~yoE4`@^G)oH%za?*sNy{3PUS7MopUA z5|PRQ88T;?_dp%Ulde^SGe3MU}l$({-g^PWbVIXH|rxXl+l zEG*0qkuYpE`4|18P$vGc9y-nlZpbVI0`BG*6j^NYNV;(aIbsy~5As27K~>;txdfx# z2T=!ix>w$vJ|Z5w+XtR`MSKe+X=PCiFq*&k&$U+hgEN`w&vW zh}5Y^G$78?)3Qi_R~0JK3uGR0Hj&@)OWM z>2>^*qE=Mw^O6X_VzYQP^%Xc;E6>&0SzK4xf#2el1pzE%36Q??Lix&pH=hGrRBjNXuB8G}~yL@QZ5y zC7_sWPY8ZTyq3XLY~)zgF^jcq9rbLH>%EOKe^KAhb-s6U{n%Z!mr0bKX`Lhe?TP4V z9RuXliXDm$Y~t&`T_U0BHql?<>sY|9kiJD#5Hr4uobTHhoKzGGr}*|CL1<(<@F9aL zCs?%0)o~yJ3CK;XUVDgdwtk`&A+SAR_E;=np>RzbTP=ux&EN^zKc0d%aD*}82mCAN z75FDtbRijX#E)yH$deW68FF2h?!i^Cp+-JHb8-b9M&sX0C#dmB$z)wpv}Isy)I2|+ z%MEN%8Dknwrdmi<460@xW6qRRm1SjW1YXj@GJ@fo(LDbZODf;9dRXDbWGna%xQq9) zkJXF3@y%Uv)&`3BR$n%H(iGnq-(~*nE-L&8yFrq3r?{&+;dS|4T}HdBev~hls9?Po zG{BJ5as=!$bXS6`quU3FeH=InA}zX# zH)O$vX{0dHE48;m`+GSxai=}j!z(b>@6X0q0WhI$4v!jFVWbV5qv&J2sEl3>%V*AN zG3vfR!pTvY$$m2l;m#8}b0qLu^~?-g+#!JEK}f~Y%z&0)Q}{hT!jcPtkx+6zyCawi zIuJ}n`@~cz+K|iaKLKroKSFV$msj?>P2jJ<5vU?BNC^cJCC0$-4|ko<^+;IrNjR&^ z`#thmbyzwyVKvjXS+|#cj8USdm<7i>AT{0_1o5+cfYST#X2oX8kTs(Bw@o+>e~$3) zxs*iQ-UXWw_RZULA8OjH*hrGas-fzwRJmKa4_}3ql|ZrAYvAovdGwwNP_ZT5aDDqP z1YefQeQZ3h@F(lBGrv;#psMcU{#&9CRg(ePiL0ZBIQ`T zqcq*OI)9Sy%G@cVJ>VOqr;}%lA6;UAxNCMi=WQWcK$n@ph)VT$pTX*iTQg_PM7l)0j#P^Lea zlo@6+E1^uRKqLNz!8jn!LOulr3gfqll>U)B2=)*bX;f-otIJFrc>MBZqWF%P;HR z8t<-3bqT*VQ*!=$Dc3Hr0w$m1V4FVHfRk~smP4PEHVL$6O;_VZ z!1CA6QdoX2KQL3iJ0Sl4HinoTJ;&@ViulZ+>)@T-dfufy)DFZmk> zw$X)Ygf4}Dtm=6kA82GZyQ^-L_v2y248tj1sptrT$)!8h#3Gn*?gd^Tq~G-I_TkrR z4<6%;!>ztR?QWgpC^xX%GtTVW*)SPfn!Tg6Gh3^Hq{0LV@`EGfTirTy5R4IGU!*LA zp?Y7b_RJufp&9kF4W2cSfX>N1m{230m0p8WqNN97AI-btV>+}EtE7!=Xf&~+VujL9 zB7&?_M+Hc+W?Ku3zn+gNsyrhG4W9qDeKd%gqA3#iX^Y6hEp4KJkM*bP`ZWp+y5zV> z=-^SR*>?R2ZPy<@5A|>CulnDgP&88(FFmgQFNvvt+2+>$k07ZsCTvYR3J4RUD&eX^ ztd0<=z>MhWQD1j=zTN>+j{iEMC&`));=@E$`V&V9{8%Q}RIGg@cLj?CeY>k3;Io%) zJ=@5>7|HtaNa@)%rL(DIm);8Y`Qo{N+hUJ`n~z_aDQ{J@KQD@ZM9^xggninRGksHQ z;MrXi80=;X5W9wz)&v1;_Uc~LrhXLs2lS%~=}uev(Y#ZSS3i2`M~ysjGlHS79Dt!e zc)A+;1#0Ls6WbrUBYvXwqp5cNq909vwe|Q{c~G@=!r@O<9G1}UutT5H@pEkZ(pH?P zP>@$xf8PGn_NJ|6(_rF9;Tohejtei>>+jblVlHCO&xApdN#o5+%`MAXalO(CDoe!n1~%kW9KPr47HoKtbQYVy}3OHW7HSHB;E*KdW_{6V|W1SQ0)8}!K`aB%8o0U-FMxXbsmyw6_WJV=g{xp8f6&@X& zH5EO6^=vyn{;|FaihBRfq|0T@sOd@81VBM`M|}L`LuC*>ZN$g#Vo-;~M@OB$ftGma z!eq2G4J{#mSj<#CtPjkCeizfoH_dEBMMW%@IdG2qC{fKclp(q&4V!%sw8e84ys53W z`e5LgyulluR{6P(oDvBp0>}gj;H34ZpQmE9nC6^0fM-eDop8KDY6H&cE=#p44q#+v z%A<7xQN$bKtP4&9@~%}~A>h52Cn-EfCrk)o^mbg<6pZ?YvuyYd>k|Xt0~2ldj%2+K ze7|dI2fp(f1-|9?;%JlWop!RPdgfn=cK(|V=NrMpVyE)-B- zAiO6E)Dr-L!)F2n@AZy>^5O|Lls|eU8U*GK5hzC=>2b1ZT!4&y9jXP*e*kGjKf8Xz zW^U8XXqNNVAYnNeb7@R7XGb+NOOB=Z*EgTGG~8%|){w)A$4Y!RB00~tp=*P-^Pl0e z8QDt%RyL{uoNC9FY`8)PgA)PFe}8X}he#XPoND>e5Lu22WI(@`7E8vX8sS#h|1<0jRtPQ?zJu!x@&6QmT8IRM;7kp|A7yOjCX?@jZT>VG~y(c>&}I^j0O{4W$L%PU^4TOQ{2niXL!I0UZ%{=$MHOv6Ns6vkMW4kb zN`D9(>g-;4w)zOhgH!)5^--nzs8rRDuIvXlm#zfXpN4L{p^E)d6`P=np&PZT7|z_0 zV*ggfE>*?O!NrO1VEfgoG)xvL{j@5btV$ocT*lVXy>O}&8`seY)FCn=Whsl9t~*Zy zWlTAl$LL=09br$%-hHEn>}=dvD;or|b6MeeDK!LeFeUg+8R2}hwBnk~3oQQyU(4cj z%De>(4e50^E{Oj+VAp#Mem6kS|qdaG--1IKb$(NhX5=Yh0)x9!h1RgL(sXAp4 zzO8nhi@(AjtjDM@139xKX6&L`K}V30u&DQm*tzDqFZO+(sP`TC{^r>CN6wZ0A^*jG!Wb*Y z+}am(J$C~D-5r2_5;yYDY7BqcVm(JKnaUwY)c2V;^mvgvz?F)ct>;vI^7gN9;OXHr z)p#=vjJK~9ihAFX{rNEV{VjHX_B5hDHSCa|q9^5IcBmIRG(b9phoV1E`wFOKx(@aO z629F7eM4Z!=_1`yra6Jo@2`dw2&UXSo5)nniUmpM;HSL&=ovW~ja`MTHj_!=(GoNl;L_J#WX-M;9{ z-}U!8`@6Ny9@WZK0-q7mml;lNL)aIx#|v>|?f+6nbsuZGA-1NCPE9jaO=n3>r#UtC zvuoF~cyaRtsuri&uXWMTfzns_I zaaUu7Uj4KsToe;uJm((BCJ$v36dV2tarwH35y}LA&mNy#Iw>?SHM=aebewx-Sx;}) zyq=|AqBsPSXg!Tke5@XY;%7OBk|skXG~=e&&;$=Wrye7FOj=12;ww(D#?AV;g$#%T zgi^@l`=~2f6o2dMjU2hH^Mikdr(y9qUZ_U>rhJ|A%lQ7oTA;V8I2rx#Q3~pabhaMe zA#0Oz3Q6`_bQY`o=yj%%Jua0IkKkh}+ObvlCd72FVS$Rz{`u{X`5(6b)`n>CIPFhp zJ$?-Pe7N3gvL`2(A|x~)BP_ma_sRro_BV(a0?NV3xiNKv zRr$upT8Fdlv|DKSho9)5mwkSE=|*2LJ-y*&HNNAizejBS>5=+-|L^O6DZ%Pts1v4i z|2Mww^nZ1ohS2}K|ET{vUrhbiN9w=oe_g*3Lj3!!P&`a%*(grM0{cH;K!7;7_VqI2fJ$^L?CVSFl-+G>GHOfnBvW{S=}8 zDBHlUzfj|EF5&_tq}`p0SlsT=EpUUdK8avLm^MSfGQm*Ie$z)`(N1K+^r@iGo8Eh* zw+P`~U}N$I>!B?G0c*z5lOXV2tP}f#-)XDX$TOLLjvvB~t}>ZI&0l7;8h^0K3SF-t z;6bYy8z6t#Y(&CE#$SY3(hSBINAoxFatRb@&1PW#=schpdz~r0HU$!k;`(vn2x4XiLn$)Dll3@+0Nho#;wQ%v2DpAwzGq{6ZSZ&OT}P5&q7{&n_Ay*u zKt*Qtv-x}+;4O1qD`+=7PVg$O|AK(`nFx3l|Ho#Dw%SL7$vmbQ3WTRsqt+RAQw?h) z4ZJB0Y>qS__;vi_0~Q{0e1BW}|7Ls{t;aXgZtADUmjn2iE zK5=%J@;e76lpL7(@F+YW_fK-WFT4 z`b8AX?#gTf(AlA@V}m;aJ~uc;89$c_5>xSW)jdG&75j?mCk#HHK7&_NU$G1;i*;B+ zDUK~L}!*=m|4HK*(t5F`|;*kuLwPK)LL=y0z2*JbN5^MyM(X^g6 zo4fK&{#~=zHTw?2D_=UZ&N+yo5Wj0`*tWbu!4X9@voj2wNl^FI>Atn)_rCZ6En9!$ zhYXV{;O7-jNnuRz2(E>*3jX6_w^V}Ou^f(^m!&E-X9@1W%_k5LE7Xzkj6Z^i+M*5* zlejqRsTZx58d-4ZllzpuP2d2Isz9*SA#3dyKQaHG==rbI^WT~CuYQRBvV-4i8mZV=jM@>$ zHaR)Z?Ax93B>vEue&oOyAp>B@CpuB75S52l;Vc&HG#PvaGh@^o)ng#Ccu^4p@r!Y! zgD;3}Niv3O`1w=z7<#I6v8|@h*$2Ff;P9^jNqhk}H*om<|Fjwd5L%7Fy7~irjEo)V zWTqYSxXDC!5~VvfQLvu-r5+p-)49QAox$&dzfRsXs$3mon;AHLS+#Cx(0#EY$ZQ!^-d4tz~t`4hL} zK(&r}ICG2VstwrgH@iLL+qNffz!o@-d(L_`><6@X>kbT->7A5Wy+pMU0wl1kGT?RW ztLlk08BAVh#G&lV3%=&7JA`v0z)KfPQD4)CzU&>d(E*?l_OnL=7VG*YxVDQ&1nn3>?f_K#S*p1UH}1_UT$AA?82CD=U$0$<$| zvtosJa$?mF2)l3X-*ncs!{7hyb!_YCC{gEQwmL9gjs z1IfrR=RSl^*MWHrIP5ojV$S#G4cLY~wLND&6@C-Zhc&!+2mXay0=|G`GQ%+QG5yjg zxn(&TM?U-HykMPgKqC+kXfO$Afc=K|?DJvujP>_F3Q4H?*|aM!d;RRowD?iPrU@4r zU~xPLWzSRh>HXuo4)4L?=Ok;&9e+p@C$NiK{sfb_6Hg-qvf*PX=2Jv50uai-xR+DW zK31H%s})wn@Sn%t;rzssZ)bGQ8i|fY_yNiH?GK|+U^>6k=1kK-o68omH;*;PPg91}gHVCa4V{qxfgi@s(?L+F%u_R&C~$9v%+ng-u%~Jc zdkIUC!}1h)?7{Vetp*O+a|I^1AwqH38f-L$4V+UcbG5}FK@WH>GFL)ze+i#Ktsrn1 z1lJXJelwS>yr(pTX#&C<1Aq`4u*qqnVzc8SZ1y$7Tp~p=O_Vi*gj))mrM5zDsd((T zMSx0G6QQCX!#)IIQAMK=jA5|jOvJ~IU|1n$9+KtyT?VsUh4WcHLqSesX=CUjh&1DsT1*e5%1(yYV{v0lA(Jbo%eDS6CjzPG?-fE2%PgkNxdk@BA#qCm$#)^*o zE>=By15lC)tQT+rhHddzmioWWUoU~vPx04&yi@#DS~@=d%Az)ZJ%)aCe*l2l`W*p7 z$rr_6sUO)wFiKB~){h2?CDpzpOnvtl)3oFbXPO-Tn!w%+lit|#>Ir4(qY`>ok5C zJ5Q_Zd6K*vAmseE_$y2OU*@kRG>L@2UV}TEze+>L$6r}A!e40(IjmKzAL_7QRRAhy z9f;+xpeQMQZ2tNHb-`okDz|MfI|hH<{~EtuB1$Lpv9w(Gn%y1TfhB~aV!K(kWE{gj zR_u=_uoIBuA-LZWW2^r=hWWS@<&l4|KESP^ z=yI!ylG&o&Li}!3igD;(z-H68@Nh#M4T&@O(8BCaietsjY<*q z4y%sw#&oMEh-17l&JSz()(C=yb7U9K4rS7u{3hN6^^X(eN4>m(e_iOmQI-2ferP*r zPxOy>ql;~h{;@`WsOqf0MZMASE%HQHd4Keeim0+yN%W5!@uMc<)}*9OlQofuOPwM! zi?YsZ?ff%`ZLf((RtO@_b=oIcq;PMz+rC(LI`d#Mj_W^VvS&T;ac!k90F)`i5)euK#`fs*`5ztwVF{igbD zA8p8vCHh0ZN`q!oiT6;pP6xN#kjA^p_4r$pyNa%g#!>FNPPr{xs6UOyvPf5SXjE{6 zRlkUR0#;jR|MO!>A*xO<&s_xtF9Bb@*dZ4~@VZz2fHYA&ZU6@nj^0n#7H{C^$vLAp zLQdSHkBr7RFXWVhkeGTFvuS`iShrTP3H|`1RB8fWLwSVq;y@wT$b&C5^dzZ_0#rk1 zENWrbajmg=Ocq=9o4?BB@T+kzzAz+fXjBx@^U=ka0;M<0cq<=_PgcTA!{OSP9;C| z=z?sJnQVgNyn&nx-yn6LOdYyhK0(vy4ttNtC4FbVwf=};3$jx7ArI382eLxTu{duj zS?4FoEpP5pGEU2vY+Js3aTmtWU&df}gzdlZI@^b4Ffx;Nfoj>xW>5z@N=FyMB4>G2 za@#p+lIs>pZjI1gUYx}TI4_l6t5ixt2ZZb@J`7#V)B5Zb87h|w-G;S%S+Q{oE*q@d zD-mD%6NTDh3)cI8Y?}pOeegK)&t%D`h%=*aQ!ip>!a9q%s*fg zULt>fC?9^M5&)G?0~<3X)F;bXE|!hno2<07uP_01#9L5bmZV0uE<-eJ?03nmH?=Kh zX{|)3kIf=w{n1$!iQGv4uZr(KdZ9=*)N6e1?1a#yxM5f~oPsWgdR>T@y63@q)$b4v zD>;sSTOE(pLwP$bZzT=26kSU-0W?l>N7lC;Ip*4|zn6_<(|Yga9&#-4wx+aC~qc8)!|H{Rg- zX=Jr3GB5U>8o$neAA@6@qfjvtcK>h>;{NkfvDui5VE&Mi>1UkmA~5Zu8ejH)_X0ZY zeFOI6;2@uSBK*<&jREf)bw_a~^8WE=-^4to3q=kD>jBzyL_yS-X`Gk;e>giA_$Z63 z|0j@0K;i}kjTbagRN^(D*hEN8Fp-V!N>r*;eOs((v7)AsKw7yZBwV)3LaesprHa+6 zt-aXR*B39ZCSnPoRW4poyr5Qn)?h`g3TVy$`#bYIn@xz;_s>VO&oj@=nKNh3IdkUB znHe~l-;VN;kRRZj6jNGL97^m1xQC{a)Cp-te|gGwYJ<-*+c%($aWoq%9r5yF_6LL( zyU~-ppqJ00M?sV`XCg%%n5FVix--Qhg`C}Z$hXXy^E!71b3YyXZ`$U}*7#5o&YV!p zZXAw-S=csjaW_e^jX7g`^BP~ZO)R%a_j2zCJqS-I_JI-jB|dDBequG0xjiVuZEM=n zQSP14yUeQ-RA%^V`hiMWEOjG>YrX9FHct6!6K`B7^_j^2>r9KI-`+rg{JTFx&&76N zGZG&!EgoCveM}r#t0^}x=U2Y8GCqH^`wwn~;_yH07{uT}i8)+kf3dWU&f)1`zd8T- ztSzfqwa?ac{o&UsG?PGW$%EsfxuN$9~ed`QSZA=M2*1;S7BPb(l|OJQ7>au_N9Hf@i83-x(O| z4~)dKpRCe>fw_O;n*ntJw*y~XcbshPaibVtj&Lg;n>40x+jZ-NOMx?F+w%Rx8E6O z_(aeagDzhus7wDY);}p=v^6#MJuZ)|=AlnS8nzIUW6E9`_m_XdxI% zYS|DSsI!He=AXs}G0;!vvm2l2i7`=b4dtUYIr@wxjKvYsjo{rRPan~xh)ZjWLkoYS zo=g#_occHEDuaNfkF%-<2Q1C_ks{A%S5b;O2444vndvNxqBNWnTK*d(feP~J0eb9Q zRD#{4ECq=oWWyA8-kNqb2s;mD$R3%`wSVe7g{xp;u%CbFJ0Lj^Tcs9lFX)UBi`Eet% zO~W(}(u%BZz=+us=^<%IvwcTMtN(9N$cvBn0C21yWB8tUP%ORMZ1ix9 z9hPL4gIS&%r3ldSN2%LsOf?(+7sT~Yv{Q?7MK5aoth#U)_WnMR()Rf**{ww?>W0hB zhgq@3ob&D8xgCyCQDUZ5YesU!4=sf=tkoseiJ@@Txm_%A&N`g?L%vPBYM`>y*o-ED z7zB*P0vi53lbW3@@pwCU)bG7Yisx3y_=*o7ub=d>=?YodOffTEwu4-@gL`KiPqsA0 z)ooXL(|+k%LRSSFPfbB2m+yH9rISB%=JXt&{87n`MuWVQKa*ML6Gmo4{b?ydM5(;q zEg}OS?Hf*QHY<22!YDU@+;^@CmKVbHVF_RJ< z*||6CE1x*RQ&BC0;2D@OG7#HC37wy0Mx(|^MNeTgY62;Bu;7n+DEhEE_K|NZMhagL zmrZAld}whbG5pRCuFha0I&{CP*mD)lZw{y~T|e*p6>ZzI$nabwapdYbS7%I244uU5 zG5minTab5U&O4sRImMY(B_GTfZThvUuZT_N_qk6!$A{{IYSz{``G>Hl2sr zQ9rP{bX{oq=rrrb(JjmdA0b;`MU&7_4QZyslaKafqMwDnYbQ3}uUxQwfKSM<+=0q7!11YbqHQb=zh)ez;Fg zcu0uv@ZRCqyTiT68rk1Ze@5vs{y0vT{q`_Hn$NzrX)v$3Ij&9nHubwtUIO zBe)=uJKxxl$v#4Mhj>5!*l|*gc1LrQDQRje(WWU)8qR!H$~02?L}rt%cAj9 z_|It&hOopsbpyn$aXeB962;DX-H6GV@_@CXY8W)f!aNbXnwc&x*Bpu8VXb5Bkm>9A zNjhItzyS!0xT{iK&H2?jVUEdDXhElH1x_nd81($)6vstaO)g?)^_<@}Vnw(wH?z5H z?87}7F*V$u{(ubFwb9rcofl}tDB&1o#F3Lh1JN`yuwY@nM|92S~Y4@)u^q}#FQ@LpXclg8&A!H08>(< z4ZYxEt5}nc#9kAZmE)iY69BT!Tk=0}(dqml1kJlvFQ@Pa>CxbGrKPufNAT;ojQ+~= zPHy$tEc76+N!<@`TFU9CYs3J}+tc{Vcw{gl%GOG99QEoXOT+g=UX(cD@*PS?futYBf+!=NSy>dXAUK6qiO zvV#M=oHB6TWVf`xWb*yr5I&K8@?|#tocklDpVQ_9BRl(-Zdn${|Bri_&T0K)2O>3Z z$Al!%Uh)qiwEB$^O`oyA)O%p^vd|c|{;re2R#|T;mYGf{$889O&Xil`+f65Bc;CgD zjM-UVOTzK-EU?erImaWznH$t$#qe?oOIu{+YpTA!Go`ZAP+CB1y+u7L6$SXf%&7E&;(0}4 zzZ6LCbG4mjTh%baL+SNjP=c`vrnz&`G2zl-SMyW<9fZ%TJoQx$*ed6Ku{zw)YF^5s z&3VvQ8NNl!*mXho*wy(biDHNF9EstrAD=wEt@O74?g@uG4LX?CcvlEQH<4%@dRK-X zU7qht%y_wA=&^3CBnO$e= zC*20V>?h`*(b)L#Uz`JG2EVPUGp)7SKO5h(y*>SN`TyBJH^=EWdTBbXMt^7w9G{J+jk7rzCW<&~<%Q6KC+VU{=`*1P_w&G7 zNw{c7Sj(w}Yni41qpj`~t+|a zSaVs;U&U{lb>^T_n>%nYlrw+-z4#Ro#d{>WG;@CjylyVVzyNcpJ>M{Mx(m>c;n+vs zpY9hd;!QvD?&8tl-@=3IR`33p-<8SBQ>xDKr#BkvnwUV1r4;f{HAIBP-daK2QS&jjr17?`z#XgSUPQ_$g)@EX$%V;0e6Dt5F z0!Gd-Lr+~aTKaNm@sZZub?k+UZH^YL*D`dpaC0F0~Cknpq^fc@0w2v9o+R&oi zP%ODvSjRDJrsQyfbp3y!pFw!`G#ZB!=tFD;AKggdi;>I@)BmNP%S**JCmWSN^v+_M z=HqR|(ie~qC$jbrCS}-cZ0nXGNUT8Y4Ry0i!g!IJEe8eV_2-ZOzVnYk7kBF^TQ1i4 z@yKGo)4TPR7_=bS&v?M~|4Qqa9{y9CeMvqy)n91?h1}ivhYrV_p)C;D`G2&&q|pmX zD-G)g4HV9IT8(xwbsM+jkkR3;@{s`p=h41=w3A%p@yu}iyE$s2pQ=`WoO+jkXNPye zAA$y&E#)opo8)Y%QjFI<6>ksyTkh=lTIru@(m$~Fts@%MYFg4@W(T(eY3Z~RK8MNI zg+F`A!XOLVWpqw~$p`6Sve-@5liB}Re1tu){boaD>}6T#@P_&C;r_{R|CEu@*x#c? zZ^$@ac9bbWalgW$QwGEoZAC6a57w8oY^pmMwFfDguO+ez8n6z=-e=YUmkyapV5YEw zK-^+jgL)N~o}(pH5L+^7#EGDQ9k;H2ocPayJRfbjQ=_{rIE(-P*v9eLRJA3`j+J5sta5{eL+H;J>9t!;|_ju!rXVq);Ikkr7!YfwTw;)e&WloAUvg=R6yk!369sFDP1I|Mx#R&`BwB&4%i4Ry}#B|4} zk6H(J`zMkQ!){MGQX8;L8leUu>2?Lt_eMrazn5P(09g26FBNTTEUMBNT=IDIPTk$n z2yhLITw!U|$i`c^NootpMot1WgjO$HjEim3A?~Q9uI721&viAEvSa|Pn6Rg*tt>o| z!=Ae#_G}oZAy>y4~>CDnvs+ja$mQg=!B>o?-&cWQ5Qls=_lxhGOJXR{ZwvoVb5ZP36zn~Mk z>4SlGC$+NLc$a=`5xM&-b8O9|3(-Y;NZt0vJ*95No^IFFc;Mu3qFeu8cnfBebL zeDNgC@7l^i49wng3dF;S+<%V_&UATmhL*{5?>k24%iQo=v4K{v@8sRim${h-=yUL| zL5TAYUqDwc?+I&T3f3NQ9&G>FC<7+KBRpeR!ukBNj2aX zagaVK5>{W{8({T5?*{1~Ja~&8qyjdIuH%JepAbl)IIzQ(< z9%$cK2kW`#f%PXJ)`_ZyvAl`>)sTsdjw1UcN-7hC_zdYYTgg#zJ>oN zdCS)bA5tj!n>DMixi2%S8Vy{WgCx4>pyjyf+Ae)#ul9#O; zfe9H*a8uT!OX&3(=omJssr&tN)BvRcIZp#ce(QfaKS=SBD_wk~oYcfeZWHkcgxq38 z^nVF}^z<$)>$onF8KA#^0*$jn8fS+$(*};KGLlmPgztLOsI82zZ1VQY61}!oFwmJL z)^<&&N`yZo3cm5U!|Uiw8-JNUzhuSy+bOUh29~#Qsg|x~FJCf81|d|&eVVT(mtaTD zWW$}7_)=k;8;t5>o;`0A;|u4XKk34EsSMwmU0AZgs<1+W;U>YZM#6Xd$>XA^LdDT)$k136w!F4K@FZt#BpQ=bQthm-d7)9T-~u7BUmrfAdlRR-zz z?%el;|0@?lky-7xx@JJSHZn4PXwtc`E3{BS9yZ86Zvax85y`niDcD1f0Ez^Z)g&WL z@r!NzR_i7NoIl5gM{+=V=Ddq6SWNS`gI^W=t#uX5IWnqZ?G?>y3o4r1ZYQwuz*+h7 z-wvu9fzkewQBu8gKQF{ADy`Ms9wi>>nHL#;{h+ZKk8lgDyKXA>rI**1?E2aY zw28EI)4T)DV4vwACqL{qEvS2!zXR*uV8^z0m$FND)4ao@c&4FGq;zX&(Oiai*4m~H z>Z)k`qM+^-{tm2rL1xG_?t2L>IG67f3N84y9*Q=x4iO>X9iyqbP)5^WW;HXiBe6}L zC)&hD#`zKuw=LqRqcIQG5HI>+n_^y>%y8L@qFP-J+cx12h?f0aD}T@rHH#u=gG|ac z0I>}h;j@tU3-J5uT!Ha-G-&-t&MHm>usjp7b`JCjPslZ4vSQGAV2W~R~7r)JKU4ych15F-lr zDdtbWQcGR2@z_M#z3XwcJGfKo%!1~!MJvG_%wyxxqVDPQ_RK)I?+9{L|M|4(Te;{kci={l#8Oo+s%leJQj++jW`Lg%(WbL3pzs5KRm{(D05= z!Dsh8dlOyfJzt%el#LH&vrdbMXjWw!iaozH$;?RfhC1+*v!&TKd&m22vG3r>-UN2n zKV>~iQQO+!&vovyUSZle*tE}P@4CBPuhyzLZB)Qgr1dJ*)s z|4b?>Jhi}QS?^L};;b(Go3l=$%%uJZ%I<=?7qtGfdtlu&$pu0{u9ug*-`y&P8$I z;ZEaa60R5A7c609zNW}A{Lz<ux?jP@)BN*{mSJ-UI5i=U41tN@ANa`*6u+oJ z8kS?PE9wV@hr6PSfx@vOsg>OzRV0Qx1Gc| z!hSUFg!)5ipLTVV$7c0)x;sps2wn?1o5$tW7b*up`pl91o{SDM&@wVuX$nS4*Z6Bg z$s77f|El8pD+6dG^$jf#XyXRCDlrrK&eSO(`noC$f!_lc^xs}eOT zErcw(5X>el8LFV19zi!fDh%5DxK5r)>d+Dz(?7Iu4X={lph3L$YeD{Ad-_zp1oXoP)rbEJ|e2PhIuHOipEql)XP(As^ZQ*pSow1hcE1m@5i6{;T3>WT)(KQvhiqw{GPx*!-NRGJhahoO)z_%Cl2b zYEhnAM6>4T{J(3`HM33E+{#553nx%wvfustop)$wdeinD;xy)Go_?|4?H7YCL%hj6 z%1)KQ>eM9#L|&;rPKPR!yeHrn`rrM5_4m|`qC zoF;@G%+Y|J&3H~o0H%h@d3D@9q8>R^DF#sypo9tcygvG&5dx)dkO`j{er|MZhS$JO zb?>}Zut^L*ZkA^H#9ak=^(-%kr4g!WO|7&U*^FM;qt-t3^%Oh;M8v3$4Z10tF@g5` z-`RTCXc+jDp2YCxpM9HF`>j~^ky^oA>Q&K~{+=cRt+Eo2j@V|u5BSrhvOD^*+ax~b z*Zjbeck<)?^R>>dsup~>=Ue$Y4N;GpohILOjdwPpr_Vb~(ca*`h~-DEOa5F%7;O(% zU#w77*zk?^YpaN^1<3+5ed-c!PPoBiy!0H+o>ESE?NA5nHWjrnA#p z)?T7*o7ze=s4d(S4OP*DGA}2iwehn?i`Ek8A6hz%Hb$t*O0u46OIA~oYXPKL9!pJx z_b6;eG*E{|VrS;qMU@QCll^tw=6CYKnQUi!z+4>7Wh-uIK=5;Qp3_PzvafD5mD~$S zC3(M85DgrW$bS0n?zRN&^gavGCj3rFU1tNXfWr^MsGyO|CBcr(r zaPVmEKe%4a-A6pIk{prP;L+Az9n^(%D9u|W)U3U){HBlg4p4h(Mk{%l8|3KOYKzq{ z^9x%Awr$y=)ZK2qdr3dSWQyADq|V<$iR3K24B`pi3c>a{IC&)lgvtA7pK`$KA@=D} zCs*kDY2GaMs(a@wH4Si#`F+1q0~nb5`v!BOzzlL=-ZJ;dg-T4dx!A zJc-{gztJHfC7aTc7`! zhK%_KKa6f~^W)`hVbmb=@rsYEAAmdW^42;+D)KZ}&t{@tKR^?v;?BG52S)(*=?eF( zxmaLu86CVQF7q3n%8`qR`932X<8^&OlsuBCagNu8VzGVWp}!zeyNO^&{lX*gd_gf28pBXyJzH zhcPQUKtXy0LO91SN}%=gab zND%J|bry}C%sh8Wu>Q*DeD6ekJ~RC@>$BZCyPs$roQ%1Ne_(1leJbOUm{B5xpI-djRhQ#@gYyPHgc(Qp-LFeP5SBc4MYkb&$#~U*6 ztPe+Yf5#(+<@Jr<&hVB^a3>_d;L02y_J?dO@A`{6t&fi8WwW=o3u(r5;n;WiN9sbo zP?Zz~s|4Of@9)u+UUKej`9XRYN=WmQm3}|!eA~4eFKnOm2jUG}{1|DPBHXXvg!}dO zefU*w;JJ_1XiIb~`=czapV{))yF7ZM74N~qPC4$x^FOWD9YmD^lUm<7(d?D0fJk5$ zfkZ4!33sw3c(4x|(1_u+f9&QL%5${uH^f6ckX0Rob*S>vgN_Q`dH?#WNo zyxzR~do%Wuf4K9Y)<;708a$N9e&x(lGrXV8V{1Le?yXNaotJO!E=jca?3A~J{Q2#QV=IZ@qi^8i|3 z<4wOQtz*o-*rRX$ICM|^)IvdwB(m@n2Ys{D@0)h@jl~JJ`0fu!A9KfOdE|vL>YLTx zK0?+fo<;L)5q3F38SJJ6eX91jzFBH?jc{^g&#v*NnlkL}1|u4fRZQK`SGOe3rXpw3 z`7+6}FiDKzzD&w>@CU=j2`B7-L<8*q!tIXz6RqhV{Zd~3iZq%k44xeWj-~Pc8oN*6 z)UO~-*oig15lL&s^ZCk6DY0CNq|GNgl0I@*UnI36kd*Rnb|KRK2a*o4d0{sR1Co9n zr>hY=g&u6qNgSiOyXaHR>{qHA64{529+jch^$)$1?-ZN1xHHQWkGhkA6Z5yFjc<=y zz$4=ubTycXrGB>T2Or=b!E?9>LhNF&;lVKVqNz^pvqzDq2EJo|DJCVY)JRf=wdS`{ z6UrsuM$4@vMB`lE!-Wco3$eJi=#1VL-;J@H$H_JBQB#^;FY+J19pGOFT zv1Ju;fCI494)3IO%7GZvg~)Iu8m1_N2T zBa~Pw_a?{%-7WHR@(=^C^MHlp7!ym~VWWxc5r4(j@;l1A;8W39eu&~$5n{5VsT7|Z z0XUoj#dkuU6o{`1sY%&_9I{u!;+ze1!++3%rv%+FpKkCTzM~HXi1`v$>jbU4if*kq zwzUVMgM?si@~2n=8W)7vH^t%eVsJR+{|AQxRdKJHE48x=AE5ZOSam0Ie?LIYU$a_z1Z<`mXyAd9U-t)-$ktLp5t&OYYqVu?mhtq7<2nKWI`fy)ytw* zFiMZtFnvrX?m@?SDb7^?qnhe`?!0qwpWN98elxP6KwPZSN+3 zh4q%wTOG&I%zkQSFMRuKc0hcw$>G+bn`v54*7oUtB_9H0)IFjJTlxC+roRr{J1!7u z#RDbAoFtsCzO^^$(|A>M7s3)>4HPv7T-Rmp)Rr0s!e^T`QSKJlK!9C|uQ1A{5E0Sm z5bpDehSATg;|*Nt>e>6*oUoS(huM|w?ep%NU0yYR%uMpdOv>PWmh|udXYEzdw6hWX z=k66rgflyfY!GFb-r;SgR1fl3SlE9ctW}AcZ57NKXZ@z4dFQ~o+mkC429?MjSA->y z82-0!GwRlsbMS}4Q>btQ#Bmii?mWD1FWes&*S|%aNoetMo5yv8i=NdXi|*vDaN({n zyWC(gr=#U(4w?Rrmab=DsWPMVQ})Hs_WHH*R|+fyZumyM?mkj)kJ z+BWL~ZqpvqI+Ff+YK279&qhd`viXWpIfL;w5YSZrvk^+h=q~S=M%P^q{x=?FySr<@ zfP88nM@`i2+j(j4{`wErQ(@3g|9dn|+Ii!iU6kH6hbPDB5S2vsvqze+O&*J|^)Ex% z64{Tsq$(xt7^j1G%p|XxC1+apZSL#Q`npM96WMW>G?XN>uO6{NfgPRe%3baQOzqShaHvjA&`^aPd5)HFrDx8QA%vVu z&+P7@XZAtQ+-eMYIp?=+m3{FPN+v{s?!m*^KNAxpaKr`r<@dgRd81pusGoMyhTss~ zNX)bQM>M2tgNok4zm$IQl@ZlCe*GI)XNgB#(Yt)6cVmlA0e1SOayW1|dJRm0QY@cl z7X}<$E0LrM6_NyL%UShyPSc|-_w55{#2)yueXf@f%@-O z%U{RjvOf!Vm}-2Wz*J+|DQGP3TY(;AemM5WrU`Fw--qk_T76GsH@T!iO8Re?bhS(R zYz#@ic1ahxq<<)Bxd9GzxKm>ypkPiTJ8htT7L`v@&J$T+$sb=@=zF?~<0eqyv=n z1WB#EmwMh0OV!}wmp>BAN=rQldOeryQoesZxb?eg@!p>2uSq{#%Pi9-_-_9O`(|E& za~exebn82zg|`@+f1i=-saYcl#$&Z^%JhlF^lmm@ef3fZOj3OmwN&3Gixf;ErRKu2@TmEI(Ew*_3uVlO>gH(=J zz2Lnr?;i=JFw(1M`EtL$gk%J=dU~N!me?1!Gs7Emn>=8_aq>C!zqQE}5lPum*IJ*4xMWvl)#V&S>BN~#mzQiUh9q)xp&Z>bH z#i}lmd&L(%+01_0dYivKB{e6C*@z|j=sg&fnSSScdA|~of)y+?ZCvJH==Rrf!@sh1 zT%(`&`P(X#hiPNi2zyW6$~)CGTHEPUp9XHAeAHE&$j$( zv}iEBdz%&6LVVe+&ac@QSnrxQ3>Wo-z7tO7KMAUJF4jkb5CTDiAj8b}nX<~p(Gc04 zAm$xqjnWx}87*7uj?-9Hg7c+rz$yx7$Y1MBBgy~kuXHuNdSqeJn&FhYfZFzJBRI!J9MO#)6w%G6dZLF_!uaD1}E={5J@$9{B5eGdL z#-paJ-u{1jRmY4miL}?ne-@dD*b^9qEN1W^f5|o_uonXM9chnjjZpk;HDSthZGqAR z#7I*%Wmh=kF_JQf&yl_5v+qEkg_N8Ad&_u+6Kir>w$>lKXM4<}^Q0hJu&4JP4kg8y zo-IQjJ_@T+5NcGGMD~4Z8f42?GURo5&KWVq`|ustD$D5l|4P6A-C{{NmXq8m6{h}o zN$me3J|+34QfYsy0d;+%EUuEk|Ib+i_PuvcRpRFDYO^4VB|4c9y)oI^xr*%eu-3|H zg^)^wu{UBW$g&;&00w;dl$3$Swpm8Xd(D?xhKoZkgFzs}24zTO-|={9#v>3a<8f3M zCBIZx3kc`mB#mr229d3ssebwK&5m;F7w;|;Wlo=u(=7z_0>w=kR;XOyl+cT2xWkhB zX*R`_!9K$Z_6rN$tL%wG4iNX;uV;Q&@~fLZ%cVy7v(%3b58_)1H5l_`zJI^t=S!U7 zxKiyvN0i$}7gt2Kwx#o1E8wuf3gz>yMmy>9LYZM;VjsZFFyh@6B-T|0d3OLv=iTiW zgOgWTt+)D1uyO$>%3`1TY;F4UmNjXteZoy?B)nu>8fS-Ej?^H6!8BQ?Y%Sc^&}A>z zYVSa1TVm+VD4ABnRNwX_@vj8nD@Yvi*PYcEi=5>*r1cHi=eGFVAoeM@S_3-c33we+ ze-|DT9@j1IrgZn>vlYSEqkIsM>tf3_6`rQ*_FQ~^_v&v(aut`}Fp@u~iHZ~Pd$0$f z1lwbkA&8E!7hA4rRPt9-!e->@l<*&17mIPk zd15FLVG1AnAi|qheKR7cc!~(m;x*Mo^u*wb9L1eXwJR$enVfATX%Zjn{L&4xFOv~s zSfE)H&3Vr+ze)$bZ(?n+ONwSHyS%{-fUXr%fS>7*Ag2HY(tG6l(tk=^_$eObr#Ik1 z9Y&Mb{$!y_XKF~>1ri857g>QdxXz=*N+pqf|*6K z5|38*{K0IeUh%Pt4^8CW^^tFEjrz1=6@rxEz4!h1boWdP&*Gxy&)E&Nl1HiC;_jd+ zZ^3NxS^Qf)nR3{L^Kkvl<1d+c=@nOmOY`cE@$J9n&$H|IX)4ibO8s7q4Ou01c{1Q# z7@!~bic|x+qJX2cMtbkra>}|rv!$Z!T&dnrdcSv@`QGfYJ!s=G8U>Rqi{By|aXSOB z?ua3NE5|$f7L7 z%g(MkE?a4<(L(}}dSgv&{r?Yd358a{3mWvWo8>ItBN|QsfAYC0# z8ddf_Q@Gtbi1<0o7;y$T<#|6kwFfcAeob&~s(qv7&}x3NQ8Wt9e`;~2F#f%7HI^J+ ze}o2)R^t=*g@JjFjnmkr)^(jnd(W61AQ(Eb$y(#A8d~Dg!ih5#j2c=t5pB)2 z;?xYBeEVIX2})bYxjfzELE{mojM%2iwJHZ_*6u7X4 z4#CMYu}NbgS=C(>Qdaq4ajQ|6?M1gqn#0~9t{SIJSWKi{fx z_n=VAeR_w4V2|me^+lGdK@|FGopES#FT%gr5`3v$u{^yN7k%zbU{wZEAVUQ>f)y{=hKn za!oCtdjv7E_m+_b`bf28kL+I{i ztaeJo`FA#pt$UqcDGoqjr=dSOCZj(_qi;3!2`$ylKTLnjJ_#-SiOOozb-H^ebBk6U z6S)bM+&K$}!+BaygjcXv+1KDb`Q!K4zFv-XfOVQL5Y$y5zAKk9K`wL5#=Y&Rj=2evUCpRGg=7s^^CPoElqv@ z+S0-KAU5?vEB6NewS}oVrFH*xat{W`4u&At{~ah8`X5qFSA4eqP?WRTi9hSFZIaT6 zazKX`wVFD#y$eUy?G;Y^IJ5IL{`L!(emrlsuMk6vzVBvXLsh@lEX>DB|!~4UdWJ)qAUw zr@Vu&l|d?&ljhdQT7&h`)j1>>DIGZJ3Qq4>wo$5bkv4Usd9x1X{D+-Kh8EsIY9w(w zgH3yAk!Njsu=3CpZD);4k##Sge%qPPU$!5BztLKW>pJ_h%@`p442Zn4((Q-#V|9-X z+C6aA5j@d1yR&DLzvj1{`|+2~@!zfdri%7AvZ@AdM0{qRQ@LbtNw}*6ko}Wowkr4H z%u$s~vi!tMt3P>!P4i*Jjcnz7=230HNIPg;=l>xa8@&f6OLy7hZ+S$cd3X4~H`%8x z-gWl7Lz-@p`=rNfEp@HwKOWPRp6kEQNA+O*!RYri^U2OH^7lWV#eDlK_CKfH-?@cG`%Q{J=j75Q2xvEHD@ka)>#67+;fjlL$Lb z`WaISd5m&DSzVf8@kow7*Zv)uuw%FO?FQ+JcV0!ogH;e^jMktA~wmz^WH0z zDX`Oi9jU$Ruar7>OVc9Uls$6%`CM=!$4V=v*kE7?mUpARB!<`Sg-Ajg%fQqbswJ{7 zdY^sKFYKj#H$HF~Oy1P51a_tac0^ymP7tsdz*_MjCUWObYRIrXNLZ2%Q_J$ zdm72!>d@P|AMjBZ5SkdapG;il(i?<*Vpt`4^t#1f{bb&^@opEfsBKy+qGk`OEPPU8*7o+H1^Tj{9TGrKZ<-@QM?ZxIlRxr=PL*U3ryniHq7TclE z({|d#u>NGQYaVpwsgCq9+p;DCfn`D=pk`U((dR&|A%CP3BBt;*4YEom?NCMVe4M$!aIDtI!V== zK?|1u)m9AVei3-8#t!2$%sQ_(@=5|zSBY-3qW!uy2zC!td*hk-uG3%Dr7zDsf<^kk z)I2T=Q}gIq==8*}ZI7#RxJ75Dg0~tZ)}#@WWH+5f0Q4IKKwq4bLjW|>^=0QbASav? z@qj;5Iaw!}!;!6&^oG)INPPw zT=p)qr)7mi_LpaH_(CkZ3*J$g1v)benm1FL(Os9zGVKc8gZ}$zL;YaLX zd?EZc!`pr>d1dC%NJ57%ARPv-fBwig z3y;#j(`8)RpX?^?Izj&Hk$*;FXTIhR=yL1MiQFF?tfj2nTei$#gdTdXSQ;M7zMgkG z-}GlZFn_$|OtEq9qie|aP&rK2_0aLq?%@+f&rl_bEw?SI9je(wsL$J8=c*g7&xzcj zZ9#P(A7s@XV%7cToS?d)s!m6s?#+XDf+|a7cQlR8cq9)9obqx}qx2g`OWFSP+`;!? zoye*n+e)%=zr3qZSNSxTMGUYkjhQd^ur#Lf>V4qAPota|yZ{8JtOQ;bWxc=nfY`za zp#CX9%NM8#DU+p)Kp;K?Yq{2`q%vK_GP5EZ)^`}OHb?;VA?B(lGs2I%R#0z&=P z2P6h;F57)}(7sO(cYyrAQh?TJM;IEx@#jG)K>vEGNB_Oe zEA4wk@h9Bxlm==_080FMtq+Yb9ng9jRp7Wi@kNjRo5!nnjf3UQ?QY-q?+nO3+6Uyw z-kbuoys$_68hQ1Oa)54619Wf-P;za$MmRMEsQ!f>?Yo>;+PC!#Yu}_aP_4J7_1`T% zG^ZA}N7O#HQRgn7C$w^;=uu7Ck3NYW<3VTi)bYu?v`TQx?jqgtc;_mCp?f4lckybk z`3PMglaUR*^y1cGq+4XvD^o(P}f;%tP1^6g`}l_!-KcP6&dJ? z?A~ZaW?GS_Q$?-}iu^!DzGFp#m?&@2;f!L1^6cw;u{O7P{7hLeP21blkl62?`JM28 zwGp1P0VanN1U&?cKN`P9ksYGQ4sXs`YKg@^Tz=VTh=D(a^W&Gjs_hl)2r5Z1lzVZ7 zcQ_MAP8Zyy9H=rmqmFI8^5Djqt<=fKcrFGXrvi-Hs>6xwsNPjVtm#SN$04COCVbNh zXW{0#zYfR8y~dSCl$>885B94vkV`}7NZ_#q4~*1QPW>PNn}^d7JnUlmE*5N)Oxt;j{$!jzMt{el^bL~ zJXamC%B8#;e_hA}^PS(;X~!;|bRDdl{_evR|f3C)z0ubCTo8VXRaX4t;M{SfPmZmJp1M){<^B|Vk-?05v_=kl%4V&~*7#>wbQU|VG zIGlzLd*|oULG=H(B!uIu8ttcbiGG@PXW&!|Ezl+dHMHEpXzI#n z#2(cjP88%y&)e)#=Opfe|Hhsz{Inw8v_Q3FG~!QcTF@Fi#{aUyfPbk{bM_54t+5<2 zOXhrxy~7;~lmlfoKOFzdG-Xaa=Bjwu-ar7vLd)*rhs;W|-i!ZqO1S8=a8pO7s*LfL zc&ux_dN8?6S>vs)bwOLz$Vj|Vm}&JW%C&SvPlmY-$UmQs>(ZiyYa^L!@P(tVU?2tr znz_+C-{zX8QIwe3Dj?ErbW8z)J(AV1Hf20sdRXZqpXrKv`Cq%*!ewgG+!HF}Ewms9 z40g^NT3xiGx~Wa*SH@g&=W`wIfd*uBa)T}Ie=E#9a_-%g@yZ3PeC?b!B)ueQoiBIr z*UD^oNWJJyJ-vr7R{iO_0Dg3cIt+y+{PKjU?*jO9H&=CQFgHFv59r?O6L{VkUs*m2 zExUowEzov_Ixx_+7Ms_q^tBlc99>==`y^8IT6Jp8ySi|*E;;QS z#D^*!hCFJMO@bq_dkrLaO4(uDA4X%lM}5l5sW-J!JMzF>oxHh#04rEC2} zYXr7BLl?O>ib+g=CWXiEcz#<|3j>h|k)n{@cIKUaaNlIIwfW@Rfv$J-8Rz70isX+m zRDXb38*VP?7h3u!Bc6$126qh!(dJbqAJ8wf@LeS|?Gk&;JA&Obk;HO6SAX`BZl;PP zu9LiQ%u*!tsfYAIC{K&Tmx#GpQjXZ2QfQ7yyj8T0aG%tHwnDqk^t+p1S`jiu6W4tK zI=XMCy8XQpE^r~Rl@`3OvPB6RSLdwmW$T;f{>N{#mg~+3C^>xzFT!#h(CK@LnJ^ zS86FkGN=S7L$i`6A&8OK5)q!CS_9~}a&=|=hQ+GlZ0=a9XnM1&D>EY+d!?f3E$Ndp z;?r-Oc1G;?w@Yp#aefA6L^IzyBX;qP(b*pL$qo&B=inO6Ejb?jf&p@|uje)B_0*-RE{ zevsyY(INR&C7bI{MGQiVSCCX)^mlPgdG%+nR=59~+Y$aA&HS5O#O2Y_S3-+_M3!jj z7oo-H^T1tQozwMgGUt8Qoki#ceO(!UbcuEIv8&Y0iVyp2&XG};jS?5YKf3J%gF%9=I>h_dsVRxO`m5ldz()HMyITkqNl{!#nIB|<{lAE z95*gn`uCZ2RB#-20PF6nXkJYUf50vs(S6;E+Wl54{@N(1L?Q@3{7SkWmomJHSW)6$ak<9*;1J`r2qMCB&yn4WP{xQuUI zSaG3*?x1OGsL62G~rWN*ty*4Ml8=3n5CEaA96vY@%NZIPHB?`>3| zG=5Duws;GI+FbURahgDIwDaxTcy|_HV!56*7Q~+QW+((F*3mgTHDEd2D20f1g+dG$ z>nx#Xi85l_ITUd7qlj2RHF0%yB)-5HDE@O}r`V0I?o+Jpfsxo^)yK)=Jt{7B6^A<( z+n}%J#V1Vm#uw>9q_S{^KA%?HEBxcDR@sj;)1B=e%+c+B;c?Io<&7|}<$eh*7jE!Q zA0FTxyZwHn!g4`rE{l!zXIhH|ymMG2al6$L+Z~C$?hRI)icUseE@Y!zEz-U#O9GFw zDcw4ctt2-t5w!U727a`E@y*Zz8?)mRjC|1UUGJSUv0lskypi}~<+Yp(XniF9{o+xd zMq_VO$FTCAKp|+eE<;fa<;~dsfw#Ckz#X8lkfV8{qq*PTPn=3KxPJ!siS@FmZsfN! zy*s?qT|;_MJs`GLG*2%vW#x_K*E>ajM(NLS{Ao4G_9}+>qMSS+ZNN?AeLXt;G&%=_ zdyK?3_KJj9YPI}CV^2hj)>b#|RH)tDJjsBzuLOgKYOIYW#{WAKYurF~8m&_3Ex|xk zLrWjlLGMM+FvJ^(VFGb^Yp5mH;$_*KwLXgsrAt(N-khFHjsnQCk^ct(vC;Bu9&}4A z0W(;c)rIRO#IrIhLTjt8XbY4~MbkDJLTAJyjhu!To`QiXoMa!#DvB*_bp{awCe7?` z2%iyC=6GY9l4uj_!AsWi9PY3rIg)u)ivA(lf*46$Z#M42O%-;uXfzaITT^&S_*es7 zUAlh$l?rnV!{Z~Xn{eoL&9564tY3ZEfBsNEvA(jpbjRG&BBkYd^GeNYjsKC`9dYsu zQ&d=Oba_SX|0T5WL;AJ4 zd1qE==|-MX@7`LWj98FC5cXijgiuQki zjC~leQx8bm4IOYJCzO%fO6$&kOAv$Ej`&tCg4i(>4@;=Yc+7C^>{k{FxdtZX#CR5 z%Y1TSVy4mTC&QrG$=~Tsv-UC2%=BMMk*5>w^b=A`+i0Ffki~kSKj0{Dko8taxcTudBr?IB1))&Gsz?9G zM*oGotUJO@4I?Gap@oBp4_(tJ+GZxdM8s2c{;SG3Uk>E9k;JZEYB6ZiYKwFgPB(GM zEarsz5-09vs?6+St~&F=N)%FMSX*S)1u`>yD74*jUT@l7c5+XC3@2_hevj>v@!=_m zBK9oa7=cUULn^rW3)cuqb03t&$vg$6E>86B_-Ajz{_~`sgiVcTRNLYG`FN`~AS`=L zyNT+|xG6RfNgGvC;|n^@+bBuz6D!x>+~c8bDn54o_rR{E7j`|neLur4)$R5Br(x&1 zJbAQ%4~D!bk^Y)ra(@0Ix-#OAT=l7u%iI~9*_~xJ&I^DFrc zJOe&kGQKWc#{?(n)9z6$`4^k_to6o1Rqs>dd7I-L%e$sBZ;=#{LA}wNtgngeAHQx> z{~x^_&hUQo>Fa@+@p6v3MGFY`6Q9t_yzuRdTWNFe`49eG+1Fp~Hzkb@g2VjFM3buq8SE2+T*LM6~$jCRTmvYQ!)C} zt@FUC%lyPU7(MFR=M@hKdg_c+3mpDyUH?$0)*qSwjO@lgaF6-34I3HeCQ|MeaLMjosUyir`=GHj7P({GRxhJ)7&VnVyIY z`)#eC>H5}AqWArq z22fT^d!H<4i;Har`B?KWn-VS;d6^ZDRIvi_8H`!Oe1A}@ynlihuPN67qPR5pWI3PF ze7-=}qN_~l+S&hQuG?_Y8m{5vHdg<(m~i0^r5A^B`#VT0(lFNkwor>S!>BeUg;K3P zj{iSTQW1@zK2sR>VFCcQ22DucC3ac{15m$vVZyVDV!f{k)qnn zLhy%G*-@US-{!Jm$BA&Tr^5G$b>iw#w#f5Be87=3p7?M;K4Oca;Q7Ne&|?Mq)3aGl zG$jpa%LQot6905;PtZ8F9BA(n2YGiVkPkJgyyWGkL4M<=z0FXL`EX`%dS{W7)f(_#}IYd+@v=QE=clu>IN&z+SZ7-SB6 zoy47x5R@qKUUmsVv0`tXOHf(WHPTz91diHULW5cc5dT^vDhvq6CKR`JaZvkO_JG*6>>Z8z#0OE^^h`@bJ;0| z@L`O&4WzNw{=EYfw|fDiG3<2r7$!_Taie{9ZMm~hboz<16qCjKtJ;?M35z|$^7MYE zy=Q;%VlgLtKcp(X8lfWb1<@yWob2Kkwx0EBS4U$$9z2IuV~(78jy3Z9)aJ4qMv9~s zgTk=Wn!yJ#q$tiUz>_ZGO)%_xvR;3iLU-PTnZ4I)Si{p>)Ez1);ot>h4yW z^Q#x=Z!H*0J?^OL(G+#HeR5r`$L6xLjus*J_Pg5I7wO&l^kI<6%qiK}pbcW#|FhRg z>cq@)Ix*g}lGLoQW3lL^EX`%_9HmN_VEQv#{HY?AdG?<5uCOXz#A0hBk)~^Qxt2%$ zTeEnjo=DLgOaHUKPQ&(c%OTO4|7}HV>o%2$erM`d5+=8 z$N1t6F%D=@&RKeYLwF<_;Mm;r^}dn!DUd~I@K7uGt!eV5v?*0>M^hlp$|P}?Ft}wcAp$jnC=KtPU3+w5^1Qz7XxD$= zg^u)JLAU)ZkTyxP`AJ|z$8$&AMZ93?m|^^Iq6OzRUwgN9K7|(M2n0>WK3<|u2#V-1 zn%5z0A0~HC3z)M97XF@$&i=NgJIyb*7AVQL!kI3KCxES?^Ra4;i^#Xb)`@wA()I%zrkqd=c zu$O3tO*FloA2X%bp#`$obtS0~EM_)Q!c>tS2_|BGQZHut>1TT~%jKzghT*6EO$hUJ z@w5KGY0RJgo< z`SsveeY!^r9Qa>5{WR+^;O7bd9O0kSlHvW$ydc4*EJND+aR8=seb4!2U*&a}5Lo5V z=seeGZ`41aBVRe9a>5yzArv;7^SFiStG$6Yu_H_Jw`8aNtjfrSrR!cMIwRYQTCT6?Ebp36_8_EPgwjopJ)Y9y zr?+bo`W5lh%tkke2JFD}_-)B(S|yV-GvmwobC9c5W|Y`dPSEZ9j@nc; z>iyQvsA5kVs@p%vYmLTsRVBt{R3+wTS6%T&kk8g%H*kh?Wo$R=y_NJj1}_UjK~=~c z`$%2GDq*skipLA6FR4|Y=%u(9-06Rj(oLZS3o&0S5#O5VrCW`^qnw|zc&bukQ%A65 z6&Z1HwCH68n$<>QuT~ckfb=<0m#-3eb%M@#UI|d}PW}=jzUqp%Q%F*Y8d*tWv`Q5T z(5s4d3gene+(VTW?OoYtBnF?Vl*+2if1_WkSRYvWf=YsUrQE@%DWYrAwyZPa$8Bpp zBQfq&=#dq@v@2S=Gqhk|!!$A?61|l0Ipi~1x+}E!{cK12B|e;~(V}OgMeP=!7yrG@ zBBF#E5hb)}6+}?%A!rJ1m!j|5-i_=QdPsJRzc8(I!`az$RAQ_BA2emi$3qv(1Oz$ z4TCsp`F@g7n_80zwJFnh4!5diOmZ3jkacMBY&cHs z{FJV#8!NAh`aoV5Q9`@$@3&uF6zYw(Nt6F69-Q$P6xpI6e`bD=Yn96QasDd!5W-F{ z-JM@>q=W(hN}rfp&#KKKgCdDbIC0_KnQv;3we>!Vd1_bzL~j8rSi|}5?$H_E&{JiG zx@-ZnYE6^HXy+3WU3O5jxO1un9H7>0DlI`uUdxCOjcrJN2vKp{3$IJS3%0uci|Vew z;l>a6JX-pED4~IzWxF}UGs1RA(2Fyl*RkS`LFO2ewgWVU94Xx$vbde-rSC^e{~cQVzvPb=eL$#5bz}Y@8nkXr3W6-_?$9SIO>=fnW`(^ z4V0U&m8xKD2)ve@Rq^}O8xvyV-kOk@K8(g))qg^4`deA(@toGGD?V^V-`}^Q>1`>r z3Gu0&S*(L~sz0Yz#p8bIPS)dxh;$QTkIm&djQCk;kFs&$BqE z9!0_I3bm{x;w2>gm;7H_v~$Bvip{j&z88lj>si2E#TW&TwR@KhWhy3DhF&J?1-)l4 zXXz!&y~zF@t9P5klk)_<$bF+?g?fRU_A-XbbQB*7jxbdO7 zv~AvngvN5;OEt>s*_p2ydo!}P8s;D*y%+HLA3lN4r;TxZ-dh!Lz*o1Jt9a*iD7(HD zCvvv|p>0)1S2R75*$C4F@iSG#&k!84AxmfUFo2X35&W$4kttuYg{f}1BWnXSAj+vM z+tadKqAY!wx)vL+;iOmrIVJeV58l3qO=ZTZEw)Gl7b~u&B>7k3aQ3jSo_-puF<+J| z&MEytIEo{eK1G=Nmmmj!L`q+nn@t>XC-dr$BC!`1uA6g7_|o=Nd`-CYiO_;1y+{Yy zF?yR*M_+Fsf_VS|L7@eY={qr03*<+O6g^{OqYdBD!j~eM&xT813oVw!V`iPlkAk;a zHT*^5D>VEOhogZJ6*H)6;rnx@8qkBtsQ5R)W(h2jY(W+rn%&i4=O(nX9WyKbqg4wna+63@yHkJVdaE+$_hR|5}v!+yfaE zhvx8S1Yyt5)g@)1y9}8hhcD&)qV~GOX8gcbw^m1r+EhWfa7#FG2vk@*qXMXGt+m-* z3M}itYv&#W*nAy#G@znnLtQd6ElVQH_5!&4l7Ybl#d#AH8AnTFyEz{%PvWxCJBc(~ z@BYvm8GPn`Z*ME#U6lOX1Bi1e8Lv3M1WspAo38n; z{vbm&93}zt*Wpvh{17)%PPp`0wj-ffBMPS95iWX-$x~iLUYt)uiDuQ9`K3ie%mAS2 zHw70h*7(O6D3PM}Xl!+L(S~Z<$+RV!xt9L@EVN*h__Js$=U4z9b@W-d=!J0mmvF~t z+};)92u04MkvuC*c!@h^D5%Bt2zkPm$%B8AV;DuNPcUt?h%>o`)82*8cq z(TS15bue+MLKS`yVHyFN+Ha-<{x*7#9N?oXT?3{#^elAUaE`>uo%}Bhl5ngxpDjl| ztCcgYd+9~*K)czihf6Wp>wLEY z*Z=80hUQh~{lhyGzhCABtEnC3`OpWOJ2ijpTEo#$`5ATP9Pgb+?YZGI}(!x z&^#XW?&GQpevtFSqA6}y{^qhXLk;+p1`%E;?~{u!Fh3NBFcPHnw1Pg^*M;Z2qcP>` z>~2x)!-oafYZ+`rf5=|G#fu}W_w?KTaFToiOFZzuR(~b^2prQl2~zWy<=kA)=%G6X zV;@#;ej{4g9@#sbNAPN1xPJ|z#{bQ`i$e>ZwzfS}-JUGg$4FxQ22l*3f>4emD)tKO zOColKVu;lV@i6xuNkNAb*X4+**ha+_3$ePKf^hpk3ohqj1O;}GW6ou*DH30hPGUPi z2B#7;3?ng|*PF!e<~I0lI}z3*IMOKmBSoPYg{u^kU_?%1nKV+{EasNI#nSDL>ih8G z2;J>Wz3?AC#SwBu7WqjoHqx6GbNZ`oPx_mWtec4(6B`qL)+Q^k?uU5lzm&Hpw#0Ex zo;3?T%bne3$<{iSx>i~164_Ho_Tt$zue%Ycr#%=x++3c&GaN|BzLEuBLS}4EYA2SX zx~{E|ry`J^#V_f_N1XWaTG<>ZW_hXtzuz~Lgz~|?yXi*PO*`fFU#)hqUXCC@({lMV z@hPgRZn@}Y5n|<`Jx2?{8GUfX^LzKGD&#K>$bP=4C%pps8Zj_UzFtHqd#f$;Trxgi z^ydF#?p@%cs;;*21QG~HJV63R1sQZ~lZrM`P$HzxV4^2D15vS}@>&#{Vrw;$aB1Z- zVFKiMI2Z*5FD-bdt*vM+SE~u31W+*$t6Wq-6wf$VK`jKZ=6jyC&zVbz*1rGu|9&4o zGUv9hYp=ET+H0-7cE|Etq*DU@&42*iUQ(m>9{>YSqY(r^93ngWF(F%ZIRgIXbpgQI zK11V(VoKA^`eQionb(7r5KO@9Xs=OLkJ&-1v{Q+;s@s*dJ-RRy zEoAL%6(p?}G#-=QMgJqR^#r-{16CR~xio3B|AYlZOg=;&9EpfG^l8p(rA$;hpkahH z>{Lz_KGqbpvco~^TGn)0acy>2kyaXK_6(ZWAU4_=fx_lV??!lNAT$%&+&-aMgt{K|AMuwuPah(=v3*-wh8>+{ zsc!k4f9G=hZoszm{uOx6x;?(OGVzU!}eU#oik$R;@qf z(P`eDv2XTx+%h@o(`j3o+-|dVxk9`wMvqRY2iUgl6)GvcN6*78*1&xG2yQzhUbRp8 z(f2#1Us-?Q{Ia33P{RpQY5X>ss@D?8QLII_V4h5yc`3cj2K#?{cS^uazlaxWL>pH; zb7upBezU6XE6lpU&vHDPFRdVYVsBkNM4C;w1yLY&VYD*_7?Me^8H2Ah7loJxE7dCO zDZC{kV16%HxI+t{g_ptc+i}`xP0+fTlz3K9d%h)@x-E(*vxBaMr)pq)h{HC*8gwOY ziNd3-G#@tW#;9j#zj||-nx=GA69)9Fn@st z3=I~3qJA7gpkudo0*1tgH0e&w-y_g&jC2R`r#9yl zev8Xb#oDUZI*^~VRiEpfxmpoH3nJ7OLJa%O91%(nZv-jgqY|NX>u!ip!0*_!i?9Sx zBOli0J7o^sxKkwqk^3GwMMNrL(gLh93LN%JLrV0W;aN=D878YCkU zRKXG55b3)ki37_6LiZ*>7gr@fy^-n?V>uPR5k94g>Bk?NdC%Q%saq2%K8X)E7Gs6UBDvXYp zdAeTR*hbEUm5)z_r+vfuRL0oc@z*Pz*YKRW?kn{^O{#6NAC*t^w_|dU>m`ImzOt^O zMY$ua?78q7>ZGkYQ&oSvVXKSlQcCwF%IaB-i8O}jlId(|u8l~(!WRIbJn(JgeyuOpf8R$6gl)F?u z4kGAS@&B`uG9QuQlmJQXDxUHKl^K}C%=Z4z6Dxg1^2Nuk+1@Wm-fZu7t}VE7Z}c&H zv%CRrLqiJtGoECAI%cm>A87k{8n+!zI=)({E9~#>=y=j0XmcYO3EL%!|5NS(?t6&) zIn;g79?BI#N|kJY#G|+cQw#(d_>^VAjuOm?Ksvi$HdcAyzr|OA}xfFJ{h>e8X|4OLM$E&4|>A)r$j)>J5Yt z!Xd!)5iom)Crtte=vO0`r=*ubB;^Dhgo`C-Xasygw-CMqVc8L#7;C1{jIgVk8z^j> zF~V<-{%Z=_eOb^P4w)RMtTt)kOw_D%l1*C!FGo(Xkldcf(E!LDNL}wXopSz|=yG`- zeVlc3GH2Z~n>%%nL*2ccy2rV7gFf0zr*~ZaxRa`Xn$?es{+8G{jo4TL zY`lS{`(*$Y4c|*}rTah#*HScYH5yq8yIDQ1%I^h7tJ}X6nsClbH^ZCw(OQ^;i%12q z%DkeuQj2}gnfL}XTRjTY%_S@kld}|u;zM{V^6Lp6ea*%xYpH@8zm{6rSgT*#87r6> z=hEy}kC#D=3QG!_XalZTsodecp`_;1s28^rc>AH7R)++GT}*P&R?ZhPu(!g76mPRS9-fv&CZa=bE3WqKvLUfOwy6qSh$gK6dZ$*vmun;} z@rd<}CZ|lEs;yLkym3x4XIKnmikwt{85XTl+$a1gEUfLC@AfP@SQ;+}wd~PWIy4O4 zG|lb-a{8uhrRGHne@A4Mn!SSNb-<;YvvecdONA!1cwkZvRF+GJ-Sa+`&DO5K(6%Ep z@;4~^8tgCWex+_BxD8n4sUxj{7Y40AQbGu7uZTPw4Wz>Ac>p16W`dL+nI+}XI$esW;aO3ePo*O4t8eClEM+251i;C82d7JI{v?X$Du zZ_{!6&GS>-Kt;g%?5R9&3o`_S41id4TwUdOqu_x5 z*K%lJ>ksh?{x4UDfXUa%{Sx{A>BvU3+=TaZyr{>OvnXU*Wh9Jc`bOqIbtjnrMQ5~Q z{&lPfI0Jqnf&0Ng6M6nQY%bW%IHrM&=K4mgRh;0(IAZ~!+S#(*QynR!e>-E@+#3ah zu}J+%jHRH>eokgzFbOnH>?h#b-zO_(x4*+=!({Gc^ItqNsG&8jG!-kiZ8Ju?l_KIJ zC+-`Be?3Y|Wvn%B9CZa|vJ8UVz9h;-&RA7%;1J3|N~#N(AK;%$WB_~O;R9ERgzNTD zc7I?Es95Jk0TYLIn%8CpP5d7N5{B+wNO&wsxS06GF~O`;K_r{VMG~gqKXbM^sR`|x z6q8jb!RCmHP6V#@2>r~~{{W#26U4DNVmo(geeybSrQQC$_%1!Tb3rO6vv5|{j6i<2 z-ta*u5gc3WOC6_boxKLCsSM-*$UqLzK0}w2GssCdFh)bfULeP>m}v_!|N5)R^L>@y zb5`>(%#vNj_&W}c*XE|8`B${1&5piOS65Mkv_zaQrPE^UJEx%Yn)yzVHpAI zy!U@|CwwP*%=cF}P-DzsS92f34GJ^;41aOCGyrcZvjbM<^N%xmS~bqKe+suzy~Jqn zH`ra-NT$g_8q-PR57(cHbkmv6gVvlHYsrO3iZ8dRg!dw0Uvy4EYl+Av3>d(eY-mO} z^0A2aqRPN1u;K6sppK>?VELhqY1HQa4Qb)Kaqm|p*k67CsZ?PK^hOIclUpzZGc!xf zK%FG|2OdRnJGm!zI8K@2Z(;}3VHsp65D-I(PY9?WIB@uN1dPPx6%9!-^g@5@#5I{) zrp(#(lI9T^ar0g_LO0hgadX&pl2lwcsW&$7fXXWiBgB`_fhcknHH;?z~U>1n9ev67s(Z_=w(8pNr=uq;S z%kFsyo(Ki_My^gwjHMwf29g)V`%PIWpAHy`SCCah;0qDBU}%yVq%=`Tf?_!bCf^*k zPy%B5DzSzIenWFUH_DGz_A6MTYpX_dvb%zrM<0hnC_)K3v=GBS#vuXrefS7bx$nIt z){_eJ_iA(J;}gViZ!sne4?T$nV(tHoTj+}rh~Q^lc@6g<^`3wWVCjL=fi{=xbDkNi zz0w`~4W|46-v>&v!Torl+WcH3F|+5QKLhii?LuGe0UzSLR@`~dBb^m-fGeS?>0SEU zJ5$U-v%&kVq9WW!hZ^faWGVr60~X~-xe&qOvUBJ8f=> z5M=M)OR~X_@&XO_d8&80Ztt$xPYWMRhL5Nrg-sJSZ`*6Yd1jJ)GdNc1|+GaK_NN1}n3FwMpTbpJpZhL;yg@KPz~F{Ii@_OI@*LV>*hqXehR39g1=1r1P^c z1!XdRG$QThVz7`o{gxLJ_NLygQNU4K8}V)U(n}y8+9!HpR{%HEGDnlUHFd+GsSxB5 zxmm3*u%{NGbaN*llx~07q^e$1zj5;?sMRX!fp7K?BfJL?)<|hsERmDhtvygQre^6; z^#*pZ(Y~VT0~x;)7{8Nd&G-w&AG$)DhWS%Z^zYz~Sl2!}g@Ra_tZ}Keui#*fs~zk8 zA=s>%S8K`G8P|GXX~SO3tD7j~fWGbBU#QW;6pTF30pS2_Xr`2G0ahPEK9nN!0(`wl z1+y8&2CSwJS&dIz9cX>(iRq-4?56OYS)a9=(4CxfzlWUurces{BSVDX1-POgWac;+ z?JF?CCdQToz?@yN-!wt!22PMee9KdqcJTb$xIIO@N@Q>BI&vM+HP{b>QXHA#TNkv~ zNJ*K)<0Z+W7DDHxAF~987l&XnP!_VTe(xJZPMrQm{YH05>&lzO$?_%+07H8nVe^Of zMZ*822i$6o(U?dws<3xLPKZNVGD*iAnevCyRr`wwQ%QD5paj>s7AEWCgoHMm()n7c-eT2Cg0_e8Dq5#95~UyN$AjEe~3=r~$bg7L4U$ zy?_%0mQSTE9|Z?|6gXufWK{ei<0#A9KVXbQ0bk`$T8?;=r466v^COHe{b77*4j5yg zrW@G>L@fIIV-&!&d7p61VfqpKdBFND{U7MN9~kgHoQCtEzduO*{e*nz?~ffq;u+X? zw6!iW9O>eU{IN2J(bx?eyKC@H^n)OPj3v$JWw>b1K@vHNkpOUvCoY}>_QV4u3Cx8Y zJ$NX&fQpeD&!gGm@Lh%fj+)=Ety)6d#?0wKHpH52f`K7_kE(Kmv$vqd?-YM2VqMAh8!LUlb7Y>8c%ijCKHfv;u3UV_2JZCy%b zck9OdS2FMz9fTJtsg*sghY5*Sy78Td@WcC@)XGe}2OfxSDw<*4xLk5sGY=iz;|sNU zO3tW<*=e)i*kT-O*xW{z5bD*Zt!#t$;IOU@A7^ws;o8U9 zCelwS%2!d4Jm7c?$h~O|zu3Fro>ga8HGI$(dH!Tx9E#li zS4?qo-cBV92L9}bSM7ng$zm~Z?xItYaO;67mWXeswMr2@6AY@EY-ZCX<& zv~QMmO?sTt@@ZpScNVj;t!d9S*;(*qCKbW(|j!1%4j=5^VA<3#6s(n`a}vb69hyap36Mp}0~ zB-PtwPKZVl^Z&7wURb-YJ;nd%JyOffagdimUhKoD{R$ue9ajd=j6m8ffe z8DdV3-=bRh0CFQTwQ;36c2U4z4a#VnH5ta^35#@pHDq->eIL~?DnnaRuxG^07nFQG z41Aj}O^ZIqOvMP`yhtx8d~e23IQ}Mf=qhvA!&e%2EGjOs?n=GN82E5-{2N?Q0+!q) z6nHHS8*>)vkw2jxfM!u~yZpu0&)cx4pfvn1^m!HXls0?>XgxQO&_Xocs?lJG-o8{q z<>Jp<+OS_u?NMsBQX#;J=7J!Bl9M0-U3#e%6)-U@4Q3dR!{$&(G5i_(qG5}C{MsBQGROaV?-?5UfxbV%Y^ZacM$b4mIz((bN7ae4N z1jGX5)<^Cp^8}VQ9KZ>)FAZXM%QSwWtj9Kg{B@_CyAtJo<2CA-7!$hcjbzEml4a<#lt~W}dB&hx-UJ7NU-} zHv{9FhMy0UBQ}oUeC6mFID{>K4OWhTkwb}4-~d!~--Ke^KE5Adbj$vf4_11YMG|W3 z&4=MocG(~Hpzcko?lX)IAczWBA)J>kpJHo_*CuI0ms+u9@VhMWA23T zz$px!);WvjWBw@i_JJ4HNDK`VjB!Ltbcqtev|^))bd)Q{;!s=@-9ud?(EhRV5+jvY z`kR&ejh=AsC;^58yTm{KkHGFj{-Zl_mM^BN?Fd5N1Q81=aww(l%z!qg*w|cRH2GWh zmJDcyN~jz|MGfKK`3KqUMH4K*`ICA$Pf<1+FgmjS;9j)rx%NIO=6!nOb45#pWuXb_Wm267j)!Fz}5t0ukh*v#vS&A#hO zaFAkOiAv9{SeVF~F=E5KR~ciQ)8OJ0ZGn)R5ilWq5bI!j*rSE%7XbUi%k(Y6w2TQb z`kX62z&~!@7sSf&@lLb47Hp1)3IV9>Be2WJyRnY0qtJuEG0S+dmek=AF1q{!kx$`+ z%V!!f_Sk`U1zjK9;l}sBc_tB-Fhozw*k?glANx%Dzejf3U?U=qJm9d&V%(=Jev;2F z6z2twNqECJ1O^$jP`9RZDsMs@2`32eZQ=(yzVyJ?S53ie}ul_mldD@`L8+R)*4P1sPMCYh^uoX5bK3Vto&R_V7`AecS*FAkPQ|CEGYDn7#{$>lT4kTs_#7k%9+ zDEc2mPbym2wB6e+pH!X|{avgQt}li_WL4{n57qiY2S4Ka!pE!STp=!($@|B=W8^wt zPN~8fGAUJoaMAYn$ZXDprfrDMaB9YuHQaWFZL$URU+8~`{!r(!ROvmA3{J7HnuxU@ zRAb|q0MewC2h}pm=SDhgkHFE}FMI2yi?IdB14LCQ=-}aqGvbku+Z@4p*U$6^%(O;m zrzWSD8m&=C0c}<3Soq9L$Mj!%|)nh#APJOY+P89kCOw}6*wZ@>)P`Yg|Sn~#70B+83EZD#bMpx$!5PC0$$qkL2v-J$~RY?!`0H{?m|BhjjK-MX1nBibmK>g ze}<2B!%^7;WVqod%hS);F22%w%g6cvY;=KuuH$eJ;~@`L!j$7V8R*-Nak2!yKAb{X z`X~+-;06FI{d}F_pmy5f<2=F{2h-3l^sUDdxN`uXNrDG7&a)2S)+!p{%@YY$<_7O&4V+Mb+pmf+6F8X8_@jP>c zktXZg$PYj~_LLT^-aWWG39F5-fhuXG)^G&SUau|qEBk2nXk^%P#yML)!t0UPr< zg4VAN=|}efJ%JSU5RYE>1z~f?6#u$URDXNZbO>g~YY^Zf6yP?)MEJxDBETW6xwdjQ zfYkR~f5UzVa69?E^k{QwH}K9kA=j6-97D-K7VdTfF)#=*D#fa6K?cf83z)xE&{#ld zV87dx+aPn6UX5jD#wfD~7N)J;qQg2w`hfM5qmIJw3L~vr4ocYR7c4Ao`8YV><6tT# z@Cf$;S`1(?X)COA_P)1iLfB;Q#C5n)yZ}7om|w~-ZP^=4RsQF+3lTf4HOvQT6m|wY z+fN}A7FcRov{)Wm?dRo+6ULZgHXhXHY3j3j_yrz1lo#y7&pSL=cq9iOVhX4yvLngk zBE~x9My+2y68cMwaYG)R1IZ8^B|Od3xiVm%)|W$197Et=EHuMKOLq{Jpg&x?7tbW1 z`*-JAAp+u1`2SdEt{RWEVQQ1Na|Jx5!+FGYJG)QnGfGPX2CIvaWp_8fWswe6Ge z2c2F0@|^8j&0w@Hd^~mXb>X6cQY9wh%qwabh^aP(Hc#wOQk|_3zbpzO8?=S#Z36+MI__if)Yp zPg-0C3=9{|lKc>=?voZ7i`j_i0Nq-uo`KkV>=Vtg_Su?Kq|s_mfQm1Am2P5Z9Z>9& zW*qWuWq!5-`?^#U?^8q2*KOiF8G=5HKn0N6Prvy=8x(wye|Mk8Zn=`sxo;UST-{s` zoKf;ygNoaNQIIs;9^M?=!@gcmeH$CPc^nIJ1`4Hs$r_}9S6S4?c`NXXh3b9M8Dm~6 z9>Yb?{GEt_c$2Hxs|eJPzyx$3#Acg-JkTO?5cE!MHeameFV?g;MhD6qj3 z8tv;TrC~%cTe)Pbn{})dP+}zjBR;-45HRFpX&&rY@}czT4(>`W9l-My!$oP* zLXf6pM&PC|>CrN0`{c8A#6FW^>jdi5@c_(mX>OAn?MuWv`oA%S{Sv6zex5%+$4|!$ zsNxR}TD50DtG;=SBJ$_mz%38u&m7915_`E$HFAkG(#)K3BdEQw_no*P$|!hKE~aCV z|A&rY{J6;;LN8ZG>^SM1%7><-XW%MufbJlsn&e;id#BNnyD^N(%n?tDKfX*AVt7M{ zZJfq7PNVj<7N|(addHUleDc)FZ2OZwNDD*b$EH70T2T`TptfX{1g&Bee{Pv>^jQuo+yU-3PpD= zriF@}Sk}FpXIxE89T&NWig$BK2mtoibS^f><$%9n_Q(FD`J$7*;LT6q1!+!y1B?B( zUXzv+zL5#|bahi&6tKe9x(4V&d(D7Z)-8t5TKF@_l8^=NL;g|bz}KPh?KNqO$cGVX z6M(a;0Z*c+fn?EE%i6sP~GQyrli_RKEv@x;qr6$Eb*qfufTbsijQqup{tQm#$DG9Jh%(U`JI^mhcRXNbFk2>jkHZcm^HX}9-5E(=z_Y*!-=?KfG}E(;(jNUB!{0k zr7T4$L9@8NRSX5fc$Sg4oW}GR4xYT@@AOlD!MFm%)F+&HuP0g3*)iK(kFe z1*{O~ad36Oujy~_$LoxhnBIWkO9OCBZ{I#pw6c^T(4$fwyc<;l4=;@O`+ioXn-8R* z7`^bC+!<-QaZRqvi4<>$rv_q<+~h(j?RUw*XtpnU17=g{+w#|)JI?Qq;=vhIQGIdz zV%W$LEgb35!WVOq1lwzn(g2v#8*#wu=9O9Y-<#Zu&E<&|2aUA#+=j%>!J9Q}H&kT- z^C5-fod{pOh)tUG&KhaiR=9vs#FdAJ#D|yU!B%_go^`&+meWV@5T`LP8ro<;iJq8} z)kib^5RpT*@UNkPx938TVmA;j-Q{rbVOE8YV0mZ*3y1z}C?3^xWj8x)${_0$Ulp?(Pah#>#m>$7XgBVT8rqSIs*YM2cfu? z#~?q*!U{2Si?}xpU*N@qJbQo*Vi1b{R4?l7e!)Dkf_}>qmnwR-UUUY(WFrssi7UQ< z_nt(^iWY$Wi#S#@u-x98j&I}N!#4~wRx^%$rifGZjQ$1na^x%d^xXIHhIrr+n?dA7 z>}e(+z*vKX%?+R=E3^1%k`WOAfjrRtaM9hbIjadJs!Om~e6Wu<5-VN6D69#++DwoE zK3dHY0i41SQw=%zVje>@6{BLr$6c^kk|avRF%6KM7knNYjD5iKvZduqJ3x zMmCVXX@5*t4&$A0QIRBrZaRI@>Nx84!Yao>v>AA9uNKb_7lIDdmnx{A*z7b?mZtD= zaTZ85Nl>T4XgeIzc)eGyRh;<6V{{2uZE{S>!Fx$Y*QsY=ay^+&J<#7L zSA-MnW}rV6sZu)DUo_%idOmx`xw@r)t#6BP_AOJ2up{BUsd~#^eZWRyT7Gmy9L>Dz z1S<*HyYdCk*iNak1cyDhL`w!VifEaqd;IIr?G%5@e!MHO zu4pS6us6_cBP=6v1_vxpd`fC)^$Jo$RW~exh?#UN3lUS%{y^czS>>E5#$X|o z#gQ^r`e>*kGC5R`YIS zXa#;TvDF^pXJdupTnGNffx^UAXY;j{dErasF17V|f`hA4R@l|A0$$c?zC@B!ki;Iz zS2$l2uP_4OYB8o`?6B_#rP~4gKmy`+s%p8dw|_+rV0>;D@QOuZdgUnlZ*nm=vmm<3FIC9yRnQ0O7H zhFUk2V9i>Z=WD-iK){K}VhCY0mEI`a{;=H>S2n}|qf!zZ=+i#yQI-u|RpgqEA{;9D zZJ5$el~I1vDZlAz>DJ`)V3<;3fxmP}PoQiXaIN%x_g)13;JQ~p%^-*|h?%gOLrs!+ z6`URj@ijH{P=4Id_7T!Ba6sp)vT$q+PK`!bnb}NZ_WnSpYNB5YE?CT=cpueb`Of+U zxgWlY8j7mZb+g~sOlxMg$pz)X|3+iwKGvGAsxX`x#oq{EJLm5bFJoiB`DF!d9g==T8;GN2$j0Iv{rhVtT6-8ea=J>OlR-oO-x&s zNNv!T?V=26E+w@o{4HD>Be@P#W{^b{$yKg*P)B6R1Yw~SBBI@gU80$>)jl7fCuXbO zA;01>t@b48g!{ohcb#zIcOO+;7;Mgwv%0x8wUe_R5QmOf{{5gJ;@6|N))8AW>=jE~ zRC^|-uu}LnU2I(kClbHL5x-;!AUq8EIR#K*bGj*fhh~`BKcZ4YO+0!YWFoFD^NwM! zT8w)gr}hyuyAGZ|qdP(_P05J-3#g29rrDwjF3Eu!IZy)&;+6qx&#%Q^#V#)sX_NdN zWX^{5(Ej~b3Rx@kR3NIkSm4LCfZWw#CBgyYacs_N0}davfX8QEDR_JeE|Y=6qzEyo zsdYH;cw4dHac|)9B}{8(UMiRA-U@}qkeFzL1EEwvNZf&1!bSJgJLBF?{z`L3V;qop zBK8U{U4rD!ipN=_RLT4d1Hb}_ZQ{tjgGr3%=$X9gA^zOF21pZI_`LT=%o4fc zvO!E?-|AdpzJ^ipbXSB&c*c#CKjs{nc@HPK*%6^XM4Q~5NPpNZggTd)cM`APD>y;kpdlhD{Ms+_WQkuTpu#MZb|` zl+V9>E)Jvw`TRY+wsV*qB(30K-!8RMJy%3w=4_BiWthZL2*LSBE~c z9(3umJhr1u(dX4ffFw_rnv~G$W}p-nP#+4|Me=in3}dUFw==$e;x4XaIVEBJgyr>q zeh1>sdy_ZDisdArWI?1w5bZw`Lw@pC2go9ZfWbS0M~1*F(-_Wi>HTY74AFHu$o)ZrRV*V;`H0^VLVN~ zjLZgy8w|R+n0M);)O1{v^|9#~DKK8GSZ3feW zS3rfwoR&k^51jIVX$(rZ$P>U7<9PMQG*X+>*Jb#P*6_y~P1sXl*ITD-)h2D#aA(Bn z@lXjZM$%DMns0;|Xv!F24r}sb^W7)i&Rysc{SJcT+{wa*EjEs$sAxtpWIm%A?k0st zr`AO3Q6Z(eveGtR7J4iYYWbK!$NLs{dsDaW&VYDD=;V@7k8$Sj&$YSNQ=LR>1MG9q zBcD8I%aI8m;6i8oIEN)*kbdmJNPcuVhNQ6H+qg`=RLNFJ!Vm1PKZ=cCiciKb6&E#r zKoE#MbPgdz!weZar)~1YVulJeDp0<%eh&GwO!bEss;M4ecc%KY*S6KwdbU$P>v$0P?uAKc$(E9WGWOse{z@^pO8TSs1EIahaE9eTu~_NbyI+d< ze($0bRFb=n-&li{e(YyBp>y;*d)s7};Slj4!Y)IY*NT}W=DxH~rnO(<6-gVr41H1t zZgjbkCV_yV@(G5sd z7&Lp;f}}Cj6WAT;f6CzGxy8)9@-I_U-~j{9nm!b_FkYlR1J3&Vqz`4HQy!8EKW;|Z z(KX+|Jz-xoJ}j+1xR(Pp+XI17p-Laho7D%$i6Y}U?-*WzDslyORLJ}J-f42J@lM1w z02Hc|XIOyb`m#49S8_+Y3V6wp9kRwtUS_NpuQqb3A%uaCUQ#TkrYi_#n&8HK?+RYc z`$Ep+YPK>GuywjCr=<*k*f5IbBiY^v%< zC4`wZ$aPzeYLhs)mkXO1K!fuCeh zJOew!`u4{hL@WKXhrns?MG@hm@sbSVOy*})PXh#^(p2zYhyLDFg|0R>?OSXpY(or5wjVGq?n)6@Kr2j`#)f>EDvs ziWk|le@kW%lD>h=vbHEP%P1nVcFD{>#+FHEI8y(PysicuuevpXydG&Lc@Y)~J4mqqkZK(_?r%Z6yVSw?Zud5ApzV0 zT7`U#pY-bYsGqyJ1r*oh%gAPntjr766r$^p5i)Q472s=RzE&^^{4;xnGsfwSc;-2s zMQd>b`|P93p_T2kfda>8&%236o{L1F&Y}|B*wc`t4i)BCBt%QNVk^)}<_atQ^jomu zcl&nLkmNuKk4l-c8p%PsVrO{g*ysF?1Dk>UH5bEK04L47-SELFbPmQ=s`UtD^Sil9 zHJgg<4KP^teL;2tH+4=&H-DUp4SQ!#ZweO;jkWoSbDTCmj2nByvn-u}3S%>_{m(f7 z=!yin#T7WTRT<@lr%di{>S={nr)i7o;Ruzu7X(lThZ^YBt%2U4S?&qW`EYU$P3xKJ zbVhs$Z^&r07v1-6TU`JnlNBr+=$-stsp0iT-)Vooj9bDemQbwLesHL0sXQMYd>`97 zFcDR9JIU7a!ZVWgPdIL77I^{Jf7|TYxaIyAw_=Y}{ESq*%(hk|pE+pW%NO zNlL+g0&WHVC+54&m8Q0bzsT>`qm@`z(a8}Qoa?r7l<42;t03;Bs68)#@}9isW$TZz zG3EMhi5pYwxvZ4jA;Z3BHVF}T(M2SWA?>hK>M!lM{t~BtFAj2n3IS>fEF`YpQJ5lo zW9)qyNp+qUud}OLC+r8mjn}$DhUxbSqvOgqeR(n^aDmEx*m#oeP4e)y;qH-p7_kbeSh?9ZN%vL>n|4M+n28omS0W`GZ6HDZ4% z7~S_dbEtnxew(BE2M$b%C70shcnIIZ^uzt3oH)16%v`ZtR&BKXJdIlbyBt;6$0l&q zMw^$F{>D}ulxxF@66Zhvj_|=z>=4mBx}j%qR>8&~KH4ShwfI@$>=&8lT}DBi_*sZ; z#vSbYH^F%z^tbF=Yz#-b z=5fMH$fZ2&+zbp>?ZOt4okH`{8_$t0vbwAq7^Gic0x&-FSD{*{k`kha+ zwED?~l<{@0yUGAqpcX0v_(tI~s48m-sOrgEKWqbX$Wq!Tszb`%I%+q*t@fJE+R8!L zAilm}BjS-9!A9?k)BeneN(YW6v=Nm8;~+1`Atj5z;#w{O?dcz|YLF^Z#2_YXKy1b0 zBJgjns3i1p9bh+vyaOsV{-9)Zj+!h~0@c7#G#`m z_}@E~7Z#%}#WHb9$ZKFehG}r>=zQ?kp&Ow11GMmc7de{oreE8H3}=27%Rt=F(W$bI zJN2u3I_{LL5B?qhllE7%$6XAOIXLynsVQ}Hj!Z64=!H&UjEGTI`T<}y5bfCqfoPZg zM6qud)0oWc?LCva=8M#Lp-UQ~kY9lxX@T`oxFi$DKId=dtf_CSwksCyUY_WTxI5xlsK^a>IT`v*wFx*RG>=On1roIw9WMPFmm z#KS-E5Vw!P$xE9*pYSoZhWBZ*r*W&CibqAXXl0}UZPvqrMmm$T+Hc;4guq?$4-zQ4Ez%Rj<`|4tnOxZt@zwU&tq@ZETygd zyy26Ki?df?f4APSzdIr}<`~)c>DDb+f1b#gz6bKw9h+^^i$7;b=g+0=@SVd1unS@Y0R`oG2aEA{`NKX?5= z+{KjEdqr;|)YmSLX|Xkj#+BsL5rzb(bci9*C2@|Qe5d%&?33^VxUp|h0r@u^K{4oE zjUIIjV#o6`Io@y?+fuL_;|Klt(ce;*$D8y6*$}rG;`2S+DEz-?F}Z?^5jc68BR}H> z?$503zAaLHn2Unw$J-*&{q}v6A$PE6@Nd@!p|)p{FLXH zYoBex@ikz45&VH&%zg~rDc9~w-*dChYXpCvO?Z7-akKpHkl(#2 zU*O}}{3*}k@0}k0PC@CH727@edq{p;d!m%fitF+4*&FzK8-IJs{n}@H`Gc*;+GlU^ z=RN)$z^J2532n3PK=;_T>tbzlo5Nb9$StbPC%u2|8{R`naV%@nK(@C}he^;990(Nw zQEtTFv8)+ym1|YI*{6ooa;Vt++>P^n^Z3&UJ)Z0?|bC86;2 z-x6@Jzh=wIm#bpPKX+hA7N0|fz5|Nt4TMm~qTl?^+Fjss@Abd;$iVa65IzNbfiGpQ0Q-^$x#1&gVA@IXSEF+(wj~l(TjbxRo*L{?m;1Y zcN$xyN@OtqEBx>#!J+{qH;q`zoLC%Ibweo_l9ZVb0Y6^;8$hv`zM25Vd3X!9uxLyI zC?364fnp-yUD4>PIa2ilWc%q=`6&gvsb5;RlH%o(bGTFP-yWkkwE3K`8onKULKcsnHr zBn#&saV$L+Fq+!lj_l;}H5v2lKmGC~q>DV#&LWjep$h*xQ<>84d;?+564#5{E(mhC za?X+Myg>CbR*m(PxR;}wp=lNHTjpV-8-3Uu(-h)}^fxn7%9}#>Se1J6*A+0~N+b&+NQ49(ihcDC- z#(>w-B}`x~UWQA!sNaK*WOpB*p`fJK%sck8^k;z|8oX-pn$GHTt{{hi!5*FYNtSMo zf(OGW(T{>qFcz)Y!)n)wA)ArgjoHi?F8b>tmXBf|Vfo~E`7!$`>Ij(kGF=dR(B?FA zb~KI)S48;$+)sSu&sY%$QNDd0t>~E0;)Rd<=EA?%uJBuv3x{T>KMMwPYPFA_)atHM zFyvinwcFtBR&s;6rlkXHc-FL($yey+Rp19d0VR%_Xg@oN=EC}g>^$_p(&*vS;CCb% zEb9g^R@l_v5&Of?`GhqBGQ30JD``YfADEq5TO(lWeP_2x*h^g-k}AJedz@UJ)xsDu zgC#URDl%qEB6IjOZeB_ja1M}qWGrUPvR-;geTGfjBw_6o^RT2jfHJP0=p&4 zcp>Yc<6CGo=QD5$?&xH7LpFx^CYAhS^7$h90h7xeWCNWGChMj`VEWJfo#kPrXX?{x zurp|rU5L{N*`guXGbeRg0!{3Hz2Bj(rOS}Vp{_S=!*r-irG`569&&t-xj2Mm#$uAN zxtJqwEG8?^%^N`3OBH2b1q{13XH5p)yHgGD3spa&DDG;h^Az2=k~7=&(goOxS{=8_3x#Z z(ZBngvc!eJ${gL@E$bmw)_qcz9xH1e%c7gYOx)Pp;530|{hTG0I3-=6p#Ih(x1@k7 z={zav>jiGB`ne@#v!r>dBo9kE@q+5#`KqKbbKR0Usgh2Sl3t3H)R`sGzv6g5>EBRQ z)?4dP*7HtT9#z)eXS-#syg^{~CbEQ!CdSHY!n5@672Mc|=MpJn<9E(aW&Cdb_xL&G zrexj$k5n&OkRnIBg3DnhwD8K#nvGDQ*nm5=FQlP0Y0^l(AHur?3Tar&Z?+$FE^0n| z@dTx{iQaz_eYB$rP?v}E?cB|nZ?%Jp4JK0JG_uq zD^*@WJ-P%eZuhD{xU)(UI(|qC|B*?;CvYaW2p!hob(Y(JX{iW19rA}-eU;^CK`PXr zK5;n2{&p?=0SZ?Q9n;CGL_@#!RSuMf_Hx_!7gCYcJMyV&qr@PI59l|v@Y@?**BCn9 zs)ZRq7OhUx=I`X4H8{P4R%_wk;iI%XwuD7|kK-xQ{)|}rr*(?;bE2e_c1YP(zj$CQHt@;+!vG7hXE z_Slz#2O)wt0b!pXzZdz1{7I$i8UJFZ$KIX*eN$Fwun*&|efZLL{x_VF|3myYUG)2I z_#gcr$NziX2KaUMTmdYz)oqTH+9842al|xS8#*Z@8GrF zNt{HGCrtmkLAStX=Eaky7e_wcPmYrmBaP~!e3Dx(l>hM6;}dnCG+bdf;Q~sN?4LIK zQRanwnx*H#+>dR-&eq7+XzdY|NvnMce4=SE!+}qukq~DXVUNAl`|>5w_B~k_-ivKZ zt*1`TLdY?^&BI&WOxqRhiif^@K(yDYv+$c))f>O*RoK%^dqC<|$X~ZY{t_n^&IH(g zC85}2_mE$?*L9~on!sg$07odoZ0~CHYl|F* zIS<;M>nNwyeL_=zH8!cK$@URx-!;in0(^5Xko?qd4VCjX1L(Ka`!fsZVhtKmi?A1i zMlke6?b$j5^Av^9=;^XnQ**hUhDxJPxcbp;oOwHf0rivw1Z-_x0;xQ)NECj*LVC=R zkT2A!bTGp8!i*lOguh_X?Wz@1q2KDFt(=moLVhvuKh@EB+qiH=TYdiKB6>r z(ZXD-Aoy=`v~vHPFRL=CxybjL3D;n?q|bH>cPO$P=J~ znu}`!HIRIB?4CCz;u#^C1N!<7=MPM|JsJPNfzDfT5!eI9-#+oQlK*jX|}tPXylqp{Ht+;_03T6{)kEKciafPyf@Cr1ph~){w&fbkeolD&z#We zB^=PI?)Jlo)Fp7z%{mXoTt@z^lm6*V)jS`K|29^Kctm+hBCH6XB%|3VNAj1x+wHJZ~|kDGpKJ0YgwJP;C%cl`T$NNeA;k42duPB zh^m2W4+QZmO~rk;lGFwqopcOae?n-RHjh!Ocw*$dV{9r$4MwWEEc7Xmhc!sw%b*F( z;geaHflJUD6XFqH!2vr)T4{I;(R5o{xU=#S$Jqn=Hi-d%(A!kBSc8N4PyyF2i+Ox7 z0dUTT@XDpeW-5%KO2Ayeu#vt}EA2FBs^}#0Pp;Cy+d+WSxvyn08^sq$zL-r47i|l1 zh_j`*fH98^1pY_f1Lg-Tc?5)@I;OtaXMaeK8KbE#@>hJ1@pl~~Q-&Zv^{CdarstY* zY%M`!e>sB>o7Q;v@GKq_dINuMV9UVwBiEp$_`o@LYWyApTrhqUIez0fe&g6x3?~Lr zhwUwdQsc&sm%VlJ{E}F@0?yt_>bk5NNopSewyW`_Mu-u}7-Fu1P}9NoMtg&<|Aha@ z`ZTR(G0Vf8RzYs!(^eIGuPle&ryD%N5Xyaf^e1}J>Jflf_#-B?1|PVkLd*kQz~wG4 z!Pu5qzEm8Fwh87cNjUFCBt(35Yz4p!VMF1*ZdMQkib|dFfbh$z_PfEO*69LY>cuvh-D)G3d)KPM#xmZ~0ZXOAETW_t`!_@T!C zUc&BM#{Xt_{9k55jQ`kwH~!QH#>Ri@R7O?#4r9L+xuU-R4?}JTuvCo?Hu(2$5V9K9 zYj7vSYInumcNtU4FZW#c-G-GBC{Lp9*I!TAA3e1*n)Xfmqn$0$O(7eoz<=Q)&vY`Z zOxTL{I`5)q1gu&no2uy|p&rz0FrU-8-J<+X?iD{V6uI1iXln7EpXsj=&KPIwUmRds)h4oR95%!Z}Zn zg$MhOG-UW8{X+lT8Bi>#*<5u2y%Uz9aX1B1=H!{@s`V3McQMH7sc5j9Lr9(RD?sVdT?jTC)B-I*V}EJhTcr(OVG?~eV5&1_ueQdX$7!_cA~JMXP!W!6oBg@0 zx12sWMU&>i3t?t)^AZxeFf1G%a3&^d_Ej1-yrgFL)C#>#PW{H4CG1#yFKyQ_KeKH%y|b9!^@NMl%Y(D(rK6~wXP zX3)B=4d;n^DlZsm;e$2nIG9rn0Ez|->95WG8LDB;lh&{H;2o7U#V9IZ>{aDnsvhjm zaJ7GrAI`)fq$K_0QD_}vS+WPh4`fD~sn>U9=$ZTQ#80gVbiU}|<0ISeJ`G^2Y^e8>L z8(<&pEx@5vI90u^iu-4Rg?ph^#n)irK5ZUdbb^JufEl|$7s0#+B3bExZ8&IC(+l6P z8Vz?3p2T#(ajG9u7xlAGz5sI1-iL-rF>lC?6a!RaOK`9W$~c{6V4jmQo^Z<`JI+^& zBZV$R<1>LQBOPRMaK)-j^VLe{fhkxCANN!uatNVn^Z@g4*Afh5&pmi9oWEw zMt}-`)U8QaXMOFd?2qL;#DiJKhxDJan1xMhi4Fc$%n8R95BgzWh6f>mefDSa9{ggT zJt6*fr`+yCj6-{YBse6vVK?BRjzfYTf9uRXEvOI$IP$GCdvgb#1PXsPp`pMZK#_JT z$alF8<6wN|5I$)}eLK2iM4-iN6qwgDglphGz{G6Z8`Z>=B zgP^Oee36J3-iT3Pe`s(I@Lq#N_NG2#XX%!>KpfLI!?5i&VR$7j;s9?x3qs7_0P;Ym+T>(X>P~$`2 z-)7%IUB%w-lLO|Kpwm`1sPEd;TI_D%rid^$H2|kVNN7JpA39@)La?21>JmIr90W9< zWB>GOr`N(eh~$ye+IL;xp!!dDnq>Zw*#AmQeuH+9h2(H{!cUd=jMS|@ZRPvGj}vUs zR3FZ>oLWE?S0ZXqJ%Kf+tgC<;^u;;|)rjubpg#BaqEfzA$(1h=#nr;NsQF@F0i3%#We=-Tr*AM|T4aXjyB^xdnE zf7`!$Lw=9OfcE@)1O$~&{=8=T3VHliT}n?_oZqp3@U#7GU}@f8ywewhTb74y57fDY zk9F2&uLG#0C=dkJ!IS=_TQ~lTF8hE@!`GLG4|L|}4;f*lor=7kVk>*)aBI**c}J_8 zZbj)(!`QEttKyybYY2Mr99HoGw~{WC%1CWk2(CX)3I*Pw1K|(4h=h-V5w-coi z{*(%p!|)$Rd8@l|{A1L$n!1p7kM_kF2Z`rw=OvE_0hj}DdhA1b;?M|dmHBE~$D(Hf z{wb?i;`{}=!q7lZVVP=FHm`L?Wg9vK&>y=zZwu%yTOYsW6%Go<>#!OxeBs`>ENg*` z$ZK{Eyb%D_EF8IO^|&8=AUp51>P7;TORXH6=Og2L_AfT~#m6D|ctU`hRoy6Hl0+@y z=HlWlo0dT)W1qOn>9p{d3)&NzqOY$M{()260aO5g1>@lU6*XUxe|UHt8FU~=DX>~K zOm9tv{hZuU3qOZvaFf=c!D+6l zU&)Y$shIcLkipLk=AccwF{l+4rAB9yljYi<0#s<36WjtFFSBVt5OG4Il4adD-pT0+6tOaj37=qmN}wSo01jT)M|19}&RGV-+HM$|!Qij&MKTKYkOQJ#ZJds}lYjs0pZPEfL7(UUlDSpBo zAO{cW1T=XA9%9Os5%Lh5pN8Twfqx0LD94pnG-?udx;Dvx^?W3!uY4qZsDpOh7O3+T4Zedrb;AqC#i$RjhoN!)vq}4_>=% z!Ri2tY-!No@;d*K`V6h+6Eq=!FxI6|SZm=SOl|ep0WBe^r5nf*K{MK%Cs7OssEot_TH>B3qs88VB^K(0=0^O%0C@Xvcm z#TjW0`?9oE&8axVr{C01?}n=sLeok?R{Bq#!tSA6_3yTs88Gg^eGOU37KKGa@xn@g zi(_DpP@hOIKNo{UJSDypAyx9oXkumfgs1Wn1&_2H*fJ9Nk>KhcHr52WCJd{w#Fd=J zQC|hEts^x&Nw+Zg2cIGPs!A@xzN$m{dmyRSE2$!k?@F%-1fPNjtebFm2kwxD3%UV6 z=j}E%YcFDPu72?4fTE}ECh2MW8;FIJpG;P3>1u5(P2&Dwh4SVnr zZVCU>FC3*odgj5qmFG$tZtP3pAA-mzUJr_a(kyy$T^&Xv61_VG!1idH0X{DVvo8vL z{Rs@oJnY%QyS~~MBTK;+3csR>{or|hp>A<2#-^z_ZxV7Cj6&&ahJvmJVcx_XhmCbr zPv~Yg_U@8rFD9gwXl9?rPTL3l9qo@lS-v9u<~wLc@c?`qvjgM>_9Kh^ptUTYy5nO2 zf&CJ28mfex+Ogg&`&fBI9m!+G20CKDPm~*l_-(diRzTye&TaR_?zU* z|DgXnrT>7)|GobE{@eWrR%4jCZsDpbHn=hV1~s-;(}2M(FG>kb`dJK%G0p?f-*fPH zuCcxx`>=6$Ud{HYY0ERJx`y|5#v>RKkdT=8-N#$4pTMvj{tMq5r8%D_OtbfMS5>6I zq>_zzVZb)xAu-Nxw1hvXum7Zz-*}6j-=l$XK$)}4>&lD%Fi@M#CvF%9-5E<3 zpw}lZf3NMedQ0o4lT|E6k2`!Z>5u_ z7X!Kb0z|Nn;myhsl>=14ov5yNH2sizrJ6W6w*d^^-|{+y*X6 zo!reII<`VvxIWq+uRopCZ)z@H{B~0B$*{DKzNk~^_*2>g>!Y0tw%2S&OexslU>SV& z+Wl?O>B_pKTtXz25hp%0g8tkmLn)1iFm;}Oo3?UTcR1yJGHDE_lJ3%gRy3d?+8?jk zfXmSkrvZWPokGXZfCe;RGnClyum8f1Tn7yRTp+7@B)5Q2Y3H6oam8M9s~U$Fa7`SC z>dTVw?12tfnThrd3en$W-*ENPOX``*x*7+dh5!fH4{CQ{P-a~oF3KNI=>wXs-iyaF zcupOqa=I0*7V+Hb9l~q-wXtkf9Wx;bON&gAdr=fo_Ot3%$O{ZbGvp&kMKpq5j(0p` zZ5b*Jn)fe9MlmA$Lu;z>>1=J@lS~1QHUu*5{d|W380#HYlDey;R-PePpFQPN|Hf*5 zOo@7FAAr()@>x`~`;aXyGbr9cHkn1g5wBbc#{<#pMf(~SN7=X5AUl7e+X4YWHqS6HosiTgF#FT z1);w?o$vYhGKgW zz98x~f$O?nA!(I&VgRbTa8d7{$if6}8-zbjW2kQ8jp)DOkVD@$96JF$9}q{zt$M>U zKm?|K2if1c#aY=XT!(*;;5zi5_lSRugYAiV?Z?4s9L$p3r%)kGn=0u}Q4?4Xh{ousYs3ENnuW*ity2w*F72(5?7mYodX>oPnRY>zC( zMTVU?B{#Ik%1u3P2wN$~HRl3=(^wimGBR$6SF}US5kNrTn``i;--K#l!Dbm>`?ft$ zL4ljyPE;KiNZsxxAbG3is&-PTGR4!I+@zrUa+5_kpj#Poec7v? zU-IVQIT33g^D=Kc#6^H#ysUl9%l(G6^S$)*_tn1aT`1R=yikI`R$1eH5Ld9l`QC?c z!{#xYSf&#n#=t^+6VKd*#gqxy>@s%y`XlQzv_;O$uGP$;2Ec)k-30dKK8SzJ1awO{ zM7ZeZV~J^J@f0Nt9{<7XY~}Tw&}zwEqy1pH$BKJD-9_A~E%QMnu$%G9KE;b1Kx4rf z#1jQb8o^=$sSvBUkS!F8t+v2M$-sYV+_dmu;)$8v%xOlCt$oBk@7kBrnFO{2$Mje_ zU<(d5%?er%q~+2E zdkA!^2mmpeur9*D>UDr-EsEs7jiC_lV*JtV-`994$kpuL>~L=gszln@E6)yX@M9uv z9FmU?ZLloe$o9H4G4kC+nkc3JnM~1z4U?wJ!9j}@jT`qW=H?Jc9wPF*sF<7BA#mUw zt0WQ0Y1WtAD*w`B| zA~L_)yYY+%^>HK~s6`5)aJxYs9AoU4KaMdwBcCGzZ3M?Bau)Pm?dHtH$AI;ew-vOZ z_+K?$9jgy=tT=^oq{#o|3cgc^XV5oA1|genLHO&^zvCDXud|I$OdRuAr3AGMBbQ&^Q=N02Cm&1Mi z;g2rA%DST;Tp4}|pTrQ2bcocaZAHgJApcT*!lqxwe49VT=U1KZn59=3T^gfiZK?sR=6M z;dMTCk6bWd-4+TM2k7V#81O;BLKs>ARtEj(`vGG+95o2FfUyT~sYiyOVF%3R&Ah`7 z=b6F6ziYEMz~T~wd1KxR-sEiw6uw=mjrttED8al4Jq2Lphu23h9vvB`RtVwd~8Pp`6tN&O`(JjIeiT6WIeAw1N!+$xpPk;5X zuBTUy1p_9<0VmZ(c=-R}?p@%cs;>U;1QH2KoT#AjRzn+=cm)fZsA&^TWJV_%mDVWO z#%e9~QV|kJ>xICC%RFH;eQK?(_9>6GEp4q@YZa7g0u%yRx2h_ELcDH*VIvi z1b>=8#gSZI+hiO4Mk`F!nSMn_tTJQ`7ZE%@^@2(!&&e`nQ4}63vCys;YRKV`DEu<- zz2S6*KrIeo*FkyuqW!K7nx?o@!dA2{@cW;X@knu|opegUU`1A}&BBuaj%HP$9LbeX zF3oj_P_A-!+wI?mxgv1Q=Mrt_2uq(A!pT)oSXE`$#ig#~Bc=6LwAEqun(CglEZaFe zV{y;bWnQVyIM?Dn(5{b^=5f{Hp3l`5clBKBxjqXJIIZb8LY0tX0|RSqVBq;e2YrD( zF>J*7f{mM!47Srsnbw6OXOzR^$es{|Y!SX6y-Uw*$!x04eYIw;-B-8n`OMSSXAnw(YOYM{6}}<%ueo$cGb3ug98)JxAqq&rYkKKEDLhh{1<8H_p^!5b)Cc!<7)VTlWLP5AoXywVXi4-UcN-N@JD zaV8QS&2O6T!fugxa074mShELQ?vcxJ!P}4Q>@CZ64 z@m7ybza+*%D&{ti1a`19VubC3pJ+tk*wTTdm&h6%?Q?3HXd-mmZ`3|(lt)7%h0VIs z9}UR66M;`ggo83VsouFlci2af`1<5@KJrn(C+E7vWw}1VMJtT_LbpvK8~`TMNzJg# zZZ2dcZ#tl^;xD1uvx(GY-MVUMZmN_rBDFMIeJM11g8zCL3G!NL3}@emt)ZFc7f>v5 zDJ>zq+xi;FM^R^A3ElQwK1CRpq$0`QYwUW5=>lLvnh)XkGW&^^y9Qd%p!Y_1s}76& zCvi>F`+>r7l^3A8q&P-C{c1Ou~oWchMc_eK!};`yRVKQu-lR z(fdER8of)*6DsZGnno9A*$5s>#&7Wnw<9#?;C*|)(5ps`)~DccrB~JFuC1AC_vr1P znHut^&$b_@j_asxTi5(qDMT&$RyMh4>E&qo5U+jY_EKSe!+r?yUL*vG?Sf=`@Tyqp zQ`01LCuj(}Srl>PrkN1bY$g~|H}}amIRrFKe8SH_zFiE`g!3KBuU^z@!}let8O!DZ zSn}U2FsUm{tP8|aFX`Mm~X`tai3pomIp!L}sAAuvJ^^h?X@xnavUbP^A zzAfxZrf4cw*=BWPn;Wy9UBet1XDiUGl_|Cey5FQqiSJ-3`W^4RJJranm8?eCOC%(9 z(0}7k>G3@X3WpOnwno_Cx8vnV#Ws%pbHg))|$ljF?z$7TT!uodfX1L(>ZQ7q8c#C|X(nJ@ zYG?=i4*IdSHuJl;t;mjzP8eQILkB73^>DxP2QAjWj}#ot$#4PWD| z09s_cM+BZecoVCevEac6 z=LOAN-hVUasF}4E5A%?l{)cQ$)M~i~1d|@7_3aIs3%B2H@7f=86Ziv7Ajfz%ofH;a zXNkjU0-N-sjPr6);a*4|`MRF4%FicfTRlI}oPcl->7sAX48FBPaQV=|)^yXbj$KO3 z5qQ%kz}4a0_ret$nm((AxmdMeL@3A9=jC7I(7+yIFep#!SzYj5O4t-}4450ANTJW< z1jA$~iC5L#%2xh{=4h9Os!L;(=XIeoU9TENvUz+_PwB| zm{Uq8rVCPgjq+rhX(jC-e>EqMZQ&Q=i)!z1_7FRgw+oN5Mra@ZlE>oz_WgJ5`?Y(K zgIn&MK|HFx$Vcoiv^hSL9EfUJ>wR#3HaYa#0DZccR_YT3J^UD&2%?RSfmKA~#4zAr z;iq@7yZ3I>O~l=p0Kxt!yW8l!S7V<@$(ZOK+5CBj+s#U6e|m;Oayg#EL$AxfsnE^e zxiLiaj^maw*$1recl)IdQmNbgn|*@sUA5DA9F1>4`t{zjpDVqqdLM1{AAQ%ZJ6$Ww zxWSWjT_vs12(>J{>JOz_oe}~$0I+yeY+s~wJ zYQuj)sTzXLEWY6+ZhV);(j)jt^ zDGD5T$aCdv^S!H1CCktb9^yT>fp*ZzZQ8xSN~YIhNDJ-S>yvQeM#lmO%@-YHaP|JW z+%2w~Del__!vmdG7+6PIc?Cl>`$*`v3E~~SrV72x=-ga)8+7h2eVJvdP z*wr`JvCDKm_i5F|OcgbyEjVAljp^n)a=zXq=PQvlHKn(h^YvC!8nmWw)~8NIX13146U3TQOGoQQ*5T{O^?wwXNFsU*N)(g96vxq%h)de3$%(Qf>TMmNTGA{tFyylrjAv|5N!d zrhR5_-OdPa#xl|4QpbUA|Dqk#D?XP;$Q)On|M5J{f8MkkXV#~GhwC38u%j|gUa=NIr%u!CUG4@Z+tp}p`QcB%ZQUB>iqAqi>D z7~ZYOE6oABWhGtEE##}N2KhRgIeNYDC#Qo>^Z`$>^N|s0scrm;+f7@NUiK_uAuSa1 zR$Ekx3uVx3NFlF9A9w1wcY+_D%La|$JP&W-A;Az&VluMWANzCfD_xWJUtC+jIA^?N z0xK+Vf#IBgMFf?I5$HFvBq+ZEG2ZjcI_13LIGjbp7*FN{Gw||`(x35zZPrDhS@Yqr zB5JewVn>w61M_|JKGha4etx3#(8!DrTPYv9z1>*B0tp~>xv9P;q*MI2>LA8zE_Jis zZYqjaYz)o*G0Gz*q$7?`eU^8w&t{mnx6^{RPQJoyiT&vJR8TW_Ta8kR%Nx5coQm6J{1X{_+=guo##YIM-)pmWP^l7d# z0{w}r8G*D-T%xjDJN$X+H3I3eM0j!eG;6&M1ughSFI#!ZTm+V&J4)Ml(8n0Ge-@8D zLAD@lxvpZfGEqUa^p=k@2Q^)${UxN`Im*h74GclCm4v4lx{%*w9^i;oj{ZWxiElcs zU)FjRkG)ViM6ckB6b@2dzUg-me(R+5w<=XnT3U|;()x3!`8<5J6_Cl`l>Qq!Tn+u4 z;@LbLOxjx(mVFAL|3s5$_d!37R;&!od><_@iub8Z_8wm`j1FIg!0+pYnc}{E`lP048ypO#mwYsjZ;C*Q1j`Kmc93%qv~OMFgBljmRAVbOg_Zpz>BkOPezglyNx*(o9&5!yk+&tBYTIpP`&*`JYu$70I>-C6z6|p=vam0SLiSbGfvYKhNf^+VrV0916 z^kXX{O#7Vw(1&F!>k>bd=T&|UX9%jxT^rf)QZ#;*RtDR*?(Ej)=N}1}?MHd=Bg_wx zb`@8ds@(m3=4MJykr}G>EoqE&SkCL5C?vDF%Q4_QL(Ie?M$Ak+&P6jJp`mK-Bc;lJ zp_%vtSDT3^`5}le)Ri_R=31``f?gE`KT6asBw${ZT?d1GcG9=w?FQb3IWEu*XqdbqW7CqC02ENKjZ4Mh8)f> zGFUtP>KVm>1xj+RU-sKvy}$EDA6}=MWBG&3)%lvqT$lcHEct;xd|4W$H_ys#@Y=Zg zn%bcuN}B|B16z}_#S_aP^6B+6ofwb?Wh(>B0HtU+1C)2!@b4*YwX1)Qf(%A>-zTlk z-k_{m)T^Iq8I>p#9q3r6K*yPw-~QDaW}l8d*{nOZ{Yo& zebxU@(9eoBud%m4(d$r66Z*q4(#iy8sA!iGE{%$InO!Q!+hxoIE~sdi>n=k@%V%wg zRsPrKgW?zga;X{8b>f4*>!@0KU^I z6hI?p%L!`d{A?1?J^C~*VfOCE4pN1@-fUOgJ9c#yN80n2DUO}d%774mhC}|4uOjhx zopy+j5?1by_1*$fmj(W@HqO3C7*%5ck@cJP+-fDiJ19l`MZJ>gNje~k!rE1Y*ew4O zb_clDB~Isi51?RxjKBB-haN2%_fn4y&{l+mZwli)rfmBR7`IIrx6RvQaf8=0Zl)|$ zl&b~1gaL+%s*Ch{qz217#)gb$FW7~vH(|SR*rodhD;a=?I0Cze`zqk%F1xYK2ltfD z*A3N~V1c}HoH!k_go|=LKg#xy8+`PofyV|GyVu>inl;G!2acX2Smx z`m6*bw=X1@BpBGJNX&3Z{t53U!V4tnEL2ZsEbHXLB(xc>2)H&G^kB2z_bDg)`X12< zn#&ZfP9W&BPt@DBkB_=)wMY;w7D1F)`^huXTOE3lI^$P1et*R}`M$O7)*Y;yuGkD z`Hfzj6@DrogX6y=Fp$B2jh5iQwyMB??F#?x27Qh5Hrijug$*yER@*)^?9V>|A=}6N zk&EG%A*a3*TUcXPS5LTo2vOPMi;4UntOd!|T>x+#I!zFTTYa+hY8OQiAr3=U0Gldu zNGx^`_6`;h`2q%&D`d8Op5!N}0O;TG>%}G?Y}kRBI;NU+xZM-S_u?OmqVdmS8VdO5 z2=$&u80);!a(lsID1I3*(-z&-Td`oU^GX}Jk5#TeUbu9E76DtE*qCqU;km6s8C39~ zt=nJ`YM?PdE1t;zUO8jAO$V4H@{fI*Q{?X@7#Bx0vO(-`9~}~2Vd+{~ zVrh9!39phr=65=aD;Z%|Fj0=b9Ik2-i&Vo;r7Qn?eee`(P;b3HC%|D$wmdDEWN^fm9~|Nv{L?nVV*4NhY@LV z>j@~wCj5J!gYTtF&g#5nhBj+vcc}kfvQ~^ec5h1a*5wGs2#USS1pF^~HyiRY)`Px3 z`|g@Om$l_G7MY6*I7*MbZOg+Imf_^q(_N;V9~t1z+$JXo#ZE`}t0_Gon!6%gvFql2 zl?S1yI(KJkMCR60e;mR7(@0NOG`?@o3Y(vr@)c8lNVqU|peYrkFd4cZHNN6Ug-$t) zC-)Rfo3AZj-?TilQk3aMt#rma{TQctpTZTd%%T!KJenKZ=q>+dr(-U%I!U34oDF)M7@m?>G{T zO{q}hD8g;VEM$N~p&-NanBP2)nnDL(J7+VNX#aJ)y{En@4Y=AZpk3)kN>RJ{D_at1g{$>stx76L?_Pc~(m<$Z< z6i=gyV_CUOgkRqH?EdL^;Y=PQ`rGN~?=iQyyXEKp(pCeSe+AP-TQyi-4M~yn0}{MT zYNFgetaKg#zA;`*wt!CJ{hB{(FHfr}kCt8&n&~p!qTQqpO{;j=e|F}E zW;y#0+M2A=nyBj5Z*%;lZG4}Y8E}A`v+1bhCQ2w4!Cr-}({+|;de&Cn*!?y9ouIv? zsOk7O2|%ogbKLzhsZMG@ORF$|Vm?PJMQ?BZ9Jy0g6G0pa)e=q?oHO7f5pmFb0gthB z46+}x=onTUKrPCJJKx%HN^M<5G8Egu18o?qsBZm7>*O^_4?+{6H0rp6?7D)!Nf?_H zsaTcnBV?Yu6ax6z0_7t3{woeW>WuMZayU|e5CF_G+_wkzegAI~`H^SMl(hAYvC4mY z)9W%k6LFOEir|g`90oHy;ZLMu*OVfSd$^5zb8;JOf$}hF$A30`CW|SFzZYxqhsy-{ ziww_%1y#xs9QMLHGg+3P`_=xm_Dj?=q$RdeXGv2C# zX0?Qu>&g)d&6`vDvwY_IPzzfT*Oly+qo@gigSE_Szpb76!&%L)ooc@et`ij|aD ziN*dVmq%AylC1#EB*eBQ!MM zH0|scp*i0bQ_m>Zm}#QED$7KDV3vvcIL&|BOl{l_^Y*yX%hOgmXQuWyH#8rb&WwGi zOe*zs1^)Stx@S8c68hCED|y^z0DGIe4S+3~PU3HiBo-A_l`11vz0Wk@Mu7^) zhq58YHR~<^FK7q`M(_m+4{wtep#q&6O3YX$3|ZPiT*_4kn$h#?cB#DDE@QsI1*7Lg z-DMa(i+(Q3^zp}UDs`Zf%QNfMYSc;>ZT;JGxAKEGf#HEflii7oEZJFg_{G8hXz91l zR~lEp3x%+(dn5a8|&ny|F0Y4K25xEq=y zJjg5&&cxbi8f!UUkd!M~XnSHBWidvR`)j3BLQS^iJm-F~EoYW~^&+X3 z^9*3lceeqOK4gV`BvnztPi2Ip3+(F4A&9kK9C1Q2qr z2pMvA+of`)UB;~90&=d_T?TSa`Drh5iYC-Vik$cUuL)W^8UQM52bXKZuh4pzDjxAz0BxIm+tTl^mq?u>V@H2t3zqYtFZ};Jz5V`DGai zmbgdb_2`3F0*{6St0H8oV(+u>X08%yvpBgwmitWUF*yI}YDfVYmxV_M@g($zdPZ3M z3F$A-YdkEh}D%m3=FG^$99wvV*6=xwEc}t&eu-r09e;2HrfCHdcj#Hg4)Ya55Sk#Mqio zS1q5cJBabT0rVr?iR|X$>si0Ys~bqpS>5Q<+w6YXiIT<^;O}&cQzezmjjo;Cr)!MA zTE}5d&+eV5#r5u{-lHVX%`WpZSLT$^qvs9G96@$Z0pr~~QCgJj{$~$#FYsp%sGrw; z0Dv9pcMk*h$MP=Be$%m30o1_UJLq6LBhP*h%J{u!Sde;iJHIm2uU<*VoAyp7s`d&r zvagKqqmX5zZ*cxIUiM+$uzlpzb3W-|_FK~V2NQrLs|Krkad;*8x&yEX*|L?=!e;5D%-dP`yzZVzw;_uju z-)HdK=l}fbi@)&y*Z0ERPv-v<^u-s9f0kSHkTLsL>-aWQS&(qbhOcog5)F zAoS=Lqlvsbi8s!vNt~OT7BsTbMP1zRq z9aV=O>^>`zSJt}}%7758mw4K}_Q;{9hd0e4Nb-x_CxhK5XW1uD zq(3=5_+*qmsnI7Z@~ipXDdBZR{ulh8od0a!poisu;hb;Ldj28$l#s*9{rSP;V|nZi zaE*>{l|#O8f?bAPu1madAC-#_8^k46S)T5~8$a`V{W3qiu6*mlKlwc!C4w&O@qflD z^U_^-V!U{bhmU_N6yAA9JlTY8eR6ZDaSOg@{y+*e8WEtl?FF8@y09Bmc`F~XacZ?5?IMRLwX zNrP?q~=V_&@ zlljnf(@$uK-OUm@$;uF|aNmb+8w-{CV|FQr#s4=Ar3sSc&3a62Vet(s9rsagB*E}m z2*T=nD`k>1`6J7fpk3YClE?XtA6+_i2>{;l&(S&FfhPc92cIzEC|e7F@YNk31LGM3 zvS576MLvuZM~>Y(76V9A>B-o)e`Kt8Pu|V@%_wjA)`=&kbAmS4q(?*EZycoel(y1i z`LQ$c#e2M1)|4oiASbXJR`O(OHTw~Xy7NLaUs3!}Z0U#k)SX`+do?ed%c`*2JN-xj zaAni!L380y?J6OPTI2Wb0BNkpd_jnb!NKZJzNk_xy~Z^r$yj)QVjX zBjxwI-*4u=e#&DdB>Fbpy@O({XFo$Ml)Fh>cULK4u+Fn&uhkbtE^s6Hy ztjp9*15urryF^r$hKFd76s*B(Z}uVTbo#Y{kEHnu5O4$#j9GZHfi6UPI-{7%^)uKw zBPZNK?l~Z*DNVKMZZ}?E&$Jtx3MB!|! z8A$pr_a6J(NugOYRkQE&PBwGHaXC$8;aE#a4#`gd&XGpH>P2{k8>T9UzLEp5tyQ)4 zG#%b=iH>9on5L0Dq;Kh#SN4t_bxRH?^S8^xo;c4F+ zoAV^~<#=BokYw-C9mY)C)(IsV6xyQl#Ii&vO_kfY3$-oduc$cGW>!du{{TxmseH}g zK~f#l932K=#^v^~x&5T({pu1I_VAGNS@+>W21|JtM(VVbiA{q!6X_p(bnAtX{)f9E z{X<5G^f?wh9B+X1-^del1@|nDx`-{h;;h_wxBZi4t(UF-$N2%t7mj;*Y))!KX2(*8 zW!(+Qyt8-~NZwyvW-RmQ4_gO20~V@NuIO}tK@|>zLW#-p1OV8%low#@!#<69zYA$! zSMo)`i!n!$-iiDd8p@sR$s6-oJ+}B7ojb~4>Ol+R1ONu!>4)`+9S~pMYSk|ZD(@xW zL=p7>DXLIqP?LSD^4iIa@js|aeb)pU2X1Q7f;L5bq{?-Jq@$$otAcCo`QojY(bp-v zn26hsaXgqp;=x}Tn4X9hEpfp_w0Qad$eM`UIyVtPqu833zN8h+Sb(TH+|wEU7y=JR zAn=n!;1LnH!0h~^JP*w_#Dl);+M}ZHm8{ds7IB|z4m?jD)KQtcoVE(-?7i!uA2kV6;CgoWBI@(y< zsnt{;I13X*ochqX2BdpFdkk+K9Zgij;97Y{`~cjNBj$Rv`Ea(<^@Ra62s*%x4=fGM z8f~s8$0QZPubw84vWE`ZVU7w9UZ^<@K|`9aYa+s=t_7f)9)8T0*O54oaXGp2?*QsQ z>y6KhlPh$CJpRFG(?9ooE=w#}ogdOBSU$SeCO}|>krfWXwlR+ z;_6=x%xS7O&2zPPF!tAu*ya$?KKnQCAA2FWYPWV??gGCe|(>nQno~3$~SU;-A9TikNYMrHvX4CT9sfaS&sib0oEX*UGMCuPc zc5~_Zb#Vd$pGLI4uJk-sGS)K@hpH!YpeCKERG4!abt7AI{PP?K**8$DPC`v}q zki8_AD7$LIk?O@&`nEPyyDX`;?4#zJG75jr$`U7_*mlj5d9x{PQ( zIQY_)s9vZKQx#-$-r1Vd{JG$5Zzo*ERYAq%Y4-c+DnQOXPm?iM1vH@0oTmq<6LQ+m zVK~@_c%0j`pL;v&df6eMyoPjuT)2Yx+Qkyz%T_3uZDL*G=1LHt_h_h{iX0NE)e&tg zJwfU1D|SylL^H+`9LU&CL`y-EPL2}Z*n|gsP{;>Z9}9VIBJbpAoK5iCy~m^p!R>3eJ_}6NBf?X zKxZj;+J{$<^hUx*g$_rCcWO1&D9=lb&NUPgq6N!GD-|kcLP)?VB;L=3y}~((&T1`t zUZi?T|7LoU0|Jm6q`#=12+|0GL@$>|NbDD!!3Ci2_W^x#J~a}RO#aG>mnI_#Iv}Uc z(ps-hCyfnoR=c_t_uRx#Y9%&! z4P3(edafYqmq=VZP*An6D%QI0Ea21BvFez9pD^rr*osROeQWol8u{Ti-bkyrfA zQ_E|L2mIlq0ET+D+);4=xRq)AEof$FF|s>{=SBHq(IdoaN#Oj9ioXNhi@30Qx~fJ3#UEY`%{pLmz{bU zs(mekU<6T(+Lm^=s0;PQ>LT%OlJ#pXCq;gr)tbCE%>-EIT)ksOPD!Y3HpNGEdJmA5 zPOQoij9cIRI?d>l{0ilC&hN}y^rLJ$T!CE*y_4_^8BHSGiH8KZ!<|B|Pq#{o`FTrVY3gE56{ziO$+B9H4 z*3gpu*vt=AJzrNQegjuOY}+N`5D!FT@spyr54&L^GD@scmz>aS1-ORW2dEp}{8aco zg3(I1k;NNm*>Tn1if-g>%u=A=e9EPUN?`PDkBAeKyp|;rbY(OH#MgdVboS98b`on% zJQ?LIjQH!)!MCX+GnVb-LJcGsJ654(@ojGW{Pv!=2fMsy{OfW(?BWmm6a7cOv+Ek~ z*LvDV?DnRv-b><6ehu+F@XuIsy6im|!TEzIO|bc@a?xk(Z|bS(M?-+ygaHV}Ok;Xy zg@2l2d&7tf`C?;ers=Ot>_|(t+np8+H-gLfr2vj5)Ay@RJWa+MFo3$l=(`WIUrU!JE-o60jYfNQVVBMpJU6)ai?teenGsL8?!o0V~Te? zW#wKtMEl7-X;Ac|{RH?GMk)n9Bl_;~p>|*vEv9L5)#Db}eOq`;V|rBZT8hTMz8@VX=R70ct;h6`l&l|rN4Yw;y$ zATzd#s-=B|YS&yH+dXjF`TQLqk3duD$k3y==7wkW*Z~?(RjFX8_J!29Rj&D)eu*!r zKmqSez)}G#nY!57hbUXzv=4trG!L~e?5%x}68>{OE~-U#b5>irIRHpkT=TKr1ss;n zjHc;VeF?R_;A|2Xyv{sab5PbioW4z{+21U5De9zm7EV4ra~AGfnK28RmV?&vAaUef z_hdc~;wVc%%@IqzXW#AzFMqUrFT707Mkmaq&l@CQ#oh`F|Effv(AET!;VA#x%H|tn z-fbFBC%*L>1B@TY0MnkX%ic+kuOSo58oVuD*7*KWo;ki{-EJIJ^gJxC&Mq7^t2<$Q zV{6L*t&gEL1!ySB_10@zZyIo7^Hr@k4Lq^=D|BYdUq>T9>^UIY{_{6=hh56HO|d}v z8)Y2k&bu(XKZ~;ZGdin3t!JEw`Sa0nhxWAYKCzi&gz}qc%)33it*=^JHnn|*{`wnP zL$A+jYUPT|p|`dSWRNKhvb_o>T?2g{iyJ1sjxk#*p`SLwk1*&TTK?T>=} z*RwmY_OwjchqF2$JHj!VZk7ZSHnlrGQTQ0>Xe8w=IylLBvpaj5hi4V|Ub?_tet{-j zJj#azy&$tHej8K6G2|ZVNqsAOhO_U?_Ak@d(I~*=iR%@pqQjL7aDTN63)|)Guk**4 zOxi%%3E{#+u)JBT$tu?>LJ^j-qs{oW4|buB)Ipd!bo_U0^PuW@S53UL7CUTW$f3Ue zYljwm19qhRgmW(DhcdZ4A6JAPp8`wOS+;~TP1~bH-t*y<6ArM~mnE@Qkl4vfd zUWjRij3O$Q%Co|U`Q;9z+&GonJ&y#S3sG$8dg0%{qP!ZzUgHuDJ;^Fku`4utE$dX!<#3zfH%+YpG71;Pkj{LocNkUT;Kq=DST{nCf*eNF%xmK=g|8e z)P;j&k(j49Tcj4>3H^FE*-uR0E4`60JY5&?Xs_k-y)Hgso{>+|M$e?=VSN zChR~Ns#x39s88owThhA|`48WIGC2pm)diC00~?DtS5Fg2>U@>5BhER3eo9w+$Ua^# z3ubbRC75uk76*aa7!sFKkt-$|k|aD|pUhaM*IE-^d4;*%Jw$UGXlZiGtVn8l%?9q; z=nX#5y*H6ql-`AB*w;RnA_ z1g!o8W~7{CrCx#*jo}%4a#*NBi5O}y3?N(^-&0-o0`AkpBUipqz4)_leBp^`=)tX= zl~oq*+Wp1qvOjmE_OBt>qwAfcY7?c0RImMz-QdE3UqQBbpEyVnPhMU*hK>Rc;>t6{*}Sy`i9`DfLz5q}(@2{xR6 zHGxWg*`Uom47O%(IQvxqnrIEyFuq*AqUOKkqv0^b>q>JYSN;+HvNSaFSF|WgVHr#7 zif~zXxa*ApVa$5r;XA{*+v=|TYhA?~p_$*dez}>7#(V0@-iTDZ!YMtk)WzS3lsz5c zBb`E4H~hm$?%xCdcBEoisO<=eKWTTer4m9htU;Kl4|lyf0NszH@w`!g6NU3aqX`U~ zV&9g1B^!mZhDJ5XMRKqqpK`Wpr()@rMK`mNdvB_!NnBHEt58jR4~a%=08Usa)^-nA z6q>C)>iD70JfJr5)iu%|$&WmES`l||VpZN$ZIDlubN`f+A9;W1v>_Sqj^N!-_Ik=% z!%3C6^?O2XOTpc`EB6Sjp$9(sP2&8+h*+#%beJYFRF{;uy=O@+M~B_MQ*i@{%U`PIP`E2MQTI#mS2Ag! z7EKS`Hc;A8BLC@4u!J`X`m%&aUi)~K@TFI>Si%J-XRw4rpZW-vKy#O?xt6_}tNn!L zUVk~Oxy>hKH213~Kf1ZUy-0I|_iFC>zkdAare!yGV`g(_d`xrG)!dH;^#$fPKB2jS z?B)h!Huv-&K6-RTYVP>Gn%nv6$B*uZf5`&o_fE_J=H(yR+?DI97pLa$|7Ilg;GbcZ zN5?u#XY5`9B2NEnGS7U=`K=r2&)xg<9sa~m=+EHn{tV3Q&z}~5#PCV3!|8)wA<=+x zqULio`-M0Dj+cA9FY^cE8ET|={N^n^=ftCTeTX#*6OoK@w>@RV^5~F}9Q)bI?_2hX zCcd02SBs_f#HFRh`Yzrep;!dfcJIpbX~|!w#V}f&>&sto5fvo|a;L8XOI$SZ)m)ul z6T1mwtC3zV-i-wfFU#71Y5!^tO#5fKE`N#^#2R>Bl~%<`5fwyI4YIL1`(E-yGi+e# z*`0iFXHSne7h=qikGu^F)zv^WN)FDwP_XG*!VF%aasRwTk_a9tPf!|=FzmrB9|QtqJ(#MEM? z1|$@ykOZJsuCQ#x9VPMDh;y_i-c)*(#Y}AB9ZYs;LACU8H-nej4Emv00J|j+)|f=^ zzNi{?FVQ!yk~GoVD21zKLq)0d^fd|!JPo4zBFU0047t}C|Vfo|cQ^dsq1+#e% zQl0k#FzDMz4HHU?r29rbWKFDVq;@WGPCd)5{^Ws7ZqJJ3e*B&F!L4W0u9_T^-O8zI z<;H$m$*#D1c};H5iSg~#kGIlMmYnLvVSc0vY7>{`)+WA`JFBPZdcn09QU*4EHAT8; z)KKdIdxIp83AoCupQ2~eQ&-l;|501^LJf3NcV$oAmFrkvcGq3GKH}Cc&h)L*+Vv#O zjm14o+sV(uELf6}=&?@SQPsO1ub~i9>INumZY~t`51SIBV5`e!>LLRaa>4hbT6j!?g3~vDfOH((>FLRf`=R0*Zk)7NdWHx#a zL>y!U(GDI1q3ZwuX+XJ{A(-Tx#fUrBn;ws67|3* zc^T6hy1ka4qKLVCP|G31kC&=idOfZdK(3*TFCWErA2wy5+QeB`qz>fo>o^wo4aNR} zu*KcMKDI{{HH>eT(A6}XJbRw+|M<{o%Z7o*ta6Z%n$^@!a0DQ12)bQ67b2*5runeC zD_2xME}0)xT@&frT_#U;ZP}94{rX7YgiF4p^%WL9mA`;Vg zIx&4`TI?rlPVxjRH*{Sf-6f-~YpX-}7v3;)DSN zp^%>l5xypFN5BhlYU6L&EF`x}hE3#`tpojPdN#qo{Buq%nC^g=J|6uZel83B?ms#M z{igoDfAm{=_FQaO)ropiYd8$Co@g35rWzJWmbG4RU&rK@y;j3YGp@E`b6PG%;+;@> zSZ&3I>L+}uG!=Yvbw_Q*o1u9cSZ&#xzHrI`?xD6)V-8L;G=KxJY`y55#1Y3`-NDnt zrVK_$Ixcb16{*kaA;$^44sx{tI=~*=13q=~%asvI5sEjtP+eHaV@t4w)hs%9Tp{C;!8=QtfM#r*;vvw8L$pYIDalJ2zS7sE@h!O!;teA%J?@K3 z>wIy^=*O3tUP-P12Hpeh2rIwj57T@vasUR~!{?J9;raivN4L921$wlUM`jycM zbo*!jmHQ7b=+iakhxqM`{0Xji&w*iXmvMjlXI+_}rOSLm{)B(m{=wh$rHEMJvx9!F#0NJPu9i7+^WnYihg6_ zAyyUhrrO!7a*tX#BJTdB$}jek113&WIV0_3W}yL3P2*CM1Vu|vlG9?Ob&qbG6Gdc^ zY|;z74Ys>PSz8tVq|VI#yOatSCa;yrm1j$m3_O0X`sor*#P_^6Hz~MuT;y3Erx#$@VR>}`Y3WsL2mV^oi%gGr_jS7wxQMB za+H!POv**dI|!WEmwrXt3-=HQ%IVkBR;O@RcXy=zo5Ip-FQy*()z9PVox>lCuq4=F zH@_)B?nCbeemYt_nqLT0w7-d89eo0D`{Zx)e()=SZ10ssK9do0@QzIW9ph54ret2B ziega(J0tby{}20flh2CNfd(#qggc{`wcZ+j_P;;ZMDoo2xhwMLTyta2*9t)M75Q!c z&sb&MI>~U_McVe5ZCkyZSGIF@96xw`J&(O^i<8Ljsu8{xF0sq7rMkomqbe64R>y_& zzt^fd0*vxcR6W|VTFMV^j#UtBEnT#Lt)&Xl&z!g5x9#7&o>?r>EOOL?{#YE!K?H(u zep$tN15O~uWpiIxdNu)Q|hpj+>Zvo|UK87KCQ!_Q{9gU88LcoxWTZZYQ% z^4{`ILK?*|g%Yq|m?my){F&bMN-_QKFXeoc%>A!*?N^r&H{3j#@A1E|DWM&&P(uMh zO*gA^-QLx!ke(BTU%XW|ii{1hTi#_u&B0X)C;PF`OgXR>~PX><1SJS>ejBfZFTc8p+Li zZ`D~Z^|Y4fG!2mtDTta$Zz%|ZXaW@R_WUdhKcaoW?fUPz9Wcf*Nu;R;dbSq?&?x^2g1 zjjV~Pd|Xg@ac|{6Tiv&E-&xJL(KoL(abSbQ0V%`F!LMIRQ6fmsSWLx=<}y1Y)hENK z1d(x?5sQv=3ni(~lYio?QJu^m`+H{nR8>f~Mb?OY5dbFV^CWd}xM!92sqJ`C&al{4 zcA;Qne3u2}7e3f1w%o=!rv%lJV&)#pTK6Nxr4#kyo z8P9Rz@O(*0Z8@%>D*+Lz{zdL`9v4H;q&o(7yVtEqt{(ccBD`aR{A37O;at#sr??S& zaVqexmo(vismkHk;HGtgT(`N3N1-edf{-gWd`VNX!`^RA9>(J|4LI;HT+!d*@N%-_ zMsVyWe$Gf_1sxoiDfg*MUBgLpDPYEnd-!=ONzG9fQ8fr^?T z-ibl2XVfOX224KmVZt%FQ!BAW4Z(zXg?m1@I@VQU@>6a3s!-bm2dNHJT;LYxVq?+x zlQ(h4Oe;F0qnmyq%5-z>=v@UeRNDRTRnPYpM3TckLj3UatL+fQ#NHaIH4M&VfAX*J zM&>**43Hrt{eBk=3T%Q>aEuqunnLgjd*Za@o=!3EOXs}Qvpgr4+vB-4Rz|V=gJRy8 z^!xoX-v5Pdi%+pDDaRX@exG`y_xn5U;(d|czh4{FzdGZ6>2%)julLWT-~T$}{q^bg zf1iHep7Fl?YQ7($@4ugZe{IJ5pB~G51(v|yg7(kLc)#ON-s9C}{OR|{XT0B!{jqL* zW76;U%Xq&n-Ttuj`_${b<9{dJ{`)mS`>QkFzxW9CA86xGzyEc{`&+wsPe@OW_xtqw z_Kf%U{fPGl-|wg2Uz_oMqqxrl-(n?zG}3XBQtqJ{P|@9VaB@S?>V~ z!xuYNRF8ID>-P32W)#36Zl>d?8CHRYRfPQZ#E&ysO7bljZKjwe|5%5M53-YRX1ujc zu!`UB+)@euiqx>vp5J5J+~gnArUFIH+omak8;ZGCa@-OoMP{9-KqE;N$lO@z!;PG`chr=cXyRfViEF2fvc07114HG>&FIG0 zyoN!Xukk2ZYCN^x=UmLcLA=S9OKhd!G?4)4*n)Y&3B;1MZqa+6lb4=@S*cpss%VuQCR>&wI~O;A3jR<5ko%J(>v5Nd6f@{fKII zOre@nKCYU%RFfR3RRk%|hKhrwlYWPa+T8Y$1KP}ise27M#Qg@|w{n;p7sOcwF$qUT ztxGYpy|qXp%B*F+e;?HH5cevt=i!0=mTN?jpuXygaiya}-&;b~jtDmFi$C>b;4%mQ z$HQMmAC~&#;-FGwk>;ras+-nFY>W~PG_7*V`qO%cO>2bj8zT}CBGC9GVw}8XnrMGg zh_h!-FPIdoynd;#kdAFkDrq#K_Khyo-h1x}k?ympX`i~)ItV(W)wx4UF~CRTo;T5g z;e32bx4nId+E$EzW9q<+hQH$)2G{Dt?PK9m7Zr!wzuE}?O$@hBo5Y67o^=GBE5`c{ zN8}Y}O>BY#A6a5Nw{W;F%Fx9Y7M~r=SSBv96!|Ptv0>`zp+`p_7JH_(YVK%qMvV1g zafSNRp$=Wrn3@qzOal@-Y0VqFSddteyaonKy)y1hg|Ct1f>Ro%M?#M$2id_Sk*+rf z)e-QDaM!>Y%dNCHxk8Cfpc5T_kU=L0-w1+VxTTj)B;Pdz!~&h9{@ees4}tw<5+4?S z%!k&KNRDU!l%s5Tx8vr*-c_JKV|MPglBlJ{{Nu*5!<9ihrD`NYZ?#(`uJcyVe4LjRD% zs$(llYUU1Mw(6O!Fqr$hP9JmY8HDib{(Bp*$=^EP zG(u3~*6HEU<8KbK^+DZ@s$Fg5a~}4|XVRb=WBVCOM0&Coe~ZR;ye!P3aQ|yg>L>oU zr(}QIs&Ak8_-|c*n3&N-Di1w0wyLCh?$ASf=jHIHY+j=AaAWd2s1gVojo#Qr%*l1S z6Zx$5PJ^O4`co+Ej0!oIM|!{eex@AYgc*6u%*JVs<&nvEG9za)?ISBdK;)+?$xp~i z`okg@)alvOlqIP4X7H;vu~qsSOuLnx2Vm@L*Ng9w`Xtc1!#T61sJ}-4gCLoe(>C8wf|e zdRGRR=H2nhVDd6#D6?->0GlGg1_uOx+QT*EIT>sA(~5?wsRQE;k|1+C;tiv{^U!zH z*8;@XB4-Pfq~;wIGz=VyQVRkZ&FVifyZ(4XO+~}#sfFn}cUXFpz3Mdjed2rmfUMq! zf_j6ivmgD!%`bC_c~4_tYPHuvF&P3*OVl?TiOWe`tC{NpEIK%hplQ(KMLZ&`pluVs ztMq%osCC%+SsxU)dl<|1*g%H6_F9PI=bN0fdFw*vm~ytct<1~;Z$hF7pn2pqK(paR2Tk?|D=PuRsgn0!l^b`( zW5f~&OB~QsSGKecQ8W3tI=~O);}uib9S>O3b*}s-b>{Wf8Pv1^@x`xcLQW5YpN5u0 zVhx-9Ld&XF#S0hZ7mhX&W;D z6t<8VHxl*--W7ZZ6f!?t%7?N)?b+}V-&&vQ;@!!2!4{DV9AJVp#Hg$+W{78BoF=Z^ zCQevM5FK33JGR5&WRbuLbo2#8fE7w#Fp1?hiH4KJ(D6yK32q66bFDoHFmm6;7tbLKZr#y{&l@q)j0ik_`% zq-LvH+3Z|ph&nkvB_L6@=JOg*_GkD(;bV!RpJxM$bT~^B z2AwKb$#?Y8@B8`4-_>6w+<}#7XPB1KXd(|J+CxMeTWRqhJ?U_z(O(;N5R%AsjfkcN zrqoJM&YD2H5kHM|c}O={jKQ~#K)m_9KbEv$^Xk_fejjcR^KrGD&xorza3UB%aj ze2TBFPs!od=Z}yeybI=i%vzJYus<7>t?!pIji7-9m~7d~_vm3&&kJ@xju3XSM?C)@ zKgE|P<6*WhFEt?3A12%?&=*DC!|j=!OU-s%#Mc<}b)bg0q&J3A%1v@I8LW{opWs=} zB3YJ6F}QJ&?#O(0Bj#>PIhYvsTBE8%Vo-GmOWodk_ZzgHwij~H@S=ffI^nqtm+MHE z<%S%@HMwq@u>UNZ*so9{2#jF=Zaj0^!~|F{klVGna|HgeCwgU-0H&E&2jBG?K$ef2 z-lZ|A{OD7OZ+cD^%ljXex-rB_+893BABM(JW%u65`{@cF7D@12-YUaRZin~cW_>ut zJ~Wdk^j%$o(Ux8YrcUpDA}qXztYjp+WItBUZVF@NMBy3{zp%U`e&J{V_&^f_wami! ziUC{6Qu^W}_j7YymSiocMM>#=J`fDQPiE{CJi&5@w-Gq-$KPt0m?j#kQiC->?~Y#! z%#?_cjaq|r732S=X5mzURh@b;6S(}A{dA$TpDId;{RQ2EHTKg^T@(J5)p(6PzsIa* zLg&qPzu4JXS$4N^FZ-!%08)qU@Jl+;NftDH5yI{^Usvw+h3+5XiW#CfJdo@aASIl+ zp+vSy&5+DZ^L0(+cWlMebFHNbR-qnSBEaAxM>+PlQ4Cby$rxteA^z7(ifParHKjLN z$n~(%bUwXV!;^6PSMWaNFOa7@0S$=$HzlD9rc&*Q>|8n0SFpA!kp*cLSYj$z2!d5+ z@Q=picx}&Wm09dV?Si6M?eG3@4Bd86^X@xM;qO6r=lOGi z@vnCx$X=E?3*sZ9la}y6rz3^&5$1+RdY9S@9}#9O6Mkf1SRXCMDeL>p&O|!Z>WDs5 zS)XYVp`&k|SC_qp5UfxQSmNRKGvAdo3MKL*F})yEG$?d{+#ZRc++S22DjJ~s5t<_~ zNUKt&x!J>J=~ z{2|zhpna&O_m*By64#$7uI~=Ccj#Db=s3dCVN~a;tzjd!+yL^CPvD{gg#R|i%wwH( zu$&(_4+^5WNU`ffbA-PkwvsZg@=#G#k$!~vQKBE<@vxUS-#~>I6Q;*uKhpIu=n0CnY!M2 z34S^J61g)|BQ#SbnkhyQZV4Yh*N}eJ%3GT|aQU=Q3fE7o9_qj4tsS~RT6b<7#r~aV z;RGwH3gi$(u2}m$1?an=C9tz_a`Ra3qf(;`J@dQ1aSG)mx*YOTzLeuS|Lu7c0$L@& za>P=94GMPJyN3?_mdy;%@ATfqAQ)7})s0Vw=4I25WG3-1%SrlY^;ojG>c&1&56W6( z!9zCwib*Za$6-co498n0#wsWNTKs1}7*hl5^MBfCTN=Dm2;@l$X<>C<{-4Mh0TRHf zfnz%rwm;O$yJ)*XFQQ~-O12O!Bdj9a7%f{)dZLNp9WRHw{z-UIiE{yuspU?iYFU1zWQ2dSg|J?p(xoPKW^lfhN>FxJwD6Yux*&T~g37f!FZ z5$#I-h5qut$sHy+Kr>QM8{y48Ng;8~uoN@z@knikm(LVkTEyC&Vrf8=yy{C+99v>* z)?`vTf6#PnIJUeXy!Q2Q#pK3YNtkiu?s9p43-@qw(KEgsul+KHa&BX|{W}xYP>J{3 z)efc&wh_N~Pzt`--pi^`ti0s}wRISxm~7n3gS~mJ{d3;r`u-Jghd(17{xJS@{6%{` z77amewq;*?^uQ06w1#HA4FK3szqK>qU#+{VLT%cg8GkqS`nIaJ4?=B%5&=a;O;clA zH@EICX%2a(763O!1aDq8Qgl%J{3xg2dWS#lsH#YyO%z^1NJT(Z@c6X>dMvQE z{AC`-&?rGb%uWl;MBU8yZ(7Jb8)`GliLEYvOXQQFlO`3_!!pMF!m$h^ggE5v2NXaT z-i!171a=ZuSQHoA4j%i_%@a`)1Yp(!-+78~xzOGOc2#LjoqB?p>ArC`JxoI0CT2U_ z?t^j0vdt7*YD;guk*{~Ruq07<#~g=8^#Y;vn$LaB;ZeQ!?H>ntbb$)>smsE*fpB&U zMtf$TKKzzo{txJX{_iWD2nTm4@TPQt8E?rsD-A zw~bMR+w8&CIn!B94ZK;5P6ivV2=|JxOQ@!}hi!HZ_P9A;w6M#C82B558I~AArldLF zznAYikpGq9xT3F}Rl6iRDICmu+CB_qFt;l|gqDC5htY#pb5&9t-}{ATG*LKzmgYRb za(@>B`|}z#^Gr`dA8Y@u}qU>!>)i3>y!pPN4x=&nvS`14hOUh#4RAR)=j%oWIa*UHwwV56r}|= zKe!fT-KROEcqyml0z#E{Sb=)wwvp;1BM_WS*J`sRpQgZ;x>f@{Q?zBSLQ*ZeQ*kJx?p7t_{Y~(@ho{Ioz>$A7L#pe{7Mu-xn2>EIg&gu+# zuJ2E`K3jsK?D$CVuuAp9|7A4-jT%J5jpz~eY&vQ>!TA@W6%?61NSB6Ni#bT^+L01R zj=at;!HTRnrzRr4>#IyZkw$?bBCI~bM&ST#cdhPO8wjfYG7jG;=p%oqA0wO&I3O6V z86Ir7s;VSI2V{Lt9{#c7tsft1YhUawhIt*mO7N$3p|}e18T-asMv`=Ahi1@Ndwa$b zYO#Ztg5kzAm)b0o&8dAdYSOl8UsLBt3VtI5$&!xvSy*b;coPk!cwj>(GNw_zr_2SQ z@VWE-rOtxKFVIpKTLC}f)_eAc+P~wRx5%CH_9gN!`xCmun5A$TbcfHW3yH$p&aI%g z=>3Ifep5Wk*omN?$ZsF-)}?Z9%bfvddW<}ol0p1BwV?>wP2VT-KX{rp)-G{vjCE~H z`ON8R1J)>3ktkd@u}@3G(=AO)w^Y}sC1%*Gm>R5bH|)K_Is9BF5NFxv47BXKYTZ33 zH0LKa100TU4_)J+?=uUg90M756KhgccPOzi&yZxm<(-YJf3wPS zNU}w_mDQFgGO~Va-EfrIa|vLtBEDkP+TI3sq5nF>*BlX zwEOu1ftVEAb%*|ycmpaXFWy>B)@5Mc}@lSFNnb}DjlXgav-f6Fq4Vyt-jBF+siLu+Ycc6FViTt(aViQgrdEAxkUe5m- zyOv=med*gfp^2?#EGz|ms5<%H$LSZRIsAau()xw?SD>HDTp{8u2RG)9D?QdkU+=%E zvBL;g`}?#;vf^E&b90(b)^@(*$g}t3<29xu|BH*S3~Fh6*)l_~)aZOxg>O&AZ*|3| zTk)XWE|>TWk7`g{YxS|xcfQY_&RvnRF3ywikt;I1>)gcX{ag~%y7(4%Dg`s_99piq zQJwlM{w^+HGFVx6WGva$+X8)g_c-hNdt5XfuFre-#U#x>T-N*fWS=Da&O)Lug*y7Y z&cT0@;O{I|fn22c&cpQ<@VEGAXwpZMm`47OkC~L?m0$X*#HruDbt>v|cW9Pr(ac{1 zs`}YTAAG&y>|$M)pIu@T)nXIn#8z+?{wbVAmMHhy{l>rrEELRdXVX3ia_dr69hzb| z>AB$6DX7Io(e|^7@ydo~exItbBrUP%`}{VwJL*L$LH(oor_Zx1$brB{A|wZv9N@9jzc#P!MmYOTZ;#pDHj zXV2vip89!sYq91IJCps%uWkIiuRm{E9IO%tXhih7h+Y>j^=8r(@c~cvl_;|B9e(^? zl5HO!9;RUH8lqz?O5RWFh7Cg+5dTFj`!tpX&{<~M&B|l=6%?e zhbsC~X4&}j=xc0lawL-?Axfv>>sH+QIf=t1Y_cV#UDvAxb%S43m_adnR0`PBQ;-aU zGWH}@rJ6_^eA!^{>@HbLSam~>Mp)#a*h8wzNYP`aX1QG5oFa~(J4NEFYjyU z$DS#SZ9lMWKy@OrbH~QkT~*;jSwA+g_C$v7A&w16cIa;LnX|*O({q}~*OZ@IFzrh< zbEBn)m_2tYG7D;YLHPJE+bUOwW_{fr(8+6Zh)`8T^#w`7%4 z2u5*roE_i0XsIAHa|VcJ5MW2pPId~hki8v=KU)*u5?PD@T5XpA zSQ@{3{?qK|U{2pP%28VE`uoHY9K=`O~!!veC zkG|zPk!W%IxOpQWk)aUg)|J;GYmMHICI6LSbmCfa5ALkqu@MX?sXcU^P_FLKO`M1l z?%I-9Gxw^3!FX&7=<_q6;rgvL!`Fo#B`FGZ6Vipq^&&n~yqd{eF>tgZ1I~YLg*NqIMD_7GJ;qO;>qc`;fJ$D$QLG)WU*IzN8tu`GC>Pzb!=;90D)^A5q=(xBR8WSqgOd+!QCRvMuyY(K1Rpr*bA zKhk@#$~OBJ2WsAXc;gO9sAOBI;4UvZMSl7I$JZzw)lg70{*0yj!t+?i z(a|C4pGwP{m;yPu!4l}9*_d(|>3-M7Dvxx{MB<~@rdE1IbST9#wPumZc-7yNIcxp4_1f*slzl|%kOfJ>VX>z7Ah{4qmQ>)=Z7X;Oi?pbz z)hjG&s+6dy&5`(@jO4d)1jqWXU7s_yedrx^gI7gjJ4-?{=kO5$Y)4_!Ac{S*{!I=z z&5Kn0WlE!_ibyaM6JYo9^Wb4k+D+toLz@v<>Dg{S}F7D ziQ}rEM|9vKIzWeLt~#`eOjH9uwD{*!;0hK+-<3R;pU41oY7i&dOg*J8QNL3{cWk#X z*|Z4yxutG6f!tlykN40T-L4zFHe9wUnmDUK85y2oIxU=yD5HVUA7jm(7S;hdr&@&3 z%Tta(DhOP;w^lQhMZa~S-Yh=P!2bx8a^`p^9c0~5+koau05u?7;n&2>!9&K3R!ui# z)O2-qS66}ZYYfC3W9EHVA5{!&uA>Ti2Y#jN!QiKQ-m0RWV>9X@#E3|vg5K)>VKJ$h zRchi?Pl-kbimRUcsK@M=n;z;NU3F-sI>a%y86E0R05ukC{qqi=DB9UuAuv9RedCOe zL~X-$*~dE_^KE2^FyBsf5azqkI_h6_t_7aa+aDGoz$DDbg`r9YEAahLC%17xBUEhf zFe2$4@n4+Sc%iYZBHsrbicPRuq`>20j<)B$E52jMnaF#WtlM&vnq|@uH`CGVA_p*( zAdZ>SM}Z11lt&2e%ICk)MF2s3yTSMFfpWxK*(NnO^kBT7x%!$t&Q;8BksM9#OhwW! zP@TWwy|=o%sLuOd=p~&4gJf!d8#8UC>bj-`fz2dne=`ytTVQX@xZZ>~+uIIHOMd5S zKhD9MD$@a-#4J)2n)RSb2k9=U==ak_kAG%UPf}`z2>|T~=~YBPtPaf)x#4rZ8!8Ex zy&NrD8tK|HFx<5Vci+Zy6K7)X%YUbZ2n9ADttb{uTmuOC1=>iW*{Un+P7OpX%+LYw zB;ImKDE1@Xo|ibY6{-K9vC8GQiSr)M2Q+>hla*!+&#V zW?Q@o8cW?tDthqaS&Tt(=^W>B494ie1PM%o*H1>|@^Np*vQAo;Dd)j6OhYanhlc#> zMWp};h#^T zYFH{PUW^@rLOX{3y-n`@BlbQBBJ*Qo6Z!MLNi5q4RfjAv$@aQp-z7f%jUI3K9Ic${ z_m0zH8mG|Vj$UH+zIIh6;U=f_7u^@EKmPvHumq7R2_jXh2y{aURIeMQDNGa!PLlCY zPNU{aY``VZvD&%U0uu9{kh| zIZcRh?k(Ci5i_CmkCZJDryw_ zG~ST5SP>G8axoBMGsa_6Yg?`D^Vq6=Y_+Yn)*H44Q37feP?1Y3sI8tf+TtBS&HMeW zea>VigleDn&qs64oU_l~Yp=cby6v^s#*$9^fdDnE7TaH_cccG@Wky9eG0=j!SX~H_ zKB2(>p?iI0@S0DYvvJa9g8P*8PdG15kjx0V;nf5i>!voo52!;5_IFdons6e~$xY*C>{d2dV!>)LR()pecK)sm{~YSpEz zJKyHUAL?rQm1=4ZYGQM;YMS`Ru%;VbO_QvqQ&KgRhc%5;O&to}@FKOU>7<~h!1Fu& z_%eExOPv#3P0tpne;*{n{;lM<_3trm=-&cY*DcFQhA<9jSfjq@5seJ)vaxI0lmuDh z?G4}ORr=UEj(}rnx#;u>FK_RG@hn1d2358$9F)so;u-|5ICc4lMx0z?F6N7di*>v) zlLAZflW_}w)l`0wKx#9bU%mgF5KnWm{LUrTyQNP9QMrR?zW|~VWN}pp&~2}00uz;4cV7Pj5I%oPQK($`}5+sr<#35JB%108Ac(*2xXyFKCz?ZtD6s zejRoCJ3Tsw^o#9Izc^T0z>>F}u)NPL7kcg*WF(3<@1rt0J+w;$Pg)|7TSDYjZWxPI z;9{{b5~{IUj(V*vt| zJSBXr^rz1X-By0(e+i>#bmC7IpPK+pQf-ttDcbxOc$-oXS^qkp4>?_5vp?`(eNp}- z;`2}=B*SI%;&&lhoZvPjMX`iAT2thO`o5yYwLjw}^(OQa_%~jj>c^6=1^wu}T80Bs z%VmDrEq~JdFNP2ENwE1<*V$+uJ|=_DdXc@(?<=NU^5wux_}-qGg738pzbt(7;hoHn z*@}A9pWgYsrl#_H#i9>26vj#y6xJUv5-E1e2}J0jb)EU~W@Y*sA-M~MUcj`MTQ11- zKpE1!?|MFjMIFTc{7EYBa6L7egXO`=1N+EOem?gHWL&_{L|n()G&}v8VBuwmtI~ zO-i#3Fj?-f$(eV_=~LwY(dmlB1aIo1p-szql@(pKOC{XsX;rcf^8drj{)dAljTASjfw0Gs757Mg-*vZqJufX)i-gW5RHWyuy8?fP zhS9{y&BxRHz?|cxe|{j zug#Bp*A_IDPc(S&C(JFte{_OiXu6iO4gqeVw!lp-#zVA!l~>s>k(^qrQ_4~-D&GC9 zwA6#q6!9g<8&~%>e+SjQ$=|_s+xVMTN9xY$p_H(o9IpsWZ!~pq$^A6M{sn6Cns;A(5f^dF` z3ilwj=T4K>Z$3|Nx$8XeOUNe@c4g$AYNg?tlK7aKV*KA*7Ekieee5%cEXQS>lTMJ& zX`Kal0I|>DPr-qmEsJ`R!!=>^{w9g`&N50noqRnSx9?V>FU18qf zXtP3@S4|lO$U6f50<7W`H6qed^Wku|@8y7eT@FFOhx=uWaMSkezDjcrIS!#ldZ@_M zX65Pi2V>}l(CUzJ+pEfywHEN9bpC<*dgAlR-@EJpnJ@SS6po<11h~ft6S-(PMA56; zGH0uClsA=+T1@vjpA&j@{oiH%zgqp@D*tDRjekOs(l5~GMC*CEm7_`6eje@+w8u&u zC|Y>_OXbH~D)FKuMs741E3;P;Q&zuEyy?1p)jtSiWp`!+v+${P<$l-=A^XL@5!u9p zX!BNdVuyC@1M}X-63I*DxV;d4)bgqO-_5pMprCvBr+h><+jqExC?tf7SvVCUw^>+S z;P}QYe}@H#P%9%F?B1qM;kLTXazzU(FjGe%y-IXW7GPfFxL?6R_P)b$5NDF+6+ai6 zUBjU>d5koajvG9=Foj?EfpM@|{u%W`?^^Mi>aNRSo`25<{<6phF7?xF8TVcPms!?J zNNMn}ZIC$m-_u+%ZvOvE-Ok`q%Lntw^viaru$dDO zv`Fr3KWZ<4b9QE3CI4snCa(3z*aUpvzpvZWEqo-yhk_IY%RWL8$IB;IbxqVj6>6U8 z`}04=zT*2zu1Z_U1b*M2?Y^hO%VNo$vO=$sK-PargnTwmhysd|qgA1$)b|UGaJjs`1D1 zLGPJESh!+sEZ1ASRtX&EAK)$iA8sO7N4&+q>>A=Ne!_m0dyCg#facdf4uRhMzYypZ ziY!IM9jFGqysx|%5a@`y(;(2~3diK#3OwKZm%b?rzB$N!bJt(PZ(@CXlUy4{|63(( zXhTw2q=Xvj`1e-tMm4r+ITRSZuENj!Z$LZgxbY%S|00aPzx^k!M;uA29*u7br`*pc zs7HBYBJxj6zee*x{+C1fZT^V^xRHKwmEZ|gW`79ab=}Ydgc~1EmG`n?@@;;^%l573 zC}+Gmd{J#&;+2G1^zmz`N0y=8@RI^dKA&LGe$g;oE8Y3T^}PCP%!Z3qd&_4(5wZ^qq2o%mt;e#wcPaX zl`F1PtLj?ZY!mbtyff_tob_8|`&2-Msp-hP^K+{{84WSaT27MA2qoK<@h;W?qRJS z&T2yI*RN8s;2eA^FK=%u0OP&&`uJo@-;1V0x;}T1w?$E#gmdf|qA4mT1dAW@5=aKpY zmYg`Nu5M2KK8@Gr%+v1b>e86j>&&>aw9>xtf+dC3x5s=JmFTy zW6n}DUfv0VEHafv_ESztlOquC@|L)4^HFIRYD;#vXUPBiR z_SBF6`6I~0;1{ik!YNiiHE?rPHtoo%&vPh4|Gpli@F-G0EWqLrVY%)KhhN?dsLx+= z;=C&_`Br`I%q6@UUzb44cq5*A^@OZP2MVQ-{Txk#2ES_E)^30GbF|OABmJi4Yx86ri0Y=)4di6@w4-szH|c-y8JW2`N4A>{}!(m|Gq<4__tlLri`yk+yBH01l!UT z!}zSf;fEiBQ7njO?VUDB!y#Cq%ObVpQGVffBdVgurEE0;3fJAo(X!j?U!f7|Sdn&EPGs`r< ze8bg$w9+)S(OPBG%6!pRtt}!1zAlJwmf%hSNOGA)wmQIWkl?%4eXCk8VGPOXD3x)c zmOk0kA{znlrCe*#Vq5omX8X-w654+cRItY^9WGfavl3;mMZJ9y{u+h<8-UmE4xpxq zqgYj2;J-6Doot1&g3j~zz?zLuD?UvgIH!WVBxlZ&w{3$JB&;wZk+5AM3EOgm)25)mcHO}Y&aNNSSb9Ws*)2J$hcv0-{6fFowK$mi z4@2jv&s#63wgeCp;=~QqCQ)ijmoep|?Agr>x4 ze;*vD@gP0&cV`OMujm(F*t}2D5St;io=4Qq8D~gdj>}DWIk}2cX)0fSg(@2iJIc-N zTqiGpoIoA^M5?m&n?IUoAe@r)%^!5L_)Zu~un>-fKjjjk2Z517&l^?dpYB}5_l>19 z>dOhS?ay|OuaTL8tqq}r0sW8ji^d3XO)H6H+8qCQi-JCy-e9A}M*8;^o+;zPX8Ayk zBZRJSo89=AwKh?|P*}zlWINey;^X9CF+2s&*}&7eUA_V|&V@r2M%FO1VoB){N3+vw zMHfyJ9w@qa*%~4Mx}WJejEVgim0nJM7uGx*Biijmra3spq7UV_kl3$r=h19^@1pEcU=8;ja?r9MQ&jTXhEb-^i(pBx?iL9jK?i`;kJIHtVY z{%Y|f%P*Gx8O-C>GvUuyA+pb(1$nyof>-B#O^x1RjjUA&n03+{pM9#<-?!Y5L7#Kj z|NpI!K5GN|tPSY%Uy6JXeKMIb0>VmZ%$o;^zR8kvPY>mbnrt8XBz z@Yq}&x4*JVSj`;YNYTy_I6DkG8v)R6wuLv_4P=+6S@_Zmp~lxW4R2O1#M=(N^db`v zIL`2-TKykglz}7W>{T`3$fhuHaeKheYvsbv@?-{nn7{FFhWP0{e_v2cL?8HJ3isd# zUw9^dc6>wirSNluRU-Vj;Wt}S63C)-&4)o<}7JP5{!>a5^7bdqW&_68|F_RIFf z&Z&$};sb5qZSJl=j$M`C_UBMpSScd+T1F{Sb1QKU-`^q{YyhqN7uF&zk`YNr;*9G# za^^(;?pIT*3ddfSv8qszweWZ_>5WJXn-cJ=P;IJZ`epy_gscinejxQ}mR!bh|KU|z zySu(B?L;<;aV)R=#~)74vfT#aoD@Xk@_+NRh&{mRlBa}f=YaCZof3}CH#1ai^DoWl zWjlgqMS^f>$_m_Vi;p7oIJa?UAb}`67>OJmar6>5xK zB!WVROBL`O^G9VsW2&4K*g_FYv2eEyVWa>u0;87cVyjBh*MZK~6tFj#H@2qWXP@kb3ykOs zKq(QNr9u!IzP{jDwGdPzI<4*eR|aVrzMTDip(byJ|4=Q?QezFmP-B3hn1HhhRW0CZ zl!LBT(=9F-VwGj<7G6w_>-gx@`nb;JStrTtbLwKa$WzMd@FJ`M`t*G&g&WQUH?09 zYnn0syMX&PQCIJQ74G^T*y0oW9$4jz>U&_1-+f?%+2F?a05`r+loky<{`jYT4}R&u zB33MK^&d`fN8P|rbH5Kiz2sHi3PGGX+Yc-VPD2Gqtr+?ms z0PIE9-b}nRbWlirFE6J)RJbhvfS@8YLMr-Js-pbgWK@*RPk(P$(Rb1+x@;8{VV1G~ z`mYWmbYUtQrHWXeW6?D4-Un0_eBZDfiN8(+8|VhUNE@&GA6+2$%1d}|W&G>)fH8C{ z$Ns~mc<|Qui9_RW|8L@h#=iJ(dop7U%6E zZ|b_749JJ;6gZjV^zQ>t2x{(nP$67}c6i?^I|8pA8lvXhc=AZgj2PCtzkDcr8?nb* zdDTQpM1Nidfmf;_-)i`a)v&?%@BC@hQY_koGSo!t%)-#V;he%~v(nR<&``y=!}$>i z5A^4Y)1`+$M9q9z86x|7%kk-$`vNg?24X~gP;lfjfC@wMzRq)X$o9}>$Qd`kECE#>a&`Zsm#LcSG+<=hJ_Zogp?UdLSN=xmLR7aEK3MwEj zK160QHx_9Mu5jT>(iGx7TX+F(9fX&1{4IT#L8&yM#i8asLMyJreai@;M5vcYXcd^& zU=+K~uX;hkL69JX8zhbqUX)=oVRDV+R$ZVZoQe2~!N2Mzr$He3b(PuH>wDxEsobi{ z);aM-C_2`>B-r1cS3_YNPA1lk7D3P@(MOLyGCW@PynQ}I%J;o|7_u1_b;zL+O09J; zMgKYd`QP&YWbCgw?mrm&BZIN83G??@$m^-$`0pmj-1z@g6C^`F!4iSr<8Lal6IkcP zTNkiZxS^o_8yEqsN-ij_|2nanCB$l$)Z;tqS>N0)f5_c`HeP(Pkk4FFtR`Azymc}+ zXB7C?yVt2u&O#d`=T@6q>|f675Qn?1cYgEObaZr{v?tBfu@RFmXVN#w2;M2$hE#2B zJ*D3t?DYG>xsk@5i|7BN$7}DHxnFaI-|ajrh_o~YFT%|CH;+w+r|YH+_VwJ%@^jjw z-}yWEomu|NtgGkDY}#?f)nzI6*T(Myqu19lo4okzGn+msj$VH`KT-vFe|fY?3pAbQ zs8Gv7`b)X}qt~BmziZv^?CAB!=)3Z}IG+A66+c`*+h&#@(SG%DUd!~Wm)$_ia zh|LcSzU=mB(?7WD?Bb8t^5Uti@6i-hi~o8pFYtihh0*JuQhAeaGs~y*)r0!#4|-VM z+Gt0l#e)Uma%RTOc{?Y5dZx#I9{iebueh1%Q+&-_NYoXV2vwN90|C?URQr)}v zv_HRQX8F?gd1rNp$y1ssA#oKi}2= z$b7*c{5U;T|B9zF;D7Jv{{a4o)nDl9ud(`rA6;jL@L!Z!|IPnN{dW%#eqyfv9rc1g z_|clGKRdJjWA|8p^!gw_6*{ek3m#Drn*XiCuYFQstRoiaLg;JRrbVodlYF-9$%U^X z|C>IE%$pMTh9ptek10g~_Hv%_R}Hg_BiF42g9Jzy#9R9l%mG6^9p>|54^e2r(aYPh z7C+YerwcEuA2pr+&9hTZr3FU??4|R}zBrxZ-&?c5MCSe^cpN&)@W)pO`tg6{LZ|^A zjgENP$BSkpT61>V{Nntu`hQ4<7yD;c1A)Xfc3x!O7`A%ej1zCh3F^}@vN?>n|4F)| zPzds;?yH0u;jR^)IJl1nZhW8wZ{rxFc7WhF~nT`I!_|8ei zpEflVb9kOS%#8p;xX4iq_T+7{Wb&qPk=IG(n=B}f&T}%v3yI|Vlzz#I>rqxc6-93v zrQ23qCv3Tq|Gkp^+4VS4B>0Xew^>1=wHg~>ZFH$N@y=|kV*mZp$=p_rCI{2ARijrZ z1yt3@XA{}4cJW=jfMwC>^@`x6lH5cqk#F-c0aizs?t+n5jb6=Hm80JczB=6-w{I0` zX3AJUSX~)SK&G$OO)_7C41j8hESxVIWH%V-JMa4^*zN#_0b#Nv5XUNuidADy8Rf)X zx{x*%+Z4}!o`kps@zMAzN54=xdUa2Vs`$tk;@Mjh-Z0iU5Z(>Bq+rz{GnK6~h|fK= zQgfi}eYZuhLCh`fd~y{M_T_6ZpQJ!1wKw zqC?Bbg0P)M0Kchx-?L?)?^W3`al23BSzUVt{@>e)PQm|5pH|H+W8qNo9FgZtAHm%6;THSH-ipOCc@M_^%?EidqXSnB#qaOpUM-c-&yzilGu#s3zKUA}pB5ww}=| zg)hV~_csEpzx@mi+;*u1f9JMutl#_9Jz)KJy-hPyBprXx)3nR5e}!5mrLWzVlH z+pYyAyp2LLqi0-W2W$eub8Olh|BJ_uCO^rQTd827_=(O3cz2p+NN_$tb6mZ&?^%c^ zUj9{CP1Q2psF(JbXf*OM$Vz;?BjM$I%yKZ(>^`eRYe^sbtckJ^e3EMFm{4d_Dy;)y zT!MeW;pqtNd^Qt}4u3{J8S;^C9SNiVbH|)4B$^i)b`d_g-)aL0rYyPkIZDl84I&D~ zoRe(y<4C`Gib=Kq{;Zc&J8=n8&273(muee+Lax+%n9+GbUt&FFM40~B z_xUi{4u+jSFM-!2G&f|Ik|69{U>K$ugJdmEN!GIh7#zt82J@dD7{Jl>gH)U8H(I~) z-TKuO5#f@zoj3nJxA5czS5`Ieu{rvL~YF4!0qV52s* ziFD%a8j%3{B~PhSF70y60IT-zoMiAkzRSS_)xygRo}_!T^k)w5)p}C{-p6*((!oJX zJ%M7If4qB3!ag`c?MTQRC0^bC{-KT@m?3uj3slJCw$25a^qf96x~E-OQ`Yh$)q&nG z`R(Xmxo~>(4+5Js%}b1StkW)zHSXUt(YpS#J6s3BriG&hUa?}o#UbFLPaJ9j9>Ln( z^B~}m00E_`NV!e7IpTM$M_pIDbUQ)+{M$#RogAZ4E$ED=%?P7^zI>Yjm@QGSKhzO7 zh;=@X1NNmI4w%#|IJ+5OLjAI579;{-+$>N{4jO-7;L!NOP_;PsodB0#*!}|7{`B7M z*W60`J*f$pJIvD0{pW6V$k?s@?~nYywZH2$8?2W;?$!VOe?$9W*kW4$_tgHr|Ht+h zxb~;_ZvVWkv_CQ+hMxAH`_Z2IU%1EqN3Xxd(Qg_JkfkFI{~qxqinLf{|18~j5u;0KCaf72mB zO3}_~X@ncl50qQb<9VWdVatU@BU=(hqnPzYT9;KkIF1C!gBy(etSsj$!<{Nvaws!I zNjY+qaxtQingMVI$Tajt^)c&v9=Z9yPSt0u5dcXEkcXndB7Y5OV!E|8=UC8$n2M2>8C;yK`=O&Ya)w3jp3y^Xk{yFDNTasuP-aX2zx@^_j1KA`U`aIZ66s&| zjm~a7+;g+)4t0;c5l`P6gj4%*UgE^G_0i7XfgQoqd{+W& zPgtloJFI(ZwEj_>2Dg^Mowbr(BFRlB=SG__v-%2pp?fs z-dmF+hW}+}_Tv4u)_aN}V);VR-kVp5R(Ylur!rFS{Lx10pXa%ey2_u}ppk;YBi9Dc zPW4Odnf%^Hvxs33?(e+3v%BkS4tJuba3iJl%2; zopY~amo2*un&k_Ypl699#;p4!5?!jq0c;i8#V?%2KeGbhvUP668kX<`fRnip^?2fn zw>YBep|i3pR=l1&anLKe@5dEj(O@1rtG`Zq9nVb;*W;tlM<4s>5N7Vl;s`uW@CsA6Nglb>^lrIwe1SpFE48ejQ{*4v4XJt;;!m^tm<doAFd_PGdgKvcVR!M51g{tQ%|OIo<)zBlFsj1EKLDrA z>ZR=z=^Cz4!cFue{ld9~{#u5AW($-2=3FLxvSVz!znal%Dt|3T1#Jpaci*ce1(mz+ z^~?FE{PU>+x>?ouAkXOW@APh!%>tO*T1L9vp7)8{wf>10yPOKu@z$mK(oZtNlDRYK z(4wLEPa7^VX8*v0$I~PMty2V9J&9F80cTs}+HNddi~RHxCvp;OYuj2X!cn$-yjl+J zeh%L7BDD==Sry$tB_wJh`1_xuGVzrPygDY{hN31Q2BK2hVyFV zA|sx1jbbfekgZdAVk{}_$M&91iDt}ya?-wmALp#ym4En9+WxIO(DL!0++&CjHdcAT zwIf!@V@9H(xT*YqPZo^~COWKG54#4AUGGmEn~hm$Kv`K|N36-z zLZa`w+36Cz_1Md(QzKhTmpe(k32x%=wZqhlOIt21x(vN`rbIl_akkjhr9xp1ziLwp z#9Do5R{9R+)rCqGs)oxZpB!D#KghCDIt*jO-6n&|)~1bsT-ACyKIcmn0$Eg~o0xW% z!SpWG0>q_7`4tjUxSC%UV!h!x`)m71jODv^(dJ(pvZv7xw@0G&E8qzOfK(xnn`Zm? zS+;%Klxag-a4wEWZQrJ8TF7QwE+Ki#E{_uh1Jpux$3rK%~IznPL?kOD*`3EVtD z7_6o)9Sr0}USEhX*k4tr3xm|0!K6AryZ&7Cf_o^FRhNJc_c`2+kKxW6zw0o5mc18k zUZGk7RQP|0smd2@4MA)FhuKG&gQ8wpCBaATD285Tq%LpmYxrastA3>f?e$G--nnvv zw3eU8rSEUYZozx6)s)`fqF;DEFS-I()dN<|Pu%t@Z^Q(vW*FxV-cqz(#o@7{pH@a`)lpX4);C;j0!FpD z{iu<%e#aLb=N`D`h8YNe>hxO~X zKNHl`o9@qgkJ5eiVfrYYMEr*vrJ(}aB8vv@v->C+E!UMvf>t)}%&sGrZIE(_OfQ=H z(UUoKgE}foX*sK_fAXr*kVn|O3`W_8=T=G>y6-;H5cH?l9fI^+2)aX8FLLk4aM8o; z-kpvZI;{M6mIy&&`iKJA0ta0Lc0NAWVW-$(r{g$bhuuZC54|TDUW0#zf?d44x7bvh zNxiq&C+T=Ol=u&amruroc==cU?s(~|ue~%<|0{z7e%GUnb{^{Zp3^_aNH}J!K|uYp zp#E>fS{4?46M~;TQ5w)Bg~r|hk+mU8>-SUmD&jBl@Gax;pPsV?L)-SVz?-C_pfHt8 z#Qu_}>YK5TR^>*QnWBphQ>{I%7|i33d}I!yD{>Tl+ld|A z^(KIU+Ic2)x1e0XB8xpHEC1--P#B-w0RwQfi zEt=QN8AlEl&zvkxW{)CYcst^OFIX80`y6Bbt+U1sKT)6T*3>IAX5 z&6DfGK#9-(3e2UzEb|Jcc!PS}RQ~kQs-C2ROReinx!NxHAs7F2iw_CV7VM($-80*5 zX5CvG^g+!|YN;NCv&iYG2N5S0x(2Ncw)mq$pydE%Joz#Bya?FvUsXBa(2p`3wffDN zVL3p2qo&f!$u}FB{bRNt!J=doBcJ@CQ*5pHO(rb>{T_gddk1}m{69yjzXv*>Ve)zd zNcj~e=|BBdLIMzvlD*`OfA}w2IcfL*m2j}e1slqUH2`0zmb7s&63uUkkk(2y zze519+wDAAT4G&B4DqDH5fAv##=WWhID^pqGBvnG1fdQZ20)3a8vj9}O#CbV(M>(6 zNznb|%(lw1_0gMj8WY?$XQ)mA_L&^39=1u-VV6{SaF`3A`A|0}G>FZ@77B&hVzC8y z1EC9|s+iy0-!X_>Ek=uaNhM%>Ssy^rY^l%(bb-Y;tr~o=2Q}TvuLrY1L`DoV+$jzm zmEulQ0V5&qRIQe#ezYRHZd~(6^Gh68o_!~*Q(+A~a>C1N9s~pQ$|pZ8K|PzEG(ArYrwWkg)zRBim8RzZWH)AM8PlIQkgn=mUb(qO!-I z#!_eBN0+@v*NBE5z-DN%4#HP4+fWl4I9aN_XQVA(#lPa&uf$h$b9&GxQLmW~<6aIL zJ`P9kx_)dDjV`^7hn1{luG{9~`{QLDM3p-1S-#L`gM%s)BUexJhU`Nm=75ROhldT& zL8;TIV(zI`-szvG3cbL=K~Ltk=A1HfBIoNgpT{UiS1+eK44C@T#BMyN0*1ffG}_>E z8Z1WFT?!u~c<(r|9I^Okd|!`<-`{}p>y5bf&BA z=R=uJ%QP{a7C+T3C2|k(Q-)Qg;gmtVq6e#rU;X%>@$3yYc~IlNPC~Q6iw2Hu@0_bK zgKgA^ixitGQ)_>Ff~xFiiTw>?d*Yrv@=(z_fCassVMk_~eR}^T~$c@vyVT}A)11h2qpIn+K+c5W1;-u$d zUDD#r6&<F^^z4`rU)W44tjTH_wEG|v*TbKI$a|9p5Ixd+jiSv z4F9kf$ou#FwY=cm4>KorIz5V$Ae$3-qD!>_SaGcDwk6adoiV2ly3;s85@Do5|sNxoGhU!vfFLgb|A!v`IdD0^k@ctXSH9!5he zabHiwgEpz`+4?*C#1(!OFybFz=m0Z2{TGN)<5+Qjpb(K{13?V`1kbGG3V*x3#(}ld zzuRux;ZIxa{Z5N-YZK+=`uBVqP9DzB-jWtx6^dAcb6w-E;#^1T){AtkGtSli8k}pFA960?C*L2lD?q*pw6@OM_sF_z2ps+o za`tbnI6gN0($w==8nA{+Q_piM zR>g9OGU%|U!jmpxSh;XCsO7dj8 z2p^CEauP{{!kvmYC7BrZIbfPr3bYPP>nDlpa;nNUN1Jk>8)IcSde?=AWce z25`!r0sQj;y8&34sP`0h#5MI3$E@_T0diL+jyD>D{|GMR@P7ZsH?tbnRy6aI89J=_?hhYowyafOoP zFxtq*16EDwMM`E7asI=QH(yu2VpeKsv;z9z8iJ#=wFG5+ak26=*^EmX^ z%f2%U?R5bJv6a~RCd3%M@qdCx#jQh8v4*vtpCefTb$(Vc9{&Y7A@qUBks%Uw@@rUh zP4uyM4@t&{@FPFE220FpC5~%{3^o10hiE^FgZ=$YujQ(e;&?WP%eIdYF7WB5)_kUY zMVve&@ox;4)uj%}xO61@`VdHVAD~Sq@f~EogTx=b$B}q?`PQkF*M5xj@~d6>u^HvR zki_46|4Whhw=xIFjnC6genPkkbYy&L!EXbsa-r7r8-Y)rGUIfN{Tv9sw=_L3xW5KhkVtV-OU+&t zE!9KX0=AK8Z4@$zO*0>r9Rj>@-et^YZD?X)QFHm6XMnx!#NM!v=mU21)7AKQD(*uA zh}+BtF2K9N9Pk2=V2v_468nBCfD8l@CIy@g*z8+eUB}6|!H3oEoO4gDIoje6{9R=Z zC}c-wLxvY7rNnMbPNeEI|J-F3&2I~&w$709cv0MFtEs%=0LI1Q)69XE=JLWn!XtkL zJ%m5K;#gBHvyf!Vw392|044PHVfkyf2SSpu%%_UpKC8}u?XK&)`O&IT_%ia-i+pP_ z^70oa?=CNCuvomrF(LC5{n!2?Jv>Dcqbx^Quo+y6pMHOO*TZWr8|ZkA6OUiW3*P+K zm*EAX@6H2J%tB+PkE`pyZLP}4p9cS~g@0cp{o!KthfAeDpc`tyn?A{jHvi3NS}MaJ z$A}4DY5pD$rC0>6yEeJ*3VD{!{hlFj9^CS{I~}(yVO&cC?mFdB%8v@m)7C5n#TM|u zEtM2Xx#P(}reArHtp{@m7Jh*O|HHk5C72skd$NZmGB6AlpaPOSx2CkMdfE$LQ z1R>Hh7TE*bSfoSNei@J{h%db-S*|B5exBZwFC4og{`qCbuJaPd$KCi`xto6CokJ~e4;rBUNds^*CDL}{X zm%;TT{^We7e%OBAyt7UJ5dghd{=tCYpAQ6@Qz$(F%YSpY)fX&pIO8YgU$wV!%u9D; z=+QM5$@n0D=!=fi^e90oPUF|V-HWxPkI#Hm_4Hjf_y+3s$K;0<)S!m2MO{&}p{@-6 z|5u3&yb*V-$3EV&DYTFM{IHR<^YNk&#ru7&>+^zjq7{?;J*K1cE$`RL-A zTHGo`%Z)`pgL-2vj~D%%E5iORO)8eu@8Jqa)4P}*FPxy+;a0JTR+5) zLueAwhaR+A#9!R9@lU8k@lFyZMC{cc#FFuQw`t`#?|m+|a?G+Zi^uD`j!RIrnYi6# z9LQWezN@HFHDteD<;`;I$1X~qI_u80rArAKa2jSIS4`C@L>8Ei)w7CB3GK@V=W}2$ z4J#9^?pQlDtro%*=Kw|r3Zu&oWr9^UeU`IGYu=>>d8EuB*J`)YB9GnDRfOmF(;k;g zMbm3JRoUw*o1Xr3QtLhy(PzT7?r5{T%oCFvDx#0QcgV!D4HGe)I9ejVs`(vTRDb1G zTU6i3#i|ZbGqQ@z(3v=?%6_J@`_C-y46@oMw#0|BG+)Q&aNuIpcV9Ne*7%_k;ASQ$0)eDvFMjPharf8 zpuY{)S>+LB4d*ko92b&?V(BD_sdbf2I|j`wL%&R*QcT88WP$|s*Db8qJOLN~{xQfA zO5p1ub%<71@27q(2u`lh@se5D6)lxH(Pt`>XQnTlV=1Vilql(nn#z@MOQ_Ia#NS`h zH5kydq7U6-d~4bIy7?T;w`1_U+7=R+3m&asOC5J3KYrDpfG8V?QiK_bmR74j-I|!? z1OHg1o>dM75INskuou~cwG}H^r4OM?jPyYkw^E@sfYF! z(lR@R)(XnlUo;S@iDe+E84OBjRXj5xIlcdM@`UMq<;|pB7lZS7_8Y{&yb}2L1;uvw7?H9KEfWQXoK=kSt*rI!RRY@lv;}Vb6F7HC*$W(tW&JOxh=I_>@ zFO-Lo*S?HAWc)gJr8)EWXy0xT#2M>%efuYc<`UVr^$XL?*vQ3TM8SCJ#$W%p=#^JK z`xb{m=k(L}#jS%Nh+zy<`)r13fg)LXY;&;3;*`HK&E_2bae6gwAQl}@v%P(XHxdm% zvsIbRN-3sC#faBFRaF15x#)p7lUm$Rd zFBJ86SbeP0Sdd(3MUKh(_g3VyPdTm^Sdp!foi`hI+hrG_uZf(jngBi432 zt~#5;k#P9m<>9Lc65D&Y-_N4CAlwIXW$-7bSt$=GTj$(^P;K zydWQF9lMaTMr0v&(SDy}7X@M$g@@Y1$Y;NI>@VLx?z7EqQ_@uW>NK~k=cfTlpX`&2R`UO z_D|_C=x9!lA$(&YpfFQdAjtAh`fOXb|53Y})UzP_Ic!LY9QIwC)Q8(e!)4FINezN` zb50+(Ic<*j6;avwZeNn@|3sftq?LFhV(rl9f{qk@-oGgT;XkI&OEEo=pYVs-$Vce2 zMB}C0Bz-xFy~vxJ;6F|Rqv{L9Cilywp}Ot!_KR%LHWcr)cTI?#M2R==DjQ!T_b z@OWrxs8w#GVM=)-sou-oQ7oMmB>=Cq+np(%DI=g7NGh8?bv~kD4#43CApRR1MC^`O z-&IuE^dvr_mwWa^;3Im5XbyZtgDRqHoEJxm*ddx_YZC}Xf-`U_u_zTwgbtbyw@lJjo1gp&Sj}YiD_KKI(Vy@t}W;0?S znBM{e;SOF;#D2KPuFh@`6zo2nDnGyjI|;`^k2@uBiR8#7(nuYdwy3#8PT8YNWYTYB zzKK6BIJmc8M3traMIv9yFY@B&^^OHQCKvJheMf`7>dmPdLv8PG(8y=P)pX)l=u^NOLbZkJCYYxEDl3fqTIgBw$wNW5CDc z+zYesbMA$^4iXwE)62a;@jl%P!*ZNmUM(r;fJ^Op=y5N+^Qrpx1@47!5Yd5qVZu!& z!p3k(x%JGw@H%~{GWP=XXZ{6qEd)*mHX6ylaM!(oe__jkt|RzK()Jk)O$Qek0PP&UMI-Zt_h zt8PF=W9f-?H@T%MGBuQ~o1fQty1+De2&e%I2z|>Q@}7c0$>E*n0BpxQgMLJM@u;Ug z7XhfNsW$|5t-Ci+w{b5}^>cyF5|2y$0h~j5;+%`>qRn^lx}vcmXI9;!PR%mh zw4V&DKU?pwxU8-|pA##2d1d`T3Jtilu0}8BT{0_paoH8_#btG;+Kal2+Un1-PwMLH z6Z&Lc{Ui&{?>dx<2iKRzpE&WN`np+H&izJZS!w-fmCdcYroPZQDnV(nP!LDaIarp~ zA(hFs$oj5tp`dbzrS!vH?{QFvt*XBJiUepdpi7?8IInDrE$glu#r_YDVU6T3Gx{8A zm&|hEE>RS+E1C;=|PjU93_OO8z;RLfcp!Iu_Q zyY-m_8_R3zAJhykk)tz~NN%(!(slllZ*J~x!+B4_af?&dC^HLV3iJY8x~)Bdhlpm_ zLqOX~{{R@Pn_&JiF9h?a^Y7t8hUUi|ZhovD zNUclW-loc#9~*ULe&|}+@ic#-@%yaJRTGPjL5TD?rW`@1w(IXF5=O!sHkm)ZRTY`@ zFu`P92VfO5u<@qyCq5RpBpc9;LCIY5E4c(2`qIhYlimepFEZ{I$dum(-=Yq=Q#4z@ zcRvN2*DvR9c68#4NyV%sucGL(peWW{WaES6_MI0zXuykD8h#&d{oXx-O~cx@YC=4_ z^){<;%b#3@ueP-%w-C!$O)c-84D?5-7BBB`p-L%oKK)2tI5|}xI=05JL592>z1Wd5 zVF^x-CmR@E3!1J$#U(tCS0!y--@@AG8`mGdN+C3X`QKpv;~DM=l~9|1h5KbSkpPJJ z``|rQ*5MWn-j_J?Nxdf_n_$5IZSWFvHzh`#ymxi1l6`l{kNuYkiXe*;xN(b6@ea3s z0vaHK@f#xQ?}NtZWbGQ#yzz&0o@9@Ov$z+&elSHN*`V$H*F}^M+6Z@jn+JmrB|75o z1>lkBi1GGiUj5N!!e@%4K=B)Y;ycvCMwNhuT6Bfx?KiU_W=Um`>Ll+7h;_+R+bE;} zi&u$!x1@=65^7p*C6T@okzvz@NjjKT)x^&&Ak(0wr5h_9Rnv@A2jG|a-Mwz6=I6DV zaw1{>m`7B0jm~ozK0{4-;}g1+ZLhnbbDF*n=R^~x0_>jVGTf51mmsA3JP!K~zP?^4G{e!quh`+SRQ#k?^bUOu>Kkv2k3*P~YK+f6ccdXKyE7AE-+SSU z5%wj~i`=o${nX6+zg3@6`&F5>PxyaO zJIP-05BwGJ_28Q*3;y%J{Hx7^SP#+dfpLI4D4sY>|HO_!=xfCDJC*;d$NlQg4?G&% z9QLRPDSS)$;W>mTAv(BgLau-ODN;Pb2r7Tds%_m}PwR*|jxss2sQwi@jBs6AwW(X_ z7pt9q@e?t~C2wo8Nx!&XSM&?J_9ivv-C8U6xal9UmIsTr>38e3=){i~HFD2k1$e<= zb}*+xvyc+4XW^p3(~@Ytpji8;8#M15%M<@#B1M^btLfNKJ!JACggkWHX8 zoT@gJc#2)mk&9=-*(`)5`ANvsEDK@S8S4lZoa|9LV8Dl3Zjj$`_(QrRNgVJK@jyX$p5a;0 z?a-OWlMK%t@upMB4pm|-^_GBHxiwf>UV<&Oy!3lx@cRy~6|MV*ad3(Lw-o6Sp2Nb4 zZ0BDpU3cQ>^%co|D-lzbs1B8_?9J^~n!$OoFoxpw4dWDlKV!&NriLka(+Zl(yWZ{_ zoppaVbfRumlJF|-4ZEGp2y5fsjEzm@58F3KO9^PFY3#kV8{=LMZ)4kf`eDYT>q0EQ zOY57pKp-x!kNkOc&@Y;hO{XPKX_l>Qt5{VLN6^O#8IHbQ^?tgH4gB|D>g+~6Klr;* z&l%73qMlE?`tEM?-*%%OD7rHtGYXB3bdA^O(7l;$OLjH_>7oG%@67D3G5!_j@m(sC zzGqJGG23aAn*$X<5$~70F8vpW@O6t0pEo|?9d*^G-^!X2edyA|a0LFXZl9(npTItB z+PVML9#l38(}|0sv2C+!=TPoAYUt7HguMBLe>oe;c&03F_#uu}<&Q4*&s!m=#8JgU zB{b0hc`G-1ap(T2V2Bjg>$wsCYj^zbRw>a--fpKs@jv5(@ISl4|3s}4;l}s8$e|A$ ztM~|id7k4-H6jly(|RVYFSBy!AIf|d!#=LSO)>$HC(2$Hh|IG@QG#F7lOHMJaYA-w zl{_S8h+M^@YM|d;Ki6;vRcn2qT5Q@IK4#-&wQu zn4D|1cT6tOb=Bm;tWITJ)(tGz#a~M+z3~XO-g<6+qV)_iI-XllHF{mo`LZjbHxB0g zRBy;v*e=ZmZVue~fNJ8&GnC(Mrf$`I=Y_iShChQcY`xx2qiu4vYD8dA(Ph7~vU5TI z1gKzYq42Zhb19jNBY)BbZAEKW9I2J_h9=DLMdv6!#nxXGzVAhDyk9d&JH!ZHIhVBH z>SNriE2^z9x?~f%-!lF!s4>0agRS8S1@UrgY+BGxBnu+;uX)Yp=2@N#g`s)Z)X21^ zKG;H2%72vE6ytv&jRpPhXZ>F)FM_gOUa#T-6iwIWX4MyJ4gmOw(N#gJdA{E=Sm}oy zk{npA6NdPgZ8Mk_|F9QK-fw%lKmVM*yPq5vK&1KIxk}948~*7_237s#A?Ys*k=@ij zWVs=cW0!6+R16(SB4Dn}gwT?IcKoA7F8I!v$qgcK_$rZEw1r$?tQcUkiD;94(AB3M-Y{w|kYPbw%9#W-0Ilj(>%V zlALHUGiY)F_+5SVDazQxDG;OI)j<$(j^|>B)Y$f@t-oxUoPHF<(vwbrCIhCquv@!-iT+|4&q0Cg`(_5{^TA#tVi#mJNtRA=r7#!?jP}dGtbj_zd!i# zbY|aq(#{Nhxrej6JGZ{IMo7rWzlEZMSBPWbV8Ah#toTHjR(2xUFW%f;fACBu>50mh z;f)vx8XpxJ{qGLs*n)?7VdLS>DXH;q`-=_5u@~cWV<_U9-_^{-lgxW3fWDYl^*VkQDOAzIaK^8AM2+kr{^Yw(Fe&C>{V`Q0O0V{$|$L&%@s{{*|ruS(jC{9?ySj zzEFOf8|^T3!C~{q#NEe+83|^AtEATK+8oToKgIat->ROHpr38d3`xooZs%R#sxl8+ zFr-VK(g+hlWn2M2rVY&8n8ux=WfE58~6(bGWlZH z{gQ8l-T~M`t-l9QRXeCIa!_rq5>yyn>U{%^O@8Zyp7Yb@gvOe`j~en)4P8P*($8+c zTW#TqSq)PCcN9qmpS|0zI^6ZZ8RSCVZ-cD&{2z)$5Y-s;caXdL>OGnv|eSjdWD@k++r@fTd%T0-rtWT%(TwF(`gh}A zHA14Dg)X99N%j=0+JBAZOnsbz1vP} z(lSc&Rk8?qBQEnev*$x?%LZjJp{$r8T(;L($XEQGFk#IH#$Wk`$Gobcv*c=&&23}3 zQ7ba=JO6=KwsnvFNVM+dP5NIv#z^qIgTCeZ&qePP?FC~fmDnqxnXlz>pvI0YM?wTD z$8rY=4PM>>H3)J%{tytH0>c3>_V!Z%lKXf(c|NA}9e)j|s3KoEp|8pJkJ%v6OkiX@ zc_xn2>#Tr9PSWa`#oFF`O|c48`$Yij=9)L+kv~Wj&W5QrDOX81X?r$>_JL(8lTQeb z%0YuCd6%rMX#8~0{88NfkMP5<{jVOtuU~fU&EF^N_gwDQ5a;w4#RqL(d@W?F73@@?#(Lqrh^Mq zb+>!?fP45m_pr@O>DA$(G(q1OVkVr7R7Rn|Ojr#?u|Mwj4j+bb22O8f!b&qM?)+h2 ztjFe{@_XOPTPNawEMi;owy)`kh~K8G7hdH9@y0K>WQvY%Uj|C${})$5$>ERxeGAXL zf-fQihLmJ2FQdTNHU5tW>$sKQZ_!{AIv6>2`kXAN&MP0y4f|hSGS>0ZUOivTvM-kC zi#Ge@Husu8`x)7b5dwNx3d(g3Fcv`KblH957(2{ z0QF0r(ul0|r#--%sSrkreFpL4KUQZmc|4t>YB18)I{ds%^(>;+j{=$mw=j*D|9lec zVIs=GNk5QSF`;GheE7|02@P)RSfm`_k+gojPF?4026u8QtGH`1f**xiY~ne7-&2b} zbFrWg1%beDRO@^9r;{o2weuu8+S8rg?wouuQ#B(#lCJzHh8&mH>p%RXH*F{xBMqgO z7hQ-#JcL*15B+>C%q$$ZDpK@Py|UWbV!SK&{(_*KKRqZmd{yML7b&(X@`<~=tBd;L zBK`blf6ExmOaTqnnTDZf9ny=;8yR1*Ee9Yj`n@#EVSIdHHr-#VO7dY*1uNZQ>aV?w zQ_AFX1GUts7A6>f=){qx(zw)qG5_kdW+CLCdklkNfd=?$=*N+=&)vHZu6Oo9OvsLd zov)t_b{sS2i%_5Pk33wqn_6mms%B-%6!1UzO}ZJ-(?5s*TO55+`D~~P7)$jfvuebB z)kfqWb^#i$p}4=7{8^4t#9z^p;Z>p*wOUH6F?SAYv5by5^Xmoc+Xu}KeuhxA=tb(D z0)AzJQMEniOU^#b!S8A^`2Erl_Rcd>;}Q~*;dgPbx#2}7fv)9QNO=?<|JD!DbZ8ds zEAsX`2(+*61g4HyffeY873$hlzI{V#>NDi&c}WZW`n9HoHk3Fm^%pFBtG{ky_&@qJ zG&6TM*aV})??vLf8TrRW$&67$KK}1Qy)}H}|Em=RKrDLgMMl(OSe4#lhSgX#D#OZc zx02q?$x#NTs_cvAPaI)Z5;pE zqL`JA(~9*fkvy%0{I5az>w|1!8G*q`Ol!A3x&+X4B?4?^j@k1-rj<<^J3$(ZhXq!_yCXi0Q6r%zySv& z#n3fzscH*`YL97b3NaP@%L<)vft=Bx+XO7Ma1Fz7I(YABO2hjB?+fpG-%%0Zy&}N- zVi=a;J*6S#{nzuX zN;!LIqbkL}@-_ICH{u@=;$R}*dmW+uIlM2c-VTV0QMZ)hEQSMo$B0ZInhyT6AQK|6 z?-*t1b8x>5_x^W(72w)b9-E>zKacChMVX()QeP#XZvQAW{oXx=y)4w9Z#>kWKxN4P zKZP^B?<;hXyRz?BsrIASE5AZ77#s`3zJGsSeSF0mIf>RBR+JL^=El8~_a(payy@{3 zuW>SU4#5X?gQ2Us19&xVa8vo}^}-rYat^Tl(dR#_*qg*)Vi6~PoagS!S3mjnKm zKPQ}oy)rZNU4NC)_(tWnUe0ZA()B0*GC-urAYar|(0S}0`OEw(dhx%IJ%eBMZ-V+q zPdL2pLOMa;4s(4Yr*rE<_3d5%mKei;Fa9U(J$x+ycK;q=_wEbW+wR#N*vmp-)8f;X zXcqMypC)gDuQ390^R_EPF`NuRw@^0yb=x#Ew`*o@_v_ZFJ?WuZrSKxReHVfrHcVp4 zWEOr6HWC~V_izV5zx$=XFf~r>i{PwA8dSE8=rXAvRjs)SYKeOnWXIXxe1cY_XW9C6 zxL`PTu|!ztDL8cdtGIB26|PxIR4<)stvE!jm_kfb0{GAFj<0w%9CqF zKBT4}!Up85&U3(&|IjlCkkh%-M=*aa#DIsG7GVu9$+H=y(>Q47bo)9IPws_HmE4Mc zum)^+k)mgDg<8McR8|Za5LIw(jj%F5CHUF)i`G#NT+7{>6$%U=u zuk@e23%|}9`E?4^{ujkxIQ;)g9=;6!NgDpGt5BfDCTdCq0T$rst2Qhqd!51w{f=$7 z(|8%2V`I@hWmRDTGB>mS?fMy5e?WR@rhGJ3qIk>Rm#V;G0u797mWn5Yxtw!6Bb zYBiM|w?(G2DYo^GlPNYAhWL{|2NLeA{I0UNCx7}5#VbxyP)o7{{&{HJ14;E)s&Vu0 zSr16XnASde4l%kDEK5 zp`n0UlU3IoZ(XYH@lo9bqR&81H+c>H=LEBfLGovPM90$oUPm81`)UftgtNCIBBSI|^?U%X%1N+q} zw=H@AFaAH)&ILZI;`-x>un>f}K|xY68f&ysL4txNXzB(7Y&2*@EAiFF7me=-2}VHO zxQVhZD^aP%S4*`IY;B7cHKJ7z3W#k*w2G(|-#1481s{mon*aBA=HAT%eDweM^U>_R zb7#)XoY$N=b7n@!C=z@7UIM@OESctW>mB6_O=5Ncav1B&F9@w>P5{ARrNMNy0B4U> z-B+~0D(_L$3$-|@**Rdzk6Hw^P3-3s{e)JtY5nmQ7YcKD29a15}wzQ-t>uevB5XL9BrGU5EjQWYu%;Ty|OB)>H7BsYJ z3$$yRee1fjufK?ZxC*QB_hYQCIN^nT3yFV7^Dh|1P3b!4fExdH2YXmIc19|+iqj2j zXudo$$?R7BbTK!4y#wU`qPgC8uIyYUI;xLCu2{y@uG`7d>w!5q^p!`x(QuyM7SIf`Ia z7C$pXlMABQQXam4m$L8z{C_$f=|Hh%qsFKkuXbZpt+);~DgaDK8>LBHMTM2A&|GSe zIx93;ti%qq8L?Pvm_JGtk*(z6iDVnkD79^Mm(=W8nIbsEt~@vU;Ev^8l9NlRr;!{1 z=XrdV9`aQIaf?oU4nuNqz1bW+UV4`S#!!18hG2K>Rhe=Fjt^e*pVq$+VdNd4UJxG1@^q!qL?6S(fh^Z~o(&izH8Pl)1IHR`8i$Ub(3g8rWVkFkaT^U2xH+PKQc}fIK)^ zg1WpSk7j3y1LB<1@NM&9!ETt2d7a98IffzI?*`WN{rTb5lD+_*lm)HrF|>#~3cWq< z+_}h^!=n8Mz2z<#W4>Abmi@Sg{0+S0|5^S{H=a(*-|ue!ui=NU`yB21H2FPlw$=miv{)IV``{8#UXBSB}YSAw>DJ0E6>Fi71{CdvcsE#wu02#hDk@Fn@>cMevZNF-A!PK7Bb>jR%bM@Yw}7)_(JUI<@MjyHu&XU=1jN0%|t(H zqJQa+@e-hf?9GVhx&^U|(u2Oy+4tWvKb@5(+Qo2${KG1k<(;!IpjTTrdIfSB{C+e2 z_A;hT%g;qW{XfuewJ_ZCe)3f4?0t`5ec=lQ0*XxoM=F?p_cGSc$G_&h%1|hD>x+1m zpHg)A2Cyyp1ozMTS)Nn4e9ADWbSXFR%hQ<+L=Ps4iySp9}R; zjm4Ja9c%?==X$TVsbpx@)y{2J2yTm3dIRadtu8qX3V-42bU*_ALy9kki_j1GqVsh1 ztEkm@aTy$(!JKd~Vc>*-50fNQ{aSDM6^Oqx~R| zX|vkTo#}r2VOh!2&f1UQt@X~B>Dpf?;B>;;|4v)?_BV3SPgm;;)2-)*9nPom+n-DO z^R4~rk%<ASXksXL_`d9wH?QZdTs*9gihqd?|({IZEl^1SbeFr0& zb}5_*%Ov#bi}>~$6*)fZ1y7lp)t!lQ4LXend_vJ z|4%cqoYJ)wDwb+gW%Am^V4*U3!xDbXM|lscEz_EoX)Ng5CmdhED=zpA?RW4%bLtz8 z$nZ|2E%DMqRV;%o*j6^a5N{}xOY2Z-Dq6sHi2P!yTC)zvN+DYZmjjq{V8$1+_plaE zXq_xtoE9DZE422meJjhaI(>3-a7FyetX&%3lkTXJla!3>vD*&rM-(K6cZPStNV6C@ z!I>OEE95GTY9C5n#~)=ISp0glvIIwuYvxshDpT2ShmOo>{}n*g5H@ervU#JC%^P+8 z=8faksM^3GyQmg5e8(oYtX0dk@{Pp5JgUx%ytUG_Q%SbYE>-*lEBAhFZXZWoW$M_@ z3RZKETT`BqrN$q}U3bJkEfbJz8gvQ`Iw3JAqhk+D|4F=f9bkh3&yVzn=&9}poSqa_uJk8|>OhT>=8iW({yWnK*$aDaic$RbK2f4(+g z(&(*IhXUD1o?Z>CBVUxd%>Hp7q6LhFuN$KgEnfO+oAAOai8=MVZo01V&I3wt=s-*z zZ(1eAhLT#>{#)X05E#>smBgIpaZS~b2xlXFe#r9rEd7pJ-tbQwv06J`V6tu_boD|dvI=c;FyiR$D#G=G1{>;I zgMLnwj}=da23=PK6e4gw^M3IsE!uK$Z$BXt6={3CH{!%)h%07@TMz$f#Pr9vriaxt z)_v$~v04%l85di#%xCH!#*G6G6}-R?%C}{5OW zQ?p8BYv)=3mY19Aj#4*RGMt$G*8b?%7_W?iioa@O^65}KJ=;*c7ADgWxLm)W*nV+1 zZseV*7s#><^9nZGFWa^4mpw!F%Qj(1wYs@L$0h)1qmR%fg02D7#Nf^X+gAs%6ff@Q zX3n<2L4!zO{J0zq`xsa#&>~48sQNWU?V>vZjb2^E1j^pIicHU4Oxy1nrZYt(Bn7aNAxA{SHK_itA zg`Wx?cR2cW!ilceb)>r8EveAuhw)*A|Dm?qhmA#i*u(!&qYwNqWIdr0pP%4BRg-8H zT%gpq{M4!-bq`hhcRw{ss?a5V!Q$nB4S5K{lQzL*+EyPc{qzq)eqR{nYf9Sf0VTQ~XMWs!DQbz0t2hD7p1&%vVtgRiyw-X%aK6)qo9^|LE{0u`Xxzuub zw<|4RB#zaHmtJom!7iJEjiKvu6*STa9bAexjWRmzMx0!kh!n?5Pj+RLD7GdsVr3#h ziZ{hCBTnR`MCqG&>E2c>PnpE2q)T7uRZIbtd{&N9Z9$^)cmu2xjrl%f+9}rS%WmGwiATWq$@jx`umZcwFMSP+PQAUpy)Vk*yJ&VMoH|kkb<=H@qmOR%f zJ?fsT+U;tcRAZ4^qq@8cX$?(QB}!AB-l>+>$mZi_tJRy}5^9v7s=YBTfx{r0t$uHR zm%zGOvo*ro-6hm1K`rqzT>_R`vo*)tqEH&-DW9)vVjhjrj1SU^r4p_0^EbMzvy-2Q zI?`H5K2d(HJ|tT8vpTk(ziBNLerS3$GIxpgXGN2jN6g6I;zhS=9_jNNwzR3l|=vg{OU*sK?d69lVo#Va%NQF zxT8C@$`Dk)z`Bd~qexTEiNP|VXyod-zKzzzOCMMwmf%R@pD*XV{Zy-azMi9U!an0o zS8z;XO}p+wwH|He8_n6mkM&IN7GzE@gU&js!y1~)X}{;>@I@*kh^oTPM& z)owPw#SpK=0lJYU2t7>s$SxHBF0wl+hO@zpHzOZ?0iS z$} z)=2TzhJJ~kDnoL9>o;XnhG^>Nk`Ma#z)T#^+3$V{Hs3MjNaXQ6zhzCWu9fBp@v^0_5>QjX3t$}v^zHEsRUzF6myC*_MJi(OsUHFOP=-f8zjT99Dh7<{S3 z)FSiS7Me8fGHK`L0w+xYTb@)bGixsysm0b>%`=N^o>}C*OPi7>4QkoY=GyWkZo$L9 zP-`ADFq#MNqEf6Mg6Hc+9gc2F{ZtSBgek7*5I13R9l*#-&a7gHEQ3rr85Q9ZwnUp& zi`xCz=ZI`wMu|uWt_v)Ny4PH<%tuI zj+f5-y|{@U%!+EFH9m^Sa2kWzw_hj>BNcjnP8Y_6Zehs2pCRn&_6Hd#YH7PQmw_(V zNaQwJi@qChC5$ARHeTA#>g!J5MZ!RL`YOTbJKMrQK)Vu>7366)$TCwOE6AW3(ZoC5 ztkkV$yz%@kqzmK{ zft=R#{XTud*J{!oFktM;+>H9Z9I!Sl{P4uShM%KO>g*I#Ipj2RFwkb<1r(Z58NafK zjnUfwXgX;l-<)y^9=7m+7SadQHtvt)<;7eI9uYTtBuW7*kCwc*^J}FSDIqoViNDAx z!iF*X&W15dzSF&@98hml3;d1$r)3L`5QnN=K)Hrd|E%8$V=QV-D&k{C$9JNs6PbTV zpN`(<^xsjUk4zBPL2++#=xzmd!8F98gZytnr<14QW_h_jqWSF|mq>em{99GTg?Bz$ z)|3^hLgG{Q2%1DhWFgk+Ma1s}m09^Ah95h@Op4S@cf}<6BMn_*8=TR|n&MmgO{+8s zFjtWH)wlSvcW+_}nnTUr{`hr#5H?&oxGaG02-jA{d%`s;ED^esa~ADU3&YITU@7a>AiC=e5wF^+cV(f`B6pRn}2|A?AXq4 z+kXQ?i~e~x{nq|=?~t9s`?me|EhV>^Mf#Y1+V)upc7o8b{aNrEKzqN^t-jzQ$p_u-Ku%M7hLpXe{ z{2G`Si7!uHWVuGz(FC>(Pn>0}bjdGJ9Q6lEBg|FyRNnkEi!&Z6uxDy{9CoJPTfCEb zh^FMZ0HTBJw!(Uk40w(1`um@gTC`uI8=Mkbz|t7)0({wJ##?8y2EbKST9tUoUg?~I-`U4EO2=3ECb4+b&CG`EhB`^KElY@r>e-Vz3 z%EW5#^iBV!?hKjKqOL;^CauSZVdxIta-o{m@jN;-%I1Xl%w#%{!5I+b1}Y2XDW-XiK6m z4u~_wbAz~4<*EAN;fE@QCDz4X-#420do;YPz5li+^P}PNt*srqj^2iwkplomZ)=Ue zvu|)e_?LrZJ2D{*)c5G+UC&+U@E*9bd)M3d$AqPujz0&Ag?p|a(?3WeC#BZ5{wV|m zNnlH-S(>Lad){Fj_L0wL@BXLR`b6f`-O6k#GBxy-D^Ttw&$2)d|K@juu)RUX6`F>| z8?*YhHeB3PGX4Cs&tnsGG8$zxIDVE2R7L7TSlwi;)TqIdP5*}RP2;YZarX3vanqV+ z^*#UGhQngB`pqPMFjm_<4QJ~$CN{cSl>NBqA#_Na;Op?*NUU@oB&D- zR=7+YD1Uh4ocFN#?#=#ezu8q%=_)A=Dmf}$iT6mse_um?tDyrlsHxtqc#!|wM)tSu zn;m#8hVFZaVIYSen;jgMZXD+;SnIx~*UTM2FBhidBbzI3M;7ZxX=akx$`q|K@%PCL z>N7b)3*)?Jsc=|6{;Zcw09{Q5w}=p0Y7?|a92Ir-d8gKv-c9Ptb~(uRAZyFZG&cAGkQh(?iox4wc$OO@u^NOHfp4}3(s zsL{#>+!yY$4Y>O;o;=MXR=_DYYXfeC^S@4W@dp8a4c&E^thUg~zsuZkhuJ>oeKJ(j zJLIq~tNG<{%Q&mXmM(5D)^jR!i}KSBSQN$Xt?F6eGvh)9=ENUSfsBSDyr#cuuDjRI z=#UHFqrXl1sFk%jWKGRC*tXQ?-J&3j#IvpH9d(@PpFiRa5C6ydPmgbkShF;)q=w9j zrly?7`eM`P8Ce+_*Ie!kp%i-ZHowiU{mpN)H}*T~pFSq4@#wdJB!68E!3}&z8ej%l zGvGPv`~%%;9CLLvHS;_|DJ@L_{b{B$|m_zVn6Ts89Q*9 zlkZ1+b5z&ZrYEhRwYkNe=Y*Z6_t%OP31%SrP5Hk}vexr%{`-S&V8eL9kthXt5Nkiw zwku%_w>&{YDtiP|MKBUCJ?BnPgn!0DxT<=FG*o$SE9Asjm>H`eqs61%i9do@;pvEM zMVC5VcJ5z9HU=|D7uOq2VSh1)zW(}ua{8MxGfQXYpU{KfWKIKh)%XUw=An95GSJgyG(I6q2Qiz$_PheMSge}TKiVGHbt|8hkz#6m_C=q!pR zPtMn=A~1L=?}a-QqP(JWgCV}y{`$vCNkS-VQI@9&0P0U^Krzu#L>^CYPCC?@uZ?C6 ziVWVhM`&2OnBgw2JDJqWE_q0|r_ftgw}WJKnS8D7xD~siwR*}%ARqqv@>ZeatJar; z*_N+{s~5oi_12esulm96D)?4`VY+2lOfHlyA5F~x11=`2na>DLaDs&_iY>Azws=Pq z*%|B`BzNc+e;q}9-^-jL)G^X*{b&-!n0@g6=;vhVA@<{{@oqgvm9UEJjgTLnqYn!+ z8lD#C7;S^a<5VbnqUo7_r=Vxb&I;M17^2eJT;@gM&RFRQ zw+Iu2WNHl?R>|=ymO6B}{mCV38=$*BCS%pY1tKuG72_~JqkfNQe0i34+7DH^V8#`} zmI~EQutwf=Ci3CkaV8EE?k{&~lTW7Mb4hA7hS2`iOM|B4NZgUquKl{e0{*X7`_X9p z=@$PQ6(|L(?n9o^8*=LC&siY4i6`4c(`&P!MZx~^1Pz;F;$(I;8Jz$i5>JB_@oBMB zbSZ{@Jt@9+pUgJek->3w+T})FdsU) zDIw~B#&*6y$om00b#vdvne~I?o4*8xO$ZqV{Q&nW&{@s?5Ap*9a9-6J;LUsQM0ucm z--f?G#A~=Dz~a+A89?~^`u!Q>s$Aq<7WJ`zFnRHR72m4(gIY{5H$?q24Dy=Z&$URq z`wDXO%MfM1j0O364;b$stuS7zWDswM_x$~i>DZ*eg!)>+K?YU8MguuB8NE*6KnH0& zd)1g{$-(=)f@*tb6^mc*7g5k9^?!FiL1V4Osy`{Gc^Az`wAfdS6IB1KjtDO}l5QBR zI+ofuIhQRNZ5y@EEV1a9^c=sg?eK&*mbz5ccd5#NnMXF2{c4UfyAX+V6L?>4g?+~@ zz}AYvQ_bcT^}I>1GJH8jBcN>o78YBn>_Q)?y$1aPsJU=cgsdo=<|jT-c|N>b04iWV zFeIdrp|OzR+W_ZXCbZL4dj-HEzm>teGrJ&*0FDRXG{f%)_%33l{pLeYf0=|j+MOOv zSCoSVf!3K)WP=TZ6=<}&7YU!pjB^@7RDH2l=+|cgIU0xy`}=>!GG5`=vMltJ-&pCq z8>PYyLU`w$g>URY2pUbf8q)5uG5->O1uU2)c*)a-Af*W06b3OyvgGB17$D1&6(iut zN_1963n33@JhVyI_(oGVX~l^JK^C0YQp~v;6Q3o$yyYo>LGC5qDqEgnsOH;=Tb(W4 z^3)T0kA_cpX4;yJP)4Gv@3b|MtUh#%gW3U6yPIkiS^SjMw) z9McJHf0%32!A^_I`1*VR%jlkOH{1vLEE26&V^g6U{)74Y_ENJ}AHUDHR+ru+=Cb%b z1Fi^Mg>*nj$6?;#NohbF*m$B9%e&rdI^k{RC$p@iTZ>ck6HPTBSlbm?YgIyOz7m)! zd0P^8)Wu^3g<`K%b_Qz@5?*_SF^eoYc%Nsh&k|Z;**m=4$ybJer9$O{{qxg?yPljf zP_VGO-;>(=+MZl+1D9u&55(F`g|7NH$k<3A8_gLUAmcaR2;x9MfQ7b<1!J%9uAKZf zFZho^yh&WH>)zP}0H}NR%J+P~d+yzjtfPCa>fR~Gs(TG#d1$aW0o8s9J!O5mLc@`- zS66y}`9R`PPRD1X z*>~vQw4EiMw39^6C)-J?ci_$v2k#_Nqdzlyhj9^0m=^{~bP9y|OpT$diVoOA4G&y( zP-`!(=w^FZ6g({9feR4aylrDpXmjwe#Y&%3XN9&?TV?V>HzV^@HF|Y909^EBx!RJp zf6H!^1YTkaIs-PSOwB7$qolC2^v;N~MU|7TW+{EU{oYxy*-uw{lDCa^ zH(ELqDnDIqQvS8PYt}Z0IU7|G0RVH7(rh`I64qadJi$2C(M|%<`0YMF{HbI%$$eDT zUAIJ=KEH!$-OY^Z6W~-LYv+7XSRcOrBY->qE=eDrc~-O`pZM*feGlclg%#nJbI2b} z66pscZt8rtU3a8y{^FxO}_ZMNayeQ4tyY;W?;_|hD!4G=B56?^z?=J z?YzPI-tuo%8w?`{UWtmlGd0=(YLpVq?9pf+VjM?jghnO)Facum0 zXB?yW`T9##i4p`fL%+PMgx+)fcNNroKEL88<&*Gc+3#bPPvdAV?}~a;K6R$hzB}Z3 z>-Oquv4E(D0-~O2&{}T4ORZ-DvYvPE!TkvVVIAOd`-pSKes|$~hV|;bX$?m5W}(kb z-onlIDvu^`3#$}s-hK?GI@4RN3J4rV0r8${#q1qnPT`d*lO+bNO|Jv^2D>1iPtIa%umNO#a~8oqQAGTS1r*U8G;$7y0iI|9y%7Ud69)sC>d!D#c&J(>M%41o4Yi36ujx!5}==icK%W+0!@@6+h|6N=fV2m!hJXW5n8t>P? zbhD)zJ3qSRuM`My6f^<&WG_$NyoKt@``r97KNDIuuU;cRSw_7`t=$ z5G!4CtvY#7KzY<$-F%GsLurx*9c8xttkQQsev>ne-iYitFpD_O_}sy)*eKd{uig@< zezOtP5tCX^y_#AN@oQC{bgf(8pw^3bQmZ$0Cy8k8kDJt`JPiY>yr~}oHv-&1Y2OVv z_Zd-gx{a)yLCQ_TRdsamSN1fh1E}YM}X zo`0v)d*>P~O048m=rM(Le|nr%u!Lt?`cfGcyycSaa!I!;=~Eu#b~BUt~qR2HQx~&J(G3qy z40J=6k3Velr(^4mJ73>QdwcJ*r6PQ>N6Kbnr7+f} z;C@D}Q7X-}Z@v1T3jOlmBVEv=x7Xg%by`wQg$~VUcTnP&Hl2Rb3NRzDmYUX`o&HJ} zz6H$`a4T2k*!f}3%OJqs-xQzX-@h7l>$jwMw|;>FZOeFT;3)v*eu1Okc6SOiGHw4{ zgEP2=5guB#hHNS2PfH|1NUA<3;kkO zxz)4p){o7I#lZg!497viF3aU=r@vT`Dckzc)r`z`cK zNssYk;1B*Q{nBm!`;WwEP47FdxUV3l{-pfh9yiUHN#F2#K{}2lZS3Wp^EdpKUjkv=d^-UwWGtRGwHha%~hia@b z)J)U8CrOawCngyF{#fsllR5oDmwg8#h|zb)^Jfp(9;lx?hDrTMUk)Zs3N!}=n!D0_ z5>VfK{_I!4KmS(U{#Fjo9#wRy!GHFqqVDj|`Bw17KmPsR|8n|wv-+F3&%B!ApN;nJ zF6%Cz>u>NO`qdnrXrJx&-EGE`iu3f&`33zhlmEecxrF7VRQ8Zh>AaS9t~9kv_y>7j zBagStW!OWlSB45dgVv!RD~JKj9>mu6u#g8$Mz`>roSLO|4og|!wOyFw@0xMA#Z>>HW`b? zdb^kxduR(D*7BgB1qN)^jr0P$vhCl$8IVL})to?Oql^pgmkXzCTwo&QyT@$&I%ArR z4fRFxv?vB#&Q)66*ijZuhOX)>9h-Nx{rJ4#U!!e}uaUt}BYjZqjXu;oC7dv35#b8? zLWNX03x@mA`&>qA@&)p=qe)uCMIS*VaL3tWpT&&l7cx{!&%aSI@k5g{>tkyEPiLBTO6%)`q`*~d@VBS_`gt3RMY6b+I$vRAdIf zWM?_7Mn-1LU}l$=5r09@?>U5KW&RcKZVK@c8@Nr zZyd@sbROBFCC_nXQGLJiBzN=<<*i4FdYntk%M&ZT!HVgRZ|^HpSM{cbp6CkK4>E6g z2Qk2;YlX+!7BtJnrPk>3UhQf+6wlwp^PT6f-|9)zGduPsWe%X^3(SdKGd-hzR~?&s zwZ)in{KPcfXg2{2Z59UQf43(azgR`Q>R>{Pb6`Q*#s0U%dQIiN3Ps6Q({9Pwa=}VY zA&7IiHYJeXtIJZ79~q$$_qFdD%jAxRW%d|nK90Y-q`wpiyBa^gDET^8!aq~_HN3?A zpx+{XZ@rU$b2>J?@8tGAUn~2+$g`7w|88mYz*=>Xady4^E_F&U2%cDYnYb+9_|IF| z8rahsKmUS)m#hn3tW7RPW=D5fqCdeQjD0Gou9be%T~iIm$kt!3dKAPqSb0-p51TfT z_&`o`uRoZ#dfxQB56?wEcF()R-|cT|xQ>6;H{5)Mo&aPGPmTTj99N$G(LfHu#lNQ} z!|o>)`hhNRSz;o4dax09H2|*Vt7B?;=IYpS`hh|6X>pDs@CUY1IyZU<_c?`@W#qUz zt?_i)>NYNVu9NUo3RR*&>NT<@$98Qh;6ExK9A}egsa?XAb1XqLWeTD5FvGM0o zkkY={3Uu!QC~>2|GkTN3=r6-6Xr7I}S}{;*(^;I45oQK_{ZAMQS>Fbz`jeITeO|p&-`8}@mxZQP5)lRjXUVL-)=@0QTArHn9)El1wGl~H|0PRw z<+T$cC*QMct*@u(1FVNm*Ya~JbnIW*jCeEvH9zo=eBxA`$|rD-uDLL;-@L7T{0X0si}s1OLZq_@#p12z(%q<{2KGH3DsQzDwH2 zB@I*36q3H$VDV;5`Wije-av>}FlFiSYx9ev82gIkn<|Xrn<@(zZSs{U)LZ`>lMFh@u}Znav)2K zKw;XL4F=iUE|mJivwliJzIR*FslR+1VRdV~hJ(gH_ccFD%Ct46PxL96A2{!aBrm2a z&<~P8?eJiLx4>3p$(&+#K3XGCh(LP&tck2&u5B2A>33W{^S8ky9{EF;c(D?TSW>A! zCy3v&JtYTPn@%PY_Vdj8@A0=!xaD;!!+SC3Gpyfa=~euAtwa5$x3AL2HOJP1whY}p zN+|N^ZQc?s6RT_Ozts2C*!eXRGb&29G}I@j6FoJH#kcV}$=zvu5u%R?GDmwHG?jK? ztOy*VerUkm>_~fSB`luIY2|(;c3UXGm-Xug2@fWKH}QOZRS07$dlTyowgH-oy${%p zY)#-?mekN6S^eu}P-L&%ZXH?0kGCes6-6&CQd`09Vrw(l^$P#&1Cf2C)j_cn$WfSZ zDs(Ul%ZR}}2buljopG26#}Jo#6{%j-C1tv#)0H&VCH>D{R`%UOlDJ9XQCEPl1UgN0uET*t4NhY>gBO&Nbs zz~|Y9A+a{i78IX9V0BE7ncVjRmYAini7r^krhK^N7{12ZCM$cms_^3-{Qo0d($FXUy+Je|7Y$?d0H#i7Ugq@7db$EAiwi0zMz^^EvX< zFR@U((AD_WG06g!rC2D_ef7rbNWFCbz~?XbG<@Dw06sU449G7}fj1!N2Q}t=yZZ;% zIQ}RUj`D>gux(p2P%ddsS#_>@%Kllp<*jP&*1;=i(2VDC!Tvo7qo=Yb#r?3zyJ{)o zw(x+M?x&I#dEY$;bmJHVH@RNJ0g8pZ)Up#!r-2~RR1E@%qGak>6m43gH}8WQ(Mau! z>ona|=+2>rho9^Z9@dWt@L(bgtaNTvJ#ekhdWHJ_$Y$`6J`8+rS0ab*y$+vND8 z&rwPax`V;*-N&RavTT0va(&;`Wp$X-fpR6&Z-!W>7k!sbzkEp0X%U~+LZCU4&3bL% zWByp`_g~$o63+P0XIv|Mj%0kB{VV?c==b*pNjtwEUH+bprWS}-uwR1I?AP};GRfG^ zdnNhIFB=$2b!Q8Wa2xx0yt->0N{Y=;I#ktR{TN)VqAh~Qcr7^0%EQfe4IrJaQRyfO zA$JQ3p=9U)espI7>OaEyqVLIPA8z@B6%W8!0b4oA9^YZ54(G=DFGMM~$OhVK z-1#wT2&R+2uN1k+p6ZH5dlX&Q{#8YFIu`ezJlUy5gx%%GxX;bYf-A`p1^PjS?SJXk z+D9>~GQ1gB$ZhZmIOtu<$2m5Pa2_k&yGBU0rLu_lmzmE-?V>H3)#(;UYP}ZY%IqKR z4kMAn%{pSGZ~RClZHdg#p33X^GqHRGZKKz_FOjtnYu-g1-(eT={zrDS;<(P_!Q{{0 zifK3ISP{V@Tut9FDtSES;B0jGjGW}~0E~AzI&SAZObu=Di{grLBzzPn05uT*#t~Rw zRqE%2g-~I*J|rKKJ-^D-UnKk8f_q)O3Upp2760=7z_)x%mOLh7k&FX58O}l3vJ|OGZP+LX`j+=^*DS zgwF*z>q*^KUU_HbM(7pfY^BZLj^BR~-(#g$pCuk++r2M~sl4O2(%=&X1Uv~?fG4xx zX!eexvNK$1I7o#}GhUa6W?XS#pc!pA5TBzK0}r|x*w`O07k3{YH1wbxl?e@5Xx4T6 zc37;-BIx;~^(o(fKF;Y!v60rN7FmbH z!#8uC^w4D|AZ%(4=T4|)oHVg*S}O*7xOo$qB>$5oj?ek7HW!~9Zn>9_$yV`BG`Yla z+qU|C$sF z^Z1dffH$^I)1d4kPrSZUZCL)`l_N498DQT_Zz52HV}OFbd9MRW%65@H`+okNt_6anP<&;hpB$*u7mB*|57qedl%0^P7Wq3a7DqUHk93(>&!qoKe_B3C^2- zggq=!rS#*YXlH8dS?v=tyjrF!J9MQRdzQnV6JXDYu&3;tO7UB{IKtS|SCgsG=BJz$ zcBXgh4@_S_qXe=wN^8ZaI99r)Iz8f5ZGbPjV@- zo0TXX;rj6tZ-N{DygP2(NoP`_w{|r}^=dAPD)+lPDk|^TF+1p`_W3({$(;SVLY4QN z-v|0+H|rply?iJr{ixJ`#Or&dQ!8e&UM?d%BH@jOA3AxLZBJ%4RK;g!xjk#I@72}2 z6UG^p9)1@pJ(*I+(pG8WCEMtg${UB?@g}?-U@OSra2LEGj&BSw47@yy?0fFl0|VZ~ z!@GCBeOND}y_*Vl{ZESdJXaVE`h9_o6MT~0i z*#GImpo5yM$cl2STM;m%>2RLG%0;A%@fBRoIga0pyaT70cKhYu&~90(GgbPhVj3## zCgA;0i=v$a9FWGnSq{4N?ne}6SC|T)s=}$UPrMD?*V#Tizby7iDwLaLlpMS#l&svh z2PN^JkM2RrO7lu|5zx_Zprc>4=vO8BnSD|#R;@`-xypagjeg}byVK9vcb1uDQRoK+ zo@ARi;~%EWrCJs|LmYw8elq`Cgj`!TY?vJ0{o2 zf)|gZtqTYs07=}#nsq6H5DziyX~*daColsBMNY;r-B5o}D|Z{@XM~&g(#I6;_?P!_ z?cWjLEio1BUTA~ZK!tw&6@`)~XN8x&kug21bMD6!?&#M!cZ=0-N18!*h_)^{3i3SX zUHgDYMjT2s`G7^%aJYFWnmmGa;%!>~JzGa0w{oUyjgCEMr|9=xsP5^xw#zP>_)wcb ztvs&H)AGecI3upDp^@IN_E1oqeWbZZVr(#_Bb$UP!QMRo+Z?g)B$fqraxx?+^6tAH zv3^-+Nh&Y)=NDDl@#0wPcm!Z01HX@Z(2iIA_W3=*iKMB#x5fnH|4STSPjM(T0|)!D zIUGc+R~^Yg9F6`q3{`*k}*Sf*0EbnB@wMZo{CHK{)D8Z~j(-!;k8vs|>ZuTWBd;cbB?-R33&PGsXNdxPCH4H>$gx zT(0e&h(^#p^5I^WZeDhnsh0gWqgoEVPHGX(NEut zW_}o5@%b)@^m*3|hW)%spb zl#*PG_`_zxX63wPt^3Zup6N}*o!hJRsnGqI#zemjL(I2x zdl1tbdPsK?woglsGLAk!Fs1c=jp#$DoBlwW+G!A}jz-p}$C%A0q{kR$U*$;p%Q}7< zRJi%qcArqSq|}EWCKhd4{PSHJhQ~k4tUsM)iBswNL4QZnwuQ5cYpFk0dX%-Y z#*mG<6FPFCLjCBA_xs~abPiMk9fKiZs#xi+R^VXaSjyw@PUyM6(Gv?g?IBq52fCWd zZvUw+R3m5jVZw{1#XswF1)ZRSBl){a!|t5^QlAn2No+j;TH7DwuktiZ5lRwsJ>J_F z@rUzRT4^l|UGMGrlP^2%B!6-;a%ee%r%=NnS7rqHIxZunUyxFyl(S-`CruVTPVtpP zDl}Pbv!1T3u$~^RgtU@~mF8Q4{ezx9Sd44IsSNC;bWd0RzKg%Ak(HX2*38SS+2Rf* ziTB-+mHs>N`JE%FKJRc}NDK!VHpVa*y;Kk|Nm3#U!EduHSxIp{;6 zjp!IMAyEY%YVl~$t#%y6h{QUb5>%W~f4Y1qk;zFmC`Y3cQbPupm$1q2&Xp5do+{(W z`U%A^)iV|bL7;h;9|UXWSl3H8k2KA8`O9dwQ<~IXA1h6(7Lmi(Z#~m!YvMmfq-zJt z|KUA4Bp{QhogY)j^uv*8WPe)G^nQ+z2ZLN#@NP7KUAyH4-!g)~6hm#zLwWCtnQh7>iYm5W+np?;z zlt+`t=jt2km8)Bvi)MDdt*B%AthtwKDJly_&_8ri2u<67_VwYX^6uZl=;6=1=Zr8M zzx@(8-g1q@v309ym3pc3d*mpTi(?;o2DII|We88P*_Sf_u%z4HUbIE~KW2r_=6I3j zbs>Q|If6O(c_-(N2{FkT98##&>de*Ak`KcvNn_Beoj8ELU-BXjpcfSYA-uvqealOp z3C|m%X31pBN*=-av*sl#FZp|T-Z9i!e$cvv?@MZx0FiM+eV_7!b}geg>wYOBUQC(b zII}3=@e%K{iP9uPZ~h3j0k^f%nRW2dua;wOj5k)q=1Q9zH(aE9sjTo69o3VX&R}9k zgWEBDSZtma|L{FY^z@Gk-Fb498i8v{>3qJAANqofg-$(16OB9Vi+4e}+LO2POQ@7> z-%Gb043(T~DwiVO#H)ompYa@}R;tG3WY<5daV-zNzmZR?c=P9p-pQ`Eq8P5${8aAw1Fk%RFWNB>Z;DYQF z2F$1P1173mAc1f^;$!g-9{wD@xPGecn)a>2Qqc3``bG~j{Uy2pXv73QGNEiFlOscn z2O~W3bbOctmx|=)PH}U~M(@h;Mu8RFs26yV`VlkIo!+O;QI$K=Tb8>18NJ2t&|7KH zdjUT_y|LJnPjY zAA{dcn$5m4k$#DGm`FRf@4&GKs#vSlCimh4`Fz4TbMSyBn(?G>BFDH7>0?r!?b zq+}!2>7QY3GY`_0U{2{^?iGG~B0XN^FsCoX2N<0${4J7#8W!e$_`RN(`@^gqF(*>Q>Th!yX+hdNOfNMdEJej2f>&# z`H;}MI73jw1aOUUi()^mk4!|Z_)-#M_&?(X>_@2BqU*2@k5E}mpe{Rj@jZf#0o*ap zfM5U(9pVE)sjz{OvLCl}E8AsRUL2Hd9sRPKAHC`tTD!VwJvF6$MQNLI)5k`s=XL>S zyAA4rGp+v|<-0;y^uS_i-?{&1wZmVX@P~n~KMZ1x#1KT235^3Be`dYjM@B=T*Y8}{ zs6y6#~I31=yl*!^}jM#TmNbQf7M2o}CQYH?c_P5&dCDy8ak8=J9lZI2?*XS9{ zI3$Sx8(&QPgZn!6P{nadG{zhdLm`|<6oMJfr>C24Fm_&J(+OrWVwCMo?Q^sCktvum8KQN{5 zM0h}fDQahr3o;wMdyf&Lo>@@b+$WkknZBBtWm_s%n}6mxuOAKY`*?Z|*^=2GucP*4 z=_mYfsVcqPSji>g+gM+;^*iBqO+@FCkW1w8g9%^#(1`y+2E-q{Ye0N&;@-Zjw6+ib zdi&JL&-H>Ee?KDn!>#%Qnzci1j)u9R{hl?yPk(--A6b2$f+A-kV5^`qKyExDLy_D@ zjl#gz5qgUPvMv(=pve7DOJWAW#ZbQf$_%LJ{TP+ z?>0W@ABc8g?EXlibUrJr$RA1Sk8>l5zIfM3p)puDJ`x-{UPBZ&SN694;2=k$;AZ#XLZ>Mf`w=U-CmuKn`78;qag@ zZhR>*Ts);!rX0&tnw8%Z7u7Q;+8Y;uolAE8vl?4@phl(fiS>;P=4z_(^Qfy)U%YHr z+db9PHq^eC-o9_o+TNSKliD!%JY`QF7Jg{vE|G1kGfhSwH-QdM_>vR6ZpK!Z)I}6b z>@pALem`Z-4>xP^y_~qk@{;j`>idn}z)cM2$xf^z-Ko~bathaxRPUpz%o?u2ZfddN zDD@DwK$e=3Dt&98o~<5Ztq!8D>>`?o>2I#8nJ8;@Gv&BeTl`m<9KhK<%X#9S>)d2D zcKT_9%EAv_nZuvU2UjN6mnU8-)5%QTdc#FfvZZ@*q~iA+lX%mip82SLh#rxt9%*L7 z)-8*vCSJNAB7MuM{ZAM1F6Z*Yda%3JKJ|_q2eaucc*Q?ykQPr)aQ4lk?1PM#o?_*R zK`}La{Xzl3Wv{o?Pxa>C+V(d^a{!5!qp)my=E)Fb28T<8Zab7MV5#gI^i#4f+;XtB z^Mw3(={9MRhJM_jozt-=mu54j5J&u?&!2+$DHCq=-ib!s&8km3gwUYHI;{2bB2B>= zcte-`p224AIU-kf=2RPOG=89tqnzY$qt#=hPOVOFuxpufG?3JKhnGm;9Gk^hLQybB zXwSos%Fqp?8ZrS>MUYOhchDtN&y*hQlHL*W7GA3M1SB4xRS|D2Vh(<9qrC>?Y_6#A0%J>;di!vZIJ8fP4d0VwyG_}}tn7g3MO>nwUlbDHuC+nk}%> zVBQO8m1c5O3fxUjWM4lTaCSdp>mu^#-kCN%c!?wE0RnogdR64@b&&-0Ps*(=T3RDb z#JdEP#enVtI$|t^S>a;s$!c=}z%|~-`_n?;Vab_mh1(Y6R~K>qGS?pOoO^3JuiZ{_ zIAaGv#Hek~WIGUb6T|>z-nthN(E7wtKY~&KMp0y6#wAqI1en+4-z4(iN2%Gy;!#r4 z5(y)EO=@Z?H13tdGrUh+yyV|ip-xF%W#tHzbQ{bJq=Xz{77i0`%UOhneDsD59#cE=G4%>p8h*dXA=Lg6ZLcb_ z?Nv|P_Nu=GOf3KDMod^|;*F7c(e(aeu_GqlBK>0G*)P8BCA?QAZI4s!h;S9udob?jYb?7bG7M&ppm%Sf_(uzPK+5hrB}5jYvEBbUP;hX!wrRF8|bsP%5YP>u3C zNf;S0R#q~VN##v`xl8?gOz?!_pH@N8+MSe$##a|cJ6A+YKD%m8WpX#|II99uIA>y3 zn1cqZ-E*#~o>6}_8NlQWVNwe_J|?9^^v{g5B|Oj)rD2?Pb9|n4 zjKie9cy*%;lhu8}WS9iZoc|2%hRLc6cEBY2`#vX-J}`cbk$fCS<4-z_Z4IaH5;Ts2 zX3uM(dYv=guvX-r4QmngKIy(I-$sfEOO^*LZT8=lPgvVxAYDFTP2br?96M%QeG3>t zZj8UUfbH4v^~2ELm8n6A3YJ9<`mFMx4HYY1?-O0|*)bLSJyn_ccNX|IXgb9}$=#)x z>`Tp#HJY1-f$(YeCX<}6wQl|*@Tu(xm~>!`HuKK4hV7{X)*G#VjzePZ+4|aQeZAA& z*A3!%-osrdQkR}CynKUVg3(caprSO4$sn|G$hu6c7L@nt{YGzJRt;Y7Cd zPB}uFIuuRx$KrYCP>mvN)ZecAbfT#lozWHVaK0z?Qu$$|9DP{4bYCk%%*JB{F*P@F z^kMCbgsS8MOECTQ=qOIixxrH1rJojNH~U^%x<@zuZJj2Z_0R-bUsU&{qVe66Mvr}?&5+-6kQ!rB#qX$OHS5wgyrRq3q|y5k)lcy zlR}EPiAj+h1*FIet3Ka*l={r(ONYNhtkYZX?V6iJcTab^%Ddxy3dv!xNd`!j41{VF zNPSM%@@j<9Bnm&+(FrUYFIPRuDY@mzW3vdt3qLeFC;ZTi!JHA%xuI870IkhZyK}rf z26o3wdtcw};QD{7G*>VCX^z+&lZeu_$j;trJL;7~HQ?A4ScUj+PIM!UJ0GLOR3N2b z>%HkptvIw!t7C)gOBDO1IzrdHd+vPCWC@((N|JPf_|Wf{jLq;CpDK%~>2RuP<#Jz> za4v!3-VfqyWG3_Yb~Ii`48YZ=D-3w>&WktL!F; zNxbxWtDrw{Yg#*YkEX7uF+u*+8)cwC!r@pzj6C$C#>Ki3ozQ6+{`K$^Is%0 z9e}hKH!eNCmb6&u;1M*QGcgF1&i4jScATs!K?AWxK(aE)$5p1!;{p@!%xr*j{3{fs zpE2}@?d%o>E8Wc^-Q%C8v@OAG~V0-svD|KayI-=2;S8 z1jOxJ^D6p-Nm`es2@>6QJJ#9{+i4({?8_=FTxVZCAssm}Wk43LHH*#_msvJo_b>X&?LDPo6uDGvt6djDPd z^uF0Zx_mM~^c^W!!{4%4@wjlypLr5MRU-RNfGf0qe{Cak-pQ$|&WcYrRjl~@n6mgA znUgc0>o2DupvA_u_&;qH=*MD@#PYp>2d8?s|O>t0KJSH49)axD+YUF^RrpOD>VAYDEoTiWWT9{J3{m! zB|i1n&mG!<+c9W#C&x8)gzQIpg?mW-LohI$Dp|AZCVpx6AC-l3%8V{inxGdW48A9D=W-~gGhv$xlu3k$0mLRV{=3G7Quv|9jgdP-wkR-VrxZ$lc$2(MZMjS70y=g=;waz^bpZY_HA%FzOe4-_d&;y ziug+C_ZJ;7Q6tt?#>pjb2gE$85>1gyi=ZDz5JI1P|HX(|#7iZds2s{!1t~;4Wm4v9 z|6Td?UTdUs`9w^8PZRSPXt}GOK>&m`0j^-o3SZlVw|{bKYA=;G4f=M50{Y!&Sk*~{ zj(%&Q-+fm>Kimhz2jB63r=JfIE_1@>YU)P6c?E?uRm4zVyXY6t%|x~v@p>SECxIKlxw3PZdbL0shhG&h_~4L zV|I&xm_lI*Vs;f2Q|KIgAy4Jg0u+sZiT=`1(=_hb6HhoH+;Tt9x?y?3vFd-gnp~^{-fN? zOJBSr_O(gK6OTenf6K~B!W{fy2@TlZ9&8@;7cTu>T!kdFuTRFpO2v~^(YE^IqcBXv z?qyBIwe|IN*w_8bVvT)g;4g}I_H7vHr#BRM`(wmM!CJncAjpn1I-0qP118#UP%G12 z+OGca&$^@@&?TkOrNAFcm#PkRUD6lt+bp?e5tGHcKpklF@hNE3|LT1(pW^E%M)$PXZfJKJqJ{1XkbW z1o^%>K{VCZo^HRcKC>^MQbI3~K^N72kpev~tIU^OGh z_arM4Q?sH_h!QOG8U&~&pZO1-4yTS*^>C);fpe{#E;L+P(59C9?w;lD*?PL(dWx&i zemPyvew{hvt+5kOi21S>`{$U^O)G>c(x~BetxBNOme8P>>!naHQXYC?o*dYYP6v9237^siR~l0- z@Fi;Z@IzCyBQe}E*{JLm-9_!?>KRxzDy2d8B;is2lTmgKMc8F~irVFJ0Cy?gHj5W=&dBEeoPTE} zSkRo5-!TBwINw`p0U18>K-zLD)UjRiM|D?(fhVn zzED^fF@b-|-|S8>U@81J-Jb90_B_AabDU>-{K_*nA^gXyObBz{4JL%<(vi<3*E{O7 z*JvbsW$R^{Ugx&=|1iBFU-Q3e=-}pm*I)vzyENpcIl)2dbqR3;|8?Q9}e4ezo!-&y`=`)E}}F1zxCOSkpL-84cmstiCf? z>rS>V0)QP$>YG@CQK!07dC_YSE}Km4H5=iIe=(?Gcy!t5qN0)KUUq4Hv?QltP*Y>p z1(!CQuM2TF+H~$I1xGe-s6SdvW-u5+mIJ>PBz|!<(K`n0lAF7!q1fS04Jn)V+#)gP zoqqkH^IkJ)xr>rdSjia+^c`oaQ&s8y$G^x7-)JGPEdQrUXJ2@PJD$P2JMUdn3NfII zUa1=d8es1~t~sWY^yiX z1zYdluf7B9E^Hm~Ps7#^=7KGSm3R}_2Vt11!~MvBfY?0Mv9Cq!- zERA@0EAb6MvQ|DvOSW7!UXBl&(y9PkQdw)mZJpis_Y*SA4Nkn<8V*_EN}rd$BSg!I zNY7QCg_fsm#VbwCTVJ*IJ$QZ4zPEp-_F-)b+i++xzx^9(oQ>8{?d-FLD%oWX$3cmP z{l+4H3JswFJOaT-=vP8~TnT1X9j|1j3A4-cmn0XIwmSeSAgxH(UqW=|Xy z22*oZh&h>Ijd#AFrWnx`YvK-@@Ge(c&`h_A9!=iA#CoU!{w zu%b?U;-x>fT=++;idzlc#okcMV8}AHh5uKXkPilVcd`mVmka0+*6H;SqGyHYsDyUyoJwdu*5qEe}$1KE~C^^tgK%yM!_YuB)*=TXg?S`I642qpKcbnT3K$>MP@$>`YE4lfJNjST(icYyrEJz^#Y(giXk zS{?XX3_LeS_|{~?;_0w2M6NAw!3#$2eD$$umBu^P zPuxPDKZ`PjM^>A1a|xor585?(CJ0o;abVYyIYJUE8ils zgBzE#j)kQbO*Uq=wojxv8vbiVAC(MjrS{YL(i%-{VHLvZ_t{A|t}L-!iuj6u(VzX6 z#ivX^`vT-+#|%ZVlg!E<2WS_WVmZX@{})1jgFR^Dq5z z!vt~eKr2Y;07I5(&uxqqTT#nA}L2fJp+?F!Kgh?b|5d-1iDovDsLpK z^Pe{i^|nnCU+9YtEBA9^6gXbD%|ofsvoAsmc5e;f^kb;j$RK#ucf^zfqH^jY4oKCS z(Hp$1J;d_PvF8>vJD;gwDfH9VqWG?GT}3m$tW2yi{4muHH{Xwq&(W{_%3|B|>o@Rs zK>c6&yKDXGR(`VUpJ<=2SwQDAmisQ3yZlII2sqIw^0pOu&5FEaC7x@)LM1rga<$QW z==0cbRj>N?8{K4;&!^A7UZb(W%3pgWXIlobA^LUebDxObJ(4~_SvtEUCz|DZ5?8CN355UbEqVBBA>RK>L&ouyK=A;n>$Q8-#cD! z8tYdork0HeQvmP~Sh8!lb(PJ4BizDvess;G+>9K0zGhOse&eN=3=_R&x94bKO!a(D zJ>IskfWD|VxCqrP#ZCTF%fD-M&3MVH7J*W;IE~j^O;8Srg-QfnFMcd3K8}HWkQEpf zO`MK3p(V+Lt%-r@+E1$#QQKvQ#uPF<0nAG#-7B&fj{ZMxN|{DM{gV=UZzIROi5l zEIu0x}hH`OeTDfZcD=~Qp-*}6$ZY51$@jAXN zx2I+|)C!?N1n%s{x>30zn<{t9wPUZ7V{mu`J2JLS7?qLO>W!KPo5YJPIH6oPp2K!b zcAwB(o{~QmOF@RcOE!h$!>KQITxMdv&u6#X51$=6*7)pQYYTk#pTXjK`0Ny^2f2!f zdm^L=KGTFYQ4RB$nNpqKG0yQBIlb!@YhrvxcJDU#W?3U%(!J3*3QB+S?(I2G@td?U znw)PkocyUtCMqUh`&Q#}Y^xPTYx>H@KrqH|!NJU|%2eOMlT(o#g2(u+Kv0jfChyLu z_WkIZ^1->v-QK9dIPn>A8JGv{yGlaWjNT^yyEmNrkzW?=ydpI%@l5-1mV3KsOf#L1 zNG^2kT4MHG$+K6?iXOxu<~|<8DKYLts?D-}`cI?ciZAiqZjENXMEtMRsg%`RWgtZB zSXv?av;W`#8r!D+#!Kf}w(RH{QF{mM}&LmMKAHTPZ5cLX>3G;uD7p; z@4DN5de;6g|NKnNMim@v9U@9jzbXG$Cw@~`G^!nqxYkb3cV?k~Z(tR(KGVuH|D>X5 za#wdn56LkD!zS{Oclndd6yW*VSP6@YH%sDD&J_2yy+p5o5AGG7MkZ=vX1zQ6@g1_XcG~Rcn{faRw_?TrEIwS!B4auF#A;f5JBTM+?A{k4i83C znt_abKHBfSzZ7CK^O^2oS>j_p^h3gsAy2pL`_X3kqHC|xJ6ML zrP^pwqa+wMO`L#?!)R=2-CJ61-KfQ-6vb8+WpQP(%3=kr)hCUusI4Mc^M8NNeV)lA z1hwD)kJpRL%=6s!+_T?v&!s+|zE!&M`hA;x=*H)yH)iypuMOUsqtOtwpuv+N?tW&5 zUZgVNTh^-gyVn6}((^A}`5`Z?(C17duod<_F6kLrTZ95YQ(tx1rF}f zqJyaSqvOL3Z(IdQxY!8tjDe`@OL5xpUEASke3tiYKV0S$jdv9F=+{) zfq=4Fry~Bk4l3<;8hxGo4fN$ZlP$B4Q?ys=0fL{9;LuivC!^l!AD@- zSXiyC?z^b0E$~MB6gy1HYs>3WxnK;H{mbK?`VS%=TDn>(QtH_?3cdSN@qmHv*+&;- zhN!9qOfUq#?09uDbnQ>Cfkp<-YKE48Zzb^c#w`a}tT`o(HFa$$^wJ#b=4Jcn{5IIk znal8l47NMdl`OKMF)XtDuL%WBhRPS1pgn`52-06(4Mc4kBK~&s&WQMvZVA!ppKogb zo$r@U_?UG~Phl3>TZ!#aDPfq}KgB|6mY`ECUnAy|OcW((Qw(@9YFBlZIv> za6j9oZiHeQ{W|#FFJN@>kCAHUgIdM-PHJ@ZPu&2echmtHUyww+^Q}zEhEIl$c-jDP@KOM9;mbP%z?<>c zoo3yNg}pPUa`St{&96W_G+#Uv6d=G{{Eu<@m{Qt9Q#;qGIH~!adT84G5cpO@N)U6( z!+t$noCCv4j zm%5qj-EZ$a*TaLky7^gl=uYSJ85C00Jc6dy_;akz&>UUtxm%xchq(E<`17xAbku-7 zRB4Kp?3gz%J>w3p7c8J)1+jS&nKc8nx7?n?dCo-8=N018x_Lc9&l*BPPu$MV_ zQ9h>SRyu7a>di{JF2#Qos(&c^*|4c94pkI>-6;gSXMA#1c+L_XS%J(F7T@hk?weM! zMbX;3$Da|cQkpvy*l17X3+VX9{x@;y4C>Csz(J^UU#jZ%SVghL+P>w+k}U`b-+tS$;P=@sSN*yjU=$&206MLkI^)pZY~( zi+P6x7JuIK=XX>7gEXn_#Wwn5XuB_soOk+a{g-#4ZDnUb#TET(K_h6A4<^Osi+-bz zB!sHmo$HieV(O_{tbjJX2^&yb9_{GH;os#FkX_C{TqL=JI@j2cmr-}ICRrf z%Zu~qE>lnQErtRdDo9+A$wvQ(9fmkZ|ECPd7~E^3-`$9TuZM|Lzvu&J2Hw77o0d@AaG!V#b^sUE^Ij z)BNvj2_i(7pK%a&i>kBC)T9k}OLp1=E6CkrnIw~{??VEZuj;T>nb+Q?RAAh$VonR;Tkj>H`MC#66{}1!OPHW<-Sp7x6)KKW|Jj6u2c!0q>X@20V7% zaPkC~kM;X*_Yb{j`1wMk_Txn8iW@+z;h2vde?+abYtRRl1*!M6QgD}%NQ zkFO|XvnVLVM8dOws=*}i-Rt<=8DQ{;VjZ9x5qOesn>U#KsqeW6GN(a}E{+xL+b)FH zwnD!08;nM}YFokdgL}VV^=xawfMq)a$&s9=d$$*f2Q%3=ISohI8(*shJGKJo`)9JP zD_Ei*j#K>9Xo+5Aa!|E1q+I~#yEXVy8nLzfqifgM#6VKDHPC)qHxV}N)NhMo`J z>X_JV^e)`3)X-wIXn?quzgZ_%*HEWM{)Gd{G8BOwQ~HM>ZGbzZDqc8lw|4bB&g zq0`i_2T)m0-bK`k%fb+P^;zwKe&+ps;>Pw_7v-Lms+Tw;&rc6C@Wz);;(o|;zcTw@ z^3g&d1VhcYwTUm`1?S|RM6^^YX3ijSRYz-`=68bw)W~3#ef(M0yXPm!4&6el^yNQ_ z2=wM{VfBPi-oMG-nrdFR<3i9Wn+Q-fZApB49G6|jWnt0n{>Ew80TJwL1`;b*s;enrc~yy%)O(Iwu&(PtZPdg3jP zC}l)@5FYAsv__jAw8Chkr>EyDN;SgF)clZDgm(S)hbL$Jc_6>MhtARn%z7%7^!C?I zH>@VJD#!alM$G1Wnhnc!lJ2fo;8<;@Y}x7|i(4N+DuF*-uYH2fiyze3FgBxpU(J%v z5-4)bOS~SJjQaY1^v)y77wD=;VE%w=&)-9CY zEbNNH*QO&G{U)Git|TSoEy6_3Rp4dqb+#1u2s+)js2+V5V$Et&b$ilo`2MBL5{WGfz5`0B~C6xm!S_EuXND|*%n!f2n)ZKP8k zrh=2*6Yp*+szN32s$)g*jtVCK;6E460l#0S|iS(U*9gjFhCjF@lKKE-Y-X|#3lUL%m`O<##q|;QYR79o1H{T0t zMq^91DHX;S8Db_V!4mfh?Ec_Y+mzvWKg!$sqSTfZ(fB*%>>x8{_>^zMM!lz=cwc!;X8gh}Wv`!T`HJz64ggcQ zH(ievdh(A?v>s;Z&|_t$1zbFnC=*7Q&w6DZQjw}Ag-rN2I!E3gin3$2%# zk>%EBrCT3XWr7e(f28|3LK~4SpcbR_=ZI{Dxe)=pipyT?wn>CkLj?We8f#^7rq}zA zn`LwF>kv^GCvHqd7DyLwsl4$IvhK#x* z@3UoH7M}_Ei(lnUdXATXCdx(PAd}1<@4d&~XaCev78!baPkd7gC#nS&ARn@tbrHv4 z{{X7LL`1mP&onHJ!W}oYu(6XPmIs5roqP42Mx zkDY1qP}L#+*C;vKl`3DfT7hPX7t9Fr_UQp(dhcHqke?61rWXWQOclK9HGFeE;#wmC z@`gY!HN2UC3RVim|_@lRq%Pn;}5;x-g=+?MxZ(W(Kj?B{NC}$4#qLM3dZs1UdA}a z_wpIX>K)fIuGQA@;L%4V*Ts+%3eZ8lsW_mzd2lDXE$rlR> z>l}ZZK)lL-ul&h>we~o25}T5jaibE+dbuabVv;r6`g^^Vs%REJp{Aa+_r!oN>#tRO zz`#~M>v~I?=CutIt1gzj%J0|^sJg~{+BsH)fTd{S7sdn=w@Cw$JKKESstCwX95&T| zKcz=Rh!*0IW)6sw{fkcRbn%S~#OR)C0}o9{iwCa2A{TB<1TbJ zk1skn<>Ph4J3@ghexPoim%}gbv&*!}-Z6TXtYs0}K>OD4k_&3uU&hZDR^NGE{MVYN zmK28rOOV>BZTXok!Q=;7f*0lmOW=L^=U@eN${`*2KK@SnKKRdICjdHN5B!`;1Psr} zB#*!M$2-KUO9hpIi>{~jGn@55MJ-n7i$AgH_J=MlyPrm1^Lr5y zOdoA&`^8ROc6y-myVVTLsW3n1C@Lz9!}ocXnKGJmpK|esXUqnDTi5`_HQmg>RC;@? zC!WSz{u|;4UQ@*ar2>%g?=<2w;<5hVJN?|HV#(*sE8FGrtaTOuc{N~j8PKCi|B870 zKM&x2sma^e-dbhd-RGY>#0iO~x6#_n8g&m2BilJhhMrS}x43Q|Z}_ncWFEgExB3?; zqDW!&p=#b!l#x^8Sa?A%9LnQ@H}a4VPakOtI$B??`c|#_R_~x-*qpz#Ufig?XO7f? z@775GmXEd8sSCit6O-^)sp$nR8nVK@k^QWdFlQATCpfD*&M|YGD%5N0iO&AIw>R+g zOIzYM^H0ukaKZk<|MR|R!d&^9DXLtyIgIFhPOhGKUl47gxgTe)sV=^t?d#hEf26~X z<;6HscQNjk7Tb1VfGgRR5Pl!XMuQn^n|XNb=Y&rL5N{f<11!l<>oPWL>}1%-=cJY0 zExqiyl$A?E!)<*FHl!&p<_88zrjtcUcR1gB3G5L4V@~P3XR;TkzU27e6tDaY8TBui zGO~f5f7vpa{Ifk27V7KeK18C41LV>V-S{i8=SykR6fl{XhOth*q^-Z{4i0S_HM9=2 zJxT36akvI%J{T8w)pm$RR;=M;^!vl#(}wRy;nZk}G-})Z*D;xn8p?jOm{;Wq+#<-< zv6WH&y@9B$G4ObNC1Hk1A%6LzBg_KvALfoV#yQwd=VXtz?oQKB$7FjHb>|=7q z-%_uU4O%0^RnDvTddYzmJ>;cmvhO~v|I)f9Lw(XlP!V6n=BjrRz2mvok-l5sRj(Y` zq9u44S_Pr{tGxbx$V#!6zNYm7LlL)Ttv^78m(EmaoPVjeQlDKBIDmiR2u;*M-IxE( zrm^B(T}+SB#94-LIH^cSXPe&N7w`q|Dn>u@HpB?mC-?jsd7MHk7YeDd)e4>}c<3)r zRD9q#_>KUJJ{AD>p)Hys8JOeT(vpt;h=sS$%I4!4(F1+ZlLRGbBjm@C^v)WY*V;q-5*NJ@#W-S)o%- z&RFC&_T4+Te;)tZ`{!WplC4o?<$4c&KMBT7elQTGPQpF1K;RENx~-=WGtx<f``MPP{MX}J+^aHqbt9^fr6 z+V1SsYsU}kU-8df`zQ5B{A;cNE|0IOh`$U59{)|fdr$u%ebUx(+XHl?_QNxWi?X}K zCt{pf_(O1sN?77R`}D)b10tGF5Fa7_!5pKuOV{GI@&AT8(kZWBa9; zC4y0XspP0193}sB5R|2N+#LWf@P0SA(+l#S+zN&!2mbwTw6^SDcS5v|WfxrBRXuhz z$~*GuofgBeKv2pPfFN!Ji1=6QcZx5XscCjuKa2h}RuKs=7<2Zlb8-)EUc0yUC z`B!2^i{BQR4-oMe_$N{&gek>YMV6{y$XfA-H=S(eaeWTp-SbE0lYZeIe9{au;!U|* z>U;`T;6|o*=2QLzTfXi7Acuc%JN$#W%OZouK&6Z1EVp={Su2@dV^OcS7;hb+u@x8* zy~vrZ{#{t*4Alp2pqQ#9a2l1v{v}^@@oj{^J#|I+usqi4f*)O*;gvQx3&7cbjSIE+ zh>O%NvM0a5RJ>SAz7`uXmtj`DI*@sk*d(Btc~s@hBZ~w_rAe7bRbFq!%$Rw^OK*Ss z6*@ix8GNSYdFgB)0P z^3A6tYb$cs#)k8xqihpI0%y-B#1L zixXMnE!7cwJ$H6?+HzAZs%{}t_UC(jyZvZM|n@fqHedn&<>fL)j`BiwgUhe`M!XE==B9;VA z@5pe6z4Ltx8YwA1yi*3v4*32?Dd03942~wBvt&jxXng&uLqGh=!Wge+1pcv%hV+ z;~)5eVp9rF4Uo8yV<=L1_SOLo z;Gosk6b&AzFs_R2xrUDYIrF^oY^U*5cW69+5NmN7k5xzGxu`?q(IfAKHRvhBd1!iy zmfpT(24A!rYftimF9m#&4)w4ND9A5NUPe79>_JsU+2-+*0{66~NfhF`tzEq$0>N(P zdD`h&#lD(<3RI)de9^22-MrNQO)U^Mq`$2zf0X>JrlblI-cMhLuOvgW>o_Ld z+XaVK+pwtp=3i7BzhV$KC%0Ch-0D!ei#36t199K3)6w*Dda#n3yEnvoa9wJqCSSY* z-BYW0mx}G-9z=qcyf0tFJ@&@vzqZ5mE()Te9@f}=QZlsJLS6f^l`kDkVr&jaOW(qL zs{lMIqb2tE)S*9_p0oXI*yR1x+hpjT8&Hl9weK#VDs?yG>O)bEN4_RdOF2H|=E1}l zjJx}7!L2_(pwz4u^q44*TDpcVV5TKWODi~b;(YY2vIM`ha>{bG~yP{#g7=9Kk{2FGP`M0kPX`y01M>NYlR z?^E}e#_fC5t!~_&RrfNYwf*Jr!HvKOjzduA9ehFc$!S;Vzp3;)D!sw#XVtAyd$rO# z8l;vKsP8Cfnsce2>&sj46_+f|SUhd8BwJKU2$n+Dw(6a7fxY@F1!*InllR9-N;jDM zI;f;$ubNy;*VlJ^vk+zOj(Pb;WOlw%?6h%IuD$L9jj33}sZ6zHsdZAvXH8bqUE89x z=DN)`qxKFx*$aT{fr174 zi$V;wU7%b=1|eQY3qP5Dqo4*0QXw1{210)~9Udjh=-q;tIJA5t_>U)UK4dAAnMR7W zw0U0dm!Y9#)|MM3c`PUbn}&L4{vOiH6ILa8nlegrKK{F5eGThMc!0XdI`=>vfV)}I z&|Ql2drG&46Q`^N#+n$i;z6omf=atZ2 zM6kyI&>xBeDf!cd%JhEHSeW=7pBYrHQs<6&^IpvR{MBN==;Q`=ICt1_ZhoTQT6~IH zl`GyxqE@rL-Gbo==Gm|~AFT7-V<_xbJq_aEkNamw*QpcBgRT!a5S-@)yF zroxcjHK)=wR#FcCy7u>8F>qv?_O;l)kHz?Gq=3`Ney(S7?A@R*skTHwcmb--><=QG z5m(-0WyG|$Dfo@%H)p` z{E0m?)-`b6nPgrtKz_QJ5T}10l1?S{16o+bV_d-c+B303kp&85H9LhEC8OLL`>Tu& z&-og@PssW551+ciu(tnHN6R(pz1C+KuyOA|_x|5g-1`QpDUFO+_JUI_oi^=#y4)Ii z*$M`VhOZMPLwBEwlQ~oMU=1~97T~{8{NsVC`+5DW2h~DK*p0t*O)t!)8d$lFNbUcB zPdjmAb4ZzI!n^ZmnWTnI$}-s9ft>(IE?Z>(Zbim_jgpX@twu^;0n?^;17(* z0?`!1W?05Z3k>O^iSsG8wSBEtAYc3n1~Cl=G3gD~RSod(@{c`(#(gTKZfo@u86JI9|mGE#<3oHRy(`S!Qi z{#GWk{rf=|Ej6-vqruS^(=fJ-gz@oXnZ5t_HSRrNGGz%zc6b5POb$4pRByC1kR0&Z zJ3ofN`jYrYa3fsjku-svA5fjQVn5MbD$0!(GrgbA^`X!@D44r2&DKZxAy|+J$bZ&{ zA&5TdqFRFi+-d7mnb;q18{nUe;JGfFDEyrG8h2a6C~^b7dY40_Vpd|O<9J>;7=u|%=_zM_5t}K7}^x0o$5wV{ZyHPrs zEbth?s!EP`)h{>8l3{wm7~Aeib+^+OvNdLPJ21bbjc-KP@tLA9O_WflSX)+HBQ=Uk zoP{TKar+vL764^?7e3#0u$1eov4VR__eUEM3uX3x{|h&C>iS#sP673*=Dz=r^$z-tV}7C+cjwwFAt+ zx8JwImk5hp@@K}4I^zBNK?lXIOxl~;ssEk$Gublwd|UtFnV(4TbveHb1y>+TXXzCy zRwGzdTX+nqSy`bPZ7|wfmIj#!AFhahKrlJc>C#1FR8)LGdq#0a#*LXJ&*)Q8=wFr> zetE+rAwX1XZ-R2rnGnaQK^sTK z-|(+j8g+=hiH_>A(X^!>fF$A`mC$fiN|ScKlns?g?JJfA@z))M(;+5=jQQT7_wBT> z9YWVO0nGous6!X;SoMx?Y4M|SRPHi<)OX7Gaion!3!g_PM}CBx-AQggz7%)DT;M7l zPtFXj37q0-({zk+7ua6_yB?pLxjB9j=~GiwaVnikaJY0AlrxJH`e?LpC6GL7mp+25h6LvcJ{#w>F(Q%jpLO)C!%d zltFE;|NfVDJ4b|SD4E?YlaoJF@A-yhl7Hlz*XO&*&mL0UyU>S`g!XG0ALxHJ>mVI~ zUwnhX5Xm}B3MJ`Bhvn#V`LIZaWCn$CHey58u|Djkt>j((e$NtR1C)pUXfG7;!c+_i z@8^Iw^?L>H&(r(;TdyS|dh^{AZLnCY5Ia^RmikZ8Afd&gNzt{i2ja6Y+H$p@$TM{>PT zTFGKc7N{KO@LY?h_NSZ-5BTS%uQWQ^Y_UDHa-3$P68*}N&E?2u%U^WMG)-pElIWo2 zT)Grhay%u*+gjdZDgCdi=W?}s48e*kI2yd62mUxLN8gEnD@rKFQoUXgf2|@3 z1;D2q{_Mbi*1;{%NgkCZlN`8gy4xSwG~?}d@1*B<<`-U%yLQ67)>oN#2l4aG>0jnA zj&(l2;fEtZ(Z)o8!XY! zOf0<4a)b&BEP~4}?t>)AX^vioo|ZogeJs3Sw)MjI3&PoGdEtJ&@J1ut*$ zct`%;2_xsLNDanyjeh0YQA~k#4^I$p2(IJu9_G$1f!wdYEBZDzT*_z)N@tyuTj<^K z^PS+`g(2heQfcjy7Pj7Og#X>>yBQMue@Wj?xde+Q9q!Yj_ZeXf0rjI~oC2w#qB(jv zKUM10&ZS7Tp12++>xw;HLSuGd^0ytuN^-nyr~Rk>8Ft=SXdTW8ieCnmp}%w#y&z(* zEHZ(OsY{{277eMuX~P_eybjhtLc79kH%y2QTG5r>(A;;E8?wj|8v6YA-_S;YVVAf9 z-=gZmQCmQ2-dz@I5C~*QZ1|6j#Hy#1kze9w{M(4+b&GZ;G0Crc=j^oVt;0Kbx}&ds z-1;$s39>8n2l9vB%_Z!PJ?g|%BR~={-EF{PprSb8s8N>X4(LQ#&Lj$CDxj({%F0ia zyM#YTzea1yfEZA+c}9Zm3$z>%a<+9TWUiF{LQ5wKcY(YVXh5by=j4v@K6=j4M&M&k zQ%!4Ry10f!TGp|Dq*J7&X?Ual*s1z=C9RWwx)YGUiL|=-AHy^I8T?;p6#N?m{|0F& zj`z5|8%A&-PNP9hF0K9qa}Pk%1*@qwBshb~+slT2uXxAyOd zZxROMOC-T+ona|(m2=qs)&TL-%(tL~t6!u9$!pObp9xY>J&0bNU|iy;pkjd*L%oXcT5ETZ7F9)C*6P&l*|er zPSA@I9=?OV#*#m0a>u?rtX`7?25SuL(3!599Pm9V>*rj(O~tYKDIt;$bM<_o-#O9E z>x1A&ujxZTq^yZc%qkK_I&tR*M}kCE2(Dwvw{Wabw^5zMbaRb7TQ0GJDv0nY5QJ1x ziz{t!#6U6!m|u@8`AZ+~5j&cQR@R|gp)^2LTJ4V`)Wze5He z6o&@cMXaKk05$BH)$fI_G;Y;Zy71;92EyJ~Fj)i5={o5sOaQ8|?CE{uPD$)&I#IvmZM2UjfI{YtY=2`w-r}qw8hHXmzEcPI{nVF@Pgb^N*ce4T)zi@Z>s-L-|ODh z{@z!8>Nd2V&)QYQS3h$T^Y=VOZ`rZpck=PMZ+L72+rjIuMUHk^qg|R#URjbR7!FJ` z@Dg<}{MO;<o zrpJmNdfMNwyGYfmQb(xy=}mZCX+t7d2r~1oV|^zh4cCQlF0=m4-)4?+>)Q0nP>yCA5xJtJtnig-JD;+Ds^bDe9dKnoK4o9eSB_f(s* z8mmQFeeDJ*tE-`R@31E}Ly=#4o907F$xxjub+Jl4OsSUcXpi;I^InQ~PkM?iZT)8l zXYw3cw3!zKK}_T zsn%lF5R{N3Z_;^gX`Fz!MP40EB6YmNAKJ0YVlnut=n8p;GPwV5K1_u3+nkgbo~cLN zG!a{oi4(5%VGVNvixShVBdKo&f0hpgnP@+qX}~@cSL`*4^ycQl7uazbg+?v_QiEw! zZo|A3PJH~|zqfl=Jpzm^I{WxL#Ed)pn2U+S%~!!7%XJ&$j2#-drYRd;fsHz^s4LHsJ`XJx zs39PKnl6>kqROr;l7wnrVK;wuoG( zPqAv;AEU1i+t{egt zuk!&)%9k-|a(VoOSkbZ8JK}U$=BW6{>`}VE>B#cr*_mvW>ln^)^i`gmn(dwGzTm@O z>piPDk@y#u-mwFj0>-S=rU9yT^Q=Y5xZ+E^{}6>%5nt+E{g@gfmniuqcm#-dTxje$ z_bM3gan}d9#L^I5R*JGTuGvQ=DLT9I&rQ?9b~>Y(I{(P|r{<_$C&-D!)w0b)^aC$Q zExau%|05yqiONdizkjE-K?aVgY#SU+POdcmw1`L%U2+?x#J}eGB}Nw;wH0fB$s$P_ zP#W6hAcg3PR#-9aCmbEs{e-aQ@y|pCnB|ed6D)jV7j&%qd|-_KL=7 zaYb>Ih0bUj7)?fD*LJ$~78^Y|!@bsNd(i530{og6G4EiHJ*1 zE%sLNye&6Y6tOqG!NrECuGwp-q|tc_#-V-h0gK8>ooi*0AxL+^HF|+9SyN4!{8P2T znu(sWy~l3$*Gnjw-SXYeS1fn*Un~DZ5P#-7A5&}`-P<@qUH+{5avOn5G{J%A?d@ww zt9Y3xp+QEPBujWfP#|z%RQhM^xD02%NR*Tzumc-YWk^^iw z#?Xj^DiUKW+YWPaL(a{)5VWC7jZXnyq{%n@(9xLV$_hptRQFFVMRtsMnk+<^&v_7` zFNAzoDs9t)#&VcgZ50B!G``IH0@g?(h?QOXNberZDn{>tZuaoE15(os{Iq`K37c%V z*-T_o5|azHBGIRUG<4;K8z)|1Vjud$f$sQva_IU$5kfU_mCl#@5j>VVDdSOLJDPfL zuB(}&$O{hdz*eg}cUbOhvxaE=g3R*diJZHfv@KS&>=9Moqdb1jhHb5O}wm8vv-)+%& z|E+E0+*;v1sW6rJX742nSMkYR`t??+%O{E*C`4+5H;Aupo<{K<6O}!b=RJC(KU-q} z9kUhW^I9ud{qz}jKl1QQ%XrV|!waTxc5G}uGYHSLV_3{0`GX$e1)IX>Fa9)q)UxpT zt3Hi}k9rAX<)HSZ;RS2M=da~C(LCk(;qy1?-G=b_?_Uu<_TBmer|i$?-|F|7(vQ!j z;h!!RMLWi3FZP-x{@@yGgroSLF_7gLq!7OE&`TSR&5&1WUHnV6KW@A9WAvA`h?m%u$Zp{orpBx| zBSLlKNVRYz?p+AZC?qaaGclS0(~j{DNHtIo!3F0S6v3AW*koe0we-|VeXt?7uafvw zsd>{GtF_}+)mDoC5FFv!DJ-d;*fU-N@6+NLyyKtR{sxTEpd|N^q>opAKQl^ZU3RvN5ZOkIw~{f8 z*+Ph7jz*c}X-cWS=TnsG0i;%ON_E>9l8@MD&{pk zHF$5Sh!pZE5qvcdnKso?Z2zFxe7_i|>4YVRYl2HQ0@=9*4c+7?Pn) z+Ymkr6x+$fild2>K;Ix%zCBLVP&NND9TvUryyg|>1r0NtW05LudRQ#{L$Xj zd#PvU-k8x~=IkrpcIa-cqQ8!F?bdZ|_wkQ0Aq#eDcOJ3&-jS&`|9ci~7SJXm`GoH{ zfls*v72t3lwP=W$rc|ESkcRxNnL>R3pTmFM_lhI|BAPk;wK^UDf0n}kirie$K=G`) z+{21zP0N+$pQ45_Z$J$nDa1dK-4VZ`{6J$sXV3}SA=stxlIn2mG0{Nm&vTg{gmXW? z;+Mc1ZWDr4BxV{`1dKGQLT)80MEPyQMkOj%Zo|x6>9FC>xyDG#SCp>Yrm}4~uNQm2 zR$z=c>Cc6H%C2zp3iTRyoxl|G0NUF#INNZ8VmP7Hyl#1Dfi>U3LtF0_o?%gdXC47kZ@dUP8Tx9ZA^o}IK>Gag=}0fGFC5Jgw(jqpT~B!^Ig=GK{vTezyYK?uwSKW{ z9n#UqBZjWu9KRCSTS4fG9Xz;5Hj3?INs!HGCv{Fn+eBecLkp?Fs}iGebcFU>1LZvV ziBXOem9XuIi#-9Usx}hD^TFAK^JmNZzqG!uy&pwrZA%*(I^3EF-ck7fZvV*eh1M&u zDv(i5Th~x@bcbD@1mqRPl36p6fms~TV#=|Z6|nB3-{yegZ=Z9ln~oRQNOF@5kY-+oZk3u^V*bgO%UAJcCT$C;4;Z+p36!1xQmfMYKW zFrZu2dh|pe2Q=7hO(Mq(3C)B&AXt$BTTFer^`9lMc8Xszew1f_3)q%D(lMyOZ=4*^ zY!s`VFQAO}at_P|oQ6)%$vslvs+$4EtoanfEKL&d?+w{1`l#bIqs!OmAa6WU!df^} zYRWX2=`~;PPo?$3E*3#*==Q~p|9FSL`QqGf+?1TQLo1Rx>%I-Ei1;?e zuOz2rdp~hsa=iFYHS~(yNb#&8Eyc~BW6LM-#U%$e#N`1$02flCJezam@NV&w9?`ru z(&q^Rd1#LL%Xk8KiY@M8q#<<({j6|gX8mNcC?Wq_{CUX7J zx_|@pp;_<2g^mL-WO0BK?@r?YD+ztDlT15YYjIjj_Fc{C7F4r6tR&96X{)#4q?5_} zy7zO{VEv-3U%E?OF3o!&XahXnv)B0EB2;6jqEJIl^8w7c)?a}xr2B30ty-T+Q=#2F ztxZI06Hy2G>HzveGC__;17{=3Rssjl`$xMWD0os{DI5gbR2YTi4Wu0j2$uULc!7Xt z^$HYplMJ2pGK~DnPsPa9PmDvv9kcOPUz0wE)=NdW${(TImE94!e}jaCh?qN{7?2Dp zUP=FxC}-VZTY=%5&nF+*`nWHbTMAg+*||CP`CM*9pKQTi-_lq#VGwuH)g2y<5B)LU z$p3ez*0E1TJT#u)+_IA_x{xnky)CIb#IGLm3@hijL;XmkgTf20-!J|}?1O_9ff|1H zU%iVzUlFMYm%i50wl~6O$XZk`>0Ry{qRS}HO1W0W+V2s|z2VBO3Skd^O8z7?b(1rY#DN;0sFWyJD;oR*_>BFq_96#kj zv!C+7|J?;5Thk%3oR|uLF=Q<)i_jX=Xqm+iLMz<-0i-vZfCbLh_(sr^gHYwMzr9i!&rW>7}qlPVr@=h!widcPkqthV>UMucP=87IHj6K$M|%glGZYjx)HBL2ro6iA%U1MkmsT(N zoXhf%tP>%p5&%xSOZa~^>@FBHjraqWGexa;v~-tHke24!XXloVPiv__?`b99J_*C; zGi83@KOsP$Cw0Az$Fya7N9}GGBIETY=xC0g#iKd5%Bqho)<9HLgIvsK`&wmn{~IK_ zGq{EWjbGWbM*XXYsQj>1_AmAU z!w(2Q`(B^xv6P1%yrImR-A0MlzOXF~L_Y*9*Y_H4?d6)6-;55qZdNJlgi>2nRT*k+ z8M@+~I6nM1Ext}#bHw&ky}PgcmQzs+x2ME$XXS@q#{YFb4(2`qMh^dn^~-fae^GIM z@L29%e&&f{m14`Asa!4SI1v=0oFIW3*p4D51XUX`-QKBjt7dkZr20oqI+vGlK#t(8 z?mj;%dQ9f7eAAkY(=UD`gzTJO0(TNoTHyC*;n-<{0BL~17b*I2xPWY6s`)#I9^UHTK_ovtg9G?x$Xvj|AJ`{XIwe ziZK#t#^~P>1;Y@k^U1_fBa#QLjTJ3vq30IeU4sA~5%0BjM6%b~D3el5DzW()er#&7 zWm*Y6wIUxFRB&)9Zfz?DI;J!glIfp#Pb=UnzFs-f9<>9VHY zfj`=5Ia`0!S^t~#<1YGzTbr=i--Vw|D_?gS-_$F*8J{!@_s{VE1jYv%%To{j^C$G1 zEyv+LE`=RUeG+ZO{8M-Q3Uw0PM*U=;(mRxf@t^(KZ)g`E(qE!<=k%AW6<*r(QGxI= zKF=2h{wM6J*q%E^Fa0&=8t$jBu+Y{1>Rh3#2dIg}*v}>dB^HFTa-6s6@ zH|ai}DOjV``dy=_BY#^&9f@IV@>n>He-D&hkW)sF!Hcv25>%b*_9(P~IQ0T40h?2qM9sc6p=}ozW=h zBGJ~Xr35BfAZ2gNl-+@-WuK01Km~zlF2yjnY&D0)5_;p&W2xkp##@oGvAvP&pGeiM z07U4Nfx98Lp2=ck_NI=vJr|t4^CPVoK%)i#;G94?M;z9dD!?745Jc6=is8p%73WP< zKUUfg^{Oi<)p6m5>v5F1-pQTne+!J2=a%7V{^Bv#INASRsA@Iar|V-y&9jYdX(eqG z@w(OPDZ$&ZTf*5cGeWrEZu+Y3!~M?4Zk+&CYb9oB2&_%D)}{*BRMCfW8?c~i%*#`X zX2xL!86y?|rCX0teL!f!S2j_67znmK;Un0daxic95;MS(WT z0Cyn7ed=j?K|}>N(``B*hA=bUYec{8;8x!CmkIqOkQhyN>v-qW5`B`2(5KHcUHL7e*?@x^Lt}CM2*Za=6#~6o;n{xr zu%NNoPLWQAjy^+t`aXLt`rOnM@SinTqGdqfZov#c{UHEUX&c_{JG4UPQ*+oRbHkz^ zQQ2dQ^OQ;l@paqtwt{qRpUtMCR3t!pj3h=G&PIszYc}JC?>YJ|?XiNe=?slSXr%R(S7nq~ z?6#e=83PHaFBw@C(2Mm=BSIYNx9-hzP^4rZg7cFDx8Ex(|4Z*l@`orwNV=0P7&nGc zaM`HBm#5!L2zl-SB~4#7(!}&odHb@qO2VZ{yeeT^@Sk_U3?Cd2TD9aYWbI(6voo5D z0<+0}>gG}sf1x~1R}OZga&l@^(399(dAn(_rZB3-juE)I)7-0fUzIT`{x0`2m23DLgJF+~?-)fC zZ}Lrn3>-0T3C0=;0=h;`fJO1_)8!Q_PwcPLl+i?Ja|V{(PtN_Iy`}XS3?HEo%*Js6 z!`)(83@eO#!Q1b0T|1ul)9}?F=_t!%b%WP9J_h7~KAn&!=TAd302Ae0%wl z_j`?qUvy~Zh~#O9#)^)B8xX&9{^vFEhQ zm#^DP%om$34zuH6UZWCYs;?jtn%PI}r%3@VgP3fDPqUWaBF3&nr=S8<4e-1Zg1NRq zunBi^pyG3LSGe)NAfD3xGFy(Fvb5p8u=mQ?i2kGhxaJzulx zo>%6vmnq6#F;h_>QO|Z4A8*x^d8|*JGLP+HO=Q)rZoR?g?4)(Mp9`$Pa)AYTdsqNg z>WbHGrFyO=VN>kOUg6~XR5a~cd}qCoAaOvs9H>xsv3YU<#lt*rf7AH$rnnDk8`q5;5cTwD(UQ-C$*|w&S=T$P16cGoOZr~^v3e7{uK38tcm1H_W4ER zD8X=BbpRQoG$~c7@g~og>=N6CorZM>AYmp2jAroMaUBiK4?d@ zaAWxP`zeZj^=5cxZ)$}X9F)z%_9!V>U$;l>f&PZ2T3z(>5@`pJPxz`JE*s3D2m9dGho6 z>5SoqtEG*8u{pY=o#O^?MSHA}mu)}Ph}N?xmOgsz$`>xXaWDsI`WBQW$2?!sxPAW{ zdX>bMM0nIcvn+Wbk9OFjrIE6NHFdAH{jm!)Y(IR1SKh<|D#XF!GZr=K*LvAUwf1$j zzFyAPZgIeCyP*5!Z`~XAkiPQnyV)l?U&C?+dlS(Ft5!=WHqvj$6C7#c#_bGm>=r5V zsXYLh-qIhY2K}`?y>siYywb(;8NZl>AU919Py8NgRP|4#%OrhTTW5A z>F>4j|ZaOA>Ykm{AK6WW*H#y9bSrz#~j?}S_ zEA=V9CiRo2paC|9R*C^9vyMoWI)+j@uzDoNHIHR|wSRepsjJ(ZhHrlR&4L|LhlT_n zpvZ*_ro79mzuBF}!kp-MnKr{m&PktP>nRXO8pG-G)y?lWTH9{qC+C~`qxzn&94YKM zoXWn&%TZhtg{$i?Z|)f@x_G*@ISb)KlI}^`c6n_pkmB!8Vi2O}lz2>r=HJOVxsh{m zpBLqJsu;xnsp4a**ilPya#<&T0hc-c`oLcGR-En6ko+{Ke&h6<|F)v@+!R6cz%-4# zkAKaHqP$iNS?isp&XWT_9IlhW%5Hh_K1{!%F#TkvLE0+~hR}9@7l?NLDf@XV+{XF0 zwvv4U|5l60Jw7j2_E$9Nf1>E;>o*#GCZGCeCPe{1JRPi+DIhb}o>p1atfD>D(rmZ; z5SR+d;J5GiPr8j4Z}qWnx8o(8QKV5ML%-T{DExPkMLxPdr39-7?}NXPpU8YZ*ho^9 zO`d~+-n_TPVa@A3+ilXIp}P{!`p|~;j9)7X&KL`0%AmfDS*8xF*+<>`mQR$iYJ&P* zX|J6{B+U(193gVv0sg2DvBqK9c2|M$kB+sjH2%oIfsD_S|l_n7R)`2xs~(7^K) zxFOUG%00W1X~v4~x1t0T-ny9I+Rl7dU%VsgD38^tMl0gOBe9~1R&w`f{03bxA6t>* zT}BzsSL!tNLe7Mx+D;J3!0|5FU}(tNmNs_WvqoQYN`|-h9QZ?QTRYjgnz2dlkt+q| z*~Xo4n{O!O*_uY;2@Ox`aMbdNBrb?}>ri}CeZ;xnJvEmL^EHNQi|cap)A2Hn9rdn1 zv!tnD*yyv)sxP{tq^Y4-*|7Q(OJLvU)N`tu#!bF_-D4WMz;o7fwRAGO8-uQP4l+C?kMMq86 z>HtW*`~qaQ_sn%#ocmIEPz(rC8*nm;W(;RrTTD~EGIDY{gMe7=TdbZY{VRUp6Y(oETQUv`&TZG=7d$f*zW6oo@?i%cLYgL0Su)!91eKpwB2revu zj-EM5&f2V7R}Rg1o`G_Hq79c6hv#|#-|+2Qxj3M50fsL4doL)PKs&V4>hP2Wb-&710P zqD;>bgK==;-&A}nTqIAUSy7ysX-#BJZo{69GtE>hn-BI|q4E)Q;9aUX3TjYMHAPuK z`_W07ewNnInk2G4+oC7kZ*Qc9>I5hzI=c`-JfdJoyEp%1P0ziWbw-2wHtJ1=e(q^P zvyFj!d)XQXfp;iU~+Mf`V$&YIZAuaWLoC*RA&8QzB+ikw8MU+(OywpB~%Z( zT3+1HqeGIk!A^rW8nUQOGqKU)8l0uyO)s?Yu`FE{c~4r!pkOeIpn)zGlc8g7Bieod zGscKv0l)S>{Rzi>(}Y`B5P4(%mk!bz@^b!<70o`|G+6NXj?+r+)=AyGN4FY2_bjF=PVPA@QPhAZ*k|+8Qq74ytHF^({)anzQa82QA@NRVl$NL4X zAqqCS2EVt8)8ept8h4GPati+Bj&FhQC&&C>W=h_aIc|?$zEC+-x}E4v$1%~pG|`tP z*hC+QbU)Fp2D6I@RsNMLIK?m6Wuil2ZrxAxk(O_nXy$jHXv?y0XH)+(f7#eS{jp8w zjf1BZh!SMV{vV3+A!v0_)#*?9Z6OsDYZ@4jwc-~XX-IyHLhj`|;Z`R)Hu z*y+ptqmrAYxtXp1_;~wdm*A52^S%MUm=+eAbzt<7kvZRTw&ful1*C_aw*b z{U2GV1Z5>cbygzla{C}4I~otiik8;~I!306?M&}nVnAe7M6jgtmU$nXNt9NzGJnq3J%&VWeg%Q5Iy^taG($y$eqq#q9q#bryq5C9 zt<$s0lZ3RA7yRb0^$Hub82OCEsLesqfIC^n?`e8U{_n!oHw}&s!dIzW;6KQZ72S2M z53SLGl5?aFtsqL}9L&%a!}DmI)i^lng3jMN{W#9YcvFS;*oJ5we(HawJoC@&@Ll>7 z-pFxE1qOi+E9=;@GR8NWP7ez@MYGyFnmivrgdO6Ur*H|JQHdWQbw?NYe%J{Z!!ZJ8 zoVP`*5&TBalp8dT6|M>2x5W9Qiy<68 z6T5f&8Noac59TTOhi5K!^D7n)WU%~6Ws-x`IG+$!?zp|6U2c{%cOF-~-`z;9@EmS? zY0@|J_Wh+Fz=Fwk>ctLq`$3M%kh0p~Ne-MqNqGh$ZcbSE_Rad>P;t{N-jfAjFYD7m zMcLEjQ{GF<=3HUk;kj?)M(gy1EHajtLhUM~Kh_`8GO zGRMDb1ixy*uUd0#(2#1S?KRr0-QoVmhU|>`gS}xRg@?9Z=D!C~8f2{r1Y!dw1=-q| zlG&?%|EBLp%SuY?(Z*J~E4G58PmK-zGU}!od@FhBy?hzimCSl@FX=1hr_nh>P@~ok zr|k{;RDqhgL-1S5T8$E9TUlacF-k74tY0h~n&Dl(K*tYDc`f_=pP zSRmWlL=ZtzjZ+xi2_g%G_3_cfNzufajAr0()?LjUvwmwIMGx`eja5YeQmj?4r3$7# z6Nn0u1-i&6fr#O3gA%MJMi}F@!YX1k26j}lhBfR3bX2o>Q?W~3Tof};LV z1`LtGS?|KreT?cVGkQp77=8`w%D-6QeFcPkTPqGQoLlZzJKy#L7)(i(x8x~JxHBjE z=lA{2+J5VJq{FZKv;bZ7114{%)Gz4clc?*1#{m5@Lm_`zB*2pchdl+a!ovY#toD}u zQN7!i?{40C!e4~=el0DO%RH`(#etdV8V+y!rgmEwweY7WXhC5KUb9sXS|7z>=?fpl;wg0pK zZ~e>vTL~v}{@*$BFExFXFL1}_IR`}2{|r0^oa&1bw!Tv9M3A6Z%2u(It=@rG2m}yL za<>0ERFsROW8uRa*vln@BTd|8)tc?Siw}ED(k4j7xl;ZMHJv*DAis^BFCx^<_V_In zU~eKOE9`ErN$4YAW=`9u{MmEd06a!(j4iJLcunyg$zVL^>$7iO2X}yXjj7B*@6(hh%r6%#E!>;HW2QXpP$h66KgC;} zw24{};pk|>$El_lglfe2_#u2v#)!l>rNYknnzA;0zU=)lqK)|N|4RezyC^p>3^ajhmt0;P9> zk`cr?nSv6VBac}#+*N1f(O=gvGvlatq8dOLRlo%H7`Rx~y;j~+c58}c&3Gv@H!TTO02b(hy-S2KX*7qPkE6|QxVEf8cQ zJoQchLOq+oG79I*#VbW0)#dDGe5bJOo8qbx2vuX>iN|MnW8S95PX6F~ss&fu!pz4= z)fOgEhP3M)Vv!*e;3pj#^r({q6gdpMV#>-dIo~n&MW|CS_thE;%zdSe$^XQizJ=c@ zt=i883`wlF;-)OlHZLHW@9FrfSrp#5jk89TNrv)UQIlRCh`O50DqVB5;jhKK@2;K| zY;GYE6CJ&h&kQvN9%3G@xj|bZLBhgHsUnW1=luMOceVX|n4hA2mC_E$LVN8OqxfQe zYk)n(Z#_G2W$2!!>tc+o84v-i7M9K|>&DC}LL6~h|v9k6hF@=B32HF)CP zQYC7TzKYx59fI^jK9ixuzBKsTbA>#*r*hf}bPJZ$ik;NxEIcu+6$-)$Eh#Eve{{!v z982mUx<-l3j25Z6=^Wa+FSk)6WTYZPw`h!Lu^zg7&#D7YY_uo7?13>GUNpTRG_l}I zLx4m{f%n8C(#U*_NJatHO61?Y|7quG0I@L{^`|sWhGLrAVeII`4J0DDkMq9cCmqUF zC$G?G9VwQ4;LCn&+Aa|gp7EfDksR>KiQR&^et?Ur7WBPY=Q!vX#9_;xs_q1yU!PVc z|Iem-b(E|#Gz?x{K;mEi_Z>iDIw{AdSc_^gnFdW?V?als>FbnUrIr^mOn zziIsK+ZMuT#85Ap^@va+CH;a6nNt`!qJIadq@SGqU4T`8YFUOi{~m!#Xwd~;T}Isj zssL*OEb4+i$xumqn?Exy0^n=r`T#t<(7{`Qw&_q*UCBZG4U#*cT| z@jEm6y>@hE^rl~br~KB(=cGqbc;km)XD^W-HP3vg>&%DxYF8=Z-RDFzN257AA)oFlXEia$3or1UOC?Mr$y6QKl1X7(4xa# zZoN?41vR2VRv;;m_>vcmm*lh^X?lQJcdGnTZXN8{v( zFT5KkWAoN8FNu&?kUU}?hMj^9hpd8hlcBBakq#rL3El&Y9mUbk54b?^w##$rBAO|0 zuvj@gI{ggbdXv_@-EISv-hxy&3JD~0`U^|6AH1N;fx8=h{CoiPF=imiJ-oJlqK8xw z!O^?nxL~nf?W)Nbet)C?=pN&afe+YA9Q!}}k0yO%`x_On&47LX)Y1QY`{9|kFVJcI zZOwffoJ=A*rka?ajW)Fn@2k zy}^V6?=L3pC~<}5-D?R*bgGi4q^u~sJ``YwYj+Yb+AmO#{wKE0O9}@tktuqCDJN};n zNYd~#arFO={}*@We?q#5S&-x&b+m2|GFmw8jAw9h-Jyo0x6G0nK!61K>Kdg_Aqk(` zT$Gjf-TMnjWwrPF!fHG?<#$Q^V3yQV7t(d&WEu0)zYzRjGVmD7NZ4; zG&Zm{=06S3FyC;ZGLHzEn+j5hE8Z^tmg4Vc?j=&^jY}kO+5+4m#eUDM0i1MKSk=y%=PK1s(9A%%h8cLwMv^= zk~vPkWWDRBSJ~v^OuLUlM-;8h@cCv7svVh3*i{w+|>*+0~w?V=>qQ=W02N^UYNWd6wPaC zdDfSsm6`1?k&ghegjuKjEPYc$D$el^_*?`fHpgJBI-Le^SFG_8?~kML5dg!zT$w;v-EEDR%T-rpA@ONQ=ukM`B0HTFnJ6<2zf2SaFEs0s5d(7S|A z5%2GLJK?C=vaJ)CY&w=2eb$4UdE#9W@h<*^F8}i}jII=Aep8+F)6(3WMH!7^SL6o{ zt;j$>JhWCWhKtZzRt(FucPoZv>oZm~bBts%VQ)QK+@aHbM=+dZ==G&XgPiI?Zd%v= zsf@IB(yqwI?BlzfeY{je)bx>A6WGUFj9~pwOv|nMjbgmbKD8dn(D&es-Ud;I%t)mH zM0L3GniJFF0}EG&XBc?`!AMIqc4|ib>C}85z%RMk|+f=ElS2Kw@R;7YTwNO>Q zzPr?f5dbge+K)N@Or2{}u^6j)E|k@GaW;LA6@58cBgEzC8v}7Nmruo;6S%oj?%^L> zNb=R(Zpr)~{FPGKxGLTs%||HgRz$WB@}?KG63gJJ((sZ4KHawrZm~wL5EnDq7FtLF zS=vp66#}hr((;QCe@Nrr&DW<8i+2vOuKD_y3~$xde|0hvZE+eD48+o$*yErj2PN~} zu#0M|gukQMzSwA>{HP}Ea6!r^?;8TxG%_j&o4=kV*bLDW@_V){z)o(bKYb&Z~@ey&hSyrt7O(6RzflJhXoPnMy@{oAFla` zglR0hwQo1{8J>BhFgNy5gWymr8m*N#RP#{g*ZSd%=Y;>JA?(ZvLRf!aP-)Et;T0u5 z&VD#bv+f;@_aMIltmAcW5gl`S_2aB-e^I(2}8pehI3a{1*Y& zpKx;E!&k8_uD!<4_x}cc@4tuGv0xHY8fCFV@9&5CP;LE|`+=SQ7U@PlOCZ1#s-jI_ zW@G{{<%imf{z#O>698&YPSX?1{h@|BjxN%z%Wl?EsV^p>6`2Sjf?0p{Aw z4}OaO+`;m~dZuCmja3_fJT!hs+IlXy%DHo4K*Mv~Vh)e!6Z@w^i|OK_F?~j7n-BMO z?*Ro&$fLW%&qW(6`go*@a^VR4nt!^&U}`2=&l(hQvSL`CjR#U-9wP~{S!~74vdZU4 z0nzZusmL~=dzq@Z;~7q#3x(}nweT3q9kAOz^6%)V2i!63vMBbT3rFTmBQ@K4`PUNy z!i-hV+N{E7+12z~`0?8jhWN!7UCGp0Q&>zWd>L-o5!VPA45KQ+s>(>LXy1;JBF3WG z8fgPc0%+;oYk?y+sVI|b8zC43lZx7;xLCp_Rcl29(d`KLs}~^LFHY}7xLVj8@BgFi zUBIiVj{g5dI2x4n1S&L2sj)@{uR%qF8ch)7L_-M|HC|pDt0JvbQ#`@QH8BK|9(IWq zD^{%7T8q`TXe~vd8ZLzhRRJ%cXp8q9gDu{;TJ!sSXYGA*5@P$d@Bh#9kbU;r>oRNB ztXZ>W&CI&}=zzp*;;M%1mfv=oy`lW~sXEzF|4^%A{Nk`@m3vc0yLo~}+vZeJFxo}I zXrE-@GulP6e)n$6@|VjdgQ>etqX#`4YB?C>!sH-VWnj(zdu&vg)Kvp&3*Ijd=%6rP zW!zO3WN9P|r!Lv({6dP){Q7oB@%uuG&%8(}3XX`GF{cRqr%Y8?Gwi{dgNe4QBD55@(mWjo$Q}f)QOO$L#8}IqM+I`T&SY6UI7tnhYn1~ zHEK|kGiTU2Ec)2cJY6oq?vNS4dNZ8uaF9`hYo?vQlehv#J|D7I879!ipP< zmWj0j+Dbt4O52c2k47ZDV>LTednjbRkGH_7$HZyYeKoaDOsfVm|~GWk{K^VA_72egynHg{MP5@3oQ zAKmWC&TduzprO{~9Z9moo6g_0nmG|PE~lHC9oa^Zj|L${+*8t8%+lvNKP*Ji0royC z@NWv@mvD%yBMarv;EBZq`e+kWhY$}%jQ#s%7$f>mj&U5LtUlXxBUZ;YeV_$-*>#sx{py|-t#8D3s}H?n-`!k&b`P!&-xTxiuzbt@ zcu~WogNL62yLd6S`-7NwI43W6+NYKKvSKUupRY^qyzXO?>tpSnKG8Wly3;4`aP+QY zS_#bIuD{!;NkmxUo@0mv_Rr$ly}8jjOUYQgdux#Q)#8TD%3FN&CIc_j4y#~A073d| ziaMc&SMKXZ<0W41oyD8p89DIn*s`Df<5z1hKC7Wfb^~DS#p2yN$i>}D?-sB8{QQ!E zZ^f1!w&fQU1&40=1@}u8@BXkP{R1)_Y+sU%u?W-C^nGfexPenu#%|y~K)jQoE*`ig zwk*t=tfAY#s^RmFH4qn}c;HJ^S8dh3++Ll!$q=SAFOfEAo@56>Y~V(b%~poKW6^TJ zE@|*fn91d?W8I2Z{*!Jq)buG%RNlAEcfxZ%$oYbtH8sr0~_nkZ7zUQ;PG z5uh?Ud%J`(T3Tk`PmW!BX4+6f2@EW*-IE@j{Rh65G(2c0jTc6jUN9aE_vX^i%=MD_%i|bIS?0hl|tDlxTf^XAQ(>`kIuTsoS z&0->C^ygd2KrSPD)aLidAumrlO8l})QzIvs={tc{oUp28wSF=E77Kcwi|joN&K=lB zfcJV!Uy)nQ6UVpWc7-0lpjbgG+_t&6;W;&7ps;IbB&Rrt1N~9= zq}%G;1@+@jczZY)3+J5X5A6%lQYgbvqM=`I|etfJFpHSj5d;L@y zja-9_pXvK90?Iq849o9ULUT%mdz5dlK&gV!<3CqUGxILjCo~Vt_Vyo$hiB32JgpKOhrWd8@iq2nR?LM+lLMg~}~#$pM`cxEY>DuQye(n_ME))jlpY!lUR z+W@kZWB5Cvdt>FdaSt3dc3kCU9BPyD~q}Eb(m;*@DUjGo(p8vB6YA@&k z&(g37zOD8(WDo&e)T|MiAl?lv^)Fr7W+E-OT5pct&*I*xtc-xq>}Cw^%tri5IQRS_ zJ${v)|9ruXNY^ky%$*=wcd33R^31uB@6o#9B#f^)uXIeb?reTm&p4RJ=4# zE~-8^_k_mEV@b{~Hb>1q#Vag~2acK}ha4jtO6hMD@y+T;ln)?4TKdf1(K_unDU+Ap z7@h0$8{5hr8k)LoykJHdty6?m?T>)(kjfmuGdJ(A0qAXV^Zp8u9z0I?pS75rqTB5} zZKivfE!^`hx=_{nq=i8aN}y&(i?eRn&a3Uerk)0VQuqN_j2$`LiaYXhqKB5LGk2}j z<>zmH!J2oL=68kWfis2)V?u>Q7!qYiVjNa~RW89sS<>t7w6c9UDIkzf%UV1g!cG90 z<4Pg;f_1O5dzrs`;7fbfJEdp-F9#jat4T-v|J5t4?2b=PX5%ztK-$b3V~N45R%@;n ztkxqHzwi%-*cCQ!Q!bSM?{J!0`Tx1HVw*=Rf}PXM?W}A`_3AV;pG5!dMIPGiw9i?L zihl$r{+QKyv#gZ=!x@@zF46(|B{sm5gdp3K1+f!wA!pca{>kdhY;D7CU^IfJA>UvP!rJmVU(pEhGkkH5=xL{AvrX$QMh(F7tlPB7$pqck72K zpSOs=oF>+UNugU-Sb1_-d06=GhVe`P=gOBf%v)mROT4@FgYw))OZjtLdCH;v`tU4k zjLaLAxeuB3!)5lff~J_+s-h$@iU4qZo;pUCzFbyV87W#@go1=+7A1#i8A7p0T6$K^ z!q9Zte{c8OEcKPJ&2TXc4LVp6r7w`Kf?rNjZF|N4!}Z{cfoP&#^A7^4M?Wt4cH1V- zV)>%p3ZufhKmOUaHbi93(1L`|T*4U?`{A3|avytzqQrc0rn-A<5(-q%0OZi4Yte%- zlmQ?yu#!0T=g20;BL|x#NJ|C$-&>k95;PdTqlCny7)q5w)R35>%(Lb&I*{LFV9M7} zTGo1G%&W@wC%Fp1o%`e;t%P-j6S|sYEO+{(SQH-(7BX1-W)`BY@h$`CJ#^5Yf=MS_aK+GiSW^YJMG7lMHDwgbGZ;5tzC_=FGxfYt!R>YTx@p zQH=gOu7gvio4-R|je56yuA6Dj&8TTpucjYd;uWR0vV|Ka_!cR+XfU54LdMY|fw@U7 zVk?bZOE`@-B8MuDW3=|y%t@y9Tf+&8O07c*XSG!}wj9Q{aD@n#xh1C^xEOpD0KiY= z?e=BPUvT09i^26MzqLZz$T2uu4K@E?EOBg?vM|37_pfGuzkMIDbA^?J!Z8T83I~bN z{EO2!v(@W_sS@%D;B%(}l$c_DOpyhH&Vc zDSdi*-~oO5d9N?&)Bn9o7AAPcS5Ri8SMSS=|D$@}p>gbRLS8wPHEDzY&6}hqc4;j? z!Rg(vXx&CiC;^2MQP+}CryZmJQif)^c9F~o*dY2=n?Ei4Kk9m880-&CzgmWVm6da% z&UN%h*O{{of`jT#ADyyX!hyM|Y5m0KZ}ZEv+v53V7si5%Y)wQ*PUmD4hDHeiAAfAt zr+W{<-shgKwx*UQ`}jp}bGk)Rea(*T8oq`{-KK=isiqdYg;-i;xqJcQS5#M(rd5tZ zVlUJF0x{cMN3_~%16LmNrm>&2@agc66#3(GW9TM-9QO~c=OtW{=HGjZIY)h)ts+;I zmcvpDVc|iuHERUT>e_<&c>!~c#agkD;QsAnPM}}UCl6tR;1`@?4dXJ$wUv+?W55C_ zdql50?lL+*s|B>QO3uJQlngC?_6FzSPkzgtfK`~DjZ2$2d*S@~?>a;zzWmixMd1m_ zekD&=C4Z;%@9SazZ1Gm_sODU%@&Bl!c!~r@lN5Y^ekHYX)v`Dp4vhs*?Oi zr=5Kzwy0P zwkBcnt&^peMs2YBRr3Z~xt9>9>tkNeueSUX6E>PXI&4-BQ!JFDX;LR>82SG46gAZ` z`rEU9o>d>Bsb#6EVY(XS0nCJ!mpH;;2KYC~TCQQ0?T@zcyHUu?@be-hYmT-YoILB0 zex^PCTVMiX>l0JJHU&%pJ#7Uxjf}S{$=Dfx2~|*APE3SSKCpiOo< zxZMiP+?d+GA~Vj!JcHmzVg5W(Ci(O2*}?Q?7FDQ2N&KV-<$eEWASBTfQDUw;%1Krb z&&^2AE`D_6A15Z~S5S=N)oOy`60Tz269z}JhEDUd)vSmapHKx`>$VC#rcFoIy+O3< z_0N9<4_YGG5r6-_t;CPRasS)eJKsPIx4P~~lA<`n5>iJ;a(Ke9mTdh1_-{UhV7=1N63XRep z&CS;n`nD&n$1HteZmFJl2sSjM|9-}46~|iI3d>VHQ$Ase)!ry%T6S;rLe8~o*}_HV z97{97{dCxJ=;VCH&1**tK)p7qs(NNQN{`d=2#eLuj8V-1{Y-ot56f-wp-IgaW4hJR z)bt)uwEDM=XOB@Ea3{=)yE^U38 z>N1ZDGOKc7Ez9b}qn4+?CC4gU@)uX3wM(8H%QM$aJ4HaiJimY6pPZHUWRW4t9cYJC z;SZXsK6e}`U4V?8$f0aZ)7z@|of`i;`5D1#?}{I#?FW?qh9}}qYTj_ zHvBITefbO!eU7S!;skFJ(apF0ZxM}tI7D?ms6MD2)wx17^!=Y>`#Zk}+rMtd_Wcgq z{+(uW2cIOq|J$YxyZ$xQVHVSE*8&L%SyJkEh%c##JGwgPO?4B^93o+;li5gQCJPPy zOd%ircquFlU0z=d>84?c9Z+RMQANvxe7E`H1TCi#(wG?knEDMv`MAvv<(3E9-l-PD zTI6wb5VSpVExSdqtxQidUSf7nev_wvNmXig7#zgZ%!fvLJL6SCvspJ^xC>q-8vGl{ zZ=LCU+Lg^8{Gbrfac$#oV^iz-1VrMldq^YAOE!P!A9GQWCOiAWw-zwE6%FhNH+hRpQ$9&uXAeN*=QQ)|p?rCwaxlBjRmu2PN2+Jau1kTk;ia zwez;*o_=Z}1(hugMpI5~2<63=?<0?Cby>iP)@47(5RE8pU~{ibI7o|NB2QND0*m2n8+nP*d~5rocO!T>C5cdpWm+B!)g(bSJ|{ctu>6S>aK{ z6S<3mFYqTFee-3pQUV>e%1qD~_y?uYXb{6~723p=NTc1N-U`b*39*py)4Sqtmn1T$ z16xU=&kQ{X3Re3IYe0$%>dH6k167z4^A0aAPJDe+aU#Bn?f$e)SsaL){IPtZ(AWQ^ z2J7<6_9%G89&{P~ihbv&reB_BLXLmK%~qz#m09V^tP0Ec6WWV}DwLMfZR;b#sNGSG z_N2K)*Y6cF{>(3=G!!KMM!ScKUo8(o>yEy(|0riVxc$f9dV#H)9cB*R@Tj}dnEgk# z$d5B^ojS`ADq1%dUW4Bg+Mp~KmugsIwlc%?-I$-(h zUK!=ERk65aSgQ5et`&5;eW}YQ$oA*Pur={TxBFRAoXvp6Xo0@Ie6|R3_DC_rWNfFf#{wv3p~Pojx68C(r{+EDcO$G5^2b;S)(yn4Jy7H^VsiDm4643 z$rQ8gyP|8Qn0&A0;D>b5B79BBK+#XIp;$855D|?v0_YQxNrQIj(u4;!oef(AGjCXt zTdg`kfcS!c+{NNn!RiOoaLgje6s`nbR82b_fdsSNp}Gobx_?%-Y+lsV$A|TaXZ1{Fml34 z>xr}jH~-FnsPunkanqynD_oA3mp<(f;5soao>8>6rkcF$mm}L=>Co2td&9QgN~8>r zA(nO5&81zKM@1^XR#cOJ?ZlgJkugqH_v#S3i;UTdyvow`KV1I(vtCtCM*0?3Ss1h7) z3uTZyt0yQJi9ZikO6gqcRXA|aw#Jq=^3u%wZfXW!ruTVAuueKr439ombduJ(Vz1~V z`A?jtdC{a&a9h!^zu^>c{1Ne;9X0b=%~0W)2tBSa` z$QJX0n)BMp{h$U5anw60#*ku*%EjRi>^l3rUoEM(zt5xfxJE0=>SIMKJAXe|u?q)n zE|Fm>CPY7$p_vzXcXNkX|GOp3dW=2O{2k1C$Yf%pkfHU}9k_V?>)#rj=KozA093Yz z*cn^vXf2f!WzXT>i|irY7e*BegOzDp`~=k{*;F``l;~erArhGtTqsAmh$&f6U)g+~SYO)_Oe)yF=nSEa7x0>AERUZXZ zp*80?4lz|L{O1m{eB+n7d@8Gar5*AG+M@DDuyjVwRb@|ub<-AI!qY!~y!w`;=l@ac zekq7z?erYLY&wVbu5cxnqA$Asv?pT~)^&a@onlZWiEqR2kHK=34MuiR&AGYSVZ_fY zNjw-(|L51X_Dp@7e53$u6i_vLZBF#yhfRfZQb7OkBS4qvmkN65ArQ9Bu7U2i{1!au zI-|Oq`7ttaF$-j&=3V-X2sGWA9j*HsAApeqhPhfxocz9x&ATqCyMpnHTh6fpKvk|S z>Xo*3PBqQ5(F#obyvXGTz=TCX*D%5VvT2CsMbxSi8@68QEElg#(IvR^oryckdo|gZ zx~zd(z>@3%uiX8IMC)E8jm3CEy8Jz zl7iBrbHC2d>SwA!Oj`UllVB%EPCH~7NKR{=NWecfh>?}g!6UuQWp{=W(MAi?*R_^d zM)rzdzvKpTi|zYEe;7D+b`4%@gbmeE*llvXW$nzW>urO9DWK!J{&hchOODNeB% zJB=FyGWY#Ar*S`lfrqj+r*Y=Bq~Wj)n%m|E$8r;2*0G#_{q5?$+XPU+PURE{_X%4v zlH}jve5;_>-zbBgYr>B9!WKP9XMg>BSD9qWW7v6=FQlOYrX)G^Co8`&VVtwQH^5CPosFVt$~FF~(VQ9NYB%zIkC*aP5f zPg%%1I-M?kJ5~KCB~*4SLFfbc$F>hcRgqH|b^7b{lNQ&aqm7j5Cliyh*(7IGPsxB$ zcmN}1*#M`z1cX@fu;35tPp9{*{pV_J4ZczfJ>+zDTIF&6J!i|7^|YSSC?oRgLxZlS z1Hb{SuiY7y27H*XGL8Ib;3?37nbx8|H2mK?$J7(;HdpPxEO-MU{<5btMB%Z;iQmw% z1u+Qx8rz_RrdsWI^ZhqdvDLB{^;svZw7)w1{GLHYF;_1AEeAyUBaK{ZUtL>`AKGs7 zz^r{cJ(i9<`=UgkjJj#RYMV^SI%LC)A#!a=RAscv zbtnFwU@8dMwd~lIB{Mr&QPWLNTVh?po&B_rcj0_^_zHW8k$17s|7nX8e_wtH{zm<^nX^ zpSL}A;BA_;^!rz%ANu!?v+-Y3-LAivkS?LkbsqiOB732~h@b>R>i_!fp`pv=m+x;= zfY$y^$)pQO5{A$p_q&lw7~knBLkl}lb%VBveOoKcmBOdBrSLc0F3n76jwmeq*_XQ7 zN|)y-M~|}LRdfI`lqh~&GR^D1XG{>p-tjlSw0_@|^hs4cfcdrQCP`lP8%dHSj^N7; zW`BbFR1|!gARM5Qk8FGay8zlOh4y~amwQ^Ar7FjwMa$skY22^i_q>GLo}jEy&kZwU zJCSAMV-EDjVN5Y^`U!vAUxP8z{xz$ewWat5mi>z%H2cppn7feaM9m8QVFHwLB^zo# z1lACl`+bLLWvJ!4*-pgcy!%In(5Rm&(6rv&&N4duvi21pv~&A*DIAvG#SPDLpEOSE zr-311rpwm-m)`N3g-^44)NI&L;-ZYL(gbct*lwxKSzs%G!$#AF6z^F(D zMqkrdP4Kh+B$WrhRI|#-q-b=zNzvslI$Ll5{b!tRM0sS6u~H$0Iqhs{UM_(A<6l#s zTpg)>p7kzY8(sY2oq{~^gQ^nmLNs=JuASUFR`W%;5&6P4A~{GEpU*}6k;wcf51eX| zBWze|)@YPqu|Jq#(Gf-i@((J|nzhA`C1Txlm3+&UeEUmEE;MZe{zKd11KIlJ3tk&i zWV!)V?jJNpY@l<4%E&_0i~z>Hxey-vlw$X_0VA9($Lxq2Al5&A=afAcou zvt^pX<;F*xsbe(=vJGsbVJh%jp>b{aL{$&`6VDhgbBb!DY=s7q<%lp$np|amjr)Fu zeGffYL+f!T219?_KDSz)SnPJZ))-X0z#0vQ5cMRw%>IchlO`$Cax0SdDEXHO8~yJ{ z*ihZcql=;H(hvy!U8;RbiYd^4Z=bTNv1|L3kJCa!Tk)?hIi{?V^ZkckJ%Cl1Fxbv9 z72!L-WhH?tE&fP!w)TMVsBH1bEb&OHAC{YAimo~Ji})(j^vbB49vNFSJ@}5E5N6u! z?;a@%;^b3==s)|%@Usiz?dQWjg3qWPhL-v3+Vd+R=1+bknIpX6#fS%wno78i2-IQADc`)$(qYeKyXuip~C*$K=MAXuE}N3g;1O zbzM;@1r<;b`71l-jVd*tvloapmAjYLwdZK25^QUqm2GXa|KUY$CQx+|=39mAAJGlh z7Mu}Qt5(+)mRYsP5306yT^SdP|9-c+(*fsJe%s4oHwSgqO&dQn1gYa^ee(~J0Bqgp zbZbhp<$CevJDM6ru=n{MK`v6nu9d9GRI4 z(+zG!T$XnIbN&6tR=FOsFI9V2Byis|`0w7k+fg&8KQZbeU^iz=-_rOn8T!1jQJj2JB?lakR2VVz7#a7=Scdr2 zU#l51>H2G~tBfX@I;_sF@>GA_?@pgOy|!b+e|}RcA~gR0j=#%3s1(;ww?+6#Z}7zZ zTT-{NMHrx`7d#P~@+}?HRC{7WtY`a8s;~gNNi_y-Ti|le4lL)l3CcHSpBN|3FC%gk z!hRHa_OZ3{w|xxA@79+Q9eKwY<n%DlDETTJWNrQpnS$2;X|<>jC1)Ef+9TPI zY<`p^Mqp^>3|sh}r{78^{z;(>cOh_+PUjFu=Xbm{VK)i)=vXwP2u^wpsYYBkH9)9Dt9n zor_V^1O248n_{&hrp*oTMrRcg3?)}SKaBaa{~=rd ztQK^B3xirND8-Pp9WuDbUX}ihmEJ(}X&E?8O`QUo zkr$+r#m8hhbEe0I`Ag#344E+?&etnw_#!0jjb>nKX4-yV3!ENQPn#X94VqIBnpp zJuS`u?GY$_))i)moOx!ur~c}d!QjcDxfVvT*2)XN6ocBl zE z-m-Xu-#ODisk;+b#%c@teHO6IGF{b8fMNdwbutP5B&xoG{v&Db^ye`Gn$Usqq0Ii- zJRNbb1hF6u7`GZ7gmjMW-EA4{eY@>s+5ZYkrc}<^4$h<;ZagGTz9P^EeU94xew(AN zx>Z)IBT;`XqKcYy3^BQ7izP2Rp$d&N^4-*r9d(M$gf)jYCURPGjtc(ayD)aqcVT$Y zHvhrf92Sg{oHa*9tqb|fd2Ma zAnmLp#6?jMqiWd6`%S(ub@gm^+WsUKlFpnR{9M^ZayXjRPu9@Gw94aIH6b0_JGTBc z*gN)g@K2oqO}NuOGf+`K{0rr7pWa2y{tg&@XDEbro0Tv0r0n`Ga}4e`P2yAko;)f~ zO&Z%UzLRBb6RqoSoT+Qp)kw6zTb>o%pG50=K?ut}v_QgHqVoA~p&eUv& z0dCI;*>(lsy4RkNoO5vUuZf)|HxL$`^nE-Ue%_& zJMB3)SCztM;=dJpnwy&@B`fwZPn|+d3+*t^&)-1}ya+V1_WKys_sNW#jw97{(J~5| z_WLX6;Y#q`Uw1JCX1(N}g5Q9Uxm-0dzp|~yK3k+%$9%o6N09E;hjhWYRSjX$Cqbvl z=2$Tt*BMmH{&D#jz8`>JS5DvW4Za)jtZaL%zL1=m+MV$4Kw6QTVThQyQ)2&4iTykM z$y#~?1+T!;`r@C{V(2~mE{9$#1~^$N-gzkIxx5qZb9u9shrBsKUe`Tm*6UyE@}3*y z9T4QrvnSx|>Gk>3qZ+pPxrIR$0?S|Q8%Qq$&RaVF>i484>lrctUU>h4h+@J=fDw8sO@~FUrnJD|)h! zm*R$f#SNdZ8~fErc~{8~Y|t(aNpvqZLuK^&V-S2Gu zZsvDuKjW*)Vn6iVe(0lw-kkc_nsQRB($%q*(Y7C zyP~~%Z%+K&mIufhlwf>o_KhkXS6msX<{FWlntc{Z@-SumsvBRDE}_z!skHKYLZ`qJ zsV>%&&JEDhi+uV7Bs%K74kS7$4vCh~oZt62Y+fnk3gg0Tl@w=>Z*1G--}c~vGo*bo zB!#EEHliJI+sXvW+K(!JaK2-PsoE(A5xMF%6Y#$MMO3IF8lVcEl4gfy=u```o|UUg zl-rFR9+ttoTVCZfn)L{Q-H)XgG0!y~+5#H=`~A+Ne@lPSRTt*lJV66R>{FU(m!Q66 zU)3%+Nl!7;8xa709gIa?9c@!EK+4&D9S+03A)bU{s>RDSO~t-+ES5S<*DL>=Ff z*M%vQ&cA)9+}f?~)$CYcczM*>hI+x1c(+bPtRX=?jH1%nSort;9$;u3+LFSO>4uHV z;K4T|?ItqM)B{&SbXAix@Gy!WVtV1$Z2!UUZFSc&P)N%o6=(;E`Dk!UO5{5TpRg@$ z`(E|`5YdW?iZ)CcgnWLabg%`=5}k9Bjm@y!d`1u*wEb;AM^*n>7>aV(XAbZuYzO6D zW|7G+b_1K8dFv3x&QZx+s9#kAt5gWg$8{n-&40lajE!}&OtoPuJW;h4bV|Byth~qp zB0L~9Q)s{U*`gxTnIEB3XU2Cd@Ys!$=sx|&r$~0Kyfnz8d)DG8La{C?iurfV6FFO9 z%7r}dqHOr1faLz|_m#oa@&VOBM8V#0k9`Y9vSy727!~o#r>sx+V*1wT_gV4Rww9eq zugLb31g9TRAap(ZvfB z{einTkXq4&=w4MX^1&TYhu8nd59ov+`Rd{Dq`)r?n`(VHiC~A{)egT<-9-9N8=y^N z3GO&xYa)Ufaqdi2zEM}pUI4bP#5xZC>g!rLMGfuKJNS+n##W0TH%auSs>~XvuF2-a zfIx4o5mWVfKz#biShm8A0J|i2K+p$sFjBTvwjW++7H<(1G zr`+4f$ew|K-6)`858>&$$(L6?bs!@;q#e_)|LK~&2hdlUsw$^zH@qS#Y@-6<1dN8W zgUma&-@^EwbAx%Sj5ZdcxynU}P4Ur`8py8C?jOQ>-eJuDkxq!(Nr3YQbgZhGkY`){ zB{w^axkD6pY8)J>1lY@O#~vdje&ljjanhHJf~O;}_iDQzaNG1Ve>nr)rTDVpY98!??H3@L6VR zEb_X+X)EqSjB8=za?~f#V5DX`XsVU@4asGKk>QS<_5_F;+1)V^E_5r*IKr}LzJI)8 zJQ@Qj40z-;D^dQ*Aok~4@(`54*i} zHJSazuaODi!^RDkP@W{}=V1w&KNXNraMfBT5;F5cfBe#}=}1Sf16rC>))~>yWLVSz z=i{oE>6KaDjLx|?U_Ct_CgIPetRNTw1i>MAI|TmU|8PLNt@kBqwW}XG->ZNtI1%V@ zl-r0vw$*KT)bv|1FL*-G* zffcya=9O`@=Xq(BS1NXiYQ)zP&&tt-Tq;0x_|27>MW(1HRP8@*giEn&%~!o#aE1S_ zYXtp1Ymob0eg3J@SwBaXZp88Jinf+RSzk5&RtSO?P_5rQAO+d5V;)U9rf+CC8@PBS zuCSS)p0>TH$-PlzCH|ke8RtxMZevz_crOQE8JC!k+qYHo5@mxVEBrB6GIA7LYy}BV z)kywHBVnEyr1(GnmgZ3qEfJ<+WJ`R?CCsMF(lndGXf-7YViDue@94Jy;)Q=Hf-h{bLYtw8!S~4Xz-D%dKTy&Aq1AgX%+<%Z%2n;0$KFATFY2IYoYZ z*0XT~LW9_1rcywp7qcs{m;~J_`*MfDh~bq{?k^Y@KPtINVq4QaTK5?B)tu*c;=klK zmqOv#T?KB$68&38c8Qyu-+`NR+O(1cdQ6y2HU$`z?%4rT?7GWTKlJZ|Z2xyzSAAcz zE!p?2su0!__FeD(aI<=G-hgmP<32VEK(S^;+h)TI@d-H*`lo70K}qeDjBd_R*l-f9 zdz}ozOK{AVh%6ne?L!bd2Uc0(k6R4qp__|T7p$RN#HE(}BiRA4+Kl8Pv;^HS0Y98TO%m3tTyLHsLK)ib?2UJPdntJUNx_6`S+W9WAOnKy8DOe+Am(Vueh*0!)l zr^r<9`jXtMnf@gWP5!GH@7O%Jnt5;y{&KEf?rl*xB`RO0ioC;-O~$l^wbICuGy;D5 zQN0*Mm8)BsiQ{~Pvv=7wewf?C&=h*r7tYi!5KFc&e9sd>pY-u@`-swYYs(PMi`d|p z{5h3bTHLmQ8#bmL#tlxnM-)|mern~1#ooo~`d&O_{iHsFnlK^ve_$2-l_}nGB?4DT z!)D3v=TN>;JTXPE?PO^0-}<`)mL0c=(Q+qKoxGO$oKSbQ{@D6=9_wGeWGAF?{Q+~V z_DCZ^h!DJ*nSEQG5T}FO3+=pHS!*$c=?Xgk?ca6{Q>)hj3@5+Yf_I?&P5-rK&DzYM zROg=>KOz{up2u1GFYP`Aq_0$`|EWr9CH?#Z8VtU*k!h{d@RM-oG%^Ls|`Ps zQ!8(E`a{tR+C?fKU*cVmUNU55<**ozG76%D9T{Swss<%yR0KJ;#zZfwUKN_OgrK_-i$k-QT6$dv`k8kIkRm(;LcJIH3E$my1MR7_aR@ebDP!*6{hL%=wlt@R z<2HVi89#b2`%1fQ2_8lQc^=Jlf zpI&cwTw;b}31G8mDRc*C0r8sc<@S1>-{SAYJ3Y{$h z^v}Abi0yY=Y{1_h0v5K2XWS8ry{R~}^gM(*xJp!uL=!FPO3}hB7YSqfK%!urN)!y} z^PC5qug7-sC>#M^Z>|Q1-&tr<@8Xjd(t;65D33KL<&R*q7ybXs2!``^Y3`2GbS}kE z<=Zbx$Uqryj(Mqf@mBfo{KZj^QD0&-%YE?#q`nEY1p}=Vwic!3X7N$(ZzXRqivx15 zStBYp!!K1JN3c#`l2b=~HoG%Jf9T=V=_CM=ex;RaXXwAcC=gC+@r#rDhvjaH6>5cM zikaxm6tgE&q}0*_GERJz8=o_9E|>9Z&DpwtDO&dlzlom16--V*s-D6vOm%ON%8l|_ z#fj1Z#fey6aiS`pnCeWw7yW*~fy>+sO^<5w`6pb!PJ`}M2=#>!$=*Zr()`0eb8M3` z5}n`KB-BFa-7Pi&y;*eabYSfOLp33bAhrchQ2u7?+EHxl%Uh`eM3)2PMy zA#c}M;-{|A4>jA8utH~xc=zS^bYSsXS0rH*l*RbLeQvklc!AVlOi9C^X+I|c&lup@ zDHP;uHKhBltk%vTZ%LvkOAf4J$G~Fi>$tDYjM-JuTO#C1Na)^A= zJ`*8_mtRPd1Nn4+w$vfq>dE=gvnlkz_=8&O2-AU%L>4~u<-{NuAsdEDR#=^}WCMWy z(mK_NnjqgQ|C&MvIrCnNq8G^%}*Q{9r-OeMB9ik}rNBX5#XH$|oY#hhz8#4$H;Pjt=1QkLOu zQ`C{59R@E;?J*0CU|0fe+ro03O}e$Tl{VNZt%j9}u=J|QwcV24yV3=};7qTs%I7#* zyVjT|FTxW}bZd3JQjGgU&*~-Q3Zo5Hu6I5^nd(;~{|saQnShoHSpZ`^OS5Nft2|n( zvnzBVmUZ9azAL6$3B#C20QDC2fe9h(2$qfZbYWZ+L!e1bC;Qy7k2*qExwOjfV@3x+ zd$EXwxW)pI|1AfM!tzPx1|R{0`GW(7%PDg>$r>Of7rL+ReLyZqc%AXg5PMa@_9*O(k6A-gi?e#7i#@rf~^Q#v`tYM zNL}<=q~c#&;O1euh-tA^4pIcs64eqQM=lD5irS#6(L^(&@+C5Shb6N_R)McL7v7dX zAyeZ_tgv!e%(VQL*W%hHL0>YYIqEH25MN#d6~pf zmC*gb3+!nNNWj4#KG#8BCdid799{wKfDdU+u_H=L60VjM@UH=UGiv1W=vPNJY;U;< zwIorX25qJfg8ypXZGQU8Yq#0_vyrC3jn-i2@#{2hNj}s`I`K0fNM%c%1d|rRrgq+B z+WzDO_9rZa6X9m;Pl(zwK4)azJ6hC+X88MlA^}g|w4QlD#|5em4OQPG^L&pyG)kM2rJ z453lzVrktsTKBkRo=K1(@we#QpX)s_mYLe@bnxvbjnmPn`&XRp6!6gNRY+)FqzC3> zey(f^L1UhD>Je3e4dT&B1^fV^F5k&?#6R4I0)CR_KAGuC%0c7u=3r$kk<{9*fY0-X znmd+y36aptv9N{a<&6{vOz>FysHj*6c6>WPLJ%^xQLLU20PInM~sQaG;~akERio!6}61 z)K}Yg;`@b;&UX6YU={YdX-u}uN&Ye6*GJ~qKno3ct{YvD56+x*oBSqLR z$F|jEx-7&mkSNV(8`c4hoZxR=*l0et+rz$(Oo&GCpH4sQ?UL>dK zWFCy3Ke-22R9+CnW&^U%Yd@e5op4DCz)JkoRUCO66Ibb%w&^BO52tPaF~uGeF<>)S z`FmrPLO`K@L0g;$+jyv|CIJ_k4v@iQ-e5>;)@X!R`$K1n@mTpTKC3amm&Jt8}NT^#-3l7_M>3JFkN?Nw)5W z%-VwGYc&5E*Ey=8H9O|b(+}sIW%|KCfj?BSk|S6Rnvy67aBIKVJ9i^Aw5PV?rDwqMVRO$uWPx-=y?NnArZgcC{al0=*;Iw!L90dLaFh`mgWC`{_k}2{}sVq zv!l_#=ZYUang8}oELdW%b|9G&<+(A1@?T$_r2Mrj9OV;#XzIZV-HalcBXsd!#tkGv zvHqJf_5j*!4M~o+6CBNNj-RhN66BL6h6Ai3I&{$h=hnt-)^3}5{X5uzNIR$Xmq9i9 zeUCJJi2!VFC<1K9G5wG32`RageSw`X(jrTmXbX7yN6zJd0a?_GT=^1m-{f3@%4UVg z)d~u%OvyuXe?eGr>to4z5&jT=-Rkf=UL31thXzve{~|+Z@I)Z7c^?RaDg1T;*_hX7 zrEwSz09+l)(I0MFgCGBJBIDC%DnW>KQOH(R|aX2D#T~47DOHEu?}7& z6*f~fQBy?*g$e_En8LH+f4N3e-;2D|hrQj+@3=*~O0}p!EOCc#k9&6N0cN6&jNY%# zVD!8`Tk+Z#(ZM#P3icu|6rGCxLzQ@$wFjvy>=5@hX$GTZ(iRYBD}@r$HLkpB{@(kP zsHWh$9bg+`V|mK-=Zd-qA3f+KPKlb-t$cs}FkA*@7;K@8Xp}Ww7CK(!r={3m{^4!R z*$RGSO`Rxt(m~&sEorQFEn*ifwyz=Tv>eV{Y!02~L<{qtH-W zaI!T3b&ON{jY5jLv&^ugME@^Xj@S;OS_s3RQxio0z?W_P5c8|`s{U)wQXjlP3BehY z7v$hQB+m5qVHKrx7~6(*wk;**GYq|W(_U@X)w!R^% zrJlbKTOaxunpKqO)d~7&RNwa%)PPwzv+JYT_(qzb#wYiE#d!=EGE3Mw#Kv@|{P|9CBT;%5p#S(q~ zb|&);){SBtM|t=s4wQV&qXwB2h4~ng5>baPK@ov^k*iB^io8cwlaP!X`im+0Ri;I4 zLAk+#A~zPg?)_saL+A~juuSv%^xA^+!Wu1ahPN@-Dm)t5D#8uVa;U%u$%N8j&mmSreO0z~0rk}ePuVuxLewNQRdQHkl zhc@!mKkPqlWdjrH5wuAa;?==seTG%41$|eM5~gpHy*p)~I@qld&2a^Rjc+>D1`=)v z-&(Ho*Vbc#0CtQUOwHEd=&VywWrYnD6Q3_paPIpPY2rn=|~jbRk&g6G$59Uym$dkB{E;q15g(!6%ZHm43@k3HUI%L2z3admM|dxnl+jWEb!so zCQftu-_(HO$+mpqZ7H_<#f~x?dlsBjW_^W*SX`bk>~ft)HINctUha~Q*jhr!BUK@u zKR$9Qy^%?szkDgwEoVvANJZ?(kwM!gjc6a0(&8aOgQyjC&pugraY7RKQoYy<+^|*39SBBc0%4v=E$Y!63>S!Q|(kaxQf1>smca zpETa2{f!759ue4_xOe}f$Ny@E2m-03p%4!84J%;>Nae7RZ1mRL8Y;lb{a=t<9k5A? z)@V?ha}{rWijH}a>nQTwncc3izL#_PVZsjGO(MB!_TPnAF5eI5Xfzff_$?5dJS4yQ1}Q zmV~pW(`-pZE-AFxcc~s>Ln*T_wT=I(1uxR=dRwgj5@)eKYZ_~`7uk88B|WU9T#{`4 zUS6T~``-ZEaXt5s|B)j@mWrhF!i&Ui4HwOnr>)q z$C-sX)EF2)0=DH36gldS;BQ@|nXfNlO34s5Rl!-_Tsve)lvTvq*e#S!V5!mmB{t;M zTZ(};RAWrM1~tYFFG`K!mP*}eTU+qy@5R*=U1kCvVcumEOkc5u{oB+>#V3h}3UA&M zYoLDbmNr5tb&stZc3Ory5cAGGt+wECt09w9{+}E#HR`#i37dTyc=0cjeN3%3scc0# z4vIs$ocS;`_}_6+rv}glN_Rb4EMPBkLDOl0=?(5ZuWU*Ic-@E`kc|w)jl4W-3(iUc zZ}&o9#vWsfzxt72qfoVgRd@+^uW+)96(vg`WV@5NQV54p?={7e@HKDl!p zg@Z9c>Bk=0N5;bm$%$`QhuU@JYgoP0U#HX`mGl~%-&!$>ZwC$m=iBoM12S2It?%u- z!WT@o6?}m`t0F1XPRU7&&i*P;)E1ojxCZegO%JQLA<6*{EaM4ReS1xHK~1gai^i9! zZD#ipgCVm1X^9Eud8bM*-?Al}cG-!~C;3PC)M9<}r)<*K%QO-YnpK@P*b5#L zScp@hmn8CkSPz#WVsmW!ZTHnbk#Qpdp5}V#A885w-xP?Jd=JEM<1z8HMzDzcb&yZxNCOI|0^ zJTJJx=`M3*Gh42mxrtCNobUiPM7OGW6g2~sKQHFluXt|0no5t=KBbXOtGvL!`LB|r zGL{4qOk6_wY<-l4)HL3_KN=C(nWtZ~7<4o|?;36RSV$?ugtNRc@pv_5*yOO;dpw|; zmlmH42#9c>_$^<<&Il@%q!-yrPP4u7d!q+#y~H|hC{RE0O}f{mZQs!9Wk(`#udvdY z?UlZy`ytz_jICQOg+KghIm%E~n*OgV^~X-wX1BwoHk70Z1}EF!RF^vZ>Nftx|C{*L zlmF%U*^~(yz2wroVHQjCe|mm4{6D3ye@j|9Mq0Apy8hn~mmJCe6>*6#q*WIBy-i4e ziMZAW6zwRhe=KpQWg-5@LjgIx=>N2j$f>no`^Vx3)J1Oz~%JGsfleE=g$fZBpR(rsxx6EnRnVWp~FUR+%<2#IRD`t)V!T2WX z#XQkw%htMQW5UkQ*lx~W+0ZO~khNb7Z-I+Qn}qzACpNRa7n;J;ZDjC{*k9s88hy&!(? zuU!8SEGFh=X$-Qe3!eHVl-^iLpf-3k3XLhp+?3}3=5rrO2b1M!b$*`g=aj!zj-LjZ zqJmY9Wu=V#`E)0L`1d|%oAbH%$-*PX*pgLDfAx-kGHzOZ8s;pZdG^1**3{yt>HbB$ zBVE<3(+~fM2i1>cLmFW}lI+_#U*0$M)9CAJ#*VdPB8}0v923>2siT?Gi4-C1XQ`Lj z*xzvU*iXNqL_%tKww^ZouUzMtNS-M;5@l4@ERb^Odl*l4Qgwjt)seNXy} z1bZDsgh%;aX5Pn&HDIegGs?6U(@c$X{&LR!r|9e_%#7h9P%;>+7i%yWU{kcTpZiz% z7yVrQ3`BSf12;?lD;)YVXKm>&E_A9U>~n9I{&Ry9m>QK!0@Dpvx2YI3@}>Yysu+~w zzh`D1QdgOZ;Y=%FdX7?3QuG|9{&Hod!xQL3PFfb#tt%X0&qQWhH>62MmwD4?zx~Ff zkNI`#-N;&AWcy8+JTL#bpp$|}!WSk9VZ0cdP0YXd-sF2QOf_pXdYvs4{96OHQHo&I z(#`Q$f!3KJrRu?@|4xI19f@3k_zj6vi&7wwDm@_)dm_o!TRLWz_6+V2L$SNa-kmL! z_N~i!FCqUDOMk*{-z=_uawD)4NF@@K4wj-Re?bHF*|UKa{GTd+Y~51%@(&uPE7MQO3tqlzswxbKt`XAhJ8`V!r8djDt5L3;oKcJDCH6oqP^l9fqoi_ukr)nDitEJFw2CnSNDx#gix&6VN z0>8ulz_tP+epqI3uA3OcMYoQq(?Dn5E1Q8LIc%-2X$N(`aq-_<4F9(8l7jw_wVD_K~_Pgb@E*BEl zzt3F%%0!K&qGo!6$%^z3HT$*CpAlKE2Zn^*Vr{EpLtdP56uv&)vxa-I-9^=V(r?ynH{5@6;_M`hvyO9{nsW8Lup|*FiR$Xb%#nJKBOf=Q6XZb^E3V}d9S)Om?O3aE zD|f6JS%AJ6i@n{2`mB z+4UQY{Z=^v5~U{Na1(jHqDv$MN??n?2-DRfM4!uTkW)+)RAZJfO5G+>AWHdfRviGV z6F9))fR=0Ba03}-BwPR)Rp7=|jaPE~m}GpNkD|9Hgp+|E5#BO3@Qc{WFYq}0IF^oj ztQ0`7SV-g(v_FGuMCgp<+@nIsoov+cEfD{X6@47WpPoa8AKk3ypyBx|<8OA#tQ!&% zWsrWeFcHXFoWJJ6ei}h?XZR(nfr9){O9MqjZ`Z~4B?F(w;B@4`mBlOfo?mkG`dIqD zm^U>&HslKfxmTxlC8KVbaYl6Mxn%k1mPvxP*D!C?Gtlr6xArKi-TpU|Z;SHx#5Z>; zJLHpF&Z0kGm3~K|vIw4a9>_s|@_Gt^Szj9QTy%pRb`2u<$e(Rfyjee|@>3c`e&+qm z^*N+1J>C4gKwSPnA9~Ht+WkGJRW&BEqU)KJ)5>GJS7D}Nv6lNUI*i4rwm^^WmHEgn z$htb;g66TNDDD1aca1x`(_4FqAme=?9FBlxkO23}UzWk=)>Fa`V8Dq-{=a%F_6oaW zi#&ZMLFIZ@Vh7d4`Qrx&n%!b}VNN5?+O3nY?r1sm`(}4BaAR!c9)_wZmc9otUnRL) z<#M~U>`C>(?Ju@v*<|Tsa5(^hO)Mj)^+(|RJ2~LIhdKiNbOodTDi(15eEu|cC9L>A zt?YUlwbW?dcSV0g_D{M&yn5gZv4JnfR<O z-|Bsb#d~>^J}#{OqUYp{+EwpV@9TE!%ONTQ${^Cf@&{?ry7@ZY z@FIWyCIILbEpf|tf5OXGgO}TT@*;Xz9V?JLGV^2#-Vi^M_)L0@){SvBl)rz53pJw} zzOA@39Dl2jj=v>#M9%0=;vtsE<=Ka|SNl9^GsndW{-Wmz?eK31OP+PenQ6=W2PKzc z>l=Vt@LZVV#2AU0L5_vj@S+%wv@WS`<~L&nigRR8j6a)?^1TY1m-3I_3v_c#5rrQul5j3M*l zdNO0WVkOtMS5t6?N*ob$aMnHOa-XfxHg15t$T@S8MGNMu9rK@x72K)cz<&o%gKl;z z?%te8sQ`CB4s*PFIEf+rclAlW6#OKp>#i{8#M#M4G1KPaHQNG$i@U=dQzI#(URX{J z8`F0Bc$l2gd1d^K72I#XbtQKD_j^g3nI9{-hi9CA{FJBlUKCV@9KTduSH%hx zx@zWeZv3>lF?h~7f}S1~l=^2arQARk{G1#bJC%;s*&&`6dE*W;gixG#7B2yf$oM*S z{yY@czcdx9Pj}OKg;4-1?I8?;{K-^9kZ!}snD#*|*rk@|ZRJa>;CHJ3rgr>3s`pc3 z1;6GgDD@t#8_HkM`jtnhu}@HAWeTnQM!EaJf2_V}9pS%~Kbx=?NgSL{;E@2Ff=~Ib zQCzKZ9pI$dHFq+S}AENje3ek<0q{_5UG7WnZkb* zHqT1ln~L#KS0<||*c;|}kUPGY9~t!aH>-L1n!OZ!t~#Ni{b9~k_wg~Lkcy$aIJQ;r z1v%nJ#tPc>jA)4vb*|>Nz$99pA53-|Y*qp3UzWMe^_5U8n``l7ZLXX2^nxdwW${2A z6KNE&Ly>cWCzF?sPKvMJtdyn3^xqZ9*(@4$iI_CBRfoF{M@U5dk@H ztV~SJ)9*%oB-%%XtuRZcRu$H-$dxO0%P;s7$gef~zB&5S)@a>DYQY;k@@~SwsKv9b z#fxcC;banH5q;$fo49~xLZgwfG~;X{-RUZ>rXNBX^|P!M2^?jdWmF3c=fICj=jsgM z(9)$IORvi-ZQp(So85F1zC@S5( z@@5y3M*Dh9!yvQhIJ*YGyNG~4y3btt=YF_8$aLCn0>A)D77M*w*##)($VQB${M(MT zc2TB**~Ju-src5wjJt_;Fa(WtF>W(1&DOrLxIK~wC7qA?vpXD{TWodBP zKzn`ScWGcZRTit$`ML?P@&Y2@E}`DE${`X5D@J-TZW`Qs?c@`RYxeww^!U-^8~Lf_ zINo=y8`X3>)jm$OsiLro=qxcTQqHLPLgX8tsLv_5%5b=fAFuQZU25po_u{UvHar;; zxMPk^Ji{;tgIC=l)9k>`4f(pv~L#JST`Nw2ti=t*@4KiH{j;T=1}(Xj%9zCQnqy>$QXDl$jFsho|pMQ zSEwCyuAkhg9-7W|I~5r|k~&wV_>-`yQ9xxiR38J#%%&MC96D~hUO1$AeY*cx6auhvyJMU|sba4Z4+YC`x6&Ng62(z-{+Po@jkxXKhK$GVVb zmDzX}b{x+_{}0sC5%_Lj3cR4kiQdttj-Y+&d3wBRarQD;^XMkB&@@H?+FluvK{UV(lSf;)0{N( zqPuk?CeWztJ}UIAEjT}HX+*hN8dV-#iPYQ>kX$fWqhPa6<5^p9n3chQeV#ZC=erhK zvSyv${CPiAlvAaL;z?t;KDpxS|u7ql?@6>pg@_!1p+*UGJ>yzAe zYnME@%hW`tve^F>n6cmMC9?k;*CBkRDWd%Ej0Z~iE~6{u6l^EE<)+;o4i}M6V%+p) zUN?3cn%uS~e>nZdG%>;29TTLfDwn1TQZQ!|6l$5pH?th|vhj<2eWjyclf3*R|pYW)9vrIS7Vh}>#k6eVRH=|rC_Lo(v+Knt`pn#YBIIu;>E;I+ z8S&LXj*EHl@j&YM!awVELMqW=*!Wda%|zaNo0FTO$EXA#^X1i2ThQxAqDwomB47K7 zRm@)?yB8VxM@}JLlk_0v=xQb;bv0eRg&-r(Bo6k^oFjNMqvtT@h&8M*4&FV4-dujP zp*|JfIomqHd#2#MV~OCEnwrI^w%{5McpJL}`2E=-z|)DI)DEzeC$)PHnSS1dsMpel zd!wJ>e)D}t+}gdUc4bb9*C(A#%WyO+2MzbGc*gO!qU!zjeO1oz{7vzvTXIo*>hd7s z-(75j-c%F_GyWYtgF#%LEU~yWS$gP^^@KAz_972n1auY??x-YyOBCua@KWQb*69zRzZuwKW2!SHqvdGk zNpz`mSx`7E#Lb{)!VFd(7apM0oUc%Wm3`Gof;BO@7YT~c6KC0BTYgbdaOjp_DE~5p zZ&PgdKcq2Tx$j`zJujWszk zKg%Uk>zWviwyt348nUiaWgu~m=o=S|%zpF(#s1fVx;yu+tF|oI;*;mIX_8FqANn~4 z70#I5i}b%w%ltwc6~E%pS8b8iP+}<6?>~k=#wEy{L+pMvh7P*+&GcCMdL4RU9db-` z>Dh(VZ8`DR`P(D@3V#ocZ$!T4M`nDT^oF`!EB?*s(rLZgEa!(d{+9hM%dVoCan3lJ zIYelA5A9^E?FEh2?!RfkYTu{5FG>jP!p)uo*cKeD@w3C2E&S~f-^AZT;~V&!8UJ(Z z!4#JMn9N6$dDwYvmbJyQzHM3G;Jf91Nqe+Hu~s;=xTcAvViYCb(5w>gVl>#u>*zo8 zB#BqKvmCJy!aKkb%EcD`AA4^C9#xUGk0(GRKw>Ad7z8w6t6`G_0TVHrV2}Wc%jkwN78X{IID?v-J3?YksQu8XiyRWdKP zGslEyP72RFpb@PEtRiRi@?*IgH)HR_z8s+xLoYP#2-^|IqZc|R9Nb7F1D=N)GFI(1U|+25IhUf`%&)EeYtC@F3t9Q9z8I6??CV8 zI3KaV3ESBL$0H^e?8V(AEf9gnFQs+VT!k$0i{58CD}j2-=+m0 z;V-l>FogOSDOTCtQYK8QP@Y-rQd&+s$S%d*EOB_&JhMG03&Qw1hsGOUVT|90Na0(In5!R-YdN5O zr1E?j5|*6ntw5vb#L0L_Phk1^R_WBa)*Ou`g`FNKOlHeTrP8Nx4h05JFR#QN1ZYV7 zqWwLh-a-ci`?c~%PS(6elzbklp;2rI?ou*O5O+XwIM--5CumdImKJykFd%CpZt?r< zcmTz~Y%R{^jKNj#LTM~f41!A4b{`3ASwTiv;2LGA>=?Ebb5dh6M->mFCRQa`opj3( z*p*~q7f2=9vT?{6PJLmUi2vwRi;*7A z<6?14+Z~P-I?$6WA%xmrD^U}v1s_}wN)LgFz=$gtRgi)4=jY_9 zrwX4C#dcCKx!vNMu`z_h73sfKo5Sp~93>J)kS5M?1$mq0@?3<-^`potqH@XKe5lup zxoCQfQ8WHBm3B0~pqqBhU920}&k7PqP1VnbnCGxoj7a)pTJACvOO&ijz9fmSgsS#FWvsqhI`~B|Rz|E)nRiKC7XZuxE>0Do3PY%+g#TDvt)$P}W z3yzi`N&4A9UL7K&{7$~U{)~)>_1AY^{j1hrYyAjn{Xpa3+9=ouFk+Z9zj!kCFqbYD zkw~jake=B(#elT~V_HTvf*3N|ec$jdCslmx% z>CtK+26(ilIBy;ndgR7_J))w~oOnSY;T&E#GtfxSico@=Qbuqid`%EXS8zR{x52(LJ}Bqc%c#b_8L`-W ze(48w3OZHD zd^G5S{y^~HiY$=9*{P!9STQ7=0_kA!7BzbXIvQWgv$1g=r@6G?4;J8L@dNE0cjRX5 zo^Wk$$K5zS&ed^?3$A!>`#tXHP1x~=odV_jjsZLq1OTwgQ62l|F0skU7}_-Efb7pf zhwU<^f*0xH3zI6Qp_6>80T%j|Ndr~82Aiq}y6RP5p^7qoQLN_&i!j%X_ys4MI6rud zb@rQIc;>OZk2RgEp@PV;N&W2=Rxo~w)U4f9{1o<}^w7%0aiAZ8vjezIew*rnI-q%! zK0*bClETdJITRN?NmT>K{86IW)sE6!$$>3-QeJklx*KMLEsGPc3`Oe)6OzTI@*7{6 zAH-kl)YSs`E0`)9=UUC+0{+e93Yo*)Cc)XGOCnJCtzsNf%J0E-W4WXppV`xsJcUzX zu&cgBf0l8`QR?7x&sz*6M`F&ea_}3ws{=Cu zg7M!JHp@6HfF)Ys6_PYdhp4}ufDrZLxM9s-p3w7`TwMWb{8QiylA2k(_RO3dRp1UM z#SUy+0d8vSL2B$l)wWLBdXu&luY)*O>8R~^9N5NhB)wHcsq!ncc%{eGtx`f5auV3=O0Yg<{hlfW60Md^AEUC zPmIS{m+OlHqtOCf7EOb~XwvafQT-mw6G>fu7V7T0Z8==w$Syt+{&^ea0Pv-nGnF+1?{4(3i zd(K%*vP>WWj?$&t^%@TUG_72JPzNWSzj$SrY{x>3)UvzuMTAlo;JQ@8`P!9paXN*8 z2yI~ySmyc`H^xunXiq1*{Yde=RF=guqKmN-#Zk)Xo8r6Co58=`#32p(#{fUq?eg4> zF7UMCyHlbH(CXz`fQnRncgHA4$r_|^R5g0f_^t!kdp0RJC3_Wa!oM#(BX<^jh^R(U zGZHpr_u|orL=L=$r)VcP4+lTi;|pG>gV?G}O&6bK^$K%c@|FGTQaPPa%Q^ zqAB7?!vC>bs`~eFw$cKGm+*`Q=zc$o4Hl}vw=xON8C0#`8?t&u2QRd)f?YvO*)}0& z0e`$(?R_LTzXm>mdTBZ7v0mTWRqBz1eM!at8s$(CBm>|j5{Z= z4DDRep+gs$%>05L?O2iB3qi6|r6_G-IJ96;3=$_%p7mMl)OTI z=#2Ipaxe7$vy<+xyr^r0fA7ov4g6dENAj;pr{BcC9-f2IwOEMrTWa#~na=g_Fby@= zJUlPN!=Kl`N)flMe*;{%|JO@2FhoLl#dFQr#7a9bCAt0&r-vl zvX_9dPbyBB8e;$Bcy<=p?{Zx_d}{yQSi_I;XPZ0sbN{ac&0Qj=VjV1n#Q1w?C$?_u zhG-*+NKl{kGwfvf34!Jzo`$LCFVN4$q7F8HgO~qm{ucE?+eX(o8kI)dM$Iw0E5_Ho zu#nH!uG29XXkUD1{OB=EGTK@S&TsvmoielYGE_0cYzzOuzzkzlaV2I0iYuEG zd{|tG8L8sR_<}8%dZ^xF#lQG{psi3J9QoG}Ul~a*_?)@-Gxr{OKfZulZ5$=f82bZ8 z!0Nop$njg3;*Z+%mrv-L7t9bH(I4=2!Lv9v3{kGrm}BKAiE)*+?GnY>rxPKImBtv6 zF|G&o^Ks_6i_Z~kiAh@@7UN2{V_Z+q51&FHGd$~uud`y1`YK{>&&opFSgl$Z}>?+QldKDDlE7xTz8ok z`*1PvVf?LKJiho=Vau_TC~;J%bj*X-V4LepWe^f;MjcEpiS}g9MA2Nbg^6Epf+Hb2 z){&SMi{B*tCgC>)zbQD5M!fflpJOlXAo)rOxpT`;fcM8t-wUTdpUD3B#5k^cLp1R` z!97juI@S`nyfI_G9K&-6%=)$@^#m86_%pA;ZS~Nt6qU94Lv6kc5CN_~%d7Ec4g1#ufaGEBvQKG;;JQQw)sipSYpn3jD1I2; z;ud3~@zGN25r!NBjC;$>J-BL+Koo??k2Uq&b~+}5-}PcL7V+`C9&aA;u6JW4@^z0~j!6 zb=1)Xlej#?Erl3FJ3=F-CinTx??A}-avn!=~?9w#t} zB{RZm=bIXY67Xa`WrJ)zlXTl4<+xP+HOPo?5VUu!|B3*)nIMoKX&KTk0;Vr6RYMKa zHXNoQVfq^wdItFZk4?)@qO%EDDTx4szvXwh6#J%m^}*z@IW21@;h^D2V z4bl)>Il}mRxCcPKxlx4QFdRfCjnfQ>7E%L(82(O+Gk41dqUCHXs4;}nGBaBG)()Zoyhcrqv2IMcA6Ev!ysaH(2pkZ$21 z>}c8k426IP`KxKx*Em|@{Ctb@A8z-Yb<6j_-h{YAaT-z?!VWeJh(~{7L49P zh=;8e>tBha?cbyCL_pn#OV!XoH2~CuwV<9bP}-`uvWc3oJpyS2F4e23IEiWqq=B`N zh8iTY#FP2%O;+{(`Benceq5@t2B{H{8rDKejG$>Ykxct&5lK}HsXE(W#Qvqko>ifmKY?>sW?HRIr+%iT48HIa&BZcYfY+GW)~%!mXxcL#t)zt^L#t8gjTW1G$RV78JTYV#t^8qMb3Hqx>;G?PvL^EX_w|Jf(>$1FEEq!zU=O~|q82RII# z4&6YKFjqU@EXB6IXl{1LO~i5&bv_+z)cI*$%?qq*UI0oDjYBoN8sc;{|0k zsaU{}D_Ju|r5RSnFRE)^n&8bcezBrJC>EExvb02~);`@2}9kh3TXR z=*c|SrtIHOM^N?^F4a3+f8vjM6z`GchO*|Q>@L8NvM-0(%D^Jg?V6*;H3@1YiE3|% zTBM0evxrIq_?LI_>rFXm8Eqmcn=ioBh@p{`xk*_!O<8OtWqwF8%GG3tufS1OAuzxNLC+r5Bu-r(( zE+S#kAPidHjapxbmq{Ig*?zjI#|)Cz`W7~l_tl6hPQj&G3EBWsW3V2}X7`D@u%10a6EwSu_OgAo7XIu?ISN+d)!Ar=~lW;P9n z+!0*(9GB{O4e<4y5nM|>xUw;mO(+q&u2FQy9$Rhy=(YK=4Z8fin`IkN{-{ps@hZ33zh=c_3p7t$*9if*wyp#q41$4oa7{qdhA%Sd4AryNr(yp~+! zm|`NX#ecs83Fvp5JfU}a39#-pSSHGJU2hBP0gd%9gr!h_8|!Oaivz!(@v3cC2+|!y z>T8fpROf;hEhM)_Dix|uTw_r+om8Q5WfmZz=4zy5B30e3>&L?uP%AH1=j!@3&`8e; z(sCQ=F(Pq%vKR@}ueZkfzyquo3>NwYVwJpajha@Vt3d4X3c(s>WA!5zsk#IS^*z@= zAow^Q(;nou?q8O)z+?qC8O9c;r#TjuV-0oryqMNkPPF`+5}I7BN*IagG}bShuAmo? zlJ9`Uor<6|y8=Dj{Pt=~yAO9~MQtndB`(#ysEfcfpn>}IcD9mXT=4F8_EOyqknU3+ zvw=KcMi|@zT&l}0poRom6bTeC5nk5OlX<-jbnygD5oQb6;=AG!{H+34gr-J>8W;gZ z|8I#wYc6PUHriS4i25bqQoUed#Skkx0!s}xKstP~ZivOGD{%%<7^C{&QjN5LP9e~$ zQ4x%4Vt}Yop3Er%gsF-6!PgTAjnNI3dgHslNByzdVoy9&{~AaQ$V|c$$tC`++>0rg z1^v2WQbb#P7R!aTu3pnl^lR*Xwx3ujk!|rdT#J6)fP`A$7X9i(q!@!lu7R}qS6E1K z8YxDQ-n@!TAkt4C8>GWXsD2vhKrxV37e&xCVxon#wyn^#1uu9q3v8ryL}L4S4GGGZ zD=%=q0kOs!tTav4kpipz6ltujf|X)pZ6p@k&znf77d29UBAsK9Osn33sYK1GE*hy& z>bHNeRlhM7r*0vqZqrChD?7vf6>?H%xt-Iq#n3+m3ATTow}5$Hki7Hkyq7XB>Fb4r zN;LE_XQ|}8!Oq#!%GrfEzvgNRv|r{NDmi=DIrnWg;Z^FuG`M<$X6p@xAq55g012ZW9 z0*%CzY@kV9XIe;W&k&@}f>dB5olPXl{|qE3f3A9f{E0QzV3}Bv<0}iRNMm)|N2*e6 ztn+X!RGo>0dQl_wC(=0vi4)AA>XVh0CUwzBAMPd6{yeLG@8MdI)+3>A(@0T7+BZ?x zudPOU?PZIm&st0Uo)x5pHqv86lKue+)US=kT0R|E_ZqBr8f)?!7S;nAYo=hiY^+Jd zBG>OiLT$s!4shxYBK0*$y*1Lxr>y$9HPShPbm9uDe(fxz7DSq>k&=m2H9^UR}sV*UCf0r^eUSS^V4uW`D5muOx!TxRj=NGqvdwNUl6jdj$b>N`@E z1|*qjO~?GFBwSV^-%5-^0)6|D-FohoIXR1(g!!Tn$?W>S#z&f)0F0ou6yp4R9JJbU67GyZILT zI9o22ZZ4bfGQS!Bpw-X)nf=^5Tn&QpK6Rg#BC|FhP?HW1u;kwy z*CPL>NKpP*{h@l%orV)RPLEKlmtZ#|*@t3!-`+J!U9)j_^@b=$wY%VwP9fIV#}D6z zY>b4dUiS02u;;f%S(}hs+0VZn6?(r6#|z5A9qPyi3;*4)=Nn!&n=0|qZF%m=>>~BR z@8>P!3IuG>GBi>Ov`>^+$;*qJWJGii>QNT_sX`C&4%%(t_2wz70!mX^o@s-B;O zR^}a}De9#uS~JgTWo6BUqFkY<50MaGruTIzX=3Z|g@k$sD>hUKilf9vX^B;y0IOtv z+#ln;4HA3&ZHuE*a7l@cg2c}3WO2O2etvz}^C2%;9KS_B_hi17OU?+#QC9r=wT9!X zks!xMsSI7W?M0~DKSt}iId$FUR$JU&ewx(nAKS?7k%GyZJ%MYf*~3Vve`O1o<`HRx zLCVrdyO&#Bx35|3Kky;xh(<@#6jYU(kM%p7t+g+9h zY_pIy5oxGKI$Q{(t#|6$8UJ+d9TrVH6Qy=z1!VtX7jOtRo1gL-;ptCC{I>v986n@O%&wDov2Alk#UCknt;5RGIxJ zrR@KF&>DZs^N(vIzY3O@mb~0pZ9IDBVX|VObCY>gfnQFw<5B*H`mNpO(SgugX%FbP zlzDUzzuJJc>~7vVW*+gJawG|O^nU%8eBTaa@atdZt3X?-`oq%;Dg(>Dy zDt--xE6iKz=22GYt@q4ZF7qhQyoHX6Ce-Svp8EkE)l;|D-BFQUZ!$Mbi3b_kQSI9b znfYT{OhQN1?RJr0iew3`4?5bH!mqVH=uOJMMprfFQfgLaFFaE>U4pJkwV@{sLo*zP zMpl({y0$CY*E3pEbUgk6DFBVH<$d>&H+EE^1eYp9Fk=o~qwUaey`*G>LD2ErAvVI$ zCn6BsxKu|$3F^4aMgZ@kRC|L!iFqtCtsb3#> zon;d~ixWb8TS&-4f=ORhb9~$eXlf^%R8QtuI}^(hYW*zmSa0!(Vxq>1PxRpj#wU6; zV*lq+OphT(Tp@0_yk=J6IiQZ~fepxj+h%juKe$pTCCE z=$hXAqa=yu~59-5sCG#L6&!$f~8+yta*@uitUp}^UaPx**-Pj znV|7LLHn|}q5eWVfBaQgR)~F3{`g1Di>x-~pT`=q=Rqmwz8=Ps>-39xV~!FI#WcuXiU!{`iTv+x}0iC~db*RN8qq*m<}XLe4}& zC2FK+h*WBj+H0giA6iN~Un4!Skw}-=NdJRtL0X7}+IXSRRGf@O*S(1ZF=n}5je73v zAH|`9C*^fzfzOxx9c8s<4uAYhSAl36K6MEzE6c~TcoZG!ZnKcGHPSO1$jTowEeSu0Yia)vA%XUqY(A94Rx(W)F2X-rja(^0i-7kQcsN(Rb(MOr;*MPq#JCc zb`}!rt-kK50*mjjmauDq!YkWS8AkhZU@raH)>9qNZuA4E3W!LZ*>ph)evHJGgxM1Svb|= zdM}MN6QgA4e{ZXPlQ?`PRd*qw#uLfc@-#>Q+mfhfSZv)^ihsp=rDY2iPy5ge39%2l zE+33S`7hj{xpJYdOM}@~`70U;S3Z&QM_FJoyR7oxXZhb>08imLy0B=@F5Mlc{Tbb{ zcFAMLW6D##yFwR14-o#3K%oXL-zd@U8g`R#^5}V7>i)^_r-#g!%4x~*84CeQkDc^S zHGtZaefJ{rhJfSeMEHL<<5G>)yjGZ3bHNdC!K!TdE3jyERCfcU-BFJK(G5KH9x<}) z0#K>=i7$hJ$=VJ4!3)qzR2%#piu;mB1>{D|?Ayfu8u}+)VWYF(?X&db=7z%4JJ*T+ zOK~(gBXBMHaXk{$|L&Bk*<&$lJ-1%0QyUVn>EovNu~Sp_4~@az9*{H|TT-yM2OD^> z_5mlB_y)w5xiXp;_Mt#hxXA+>fGV(`UTt_owhQCb4s2J^UnsvGugM0z{zxU^+#o!7xs6_C$0uinQ-H(*uwOhf`WcbT`j7FZ^PoGINz0!6x1x^ zs-(hZzTCDM1KQ$CsbJJQ`gFIN3WWEo;v?k5;|^@%kP!Otoza^51NyMm2ZwF@u7a$x zz(g<#tA=-|d!9atX#5eS1^*`ajyW&W;MFPv?MK>CMsr7LDRb0lMl$}K`kK^#RE?%o zz&&DvlAu4ACln4)SL&O_jrRUHUo5n%1r(%F`hZ4-&5(#m9}pAL566nw^k#)AxF4N9 z04E_M(I9<5gThumS0mOh18+6e${BhoOhAs6u_I9evNS^0+F3MycMHFxg`XUT-@+(A z)i(};j0=O&@4Kw`aW1WLn1MKK%%XKrcs2`FZEBg@XxdG z&kVyq&ETVwY@A`#z5A}F@3+4%`aLL8_k0P^?(=K^h z<}xNF6sGwmw8)s$qOhZHLQ=-0Bx!YMk=LUtSD+pCOBM#lOZ#2|ocdaw^nXpl`5SQ8 zsK{^Q@3|=S_wo1f*a)&t%HJaHKMwOBME~lsu3a9hpB<`OM4`dQjD9)h@B@A*1OAh> zKX;&Sr1W0{OTTcGzR1V;C`!qnk-)z7c|)At;KDBb`xp+kugmF*AFdhg##okiZg6JC z72Isw4S@n!Qp_$M`lK^v7qK@N=_mW%5tZw2f%d^oyx2sYgEd(?0_Jw6T4&K}`Oe^G za(oAMt!_`@yK8gc77k6^Z5_jv*Vynha4w|mhO3oVHZY@$(@}aUu5-OkXP{RN@$>s~ zVVq^HQRBiPu8oZt??Grf$4Q4%4uwk>r!9d*$Kiy97SvlDH`Bt2i&%WW(8+@{any&~ z*#Nx`pL@e8d?x~l3} zLmXhRLTW74-6RFAm4XC67x;DPZ{JX*>eE}S-!^3>gRR!5&gY^)8M9#iUc{ z*HM3%ev&@Noaaw&f5kkr|1Cy7$I66}VAA=p!dE;hR(MgS?tsr%&oe+|o8rE@?{%!q zah|WPYA<&9xm`8va2I~0Qg3Jtx5Lg!_1fV;6Uz?MzuH&*v2Lq@v`9-lz_P@Bkg)Z= zW2UQiOWL%ICox<*(!TH`c1HI(WjW z>gA@Y!;OD&qgB^yYSy)O%c6hrfBg@+P;dX!Z-2PKP?LZ9_&?YG?EAQO`)-T^|G56A z4*wFLFAhcg_vMuKm` z?s6zpysxYQ!-^X7J&Vhy1)S`spx6Tk`2}68Xa+i}ap%2+VtgvEFY2`Iba&hz@tM zzm;rXg_Tx2De@hQ`a@!)Iq<_D3v;v?-}d)$Jp)eGQs=jpZu~r+eSlUDouJVDF-Q5G zV7=D_cO&8hQ}5Cpb~-w2oS^BBw!7=>qlQC)Nk(Wc@y5MEwnx({^j!=3pj)t&q%Xyy zZxrt>Fjrk9YzD&cvGkpoZe1sb~D?++dzinF8bvR$8+q9^z z76rj4rEd`brEsN``eLZmPzs!hb$Pqs8>L;GR=I7+4U7$|;vN4}?(*TGXMOBCwXGWS zJw#2As_Z3bS#U=PtFF`^#{UbhiQs<@iK(IUs@uPRHUI0Xe=_Ue5^DJ*zZfo)`8E^Y zJz+6HpZ_eZz*oW$?|G-b`rH2haOz+_bugd2w*B7-|DQ)1BHRpLAQea0B~ZOmr1_YW z9pMds-BOy-f$_Q-$+QsqNwy{QY8cA0`<69>hs9e5Obn37pWZPSF+k z*bKYB6om0wN& z$|3&)ev=9ZlaZ?TcKRyHWx2?th zU85rCf4VA+{w3f4FVMfCxzPW}#v1fL`U2?JD`CR}*A8!7V_|#Y5eXKuq_rD*XYGa5GkDvAfd4JsawGRFKzxc&T z;}>(^3s)$$>f8Td{GyF1D?gkQ|6%?7Kl^A|YmwjY zwvP|2`$Zb4p8xFRdiTFzANQ@Tt$&R{=6~Nl{@?nGuvJQS|H$=szjOV?vGSkO&YJ5l zPB~Dop8mJjU-UM_hx?DWeexgH&pYbvjkri9m5WrcNQjdI_WHozwvJ4%-_p}}KJh2@ zXN4^DRL}hEf7yQ=U)z6-(9h>i)_>RFSbd%NRd4>Bl8TE-G^`ZDIz93~1@X_1>s3{8 zIk{8_>xK9NW8d=qG)_`*3K#1~b)SBz)u-25ANsrd_o;8xwy#fp^dHvWEY48$borvn zT%Kbw6WhDi9Kb2b@&Eb+8^C=nqA?2)jTwZB&?Nb*+^(g@Hoy+Cre7htDIBurZ%?wm zQTTH?^aC+?u0ADatx-;viQi)xdIID3dOyfyj6^C_qrrN*MmKA9|Cd%sRo%1CFemsJ zsnF|HUy-))g550agp_|p-J`5rQ+_9zKWI08`WUPNh}ql{YgWJHrfx%(=7X6liwhAF zZ4rFmvNtr@DP%aXB<8$%*u2)pD<4dW~fdWq~$m8mxYvZYe#jmeK_Ya6$OruWtTh z(Z8tzK0RGt&_)>E-TElzaef(nwAr(!7JgnIX;b#pO(blYxl!;8)>lQ#HOsi*=}A zdBQsEAN{O$#nh9#Yt<=uKg&-dmkXbg^8d#2>!QCCOFK*Ed;M{_E`J>M@8>pgWo(I< zj_t#OLv`9Bm~Rs^{GZhCYLo(1gN~nU{u{dyvHCJA*3E5Qoc;d9<$d4nUFY_`qgwWi zn0?*wX&se*aaXNMV}9*t=D+Kze?9ZhSF+Ghg@48TGvy1(Q5i)BW|g?eSDK*cZwnvJ zr@v6wQ(Fs}|2$AfRX6OcRaGrtZA5-XzIOc*BLq60CH*Js2g9VEi>M&iKYmh2{l5C} z52;_1i25yHNx!Ln*^ply@vSS^KG841V`GcK+4!`h>UL8_tYE-GesxA&6^yB)f(uET zcGaGg#7@GEE~0)f?*Faz`{nvMFuSIH_GYQsL?z{in$O<7_N*8P|x0XDdEZozDd+3?4!f3R=WrJ;G>Aje=LZ*>e+wbC|!?UTj&Rrqhy)%;oL)rJ$gGFp8Msx z?S99Kso3T<6gRg`gxe7JzW-WmFWT<7w)~Kz(^|*1?;LVDI&E>RxUy~aTDiX+_tE?0 zraG?O$7g#S*M2e5asH=;&8H;d_w&MLQ<~s+t>eBm!M40nR(Q&kM*JG}A;%3{@c&xe zT!W{2JFspc=+azR;53*E&e(#sseVYR&-R%bOOtSvcC|bMr}hjq2idYPC^& zeT&o=JiS>w1ne5j_+jDzx3AG&m;d6uu8i*|c6a$2ZFc#4Z1!Z{Q#k=A2w*31qrGl# zqs_s1)tW0fyhqi7!<4eU?2}Y~kNuTg1xB*JS7k`5&Lq30g0$MkSJ_7FRi6PaTen-h zqjZ>6J;whm?J)kq&8S;C`wy&DqsMCckBQV@SvuC672}{q_A6t@LrPk?ivH6_C{%6^ zPSQ%vLm5CuigqDVVW862sk`^qLGdjWwJ9EFD9#e4o=p|}+4U>+>vvjt+P;u}AKp{1 ze#5Xt`d3c2kJi|qaMlbswZ8ad{Dga3Puo}{b^ANX`l!0-JA?QR(uV`n>=roKMwROC zWA(9r=$EWNtMUC{OMauMCaDx6gzM%?<2=Y|xA@}6p>bMD$&gar-w$?C(CW4KYe`C0 z6uY?9D&+s93e|P5|GNNONTGg3j;{u2(m0HvDH@#ga|EgL>!BsMh?=fRct%Xu<3`2B zKjiw{JeH4*6Zm8C$6B8?P{vn!O&XY_*Q9}Eo5VlL$7hzkdvF5Bw5%RcZ}MCbhLEy2 zE=L~h_*Tb;uptoLvp#Q~^6s+qo$pV5&#*6Gt#8T~PW_toS?oXS;9q{2XrWQ?-=oz0 z3&Ot&P5)=7MGbSK6{G*uW2R5vty{1`pD;5NUno3D|04YT6X*jn2MyqFEcqJ|U*S|4 zbrA()zyS(UFlg%n?Ls6914+h2z;_a+hkm(9wZ3sI#FKWs*%ogid;&Wou^E*VQ4!)` zYNajI6Co33!kyFr%^vF|BNRs|C-SH$fm(BYM>&NvIDWW%2-8u+Xv$q)b z23OnV7QQFSxiM7Ce};d_zlwjmH-{_2{|f(V6Ri4JRQ){vav+~N#y>YuX<+}@P|-f1 zeY>^oQ*&~4D=|TnT|4S&BWORX-w9_p_8-^P*$sdIg`}j_!lS+f=YB% z(ErF1R#e;VeMZz{sANCbP3nB=i?~d zA{L9IFZ#DDd4)yGZbZH^zIV*#e6On`_UL}^>UhGn=ESAB?Z5Bu@6pWVpAzlLI6kdW zT6yqv^zZM`ABu2AtIJ&(71O(BJ62q5{O62K69;0VHZC>Cf9+e@#g(lmHOlsU`bl>B z@q%rH2(ETzY@Ueoc;Z?WA5SibDL#Hl;i;?i8sYd$y7Y_+E|zQy8I`>2pYRZG#~&Oc zq}pQ@9qfOFQ7Pl*@@N4ueC@>WiT>2@KN$YEv6~JZ)u*qB5X3_)p@v5)J&g7rrfjHN zO@5jGP>+0ckD}#MPynG!xD5hvc@G(ZxY{3bMej{3FAFwwk>{JHcXq7k(IBh%L~KzT z{B2gy(m&%6^fRltIKVhVP)JZbAbOpC40E*r+qljK-&x`N_J!+<|8w+-O_aaz@xK-mO39 zcZYKT%dIY2Uw1V`f7rpNiYpcvY^;v7Z%659OV3A$p4YaV`i{uw5A#p|ysmCqf5tzp zaXydbpH8P(p*MCX2A;yqW0xh_1IFSsEblR#w+6;)uIm1*E^P>LRRz}8O=O6nfsuxn zI==9W>~|ggZ@)0oeR=TmF--Jj885$1Qq{oPwCVj}x}&YVKTPCzBlNRI{}-X3vyJ}= zg|s_FuyGV9iXG@(lgl&LPJ~9VFr=mN--q>rKf};tW+l z|782C-AnNRwf?c}-r-0jx_sIA87xC@p7i1EmyGidzhSW96qonLlwcE=XJd-`_H)u| z1sUMq^ak<4he(@r5QQ~P;Sm1Pzdsp&B|HL^4CgOc+t<6fZ=Kxzy0eb*rHhYIFL!e= zi;cBrZfBah|E-g-7~Ll`a?Mj(fZKM2)1mQ;qx43@??A2n?NYx^s9!?l_=W!c8Q74E z^JhB!BplNdBB~iE3BJP;lI;1#llWTJXm+k&xs#-694o+BHyRZ{k8Ia<&9dk2n88_uY4VI7SjOKiUHX1 zJL$hnTT0=Qh*ad)dpgs7SH^Oy8gBOB*dP7#s}rPuevLm|NI}z@g^Ae(|K#b>FxKiR z1aUc1NOAcvwbgDOzDtu2Yy}ubyEG^yEH<7 z2cWE9tG{V=+n)<)KM~1>gH)mJTcC^4G1rmM>{uAvIJIvz);Hh;k61(|<@0di0?UD8e`fdu zTbO(1xrfZi5{a11zkW2OHM420{! z)0}xzosVTIa^jQAXBaeVJ^8gxEnk5rFPxz7@|?3Aw<6AGcn1$;&|Z#2L@Pyr03+Nr zF3<6p>1VtAEjBq;o`#90Eh95p6(;zGY{Igs9$Q@gqDC353U=YhUVb7bYF!8-(sDRf zl%s=7xtz zgk5}scfuG~^_IHcytd|>tqUEhPtBWW6ylT213>+j32j+k`-lvok`W6~Z)0tjh!S7q z$bbZ_bXTPL{0Xl8s$RqMrQe^?*_E-!;dvBQL)a-c$KUU0w&z%M(I-e9mehxy>g0k7 zC=y0NlHWfAWKb`y#-Z+jokir{CeTesx3$_w}|D>LHX~H?Kj)+hE;5xdW z0Wnwm?_JR{e=@X3IM=8=n8}<&@({@YrB!GWGK$@!mPryB_NXT$d63D)NUE#xg4?@U zy@!i3%eNSbmY$F`Z<_No9;DKoDy0u$Q>QHdxSD+peGbP;}pKk4`~lW_|lK4uhwOTgqRwSNX+vNftrFT;7MBOXYXI z^J)2g-MI|ES@V`VSK-%PB-Ve}PKsHAV+e97xb&>V3jmN@xUD_)Z$yv{e*@pF$HoyAy; ztGk^N$pZgzDpr=xdfnLtgjJt_dB>M=^fPr6p4b;HpcxDvrftWp?vb?WfIjnSp_A(y zb+`uFnm@qbHY>;LUVJ#mJ7n=O*yhEs%|DLJ@t$eYCvxVU>+-k7?V;5<^E%u3%UKvI zUPi*vS7pHeRH=SR7`79!x?{;cR6yuvS><@grL z2r0+0@?j^xZwA}(xRim!bI#tl$np1_IW;Xxy>@J0bq@RL98}v4c)s9RftT?YI2cvsdUprP*mu^b2IHGGYtjtW zv)f)S!e=LKeq~|$_v3D(9AKt2T(o3qxZqP38!$>=1ayjNsr)Wkt=yDQf;a z?3^#}8uK)3J+0QdTu*sYZZ*y#KIHbEkofOrhyNo;d7uxwJBP>i^^Hn!`)5SEGpZ&| z<`6VC- z7YrXTa(qCAf0WDBm|N(8BCg2^EAP$${uVP)&aQ(fdDk&-&aNNbe&?=%a5$AG^RivC zj0TJ7cd5X6;$u}}`f8x}y@BX6Mshujch^8~Akd7@@PR(6H~)$3spEkou>2A17?=TG ze1bf6@M1;;FCy3=jEUsMxo-+Dz+YAM@Baondh9$IJFewoo1bGxJM?l?)q`LFJF#Q( zYd%SZR?km;u@mFBt*8@8_@${&#;>~nIkpY!%UtGV2wlEs1tY|l9V^Vs)Nj7*SfSqz zJb0|$K3MyY50I9K7${Z`!@A|c;a`>oEY1MkN$Zv@(?B7|@qL%SQFqnq?fv*@*}hky z3)POCHJ)Ql^%qN%UDdPF@p>?ZN|)@Nwq$&I7w5IuD!p>o>pPC;QuAN4IykilxeeNxb7* zL@IpqNQH6`A>u*9MSS3uOs3IBB{uTA6(TNT%Hp%9dqxc=i-n5#~nFQ)z0tL z6JjkNmLjr!KIZlu?^G}=;D(XdP<%acw14zCUQ|WMZWSEZ*%)_jkvsDRV8bltZyvat zSqFq=_01!&|H?-^nAU78-*pU*@L%~BFJtAhEO?dY_>G0;S-)Awi&5~jraCKj7(|u6 zV?FHTzp}zp*~G$W<2l~ddgM?aI>3cB7KtVA6vpXFGz)xzj#H=Gs4Ehpcwj%`x|+F; z74wF&=I=z$lSB}sIsHW4f}_3Z-vl1V`>F`0f@Yl((X~wo`0#-7rCN{T0^|73+H)u@ z{mwk$P#~Z85l*gwl^nQ~4-#uVh{gPXlaG$DZAO$IA83XLD1S*ysZ+8|c_(~)%*t!Z zJs=%{so68Nuv!K92_?0l)`O-f|8YL*C51Rj-$MPZf?U3N(kA@ZVO*Fu94iC!T^W0) zUG12?6qMQiD~29(OL${t+^HjH9q)Qc;RWhEDap`tM)*a1EgBjHI*@{e_;@iy7pkTQ z$4u3z=5gq*MV(q#Rg+~c1L6r=5^ivAEdYALsz1)@izsQ&Ikht08(z|NwMt41+=UF% zemuv!IZ8`#mF>HaEjc^mJ{Nu*_m0E8T;G7<1AQZKSlY8>W#D$)Q+L!ZE}8caRo1Lf z6SR*&BR<<%>sg0D5H3VWMh!(iloMn$)-gMPr{cd;J{7!J*#h#ZY~Qu;N=&4j+MpQC zs~`Pefi|+bEBxZ7@QWd}D2UPa;}&46UbUV!3k<*m;J2yu=(GU+N!6g%gBF3)`5ibkiyel!TWv2w?PeXeY8A3E8oZM0|pqsU)T*GnK+|h&bcuFyO)STj}V0Cev3h z#(V50Wzc{M(cACqTR_F>>w8FgB7e&n@+q?xPEJ(B@|)hd{smFUk&B6iF^_&(!%#E} ze1IgiG2b6!UM`s2|mb$stgHwZ3l)Kj5Q-ZgsUbXHf z1qb;DJTkJ(bG&s?YyW_^_?zgdy0IW`R#h?Jr#C9yS9m(*)2b%VgDuooM{Cxm86#@a zrOsN<9#$4@c=tfRxC{?2;eA+6mc7Blp6c}A_T1{X-SB6Jm*r->H@&^X!$EF8L`S-0 zd#aljBxHLw9@g`RxQ?E*4RX5-vV?z+e7t}-F_<+MBGFa2puRDO%ZC_%{F;#}M7s>v z6fN^{oKlWoZwn`6*a%9EzPV+we7bE2=5BE_p&M@I`tPG)vtNZth{}EqNeFp|N)aJr z3`kFUHy?S$s9;smebS$8Zje1sQn252Cfr`7uHrg2Mql=*Sgx$|?h*N`sj|LJE4Z&r z`s?eDBA8X=@Lzuz@n9EltwqKmEeAxYMGh9W3u|}zR z@$pWDnc7`xIFEXZQQa`r3$NOZv18Z;w13#EtiQSde*zOhtZu;P1TaSoDl61ttmZOq zR<}njH|q&tNT7!CnLNCuU95$0P2ggsqFlOIDg1?t#b3}d4P(v8F1T8B`E*^&JeByY zS=x3+3!?&m!5>fM*#%8Jm06C`VqDohn{Sm=IHS@r`%D(nu`(CS=Z@}mt*Jz?tI`#H zDA#lBwCRn~wg<87p#sxU(J%Lidi6A5sQinqU5~nGi+i56r=j6b0}mz#5j8e+nL7w1 z9Kjb{@t47^u?*bMDg;~d6>EIOR~gkB>suu*9K73-mypX--Kh}U-E;?yVJ9_Jy?9s) zfwlKY{%#}73YP^P>cOxl!AHX0qcW?z%~KXH%i-Pz0Bs3T-TrJy77;ADcP&)%ihOs* zTF2~z?DNmUn7`aH_amek(Dh#liEgvGwsxSuQ6hp1XW_B0jLPEjFQdY{yodk+ykVJm zw?jD8JgByneW^d&y9tkE7)RZgghB!>=)Lj$_~An50bXLv$J=K!ZQN_jCVcx~=O}gF zx4ZDU>8N)&W;%!ABO*EyC6Yu;M`Bh2Z}WYmlY{3Gp&VD7mG{p#zI)7#tr(xk<7|L= zjBzhH;YjEs=HeIu68ea>kReb)A2Ak5!mWjRjDCgb|1?Nj$HWzS&R#H{sfBG{`jU+fjt z2qyt|+=E6^U@2m8I_2jmSppQdZ(ccma;w+4ePyfU#v<~J^LJY&-sxu42B!$yv4F28 zbi?<{zvjr-sD}4m=J#a!Hj?ShT;92a!TtuEL%WhmiCP_1aafLm1rSj30# z1YsL&GQ^+T}a2P;?-^L#h$AF6#{MsVo>Uh!n! zx`AA30xl7jJi1r#y_MjNQe5)k-R0udMt)lgjFKXtNyW(T@@l&LaYcyPZ9NDTnCu<0 z6``&cTV4LaKW?PKMUCVNv6Q24v$Vz-%5GH{0(p0-IkKoEQd!*IU2ZHv%sAojUk)y@ zjg|ohqxeRxvS%GDMtb@wZvUX@;3Z&`%Ugv2Kl<;XX$ZxOT4^RTWXboa8DxI8w;Tet zl#U|K_8f!t-H2yyl;qCX=$QR6E^<-bjz?Y9*lbhfI{JxgO*JHXtiS)_2DzT9*l9_F ze2p69zCLcktrKsZP;~3Sj04&DkX~6ZK6I~dT6tgibB#p^!O7D9;oZit+SS3^8SY$) zau~_+x9gn>>kUJX?_>Ac6;T0_XjOu(jPJOi5v)w8EYA38gC2B%^3a2{>Z}r2>F3eA zxifY;9$p)G2;)8-wpDj=`5PP48Z`n*{_b1zadq`t_lV7yCY#>N;qjmtcq%QT`}(gx zIdrsicEjS&Y)*;BGH; z2q7T~Je6G?r4&)9W+uG#zGLnY-mf>rb-_#ft22M9hCol_T;$BS@Y?wE7=kJ4;Ll_1 zrRWULu^S6oihMGKmL`aj$9Rr)Elj9EP?_i0u)-TS;gF2QhQsk4QAFJSBFy$TIs^R! zd464Oo*z_?y@*dBofY+K*&Zk1BTFK*A6)r|-v2868hNBFGV%a^U@BgS6iLLDmQPeI z`EW8LMYySsFS9t;TsRjW#<{X}hIMTW>zb2wr)sWY1Qk_UUR#LZBRn*>Ge!8bWzsZP zM=X!oY)@t*%#C29%ipLqzb8AzF1{|oxgO!j=uE#$Mo6t#dZI49DP(pE@3r>U9;=|j*ajd1onuRvpn@JdMGJz?;)6FCXBKe-P)pH*p8mtB4 zxtLP_#7xG!+G8z4qvq&b)MYR1ul8&1oMU9uj@(Jo+(`s?;{ADy7-IYaCM9Vlj^0bk zQ!%~3>y)zKY-qTnG@A+nIv|xiSOk$BTL$!do8!-I@zgP=O7ehycn}HEX8nNYL{mpe zJf3(q9QK@ucFc)puISyC|A6-4nEg8MNy`OuI$~(L->whb$%|2+A7C=oxaV1=3eWK- zMO~qG(mp+vF-6HzzZk3x71BvJXZMmNKKYh37`9I|NTFPc%&A%A-moI^aw^KbK=u+=y)VFCNS5c_GSLbM=<~{O7u@Y%-<%M^>>uIS!DEnp)YW$DL)k}bA*8)kH;0v zz^88A3Dy29k9sPji{kxP9_DY1=Xf&KBl}%k$m7NO1TH#QqZI(n!qNyX*-0`S+ffI{ z;6IXMXkV(g5YOz@vd9K2eZu+U@>It-{5@c|%X0i#74R*Z6eS_`2vRXcry}(hQ;xZb z$O0Cg>B?9;v6yQ#KYQ)tYS^EB_)$CYhu+_*@+*Vrb&@=&R^zt}KHfaAOa1viI6FEW zz`1lVOm+4O*H_qc=$@)3jyYttr}BJ!NZp>*kPc1k$0moL(;p7cYW`gjhsa#&gr>#E zGaL_)fA+Vpb-(4Q>o- zmiEj@E9y_7MYDuhT|!O#8vR3&nzl{@I2-uPt174Q{B3#lYhorh)*Du>^X5`L7Q18ijjYM^U@;) z4*!e_Pj!=`#&~|BYhfZ6exb=oR~k5qmf>5*(WY+|hnLYuT_d()kCkKghio$=b}~Je zJ|gW;I^RuIg%WTYrtMy84Vwh-mCMEaZJU;0v)CJ;0)tXa$jjeRWo0h^5Kd^~52xry z4fMxZ<}(K|oQ!uSrcvKf5)NdObx{~hx%@q6-QGD0`|tK}e1ONY)kR!op4&#!WcMpu zNnU?{3s75uF_iYdqz$4#gcoIjGDpxz<&g+<;#xzse>N2r<)AjlnXkr9{h~UUAbY*4 zC`kHU#TX^({CZLeQ9JfXT@bUQ{b4$pal1AqZr2?4-r*l0R*d|w>dIwJL{9{|g{7Qd zAei(7+E*Jya;zY$w4ranKSPk{&y+8!19!7=f_KAVEL=x-v!@v4%2+ok-lZ3#8A40n zDTqZhX1_p z6|3)6i^O$Iw^bY%P;)a`PSgW+SXj*^bqXNz{TQ^{53*)1QR6)pefZ)o=jmLsIyuXpre; z>!4_Hst9?(etbaP+(#eAE=RnH>ja3GSXaQV)3xSPe9Z@*g)16O1NES`rno@m^ec=K zO|0;oXfg@4*e{Vc)M6q$WfD9QwJ z;vh)kl}*)}Psur!481`2xF9M8H)d5GCPFjtDaYByiy#c4?=9@9N3rROxMxAA31Dh~FDZz_YwIyw+cNT>2TDJ;wY+;vb z>;bKdd88*528EmK0fBdOe8sGuy;N`qmkOf(vRZHh+E#KwIsSGiXotV&6`T(BXd&%m zXhab%uaN7N(UVuGba{os0QXFhW3eh_z7YiQf6o7BeAoqX>G*JLEb24sTP{yxe30u z``~Pc{DaD7j*?lp1NcLLPjt+g82NmrqvR&sQQP-dR|j&yB(>=v;=pDhA$z3H@Yt%5 z@oy>-}C z9wYohxmjV?D4mwDYl2Qo*fkkx2JiTsb2PE?JKxDXj7M?R6~nH~$LJ$vl!H}DlXDPs zAbuUbRIv&KA`RcNH0vQStqds21VMM97&RqROmJjZ%v;w5a59 z4N)zntWAV`nNEwS%8_>a9ybf=9@Y!#7}Lgmii&jeOR6B{N+};B^NTqc9E(9GpsrC(MD&rs*>t*%@BEzQTNSPhZKy40=@+>?UNp5q-0 z&h;E0R=8h%8pNOut|Lw|)5aR#Ck(w4e8VB}$<=#M7TOT1R->u?4Nt6Bt#I8@jNyyE z^iSYezUX7I&&dTJijjUE)%MARRM;#PJ=TUYbp=@!u(z-qV}~Ns7!M$iG{%Egf^vk6 zmo(CiQ38HwjJ$0%M&@PvnU2Odc^ez!mCxIak%*=-GN08L`F^M|K1~EYUB&zWTULd} z*sPasjPkffW2_*6X^aPSS~TP!(o|@gVb6kd)QYf6owcdnVT$z?VUGgWiI25O&B4u8X9JgwMk+XK zJ?p(L+*`HQw+y$Iw~Vt^w-n2p9Ik<*qul60G5nmysp{oUKBE<(JdG7Wip`-q7;Z&c zGoSw<>a^SYX}Hx>DYMXf!qU~EPP>OqX4~!|`p@1WUp*w%P)hsnvWO=leov@m%kwiK zl~(Gm56N;o2{u(XTWMoEuCG8Wr${l5(?Rvc!(c4zhw2@f&9hcQl1jgX@p0v?jMwxn z92<()EXqQqu?=YY(2->h&nKuT&Mr9v?tN!*^1BvdK5!}znwb$-=9t67X%LZY9_=4g zQGC3~q;u7#4-A!--6Z{3&NW>&kZv=F0y z8NX#(fUaU&fKh>=Czl`F=Rw^*tKpuZed_l3oG2Kbdny{+C-v9bEtj!nMr%%7#+GFl z9~)NC6w`u*UxVX_Mq)o$35_Z&_B7`x`8(M$doi&&hT^pD(lA5`?u=qj4L!#SuR;E} zXwC)}BM%R3ABRQd6E9*^2Zwg-W?%=q`~5wixVAIYdK=@58~0(!7#`<(*X4RQo4HUi zG8|-a**V^HGcq*HIUH-^F?`49v_kcHfm|BGp(f^cnZoc>7tD*{yp3kJP?IYm-;Rek zZEP)CK?HoEa0QE3f~T{k3#(?WCkIgkCYU#uxk_Q4o`r-NqCx=@$*N!ge(i%gYV0D* z=8oqWgVP+ciKE6`M?M1qc#A~; zD5il`OdTco$5}yzBUWf+oCzvSMo{6X6&e|5f(nxnR4_Lg8aYz3&r$jpR2@@Rj*_3C zb~3&@76*O61*?wwb0B{#o=2RMK*(?P12VT**oBm9UR({^RC~&YN8$M6E(knEFp(Bs z$O|mQr4DzEQvbS*5i-LCL=SQ>D_el)Y2|^1Agr|fRWb_;*v$*%&+71Z@&kPZJ?Hi*G>luqAOO^(6WKy7LE8J zw;0Fq7l(WKBm=>U1p&?quIC)~O!+-px8e@=KgF(3I42L~V*#h4w|5C7+onS^*$v#0 zmml8@Y!1wa8qJ>WoQp;MlJiG?>ir9RzkC*BXPE(bJ_soBP2e~nFNga}2c=bZ!E3?u zCi^PehpIC2CTB39e^AUrKH{Sp?;Ph!KF6I*M6I%5xez20A+UcOo8*>5{k>7v<&%#8 z_tGTA#9#A{RkkDjd0)7eS0yC6T5{le@E4&{oIRC~$b0|-L!wZ7-UNC+x%7{E|>VR4_0XOY8XzqCva5BNGIpgjs`U@rXZfV`V$s&dS?e zd6IMx@~L$2Hr*;zGax4r8k!s2%+<=7FH)Ps8N-T07j7&L4d0j+{3eih$UBp(NEog% zZpRiutV+(DD$n)G9~^3NusBq5Fb&5eqJggstlXOlhvI@BCE?V3cpdF4rNdv0ductS zjFp&@c0SmO3(^LKu1dqd;mJNMn^f@NyL2<|Bs585e6-D?@=yDC(mPKvfb7+xc z)~}r%T!ewGWKIwAf2tu8B!!7@`n;dV8exN?reSld6Gw-_S#$k=!qvu)3v)~SH&)^# z6#X&nC&pr&GUddV^Dv%?T-un@*6(1b*UfK~5A}=jxeBO_cZpV;JKTShcg8iigB_a0 z!@hQo$Aht~GO;*x61EJa!FwiYB0p)#fz-R34q~(~ITyXB@LXSU=+eyM&}~@|&lsj` z&Eyhx;HGc!$en!Ts&mm^Z&hYs{Awl1sm&sUovsZ9Q_iLNxdN3p+&`wmW|Zg`mb$K$ zWuUCGgZsJut_o^a7lcMqI3&0rG`R$AHHLefro+Z5{}oZ_7zA3~a`+#cvE_Cee2=6G zcCw0rd>2k&Fh1o6LfCmS0;Xah_`RSQM<@*r_45rzhVwswhT-DmNRLsX8x&o1!e|`k z#`Lovh6T&UKheJ&DhBL5yf1n`(7+Pt1ET6Ylxi4X#dj&avNH4MN>xjAL%T-E{>;&W z8&>%P9!@n3|M?RrH_pbx(3{J1$75=MSp@bXdJ|^3|!WJU{U9BIT68lw06x>U}k29Yl0FGWagBy|KC1q8lf%qT_9Z@KmOuE8Z zdWHzTfQydB8S|&x+~W-8jBdu~paeK;gwNq#Ze83DFQ9c{(fv2F#=VV`58n`Yt`3da3zap1? z5ei`wD@w)Ht0@YuD_HqK40!5vJ$IFS5eQ6%&An*i9_QEPWM7cP{E0H zp*wtqh*2cVEoG1WCcgkKD+N`@qxi9!jghV#R;X%qQE+tu*e^<6Srpt}u(BRVE!r1_ zgNn2cnW=%icc!p=wYaE2_Yh7=E5XYKkRP#{9Tt7}pd`B-F>f?xJ2|M9qg=jf%Mbiw zoU=(1gr538Kqhs$BqqN7&7-&K854Ze7j5slZZQq4?fW?!B*wpB??R{L<{zj}6}oaY zoM)o*%aewO_5~=pCPHDpN=0eqywm#`GYYN=o@2F^NK^a!lV}X3|)s9d#b~D#Gb~F z@Z?X_FZV~yC-VEse}U<&dn!h_7~g3>?fFADtNmOCT4_JU(7=Am74~z5+<#fk9_%Mp zS|8R#eh8no5T^4yH3;$(domBjT;`b0QXaJf)47gy!BmL}rPbsPdNPWx!N>J&2?&g- z)f}f*ldgf7%uXQBrRqmTE`mJ6V7lO%=v=l?59TzfNicpHO5%0U|;SO zJ6Vkf(FNxC@751<{nPkUYav;4#6r%u1z1SLBt9q%9x#_;Jfc}_0d+9@4FiR!=QLxD4VB^Ni@LbN}c_N4B+YsM5(%CzG z2l&OOF0lIeM3an$!qT)Ip^_en&R?iBAuf#DpJG^&q!jB4PJ?yW> z^^gpMFXrPT{TDMCdAFPq%(#blApL4wzgd}F*%9wI!P`jI-QL>kTN&vo`7mgK)!(d4 zsXXnF*Oz{F|BJEK+hgVJol$~*G($w*nNq1L(vIF4@+k6)yjO=)(cG|v*=a|&m{$1(pi zKCX2++(EQ{ae1<#iu@g29{do@@q|wNvhGZGA6EN#fRx3&e~uKPjebu1qE#6kaknb^ zAe#xT3MqDpHy(r+QH%Hg)Teut@&FMVF2woA?J?NIbwe(}XgaZPh|!-j}& z=LRicMV|J@pD%LL=cZpE=Xm?5^8G~Ro6r7}OaB5^86ii?7eYoKK#Pw;i;s~OAIBEI zku83c4&WI0u^)<_14M~VL)QVH#GB0GBbnZ%lreI_?}*O@-)P=hi1@~|V=0xT)wwtP zzTMcVx!2xY(HocRZm#Ho%MBAM&ZzHIU6p+E?^~gG^UW2RxRhU8(W<7tGe1>SG~uPn zH5XTpUiDi)o1FW8fm}bl;g`tu1-H(+rPUVF{k^+I z{m+a&Fb(@2#6FE&AhK^%nGOk#xvsKtbydps6=$G1QY%|d&Aoo&=rIUjO*_`8K9&C~ zv+&r&(Um9Ru`$m13a9XCdYSmor&24MPtC2UoH)Td7tUDE*EI<*zC{>+c?d~wKi9sP zA>)2Qqlo|V)A>IU|KQlq@eg!tmvfwOiWB@taE)mbHojp;4@Y`&)j8y_g)whI7~iH- z%3!ZUxHC(dFa1uZG)dm+bmeRay@HOPoO|ebU<1zmockOO=tND`d<5<(y+1kC`AYc9 z#Xbi7dy2oTjv`KUhP@t&LkBOY;j*wN5NuNKF&kz*Yr0qn2n-l!6$Lt7DB^R zmzIPFB-dcu+-<$#9pls`WGp({)B3-S!w?IeLFQ?2Ee=>!9pC+r&BWk9aF)?{#syR<}VX z<*p9S{4vfHb&5XLgI2*3Ff|D-W(}`ldqv}Mh@kknPR{LQTo>m)x$Sa&SdvwuvvwRK zhWl{4agew3yszNLq{NUnAT2_(|pEeYk8fW^c3 zsP3)iEjSwQ0~S&lc;O$yL>=&vK`dN2yU)P2gb}Hh0CgeO!(2XM(;}!v?!KX>j;XfAZkG?{B*ny#gmrl?3Y?y}hRZdK-k?xWY{7a)aI;R71U- zFIUSI#B)E&a_kh&5Bm@0C*C}MAX;Muk1dabZ+fe|IDBC%oPAd_t?&9dRP@vM?vF4s z#em@=vAZR)?hmLtfYrE-#Duu0{w2^D>6l^9zI- zd9N1#SmPYggA#c)3SOJVQ|PU|0+{?d*h|7-sICGYChk`AhbZ7_8_TkEIs6szwJ947 z@*>dMbM0|di1Gyo!rGODthGz2Zz(&5-!VIxy}={Xo$b^oXvh<2!rfVn>@~*t52S=T4qJCtyniYFd`4d zSRFor8V(I#_(!b$9zh@t#AHB$wcV7x5lu4ECQht;di>|1_KaX^!0>QK1_o0t~s8a%sFwxG-%; zsV&dq+*sUFIQ)0Q%f)mgUsl%{;wWY4xJ<~a^V{_>_1~TXB52 z(A>e+-R*jEXhMSficF5T$b*MDre_TjAPAC=goD0h1T2Z)4DH8jBJo0ul5lGAz)+{! zA)&%r=s3n=tk;&jY?!aWvqlim(BvfW#+FHm3*_T{bhBWf|E}JjmxZZUI z+3=wmTd+Dj)I1Qn7-A{L>%g#4p)($C5nPWLWAe)27S`UPl?MHKzEQsb5^fRPvGT*l zc%m*P+^Ko^A;trHZmADy>@W+G%3hs7Q09~0Bo5tq;bFPPeuw|tM?yEya$H~x^B;(X zMk1PvtfgZUE=D+hONEEaZWtJ_CLxRfR2klalLSM^kk&!7twB(qyOLT5ik~%?FiP^-lyhN{R)w zR0D#drDoDqmYKSt4XM}o-7IykE=!>)*iR!w=Sl_|I9GCo6O~I#0VgC=t`FOxca9$N zf+02s_a$9tlsk0?pVb|f5BH;P`LM|Ou-N&q!uhb#`LG8c(3+WeS6Ws{XdDbtFF&2s zG@1bPyA3!!6oVD~ufZGw>L87h;D;Q$YQLsW>x3Mw-woT#s%f-^1+4vI^$I3xV16KY zp{y>UW_A+{jN(^dK*|PF9EiwV1j}4+>)+1$;HL?tsNclYA6XpxrPZg|>M0~vPZ`lY zq=hH>dLJo9?!^|wIF(^W2Cz(|3szplG-u&wEbrkJWi|rUW|RanX%WgfL&02XfxjBx zMI9K8($jb2Z@5A^A6I(N9O39$r%^tTG>5sEapfQ%oVw;PF4D!a*lABZmYBD%{8=MN zT}gu(0*+LV>5mNyNL<IY`VDdVtDW_ z(?f$)#(|(5_GWW^1r?C&GZ;-{5Q4uj31h}aj!c&9y1O}S}L?$A*8)0l%?H8kA)w87z<8G0`g zy{yJh?9I%`%^JDc2~Up9#!U&*&&NF~Bhjg}B&j4%!^4%MX!I~evL05T=dLrV|Yg^s9s~g*mhjopQQ7}xA9cR-$Bk3%&7V2ojg(G z1M_!WYh(yv--W?-936AU(pT?viwg<9*+4Z42bbMi}op61~j+)ta1*fbg{9N80 z7&X5^l&ii=LGaMZeOU0siNxCq;E!Oz(`Oev3wy4`(I^}^c{p`yD`);%5Iq^EIJy26 zOnhL8HkzVO_1)QJkakw|2%Ht94egX&KbPG|x(zan@WdAYPTqz$Y8AlQ=@;(RQitn; zo`=w_eod`XEz$#>IE2hcU4_^na=|xn{L$>?#nV=xlQDOV`!ulxQovJ{U=9xPos<(O zX*kw=5U+6up**cnx4BfKDi)-h5r+loX7f>S&+76;Yl?zf3b3YJz(wVEb-gyDLy@j3 z7xjD_qRcLgI18~+n&N3I;U{99cfVslzVL=SLxIHK;>bI$m~%|JV1q-g*w04QU@7{; zf|VZu@ZF-|dkWYIhvJAsSk&`9EJdGM6g*I{@?)$a*B1r9FIag1jn}D9^bwpL9msos zN_Bs1kZ)ID_cG%+qwACFUn_*Uz{n3t9WiqZ8;-7@S|~fez)TL5u_uk%`l{+)utr zWZKt1%49+;@siAOw9WWEPLjjX^wT$2GDB;O$Px<1fdS^dGz*pzpKrzIf-HF(?E6rR z63I^<`5x_${0=Fu5=iWa?lB?;f^fKRs3 zJhV@HY7Tk~YFr@++O}D<5g&d~UKkz{phpnm+MCp{N^Y0qpS$QB>n{Y(P!w-(2s>bWl%NyS7^J}% z_)0?UVGHoFz~{CFrWFpvwU(fVV+o-3BeJ07(DdP~~5`@Z~@de@C`yd%z`rjT?y7Vt)T%OI-cjC~EYR_RpV?f4fot8}i34K*tjQ0{M6R z>?h^Fz2yH>{(OIJy!;_vHbIqd8P0`IGOcC1Wdq4WKR{o^GP*=>`Z-k9KNJ;r+$WX) z>p!ml1Fm+<-)cUTz7jJXzSSG5-yRbc25L6*tWOM{GTd{2&O`gQL4T!(;I=cIrr5#s z_4=ZpGme@z*ih%}Uns)~4(CdL$sKrZ%nIs{jF-IzC2pg-W3l69LjkFLIDbML<+G3I z`oDK+X%73>SY(6^qC^7TC8g&gKkTJ6$nq5&k&)yr!VV$6pk6|%;u7Z6*uc@wxNO0~ zp6g*#E4)j}QOh^4G(!ai%kaJe_=-gb3xWsfzaAGV{;8vs)rovJ#Qga16(Rw_rcbY%aDE zu3P64so0k*V`WE)z*Xb)7n^uT>WGW&B#A7j`cY~}jTd|2oTPY{6Ttd>tPhdJJN;QE z;7~%>5tZ@_ICNQZ1V)1f7W&R@(En)mY}bRiOEQ1K9>j=HU44w}^Sc6$eS5w^)l!uD ze=PpFdW5@g{Z#z(!=D-dbckvwf&Z`g=gW6;6lei8{r`)9zWWQ~p937lIzjyNu*QGh zVJDrse->Jd^V4cx5&w}Z0w0VHFbX%HSHzvm8pMAp&v%R&ELr85C84q`v~Nk?m06W| zot#ZAgp!StStT{Cs^_kn`jd4YE+|vi5FGCaT7}cp;I|**{+lgRt{RLi`@x}8OG2o1 zQW{W(-*I&yvN47sq&4tdV8@EN%3#-d@)>r~ ziLvBCaLs}d2MgF{o4bY~%R@mDTYSNhITlE=y$=igXvIkWUZ`48)6>42YZ61^r3Zu^{?Q1)Q~hz zqap0Jm^a(R>UEKcdTOIc3ilf7$JuBcG)e%DQWa+HE6k@KyNt;=%<#&oFqpI>P5ZkN z>{^~4(Ez;Iq94HEjY;qhRuhOHbEaODyhbMEpJ5t4=5%a$U*Okd?oT*ZN5+1^%1`jn zcLl-Yn5q|r{TI3(DG46HslZc$McyU;J_S?1qwezP;ag;`ekbSZ2qZy&k6`@XwOuFd zPz4c`hyWDPKZOjeqLdawBQU*N!x$H|2%?3qp#RjBLpOAQ_}9fwKfXRXKxq5C1PWk- zF-;#2u2iXVELU#SI6ap-h{Tcbr`XPd#vVJ(uYN_s0ybDPp z^g>WCScwib;ZDUvLjLy$hAQ5Nx)#3g(~g69hFA7i^}$dMCH*Uvlyni!1`M5|u-8C4 zsVmvibR;;}Jl`*|va<j8>qzb^D{Dk@17^x9w`*f*OBYL|MVU&F2;NO|GzS8kd_R zsVQ*7xTgUcyb6ILzFy!0)pOVuh~+kDJpwO*P#^dsE3h-5Fx;YXqD=_g9Pw*LoCO50 zKm+FLz_i*NZkF&a(X|K(s(k=$Lnqjz4n_vTda}Qws3&$*9Q1~7v04E6V@=oVYr<6y z?1~xSW3agz)#7s&KhxSsxQ%a~yI^oA;G+Pu28Z&cC$I-daI7eKeWcI1gJXQ#-WR9? z&uwH7%{p2LH9E12qMkT~T|u>hpu|;0!8f=WL$*lRkeh3Z#0NM5zP^%c<>6<-2Z}pus>t;bMB3=JOME43-vg>y`D-wZw7aQfLjK;~Y2M{=#-yh$T{qV*fQ%)+se-3|6(2XZf7`4lHv9hu2II|(TvBoEVo zaSS2*;%TdM0^xzlCESw2pE3LJGGd?wbJ!j7WlL2da-DtspofJ>b@ugx64HDjtIUTJ zkM4vf@nxRXyhc}Ds05htOcJh_SMuaMq@+L!|Qs& z+SqKuCI|R7bSv?kx-cI>d%#W@!rPUp24>Oxt8bhM#QRl_{fKfvS*RcO{Fob5Kgcod zpSUHke{zN7=JWoHUEZ1Ju(ctuRmZQ6lwuXbKvV>UFKgGIbg z7TrN^t&>|BxHT-x?!IInD z<64g1p}E>aW^Cp!I0_LKBV7S1E66?Mox$S{t$~7-!~B7p|JI{6Jmj6elC+1;<;p$v z%vr|0Uq8$861#3O{2M6LI4(1#$wbPs%xe)k}t*$@#s;~y;VYg0K4C+ zB(5`t`&P~8Gs=0Z|1&LXC{DyFCLjM7K>Jb;qON76>IkGUk2;$4E|F!Z1D z2tR>5*lJ;A(yZa+GA>F)i)z@0sbn^ zaIyoq?st&9=4qyAzc@r5wqxmX;=q^BfwHRQWM1~M*hvzH9cGq>f@nSvoh#l@jvS%bp8^0CPM6;4L@ z3Z5G#6mK2J5hRr};<=DUs54(6X{)BepuxVM)zFt7_p3NtMEjT3z?WA0H2GM9RiUUC zf>{R~3MO2I`423>-f*EG_NJ8RWngF&_rOB`u^z}>J>vtlseW*sRE=G8Nflm*ZcMO6 zJVmAo$i)yrRaR;r&;Os#(* zDtsB=7r5R(_Ipj?VYU{Bco`2cKIphG-KMZTtm6ZGsDM28vK$KulURl#eJJjBqz^Sp zu5EPV)8pU=YpXdk@VW6B-mOk6w|SDc2_FD*2}2P4xd zG%*96HxmiFna8o;h7ZvWV7`9ac=+$d49w*Z3Z}lxoQO^Xg5%%y@lz&0Wef^m_%60o zq)qGlyOC_!W`lxPy_;6YWFgc4viFYHT`zNP-Cm;gBKe+TVG_PNC|Dm{Ak2~!saRaaaU;P^g~3|9Uvp`6O#rFVG3OVt z4s-)hWqO@}T$$9ySftp(GV12)*n94h&|ipA1UNjn52J{W7J!O8KXf+EPr6h4XBPTr zs2GI%f>>H$_wekw1gxPweIPqi(>%9gh4+Vw-+2oA$;tGePjUQb zOCNexR=t-dOUPwW{p4pzz1U!Nl4TBv^9K3ew#fe0g4~1N8B_Tr4yvfcw-q-a!vLN3 z0y@YsgjQHWN0G);(8)pPVYa$YwXQ+Lhu=Il6rm((H zMrO@D;#z=)SwhIGCipE^l6Myb4`X2<-0LDI5Aqx6Gg6K{MAuGH7epwTNV6p?yjChB*}fYN+bwQQu73lTzmw?zQZO)ef;RD0 zkHDgAvg)6La>MxA1q9HLX1r(F7Oy)UqoUYf#-H|R@M0btdFuZ8VlfXnOcwEe z*b@rE-D&(g7&TOx$vGasnBI6=-;I}Ym_7}@SEP4heh-UvkQVEp8AOK+`!jKtC>LL_ zKhkp%D|=v<`cA0K?j1mikj%3%{})39Z>^sgBFL9sJQ}(@a^3(uPX@N&`iT9|qrm8x zjUJVQ_v4JbUF|R2KiPeFLjSRqkdKYh)_+{Z{1Wh3PMLx>U=lcsa8)#!u#<|(LN53p zM*flCj;hhMw!ekD zI5cZo-s9!B-cCRd7%rgB{Tzh8kxwI%c{Hu*%~=GKcXy0{FiH}k!p50 zW3dTzu+Oj3`N9rbSlKf6>s+c(KD;R?o8*i#O&XqOAk-fphUAzt@r&q#4Kwam@ORMB zxLj3T_qGWm*Wpb?^-X%>{lE4M(jQ5!+kqE`k-D@7rbqOvZh2IeF&)zuRKBvb(?Gs- zz9BwF9P5WKd-DCg*mUwU(%<^P zTR&m?+xDf=^fw%`=cKSh;`Fip1`5%mvFZ!Y6cz?}d|{Xbw))5F1y;I-c81JBpvn5eVWNhCM%Ao|D8ww%Xpn0|6Ksp~wTl zOEH7K6vr7%5g7O+jTqB<-?Wqz6S_cHBnb_}J^TjoOeAC@EWvnpaX23nIj1K0U)Z{X zUPliGEr%v-96)><{m5rV%Ui@S>PcmHAn1*!it`TNmWQKT@&^X5+K@IdShB%~S7>jT z*7s1cSn`3v)D89bnHfm;sGkkXc2z&M-#T2$_O2tQ2{PJh2$}}}Cd+Au`x3PS&rgZ2 zpAFOaD3`q$AC+ii*k0j+X5)Tw?Q5_$Nj!CdF`l)B{s9{5WE>Ht{xD?6Qtr&dF-2#e zJ+`J2^Hl8cjeZ%jnR1wU@g~z0EP%7zhMBbnXcZ8QtVB#d+~)6v6O-g^bO*ivLSF7F z?3U>S3CzZA(LK{ynfyVpTXumz(nOa)M3f#@jv- zC`yk}2u2@fmH7KhOVEX9vp}VeZ)1S0Kc~3zXhiT0#2ub4WST>BA_QO^f;t@F0^(v+ zA6fev96}0Sep(WT@F?TmdSV6V`AL z)<*ij`U_i4>zh0P3SU#%v?SP~Ro&%`I_4B0>R2LCN6tXe z2mw}ufQ)C}Hwg6{yn$xI2@=R|O35n3e8GHm%O`k8&r|)`i83f9nXCjM*EauJK0c`) z(PrI;Zn`1Mgn@~0-}~`}>BwRO&8i!Nu4Mjxd=&t-D`K+bo6 zr#R^M*Ka!U`1k~MDb_y^dsdF^p0u3t@Sd-m%PJ^ZxU?8uN-6YgbgHbEkm9rye29 zosUiH+oFgKg#E~#lU_orv_LB~!v`}@ayvLU@N^Bcwj(s5fWElMhxy-Glust*lc~wo zuJh^7w&&BIZqKLh>|Iiosqvls+{u|Zz*>%*cc1X7kd#M*SjfEjf|>Swyz zr=lUgFOYXqZ@!XD$d9olo1!^iX+J%OH!qaB!@J)hSKtyS2p)938dx@N=0CC zb%PE2LjTPT>8I=AYTp9nzQXB+WPjym;(Lc?|_A#;@-+&RJ@0N!2N&63uYyUpB{m--Qf0lP?Ro2+N$yt?Mpb4i!6Hdij z4VF}$hEJzOwDQI0PD~;4BQk%IKJQG4P&eo!gLHj3FOXJQ9taJB`~sPkV_otK2eM$6 z(XZA~jwc}~i98H!r-AsqOC|fiTiAn+LN(fCW;`7fM*pv&PXe$nq9E~Ys0d}-FM5hB~De&hH)5}P;B7ZVMM z)9KO}^6ICP6t=&2=9g+e;o~`LG_=uTe`kE;oniPj^K0ljd6&Rab5gvJcf+0shs&f` zHem(A>976$yrlXm`bNBP`YU0SZqb)%h12hvjne349{FMVe=sessUPM%x|@#{%9b8f z^VKUToxeI$!lv{t?mGZMUFf?TVgt}Fn)9V@y-tB7qQ0bMwk(fW(_j;tdevvo=3^FMY_V`^9I3 z_d6f#1>hXZ65Awtkq6}@Y%$ZN3eQujlXU=cafRA zC3u5RjpMd5#UmpS))!rI{;!-SB=coY5w;)KPSci_clY6A+0va4C__qLJ7qPw2-FyDPR7F>7Z+|e-nEXG zN8$Lhjhsf!CkIXzJs8CM-Oc2GynEa%!9SQ9Z=Lkw`+q<$zBp+oZ+&Ov)(qat!7Vha zNo#jcq7uN<;O?HC6*Z; zeJ9#r6&HSHD*Qv}53;H!i27u#L!x98?~>L?qg>}*dRHo9D*dru)nZ+dcWF};E=N+{ z?RW#$Rouk^4dD6!F}OZ}wNxk71u0m320Ki~__O)mmL{^T=*&7E_1UTzZz#X3rS3L5 zbA3&Hqrt)Tc$-P34_~C*g#_9Xzpv!X4fTyng4S+bHUJOa;*&%fa-HPB3m zoQsYkc?dN5x?ZJ@rhaZP;>H#kKga>Ix`g#58*1wQQeI#p>DALj$`yKrKG3=2(>gUa zXc(lI?4fcTq;ecIee$SaIyKg>JyR~i#9=#@@L>(xjYSm$1L(8-()7EF(+S=|mzKw& z@nf8%NAJ?sfzbJ5YsOAHnqRSYtj-lHknxH-hHz>=D;|G&u7mG+4Y;%-Wr48GNxu|C z5N-%IAfu}ZOHii<8mVG3zJWW?u6pue+*`v*AIZ+eR4+ad>0lWm#d zByV`-A{UnI2UH(T{hbdh%>L@5DHW%nRMDaSp76w@c=1Q_?cSQ|qfINCR^uh)Gj0b0 zI`k8Lm2z~r690f2b8I}P^*(io0zMqu_iOgrQS1WaI598h#2iD9wTt2)l>~R2e(2DA z|0K?-Us{6g$KbuBj%Q%VC%M;jT}_=@Y5D;@TUz^2_epdCoBEL*(T^=UgqB(T5Iuo@ zsJ_U`Y3DDWQ2jU<-##6G<+RTnO>D*ccc~xCCaHeVy5vwl_*-+TB*yR#Sd-e=4zIFW zJ_iM%R$yM>oJ$HbE)hB#)}xZpA~jIbKcDXq;hBG-iaM7{!beRHP{P4jZDP+A*ndC` zfDrSs1Rxo0Ip}|tX=eHuPN-q^=_Q9fTiI$n(ovYB-YGze|qX%?Cdq}H9rrj<|a z<&%}z)HM|3YSi4BTnh!=qvDL!lO0IG2Eo!){3~l*kegZg#@Hel;EW;|N^k!3NfuwVgFc2jR&}CjMJ6GEWpvYq+i@TzkHR!N^wCOP2hm-G0cWipZq@RTE z@l^`HDx_7ft#8D4)xgFgWlBv1tfq#xW*pD={;d{td8eNOCJUSD`~T`%vqeA|^uM{I z|4m}`KNF9recVFDpSpjX)qf_C(mu)+b(F(CHu|UPf0BF`V;?*Aa#U}Qo;DZuOu2yi zk0o~6N0NbVuNisfRMACo>gMX>u#b3Q!1J1;7ovSErn8#Fr8S&0Uh%38sa4RKq05CH zFdyGF=mB%jbI9;KlBYeOoIQY#n(ngPj~}a<6waouA;S_&5%T20X;thhmOS3!xHLV_ zN)t;n5i_|6Uq;L%vJLcTxoX^1OKBr;Vb9`RrDmL%K9fAIq215w=&N0*&2uvX7Z>Eo&?^c1dN^}Hy*^qpq`x6K>U02sN+Wt)=?H`@x6bC;lp1R+c z0b=j&)FwGe^`JFAK@Vzho8#mxUZDqi^^Cg&fwvZ*sORhO??=&4K+EM>IF{-2kDQnE zsuy3wZuG^Yrs}D8j*qQ{!r(@C+~8?r@_0DC_f5T$Ud_a_=2Cqqg%34}edvr!@labn z)I%Ri_eHq2WecuH6J}GH2L_@{jm>yvj7jJ;USUl za(yt158e{{;E^qOka948)`#->(7@P-KHZOpIL$S;>O<9h==9i!e&dMDl;}fA$#^I! z_Mv5;IW?VOA4sHZPcDV7S9HwhgfD#euwHIPsr zU!RDpAp+HsQezE(s)>k^H_Qeml7u}2h}F+x1q5q!EL+zp*6#CwH7Oz1-m}3L*4L!X zScjW2md$7d+lfUgv$a$i%NMW)jO8lWtpsb45Ui45ghHacK=~|RS~hJJ>aBCNuTV>2 zsB)HJQn`FA-d_m~JJ+dVj%sB@!=_8wJcsNEGhw8XnJX1|P9fKW-xXHHc9Au1f?p zRG^Sbi*-naLVkeLjd;gw0F!Kgg7vdtSps%xEZFG^w!0_WKOxxOvs~@ZI^3MGY(^{C z&M(>iLzJ^j0c(LFpNegTXqE_Pw-T&HLa<7Lsj9ICHx$d}8^7>%3!!ebP(FdWFqW^d zLNzAT-{}I!S%zj&DAwSHV%dZgDiu&NejFRDoTUj|3yy+O&aPItzvKY!+=Orsb&F^= zYhd;v_Ef>}VJid5h%YJLSLej2_RTN!v-WM*wW{C4oQmeCSY7%}F`F&OhcNe)DX~d} z3VVKi2=cnXGI01Lx8>F+(x>c_rr8E`b1RVI<+bz7NYk(ex4c+3BbhxD_PqTCpx!D` z_=Aa{9(-P)ZX#6UgiyB#l;}5W0F+C=dB=Rtq>r%YdV*bJ!Hj_Y-s*wnt4P6q=mD?? zu1UmK3c(!v#yZ@bv23O)*wKRk`+AUawnxBxR=+J+nu6U&u@I~{ zdN$yOC4^gkMnu0^gIm8@#`>4yWuOXnoGQ`G^o7ql`h5)kC++t{ry|Tf_>4=xSvFsu z0{wpaGHr%+gbI6pdjRqpF;MTV5C*cX9_SP4f88$f`ldS=xR0K0oIN<&HPSS!A&QF# zJIZD<^IO86uRaIVfntSPCQy$3wootqOQ1r8>Y5PhUV#$*W(|OH={N6~mJ0R^cQInP4yeHW6Q^63o$W*5T%iW%GAP6r6P+SQ`trNWkcSy1=p(>|bXA ztRx}W3#Uhf$Qs;GESvKc>Y2{~^>{#qIA5ST#zOsPu?Vq0p+2A+8rNO}qfo5D4aKr~ z<7DBg5Kub5vT*kcTm#M?QMh-y0d8VKxLy8;ezOL*ezT1Dx8n6e6)ye${uxKVJEB_Z z_aB{#=4czb^qXyJPD18}*L~Zqhk4*pkt6#j?3vq2BrwQ0t47uW2eG#a=yM3e{4-pLHriutO?xW_Spnplr@V!iM?W`lMxiBJBAa){D%8g(|O7+^bEx z$jVEfNPlm$$m@JEuxUgh1}=!=vIe)jST@UYSH6JtjOA;gf?Z9pBUdKk>l%VN`pr7roUv>^ zVCD$k-$by>ELg69HBD+Hjb%9-r(j>44zM{1!M;8vqTj5+4aKs#U7-$q0;o^>DPK7P z)qt;bg_=pIE(xJ#N1<4Q8;WJqT%o1|O7wfOh07K=E(lW%EoZwQmo{rhxM%76#_4xQ z2X3yPHMsSgWt-m;_Eh*|^n2?@N54m+TI%=alOrM$aF_jN*<6a`4b#&4+F67GnbzAm z@T8FG1BPjC>${uvIqfUYyJ}?FB%?;qXWiUPRvGq;--jl+zCfG6hkLb2j)~DH(jR|I zz#0Jz@n`eU6^X=>8s&zSxLbi`GlQup$Y1^#Xh-rDEiDn+nni*(?=-NMlMw2G&Jn?} z1~(MTrh`KLiBR`gs3d{vXB*oxcB?{lBh+h`C*rDyKuLUrH2^9)KjsbdG*d~!o->Gb zs>M3onnG-uqDb&6$fSQ^R>eG%E z3X7fs6%EC(Y(ffEh#FiPz7XSq$w7teDvvo;%<&7XOR-rt*%|06A6k!d4?)77xgUb` zdoNNcZO6UZq%tcdeIkAHnGb;r48F=Ovi?vv=8nCumv6>U> zAM~T+dXZPKpdUzy5-eXtKlF}yTEVVAIYzmw{s+o^DXOG$ug{$5G=<32rQ9r=L9L+N zjjbcSh%jN#(mf#l**+?$`M6h`7^ z_VS~GRtYrYO9(Y73dI`SP%N9HK4I)OLQSwxvjoZsGg_#r3e}8I3mMdnlVMANlJS8x z04h2@@P@fZv6>Jo#bQ+pR_|E0PFJi)Isq#$A=aa9Cr0f9>u@v1vgx8=5AFuoygZd* zm4G=>M$6dYzl#ie66{TS&~c3QCYZ+0Sp&TsjSJ89vuw6`MTYlwjMeLP(Cf*lka~Tn zjjdviUtnE&&9b=-*%zjVb)d@$f?byHf%KiZO8Pk5t4*r1a?&T#JJ$;7w*%O;N=W)0 zQC!yGmJ-Y67_&am{|R-Ag&LIz>Vo+K)tpfOV2n6UN?w7I@qsk}D$@UP*b>3+QLrWi zOR->O0#+Hz*T;Voutz$u{S$&cnlUlj{;b2z8Ox@Nf<5>y+y7T8#8LrkW#fxhh>H}g zC&AvNhZ)CNZ-VLgz#808ESn|iBE)kD)y+Z$1nS0Ez6LAQ+V+4Noe*mMNf9X4;D%z^ z3{t2yyX^R|{CwpsU*H;WcCx}A+znNZ_LJbCxkav=G*w&x}#+|NPbQ z-ycG?)bG|#MOYt_ilXyVmd&4#U15e;$2yl!ggwW1LS9FED+4*WSDVz;%1fU}@4H6y z;LkueJrgqUVC#ua)364&yjV6JmHxSey4ONw3lvwT>0()^5nu^4okgg%4BE!Y>KuU* z{bmh-a_Kkkn5UUS0{@3#r&_Qq0qYVA=25U$+5zm!gkY;$O^oU{>u__%vMEromv#W` zg8r)DUo0}BsqwS9WbDnaRCUEUz;eL2XIQt#pS|@~?9ED>Igme5K zmZ9Iw`hfidp1H+hB?(s3Sgg&8)tp%WpmQB3MXz9q|HB$EN<{Pn89caSo>s8y+r)IH zQ7_Z~L6zeFcqgJMkZLwp6_b0dFv>{CzRe@kk#BIiUEiYKBK|K`_MMJzoCnPSh1mmA zmv;ac*Z?-%dgF&%fv~V=M(SBMzBKtVLh z4*Zr7+{1ng+*g4&K=7uH&Le=CHifH?*J*u+MS)qB8<=IYrHKHSG&&3ZpT*omOqChO zWh=8($c%BqwWu00gBV)tw-K4qvv$dhV}wg)j^Axb-~52c>?D%j!;&5=v%jQAWJZeI zq_b=?mGo9WK*i_esJOOU(w%k&v5;L`$SxC2c`~k9kYQK14F9Eldv*p0S;%-VWat6u zlp(Lv`nD88#Q$UcASCMl@rJplu?TU%VNjA{DcNW#f#Us21d#?pMDfz4=mR|>#BNf| z1X-eZ>2~IA#nf4oAoiaG>Y7;UQt=B?$LqAdH>;Y}i{KoZ=vvTU{{39TDw8;dQiv;I$L{f(wX_(7|#FDImT zLE{L$B*RTF%jR^Y_aX)&A2?HGTTOb^Lx8!|!9^Vf7z7qwhHwY+C(y?qNr%KWBN$fm6kOr~jLX{aI%>Y|8y<%}S%p`$@JzCASLHmN@9nO z`#lj^uzEKgESvU9$GHq%hO<=`<)kAC14Cns6)7WSP)NgA)-ugHFD_YZ()5Hswg3fB z(T$9gMcXI^tk_Kf%jPdXh$PCnQrz59FfN7yzfuq#TvH$>ABK7v`JH&pVOAba@23PM zgPSh1S|md&B>gn~D?kUQ2=P)Z6E{#tDzXHuZWi2HLHzICb0bfjmX`}~&F+`*u7 zoIE~EiO7Q>ZfaOIW0ab{q-Oi+Dv!W_NzGxKf6x@v>}TjUj+)D&)DXl?4a;WRF_FzP zTnZj&smcE@so8mt$mU{D!}Y_F2?<)091#z3+yt>~ij<(MUk5=i`c*u+Bq#~`A?ng# z7V(W{D*Pu6GBAw1LI%lfG;|qWasGD{k~O&@SvH%GiVW%*yX$Wua|E)12P&P|r3_OP zdKjT^w$QPvxh*NeEo*c`vuv(VXdg$)H%?P-vk9%No*z|B&b`zTj?7n!wA`x?G*o-;La&lAK7%km3QDbFV} z4_W^?3%|n7tV_A8mxs3ux`GEs^}>eo3T#)?!&{!2jTgJb9o~}16`PF7AX;{|xesrd z?q{_)&fo$b-ZJ#~t#Ge+cuQB(%fnkbdGh-Yj8ucY<4R5mlA4-g*xmbS59Jp<*KJbecA|6 zGZI35{{5|v|H>Kw74=_v!%R@DPhJDo-YjM7pkO)c=N9YhS;E#`#A=@q>uzE>{t4@F zGsdz>R>hbR=L)pr}8r(}UESo_JGj%g?ev>aP>$M zpz;zzJ$e)Zbo85bxWQO9T@>uWRREjUSw*;5!02sKIV@O}g7qZWn+yTR@ztAPYK~Zg z8;WJKe>!R{uQ zqaUopElHM5vVz?~uu2OyOTZdPar-opVk?3@$z6x$0>!6~m z!oAw0o>p}FMEa+Tgqw>|5&h3y48z7TROnDM$InXKvSZo2c2F3)h-i5htz6I?^JLNX zPZhMS-$8ce388j;V;RT7VFM_Z%?O3s@(Q3fv{%N)36x`=EYt%Ebt9oX385wkl*Er% z1GtKgzr0~SKOk&fPpoS!)+oVp?32ant5`oA1J(nK6~{?1g;VC|W9D#d)ka;&_?+WdQw;viz}qsJP@+EBp~`@|Z6<+4w_V>Wyy%ncw| zKMR&CU=8HBP{DQ|0obI3V0*ue=m%E%1kM*pDq-17Rj?5tIASyy`7w*i)MWgPRj4Z@ zJi=sX{1*F@QGr+U$F-K>phQm4##&&&`sO)A4SOan2R9XMRdm_7SDVCz7-H%Z=}Q-g z=zQen3C4iqM3>=^f~}LR70ndcIEk{Ew_gO;l2A=8RF*(F_QFEFJVl@u9(L9z`y|9$ za44b{tj3MUvN>Jx9(f6P542I%G6jz-b1v4#C|+;inT>Sw;#kXzLa_!n6wBtNdSUH6 zLiMmvK7snc`ZSicrV6$GTR>fx5Ng90yf%)lYl!98C)VL+jAiq|r^46>f?a08k_61jFR+Y_Q?M_-0oa^`U|%1M zG#6`dL$PdbSEvKa0QKof%GY7ERBcj|q{i;%@+j0yLUl<9H9HE$8r)DUo8}5N9Z;J8 zZs86JT(?*;J~COv*p6_|GK3o^#*R@q)<8JNKCz7Xd!0xzgRFTimJzH5Qku|Rc%jP;G zQro=*U^`kV*hT?!?1crJGf7&g5@5!c5Nc8siZ!^QST;vL5vbb;HNiry6R4rFeB~)r zGeRw7%s7s#mI5XHmo)$?+JAY&+@n}ch?QcoRtVN!Ybz{U?^Ov~k9-NNyo6Yfe&*`G zti#P1%chHhJ@^8^=J`~H%LFVhma!@Y>q)RT=}yKm)|+5D|6vVoD3;BVeImni2-VF( zEfy#z$;$H8SE1G(0@Ub)Q0wUS1L2(h%QF1)kA=12z%xTF)_lP_H&%)h6|4RWV9iX3b)cTCiGRTwfaUTp zc*jgouuq-?*xr`P*!=?5K#oNUb{E0gCj`5jU~1oSl%&8#{R@^&7X>?tIwHmbHUQ_7 zl&Z1#wa}}f7F&ViUr@g4U+nrwCV=pY!Rh0r&1Sm^C zP&g;6|K7|T|X zV*T(rupXd087ILMVmbZ=>u@v1vYD!2M;8O^>*mVXD15=7NefX)%h;aVgt7Yw);%HE zJQI;2Yj8ucY}zW+y@Z-=p~~|t9 z14`#V7Oqs_n%N_1EZq4DxAZf>4NC~O{F4Z0tbuTjePS8&AH{qA8L;+DGnHaMu(&MZ zVr}z8k>Vg??PCl!jZnG$Po$7fhJZ58SO zYKWM^EQk;OOP@h%49|^LA&uwqoLDwn-WSpAua9_6*1lNJIfuAmPYZI>#B!63d(rre zK9N4~FVar`gNhiR>BBg4TvILhIHDG;#4S6P&FMd6PJG5<{Z+B9Ce{%KWaHSnhFFe$VjXVAST-NLCyb3C*ku+h zO~9P^j0MY8urKNWHYXw2*B?fji#52RST?sS)PW}e^=V_}D@mXnhsHvEKS5+TlTcj} zLd}jsu?9C3%ci+PO$U_De=OW#bgEiRw(t{lV+;3Zg=Y z{O4VfVg_0BTC9VD<-}(!*13xHgaKCngjmn)r4+?Ju?Aqd>=W;p9t!r@;{bcqqjEF? z)zdAi~= z*Lt4x8pG542S!6xvJwy$AcKj3Eyq&7tY!_~v4X*k`db>Y~R+OU-(>x(J6%HwL z{H(#P6)c;tcM2~P2z7&n+9*(ty|7T7#tW1OP?mm1f8(T=8pUHZZakLF48{9l5%7*Q zQr6Z9-cYN77H`c>f;Vp;Sj$NW^}wD;-(n4JD3(nJh58er?y*oS1Ztl%=i<-8={G1; zH$uHe7dDQo9s(uyi8TN!YM*$+JiSB2cm}afwOGppi&+TN63doHv0nKYSXU;*TJ?TJ z|FBh4(IPQ5mQ8_zz4REsUPw_HE*3ESbAzqBQDk@t!S*v88^_pX1heZ~4WL+~*|uHy z8cL{v7HW||Mdl^^SvdVVh1&NKpr$5-`gC^$iZ!^Ki)C|@LVffPYoB%{D`)cs&N+_E zit&dVgtOlfu607V$x%4gKsd)fv5fs6?+9xZz%#d4tosEE|J+jCtXR#7^$*5=n zEQ!yshS>NF@0h0*><_3TVlt`$W488Flkw(zRyuQ4Q(RsKSvEIo1v5X4T8lfZpI$>q zoFBaqjQk@>g*FTKYLmEugK+vpdfh!Dw0@|A>rafv#<5c9(1FvlSue!q#B*6TuWb{l zT|}@v3sx;)j=iv8`>z+Ut$QK0@`O-3-i;^(Yj8ucY(^;5mIZ*?a2&5L#9^vc0@Z-8 z2Ndc?LU|HGO%N#QzpMdJ(f-RD=JTz>*7d}?#$uHVmSZa{TYVMlhYx@y@#Q!PrVz{V zFIb10F_z6#1v~mb0Q>p}Wo(>)Iq5PMZ2MS|;e7<_&IofH*t}g48L|d96w9WqLfuQK z*%oS)Kw%tm>&9Odsw<&Z(sPZ2>K27!4Q?ow%@c2n2>pQ4`HzJw6S$T(oNGBdU*VSS z0o<^JaLac_IAaZjbNVmK@Xr z24K1T3*Ipswg__r2-eSn1q7^t92Y9s?)L#UDIwV29TEMQ>t`Kq|AJ*RRl!Dp;E1un zwi2xWT%^Y0Z>&ORH6l-!f5Ebj&waF(;h@Bc=mxBpo=;S)|NI@?RD7qR%f-FgBqjtC zQ=dp*I$K2NBR5Yl^cyF-42Kk)p2%8V_JU=SDMRMbB4h8dz*wSNQFs-wzQreHZH z!(uJGM#OkEv5wH4jAQE>VmbDSb+{R0*?h237#l&b%Pg2rz#L__VB-|*i+2GwCn4C^ z+ak@y8r)DUo7)xYz$1YA^oa76CQv>bFtJb`g_=pIE(xJ#N1<4Q8;WJqT%o1|O6NZo zE=k}9$146KqeYDE2=^?5zj0#h7=>dEgmdf@%b5SXB~r{FYhH_W7&GHq&c@uDKT)xs z*afWq39+8pN-2te!5U)y3*Iq96zmMp8#Nh7G%=MIsL2>FRY*uzB*p6=%Y>$9B{)Gjb^IK`5N`M((La0emDAwSHV%Z%1k3iivNY9>r=xtQ3p2QLr3aVcB}`YGLb<9l(q8`2Ok31yl+&7>jca(78a~Z!Fm$xO?s1YV7&>Z^8?o4hGN+)c~fL~4xzeP zs1*X`v8KP%N843bp1z+kcmTt(+~haJpP<;kNxo#CQea z4lxiL$Jxjz9BUw)(|=ipfBc59HXL|nsKr_=SdM>Tu_h{3{X4*#nGoy1CbA~}1#1A7 z%fH|qGeN;Vc>rL0zf#5)37C^7Yr%>X>@I?}PY8B5!JPO7>u~!QESoM0b`*6)jRg`+ zOyGPq7QYsH#aIZe%fDb*{fk}eMLu6`i&_k0J?HsE#rhAq$*|nqk9*M>i9V5j#of|O zi&2Le#ISN)Gd;gCq7|&ctraYr-b%&O_XFymU#j401j?}&7V4^z0#yVkOFv_=ad?GM zJXYhzW7)j+x^R6F@$xL*EWvY(hQ&)&yscZoT6sdK9dAWgV-0R7mdyx-+VU4bZ8)T? zRST43Gc43UM+j>-63UYhYJxzCePRuOirOdMFrTjzwyr1EH5RK%upE#oMSUA z+(invbPM2yC4^i4p9p8HfpCs}Vj1%v#e04pSbOH6O0i6^8c4CVVhtkJJ_cgrSQ{!> z;$N_aSpR}|%;#%`xmwf_H5o`SF>R28%hM}bIOO7;+*(B>r;TOvlvc2IbJSYAWPRpR zJ|Fhf&jlm<4k#l5+>2TZeIotLyQGcoMjeP>bWF&~^fx17V;$~RV%d0k6PcYvsFoHgSD+kIVWDMqe0#s2# zsHfi`SJHo31E8Y)mp4og#d_>dzhO&b9=J|WoF^^xXc4Q?ow&E*R9)*k`2{xjt(OQ0Mj zw@~k0CNdmLsN{rDH%6gYgByxvQ@>ic8UrZlzauSNrocJo!ouCIaNoWKxIZ%98z;tN zuSYmz4TN+0FU!b}QoOJ318WEND{DT%a%_dgYOPoyVs%Z3b+2HFf594n!LnJoN+kIp>WCT(CYc!|#L`&2 zzs|~Lu3va``4=qf_&ix_nY$rsF=koMIf|TXB-oquUE{!d6HMnntidfq zmd%n^MTX}Ps+)ycCs6n&+HawX6l(1ofEt|;YW-^wDAwSHV%ZE*s5N0{{$rH06$0lR z?``3Bmx>s#AlxAaV&ga)8HHmFgmdf@%b5SXBCHJuo*8PfmI;p^eSWMtus7tU0Z@uXBCQxbu7#V=SkgSCROAi{}XjIi$c zVnT*Jp*dh=<|it&MZ$ z3D(|%%@;7oURbaC*<7Gd&xHW>^giY5et~Mh*Cd4+ zNT`n)gN@^Ah(JmIWetFe_FvvG8(tQ+1`w;C#i|i3$5vRjIxE)hb-5{O9XphN?R25mGVLQv2|#7Qtf z1C2xlWl;wd5H~-YKnp1;1nUXs*Z>V2wC-8yy7U1DLY`iKwjBdk#%teh~teyPEWqHKOz zD|U@0>Mo0_6qGYATGT^|s!!BH7Op-YHgr+c;6+h3aYfYwO6rRf`_-}v!8!GX#ht0R zKU4#EX&`R?`lMylK%8^^Qbv8Oyg4zL_Lyaj5tdV5Sk`M%@#4i~ZRT>X&$RZ!lKO%g z!1B}=++to?BYwP)u=6Zzq`+$Vahk&3+6>shK-h+L$@rKPrVej?LD>vd*p+Con=Fd3 zV+J0GWqt85Rp|W@vC&gsP}cgQg=*=DmN*$B&sOO}NKK>A@=BDKP1BZh)z@cQGZ#e-UKC~X)G9IU45Aua zRFR;ZoMBN1dWvaFHUZTw5cSGi^rGY^Y5>a3PuyVIDeJ}QU@iJW-B=*3TT;!MrmU;U zlJ#YuSzXC;@)LD<4Wn$9?0lSB_s}Hv0ugUPB1}}=T zxlvK?PXlV}=W17;MV;mikFO%)!x2Q)2}IrHqNu@(qHJnbidDma()o|YLBX{WFTaF3fZDzT$~D@_?ur@3?Vg7efD>`e2o72=)xXoQn3j@vpmi%5JwmWEtl z4avZ^>NMwREj=Rh&U>YgHmsNWVldZ~eQw*dHt9C%@b(gA(@op))>Ob&?^Um*3CyW4 zEbN}{0_zW$Il?tqA8MeBq6RODvibCNG5H3fuC=J6c+$T*&6$c=R5L{#TnE&&K-9Nu zXq8;Q)Bu!w{c?jDrL1qJfVJ;4HS375oLpg9f9)n_O(LsVAZrR)&h<+jUc)GxItrUW zShyG5Vd4=GBT*ai=u2UR@8Ho?e#nVAL_`d#C^#1UY}*1T^uzK z=Ul&(Q6Il1rga3*w70D7!g8L~vaIWs_3m3>jR<7Dzlx?weL)RidFl&pG1n@rx)QJr zd(^Nk0&^xK7S>u}w-R=YE3iJpZX?WDzn~6peL>mOQP`)@;U)__fMN3R;4SNmbEUm9 z84;|fzM!n*^V(O%KOg_q%@|v3<-Cs6MEbFZVa*Spsx_;`nhv&`^oYzW^wG1~&|xkP zv}Vp5$*7xuBeUVNq9gm568!lx;uPlzrX{yF9A#@+h01m!#vZc#Bs z^&;vkmUup^t`(HzCu#u7%}?B5wk;F0dXUxCvgQfvvQ)ELD{Jpsuw;GN$J)0d8Grcr zh0>Di7nIFVg?;)EU^{lHVY3B>f4n|4MdHKz2x}B*SUF)j|Dgu24=J0UUJ<)S6LptG z%@9=mRMa#@)hB8p*L;0;HFQzb;6+h3aYfYwO6NbHsAZLcbDjyeU3QM*{;&qPO9OH9 zUr$;_4a7P5i8AIt%A4~bOnc0-Duji9yk7kNH{!*M$=b|CU!Q61g(dX`HKf)T++w!< zS^W4Sba+xmUEJTo!>LRehyIdmu9%4C>T{J#}G<8~nKlDJYNxM`wb72=yjfpzdq6P@c$v+nLW*0#{zsku! zodbE#y_WPN)p&W7O>5;Xm;m0BJJhsN;W_!o@`fp|6L@Aj7j}K76}l*D@S-T2H7|>4 zml4&@q9THF@{dKGs;I4R05v=iwe3|}CHaRMfO7K>H<)XcRXrZ84IisnMZ$9aeu`y1 zf0elLR*qkD4Q>qh+%^W>u+HN0&`xbu&|K|`)(y*GXr5iE>CtB zHF!~!&HaixTmjU6}{^1sLt->xudp(IG1NAK)u4VqYM^s43A|`s~H>@1m%|i=u3fzbL42M2)hjG(nwi2MCKQR8&Kvp68mb&#K0P zlIxcmfO4;2ZZNZy)qt$JmUR?yP@U%F3d{PeK+Ib37qAKgS&RPcxqhj`YZztIN?}ix z12%WN`tXRroMd5P6$*n6x^eTH=+OzQ_~@S-T2l`n`7+Y{BsqKu&MkA@=sk;v?# zsLihdH8c>lb!ies4PF#w(_2xS%Ix*K_I-4_c3vTFyotE)xvuN8Y_N-? z2I8FSmon~uJTIp81JCretX;yoAl0<7%Bp!4tm%QQ!!Oe`ncq+YSf2R}x0q21`(_+q z`?jfJ+XaSyyngJaut|h93xrJ}%$eU%hj)HM*|bvFap>?Qi!40s95f|weS{l@b_=n{_|}6*I`?An)8hiJtA}X&C)S%El2wYa-rDQ zF&ma7+dnf*9o|TwY>J?;%uoZt-XRQ*LvoK*{m7N539bt#Kj_ZTtNfb4BQIyTyirRmljqg40sbz}==X^N9 z;@;{gmOVh+>4CV3E{+zbMqAc1!a^5IU|7}^Wt~RW3#=f0UJMCK z;+q=4^29f{m{|&Iz$MeV7B&w%MpR>|DYCjL@8RM9NGwtpUjb-X*UN9H{P-*2UtsyE zpAmj+F)UU&)D+_bLuDR z@b)BSvv8q!wmD(h7B)j*r`f*_Vqp~ud-czNMFU|gUbI0oCrl0AOPR8{QBm#DT+gMP zi}sm`c*>R+^H^7fU_B#0WpjqAXp2UyWzRd`7i?jx^-6Lv{}>HxdTdqKRbX3nT1Oiv zdPL@<1H^S-E@cIezkkQ|W1si-zmU8NsKo0#%4Ya8;=8@0K->L}(#8nQ8UHP9W(T2_ zgJ!YS(Wv~hZS&N?c#2R;xzxNYsljW-eZJ=a}*mJN1s)Igk*A1Pz}|D%}J4?NS? zvWkR-9+RuhvhGq=%}ZcS4`dyFmZnL5q6V-$`H@@9D207iVt6>EKyD$}&uCPgj zH4B7IA!5ZD}W7Y(m&lF7f)jm@Sq`r9cf{6lL?o z)8fPsQ4K9BPf!hQDzvD374^bmpo#-gOBUJqz#kkJR95l{Q_7~dqQYpbClwaq`_Fj3 zmWl9ASAjr1iIB2ss0z+U6Pzi~S+-QqB@o|#z6)kt^R{+R4z^XNMQr!z5t-9(5Rd)y zMVK*x>(oAveYr3h=G5Tz7-chTzIg1jJAvA@Nl{sXauT3L#oG$1jHpl`s=`H4gBL~F z9D7PoV~M)gqA~>K)KL~ypr})cdX9^_KC3ca6g7BJl+7$fH6W_4MWqSK`IeDIeRi=} zwcrJy3IkD#p7F#tb$DTvO)G^xH4?D78`XtJPi1d8cQGxjLSY>Udykc@&#q2{Y5t=I zFN(5R`J}k8JyC5e>WHA6`#ToZMNyld2Wn^_YU`hpC~EMcD4X7j+H{AL|2C*)MsS&F zbtUXAZf6^D<4weU&vjj&WrJNDH4x|IKg!5|^Tf1%;F-Rb^|`Q|`#Y93R#`RAfi*pl zb$9_yll(^wV0rQ%x0q21`(^}S`_`*ry9DOk-?6Z63Y$b&vq0Ds!kqaJb$E*=%BGdV zjzfnhQ&eL9gQsg{{v+*`#S+0HQ#jv0qpb6vJ%14Y{P3)sE{v^gx08zZUuaEJYt0t1 z#+eQ25t%pjm2O%N9i}(esD0h^`X7@~K@Hxhplmv6D_$86)JyBsaq9%-qzj9>IZsgC zfU@mpedptqxIC)y@+h0PpAf6BCa=))Rte9^8J1U1c{>)tv@wCG-A^Y?qXsXEvKgeP zkA?xY?Qd$@azQ!YOth$%E)>)5A}T!)HA+xYpHTx)ZhgiL=G(bq)*WQsW?74c<$N;H zvbrhjmxW--`m)c1b;)wZU+VB0M%heO*zwx|`|&L`>=}VMcWEswLt(!otSwiVeXzOn zlRl&dFN(4`Q&Eo*^{7S76BOcDqTiyPzd(F=0a5F@=IcYXaZ%LZMNu{{&k+}ffs*yr z78W;KaLzQ#;;vTQ8_xiDeIRb_Q%TFHfjB2WQO5f(%6t7bn6~V%>cttts^!JgmDQW9 zuelKGGp(<%ke@Ki5|;Pxw{na5_V;33HFS7VMp_+{eR8Lyj7Cm#=Y+*XPjNxn{8<%j z{u8nVU5~FNuCeuUC6RdlWhe~!`b{;Y0^8j6RXrl}qTbR+Q=o(IzXY06^<>g*)Zy(V z$|hagF^RD87B)s;PQI|Pwqb!~17?W-f{vyeP`%smH}I^y2+Uc`wXo+~i674)Y&BPXeTJP!m=hn=;q@eCv+yzTWOKr@ zEi7MPPSUlo3WdEoAFya3Y{gvbMSMw2Q0}CMvbj-F?a^FsUaHIWpW~XD#=0s5>&Z-% z%^9kqEgF%!{$tDZJaV!Aa|^8Lu}b?X7u%}SF1DAk9+CN|J_h#XQ+EA_%fLSG?Vpnj z3o7yYjRH33867@V6fqhmr7L?>CY5>a3PuyT;DXRflbuBAHSWbSjtk2F7vlcuFR$(A( z(eFL+M;%_nD4SLadulLXb62Vl(*))OyM8k|4@S$McJ&JDL!mZ zR2z#riuXd@{A5wtirPF6sG)(Vt&b;B)Zj%?HoX_nS=_dk;>MeZ z`<_d%KFbEXIBFoy$xoCq|A~uf{lGJQEz1ZCugc5SW?6SBtL6`2O%G%p{vAz|{6r04 zdGZstm{AJ*W*}huURT3D7uY$euyln@BCJ^;YzkpcexeSqCn=jc3Y$P!xrOZ#7}kH# z%BREDvMpze7n=~aluN%pFJ_Bnvi?I2UKC~X#G~TG5K#>+YP+DERA^E6D(ZzNfGQ3| zEtzfO0~MB_+*C-}^j1_DjrFF&dS>j8nh5W76$sRm2q~L}s^EMyVJ$NNO0=`=RA38% zSpOLSGp_lIcF#I)gRgX7=1hI?>#MoW{AwbXd3_Gs|5!50MFGOj`Mw%uGdv~^+j|p8 zyI)h%s#MbB&81f+f@IDNggop*{)!I@LYL0}PRtNe8A+opX?ZHCNJ&jdTFPqG zXHK?Dl5;)gP&Q8}Bt%F<3t5~Bsc9zWES&>Lk3h)sSxKMCxgH2*(?KCiZUp4{SJh|F zq(WvXqz57UxR~p+q_+!^b3G8s=DkP6UEKgt|8=&cd8wqfO8V^gAXNmCzDU3v=kG)F zWDknU%uq#r+8_4pSg!WWPNjUEBTjpOl+yz#6G_p`E$0H_+WRS4Fjg0lIjN*r@&c5)p|{j5XVj18dCyY;$kD z>Jgc}^bxOTp-8@e&HB^VP0u}=j0Gz3UOSXcYi-Sf>p^?+&+5BUp*i)VrA4zPB07O) zwsYmyhbnYY)Zj%?HfyGe;g=EB&Y~iM;>~Qj)1rZs)c(Ex>3t3jK zuv({v$EC`8IRRGpK-RKH=tZd?sR1lc{m3n*ox)!13)rG1>c<>`)$(Jy!mcK4H`i}{ zhIJ)O<6};kI=o4PviYJ?EL#H|-lUObG7f3VI62++I$ox-3Y_(G%9&0<9@?nldv?4c@4rY<_%LY#Bw= zofefQC?{W7)Y(l0l@63`KWjsu_v*Pks`2tDn`z4Xr4M+=7OQDTaYNbjQWZ~2WNyk5 z-rP7$%MV07IW2i@QG*vn*)&(w?}?gaQAY&jJWOOwyH8PVhmzB0MXP#A{(&LgK^g2s^|jVxM9C3DYV`9>nkr#gxs?hs3VFMD?<$U4m+qmhMFj zSJc-rpe6^R4o*#?sKMJ^l+E3W+TYver#&yIW!nYkeBZ%Z_Df^2>;d9V55!G$anwMZ zlb+wLw{@k@W)CaeZD42}|-5HGt*GPuyZ=DXalubuDb2 zz%uP~02Ve}VGCveRu~9dG$k1ybHdc&%}^{O81;WY+Q%kAAi=u3Pf|0Om zG*Ne1)H8yrWmhLf)hB8pSB8CdHFQzb;6+h3aYfYwO2*$4&#GnfuyX`UTm1E(#%X6V zWneI7$5|^IDmp$L=nDeTk5$r2#2^0Pm7u-%Z@9&@Q+NY3-y0G|rvFzO5>Zhh3mJk< zCW0zyhWUF1qG5(DUuP4NNH2`QYaOi_Gq9~XZK568^@z*|^vSX9)6n$0Sr7ZX_VL5X z4x$FH*C?C*Sp^W%Cv6 zglV^uH_-AbgjdV7u=0Maf@!k@QO71FO``@cin5uYsDF0{>f42C+89AKu@5s?)9NVd zQKDK0qGkz7#wTh3${nA$!8BIZBV4DPVp$`x1A%wCJb!uyI<6^B)aOqddOVwcI=C2+ zr=Hps`HyS2aBAxFry;>h{-aXhJ^7DY%&Z5*tqo{vUCSSW9o1>~rbbL_P~iUsQ(;Qq)a_rFzfpsA4J+9vR!le^o zI)9`FZ>pticHS>`ErSN{bybP^ss$Aorw1JjZ zBs8ZUw6sPI#CJbVX8Z@Dj!jI)KQ(w!l+6T1{reiAzFnY(6$r|Cl)|D`*B8{IM70h? z%@UNvKQ#d5#y>Zh#>#qxtSOe2FD&QzE6ch?S?7?onhUl*51vPs6MxjI<&m`t0iEqNu@(qHNwBCsvgJCF56Ti^~z5^Y`5>?ncFZ@-T2?195xCCoQ7};+*=7 z@@z9$c^?*_E zI!M@_5t*{-d>=;SpKL9eMh;4boF@1wx+Fs<(zEH6F;?Xrj>r&|0>$j#&1G2Z6gZ5I6t+ zq-E4VoOAt9#`7`Cn{zcxd(5)73(HBbmNiyc7n8M_i@HA3+6zmrA8G*0bNz6Od1bWt z@j}ARv#>4L;m&_8EK^}`O$2OUAZ$Z940G};b$C5V*%T{mO&7pc%u_F}!w&b4T3Xna zH1XnfgdJk->a(mrVHzLQ;6+h3J4cCKeTnL2QL6;yJi}vA!xi=Q1fV7dq7IfNQPki? zQ8srgYX4Qv{Pz!P*>b`4NWIE_Ia$oh@d4sa55!G$anwMZ6CadOpWG{^m4RnQTh?M> zIj?_M(>_$zX=J^?bzYwrL&B2z2Q?t!CF5gGm|M&%3VQ@PQqvUgC7bQLH04!~vo4ww z7PcopQ8pu0%jEHHek!*$`ZMGv(qHHdYZgACo|}hl?koLzMCN{duB!`lm|a}l^;uKQ zRyg;ks5Y5-@x2N*WBonixhu))WLdL?<f1p z0C119Q1yB7#C=K2sKFb5l<|Cy@_s0UX@}>iX%)h1Z)4rEKKze(F;3P6fvm@bCHaXO zz)Hs7%rLi@#tM6cuqhTc20PsRWMTIz>>R>Yb0OJh*m;CG`H4Ebo}_FR-X)%FPFS{u zjl>T3EgcKXQ`oEb0~QU0tr(N^A~kqXl+EReT2=tmlHaQnhX@M)$fagcZ=Vn+b|>l! zuJiir>gA%S!Hc47-n~<-DgjFCKZ_e6IOqET7I&-SJ}C!oY#?sW=%i)TK%A4GD5L&U z-p5zKwD%uZ(@KTqygFl9mn!RSvg!x2Mhi>w6E&pfCvGu~74{8uq~<3qhhhEsW6e(& zI&H>B-c?WX6&%WD%Sdt27iDgK+F`5Y2#-&s*QYggtTjd0R-M+)c9b5GS&}Pb)*qq6 z6mTWk*HH^c!E-i0QH8gsD4SN=jHfOKYwqvVa|Ob3@{?snj!95-AnQFAdOlVsvUGf; z1}}=TS$T(8+@7d57L_k3CqG%#k4FWyc^ptf15sP=O`@p5i=u3LD{50G8-HtOt7UnD zb8Z7#+!KnsiMa1sBl|2H?Bb}w8-JAX{L=_Atsi)%uVv*5>!Q>iyHr^^_zyBBX z6$hf0+?|XMYVe{cn~N3o++{XC=Fd_$rU|Z9D(0~@ZEwv9Qz_@br`sZM)!{F=(;)MgUJkQ<#x4lbv~?oJ+4-6!8Z2=KRqJzXMGr}6go@|mtB2f-p^^t%rG^0 zuPVxB$5657TB3Sd)H*>qV~Ium=X>$qSNA&W?-K)g`|n6z#Z=?vQ8vSsx3@ibyB}54 zRte8}chT~mQ(ifECMys%-bGP^7e(0|A0noWBWjdIEfeFt5jGA!rtRzug|bfgz5NC4PF#wv+}p%!}dhAv8Z|2;oge2 zc6CwI=DUF!8i?9DJc*(PFN(71t*A|xIOG2ewQRQFoN~kBb{-Ko-bCE@T!QskHrT~c z1947%r;PFcRxzy~c&4vq%@CIJ_<&`NRaVViU`-EX9Uey0Wc;TFusq{Gx0q21`=%{m z`yNrlDh1};AGWY=3Y$b&vq0Ds!ZbeSgsH=uqbQqJ3Of!RsX3~WIqI5sG)G-2jmBVt z=Z$M=p=|ctBL4Z|PUI*1xUjK>Z3U0V`=7L?skLSdwpFL$A7SbdnK$V}Xv?9)^k${( z>!#OlPeuhbc%y={>7=cA-ny!u;DJUmDS=7znNX?GEo9*7zxD9KOM0F;}bxWRloSj@VEtlKQBR9G^sBR^TQx+&|IJHUF9>%cw_ z)+NiyPt@TxjIx=mu;Uj2_G6VA7Qv1Y$^2wtpC1y#en(i_K-k=&Ngq;!7e(2esi?<@ zdeowdu%nu9Z+Lw;S5X%bwVn&XKD*kuC~EMcD4UlDi3`I($@tyE;tB+Z^2>{Br?@vp z0C#;LZtakyWz;~NlbnkkD zPt*XGCqHqE*)~v&>p@so3(La}7Q1@0*usV@Z0~Tu#s|Xo{nis7)Zz6cWiwP^pI!*q zjwxzcuE6kQ4iZu_81oc%A7PCGVdaGB_(cs~6lL?%0I_Q{QFmEXj-XDl&*fOV{(exL zSf8kcte|~PZ0Mly)S#f;%8;^oSy5HckeYRQ+sFKUqh{Srx7r5J(JRhVU$P};xN4a+ z%&iK?+TuNn)I|ET7ccf>5hK#lp3Ri)3I&Q3${;2;%y z;*T=w^P9wV9f33LEh|k}PUf|&eMVgO?(JZW2xPr~3yqfeqlVP@;}&zR!m3*XwxLoD zJBqbq&Q)*%Lc+ol3cHoCV_ci{8Fm|CPJW^eZ%|M+U)(5`4I-?+g&h%?v&vv$`3n2) zHo#^E!hXCt8GqE^MNu~QE9!6TevuCAkN88lrg{SFJ5d)(?XWD3wzx8v1Og7 zte1y^)jg24Y;ZC@r~xcbe&QC>PGK*e57?qf>c{N@!$02m`0Ll=$Eyk3&9zydVO*l8qZSlN{)I|CzutlCvc~H$+F6KDjRMCSnuRcxhe?pD9lnc$iZkj(Z={aif z#vf(e|J0VuX$99kW?74c<>V*J>bhS-;$pHkvx4=p+6zna6E&p9AGerSt{1Z}BsG)92EsNB@WdZ=c!PqnDOT8;T)jGnDb!}3!AO5>j*o< z)mfiq{Rz|Yks7=x%4X+vVpm_HdRf$LL0w@(-J&j0)YrEFH8~J<@TMe+8oVgV=59sp zKiB4`JrmTj8QAIOCyU#>Pu%zbai<63Cb~FkAkN88lyU#FR7@)a&y2RLO6;jlJI%gj zWLZ;`bsAYOa3R>|#gMQhKBxgKPk!PSGfQC&2&-#h6#~mhg|$@Jf|~&=41_JZ(Gwrk z;q@eC(@J4aodek1@#@7f0(0)HS<6;^Azti2*n3=^^;y=5FpUpt@S-T2m3_sD?TKn* zQ6mNAJU3%e2}Nxl4Ajs-)YkqMg;%u%<>n{K=59rmps}^`6Za<8Xnv}4wFudhpD3Hw zs^x05!+FHzQd_7GAvKYHdrQqvgDcc?1F*RoclWUqWriMlbDR z)q#LT17Ry}NP3YPyeP`%az!m`0o0QF)rkdyx-zxH5{l|h)E8VB_Sx0TMNxwnMcKR? z6{|{s()*tlmyeyyPxy|j8y^=a?vnw)jSa-@xjtzbH4x|IC(5}0sl1Py!?gFy)wDe9 zar2Y);=a$si+7V%Kae$ASP~!90G1~|af|u3w-|Q^VYgXWuE3l+!@?d?*e^E$_9WMX zeSWMGSzn`V~ zX@9A0FkTI-rG>JYrdk%<=;o)#ZSkDJ;}hu{b2LA#9jBg4!)Esn^XWmEzvyFDH$jd0 zp6jwca|SyNnHi=AZ~Rfl`e#qEryp>puVo!Qg{(SQJfVq}Rd2+^E5eqHLash!aCZHMFSD1=Y*uCyV;mZn5iyen1rm zqLy5n40USoq9~h-74_ViHb2e3Pu;i+JKg+banlud1#us8h1O?TXBS5e#5wtiGUoq1 z#I%m!nf8{o9edoRf6MBstaon!YeXRH{XWU~pa!r!`H5T1wF;}w25iF^HEfH(vJj4* zVEk;C`0-Z4j&Xg~XV`6oIq^XqUQbdsUvwAC1`*cZ!qy3_Pim)CDD1oI0h<{J`!SmA zG-~joD4Y8gb+{=|2S=-2s|4k&`&%dWQPgyzS_PsWbx?D{)Zooel+DG8st3>1%1^k5 zZ2G*a`KiR!B4khfMA>}RO?>mqb;wWpwQTdft!I~$nn*t%ws3ye!kV*K%yFK4*Ml-| z)#u0FfEsf>*PDIaw6=HBbJXCCKgwAD)Rw${23)snl)CO2VLA1aW!<(@LZUZWU$fTp zvHA*2@)I?r#viwsZ6#uM55l@y*gSzb^^=8VDr|2lVB-T}`+9lek2<_TLD>vd*r%rh zw&Py4Y_`Ch`JII=-yxRWM_8jkSUF)@zf*%3McMpxjo3AssJkp`hM=ysp>9!q6jh(7 zgSa+w1m(OWYwh}@qQ33})Z{?a!5&EzHF!~!&E1OHAF}bW z=PtEufZ&{R&El?B+ylg&9*CRh;O2y>f$31=LuJH=@_vAdTKO=SMJ>peq@ zo29t3h3t3i{u$+`=S#6Z{a!;_j2eOu3LoZ7H zr3SD(`IlQvJB7V?8eoe?s2?)~*1@Jk3wwK;`0;AOc5|WDXINLlocN#)uO}&+^;d~y zR}$9A!qNm*%Zu|A_CW-&djerQy4v`_8(D&K7riK(`xVs}&8?NBim-Ryi<+Vy6D{!1 zoUoXg^8N+4n0BhC2U_BM+rP7|*^gp*ANlE?hOp+2;p)00*jAl3$huCC$XxPoaos7< zA@>)#9PIO6J;xwCtw+TO3+MZ8l+Cox;=5l?1?|`{r5T~s!S_LEqopl$7S}4kpx@M7_;o)@M~aK}mk123Y0hCvGsWTq$N< zNY;6lwM$rEJ1=(eyhP@I-xago>JHYxK-PvLPyA7b*N2o%vBK750Jh?G_2G7b4M^>= zc?!FZutQv(^%>TmFdhG?!Hc47b{2|VeTnL2QCkERN=4nGsIR*LH8~J<@Ha^mHF!~! z&E1OH-@qCFZ&SVT9h&w$HH_^pW1947%qKx(b0x_)&JTuy|RtYPb z%6eQ`r;+sn7lnOZ3<*o}6E%S4$xqy3W+|)zVRbERxxi}qak#=3lmJ#32wQY@GCt;n zslz+dqil*5)*KD4l{6}`_x5KsX$+zsc0C?CuBC;tIdO&frzu+Eq>KzZLs-n?@%@MT zu%_cs?WSk2&3z?ZkH~!BuyoV*YhcaYTnYBM?&B`WsGtUKR8ThkwH4dafqG|%qUH(8 zsb?(e!7YLs4wTkkC%8WA;|+6pRO97QHeX#XR^LkAK+BsgJg2C!ys+|q>k+c1 zSXQO5oRY?}hAZnFvR1Q#^?C3-vYhdeI=qHaHVZq651SK~ZDADxbMCBJSf0XOEe0$a z2wTxP=|gJpq9~io6}9XXpqAXKJ{%(`XWiPO-rg)e>`v4dTnP5r)yqXugBL~FyxUQ% zDgjE@|1EB$;GB2TE$&vueNqJ6*g)K#E0dN{1947%qKx%_<$YWiroDfQnl?mO&Roc{ zE>+guWYrI3jTV;F2h@Osk<3q6hQ=1tSYh8lN3E2BxqV6IpJrFfYP&&U-l$#%@(tO)N%({cD+bkTWpk#Y9wX{e zi^|0g&-{v~B{ItubpcW9x#sJ$tBs4I1}}=Tc{yKP7zRr6Lko+`!A|!vHEUTr#l3MA zaMuUo)?S{pj2eh@@&je8Pbly8Utrp@f$GI9VL8v5TGrO};>F%%ea%H#pJ{!CrSmIg zCG*3~Fm;-3?ZvnrgmtyB41u*y?Xuwt+uIqi@qw^?ojmbD9bQjTHbWKm>3;#+F+eR# z6PWX`pS7$&VfPW%C=gaom=-zI;4PIXn==)47#eEls(N_;@+nPG?L~|DN64P~t}4te z=9Np3`R=p@@=>G$^2lfEv86 zqHHd2C;c*7?tkB;t}@txm$+(w*D12PQCc=SD;ruO4RHaSuHVwNZFx@H(i&~i`e`kT zJv0c@$29!pG#g)E3OfzLdtK5Xcfv~9ybVXd_61N=+oAYt+~3Sohwi;B*)4*{nwsb)H*>qIp3msDykt-&vOyj z=f%c?lJSKafO5wdZZNZy)qt$JmbFS)&L7dRtgqe_H!ipWtinLnq7Lw&GrmxV*D%Va zmBOAn2H4zw>ciy%bBaO>Tdc4SguTb5S)XB@2-Ep7HF!~!&B`|7!}dhAv8cs@a+0t` zbyL*l%Yhmih}xQ;L{WnmMcMRL)TX0$d|7*gTK0_K&P$EPy=%pdHxc(e*Jgc|4R&$V zK%6taP)2=rk(kyGJk!^*<_W8o7hh9WO((FX2eJ;gr)g4uQbTI}$t`AndSuEfZuKn1Q#KLRG88RwrmX#Kl|Gx?MEdlfVa??0)pIkjtvbzln_G{_ z-1ND4t|hHm#S+u!xmIk2egB>+ygfzPEX)(nH76_EvMPmzf5bk^+Ok?$uXY408pvAF zE*TWm;6+h3mn&-7Pe3iXPR*(ilv5*GRJo$M6ZHjGV|`}za#7UaMNu~IUMN$O$l#k zAIKUlEE&J40W42_!!7393&glP2)oU~h6t>-9~Jh?rGP!jwO^kf>k{VVC+hHelCqhs zu;V`f_G4eQY=FR=E6ZAzrLf--);16}w{6mk)Zj%?HfJj8F`^!|s8T_lof?XNenXsi z0a5F@3hcA1jf-8a?|{z zGU7vd9ns?2DI=Hj%Zal!X^eFhiCaBMgR(h8^|VD(Y|_yB$En|oNXOrQ`ZrwI<67;l z0#l7Eyw!4qg@`Z+f#869{ zxk5Uu95j;^h#K#rsKJY(Y>uBVsBuJ%vZy>k)iSJ5Q4NWDo;9w|s>Xtn@t+!ia>sve zFte1^fULTfl`E{T?fSSi>$BIztOf1CDhy;Ty2x{VQHR$s%BGdVp85{3xl#3Dj=*Xe zR-v#CguTbw(q~vF!gTzn1}}=TS$UrLusu<2EGkP-&bqF(tBayGw*zWuAZlw~5=9MO z6lK#}QJao9<9~0pEJJXO?cEcL+xZu9<4weU&lOsqWrJNDH4x{F|CBNQw-VF(foJ+! zR+_MSr$*vfWz}2)*7QKu;R|V+t4%aeb(#f(zeH-`b+*GmmM3QVY;^JY~~LVaK7PcIGI;`_D5qZ(J#jmSRKL9xas3o?P+I4{eb* z?2}N&R<=h-#rw~+rm3~Ya2xE)!&htf#u{^Hj*lR|Rq%A&0mS>x1-nA#$zxQks%pZ39v? zkhCJ4be){*aUErIxk8p50%S=Kb=|5|$i`*jv?w9pa2?raPN@r#b3G8s=7W}ENiRaW zS;+EK$Owgea}gj@0wFc$CoPe4JrK&~9))~W!}L~y4STw)Ig3+C^_27wNjZU}$t2nO zTu%0&D4RNpngEn3x0Gj6DcfEVr=3O0Yh32_Ijx0jkDLpLlRqir`G>Q$|49j1%Dhxc zg;HM410@>@1m%|i=u3fHy6}6qDBd-BwXRH z)LPC}%E=^WF_(0GCN&XG!$>?Dt{@~+zHn4NUf5Obd*4t@i~S6$VJ0qz$X zEaJoxaZ?o#I==|SR0&30HNb1g0CSpBszA~8MN2BJ=KBub(0Woy&1uXEuHX9Hb&g9Z z^-@aB^Eu+Kb7)I5ONdmbIWGoVTYjU2Rbdcr2qe6DPO{4*UP8oNql7oV2H}lj^;QvI z%FsVuX$hH1xRHeKxG?OqVUSBG@)C;77iWnLgGlIa2?f6XSo@On#}DU&@K_+>XiIBD zzi@#&e}f?YpRbfMw6J#SN~^=~e@)Tk^_pmrS1iP~WHzq~Q#O~K$?tzjfm#yI_o=Fj z+?7Qy+->#UMt!Icn=usgVRA!jW?zEa#a{WS=*_BO4bh!vyorBCKZi_Ds z&uEI6nY?K>erz;{|GnqrfvpFBIr(1lztGBzg44<`3cZ29s8HCuZuz;Pm63V{z3Y{q ziC@x3%r5AiUVa*WtzXc)erV3RjUCo)OrFbM^!zr-^K+f^&vMUilstcZP2CRf#I|@; zba`?`$9D_PEdMRVNaFgsp*LhxBym65cxHJIyS<)0 z6x-|J@O-;D-QCRgpILsE-BI7&QNQ5KvKUNR#cb_qO^RtExa~XTe|h`r{V#7{`v3Cw z)&F1KzKs8s?d#cjL{@0}UvYCWGW8JB)IH(6NP_>w@E3WcaCnee^`7t%Za!jO;jj?D zH!Za0^Je2(byyckv>bb)W7_JcFt{OyJ+ZlC+FN6pFHgDu(~~vl$^qAT4w(BJ9B?TQ z*jN53>WJMqY3OO4(%yOscQPU|0}k$pq#_6zKRV-tnsan_ z!9nc)!fAodA6g_yFSLgl&o*}2SJy*|0CLgT2KNCme4K#TvL^bD820fO;= z|6QrEUs+L>R^D>P&EcXM1Ii-tNLC~k4d+JUr8$vUzi>{6bv2iI$tB^eNWAI#NNl@# z<>X1wx#8qGj{7(XCxli)RitqHgCEsYv+)^Fon_9GmO|q0tOMh4s;_nLy{FgbDGbS4 z*JlZ@ODdkWE>!gqot?;@wGYKo;r8;=LpQCHvC-4cM0OT$Q#*Tc#iyn0{hqJnWA83)RysFp)u$O%Uf%Uluwf$Ijmm zvcus<>d1o6a}I3z#dW3n?-y#FdI(wV9`p$kS#ITtx({>%zw$(#vhyK?rfn8-%fVOQ zl@?o%YHlA*13DK0mbWnyZ+VfkC+`dI9&~8a$`hxQ-Bx*`URhz~iS+V^zYjGj3Fkn^ zIept={pa$XCt(}5U^^opjckgYbyCz|!;#)Nx;Kt?kGX{}_`8k3-)G`67vh-BX?5Jg zF0Xx9w{;gG9$LP#wHW+QcAcEfu#;wGA^394^9S~vq|>BbS&YD(10Q(YmW)L8-^UVv zn=0wQ3i_`idBM#e^ySIO)RXDuZ6_DrIcnJO@^Iz&dKKl!n9=Z z5+bh)-64l`Sl8jh4tqNM6it+buc@gYjcqT9ZH*Kj4JA4OS`u2>s7~?ZW0mNfhw4WY zrFCi|QP_gn}hYjOZyRyLEVH#Owp_qSw&q;?Ugn#ixF7;7t|F8?V*Yq)%N~ zoK};Gt0=ZR8rx_Zjb*#ofm07vB5m@*;RR)W|Bd%LI#ACBgL?$>Oxe{~M`*+QPla2` zGb$&xO$*Ikw-MXU{4BYxqqA)T-q#-i`{YR7T6^+=DAV{lUE=Fdgz;6x_$ne7-Fh=K z{e$f8G6s#!dHLLyR{{}_^OS{i(KA`NewNp5hxd;z!?jVA-lVHH{;Q3Sui|&(Qvv9mBIKNir+1j{ zXfs++riSO6eP4My3}&M7JOc5aSAtN_m-sv|Kj^AXUf$OKPcm|+9)iE_fpg%0c&LP( zfXjrx<)Hy*Q_3|j~_3ef-&&yNF0{jkP+{l6^VUh-hh6#X8>9@1pSoVoxO|W z+N2)$7>wWV*c|C0NN%}xG zDyfHUF2%{$U@ON@wBmA{|2oeP;e2*LX=vrCQ@^V-1771`lhhPS)s*NoNm_HHd;rH@ zjNCG4pE{wzTTC7`nGn|%h30M!J+<-Fy+t$1!smk2i=^kre=84aK7W4!!HN^29H z2602-k&vE?w7=da=p z$!In0IM^51eOC(%0S|?BA55<-$S*rpj_t6gCLJTop4n9>j*3vW%(yvx4jP{*LE}w3 zZTvaD#(&G#>RneSI(4xQ>Jo|fhBu?UI?^Ll@+_3l*ZGlY?}X;0)$;W7wG}m0FO;Dw z=#;^og+~|zoo?POzn5PGy+^Kr-rm%k+HC`BDa*c4TD86WHnPMWn+kY?7{bv3pl5d+!+(qKo;nHpvzYmv9PHYUa?%;;J{Oik= ze<~BMX;=>zeEhoHNc_H>l6Y}mBsM0eBvyn}+dg@0ZVh}>fdqm3Gp9&?@P=_7+wAG3 z^f&&4;a?{9^?&!21symNM_suXU+Z!JSr zZ^C07A0UN8(|A2a;@2QU-;f*c4U<1IQ;#F3Aoe4?poZCtyg=w&Kw+#~Ae8 z*o^putVkSx)*vfZ0gs;QG;U0WG%mv&txH4tQI!l_xiWBlkpY8eb1A$ZGdV^s4tQ`o zL^F-2q(<3?yswh92aOqu#$bK)VrdOBBJzsAer@ho7Mwn;Bk=pFm#~ ziJ!sg=m5#5vDd?u*dCvlg({&Sicn*fTpEq{&W$3rDoWxvpkC@1?uc1xB=&Ff6|Q#V z*z-A6mJ?YlAu^zi!wYJN3KSC^vA%LH^KAt>za#f!7fZ6Z#eoGLiiI-XZP7R`h~n>~ z;jRB@;fC_7?Jz5`xr^W^Mn)v3IqRu*BvnSJvWUnbK;{?6w)Bjx2d|)}ezy+mP~>() zLx*vR;~7{OT6ukb?;zh5E9le&z9&p*b6h3!0Rl7m1M(J7zBU`Q%BP>#PH@ zgpT7;Qt1(aJEL$0z1tIuTUUgpOhl@KEo<;8jcDP<^7NjuBQ+WL=PewP7MgZ5c2`cy zNe@lCUJlG`A_s0QzcLcX^*R8FkShn6fOx#V>)IK80VOq-|m|&E=$INHmf8 zF=8Hz>+3jP)n$&g_Tu`_jT8>bDXWKNhmmMLig?U5OgOd!)8`^~VtXjecaAUYl^2@B zLBGJO{eEbN<#cq-`N~&!`q~l2ksa2lmz$S25HHimXT!%cO2QWxY$$861`9Z8HR)@b z;Kz)9;Wo$>*?&hRIQv2lT_q@~66saDocmwc$V%bj(8_l(RPyQ_!a{XS1k=1wxA!@y z4nf265da0nv0b5Vdl5)&qd2Z8n#g_=S7D#nyM034wla{5ddB{PvyRK8pg7d+2qG^Z zJ3r#YEP~e&%F}vQqg-Tg@E1PPgx3jnoFd7gXRKbhCL~ZX1l+m9hkA@NI5YW&rg}Pw)V|J?VH27Ua$A{m^1A$=E>Se zWNeos%8GFG)BOHN;g+(F`2C38juqz2Dv%hz+=rSd^9R++nkX~Rwjv~@95b%Mbt%X; zBB-5*{|0S3H+WHwXSSd5ufaDAd>m%?7F0CF2`Lmd*a_Qb2GfOvz z8PI1HY$1@7flwu6Kv(~KcK$`&jF67WL z^;hQ4?BC<81ryoV^7VPl7y|mYNT-~M?7PJK+sl3Zn>-?q(F!f0RY+8b+vI#Tk^N`s zM(zSIb=TvT9ZIeuCKdi{k)h=BUvk%*Nfu^ksS4{rA=VcN!^54a`}qA0xjwnSS!8Nw zBpNLI)6XK;q;j!F4d4a)LHV180|##MF7YFnO+C3QqC z18cdd@>u!<=T{!9=kt0kYb%e{FV9N#{_KsF#~Own*@HA$3yEl1_m1>)Xxf|D9a?z< zCgvM{j7&X#LFkbs*uogb%q_jJSJ$+Y;q9Io$Q|$(uAIx6jtWqMA>0Nc*=#r0Vh69C z%h8mw3|{|N)kmvSJEihigYq-3YT)ZuI5w~H7?*30H7Gj=j%$wj0epvJ|F8aY7Orhv zaTY3*CFHmNNL#P)wRI78u&r01Gt1J^k6gcWLcQvpP}K|Q)!ArJ`B@yaIYp}FLQM`H zq%0^PsPZE5iSWrd_~auq2-(_ItWh{P*PIW0z~)BS9N@EB*`qA-g{zoa< zbE#+SU>4>0asM62E%_WfoO^?I9S#?Vn>(=%M={6T2^E?*v0lXFnPYCmrew}UKW4yf zSg_Qm323FJ%>Owxe)plbr9r8&Z%S&EK|sg9#SGW~Y5aSD2Vnh&@3V&EWaxY^Bm+s58M!W1Q`Gp3YlgyW~+D9CeORog zA|CeJ2XPoHM*m^GY#Vvl$HQvX92bALucd2*|!98XLB`c)!Q!k`$2)n@vsh> z4y1km{B<+hX!~S^>l}~fPws{041Zg-&hdD{6QD)-KFD@&uODbzYdKTI) z(F)c#6%ovsbS8zrrVMBVGbGmbQQRn8PC1eN#U>d)K4N9Rm6iS0)!30X!`?icR)Aiw z9G{Qrdpq_&sx2uK^!@|y23&=3X96rZgevm)XWQa;YL`2XjlrDwLYXf`xMho8v*yyd%*xu+D04%a|Yo5@^QVig@9fFu#gjaMLFl!YU5|AMy@ zt_rPmZg9dsaEPs^d*sCWVj0C8B_1WlZ*!p^%hfmG!aN#@ePWh<4`0TrLHdgC*T+t1 zes=B#aLPEK8)hv%uaW}&_|LRf3UpT5p7rIC9AC`*?-)OBeO@5-`6liR#S~>=M3|*Sf-YYl| z@!XQu`288~L4GP?{34?G541+;9>m;(oLrZ|cdXdg?G zm=8BDIDmjU*34N?Vl^pC^Lj_*Z$BknhwKj5dG3e|JECrbjh>q!2{{7~$@N3V#`x>H877c8mScP9 z+)8*Fu7=N_mg>3FcD}n_cm(%06Y0+}G!iZU_5Bz`h}AH86BT26{IzMpEoH2`7{2Gv`J(UNr~lvd)#S>$Qe^7p0ntRH4sV(! zxd2Atio#=|1eY9mg%vOiDkAYSBe6N*Eo^1t#*9ef&G2^q9^2`AJ|zA#BL&ZgKi>Gq5Jb#g`9px49~ugN-GjCU1sw#fxu-^W^8l zM|g1_;l+8xEX9MEM9r8Jp3TECX8evvfy|b2A&IRl0eTmH(gJFU!r%Ek9?N(fUFiQJ z`T4ZGeTdDa6rtv*Rg=cUp(aBPn-d;@pHwr1+j0CzZpY>2p4(C8iJ@leASPQDk<{@lSEP{aI4cJm?fxPL&W_e#SplrUYAyXp}3s7gz zD9v?4{Rdt}wL)F;d*{PA3-@3DBo93N>t#IfFk|JelUzTl=s9&gvgx%5HOx*V#I{L@ z{Y!;+3H?LuCHie*NpOEFkoCe-2Az=sd^3PX25_v@mtP! z>^T|X#z>k*r|A;Z7_QIA^DoZz3)Px|hrwU;&w-87HX_k(sesVn<=Cj#Pao#DKS9*> zVl;Oo_H(?(uekk|KKM%vAuG?2Aw+Jfr?lcwo zl=y7A#vh-N*bx*z=1Dy0H9KHxqw}v8n`yIed^>QB-Z$X*H2`xy9luuQA?_w0%HwiR zY-u=`KQVsEPmDSRvVCT_2tSkK7oKMsj+I)hF_*69O7^?uZ9*%r!|aC6OOyFcH|%%H zaI0fX&N>e__IUp%K0b?2+1xI(9N*E6-jt(5RWqR+>$gw;mGVcSss~lR zN3?xZHU|4Dr9B^&4a4t0*zFh^TIR|2J!Mh+{-)^LQ-&+1b(ZM*vaBP14`VyyJ6iZ< zSs3!`a?Y1!Inl%=i&v3ZQ`RV&=yDbMC0cl*{LEjougf4g^F(=W<#^PbRfSo<<_nJN z>ySAxI+pQ9%qsj2f^+`$mE$w8%5)5Gq_9njhON1Gyl*dWt#tUXTZcW}I_y6%8Ly5&eV;c}ee-C%PBh*VQvgi{ zxa)vp4_w_sj=F=vjz%=LM|Ie9U@sr)Ol02+*JDp;T1%Ep@qsATuFH*&&tt@N;N^$b zrO^`jaxs1)$zYy?XMOQIrWUvz(yJgop@=t_#Bk&+8V)?l19Mo`L|#`7(|#&%isy@% zzs9pBnf6nts+0VJE&o>C_mJ}pekYehs>4E=lPlL>q;M?nt(>eW#MR1fVXGpzg|u<> z4&JG`$34SpLeppgrcr1db;=VTuizK-=9t0>d7){~GuGo>@d65*(KWv;qnP%k)r@00 zxC@FA3x%kmq5Nqvz3_%2K4;-*jC~N{GinN?)?&6zxqJXZx&Kq^s#moqF%#cb8{y@G)U=mP`=FNOr$R z4#gY#bF3qg;G5`eXWe2>v!_aL#7gt&hFEFQ)Gi&|Q?aK}Bixo2!w zaqOK{e5ooL!yTsGX4e03Y9#J3*+Fu-+9)TPw_Rp>unP*)7ROR7QP3&PYYG?Mi+i-9-49_od;}>#`cuNzKF&SM`OR3o4!7YOQO72G6WOZC2W%? zWI5W4Zfq0Xap;c1rwqYp+-VpZbzl|yvA$k9I{!z_J8jpH8 zA}f{2P#`^t*XyGQOX=rp?V(hOeGhS8;a1){cwKNc>Gtt~mN*dC&yBc# z@HhjmIaN?xIWa%C>|ETXPHs5fJT#39MBH_5Xxbraj^ButxDmN1cILl^8{~xt%QK_# zGqDL5?kIfaE?U^Gygq)-t2wn>hkwa1zaO>AD`-xi!sF%X(b(5qnftn!&ncm5`Ge?x zFw6=jj^7!kyj~Ep7(?yY8LP&_8Mt;!Vh1=r#r}<1xLJEG@06BbLcj7Faz-UOfDu70 za75WM*GV;Por9eN^rX}na2$Z(yaFfVdMslS5XV9<`>q5@pkL3}+dX6dM9Y%d1AEtD zZ;03TflB=5^f__bF4V}_4xRm+s4nIJlTP{nmom)7g3)Bg z`hY1z*Ys+qjF&w9;G_%bk3{i>Gm*uO7%-Tz9;nEDT2%D^~`<>Qy!Q`vVi zM@tUj++rd;HIcpW&sabIzvPTW_Cy?2`bk|Qp~+A2qqs9b$`A}}Lb*hC(6Db+E8 zkGd3&*ntddi<3ll8z}Uq8eZg9GVrHCJ#i!@5`MXExa?Q ztRbJzOFOU}|3qUZ%9jbgGaH8Q!24yW)UHQ~5+#wIEW9C4DmA{imi;Hbv~Q!0@%jI; zDK*}KZt(w`4rwvsr>F{L?=+@RJpcX?qT;lAZYjs%S=P+;sWDwt=qF>!#?O-h!Yd(l zOyL%D+oueWe!P_;1zuF5BkrC@uck%^x0p6OFIlBMhy@wnNRr5Y9-HO*l*z(8Wc14M zSEQAl!<)sJ#pL>DF*k8kpE^Dl3F-+PF0m4?Gh5a#reQ;$!q3YujZB@Cg#*fYz|={3 zSU(L-8wnwJdd2+Sr_h9^b<^XS{I0~W(RlaVX#84Ck+Glii+!-G=hUNh@RTfe_lXy0 z^ogJ9te@aca5_&)WN(-3`ax*gG#p z?k(6owM*N7vRm?Unu5|!DzaU@in`qgqpex>!Hy-eWPkp}BAHzz` zRiZ*l8-ejIM6$Hu7PAK`-Eg{>C)O%VddAaw;&HoTK5kcQ7p~Fy=#-v?ACwPchm_y? zKO7t!Bv5g5380wnwyGT8DXk0-82?I)*7TR+2{lsfc1U`HH9e`cUGS?AC8Gad6%)xoW1Y1M3YUonP4rOiBEVpiihU3o`;(@ucA=b1o-RyB8u{K0b*gi!iJtCz1aAOV0Ok)^Z18i)S!_AkE2R z$W#7-sKNIQr0+Dg(RVqKL}>=>k9|U$xYhF_7T7%OmGN7)NUvxkn zLM21MI&eSMr!jzz@s8d0YAoM|)Vcka9ei~N4_?o-HyOAHJ4Ev3@Av#4?%oAFs_Odt z4@fW~I6;X<5e*tOTGXH*i9$^@$OI-5E;U7hu%QoNI%lfHBVyRS0coVYGs)LPS`XXgR+V>%3<)zYuz23sYO8E*P9 z*=Fy!eP&@R{5n`rC`VfV_Ze&(eb8!8k@fDL;s#I%V_mA1E>Gx`ovb`=hU_!gClC4z z_7quqVz7BXgu&)~(uu*Ue&YLwp0D&Q{B^{p&&gkh7`ODyUoXDcmA_`H~dxI*gB6xicHa~n5dVp4<)_@ z25RC(k=T93a{jAHOwX%~eWG2tR$i-PA2X*&P2Oz&l-^T%YO@67${aS{N*GCUqs!2w zdE%>O!Ye*1-z?1;zFA9!4}A2Z$zzD*yQKUK0=*=6ao zgM*ijYf-#dg7+CGSMORA=#xP4vd}yQ;p?t{S)p+HcPrh?CJI1b3IvhFWDxORA)<`e z>ezoGvFE$?-wdiNHS4>h_+E19d!;SF-$*|td?o5H9JGWE2I~2blAe(}ob=372JHWJ zvj0g#U9mC5Y{sx~hc(Xl64oo{Me5jgd+~X(2g7?fI4?32mm2V*OxScV#n(dX_ znW1iJW3+2e((C%3$@WU|Ha}&&JAz}Z0?{V-?zm7+8dkMwuoh^oQLrjS`1N+W^7Y8H zX0I3sHj7UTd2Lx`&e+(RPQ$I6WC-)MB0~<92sFFxjK0>*#K}1(X2C?-4aELrZu{dPY3jB#lB_Dz4Yj5l4tg#n;3g2Aj3lLa z%W*sr5SoDdV~?B6z4UCV=w0eer?E#V-a-{+{pW}1h9|YYZc9MP)%KWu*r`s;K`pdJ zVlPO`m07*?h_)qx%LIcq@*|x@<`IAN*iU@^pfH#?8=tEk5}Aj2t&V*di9MO2JKO?L z#-{sivIL#}C}dM4*T%-Gu6Xx3etSNBD2p(DA;?Svm5!uVeB5u%$I zaDXxJQomLF1AO=leO=m7cMP3={axEdCs&tmoHL5;1pfrV$f-+9IY0VAT5WbMQ|%T= zG?Yiav3_1nqPSNLXOEUNj#=@vcm&UY`;0C%u}ga`!8HIQ{)QI028cQtWXQvw6B&~K z@mYE%Jr*9fsA}-KQJ6^Nu8NoP`nsG3L~d`gV$RVa%bumfR-ErD-WB*{Ol>7{pZqSm z@Yw%6x2thXZ$XXyStPy}aWqcEO1pa6b$m&rZZ{BZj$~OmpF&NhA66>98_il4sxmqv zVXAhSdJ?NeiQch6II_KABUna&M7?_>*MpSQq<0*`)O89_lQ^@mde^F&@+YnvU&D4* z;;1%qwbYasMc<%jBc2?_*r!ddpZzOM#4cmsaE{Ng3;|S}j7mO8!;FGYYnQLJ0|#b* z^Qv(*a}39*G?*Uh+)kb*7_I8?!xWFiHblzTg%bPotkF%(tpT}(CNTa8ci4w(RTTaAJ@lVE$$b6yOM7IS zVs*CJ94t*)+)LQs^i>2g(9k+UpqT%w zDZ_CVL(a~NU(ckrix%@<(b}}HAGJQ=PF8bGpIX?pN@_`siNCAM+h^P2vs&$#qW0bJ z;z(g6AiKUo(hP<2aOk*F8V(x5E>uHSN9>`*8FQ)0G)MO9otYDd!kw^Ha=Yw1qa@vMbe}uP<7Ox zA#yDQ)QQatWR2jZa*v&5v$cQ|7@yMY;x`%(DXD}pHi`I@s48EA$4R`&{J&* zh2ymq;dmG;t1ir#7%qQt&e^~gjESuUQ2(?JsnbUt@Ue-tjbqlX7p0kajH~edqbu0( zmw)ucHKOrT);H4w+rlwwPK?+bP8|9{IC1`p#xb{8=^9ljknolKU`04Fny)vshVmVJ zp@DnrQJoA89LIv!AU;ptqBQk4G_bcG)#K2>GxCW9$+-Yv)ljKAy<>C_3OFz<3ej$8 zxj^_4U+A0oMDw4UG%}`%6KYyR1|d)xXJ~yidL;Vok?&T5&Z^?DoNp6D?&mdVA*oYs zfN;&9(8GUwH?4=QDbvFjm>$0E2_eqn`>J*6;gPK4B#48rF4&YEX^xgGY+~rz#-?XGEJfX=9Kbiak zjf{OL`mg~k1sBMpckd>LIqRk@ckRptJGZI!lJe{b)TXJ+U=&N_p8hBp``$Y}W9%#I zgfSbr0*rOwkneVGm4bisDli89oL0_or5LKRo!8fji2rRz_%Tx`?CcknPZSKgBV+#- zw53=l`8D|?Dyot8lbESRS$oR8|2zKrd-5K2FOgfnlCC_}(Q{Y6wYGa#QY*FUiZ|Rr zGM=hMd$tbvf%0|fl7foFjP)<2cptZI-leTs^Bo_5J3ZNFZ0y;HHXG$7(AAWZbt6T~ zq#i~4MOIVKF*w}FEoED4?`#`_4D6n|^kP?U>6|Tmc7|n>T}S4QaWI*4>84flB+dEw z{Ge3}c^2=goEZrG!i!t^@xHXtah;k%e$8akCTzfXbz*eElPu`jWP0omP;2PhX=c#W++@ZC?-Ma5*D$)yx8tfK7yeG~gNd3D-my3`)C&l%JH zkDX6Xc!R$$II6OqnUH?l`F!Sa-cG*#dU59`t`x!>-+^vd=pc>$umUk%9=Pt*gvLLF zSMg-Nj-<#dUJ+L=yjAvrr?r(%fpX4Lp17)MTvNx{r;)#FQK7AD#Df6#;r9(SziY@r zquL=BJ06w_7&OD2Bd02?!R#Vp2z&%jx98YnW~-tu$ub!ILi1a3{@%ybFy4p(+ z`|(YzubExF|4)8bjR5g83h6QnM1`i19$zga?M>jBBF-mCqk6wn{=|SMZxuc`#iS0z z)&d-x0RbDh;2%CqKsYQ2{}8u#&iB+@z{C_QOkTpcoZ`>>jIQrM?<+XJ0)G+;a9C?- z+S4C|j%z2%QhT)b!ug7}6g_;w5MnVE{BDj87@x4J<=Xx9dRV=^w$JVFj&iaix29e2~L{yyo}KY>*u1Q8#J8A`ix^MI>R8Hz73kibQ~2}hj)gK!B2 zA_+}QRChjBwU-$-pM5Wk#^@~I=e-sM1yM~VVw z?C&}suVkKfZjq<+p&3OI1ODu{Mr;!W=a~S3)_cchDPKzYGB4Drd?qQ>UB?gJ_`5QB zA-Nf)m_}E(Cx^eMq)Qqz`J)T|ey9w@_lyfWSW zqJ*ZtzAe!%Z@2TCfA(`8-V*+U@ST&h?FO+~TUYES3J&l=8xn3@sEzb@$sEdvLYk`o zIKR&0{EV_!KfC&=e)T6PI_W`hdG3u@`EkM06wTV+_k4UDK%u?5!+pLFPKDyVxijqf zn&c3`k`;~|Z)Jl;f*9JRWcQ{>>4784zTJr<_Q~W3NBRFEzEN#dMaTy3L;Q{_GRfS#(%Z8?ZfxL|Z? z&CU(TbnU&UKf&0*U#O|0TOl1L?n6(c-^GVV8D(@SotHQcY_plLJZqs7 z{q6@xt&Jx|{@@Jt$b^BiH9DWu^>Ez6qJ5)Rh5vHN)mP1_pB=pj;CWn?7gW=4+#%^8+5X&aaK)hrE~0s@wQ^ch_9E z7}eKCJIjNsB*nviooU$XZ|?;ASZXz0Civ&h19k@aD`cSP55*Xf71ar28dJ<-tEA!s z>_b@{hH&9%HEg1KFDNeZwt^58x71Q7f2|WH7Z`w7lRp?mqa76g903DDwm!M?TbY1s zXb$7UP$Uz?g~?2o2Yux%V^Za}6B*L9>&BfH}Rc^eM<+;&SYkJ_S$s(nO#$ zs3@IeK`2u;mLrYWjF7I*Ch114$G(}_>CcXjdB5u)^wLRPXbAay%NFu+a!xdysXvf; zQE`d)Pe^6>#cZuVDy6LQ&A1my(FKhCI-f>PGDU~@5bOMT>`B%VIesESmSM_pL|CaW zlUnJ^v>$Q@S{udE`GRp4^BHw1N&=O+qnCP5wPbcX8?6U)rM0848QY!4Ut`V^XJN^> zY6-{s6niH;@Y1fap=qpNj@-O_R?gRI;-~OWqtO+YRpxvUI#WyblnJ$qYVvL$7|q*z(;<+ixPV|O!H=9plijeiQCDw7j;|5AISJx_P=X zCI(c#%lvLvF=tWS!NIT#YlfRuRlEZF&O?%Bf&O;yW0n|z178{BdNv3snDbi@@U%lf z`(7O-eD&{9>A01seB_u!4(rzRP<}fP?z7p#M=lsTqdIhb8*$j)Kb@zmHt>DOS7(|H zys0vDds|15Qff(oi#iTaeZ5?LLr!yvV~H{{lJO@1qHV8^14H?3-W4?OnpF+^xjNe_ z2}l>ZdsXGo4IO*wSQLei6YYsm_Qwy*uwDgZ8)p~zR)CK^4t#?|7IImS5H?eBHml-i zfFK;_nErX+Wh<2$Lrr;XgY{4Wd|sE=9ka;K-JBgU+}45HS@d+kLB9dF#844)rEt51 z_PyH@hT8%E`L&PRx&XKOY`8sQL6JJPD%CNjAo)Z3!o7Un6uNy?$6-qN&kPpfp2mKr zy`Q++hP-NN1iv0m>$pFjx^LTFEe@*((y(DwfnbhNsO^))S# zsPT0)4q;_S3agVspQyd|&CYyh(ms_-Cy@xfPM2)KLs}wbM zZ2)J6`C9LJt)Zb2XVE>vDteFk?-jh`Ge<`6fDdpkt12Gh=jfx?HWcBAXSSFCAJ^)& zs1#ahmQBLLiT?eb za`<~(3YLle^j0NdsyGK{qbh@H*Fa3e2^y*Gjwz}Yk-p1*gV4F1MEWsk;QW70u$T8& zYc3|HTFp~QwB{`PebjAvC;FeP9h&J%BYwoioL7&nXMEhC{Rw~Tl~(P0`G(NVm+4R^ zmCQ3R?s1isudXi&Z+O+q{iDzneC$%1%`~xOIQDV)IB3d0 ztluxZ;Vm6{iIpi52sl)rXqjdc3F#{-L16=Rkh=-`b)`-A$ zZr{aNI?z{y;r1%gYqiN#9Zx*??xcy_Pu}IqtU6jWL2_U7-PaF7b!}v&8(NxEt?f5- ztCjgjkMz9wKf89}zaMHkh_iIox)wgI^=(2=BKHQhzUf)Nb@!Fl_4R|$1zlR7+`aYP zH2wz1JOcgn9i}$cemH1 zxGxU|E9ZdJ`{7XJLrzW~8t`CQK!b-J4R*c-D$a30I-dYUVQI0l*?{()wjfHmM4)ED z9^l62f9Eq0F{%12$p1|T4f3}MC)Nq_*FdasZ%F|8G6#7jkYk^0@YzSH2D@z-0s8gzJq#w z&w~1==j{pnZ*2YC@Xv=rhWe`&ohXB84E~vP%HS^w;CF_5?y7$p{DTAd-FM*E_bm9| ze~;iVPQf2)dVzHxKv-%XUfyv@Gb3bGuro$mUZG1F0e>Fv!OcsavZM1OWI{ainoWC- zdx8ou6#^O0-4j0czQeI=$@tj;ARE=}yYmz#n<-I+jkz3zb_}=G|??KShn5>^B zcNt8Uyw&x?1wOJ4wa_6@c=79!@0EY|<)hH}5B}0;<1gR5Uy`A_e-YgSAu;-_eD`y~ zKNYMS{NtHKacPce)``-rlSu$<=PhCIFLChS`C)ZkE$xt%O_JkR|lYBsuv~O&* zmIvamWkRAP@7OdXUlt_aeIgCX(Cm;LxJQsY$Z-?MaEU>&LQO7zJp&zo^3 zX0&`n4=wjgwQTaY^WId~t@TS&txxW;^*UNVlh)x6@9xK4&+F9w4>H>S(bd^|ev2Bk zo?H71zd-vlX@B)guKmG&`}ldR3*D2^{t-R2->-A~JC|+V<;^9{uE?`3ed60?#MDpD zXXr_-r*?f{=c7cc=0#yv&5N`~RH`~yKVKxrhI+O?5(U??RjDo2T%8SJZ}c2=ogaUz zs%!!dAY-L#%U|%_Lqg3Xd3WmzRb^-M{V08BqD%EG3u#YaAwJ$yiX!pD6!RexzlzuE ziy}l+NgTC~)*|I^MLAuuttPgiBjkQrVz1^fQ>--tXoV4A=D^gU#Wm&stlzgL_K)h= zQxTTzIe`CGeZNXAE}8ulYW^ut%G9^=FP7MR7e8a;NBHX><;R4Y<-9RAKDp1>@@ajd zi#Va#7v77ov!_U1-$VRr%3qJ3XiF|r7!}nC`5HftWAxZqd$8m${55jbB4uV!Cc=U4 zQvBnei5?d}hsBz+DA@;>vh|8(w1{!tly}R{)KYo6# zD2YPRA5dK107#!QiuIb}hOQE~%!QsZwMzabC%h}Cwj#)pBucC|S>++ik4#t!^< zI_F6gyy+Ms`c>jrt*ak}l8Fvn0gZFy6`ZOoQE;JTn2!ZI=6^@)N@dB&z&=21r+4rV z+z6_WTf@8LX#tzLg+`6m=(%dF6c^%bjeS-tzx}>z<@eYhU0YF@xZi$5BwHJ5{+(b% z7Ml{}Y~gr8l&i$|EemyrpHiP(sZ#5rm(s!L+1iIbhIz%_{2%b6vuzc5E#bT+3hoYdzFFH9%^1gC(ORKo~$N&1Oy#PqkHi`)NKv#Y0;|&5s0x`L}hh ziNDf1?}wUi(1Ywwt)(3vj!(-I(~Z&fLM6U7Ge0wid2d3#`Em6(cD2nq9X*i&z@T61 z{KwEEZ0l|JZ)6+9l>vG@jmz1Fx4I%Y=Wvny`V3x%Ho0QW^SaT6J}ke&`T$69a2YV` z1`ENXoQ}uOu_CfnG_YGm!&@`Os|!Er#@_O^*Bu=C{pd3^1fJ#e+l)&XLr*<+MnCz z7Pk-A@&$|AB8C>X^{d5g{jv^hvobAd+xybuW%i5rzkU-1zcn&%(A9;enYY>0 z4U5jv8pEZAWYtBBV8Oywp zY*DbvMu1243DRd&n~YN=J3_dBZ}**Vi7rsbM$oYl(QoK+B#$Gb7wGX6>@VI}>ySGibGZWkFqUJK!#VL!l2*lB@I;HlTOL9g@aX@CCb@gJT{{!Ziuo9E{bwYj|7f=j?muOF>iygIZ3h-yI!HA-Fs31wVRJ z6-x^{*|HeAv74$!no8^vdmv6JM@HWE>&`dVI(%iFeN?`7&LxpVpNg~N{T~}2uYZim z$TTEtViBY1oGR(~k_qwtt0u%3tzy2hR(AmA*-m@(?(QIFrLtFt@0mA+KP}k?U+={$ zdKh;t{+r@Eb{lom3C{jsE4J+E`~WP(sO9ge>gI)8$<0v4U5XdDi9&@YdhC`L?02y! z`a+Z--yHh6UiYUBw(a_8wcAjSql#t|qwkD-=__Q38c;qXyn4o9+r}~hi4>PL%paB$ z?ekdWu--mW0ylK!FC)EI*YrfeZGQ8FowVj{er~(kpV|JuZ2${3{l-|;+8<%LS<;+0bKLh?#PP=y!b+$6gYe&PcZ-fsXbKYT8;WZd%yVn>YYQ%Ek;T9DOy>u4ZMojg zt8(`LTzQXn?3>*yH&~BLd5>}_OmDL0QFk|Q*W5*~49{7~_}cB$B~P%`f@6lphkgIC zt4m4N70rfa9?t&V<$>dvI5I!EFN~NL54%5OCP~gjy&X6(Q47VSn5bG(mx*e>n5f!< zlK+Et08{bD*|#yKN)+T9d$dR4eH%hp5NJt$7w{oe1nFtN!0AJ#;Z42|MG%8SYvP)Q zCvv}W`mr38_nIDdr{r_gWI95O)<*4~92Xvj{lB*i#)3!uwvRHe^JqCW4Xsd3f56Rx z^ZQgceBB@Q%+=9Ha@tv{k{FlINHbdh7Ozpa!Rn?Ck8|@9{#iOFCc|0)Z`5z&_E0Es z0Qs19e{0%FIb%c1`{z|I-rm5+>-t6#lX`WGUEEaLtO)@OCgUd zbYM;expH#`HPwA;r#ixot9xVL`{gkcpykN^D!;cYzu}zjasx6I)-|w!L5F z;#YUUe@X;YtNXu|i(gmT*hD<%B|q)cw1QliQc^@V=T;xS?r|XvI{x0e}!spe5{awBzBfQMn|+D&Gf?EbKo!H5aGcv z@QAs0MBb!?K{m>f^Tgrr8)ori#8UJ`y98kP4f)EbE7VG~D_3CdWWavX7Vs<$m>R zQEq8*gVp1Rcb9vHc(ZP`PN){o64NK>_3jO%6Zm1hEh$eFyv`5f6Q)mnu5iV&Xn{?w z&<;42DVSfZ9sPCwpZ-akT(_!?0ic{oiP@Y}d&KD3qIsPkNg2hnjC$1TcKybl34~(Q zX%OlpbrWOFNtW;;XDF43B+h^+Tlx^Gpl==l4Ei>Xxi6u<^c^4T(--gEQ8#JONYQjH zpo^xOQf(DJ9=6K-GrT~yjrXK3K_otX`FVNKu#O!k#(0NR=KLAm!1=vfUIUh<;#L(z zk)ZLQ1ZYkO(g%Mof=t!*%|Vt81oPLKXcF?MK{AlMNH%xuWhk$zwpdlVF$d;o;l-_A za3(%<>kx`a6BTA?qA9&P%5?>gl-zp7+?u^jiYTIqqpLvkqcy<(pepi z4JR(_C4DkHLmxeQDjoVg9SSOvLb9-2BD(GXR+GL~Isx9M5?mtvN_?estty%QS(SW2 z)nq|G61h{R!r)K-GFTMwRg(~jnu5E(6&FWXd`|lJ~uhABi%4 zErE=}j>=jYYpo_0Eqq}z$5>HUh4zEv+zJsj+E_6*l9<+uHOx7~;g>)z4lf6FR1Zmh0s+s3%D z#f=-SHg2ea^tjPzGwdS>AV~8S(mqA9{WM__f96Cw|0708!tH$D>TEZ zNk8g-l?s}0_RXL{&}Z>GIxQ^w#)1c6-`Fo?3tRd<#kKZJATaxVqwu zDh;hm{f{O5dcPx_xClQJNtA_DL?SYTthq=RQbo#$FiiE9_?f5snRT3;%u^McY97y= zg$y-`T+*L9UHNUEQK>D{%zmoRXB=O{vs)kD8vUADv6g8?EqgbuOOF)p1I8O4l5g%W z_-t{m$#<{K-F`|iQiOgYDw}uk9qwz)MvCMSTp%L_sk$WSR@Z;?4XPdINZ*eXV{UQ_u98?zH_-@}4Mi^wH=ddkJ>NTrrf6xDTB;Kr zXStSM9vPtK-}k#_Y!J1tels8Db#JEQaz=yK{)hPhnWiJnC-)ieh?_Ki zaMvp{#LncC#*|rVY`J(%1(;hMOdL9=QonX$h6o0r&KHgo1v6nCv!AgBLN_;Q z<(!5kL6RiF7%t!FT%|WHl{N@IcCJDUXMl8em3}hZi&bFai&#A$auzh@DZR8)Z4MBI zyX3E}4*?tN2AkQSk&}+Or#^K;j#m&;L>GhxOt4zQHf)o1QMy*>ni!wj#;oEF3zju8 zenHz7#RBrERAJeKx0<+Z*gj>Fd@h3Z!ef7senSWy( z{Z})Db!#V3%@(1u)GBwy6a?(%Q{;XKh4X~P3~UMtVY5t*=S$5$KaEY*60{;3s<1SG zT2tpX8tES~sHt&L;eX`IC< z-LE=U)xM=e@dvzxiyZllCqTzC1IT9s5N_{a&p3--TR!3s?5FV66`cQlz}dXgPw{G^ zYaro4?r^D|T@B%~#xYk}>lW_Csv+8d#m6ZThLqwBxK7YGJ|OS{EK*zBIOddeIpK}O z3M&T}!4af*#YJ&8X-?pu?jOFN4?Dz;t8+RqyyL%Oj{<3p&~_O_|VDOho(jKuf? zB>Pb}>*TPK_;CpU>i#8}4tIg2NW2y^!r^{=qCfXATI}TY05Ick@N}icY7OSM9iB)XbA9zT8&TYIl?+xF9|hpru;IMmoBpH5cC=T%h4XVK<5 zn%IjbM8D1ZN^-PgAx*LcxP%nt544lB2qu?Em8`JFT))DdRmn-EPA3Tl^*7SKIukB6;+PTJ!wo38~*%3-Rf>NB;+FK>|c=gKO0}X)8;vl z#SH>gk|B0B`h#P82Y>F}NfCIwub;0!7XB!k{&2aS{%|!&f1F_LoBpuoI_VFkcz-u& zv|*W29^0=M&{jz7kwtmjr9vs?@iY7ox+{-@DV7{?o^N+?f1Z+UEipL>8#)qu!mCCX zc~z#6+FMM&D)nTgp1_~>##`9*<&3LQ^kUq8oj zi^KpnGc}B4ESl-v`|e!GpBONE0@KoWITI!6)Re;b+w8-GrTK_IPY&5r&GQVg0WUav zt-{iO+@AiqE7grB%@4=Ra_?@QkUUh0&mXVTuM$2-9m{diM&Vx*2?G z@tI3%4^4~WE7jRVab({3O#7Viyg~iYc-}l$PY8rRnA7?r#buUemh@J8oM%IOAoN>1L-a#) z1lS#Z2)5Z3T*DX+$0u{0Pz9EcjIDL^RR>%;tHOdmRd_2@#%%Rl!`TQ@Fv^nM+}Tai zSejYt2Tj#Jixhue1@iC=ax9E$`^50|NCbx3tNflT@ zKM~7^E2=u1dfwwmw6}^sXGU8ak%rK%gN2^VHNd^K2H28X1bpT-Mmm$%x?>Z7W{5cXioQg#6MpGm*Ok|Kq@7}Ff8;LGsD;CL|t{-2{7}39} z*Hn1y>ExI2CFR=Hd4W+*B}M75BUKC!W!{vC6p!{*L4Q6a3%hJALtOGD;~XyNMGLDa?Xm;lBe@>iMs-^SB&qI01tJ{4RLVbsT&8Vl5k?Hp8Oy?oCW;+nKb z-cA!xcoEy{`Td_y(4J}S?T$XK@azgEfn;%VuKiN2sMd+_sxcy$DS3oX@2J!6Meb~N zv!#j57F)bVFs|0(L=g|wjcbU+`H)$9)w{TlZzEBTtNkd)>}`^T@W$cTHeDL%YZh(_ ziQo@2Gs2qMbaAS+N(WhBvmFtC??VByufnBJ8uvky8aL)g;zw&fQ$pRrwe6+u*+o2d z&la1r);+t3$2<#c<>iK?MHO1`Yo+D5?MELS zKK<x0T`{wDu&e)(;w_|z=kx{G+J^w!`db}r4fZX_!*Wh@UeDfr zE=#ShU8VtjtzBF4aP4NUvns{A|1uGGDmqQ;Bs?&v$oT);l|q!2Y&D28S6Y?geM2Q} zu|%+5mj%|qm^0n1V?j{0U6sj<8v*XjjPw1Uu#X$~=I`j1`a8OPUz9PY3WA{kCp2z( zZ}s zwcTIU?EP8Qd_hBQ6{Zv&%9D=C_lBOCdCKlXHa#=!qTtc_-`Q0{o#L~}A}dinrM3gA z^$do;t4@KnaHz%u!H!_yW+u_RJt5_;znHQPc3?#hTA>bG zuN4E|?~ujs+~}ZA-f8>r(V93f|PP9oP*aK6W$vk+$c(yDOwA0=qrAw3GK|5dZNqEl@SSQ>OEQ zrQwABNHE1^95-eM{uH-@_TI@xBgcOw#z&p`ucSNw5qNJ+nfUL09~;^EFO}_QJ`ahw zU-ntH8waIwA3DN8R2W*mS7(A*7Nh?>pPLlO(DylSBOtX-xwTe=?s$yIctfAp0hrj< zEL8~fxqiQ|2t4N-cl3&~kzJ*E(o{q&F(m%$;m%Ff+h^0WxH{Koo*+9y6eyB_!uobt ztgP!{vBs^vtZ}h!s&_x|AwSesWkPql(~l{hOy&EwgU{sXmXp$Q^sJFusrG825)`C9N=+;--qX%@7lvL5h0B7=jgOjVh>T40M`Z9zl)SQbnIzh_bbe1YR zalhY+(^TF$#`~eBUm@ZksyhPyGu%2IYL+XYleWX_&tv_%VMkH@F$h`o+LR#e;{<6& zh9Cv4`J(og&b+LvucADMHpXNH%w@&@*ySyR;)A+(s>K`^oM`%uqy`A5e|L`VB%fDM zT`)H2H1$-L`9Dc*N33~U!QVf*P^2v_Z3V=&X?Fr8e?#|D{qXGrq(zGEb9N@;XYbsZZ|g*i^(4CIJvsP`^u(i= z5!g<>wS^#a2b|XWqulu;jRgv(&oFBfXop^}_cHk>F)Xx_^(z5mGQKgA z52?>>*fIEX5hSBZQOx_s6j^FLl5N=WdrmgFgR_iMFW1ORi$`n0X_h#;)_K*(FXy=P za89_jcCg^EmFwGBtMXR=^I72V=h)nzG%Ve&Sfx%pqXn~hzK1>4X|-&Y7-h6h^61RS zjFzhM>ikf%6hkC_c~PW%Qek~RQ-jGL83lxIH8+*!z~cm@dbHSb8DGn%lvIT7#AEqI z`1Rxr0CwB9T#|vWgA+F?=s)_>oC2|GnLmc>q!^(NEG}>$x>e5mmwBE7hauI6raxwVT1P~!X*vslw(TcplyN)_Uux& ziOS+~w+O}p=_;GQ-tCuOLWiY*8u*pIQdX-GVo8X+r`cN7BH#~su}Dqw$|U}zHid$Q z4hhG{=fxM~uQ;4P3d@F`dT*r4=Ms_wZt{DtMw7NwN29l3kZowuPgVi1Q%L!Bt^4pPP6z z84ER=|7?6hS%A)P`JB>VBlu$T@%Qoc%U4ZGhfxI#5J+i-NvYq8YA5QWPumtQcgy$? zlnFkYp~jJoLSc^j9u{~gmgH3oG^z=)`(7<#H?kouc6Mua{9uOWaIDY-?xPDNaBOKJ zYr4-S&%6H|iCN&Cl5rW=ddq4HAmUmRHeKTdI-S?Q_jSLhWBA%q^%aLS_P?xXzA`qr zqGjlR6$WuG%{yL&ZS_Q!#ziGkJ6(h|wow!E`v`g{`C`<&W=U1?X&S%%t@mNVmBMk#yL;yq~V$Ghw#VK1}L~O1Np<8?BO8CxXrFvgG!?Xn@ zO$3v_F-+8Orsi4B9!*Cn>O9k0&NKbn(qFBARJ#L?@{Zlu1DSW6@+CvfKc}6_CLHm= zA1mlUSDl!Z7fw9tU)y>`@z!vHKi>W_D7gbzlu@>DtUp(4DJV|@Q6?cJUz#!dh5qps zSIF~l*A3)Pen!28*K;%In2pm3a zZ^u_3TbZL3R0pu`?P|INXp&o?noKIOE}*TV5a-Lvw@1&bju%$P!+8S1>tL3`q={Vx z7c{o@M9;PJJTVPa9Mu%25%q#2@YPyc9tp79d%6Z82{P11L zgTM-z-*uTo%`t$ij@RV_7qHDM8vcu#nj#q>D`T5>#CT{B9?R*Tt{~V}Z2wKuke$+46telU($3T4}f+Y3a6&r3pGb+sIsY7b$lO5QweX?iEB)nN_h^> z$EM}uPi7i9p;GQnLZu=Zvh+^9S_}lDlOrE-> zVD;{RzGzs<|}0>v0G< z;b`me8?LKE^i%$?P~u*ula-|psjp-2b+SD_9%??Cyy%D5c-Q(nSJhJ})cgs5YvO~7YnVVF zxtA8t<63V`U1m|ZfXvAwRL~zA(Sxt5Cjg=10&0sYXnrHq6kyQ)XbJd)E&LY5jXNOCEn!=X`bbd09*wPYu+Tg4Z8% zf%{maz>u#VCh(ntN?w2h{XD$Im7itRI?0yE?XB{OF?aK$HO5(jPy<_pp?Fqm{HZB_ zE0lO#1904~^4v-eXnRJU$hpmbF^7RXdZ{nwF;M8ET8XMSpI^nioTHu1yC_EYERS4c zH+Tm!7z@ABs@*Z<2HIc*OJl}O&vZCjHNq|vhX^H5KER9hMePf0-AZ=Ii3(TU~Q(H><~7TwHvs1G1m6)A_n|{D40*3Ss{U zbKT+xG&*OCoalLOZ5?)$pMX?!SijAi>kGhoEzjNq)Wh_I8`8B34}R)M6|2d0Kr&Ox ze4xs8SER$3Q=7i}%1F`v0a2>C`(~cZI6|JZX;NQm6>I!axVXdvs)9)$(@8Q%;{7Dz zqFFeBb1df3GCij?`9G&ROQ(VJFcjT8)YMNk&_mG?Ss%_TD`!iK_u--PqqbfQu$wzh z7VB75^j%g2_KSDg**3g7=me|52ivLZGg_K9*G~;L`Rra?ikUt5C=amIqC=&DUX1R| z`QPy;b{vMXzZ|y7kPptcOKkLg6cLuA{gaDb(MpOMkR}-o+k4gLS91L#(IFeQqZJ-d zE{M}=xeHDvcck1owh$}w52OnIQ1kUX)Wk1laIVfDzS(9rqL`sCZBSr;Y#x{Ze)-$QpD&+%*dBl0xVFi8q#dO#ex$e`IwU zr-=trL;$@*25WZV7ME4mMrEb06R2y8U)OeiVOBh2vR1L_kjfmNQNY%fm_NKVs2}3L zQ1khud@*EH6Oj_1o=ExnP(pX8$U+a}c9kMN^vU4b36p)J9zJcL`JDPccW+m+Im?@I zlv4$>T9SjiEXZe>|2$0FZvOLEEN|q$o!&|Q*Xoz~kNq6TPuOXS z(_2da%Xpagh3@??uD1HC`Sy%!yq;i31ID>>_0xD>=%-KMIpoUMpU(3oJcD1VC*)>g zK)qk2nCHBMt=alQp8tE0d+yJ3i%XBDZ<*=>@2`9W3<3eickg|{)%N|F=nYNaW}s$z zvH`-r)hXSRLHZ_MMTXS;Y)q|BfB4wSWlrjB07~Z_=;tNAk(@=k5u%_9P@MjJCK_p& zpO+II(J+6X97V`0jhDyI?Za95*tQuhyPlWG-^BQt65Y&BI|j^5VJS3B-P(7_jwc!0 zrd*hcNwHDj1(0m3ga6WdCT9>|0`X!#wl`t9+U#qfn$BYlaeNV{UaR8cneUv$5@DVc zwCb$sAMg86een(MSwWZ1jg}kkZ3QcLD`P__r3^wDn_?V@gvBdt^lxONA zO9Mf{R0FrsKv!DO{dolrUv$WJbu>wB0RG|Y@PEErXJ-=yclbEv_QHYM`AO$Vwm}?n zeBjqIv|;|JoKVv<8p_!kVk4|brx09)$qJYGuVCEtr|3k9k(9VMdx`HcfuZ^-FuyV{ z3@x8jn3(+uZUDXJM%e#nv(&cV9oZse8Qd@*4}|R0_XWOLu`#-EWhcUWmt@Pq`pF=l zRUXGw1{5|k4h!8}1-Yvda4fd5)$5B$a53_7GHK=P+OoC&K1k2d9p|7E7w?waduIWxVFx>d zZ-YK@D-d6n?E~@cz{RFpY0$p}l3^oLa1lG*d|OAwcfs+W--%(xzO&o<$b{T0l&*1Bi&&^8+in`#+p;#8HvoO+la?-$H6 zzywQCoh@bW-&Oh$YQ|djt)u7(-(PdsT8W%Ld#TfNdTc)?oSMC~ z@+CLaRAd=4;K8E4qqvRKmP(xIZ1VDDk;H0(bkq6dEv`(>T;>J1)*P(?LSpT_#@dXg zF>XX<9&@JVFRDRa!>U2}t!d`s$VHT>DSyHyF;h)BK`&Tql{lTs6ii4!!xzp)mndA(6%GK&kY$6Rsdo0QOb75_2)_Hf&OmO z&q9`UWx7Pc-v?k0`Zx+{{RO&Rcby-ttSWwCK3$Iu)RgYkXkSjFwsh>nUl*?5=NMOi z^pKkPaW(R|E`KiCcWnH;{Eq!f|b z5^R@cutU|7J4_?MNG}R!*!-spl+)o)}Vrdo8e>&lg z2}!Q$-b4YDC|K3s`DZ@QY*wm@sn|$;p^*yJAFkA`xmAhtunKnW6}q_q?y8RG*ATs| zCO*BeCO)%><*EO|Ly__w(Y}?9AN1-#^tKSu4ciy&+ocPe0j3UKt||W;?fl8L^LMJM zY`Cs4cSZ}rS=`IPSWv&?QI(C+?G2?>OQsf|SRLQ18ei3FT@sxbbJ8ut{Rm@k)GKV7 z#r^|Sx=P+ioKntVBh+-cs#Omfb_|T}ZT4(O--aFgb7^a3+0&usYQ9&;|A*y`A@jgQ zb@^9vf)gXn$MY?Ii1BCn!J+2E^g6ju`6PmW@6WT(_@ZLtnpvwGSG|cpY3SyU>0EaN zZQjoiRG%F+V?bXg)F_msp(fP)6Za^@Xx|#dfIsY9Qd@<5r!Fn0;RUs&9HUDR^A~K_~?0EK|8+Z1)zQ1w8pUIy?=<}xuI@d>k zHG8`81riA!96t654tRx+-KpagZ97g64}F1iB4xvO=`QBOxk}dcwgTdZ8Gm*?J}z-+ zY+R!Md1DjR?cwrQt{X~x{Xq-HCe9L3 zWxQ=E0vVVz*v=Nb_si3|2O0L}59&sUqnRk zp~U^dDV<~Si`A=|c#)7bmfhGYq)#1rK2KPCDb(CXt&zlKy(01BC(pRt_Gez3bD`8N zBNDD*uV>(7aoI5LU)p@0kfL20FvICdwUQXpOodXnGv(LFiB0hGQqOof6#PHMKyWoZ z07EZ>p+zrmJ3BG@4#fv5Qxy5i-nNu3t0j_r)Zz*7?c(UCd^{tBgsQ#$!J=!zsR zf~uQD)hpObU@NKCfZv<}{F+h2-1^1fEbv3pT0xI*TL3*}vr`qwCnoxz5A~iD*iQm> z@sl-@ipDV)o+`NaK09{BlUq9mSwPdbYGO|Tx7Rd6U<2xa1^a;e*h|S$Am^r{Rl?<`VPE^5~DeZb3=dqmw_)scC;?6u(bePv+Uum_jA0kA5g()DRx^ECgbeS(>BOfB=U=V-QKMaL zcj~QtS156!Rpsx5vJxt7sjjpOJhWYHP5eu83(+L0Ch-l-nMW<&LnQWI1}2J6b(p}q zc*s`eapPv^WE~?MPkV)${=$=d!Pipl*rs=#F=n}6rQ*tu{@N?le21DwVKPZ{RBJKS!up(a3!j4> zld$8Z1)%!UVi>Y!q!^Nk?tMmpiLpxyV8}(p@AElw9`I$X(N|=$=WS(O*mH&Y40|$d z!c!ggocNyD^L4SO=cbX5M zW$~+$muw`C$LZvJvp1?0p71EK+_Buh6wZqrOMLs<{P4${WPjFtW8J*S&?h3jRuTX2 zWFeTlit;h6VvlQm@OZF>|2B-Fbt!3HK~$t)_(ptW=idDjD*@nT|?9(kcj2vt2E+ z5Py_*GW3jh;7UhC%L}1U2=^2>P!PG=B!)~Jb@Hbb{2afOH>VBIbz#cq{F8Cgv#BGy9JYM*F-wLQVzspGn9g4IU#ThQQ41z!OiGclwojMX4ng;!j}Y{$|22ZHgsz`W&@$FVxn0G3_XL?$ zYrTK++tSsFdU$UE*vW0RCAl*Dx!YicM)p;0%D#GJ2t8i>j)jDZJ>>jUv9Daj#DO{! zCA&eohn)|s>#E`lBJt`X9U-cUpUbrMV%!%lFRhBtub`vTchbZ1RsOA)id;}@hL?+W z>+GXYvwW5st}kVqU@!aXNB@Z3=R12mWD+Egj5;wEGA_L+%bw#N7Z5!O{dVN>Io=18 zg>NE#ndDD`)z2-AUsEC<>RFtk`ptZx{G;bzNfKGbTmvk$dW zyrcc1t;PiALtSS+)RA=2>8@y5+JjmtUPlS1qR%anmypATNwMrmj3w_%NFjymI$?W~ zD9NzmBmY%x$@_7QHF}R*;`KRErfb;hc*Lw4P4^fy^UrXy;Q|M9UFV4GWMZf zrnOWH9!+_v&qm zZ_S>@OY)jPZl^PjMYgHu?drMPrSHgft~SlLP+NLG=6U6~!h>@f5wdrQ=Jg*~SwA4AHARZ^*7)-s}9)bUPFCDu=&d*ZeE8WKBVWQe#9b7-4Wf z3*^~W)GfNG-nw&~m3!hpH zyTE&Icz2+~QXfhnH&EjJ>0zo)h~OAi&^KF7PB$D ztK+O}ZI#iM5U0G5`tmGIL}|j0I)X92OHT96D|3;5-4fiDm(^~*+MSYWcS6|Ts_uk6 z=;y6m>Ka!88h?j|I-!pKZTolk#t-Y`?Bi_hyTxzXKAihoxe)pJ-uM>tLHpqb6c zeMVt?atYBB3r(RfwK^CjXBF8=qatsiN~D6zCO)LsU9?6v)(SPB2r5Bwk$<^0$SpPG z%A=$+E5CS)A@`^NmHP;@nbHA?3urg_l8;JPQ5uyxkJcTPtBCB{11c{&1XQjXZ>TKF zhRWt+gi0F{15|cFWbsgkNC!)IM4o9iWFqn;l}I77>VqtZOypika-_Vqo5+NkU&X~+ zww5`6KC2h*FF>-Kvhj7Qc-SUj*jjm@Tl-5kO)sAaA)3JxV?;GKB~Ba>jp~uxMkkJp zeoc>~cpO!qt402=hvVj85{?reOLstW8`j6(@R*ZCH^VFVs`WtHKTu-8qDHa&9(bQ_ z5dVW8E|xLEb`+@QeEr#1fBNzV{Ww;q_HyZtL~EvTNLn1EKkt6QxI-Ql#`V^^^DFhw zsi>4!Z`ndkqirm8GgbnK7X=Oq()0pu1^;uB7h0~=5qJ|ujW)sX;5BnYlNckP?2-87 z!btqQBILyEul3ZBnkLx(b(Kz38of%GBWUW?S z78&v9u~qvX^;zt9|6z{(WC~-S>ZGl+UDp?udl1j&Ar3#P-Nz3GIwz5To-W!0e#Wb);b+-woi#m$|!#s5iR4LviRxaqm>@x1G ztYAT=lxj+=VilYRZLm6|!pdwcDD$pXnUo5<81!^!8h$jCpJNs~pL8}w> z@`(Aly%Dj3sb6#;jBn@Bx00H?SDzBOKR)1i7TB;a&kW>5%SLuezsiK9tq4T5xIs(> z>3&{ELBKvrvGuw056Q+qO)Bil_P{?!s$8OAQ3o<20EucKCiD$z2@qSZT`UDR!uwXN zE7N%bBJWSL76o2v2Jt+zJw~X?(#nQyhlHAc$~RnC(aEelBnlRQan9#y8-PKJ4gA;( zcxHxm$Kw0i$Q-T3PIW?&8(6M*$c!sHYz6)zP8*-)?6hB}k*Pdg5xSHpL?KG8!i zqaz!AlcwH6+gfUxseJ_}jzQeidIj2W4qghqQGs$Nq@8Ja=)WCb0)JHZo_)&Lyy<;a zhOV=As4Z`0gN^@-G7Ak0-6$py$IWDiu@DYmo!^-{ zYB94mDhq3Sg&H5R8ZB;~_r}e^{Hgw8u_d3~_)Y$bu6(=VFdsZu@lpemI;prG2xxH& z88nHk^Cldrk+Cyd2bS%L$qIn(VlrthgZq?;QF6G2IUuaoMgb!cV10Y=y~H|56#U!k zp{Q?O$&C7$0YL=es`7CJC6VFhE@~b}P?A4@%$(#mEzQY8Nb_TFGQS6lzbQy?t%OF}{`MEM>qd_Nlnl=eh ziQG^2V<@`o%NmNhsMoI!o@M(ZHc1ezdeE;s&AX)Q_*|^gyVb9&t(;p#(wMA%+lZ7r zBvrJB5ow8vrbeVczNrp(VMw{d?4(Pz-M;vgY_d`r7(~;y{Ien_d9JyA`|(9~wMwd% zsrSgVO!L6b4wrAe?rLruVzxKFh^xXwjgwiWh$IG8OpG78VM6?Z4S3P%XnNRvJzi@V zsFEer!F}T7ShRs%>5bmXMJE4C)qp;x8Z7^yYn!2^UuM^vAs<(#1x2V}_&apdI-5A1 zjnQ-peHaFZGGVRX3muLtUtx9QJaXRjJu-2F4loU_VGPP83!azd&sRQ5lR2U0udq4A zhx!82LQOAd!5oh%)?bomY1@iv*IM!g_wT?sYx-+=uE4*1G|WTC8j!!L&_Irj1rJ{E zuq}AVvw@C0E^L8u92Yw9IhdGef~Rtju8PO4{wFoA6G1waps*o#baI6tqiR+i+qz}U z*B7+Bnj~WpKaFFW3&mq&RKi-1vERo^8LhGBXU~FJ`+rJT@exQhm?- zP(q6CHaaJp=vf%vZlV$=e^-KGF59;o6U`(Q zGyuG#c$rGZreTsEa8OFBt@lsiZ|B{mT|{R~yf{xMeeI7O{#d_2#4YCqYGxl3LpYZr|qaca6jXLk6$kL-Uy zHF>#<7VTkK@bGZ(&>B3n^WbY}PQKWSv$7>GD(B0~gZ?LD9IdK0&ZieQ-30FZOUAX^ z!WNgB(1z6te&H82Bvj%H4`m3 z!oKHAYy@K)fXm~h(s%ptG^B0ja>bTkAYmBJP^6M_2i!As*5~9xC*tG$lacwRjz)- zMKYp^Ngrm0K^N;PS1S)lakf>LRj$4>Ky#qZa^=YBHtD?QU(>k40Av_g;KrA^#4+F7 zc>Nq}1Wvyw;Pj(ZV1)IWJiqrx&f*Lue=+6+@lM%>klU-p+TqJZP%f42K{u0x;)8$_hIKexLm~JaI$rX zlg0XFbK8EAU(*S}bVvKF`;ect%s+0H#lU-#0=(bi-W82~lr9P1vFrJy1!qChw_2SA z@=ZicdEOP)m%V3zqOXm>-fY)civgiyvU&oYRQk-SX zwbf4a5cNH=sCb^+KhN+__=Z`GSDFd7#AiCqmdoTjEOEf;S1Qwazg^7SXMYI2`@0jnkePr8#X!VHSL!6|s>9V8EQ zi?<>3oSMs0T;Y8!0}7G@C_qyH3I^n&?{j{2j!ZgQ0*UZ3{Ktr>7+tI1%w&f&d+$rl z89d6fR*d|a`w8HmIeUJ8@SK~eJ|9#KxsF1Dy|2~#Hkv9EWCrE$xhNwItIqtoqdSm zOTxE1`e(MA`Md(IfjtDYfs{gqm0$VKOgtp}cM*pFFZ;jXbM$|h>u$RLI-mT%)qlI( zDo_jE`Y-w4=H&lc4b+R@G0|WpLj;uk+b{CpqIa1K_UrB<#O_$cg;@GK%TAiL^05Wq zQk&1|57V+)5gbzG$2L#i;WKN>+vX5-*f$HcA|mTRwMVqhj)U7Pn3+|Nmhirs`xS?2 zNF}39ckRY;LOZaj%Q?dfLTdM75&-Hy@y}%US^xJ;88VM&t>74M4II zmr;)->p}fWYwh%Y^j{V9-9b2+aP!&l8BGn7G?aN~_E8D{Gj)}Pk7XA~8vWxJb-8PJ zDBk+M1>4KM)N z=iW-YNQwslXUgjTc%yXJtZ@12YY(t1-F&`TyhiM_8tJaj_44O#+T~5)4=Xs{nfm}Y zzo+r*#%EJtrYf8U>t#271)Qrs7P)Zo17fEeiLpO5B`NOkm(({L-BjDzIPMYyA>~PEC9(r+C?a3GW(v5}QBvWJ||h z{FMg8iD_N*05ss+^hI6^7lU8zPm?qa$yAaK_Xc{x5a`GqXG2;J!_xu}-w;B61V&Ng zw$kecca$W;f1&-k0|iWffD!-q0MMe-{qsj-`WF#MXYVls_{lgHm;&_B6rd+{0@N{f z2GAe=!vUSt;g3N29sK_n@Rt}K;P392yWwx956b@w_IRMr z)Q~i|Y*Vik5Hw;?Gp`*@qN4Q6+&ymp=r7d%!<)0WAG*o50y>W$X&eXz406G!>Z9Pt zOPE}6am)Bzh4@C&06t| zqHlnN@+lS3lj4)YvMIIE0$wJSO_>z!j~mY9vI&!S zkEwNbxm3Vr$xZ3OEUh+DPsV>&WZ{2@JLCV;yAl6^n~a!8`~3jb){p$?AQsKarxY5b zhn7t^bhnTi{s(u4_KHs0?TgAsUkBeF%4f^QOcu+K&x^C*C#@fBSB?p8XXf&5YYD7g2 zHUICo`n@@l5Ds1-_Ye!)LDnUw;K(_lOBe&H}?P_*^91A)eRq3Yt_c~p9O+H91WLw9HRgBv|g2r34r&OhO`2IOdi%sCPVAw zjMjA{wRt3zcPl6fpSIw!+WDKJLGtH&YJk`PAS(V0!-LiMGc2EwnGFUe!J|_K#JR81 zcg>eBAxgRw&YwvXiOFYT&_nk`V7YHN{Lh~W{`+gd-xu&G`0uCzKO|0w3WNe~@Xkm` znVsOiMq4$bi!FI}7dKwon$dM!3H)8%ZQ<_*UpIGin0x4+JiNR6LVf;J&d<{lO~LMn z?(_&JnlKVq3cW01YkK|!J+$6-FLVrC)eq5J4>^dRD>ytCCubU7(yCQnt`ZPUPNbttO>_um< zUCdrUYT09xGh*GX;JHxbV{*oY?u!s=l$_B>TU-W{og2ciXX@XZYsX)h{C=D{s!c;B zKk@{B_thYh@imD27X7<bm9N15$r@F}Wa2iq162?2 zqOA)s&*{~@w4D)nY+frKh5!6v{(Xf4>RkEvi#sA9tBZfj__j617j`Gr_;N%q#L(6@ zq7lO@`mMIWSIhYFB~k2tW5WRib2r|tjPWlk5|(g-62Eb@2ht0u{~LOO7d2gZ(s8Zf5t42;wNhUC*u^e4+BkdYBN zOfo(lBIU#CPUw!_2bI<;ZX6L62HuTCNVSmEe@^;EhX>A0zj*oMi2k01exWUphpp>c zAB+nhl5#wer5DUK`S-vYQxmf+QvQevWz`3xOqjxi=_zw9;mmVw&qooR>K`0L#h)Lj zh5kSqA^AC^2K*c5nDF}(7TJELZA#GEJwdDdPJ|!cbU^W6vsGBWxjs$gN5Y%dv zp@McV)-M;i+u(Hr&XbG1_Qok0jfJIJk~6U2tjSU%>Nzcc3DfUu>W7=}mw~9AzqCls zXi>KW8Sr7mXq=J1pjRS4$W|yn!g|FgDe)JJw{4aRIw&VOBd2aDmcKcICU(}kkEZDRPpn@?&J>z8`yXQRwXI*esmx~o zL&&PJeqsNSIlTYCmh95mr2qEh4Eq`SzbT^sr(eHl3;tWXeigQU``78{XXFe;KZ~l< z54U^nudXP%C+MA}fD7BJva1oo0roi}*KqD$SihaZ&Jc(IlvHiY^)hU^a{t-RO-tEy zrRP?dujQDxsbol8d@N0#Iwc%$*4gBQjjZ}w+*T4@R z1g(ajYk59kn&1a$tcIUUu!CSPNd|t17e{i2qi(zm-4KD721>70{eQ6b{)hDMp*8gH zzJN>VKe&`%ZI{hz=-+J({Tl-qpE4|70JSD(SnCG#rS%bj(zsf1xN3L^|2gu1*ig2!?O#4p7SXSW{mZ|fiGHWopx=UfP55t#5Q}7MebuxL`#zSW4?}*yZ_dMT_(9&X zxyOF=NY3a{H+g@sHliQB>LhRV{joOvCbT|0&G(IGC!ZVrbdH4Y4D^$i8&l8KDKED^ zp9jS;g(z;g!EAB8yp#1^4aebqhz9Nk1@G7MY~4_bb0$%dyNlbm_pax<5|5c((z^jP zYG2I6o=H(_Bp)BG=c&c3gE0uaaRZWZU?^0LTt-?LTfN#Kp9niY){!TT&TxJVCU)KJ z@^URvZrq&DjwuWXj?GD9i!4G$+ra@m0_k{)x!w^dXT4#&RTqM~-Zy-|S*B5{=t+nZC9u%CIZG zW8=iyXEX6?HVq)-Xk{YLn`Mcm8oXS65NFkvJeGj_6)`-g#$*7R#rBgOo=px~*g>{2 zH0O&6NgFu!3}1Q^9&W=8K%8IxmgLH9JDf$EMju)+&ZptS5YDHG?P?6SwvdLV^G?FF z-~tR$3G?Fq>rVC$N3&>2O7qJhzOdtWJe1`d7DJ@vs?%C2J7%`$COn$iwKfJ7p$DHV zMh}{?2cG?89LZav<3^6TXU69AxaivzVCa4>kumPO~65&2T<- z7gg&T09_CX&=o;|aQu@1^#efa`|_OVNT{ZazIWUffHk%TT>Eh>jMHIW2$XQlTz@uz zgfL?O^3J2c%r6ZhVVE#_rob?v1`M|f46p;92~X{C$XS~j2szUT^&lKmtHCig*H!BX zmD7YQ$PlL%&hluUdk~K1t-ueMz=aRXIp#h z8P!rneWap>GpfFdTBD-U8TI{(p8_c$qF6Z)B4_>d)^CUNYtluW|DUH!orL_QRGm-V zhp7wxB4?FxKDA6J#c*-9TxS^9NO;EFi4&#A#WgGhAdt zJY|6<@J7?SRrcMB%G^!+6@KY{G1GS!OcQ_c;L|(+yO$98V(!~=H2~X}bU^=i6nThg zApo~*m;t9!m%-)5L4wXRr!2_Z)C%-%02x=31NgL7PHtMpT=^S`C%%5cjyPd(lZ7)q z8!|l=(x+Sq6Ljb$7I4lgX# zPmAS)pL~@;-*h7}A=g688!Xk)p}Nl_#nYT%SvViO2^X^Qzyr?*vv%HsC8pAg$5;ns z`ubM!ZQMm%st)!=j~wJ{T$br`98b%`gD_1@Z2DhBGOsI^h>IyS&^xM3ALwd9UtY0Oltqx=m}>kK>RFjC5yuPWUGx&9J6Y23!OQ6*LpZ732gk2@R%~a4|-N zuU`3|8k~X>H$Lr4i*RD=13{zyaGYkL%>0G9*ppfvRX#6&%ny^-MPDPb1XIP=a{s=m>dlHu?e%N$+5*hd;Y@hU21IjzbL3;6 z@tz+P3*_x4fKXZRwR{#CD4LTgT}6A4KGd@pq#hnR5rc7+d>`)BnC4A)|Chsq6UQ;z zkcRWec%K^{@b{5&?4sRDgwX20j^W*4%sYUNgZ*s3*N8n;g^0suLqV!fsu8QCU=mv- z9cN(_?vTZ1_tvih6Jjr+IoWaMG;2c;sp@!&5qTDQ1pbkaL;h6D9HbSl-`@-;3V-8j z+Yz!p?2NIuaO`6__PE464rZdhbhpMbBvya&admDo7Qk9I=z%x(R|Vd8BA=YE$xP{D zb${ycSgnB_L8Uj$qt^G$I4;%Rmw;dlV8}xrK=2)3Q_PF|#*1G_`tQ@L;%n{>2gF zclGP%Fn<4%@!Ob38p$P%K-D#_@IzxzV%EGRro^#%zMnFs@Tef(ETC?cQPp5Usv^SK zX-H&)J{i0TmpNQbaoHL-S=ds+kvymtnBjP)2EW^n0D>u0oj_fLMenb2U2fz8ozcRFFJ@P}Yopd& zj~sR^k?b^bj<$Z+hyPLm)&;xs^5Sd+%n1T*vi{Rff$qZv3OZ06?=x11?jx1!MI)C? z3LD9=`!!K(+8FI7tmQfv?aKT=aIChrYoo1@xX?HMyLKuINeX`hMQ>{UiZzRB_dCrS zPv%9X$eT}c2^wH>c&S-YXDAaF_nP6R7pq5cDd=Swu};I2rRIGh+-OE7@K1Zn2iRYL z!pL#XL!ADNLpDNSmdDUS3{?S$?rjxpTR4Gog@8OCCmnNmDjk@@k4%Gn0X06h9xCTf zs)AU$VqQ+eI#Vtpjv^m$QdG?4;?HF~<3!mCwG6kR(u*Ok^uN5Oa2L-R3O3FXU;&uy zEPkecphYuYo>7jylzYoh#O0}8;SSCE2&8RIG%{O?%vRMy7GD#i36z91Y zvo;)wf)n-Du*hospo_%_&E)ZTgEH0WRme*j`@7mJIax-56??jtyJEWxrZuw)vwCl8CgQJ+3jT zs@;CJj2W$CK)j@5Wr7j3prhoKSR2Q3+beYYu+W-}oa7I{nYkTe2-HW)r$&ha41Max zG#sVqhwGCNk1_WlL2tZ>(!#v(w^-_dxV+sg1np^s1KN{T^e(zxvIe_{Rh8Ph%c{2F zp{Vw#Ngisgq-)teY}T`H|BA24O@A5 z0l_z-%9*lHTW|{Via<+QtSMQaW8D|ggT2;PFo)9$3fzf$S|R(C>22jGxG(ks*w<*4 zmfvgGefQqwwv0>5pA$WGvb&*7&_ImLBSBILiil^4=~+$~(CcMz*?SdUEOsxz*_n?< zwSn1FN3KH7gZjmTM1#WF3b1GFY*ua1XkW*kvTtU8LS4xod&!b~TSA^@i! z-D~%?KEAz$tqw&?Wul}QgrGhzSH#;io_&k(Bj++SVej|fa z1^w!2LK$0-`VUNW(>|aSj<65N7`48t0lBAAApg8AAg2bUAI}gJ0`g4Oi5-;FLH-d= zmXrXn!xw>vq=i9_BVaKv<=LW+YRx#E7rX|*+eZTa#@`LVbxdxT~7b<-LS|9Ge5HAQvYUmXZpaHQ!SOJ;(=zioy9U_TXVLl_o}gXCanQl)*J#apjmf zU?ULos}x=wZjUX-MvDV>o@BiaTsE0M%BJK2G^H(NYOHfbuQ{ssv$fq^{LT6RTt;LP2UksK!H?&1-b5%dd>D)YpbTk z+KOG){>a?CdS*3$=Q#GL-6w4o@?CheI19AB=|hqT7*%iv`3u!_Hly^uTd->d{cEzY z1w&v$EyIyzn9BmFNoAye|4V>PHZq#DdOx(0k%Vt_h3~r?1Frgr)*maBU5t0s!wtSB zMbX5q@fd}#$^W)e9xYPl4M7jGgMzTB57dWPZq)~3*#)tnnh$gX|J%-PU^7ic**#5u zPQ&g7?rNtVfya#3XX7MGDM$@5Np`OTBe2qtXJ`UlSzh0DSwY2bcpAJP{&2eh@8pm& zy^Tt$c4(^*y}X{QMM1^yX6o6?y@K@#e77p)bItcM0DxShSh1l|WelWHo~2OsKnji5 ze;3Kq6>5Lgp0ZM6mEmbTkg!OW7sl>@5`vi?>{=i2HxrPJ2X&wQhb1VAgEX{IL+9%>u8aEVNY)vg2x zzE}b#w^%Gzt7ZSQc(JnEUbTTzv6(3fSHB8oxA+@~L0=09w;tto-z*5X_S-PHCAfTw zJxfA>6-zm#8vW!K^eB@)#B3ujB)tL4!5!b z46u5-jq}r)@;~jNR+z(?-W+UvC1iR&S31+ptzuzmuvKQtAw16~d$R8+6$}Vu`@s*K z`iNd!kZMJDku;t{Rt&;gr>}82o}G5!&CM3&nZBX1vJ@Q9@4|ikiW@PpAT&W^i{jvJ7djxjY z#cKC;v6}muw{y`nR9nUV=bfnMZdwX%3;EV$SL>vxKwyJMWstZ{DL%q{r87rlt* z-dh|sg*Zq{%pTs2G0rEa;j=z&$IOX~JW5^3t1oMkWxE829Jvc#{pt(eKSR2FgY&Xx zvH1~PzLGwk`ny3NvLWfO_5N+z8Q`mae)`Hf+SEHoGFrb9ehFm9n(6Buo zq&9A^d;0^rL2-IFBTF&o8wir9j0aJ|6?6^)_WQ@XC+kH6glci^i=Fe?6IJJY!!Ud@ zAYXod2WwAvV1C+?-=dF79^ON|oSOpr)*f|G`ut$IpIE(uMe@7Rq<2Rf>-7|yt1MdMZ1Qp>r;GMX& z0BV?%=)NTk|FrtEOMl^7p)Xjhu9Z#~sN~>%LC|QBSO+HPbk(hV|ut+h3)!sZ#hww0}r#lp^#|H~jgp3;g%P z34?!J85Njdh?OSgSE`K3djNN|F^^pUFnJ@$L6EfSn&FTL)D3)9zKzfFRI%QCxr+oKXAJfQUQG0h)dRPdg}aEjYY?|5z2`1KRNlbB_U z0dvf;d!ntHWfYFVH5&zu4!&IaU|3mc>I}fLvQm^8NY;z-C5ao5%UMVMMs~P1GWf@1 zwW9HZ2u^sm_`6}uW&h0o_ClM1zXjPtT3`Oe@wE&Be_zF=v`O`UET0lgp9FzFXWPeScJY2ALEz6a<)a%uzxG$bN1kA4(Io?R zH%nR~F^c~F`On1r?z-(+iBa@td40pO*t|DUiAjHVT-`Eb`_q4Z{%*bWtgv|S;aag6 zIe*WBfBRn%{(T5e82{d-Vz9X)DaMKghomY6tvW<Bo`CoqR zgr{SgER!JUH|gb<53QTJQ-YK~$GrDW+7dqh|8v!opLBFxf(&Z@tFJsl+6R7_zA

2+4qpT^PJEmXs(b$HMNet(A7=9iex~WC- zm>(tS&)}y)i?hQ|n}_Pe&sogh_REF-Tf+&X|BF;?G@Kgr|NVHjmjFLZ5U(fle&1+9djFLY;*!OgLIZo-AN{X+zFK^z3tG|~#e};7J&CZ5&_0is1 z(HJRz&K7^idLFy5%Pmo+{9c&;aK5L-p|!^R-g)HCmMtuwND%lt2mSG%4J;qNTI>zO z-a;NGbFI_gJ3tI`jIw{eoJtcy9c2-@3ON4&6u!5c+G{`LaoO&HI}Kfxm7$XZ*VTjhE0@ zo^vg|?8A!3%Wi#IQh`6u>%VxOdtJ#5g}=&#yZUUK^Dy!o>&MdjEjNGD;Jf(}qwv>u z$G?}P?Rf~5nE2c9d)F6l({zdXGxBF^qqD-_!NUJT{C)b5?p3`X<=6}U-Whaf^UGiS z8@em|7kAwH*01Z5R!A!FH*1gem!pmUE~&s@<~OO|S0ay#<@P_nDduipK zs8*LIdr*T~i9?0`C8hDtRf|!HiN8J@nr`jtppI*t0zF67yqE{Y&P;#*C^!rJQT}KP z%)SDlPE&F8dU97 zc$ZXs2o-;YiVp|63#_rMe!V_cRqwRMqEy$1>qj%uTR#@{-`v>PgI zj@XMZptZDYt-?Dr%Vy28jh}Pyl?P9Xpc!o7N@D;?Hf(>%uWh8{e2af%Et@7`d;BHx zkL}+eKxU(TOQ#1_H$Q{F>)Xl?>}79bc)kkn(JTRgx}W7W3wko*ef)i-Sx&(@fWOa= zrsGi7tHUwiX)w+;`wC=4^iPa#@*xqPrj7c6p_b!WWtw&es{aUoJr^n}**r^Q-N4X@ zZ}InYz(RWJnxX*Mq**Fi^WNDVRL#F4v6D+ia+LTjD&w!3<#Qy(+>=dm89`*X%vAne zXz;XGw*^b0U(Lh*JU%>e1h7A!AXom2gvyxNA`pILp6Uf`#F-AMSI z@|7W7W>dTPTLm$@q+hBpc%=x_jf5tk0vdhjBGo-9iYW*Z9I=D=)GQyE-xcr$wGJ}P znpZ2#BdWt3MxHny|GaeqGN>*36dvKpKf*If+@iP8#TLD|rO9hAd}vBfwR54^Y;^KF z2Xe3aR2Zfb^9weYKmYxMWx`aIn3}k6&-J~(;MR%BX7{X%+Vs{t--g(1>9`B0eC*3t zn|sTn&}QlHty?|(+RMu&&kBjz>7DzP(_bzzr4q9sqtT@o^jFKaGKo3)yna*X$`2&Z zR*Csn=LYdZ#&TOnohq@HCSN`L-F^R>ww5t_B~SDJRjobvLY3sHkeC~9|9$PcdmEH7 zk1jDU;PA$RPd<}8l@e2N)mwRwFL+X7j!R7apX=q!ZmimhBIZg{d)AA3wZboLsk1wV zf+^n=Lf;SYSt0cOK)x&x3&Af7?5_H<&<&?1WM1S7ElmUC9*J2Ylr%x8I#(ZPM&wAu zG(80oJgy=bF71$h5H018BWk&kh5L}W#n%p!PLSy<^0Rs zT8Xj{r*KGz)bEQG@ikP$C&=`?YP{8DxTUXOoBo0GA8K2O$g!6$dF0zYPw(RAbos)#z%>BWiJ?!NeAS(fx_r z_el^Mpk?dQ_U>oYC#z}p(!Y(k3%#YvA{zAiyr}8TE?6V==SgiXibvYlX0MQ#Vu?x7 z{?$|!F*TUSr#&@us=i9{ERj4L+xLI>$V)#-%reHDqXxrE$|MK| zaLSO(fDn#JQt~mZ!bnNhED(4j%J8>Av+RRIDYi|s?1!@xf4lVCkd@jJ2@hY(IQ+Gc zl0Fl!R|!FbFY;3>e(}+?#J|QMq;RGd=0`RFi{CL)1ZOtj$9rG+oeN0=>4+{90J$`3JAd}zNALwiWkZ${OWErYIi#$%dN_Y7)ciT3=Fc+X5%WhV z0?eDP-V(0@>m|plh{ASTvy_s^^AlPDsY@IFB_wIZ%z45|(Di1E<(dOLi;P=+1WX42z9Rs_pGB&q$Zjc;+Q2As5_xc(1;4mri(lS; z^~OB#FmV7C?qkjJ2|9T%!m_!e)|1HRv`)aUJdqYN7^%o)hXYtm05By00A|EApvSUT zvmDecm<32D$-pC3AU#LF4wDcO?fPd5;`Yu?l6-k)KBFEeY>4k<#~8w$ETe%@^S6Nx zjR-tUh+j@bwwhR-4626#esx8C(5%{+g#T06BMIXP;a;`Ax)h`Y9nMZ2)MkecYQu!H zv}*_)b7f`MR>ib`a%vQgHNp_?4Hs3^3-k!K9z05-C%TO_ltnra$0|0WubQO-UeWbH zpt#~654>Q`LFvYDCCD!aa5C@G$9#Y^iiLR4JXUTa6f;CFOS_u{ad#+15+&|XM4e1F zACKX-`>@_J_V6&{5GgSz8nYN9W28Xw4NtkvNCDz4rhpec(}v}cy*5^?yK2Sq>$R{j_4P~T-K6J?hsI9se?aw8mRHn)%awS{puvb@S?+L7txrd$O3qh^%h7p zFwMCu-IrnO^o@g99#H{u-eoUEL-==m-Z;B9WiPlOc-trLM)${R!^`|PArWoKx(!1I zoCAjV5;#^FyF?&woc28?g{4XKKpDHONW><9eoF{f>p>L8*a>VFZTS0WWu3eJoK}bc zf#DaY%`^+d`Y4Rb9eV?sio)+0z%E=0lM$u9a`(LdT3Movkq%GhL%Khq9QGujK*Xc; z*U0wWtmz1My;1@7Rp4%fa9bHEhuv4+-%08PrlizlDaG<#pApn#AJHsd1qc2#A)P(G+zsr`)ub?aA(epZlYMXZ4_YL<3?6_ClL$g`jsp&J=? z5fQs*v_zIWu(HMa77{;fSu67lBadwz^Jn*?WCAF|ajl*>d$Dkcmfe8|bhjK?+BHz!MW-xHt^`iu zstpe+*~Bz>ys@tp&J_d}3x0uL>VJBhskQbQZ%B&BRQ(&J_(MGTgE}Lxt=cN|fjh5F zwS`wO-4~<14IyLQsxSNk+UER&Rbhvu^*0Y7uG^>KajN}&h`$8!`gC4N0U@YU@_KzF z;Qa2XPmuID_*YoccpY(vzKMt%#<-6Vr@!=VL_+KDBZ3zps4s}jaw*Fm{U3gs{5L$a ztX~f!dexWV(fatkh`S4bg~2ooabdxYUxx=n3Bb}->9`*6Yqy>{GuH1TVUtWoJ~n)8 zaMLSZ@H6M$+Qx^M!X*7n`;UKU{62n5jbFph(ZBf>;XTmb+>N-`B04GXtvQDH$C=nH z5+R2$oai5(aj4Rd?TM)CYYx+)2n^|O9zmRp-}{jX`yvTc-GGHAiL0-a=#~0doR_qFasL&T1g^xr)987y zHn`Nd_ixs=(zyEwCJaM#nlhQB1c$w9J@2PJBnqmp_ajbk^l@6pN^tt3k7xR9u~_S3 zI{^BD-Pij#0Kv9ELxyeIs=3yIw!Er#t~K~=@A?mZTe<#C`hl;ltD#)Q3)~5-KyJf7 zjCT!^Y3>6L)ckJdNTpecI2gFId$z$6fsAj=?y7=H7z_Z!JVg%G)#wxM?ZtyH@sgYB zovpA+E4&VjEuvR2F@T$~Ihw^LZ=+9uCyr3(8vN~4y$A8mo*n1M)lwMgiCm?Xfak++ zqo4erMiXcpDVPmku0r`(pOF!$uP;?*F)u|Ys>x<*sq#y)t&vr#Y(|wTpHU?WthN8p(~uB{%F2NNx-jyWwwIL)qZ|bRvdKZE^JB zwcY$9Srj+e;;@U@Q7#SM9G7_P^ok41cH%CwR=@>d)N*lIl=}wb($RrRc+!g(S&xdl z*h&*>nBR^EVCph`V4mghqn=#GuaI~(s0fy+ zUo0BL?vZ+aAkvuA$ zH&5dwyi{Gv2E`;I41!@*pqJio(zUk=pd(oX`IBtGo~CZuB;HjAB4s`a7o%ln?nMsxWoGK|JH4%$g;T)1 zM@_;u?@^aY7Q?0xh`$_R@+DTonO6Z9U13e=$`Lryl}hoTD@TH@Z{75q4( zK#P{yoVIz$7QB=U$V(6g!qSC|^ibLzSi(3;}+NzZ@mF0eTb4VA@AYU|$W!gHX701y4P09xkc7%~S*G0IW zS@izAXc!+=)>Q1i`|8`@v00(yuNGB5TE zEQ0+4i(tQmMJ$7dEJC`4`{V2tIgJcF?W^bq?pFLQ4=Lx2DA2E})880cQ~3TA`Csxc zCjT3j$X*<=^MC>PpN+21Z~^u-iC<*R5x3BqCGJvdHeGMaoZU7QgYkwK7K42waeEGt z=%AVqg#*J>6JXS5{2m*|5abKeVu8Kl_RL1KX@4$Ezu1D4v_`>kpQwVi3sgb7xIKp> zI%uB5urCnOPZk>G(2rn%yuYmIe+ zC@N7b>3#pFT>uKE0I^FerGiz@2e5;7EUBs=u8Lj^qdQJa4kl!Jwr6^Nt^#%xhqYSMiowj8uww8LkU_yg5NU5?HZA+G9bRfDb)+Ma)tkr?BuKhy z!QuHYiI^Z}di24*$@fOV=&G*w_uQ->hviirmRBnaQe*xCk?3wX$TLQ-47722ssO&8 zg!4ev+aoTCKB9%(>uVa)vD`Gv#~N1!?af0)llj7I&~*>W2ANrw^`Qtg>K0CP)vJ z0%Phm>^TL43_0Y|C`Y#_{co>QSSwk}5n_fySPZ(uLonm*URVZ(z)pjLM`4`?{SG>w zB`pDN0&e(He8x0qOrY#z+NsWY+iykLhdva^G{lPmTP z^3JU&@9!N`Q9=C}yl&<##9}tmO*$Zvoj({4Ff$!FJ~DNNPh$>`gtl~Vi#jR26lEm2TeZ+ zAX<9ea3E-7Z{Sjgm{aISm9+!T+Aa&P5p_qZ5QJ|RSFs=w3 z$@=jr!P74$)zwP1{b;B`&2A9T>S;E?9LJ$w5)A!rwR?7$R8RU)1GGpH9>}5s{ULdf z`4ff55$>nGHJR^Ij7ux{ZL+rThKs;3;O(U?JgImGk${h%jO?T>?1!TCHrEz@kLVy1 zlk^L;!bOZkdSh2_m96Ohw&W(0trmwYO2Br@k%wTE!o>;%K1v&oJ!AZvI?s{P+?TW9{QuuaxE3Taor!RNTYo7ztKkZ?2_45 z_N=8=_*h&R0vLCRR`}b+$hy$T+FmQ1jyzJH>7BH~(Fps;8|hbT3kS0ote@#uX@zO5 z6W-2R(PH!^EpN?GDhA_9w8A8mO4C+7It&qF5aMH}=WyC;h$6_OLMsJ@)3YuOlxJ}$ zbP@}kcVs*!U7Uu#6zb~Yj>NbBU$~J-@UGU1o`u&059?2@@L@*Ogpc4?gKwJse8Jbm zfG=_O?SH=dlW2hL)QXmbp;_rS zT4A%=;8PZrs)1P9?|gyi!;MLzFH0+$53h+nnIF>`Q5}D2@|FzY6IINZzoX9=eBY90 z0pIP~!dDDR9_qT>oFCa3fABArp>P#h**hpulZV3mzW$1fKq>(n(gJ?U3uyr`|23Ri z0PJLP|MNc4156g~@cddg_wExuy_9^K2%!XaNBG8Qg_jUile|U#Ow@`RqZF`y3%QO~ z_&ccCux}xj>)t_hKkq%(ensDE5A6U$!{SLRdJi6luYjs9g;5mTH1CM`bdO*E=YT^r z`VK`I?TRPM^yI*UvjT&fT#HiJ>R=GcHKPZiagnou#vS?X(8&rV}` zOCJmUdCDJ8e+m4e<+2*@QfscbizE-nv6y+W;8gh_lO_MFB4;zb4`2=5+v@bCHu={z z5Hna1*zx_|a;@|fA8Qzj2jZ0FetMjqinP`7@T9#hK{QFs>er4qB${Pi!YQOZpPgLd z2uAt0;nzVGcd<1Nz+)Gdif*Ab-UvY3Ewm;g!0t1LsL0~JV@-gIg*=nfp-A*#5LRg= zxY*hot|&2?P)Fi2y<@18aD^l*qcK(sG?X;Y4*e78HdJK(FFPmGq{RO%x+vuOIdO{D zh}oNEfD8V|Jn+d8X8uBEnvi|<#+#0 z0uAHzt&B4?si;ifE1V+XgPQ3H=wA#yPvhyR+KNXtw1O0fY`kC8-B6k)xie}qB=DCt z2iTE6q90b^dST6~^rN5s!HP7|4}Qug`y|Rz zgds{kX^FeYYJtm*7CI}fZQ;nKUOYV9)axMbVrxgZTqmgFSfgXQQ#{2Yp4_Iw2(uoB zD-kBhIpU76*bDB9!~V`3C^`kH-{elEq?5Hi(>)inDygDbU)hCbajjY3xIkNowYKl7 zeR;Nt_m?Q%%!8X*&8v5Q#ufDCzXt8p z!YT{r)cb>C&)-P(ungVr4}w(dC-(1M^e=qZK`VS0d20+8$%tF$#%@EO%=0x+H=*@# z`3Q)Mt|ml5`O&U6_(E%{5R}jlhMg}kmtb~d{gMCMh8p;L07*6Q7uvH4hp)|fgYP&< zTHu3fQWQWSgunkXRC79lDr7o_!#8K>`NChe3E$74$i-j<#AOBiC#ucAO@RMV#D(B* zR~!7soW=S}dt9d7{CzSUUN(I_W=~GfnQ^OhJcs(+2*{#e;mUp z@B`+e00JTW{+FSe^l9QZq>fb!}$Y!kjF^<3%1tya&~+usMV!37lezw&?U2%PUW z@PAo7S6ndJ;15VIx(LN0^b>x@F;^j#@CR2R$BlrjLSj*js}Sa(g3Cm%LZT3lRS1*0 z3TaH2s}PHLu=;2Y4_6@aOLaTm!$6IhAZ5X4F(9geI- z?C@|UGEm&b)(p5*u2u2SN`%#L{+J=guA8r; zRnpB#J8^~x2N`fr!Z=QozmcbGO7Ma)o_xm(#wqI`80hrkMX0RUbZ@qW@49~p{^Ly9 zFms^OXB|1n)A(?I$efxg~{arhOloP0ik1CLV@Hy@4-#AX7;O*!OM8v-xeQ?|{H z#hcA|;5Oh<-{bY^<46x!QLWPtkCjJF-BBfS`M~KLhtJ%IUl?M;p^76oRIwKQi*kPm433A5Yp|J=@rmyDG{Inj)&t5)&U)x?I}M#ILYZ9jprA-UWFQ+DOb6_#hcR+^ z8(aAu8y)2Vi|I@7FwNvIU>F+1A0h|l`BCPr%<24*B8l22X0j45LymCrXogN z?~g^N36pA)kDaNL#6swbmPl5BrJn0HyXTbM^9vqw`*}O-hk9CP{fDuBJNx?Uht+@O zJFFk-QJwWKsJ(u?s3(V^)m&9G8SqDk)j#GxtRL!2o%LVwhw6`Y-5kVEuh&^Wgl3)f zZ{~b8Y2tL4mud4OKD7DY!=X7YGuG+x z5t`!wp7dBk*I?e9N(?(vc56OJ0We+z2xB9(7;!-rq{Ik_3bG6V5-f8NRwj~^m%s&O zGnp#L^K_|#EEf+{kC)-03i1lvFcqZpDU=6ztR@dZ|+$Rv4AN+S}5!Yf2^2^18&y5fxfnf z3R1VU|d(;{qe>8_@YuzSWI6Kpn75s zfofcyeB?OfAcz0daX#~X5ce~3$Z|J3JRdl5ipX;ioJ)J?31lI+D#noEWL7;Kgqj6z zs)L*E802lCgQ@oSPS!2sN_bYQporOkyKEG5;xn6$a5@JVE>H52yksxz3&>IPK;EH@ zt9d`9*L)txQcZDKB`@$Rb&yh77V)ebEXd*cjC75@SqLNOfeeZCu^bs8(K383#$KYP7;{ ziBWHh<9I^#I0RbPX&E+PA$2sJl#^P~69fsAlPukRUXJEdks#>Ws)ywuPVme90jFmR z4&OLDKR7*~0KfXcG{Rdu{3as!JJ~e!Im44lw`wa&0>KzoK80&RK;sr|pJUg95l%X>WYy3VY z4BCP&*a;6A!Y;UB z3?XGC%47JJab|OuUR-<>rL)q?GXla8%HSbGSTF8k>jt=F2&%Yxf|3k?)sO)Y zJcd~h!+#2VIS5Vo*`i{!_$*7rVixFwkEx#I5+w8_Ph4DNfs3A$&{=6+3`csh1RnO} zNpTljpMuMJRq;?ySWS3OSWl=YHCY=6*O?N**M7Pq$k#Y*)%lv>NbxnINBG)k+;st8 zYxA7qYb>U}c3AN>MNS4^OGZX>PWU_iBz#TZIFfT3{H+%zH?&47@GB5UTvd=5tIC2} zG3Zfg$?9A)xeX^D-sPnZ#C!gkjDz7 z@E=$py}`{jORu?9{FXSS~euG zL|D~0`#2Xcus(Qm;Z;qTeDDcr0)xmLsO+8F)Z)dpo_b|L>ZIE_5KV|LR_*k}<5;%R zdKlJ^+_E34^hT%Wkkfk?&VNFucBk;@grq*?{+=_IdLiG`h6VydRqEG_PCye|!^1?#+<8I+nYiY|c}9QpHxdo7pEEB1 z_j>i*Iibe7N@KW77;Nm|duR+hI#GIe)fV2MRQf|8;cOdHPiozUp&J;lC%lh??7&VA zv18|u;}(~yQM#Z1`?e@d3dkD4biwaXOF#W(mk%O<|BdQN*pPPTG3%5 z5R2$4|55l7jUmpF{2RO8JN16|sJsWGySj(+O;xu& zFSkS6aV2<*>R4bPuAX7&vN?3SUNwdeiUjmi{lGlDH4dr{qJRW~&XDGF@IGZzly8K; z3-DJz=@_paT`zswOOVkg%ysnX$86y{SOGqqabMc?znFJKB7N`3)X}m33lu`OcFRQ;uSCuzoi5Z+LHSrq&E`~ z)Hq{g5}Y1e0->?P6Gsnjz1iXmQWI1ajLAWaCD0TdfnJZG-W7E~M)$cUz1VgQSzQ@= z@AReNh3s|Of_Ehl?Z7CuNF$F~EVE#+$GKil2U^nyct)*1p5g1g9vdXkS>GE@q&3X& zq_3|G#OPUBz>#kR?((YHLixd$I8OTTwUsqSlqbpZAXSNjPoYn>mB> z;N`|kF2qMb=iEvZHUkzizE6bS;oKbS9|xB1@ZfIt$5{1%N z-3K&<1LH)pJ}v~zYNi*Qh;@&3te)w<%Qa*4-LA|OaGYfnm1d{0-+;zipwmOq=>^gl zI^FW$2ie%o==5~69jtn`q0^5ch4bUoAod%#UAFiKsirQ}iqh#@ea{rv*cmg&-Yv}~ zAqw4$b!kOcz#D9t(>v61<6z6Hu#u!%{ssD(^w4N|DN^*pP_v&>(eqUL%fvm6q$SxT zQtTx=p?29Q>+GUG&AGY``O8U}n2y7ygz6|f0PKG2bl#CY$H2{ z2u`N!Gh7H(yToG;7cSK6?dUo|TYP%1&Mo}v4>k#BeSlJhhvVp6M3$5E!-)_GNwj3a&Rk!f{2hn=M0d9n= zJP_@;{l7?1led~nU-i6UOesba(5k&9m`b=VsVwOL_L$LAFcraU{zf7iTc2$o!QVc+ zZ)8Vp)wS(6+lsHnj!B@}tdh{p=$*u)M{_&rZNXlbC-{lt6L?5t_hj z<>R*461&$!zBq^=%Ak0vA_b{ahjI>Tl;zSNy!~4Oy%o&cjMAGpfj^8iIj6R2$Th`T z*P!i7+4fMQ?HJW|CFJC3+K!26TVOSt^xc+Fkoxry!qL#~$wvDZvVHwO8LHiih<2Z8 zhIaS6RG+EgpwAb+aoTpX*w&llq!c$Kh~^PSFzef*w?i;t#0bL+cb- zaRsUOhKf|EBJn~1@hrj^-6`2^$evh`dSfU%(SsI}v0C!wCNn!@p#Qg#0?;mC_#w54 zS-{vzh5Z7lUz8{IP=D32ziN%((z8$PgjJsnV05wIZfdCk{rL*cXvBecfljf!@Y}=g zKr8z-JRJc0C(vjn)5HmXuwuwVgH&O2smvzgBtC9I0cLnEW5WKVW6<9k+6y*7M&pac z586W~02vjicou`+)r(7=WE>>N`P6jSDY5j0sD>g$gC(~Keb7FMw(wSzgRhahd9_wb z0?U}g{UkoAw8k-jWGaQ|jZL&j(qEg=&@T&4HJs28w4AqqZC~QOKS{1-!ttJZf19uAkV%^Q{5ZL4HnR1V7ESlFAug4q@#w6{m zRYwP#5VQ(N5HtzR9iLwv?83J4;wOll4`HvynZtNGBmC8lc!9baj!as zMO=@b>>BM~fPy7RZ|I(vpFCsitg-IdOq(&&J(cQ`>!!eX-2W~(bs;`gtwxElGp39t z{@qznGse2&0}${WpJwixU=Hf(u1Qg=anwCZzvsPOTv2ugxNYmiDCfVw9kq%&(2lOQ z1C{WzU>H`5?l`E{S7<-l-8Mh@uBomGt}OO*%2=1(zWT1wcTbuOdQ{3G#KI7e20lLfTgpTv`T`;3F z;1{#B=y7KAHC_cl|AD>*TmY3{UT5Y0yHTVB+@qblwUEA6Gz2jy2O=E+pUHnZf~_Ek zJZz{dykb>V=ve^0b5HowNSlzdxH^k$|_DQ8$JH}P&TMfR`)3W z%r6Gj?Nd4N(h0aMcs8y`2{#Vs#Sh-eMCgXXf)h*@3^O^31>3}C)Hvd&t?L5(c66^N z=Z1tdkbIXx2k{gd)6{|&kfTcE3Op8WtEiUVTH{aCTN?2W>!j*msp=o3>}2!>@<#+n zvdA56)vykEC)>K3=AG>5o|soUf{KZIwB6emf;t0YZkvATNTJbax27hTyP@0-3v_@{ zj=;P3KqMI(RNcmLH*=SM#XE8o1LIq`)7{u0zfsoY0JeVEcmW<3-rTpt72aX!E?+XA zV?n7Bd;lOGl05_4hVq35Tkn2(c&CNF{B0up8`gF4a{WMgtkw^Mu=vFKA(`Ts+mdv# zeh?Q62D`+swC2D~hm!p<(T3eSp7f)@&JtIB@}U-LV?J%wGJe@ePab!T%UzKA@&Ia4 z?eGB$8yDc8A=@9e0fheEs6d)JPf)K1?-#bgP9Ar`SQjOav;n`$6*U(3U)ajjOUj=>N5BU2%`u6l6Gc#wguw(HQ7;z1NbE&&&X3BPVi%j2b^)fxX z15adnzJ{CWIT?7UAoc0~#6=u;a6)KE>2IJxQ)oDO4VGsucMuE4NaSzi0BukgILRLH z`2-I3nSa$5&clM%iLtOChGWA`V1DeYlpa4XswU2wpxcT*@HH9fiw!ez#um62HZx%I z2_4WZ1LST`g7QoMWbp&kGo3@iG-~RJa4`~0<_E0abol|xCLVma>Z3eMt$pFK`!J{i zga>5jO`^tT;8^&xCKQ#1G(SIx!q2;dkW5 z5-`kUVz>oeVmMAbz;J8jS!!(qkBMP@I230Nkovr_9_W2uF0F#zYoa%DN^w*;A26fT z)FOK2JA*L?LughX9Ejd{fX(i)`)o_0AEz!6&P@4OTl6zkMGtHU;-el__Q;KfrG3>5 zz!wy7&ZMfOV@{8*?|iMQ3Owf{V$m!YvAytuF>#n$iB&5%45aqZ+?pSjrIv;}8VwWm z>?2W6A|MDv6#JzQ1RS*kU=6E1t9AhD8Cm!lmpv&d-08wOE482}Dv7Ghl>HAzLqi;j z?tU2FU37>Y3)=w!K}|O8KfcgUp)Cj;peMIv_2iz|#28YL+PRP7zZfQAsiE>^X$IrL z1^1Z3ZffI%dGx<+ugQJvzByQSt>^xR=Bos?IlY&Y&y)j4Cezrf{K7PJ_`wvj;6Tfv zJ&6(oX_~K8Iwk@(dl8YD642(~ z1+t?4>?ruHp1X5eUTK?;_j6l(}MQ9jDm z2)@r4?{dRePM>=cd~6ANPdcF6i%8>shcjiLw%}WY2m9KNB*e*RG-FFN?*k*Q%V(Ls zdo5{O`Y{-VF9V-pu49My`I|_E7iDZo{|qb_XZo69=ddJYe^nsXtfU}yo@DAt7NokO zu8oF~zb(99ANNu8>z6O@;La7On8yeb1P?JkRCN`ms_Mdba6k?HVvE`gl!<1{81hOf zjJ~q4IfG2l{8d=gV1lLvry6D^XM7N}peGFPF$R229|#xZi7&_l*b+4t?~H_WZ=Wvm z$--p7O0UA`FA|+b-yw(cB6R>q0XIL&>;=c8A9yp<+mWQP91uen;hu*wE6IS&!7`*^ zB#k-vB+$b-_yJ-u2f6NI2U(oeWWyzCuAqyWa*Qx5VR#x`fR1MA(=XkmbWHBdm^x-? z%vBlx!>Gs!+ZhvY;0K4jdIxd+PS1XQxQcRm-q*K__aKjD<--g9QFC!3pWf490UGBM z^f?!kYMCi=S;l2f0tO$s{KIi5q`Km6gsH#hP<@e4@R^uQ(BI=h+0@^u7Epf|m&`-r zSBmONg(X|Ui_~tm+GtZ(8wlKRYL7PL&{mZYp~<&i>DTzi~ARE@qE@KBt0VI7LPW6IdAyh+yhxR@NTKt31)xp%;K~d|+Rb+=W zS{}~9Z+q8m_-*C78C=Ap*4M~dAGh4gCiLtDg5!$@*=kjY3$CLW27ijjpb@>0r^YMG0HOjNpdM!NEBJ)s_-prz^Bk-(_t+P5Rx2TRVv$|+0jOt=lEsL#< zlxL~+B6xz;t=EJZ36xq9nGtvqTgG@4BSbN%@TJaJgyU-~(!=qkCa&7FW;sa*2o=aD zH`uM^`Md%KrXSWt<;3bZeYGaVhQXy0T=)32bO+$Fzb&zoi!s z?MPy`lWlDoKmq~wZsrM!;W$&V`#KT^z6}kx1Yj?n_Mz~7UhG39f-8Eqz$T(mT3Pat zdVD=^xz&b#%0g&4stk(FpeIa!_#Wz!d_Dyt1OY%k3x%l95Y}Ogqzvgn#36sVk>4ba zy+&AdU+JODpC{eJ>2SEf0TdQ^INHZifZGL86_PB7Dq$reUbsFe zc$8pF+BuCvm4d+G>j4{)E^O;TJxyj}NIi`;x(R~k9kM9bgYa>st5j2-laF#uMBEbk z+&Sd_v|0=pk`3H3^adF=0p03V!e$iM5TU;IpE6GzcF z**Qx38`$&XB2q>k>@yiaOWh_?ywjiq+LR8cBrh=Uv<}zF-2%Pv{Zl~bz*dH#}?@l6JmWu&p{Z<6@hxxMzKkBMQANbCo zzBqZFL0{d7?bfNmII)GB?9amS?&@j`^_L03{l@{=yn_A`M{W)M#X=YQi@4O?5XP~u zDA&z-rTqQ{{^D}vmDVRAxNLc)GsJT}w;tn>m1l#wWl3A`a>^7cPa>-{s=^XUn4vFg z8a_(3A(o^iymyIQxEZ#7n!|U0y>!q2>;+W~G#|IhU<%b-Ql)utIpvcu0vL3i8UPI2 z^RjTFy1Eqzr|2)E3$v)+TpYu~dEeY@jq*J`IVVT0f79}Qt?!zP-+Hb_V)!fI#{MuZ z>GFu%J)CqE0DzN_vlS;!uvVo)+UogTz`xNo%mGOSV<)yKklA&Bq;NrEV>MjHvGY6# zr?3@v0!}N6lEV+x@ZkkvEf)GU&p&0MQ|9@n9Qbh#ZyNKE$`GHcLEdn_!%{ps34@C4 zO9%sVlAj=z{GO>%Dl^3lgJdOkZ%LN)*W_M#*(`(9y{ha4Bd9Z%S2fNBiJEAzoF$bg zwGsnCI3Xm)z=76NC>LFTo>yhR7M{h{Ni1Lp34tCf2@w*6T@0MF8A47=Vj|Q8Ze$aw zMyTa`GqaK7GFukev_On(u*hz%`O~cv`gykX^I#!Sp?~)@_r;JT*imO?xv^fxFuR5! z#kppvf@+Dp*1XK|6C{6qsx-+c*zaAk40m!sWDpgIh0% zz%|e)*qYPcS}a!#(mXpk7F;Ic;x)b0f}9?!tnj28=CH66GAwK_TXKz2!;)j9$gmK6 z85U+E@YLaDSOj!)SO_??L9x@FoMG$IJs1JV#=un0iW;(RSUJcvk0aN@tbl2a3zq0x1Qb1AgA-D_?F^oBx#ZLv7S z<9}3fq4jFG=5ft3MDeI*98OT07ogH+bccNDmAMzE1J}G7fW=?=^B(a9XfiSiIMxpTNSOW(nNs#I!h0C@>xNvNAMM z&af}0bb5CLaVSu&IduDfDDqS`l3E3`1qZ@_1!!S)ai~!r z?Np~wRdH3!;n~m5nw1$-ld!P!gps&*T(#eR)i!=Gu&+CHlfC_Zhp#O@Y{qD)7N)U@ z4^oZOvjgknRZ1;T)DlSylr-E{;u4utKPdKt9th~*{_jiBSJd%3@H~{_$WsOo(-eC& zV;|6PTn18YCZrk`$TleYzhnRQIY5)9BwGdO&q2xdKaKJ!tp2Ip4e>_aiuxrzGv%PR zU@nFUyD?+1-&ZjJ=FM??`hcs6r1wiXIj=!K&!^ZDtUx1C*b21J#a3X2(!HLzn)J{# zV@rBPEK~fqQTBK~;Rh-k&UbY}tDd9&bcr?aW8m9ll~@?Riju%^*8r@DP8hViYTOoE zVjmvpiftk(O>W;CJov?-!f9%JS~aV)Lxpdq;2^=sSn!xv@NgYt^cB|qyoa#@ew@;S zkCN4sg?D)rXVz9dSq4lLXJ6xeq!b?3FZxExj#-28U3)0z+h-Tsgcdn4kTKg(l%RWV z-Ub5c4I1X|=z`8f2@cq$Z;QoY=D3bTd^KUr)9n}^{i!Rt9aX`-rxJLn+7-hEVNfH( zrVfO*)41~ijXNP7@m{+{C=!-`dYJnS@aF==q<%`M~VUvoC9}wf5R;uYEg{ zcfk59Z-m|Y`Q2)5zxS(bYk+MMxQ=r^t0HwYQ<_*KF2}drw&?Qar4bz)(o{kQ$g;Yf zqpGL!J4ULua&rY?EoTEHm+EvD!861zU_XBYj~%vL{~HRqWkY&iM*< z#^2-)gpboPF|V zn9tDfbu*0gdy{Rcz-0ibvUpg<+=tv|Ot? zCBj?%r4yR1Y9Np{p~r4uk>GSakKJ^XNzgFrjku_`IH$s!)+Twr68S2ig7uRu*nR+| z1Y0~gy?}E_h^OgAY-^9hN{MIvOOvsA0CcZj$tNCFF0 zm=2*~2yMWI{7mWOGZnU<{GXOpzLm@PB9u+s(0#UsG(%s*qfp?HBSe8w{c!&+Npj&{ zLt*2A!u>Avhm~%AYP?XtUaY~)>rqxU+T8fGgYl^yFvEdgX6Y{BHF;#O%IY>L%z+H7 zJ(|gN5&pV0B1}$o5!AaUat(f_S7WLV;CF2GekT9$j;gs`19~N&MST^b=2YQAe3heF zlrD%eD`~BH(9l#K1>YUvszONWEL(oJ?Zk4JQE{CDo#F&?`fv?mArS*KXHoE#fIH(U zMj7!*z>KWi@^s2qwBA~gc-}3!jsZ~>?v*Mv5;O2AW_T_M0)_ zAQmI*O$22CRCXB-rC3VoQVAX!d_fRaAqp4aDt)23_txH2lGT6s!m8C{+oSvN5S)dPfeBgZ)G}U>LLXgcu6DVo6*a^g5HlE07 zhNoq{ktLbP6&5*}ls86+fGpo535&7I_$4$PkY(T4AHSwXe7V7W zS)))*HSvNnr{J78aV1-^H{sRijG?QsqDc~pfi>PJR&orMhzrCyZwm;7iTAsx&C z=%>mP0+xPCn@(xHBzLg1sxB@qPJL1G8}bM1s#kMvHGMTUsCZ(#AOBZ1)mHWD@eZg) z^;y4raNEFxW%l~rw(Ju-eMd=+k0nS2H$FDH@lhK72 z!{X)Sm1N``OEjA;>Wq{#m4Y338X|26-gWWR93*t4$i_&!M&eKX2aEyFa<9O zALWulM&FRJh2GH;hD?$zCuBYL$BM4oJ*H-u%|p|-yYSdBe4`7G3LhF>Oybenw^dZ zMWXEZt;`HXM`Rko91i_mO{p&6cWm`Aei6%B&kST)1Ikq|K#sbg` zCJHPM0<~Hk!QRg-z{ZF=;w!Wl;2ZQk8zXEbuBArHODfsM2(?jU;^g0h7ix@HYNZ>c zu}}77uzNj;c>imRxcKN0qKd#~=Qsy}V@A8>BsK9<$T{IuUUIIC1+Pf1s1^QUKlmRq zHl~>E6ky|*fHqG-=qU<4V!IGPwMTh+u@)>mWf12^-8e>^a?+NN7xd^U%v|9!Dtyj_ z#`ClQ?QA(3y~eAuW@psmtR)LBy83)ZYUGCL$=Mx@U(VJ$JvAD8%()uA?3INzfWnwY z9Og12-I&&%6|3>f#dcck1kzrn@ym^Les81(u#E&6rqm+|3F@2{+fMYhK2%>rq;llc zEW#(eXnk;=Mz5{-ZS*>ySdCt%Jvv0zb}046^wfl1*+W(kX2?44Fp+=1(;h9~m9NCz zhoSS6gB_VH-wZlflALRDp6VVuOJczh>0cUX!C$ptVHWDv%bdb2!A$@K;I(^a)!5A-IwcS`;z? z$xvx?j-XuTj+F?QiTqN6=+XB$l~cUQM;XeMh<)O$6qQt9hECR&vQ`xJnr@{L%vuIj->CT! zzTE13_ZCg}RTYzVSLd;{n^Qe#1nS9BtJHVnx>kw1oYMZE6K=W48jmd3SB*D9F5`=E zB^^nbHO?5$q$>$&WgNgKPH62OMm?Or8;mopaiiDtiZ)v9fjpjA1Oh28nRO!PH$*JL z&zcdZ57|BL;^zn{5`3gzB)=&`$(H4Ui)8usscr>9eJyaoH9=5amIWg}NZh69f;x39 zB~~=S9OWS>DIhITHHS+F!o(aa^(E%k zZuTG3`rxzlvknh&PknfdhG4kD9s8ppe)T=Z1R_kfuHGW!PQcsK}wjgjO zwnBMHo{4{)Ht{dK654&J&H=}ISbvl8SJG~0OlrA8YzVpSGW2m-b)(w8SE?7T7D_fMlV3OduNw~`n?I`t73o$L13szTEur^b^Yqs-~oBeSA} z(INb_Ol$1%8r7TPsmXV+#j_7 zh%aTd?=HR|zwY|BQ=E+UaDOeZ%D5gC%h!=c!mZg{#~45fv7}neluleJyN(#cn&O(k zR?V6`w7~9s-OELyMX{cT(_2t8j5Zp=x~#;|B;YnPLK=ZfeedFcX{Vi2=F-SuYM7ST z;Sc|$1FsZwZ<+TE4q>gH7x~<@p)aW9&+$&Xw#p0lqiZTukC363hzd+I%P(P?3AJ+k z&woZIbaSx89%^lg^|T4nQdgkbIJNuWtQboqVM;@3b^71%s^Bga4BlKtPL-wwYKVsK zpd}n3BE7Xlz~Q;unk12B$W4s2YxqP3-ycSibjN&EL8s7ICCfq~E^J#QXH_JEW7qJF z$0MyuOUhc$v2|n0b=kv#Js7GPc1uXtJL-i4yn1FTa))pxYGN1bYM64pCswm-ql<~0 zo*3Q5B&Lf=jB%Pug1Jm{k2?S73%bX`XFoX8?ITn!zvNqv#Z<1bmSND&mSqrb=rybh znYEU3VE*gnH|F-dpj?(%A4~ksxJNqs>d=T%f0ciSi{cT8xO8XP1_x7 z*q(dUe$yKNShLTJ)R5!5&qrV5W$7VwuOaIyQl*ENHFG5JEu_{B$F#s^H;$-V6JAWR zr91CIDu9(1=Xz$JpY-Mp>lz*()cqUwq}zMZJ0$lj)qwi-b8yzhdj4Cxh`rky$jHch zJR|S%T(o2BzpQ(EH_s*+9}+W?vmWmZ7qdzAIH|gr?b!p2tu8llv8}}AdXTb%IQac} zoG~@yWb{$0XoFK9b88TclZwl{rET3Kkk{S$`axmbFs*Te*EEk|LEywW5q6UfL+OsG zoBm547SK|ohjQ?)E_T#*ckpgI2k&$_>fq?47ne+y)Lx{8%__r*GEJJX}K&3W!`ci`|aqmZsDn|NVLa}+7Ul$9q6x%wRLgGZ^zV%v26tR zgOkp+Lb)88BYte0d(QvyH?sv68(CR}j4P`~z>VAwc`c)AUz2v9kmFBdzJ}K! z4mz-Z`98GuElr{F z{lT>BEi*RT6`6g2&I&mA--WB`UyB4k+xPVYjC7@7h+uG369b)&!Eq@e8yv-oc1Nwb z+);~LR<{Ff(GB3$u0xh;K&<1NfQu^75(Fy6=k!fQv+9mAOXpJ8MA+Y7N+N$$WJ^!9 ziQNkth)v>2CKh@HjuE{B;*lZ+T#57%^{VkoSmfPT4u&LlWi(;mf<}ot8}aIcOJ8szNTbvx#H zO}7&Vu1B1D-&EYQ+xq3SJ4zNNhYzaXana(r^QsT8-%(w&cwx=C%5%ZMdGx8{*8>&@ zddJj!LSu0q^-4z)Z5*!tGR|;S?RjUlvduXId_Rc%yu9FkO8?p+d-e||4@F4P2ox@7 zM@@4)an2kAd=sv!-pN5y}o;y-#) zIb6Z`g>Z)}fT#+H78pc}1kqwaw8Xkuq5T%wZ!tFg#bax}ARd@w;-4*k^rFq)O~RJL z(xYPyOEpC-T`V3WRR6$G{gpOze3n`&pP0P&{dHW?{kURaHdH}b(}X8D-Sg%;vC zFi{L9PBcs)0Kmk_hKbLL4y7F;h-8^Dy?fy*tO946?Scr&MiV zVUzYa6s9jyVPW7LSF*qHV7o+Ru-9}oEvYN1GWfmQk5{|uORARC4CAKE1zuxq5OI~- z&xSDa^Wl82DbI>!$%y)B$ejU3))jz}HxF=C8tK5R!NyQ6*wA}KI%Z9)Tuzqe&4bm` zNT&&)Xy^azPzkaFoK+N$+jEP@S%YAacG}tOu2yW^P-C|S3!L;7R=;B%iT9O;kAQ^$ zz~Bg22+Rb41T3Wb13(-Tg^Locl%lRyVDmWYQD3CDIXnwL{#~almf06r(|A>AE=Q(t zVO{NShjl05*mzZpN8{BA=5k;PSB1OmOU*bX_*IM$QAwo=yM6LZe*{EUdU1ModNF)< zddK&nE%t8f5K^Huc?2!`3|(YjhoV$#9_VtY^DN~uB~=*o(fal3x(r1n3+5WTobNUM z8D3Sy1r|}|HEwnhi!XBg^OWcKr~2^pdc5i|UelGN5zj4{TRoi1r7k+3k?lYAm8NC0 zm)CJyJSu4Cm+h9)61^&SR~r zy=NgBb$*nMj;s$H7)_mp-=<_Uwj-(Ci&##+Ib<4wq!(Ak67Okv7F2Naw47}l1?V86_OIVjlRO0e4r|topsMq9^_EI8jZlXe!cp0u(UztR( z1kIeCZFcy`VUb~e-iM#R*;=UHd`NTC$IsZMd%=&4OSW@JOYcm*H zpSFROVjhuMzO=CWNF4^FjY>jEx1Pez_9JiBJS8+vx$F&73RGeZmNmE-P~wTo@dDSt zJfPGTDg+{>md2CkjOY7IYT^7zDXSBwl;T!(v&FfR8Ifx&)s0bgYnoJDU~5aAi8334 zbA@J4JIXX|-^A^){%w}BKVVnw7GM=wfYtT_R#!*E6m+oFwHPYSnHf(kTW()YK`n91 zMFppzm(;BxRyzSIYqQ|20S3RI51e0D_6(>EZ8HINx&zgJtuY&c&gjOe(0rS$JbJ25 zkwK#0zALy{MA(;2zGwbjy#J8X9m4(&=_F081Kba8SyjVAvJd|Uh2!%}n9S)Dd2HXK z)T};nfG7J8{6Chr1?qNxcE%>^V{5LukHzht=WFCo?LQ8iP`FxcElRl{nI zBjLS~wfOlmraC*-2!m$gJ1yzC)UQs~J<5I$vfmN*yYGPguMrn$G;3zdjseMW$f#xVh2WF7?gIOpNj zdpuen{F@YZ_M;;9H2zna%O+=B*ip(9j>1)h=_s#$=14}5a#W@*qx(p*d$%IV9u4BUXluiiWjoYO-cODl(^rnIpK`qE zzy7)Pt}CjnP!u*yDYr6BmWec>EHknMvP>lTV6sdl(55d^rT@C#HG!|Jx;535%lp7NkSx22WPs`)ngwUW zl>H1oc0o9vjwV{9(HeyfUv(O|vq0=3$QYAareqSR0T2;NH~sU$8++-~Fy-EDYQ7ae zQ=F1$(FmvVjFAqg+a3hPM+obDD&-Z7)G{{^28*MqyoW!l;>BO*W|c2J#1bNk5nDQ_ zUm&+(%86EQAd1`H_&}m~J)KRiTGne+35RoOCxjzH} z72Gc(l||aKlg=Ei4b$#L{=GnxL-{uh`PWXEvj3s{(-^Hhe+HsqUQ;T}a-hZcSD>WD zNEjKa5JsJXPBbv&(}}yn2%%rSdMgp8_L&R!o6DjTu5d1ARpf0P6Gq$3gD}z~y-Zw} zMt0%xi{EgfNZ67nDmB;Ly^biFNf1#q3&%uJB_4^QbIe^DITu%a>9Y5VA{8SbLs6u1 z6c!6LOgZ`Q;<%HQQ5+{FqEmEBd_9}av0JXKIhDcGGoE##di*!Q~4s zui2-LJD01EtS`CzQYLi@onJl5LKoQl$RjC{Rm}gDJs<&mn3@0Uec3l5rl4FV*rBMk z0X=jDVK{iDoDVSnXJypp|1C7z=Ksr_$Bpa^vnvQU-);L(`p*BYem6fc=CsX8NfEb}-zG1L?ItkN({F60TY#j?*N4(MKnD9YyY)-2Tc* z)CeH0YAU2|H`hHN2&p>>LTZgKM(Qp+BK6DWE{(i`E6lmUE%)Gh2~O_y^GC@;)-DTz>qo5%rW_3sK-*Y6WgU7Xu} z43=^1)gAsD=g3m*jH_6pD{bli_u`6-)NXri$h6dTk&d#4o}pI_Eo)fcQ8x7L?mHFt zUE=aA?njEdS#iHroOjDNu^^Ln1M%rgwG*v>&*nTASkQ)y_p$7S9K#G{GHV8$A1DC& z!YJ<&6w#s_P6BTDj3aZix+Y|9F_$SfE@WOVXI11L93%4zJRLFw6|bl%y0C_VcFQ~H|& zQ2M4UO5e-Qj)2mh^w0G9kh|q$rFU84?fTbpw&vuty;d+S@oHK9A9H$8(Axeu9QK-) zc%!WT)vZ_?%i3PepEmSWRKq{?LTklKk%)OEmQ@i%z(6=q#d_`iKf@u>Aip)m7 zOaz%(!I4?QM)cG0vEv(M8t^e@^DAHT