@motionscript/geo 0.0.0-stage → 0.1.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/LICENSE +201 -0
- package/dist/border/format.d.ts +73 -0
- package/dist/border/format.d.ts.map +1 -0
- package/dist/border/format.js +68 -0
- package/dist/border/format.js.map +1 -0
- package/dist/border/geo-border.d.ts +44 -0
- package/dist/border/geo-border.d.ts.map +1 -0
- package/dist/border/geo-border.js +234 -0
- package/dist/border/geo-border.js.map +1 -0
- package/dist/border/geometry.d.ts +40 -0
- package/dist/border/geometry.d.ts.map +1 -0
- package/dist/border/geometry.js +382 -0
- package/dist/border/geometry.js.map +1 -0
- package/dist/border/index.d.ts +15 -0
- package/dist/border/index.d.ts.map +1 -0
- package/dist/border/index.js +15 -0
- package/dist/border/index.js.map +1 -0
- package/dist/border/loader.d.ts +31 -0
- package/dist/border/loader.d.ts.map +1 -0
- package/dist/border/loader.js +87 -0
- package/dist/border/loader.js.map +1 -0
- package/dist/border/registry.d.ts +64 -0
- package/dist/border/registry.d.ts.map +1 -0
- package/dist/border/registry.js +152 -0
- package/dist/border/registry.js.map +1 -0
- package/dist/border/selection.d.ts +21 -0
- package/dist/border/selection.d.ts.map +1 -0
- package/dist/border/selection.js +86 -0
- package/dist/border/selection.js.map +1 -0
- package/dist/border/simplify.d.ts +12 -0
- package/dist/border/simplify.d.ts.map +1 -0
- package/dist/border/simplify.js +116 -0
- package/dist/border/simplify.js.map +1 -0
- package/dist/browser/index.js +25 -0
- package/dist/browser/index.js.map +7 -0
- package/dist/browser/manifest.json +11 -0
- package/dist/globe/atmosphere.d.ts +38 -0
- package/dist/globe/atmosphere.d.ts.map +1 -0
- package/dist/globe/atmosphere.js +91 -0
- package/dist/globe/atmosphere.js.map +1 -0
- package/dist/globe/borders.d.ts +39 -0
- package/dist/globe/borders.d.ts.map +1 -0
- package/dist/globe/borders.js +116 -0
- package/dist/globe/borders.js.map +1 -0
- package/dist/globe/data/ne-110m.d.ts +25 -0
- package/dist/globe/data/ne-110m.d.ts.map +1 -0
- package/dist/globe/data/ne-110m.js +198 -0
- package/dist/globe/data/ne-110m.js.map +1 -0
- package/dist/globe/globe-places.d.ts +140 -0
- package/dist/globe/globe-places.d.ts.map +1 -0
- package/dist/globe/globe-places.js +262 -0
- package/dist/globe/globe-places.js.map +1 -0
- package/dist/globe/globe.d.ts +193 -0
- package/dist/globe/globe.d.ts.map +1 -0
- package/dist/globe/globe.js +435 -0
- package/dist/globe/globe.js.map +1 -0
- package/dist/globe/index.d.ts +17 -0
- package/dist/globe/index.d.ts.map +1 -0
- package/dist/globe/index.js +17 -0
- package/dist/globe/index.js.map +1 -0
- package/dist/globe/places.d.ts +69 -0
- package/dist/globe/places.d.ts.map +1 -0
- package/dist/globe/places.js +94 -0
- package/dist/globe/places.js.map +1 -0
- package/dist/globe/projection.d.ts +182 -0
- package/dist/globe/projection.d.ts.map +1 -0
- package/dist/globe/projection.js +215 -0
- package/dist/globe/projection.js.map +1 -0
- package/dist/globe/world-map.d.ts +83 -0
- package/dist/globe/world-map.d.ts.map +1 -0
- package/dist/globe/world-map.js +169 -0
- package/dist/globe/world-map.js.map +1 -0
- package/dist/globe/world.d.ts +46 -0
- package/dist/globe/world.d.ts.map +1 -0
- package/dist/globe/world.js +71 -0
- package/dist/globe/world.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/nodes.d.ts +19 -0
- package/dist/nodes.d.ts.map +1 -0
- package/dist/nodes.js +19 -0
- package/dist/nodes.js.map +1 -0
- package/package.json +69 -3
- package/registry.json +31 -0
- package/src/border/format.ts +147 -0
- package/src/border/geo-border.ts +260 -0
- package/src/border/geometry.ts +463 -0
- package/src/border/index.ts +14 -0
- package/src/border/loader.ts +97 -0
- package/src/border/registry.ts +191 -0
- package/src/border/selection.ts +95 -0
- package/src/border/simplify.ts +110 -0
- package/src/globe/atmosphere.ts +98 -0
- package/src/globe/borders.ts +166 -0
- package/src/globe/data/ne-110m.ts +214 -0
- package/src/globe/globe-places.ts +352 -0
- package/src/globe/globe.ts +552 -0
- package/src/globe/index.ts +16 -0
- package/src/globe/places.ts +132 -0
- package/src/globe/projection.ts +261 -0
- package/src/globe/world-map.ts +227 -0
- package/src/globe/world.ts +111 -0
- package/src/index.ts +5 -0
- package/src/nodes.ts +19 -0
- package/README.md +0 -4
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The halo around the planet's edge — a shell, seen from the inside.
|
|
3
|
+
*
|
|
4
|
+
* The trick is old and still the best one: draw a sphere slightly larger than
|
|
5
|
+
* the planet, keep only its **back** faces, and light nothing. What survives is
|
|
6
|
+
* the far wall of the shell, which the planet hides everywhere except around the
|
|
7
|
+
* silhouette — so the brightness only has to be a function of how edge-on the
|
|
8
|
+
* surface is, and the occlusion comes free from the depth buffer.
|
|
9
|
+
*
|
|
10
|
+
* That is why it is a shader rather than a material with a gradient: the value
|
|
11
|
+
* needed is `1 - |n · v|`, which no material exposes, and which is *per pixel*.
|
|
12
|
+
* A gradient painted onto a sphere is fixed to the geometry and slides as the
|
|
13
|
+
* camera turns; this is anchored to the eye, so the rim stays on the horizon
|
|
14
|
+
* wherever the globe is looked at from.
|
|
15
|
+
*
|
|
16
|
+
* Additively blended, because atmosphere adds light rather than covering
|
|
17
|
+
* anything — which also means it never darkens the stars or the planet behind
|
|
18
|
+
* it, and needs no sorting against them.
|
|
19
|
+
*/
|
|
20
|
+
import { type Material3D, type NormalizedColor } from "@motionscript/sdk";
|
|
21
|
+
/**
|
|
22
|
+
* The atmosphere's material — including which faces it keeps and how it blends.
|
|
23
|
+
*
|
|
24
|
+
* Those two belong *on the descriptor* rather than in the mesh shorthand beside
|
|
25
|
+
* it, and not as a matter of taste: `resolveMaterialShorthand3D` returns an
|
|
26
|
+
* explicit `material` immediately and never reaches the shorthand's own `faces`
|
|
27
|
+
* or `blend`. Set them out there and they are silently dropped — the shell keeps
|
|
28
|
+
* its front faces, covers the planet in a bright disc, and the only clue is that
|
|
29
|
+
* the globe has gone.
|
|
30
|
+
*
|
|
31
|
+
* `color` arrives as core's resolved `[r, g, b, a]` and is handed on as three
|
|
32
|
+
* numbers rather than four: the uniform coercion reads a numeric array of length
|
|
33
|
+
* four as a `vec4`, never as a colour, so passing the tuple whole would bind
|
|
34
|
+
* alpha where the shader expects nothing and shift the hue. Alpha has nothing to
|
|
35
|
+
* say here anyway — the rim term is the opacity.
|
|
36
|
+
*/
|
|
37
|
+
export declare function atmosphereMaterial(color: NormalizedColor, falloff: number, intensity: number): Material3D;
|
|
38
|
+
//# sourceMappingURL=atmosphere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atmosphere.d.ts","sourceRoot":"","sources":["../../src/globe/atmosphere.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAO,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAyC9E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,UAAU,CAgBZ"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The halo around the planet's edge — a shell, seen from the inside.
|
|
3
|
+
*
|
|
4
|
+
* The trick is old and still the best one: draw a sphere slightly larger than
|
|
5
|
+
* the planet, keep only its **back** faces, and light nothing. What survives is
|
|
6
|
+
* the far wall of the shell, which the planet hides everywhere except around the
|
|
7
|
+
* silhouette — so the brightness only has to be a function of how edge-on the
|
|
8
|
+
* surface is, and the occlusion comes free from the depth buffer.
|
|
9
|
+
*
|
|
10
|
+
* That is why it is a shader rather than a material with a gradient: the value
|
|
11
|
+
* needed is `1 - |n · v|`, which no material exposes, and which is *per pixel*.
|
|
12
|
+
* A gradient painted onto a sphere is fixed to the geometry and slides as the
|
|
13
|
+
* camera turns; this is anchored to the eye, so the rim stays on the horizon
|
|
14
|
+
* wherever the globe is looked at from.
|
|
15
|
+
*
|
|
16
|
+
* Additively blended, because atmosphere adds light rather than covering
|
|
17
|
+
* anything — which also means it never darkens the stars or the planet behind
|
|
18
|
+
* it, and needs no sorting against them.
|
|
19
|
+
*/
|
|
20
|
+
import { Mat } from "@motionscript/sdk";
|
|
21
|
+
/**
|
|
22
|
+
* The eye-facing rim term, and nothing else.
|
|
23
|
+
*
|
|
24
|
+
* `vView` is the fragment's direction to the camera in view space, where the eye
|
|
25
|
+
* is the origin — so it needs no camera uniform, and the same shader works for
|
|
26
|
+
* an orthographic camera where a `cameraPosition` version would not.
|
|
27
|
+
*/
|
|
28
|
+
const VERTEX = /* glsl */ `
|
|
29
|
+
varying vec3 vNormal;
|
|
30
|
+
varying vec3 vView;
|
|
31
|
+
|
|
32
|
+
void main() {
|
|
33
|
+
vec4 viewPosition = modelViewMatrix * vec4(position, 1.0);
|
|
34
|
+
vNormal = normalize(normalMatrix * normal);
|
|
35
|
+
vView = -viewPosition.xyz;
|
|
36
|
+
gl_Position = projectionMatrix * viewPosition;
|
|
37
|
+
}
|
|
38
|
+
`;
|
|
39
|
+
/**
|
|
40
|
+
* `abs` on the dot product, deliberately: these are back faces, so the normal
|
|
41
|
+
* points away from the eye and the un-absolute term would be brightest face-on —
|
|
42
|
+
* a disc over the planet instead of a ring around it.
|
|
43
|
+
*/
|
|
44
|
+
const FRAGMENT = /* glsl */ `
|
|
45
|
+
uniform vec3 uColor;
|
|
46
|
+
uniform float uFalloff;
|
|
47
|
+
uniform float uIntensity;
|
|
48
|
+
|
|
49
|
+
varying vec3 vNormal;
|
|
50
|
+
varying vec3 vView;
|
|
51
|
+
|
|
52
|
+
void main() {
|
|
53
|
+
float facing = abs(dot(normalize(vNormal), normalize(vView)));
|
|
54
|
+
float rim = pow(clamp(1.0 - facing, 0.0, 1.0), uFalloff) * uIntensity;
|
|
55
|
+
gl_FragColor = vec4(uColor * rim, rim);
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
/**
|
|
59
|
+
* The atmosphere's material — including which faces it keeps and how it blends.
|
|
60
|
+
*
|
|
61
|
+
* Those two belong *on the descriptor* rather than in the mesh shorthand beside
|
|
62
|
+
* it, and not as a matter of taste: `resolveMaterialShorthand3D` returns an
|
|
63
|
+
* explicit `material` immediately and never reaches the shorthand's own `faces`
|
|
64
|
+
* or `blend`. Set them out there and they are silently dropped — the shell keeps
|
|
65
|
+
* its front faces, covers the planet in a bright disc, and the only clue is that
|
|
66
|
+
* the globe has gone.
|
|
67
|
+
*
|
|
68
|
+
* `color` arrives as core's resolved `[r, g, b, a]` and is handed on as three
|
|
69
|
+
* numbers rather than four: the uniform coercion reads a numeric array of length
|
|
70
|
+
* four as a `vec4`, never as a colour, so passing the tuple whole would bind
|
|
71
|
+
* alpha where the shader expects nothing and shift the hue. Alpha has nothing to
|
|
72
|
+
* say here anyway — the rim term is the opacity.
|
|
73
|
+
*/
|
|
74
|
+
export function atmosphereMaterial(color, falloff, intensity) {
|
|
75
|
+
return Mat.shader({
|
|
76
|
+
vertex: VERTEX,
|
|
77
|
+
fragment: FRAGMENT,
|
|
78
|
+
uniforms: {
|
|
79
|
+
uColor: [color[0], color[1], color[2]],
|
|
80
|
+
uFalloff: falloff,
|
|
81
|
+
uIntensity: intensity,
|
|
82
|
+
},
|
|
83
|
+
faces: "back",
|
|
84
|
+
blend: "additive",
|
|
85
|
+
transparent: true,
|
|
86
|
+
// Nothing here writes depth: the shell is a light, and one that occluded
|
|
87
|
+
// would hide the planet it is drawn around.
|
|
88
|
+
depthWrite: false,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=atmosphere.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atmosphere.js","sourceRoot":"","sources":["../../src/globe/atmosphere.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,GAAG,EAAyC,MAAM,mBAAmB,CAAA;AAE9E;;;;;;GAMG;AACH,MAAM,MAAM,GAAG,UAAU,CAAC;;;;;;;;;;CAUzB,CAAA;AAED;;;;GAIG;AACH,MAAM,QAAQ,GAAG,UAAU,CAAC;;;;;;;;;;;;;CAa3B,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAsB,EACtB,OAAe,EACf,SAAiB;IAEjB,OAAO,GAAG,CAAC,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE;YACR,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,QAAQ,EAAE,OAAO;YACjB,UAAU,EAAE,SAAS;SACtB;QACD,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,IAAI;QACjB,yEAAyE;QACzE,4CAA4C;QAC5C,UAAU,EAAE,KAAK;KAClB,CAAC,CAAA;AACJ,CAAC","sourcesContent":["/**\n * The halo around the planet's edge — a shell, seen from the inside.\n *\n * The trick is old and still the best one: draw a sphere slightly larger than\n * the planet, keep only its **back** faces, and light nothing. What survives is\n * the far wall of the shell, which the planet hides everywhere except around the\n * silhouette — so the brightness only has to be a function of how edge-on the\n * surface is, and the occlusion comes free from the depth buffer.\n *\n * That is why it is a shader rather than a material with a gradient: the value\n * needed is `1 - |n · v|`, which no material exposes, and which is *per pixel*.\n * A gradient painted onto a sphere is fixed to the geometry and slides as the\n * camera turns; this is anchored to the eye, so the rim stays on the horizon\n * wherever the globe is looked at from.\n *\n * Additively blended, because atmosphere adds light rather than covering\n * anything — which also means it never darkens the stars or the planet behind\n * it, and needs no sorting against them.\n */\n\nimport { Mat, type Material3D, type NormalizedColor } from \"@motionscript/sdk\"\n\n/**\n * The eye-facing rim term, and nothing else.\n *\n * `vView` is the fragment's direction to the camera in view space, where the eye\n * is the origin — so it needs no camera uniform, and the same shader works for\n * an orthographic camera where a `cameraPosition` version would not.\n */\nconst VERTEX = /* glsl */ `\nvarying vec3 vNormal;\nvarying vec3 vView;\n\nvoid main() {\n vec4 viewPosition = modelViewMatrix * vec4(position, 1.0);\n vNormal = normalize(normalMatrix * normal);\n vView = -viewPosition.xyz;\n gl_Position = projectionMatrix * viewPosition;\n}\n`\n\n/**\n * `abs` on the dot product, deliberately: these are back faces, so the normal\n * points away from the eye and the un-absolute term would be brightest face-on —\n * a disc over the planet instead of a ring around it.\n */\nconst FRAGMENT = /* glsl */ `\nuniform vec3 uColor;\nuniform float uFalloff;\nuniform float uIntensity;\n\nvarying vec3 vNormal;\nvarying vec3 vView;\n\nvoid main() {\n float facing = abs(dot(normalize(vNormal), normalize(vView)));\n float rim = pow(clamp(1.0 - facing, 0.0, 1.0), uFalloff) * uIntensity;\n gl_FragColor = vec4(uColor * rim, rim);\n}\n`\n\n/**\n * The atmosphere's material — including which faces it keeps and how it blends.\n *\n * Those two belong *on the descriptor* rather than in the mesh shorthand beside\n * it, and not as a matter of taste: `resolveMaterialShorthand3D` returns an\n * explicit `material` immediately and never reaches the shorthand's own `faces`\n * or `blend`. Set them out there and they are silently dropped — the shell keeps\n * its front faces, covers the planet in a bright disc, and the only clue is that\n * the globe has gone.\n *\n * `color` arrives as core's resolved `[r, g, b, a]` and is handed on as three\n * numbers rather than four: the uniform coercion reads a numeric array of length\n * four as a `vec4`, never as a colour, so passing the tuple whole would bind\n * alpha where the shader expects nothing and shift the hue. Alpha has nothing to\n * say here anyway — the rim term is the opacity.\n */\nexport function atmosphereMaterial(\n color: NormalizedColor,\n falloff: number,\n intensity: number\n): Material3D {\n return Mat.shader({\n vertex: VERTEX,\n fragment: FRAGMENT,\n uniforms: {\n uColor: [color[0], color[1], color[2]],\n uFalloff: falloff,\n uIntensity: intensity,\n },\n faces: \"back\",\n blend: \"additive\",\n transparent: true,\n // Nothing here writes depth: the shell is a light, and one that occluded\n // would hide the planet it is drawn around.\n depthWrite: false,\n })\n}\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every boundary line on the map, each drawn **once**.
|
|
3
|
+
*
|
|
4
|
+
* ## The defect this exists to fix
|
|
5
|
+
*
|
|
6
|
+
* Country rings are stored per country, so a border between two of them appears
|
|
7
|
+
* in both — and stroking each country's own path draws that line twice. The
|
|
8
|
+
* claim that this is harmless with an opaque colour is *wrong*, and visibly so:
|
|
9
|
+
* a stroke is antialiased, so the fringe pixels either side get composited
|
|
10
|
+
* twice. Coverage `a` blended over itself is `2a - a²`, which turns a half-lit
|
|
11
|
+
* edge pixel into a three-quarters-lit one — and the eye reads that as a bolder,
|
|
12
|
+
* wider line. Internal borders came out looking about twice the weight of
|
|
13
|
+
* coastlines, which are stroked once because their other side is ocean.
|
|
14
|
+
*
|
|
15
|
+
* ## Dedupe by segment, then stitch
|
|
16
|
+
*
|
|
17
|
+
* Natural Earth's neighbours share their vertices *exactly* — measured on the
|
|
18
|
+
* vendored data: of 10,360 segments, 2,658 appear in precisely two rings and
|
|
19
|
+
* 5,020 in one — so a segment appearing twice is a shared border and one
|
|
20
|
+
* appearing once is a coast. That makes the dedupe an equality test rather than
|
|
21
|
+
* a geometric tolerance, which is the only reason this is a small function
|
|
22
|
+
* instead of a topology library.
|
|
23
|
+
*
|
|
24
|
+
* The unique segments are then stitched back into polylines rather than drawn as
|
|
25
|
+
* ten thousand two-point lines: a run of separate segments has a cap at every
|
|
26
|
+
* vertex instead of a join, which on a 1.5px stroke reads as a dotted, lumpy
|
|
27
|
+
* coastline.
|
|
28
|
+
*
|
|
29
|
+
* ## What the caller must do with them
|
|
30
|
+
*
|
|
31
|
+
* Draw them **instead of** stroking the country paths, not as well. The country
|
|
32
|
+
* paths are then fill-only, and every line on the map — coast or border — is one
|
|
33
|
+
* stroke of the same weight.
|
|
34
|
+
*/
|
|
35
|
+
/** One boundary run, as flat `[lon, lat, lon, lat, …]` degrees. */
|
|
36
|
+
export type BorderLine = Float64Array;
|
|
37
|
+
/** The boundary lines, computed on first use and shared thereafter. */
|
|
38
|
+
export declare function borderLines(): BorderLine[];
|
|
39
|
+
//# sourceMappingURL=borders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borders.d.ts","sourceRoot":"","sources":["../../src/globe/borders.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAAG,YAAY,CAAA;AAIrC,uEAAuE;AACvE,wBAAgB,WAAW,IAAI,UAAU,EAAE,CAE1C"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { world } from "./world.js";
|
|
2
|
+
let lines = null;
|
|
3
|
+
/** The boundary lines, computed on first use and shared thereafter. */
|
|
4
|
+
export function borderLines() {
|
|
5
|
+
return (lines ??= build());
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A vertex's identity.
|
|
9
|
+
*
|
|
10
|
+
* The integer form, not the degrees: the decoder divides stored integers by the
|
|
11
|
+
* quantum, so two rings that share a vertex hold bit-identical doubles — but
|
|
12
|
+
* keying on the integer says that out loud rather than resting on it, and is a
|
|
13
|
+
* cheaper string besides.
|
|
14
|
+
*/
|
|
15
|
+
function nodeKey(lon, lat) {
|
|
16
|
+
// Packed into one number rather than a string: 20,000 keys built per pass,
|
|
17
|
+
// and a numeric Map key skips the hashing a template literal costs.
|
|
18
|
+
return Math.round(lon * 1000) * 1_000_000 + Math.round(lat * 1000);
|
|
19
|
+
}
|
|
20
|
+
function build() {
|
|
21
|
+
// --- Collect each distinct segment once -------------------------------
|
|
22
|
+
const unique = new Map();
|
|
23
|
+
for (const ring of world().rings) {
|
|
24
|
+
const count = ring.points.length / 2;
|
|
25
|
+
for (let i = 0; i < count; i++) {
|
|
26
|
+
const j = (i + 1) % count;
|
|
27
|
+
const ax = ring.points[i * 2];
|
|
28
|
+
const ay = ring.points[i * 2 + 1];
|
|
29
|
+
const bx = ring.points[j * 2];
|
|
30
|
+
const by = ring.points[j * 2 + 1];
|
|
31
|
+
const a = nodeKey(ax, ay);
|
|
32
|
+
const b = nodeKey(bx, by);
|
|
33
|
+
if (a === b)
|
|
34
|
+
continue;
|
|
35
|
+
// Canonical, so a border walked one way by one country and the other way
|
|
36
|
+
// by its neighbour collides rather than surviving as two.
|
|
37
|
+
const key = a < b ? `${a}:${b}` : `${b}:${a}`;
|
|
38
|
+
if (!unique.has(key))
|
|
39
|
+
unique.set(key, { a, b, ax, ay, bx, by });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// --- Chain them into runs ---------------------------------------------
|
|
43
|
+
const segments = [...unique.values()];
|
|
44
|
+
const at = new Map();
|
|
45
|
+
segments.forEach((segment, index) => {
|
|
46
|
+
for (const node of [segment.a, segment.b]) {
|
|
47
|
+
const list = at.get(node);
|
|
48
|
+
if (list)
|
|
49
|
+
list.push(index);
|
|
50
|
+
else
|
|
51
|
+
at.set(node, [index]);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
const used = new Uint8Array(segments.length);
|
|
55
|
+
const out = [];
|
|
56
|
+
/** The next unused segment at `node`, or −1. */
|
|
57
|
+
const nextAt = (node) => {
|
|
58
|
+
for (const index of at.get(node) ?? [])
|
|
59
|
+
if (!used[index])
|
|
60
|
+
return index;
|
|
61
|
+
return -1;
|
|
62
|
+
};
|
|
63
|
+
for (let start = 0; start < segments.length; start++) {
|
|
64
|
+
if (used[start])
|
|
65
|
+
continue;
|
|
66
|
+
const first = segments[start];
|
|
67
|
+
used[start] = 1;
|
|
68
|
+
// Grown from the middle out: forward from `b`, then the backward half is
|
|
69
|
+
// reversed onto the front. A junction picks an arbitrary unused neighbour,
|
|
70
|
+
// which is fine — every line is the same colour and weight, so where one run
|
|
71
|
+
// ends and the next begins is not visible.
|
|
72
|
+
const forward = [first.ax, first.ay, first.bx, first.by];
|
|
73
|
+
let node = first.b;
|
|
74
|
+
for (;;) {
|
|
75
|
+
const index = nextAt(node);
|
|
76
|
+
if (index < 0)
|
|
77
|
+
break;
|
|
78
|
+
used[index] = 1;
|
|
79
|
+
const segment = segments[index];
|
|
80
|
+
const far = segment.a === node ? segment.b : segment.a;
|
|
81
|
+
const fx = segment.a === node ? segment.bx : segment.ax;
|
|
82
|
+
const fy = segment.a === node ? segment.by : segment.ay;
|
|
83
|
+
forward.push(fx, fy);
|
|
84
|
+
node = far;
|
|
85
|
+
}
|
|
86
|
+
const backward = [];
|
|
87
|
+
node = first.a;
|
|
88
|
+
for (;;) {
|
|
89
|
+
const index = nextAt(node);
|
|
90
|
+
if (index < 0)
|
|
91
|
+
break;
|
|
92
|
+
used[index] = 1;
|
|
93
|
+
const segment = segments[index];
|
|
94
|
+
const far = segment.a === node ? segment.b : segment.a;
|
|
95
|
+
const fx = segment.a === node ? segment.bx : segment.ax;
|
|
96
|
+
const fy = segment.a === node ? segment.by : segment.ay;
|
|
97
|
+
backward.push(fx, fy);
|
|
98
|
+
node = far;
|
|
99
|
+
}
|
|
100
|
+
if (backward.length === 0) {
|
|
101
|
+
out.push(Float64Array.from(forward));
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
// Reverse the backward half pairwise and prepend it.
|
|
105
|
+
const points = new Float64Array(backward.length + forward.length);
|
|
106
|
+
let write = 0;
|
|
107
|
+
for (let i = backward.length - 2; i >= 0; i -= 2) {
|
|
108
|
+
points[write++] = backward[i];
|
|
109
|
+
points[write++] = backward[i + 1];
|
|
110
|
+
}
|
|
111
|
+
points.set(forward, write);
|
|
112
|
+
out.push(points);
|
|
113
|
+
}
|
|
114
|
+
return out;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=borders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borders.js","sourceRoot":"","sources":["../../src/globe/borders.ts"],"names":[],"mappings":"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","sourcesContent":["import { world } from \"./world\"\n\n/**\n * Every boundary line on the map, each drawn **once**.\n *\n * ## The defect this exists to fix\n *\n * Country rings are stored per country, so a border between two of them appears\n * in both — and stroking each country's own path draws that line twice. The\n * claim that this is harmless with an opaque colour is *wrong*, and visibly so:\n * a stroke is antialiased, so the fringe pixels either side get composited\n * twice. Coverage `a` blended over itself is `2a - a²`, which turns a half-lit\n * edge pixel into a three-quarters-lit one — and the eye reads that as a bolder,\n * wider line. Internal borders came out looking about twice the weight of\n * coastlines, which are stroked once because their other side is ocean.\n *\n * ## Dedupe by segment, then stitch\n *\n * Natural Earth's neighbours share their vertices *exactly* — measured on the\n * vendored data: of 10,360 segments, 2,658 appear in precisely two rings and\n * 5,020 in one — so a segment appearing twice is a shared border and one\n * appearing once is a coast. That makes the dedupe an equality test rather than\n * a geometric tolerance, which is the only reason this is a small function\n * instead of a topology library.\n *\n * The unique segments are then stitched back into polylines rather than drawn as\n * ten thousand two-point lines: a run of separate segments has a cap at every\n * vertex instead of a join, which on a 1.5px stroke reads as a dotted, lumpy\n * coastline.\n *\n * ## What the caller must do with them\n *\n * Draw them **instead of** stroking the country paths, not as well. The country\n * paths are then fill-only, and every line on the map — coast or border — is one\n * stroke of the same weight.\n */\n\n/** One boundary run, as flat `[lon, lat, lon, lat, …]` degrees. */\nexport type BorderLine = Float64Array\n\nlet lines: BorderLine[] | null = null\n\n/** The boundary lines, computed on first use and shared thereafter. */\nexport function borderLines(): BorderLine[] {\n return (lines ??= build())\n}\n\n/**\n * A vertex's identity.\n *\n * The integer form, not the degrees: the decoder divides stored integers by the\n * quantum, so two rings that share a vertex hold bit-identical doubles — but\n * keying on the integer says that out loud rather than resting on it, and is a\n * cheaper string besides.\n */\nfunction nodeKey(lon: number, lat: number): number {\n // Packed into one number rather than a string: 20,000 keys built per pass,\n // and a numeric Map key skips the hashing a template literal costs.\n return Math.round(lon * 1000) * 1_000_000 + Math.round(lat * 1000)\n}\n\ninterface Segment {\n a: number\n b: number\n /** Endpoint coordinates, kept so a chain can be written out without a lookup. */\n ax: number\n ay: number\n bx: number\n by: number\n}\n\nfunction build(): BorderLine[] {\n // --- Collect each distinct segment once -------------------------------\n const unique = new Map<string, Segment>()\n for (const ring of world().rings) {\n const count = ring.points.length / 2\n for (let i = 0; i < count; i++) {\n const j = (i + 1) % count\n const ax = ring.points[i * 2]!\n const ay = ring.points[i * 2 + 1]!\n const bx = ring.points[j * 2]!\n const by = ring.points[j * 2 + 1]!\n const a = nodeKey(ax, ay)\n const b = nodeKey(bx, by)\n if (a === b) continue\n // Canonical, so a border walked one way by one country and the other way\n // by its neighbour collides rather than surviving as two.\n const key = a < b ? `${a}:${b}` : `${b}:${a}`\n if (!unique.has(key)) unique.set(key, { a, b, ax, ay, bx, by })\n }\n }\n\n // --- Chain them into runs ---------------------------------------------\n const segments = [...unique.values()]\n const at = new Map<number, number[]>()\n segments.forEach((segment, index) => {\n for (const node of [segment.a, segment.b]) {\n const list = at.get(node)\n if (list) list.push(index)\n else at.set(node, [index])\n }\n })\n\n const used = new Uint8Array(segments.length)\n const out: BorderLine[] = []\n\n /** The next unused segment at `node`, or −1. */\n const nextAt = (node: number): number => {\n for (const index of at.get(node) ?? []) if (!used[index]) return index\n return -1\n }\n\n for (let start = 0; start < segments.length; start++) {\n if (used[start]) continue\n\n const first = segments[start]!\n used[start] = 1\n // Grown from the middle out: forward from `b`, then the backward half is\n // reversed onto the front. A junction picks an arbitrary unused neighbour,\n // which is fine — every line is the same colour and weight, so where one run\n // ends and the next begins is not visible.\n const forward: number[] = [first.ax, first.ay, first.bx, first.by]\n let node = first.b\n for (;;) {\n const index = nextAt(node)\n if (index < 0) break\n used[index] = 1\n const segment = segments[index]!\n const far = segment.a === node ? segment.b : segment.a\n const fx = segment.a === node ? segment.bx : segment.ax\n const fy = segment.a === node ? segment.by : segment.ay\n forward.push(fx, fy)\n node = far\n }\n\n const backward: number[] = []\n node = first.a\n for (;;) {\n const index = nextAt(node)\n if (index < 0) break\n used[index] = 1\n const segment = segments[index]!\n const far = segment.a === node ? segment.b : segment.a\n const fx = segment.a === node ? segment.bx : segment.ax\n const fy = segment.a === node ? segment.by : segment.ay\n backward.push(fx, fy)\n node = far\n }\n\n if (backward.length === 0) {\n out.push(Float64Array.from(forward))\n continue\n }\n // Reverse the backward half pairwise and prepend it.\n const points = new Float64Array(backward.length + forward.length)\n let write = 0\n for (let i = backward.length - 2; i >= 0; i -= 2) {\n points[write++] = backward[i]!\n points[write++] = backward[i + 1]!\n }\n points.set(forward, write)\n out.push(points)\n }\n\n return out\n}\n"]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** One country's identity and the shape of its rings. */
|
|
2
|
+
export interface CountryRow {
|
|
3
|
+
/** Three-letter code, `ADM0_A3`. Stable across releases; not always ISO. */
|
|
4
|
+
id: string;
|
|
5
|
+
/** English name, as Natural Earth spells it. */
|
|
6
|
+
name: string;
|
|
7
|
+
/**
|
|
8
|
+
* Point counts for this country's rings, in the order they appear in
|
|
9
|
+
* {@link POINTS}. **Negative marks a hole** — see the decoder.
|
|
10
|
+
*/
|
|
11
|
+
rings: number[];
|
|
12
|
+
}
|
|
13
|
+
/** Degrees per encoded unit, as a divisor. */
|
|
14
|
+
export declare const PRECISION = 1000;
|
|
15
|
+
/** Every country, sorted by {@link CountryRow.id}. */
|
|
16
|
+
export declare const COUNTRIES: readonly CountryRow[];
|
|
17
|
+
/**
|
|
18
|
+
* Every ring's points, zig-zagged varints in printable ASCII, longitude then
|
|
19
|
+
* latitude, delta-encoded from each ring's own first point.
|
|
20
|
+
*
|
|
21
|
+
* Decoded by `decodeWorld()` in `../impl/world.ts`, which is the only thing
|
|
22
|
+
* that should ever read it.
|
|
23
|
+
*/
|
|
24
|
+
export declare const POINTS = "m|`Ce~gAya@Lcn@dLcRrFel@aSaT`KeSs[kd@h@sHeHqEeX}YwTy`@dMxEbR}Q|AxDns@wWnSwTcLwZgE}e@}Zaj@pCm_ABcJ|Pjc@~Ev^pJvfAfFbbAbLnc@fZyMlYcFb^b^fYsA~VdPnUlz@}@qWhh@xf@zNnYtd@mBpd@lWpPbVyDvn@bGzEnPnm@Cza@jb@dAdt@dpA~Xpj@oDrKtLjd@}Fn}@hHvgB{^uw@uw@bDgg@hn@oIzCuf@nS{p@wYga@fZeHePol@oX{lAw~@tVcn@iGaLi[ip@mHeb@_RoK_q@us@aKyHgUm\\tOgkXxiHvUbLfI`O|@fZ|NrEtO_n@gX_Z{QoIcaWf|JyXkGcQb@}ToFmwDXkNrm@}Pld@kMfS}Vt_@ih@aDsSyGqa@xGkHsNuNmc@we@mAkByI{^GlDpUyjAQc@hf@uKbWdHtd@qCle@{SdVjBjiAoNwDcZp@we@kHm[tBsEjRbFh]_Jh\\hHlViDpTbaCYzAzeEci@br@yg@`f@zqBnXhvC{Ghj@}\\h|FtAlHjChd@g[ng@{@ld@tI`]zJzDif@uG}u@qTgx@gByYgSiw@{MsX}b@{g@aSyZqEim@hBmb@tQiUrO}d@jNod@kB_LeRwW|Qk{@xK{h@h^qf@w`h@uwnAf@lOhS`HvBhS`\\h]rIkCf@wLra@_TlDw\\iDui@oGkRnI{H??fC{RcZw]_CvJyOqDiLxO}MjEeCtU??|FfT{GxYwvcBijn@aJaBiAbP}o@yHur@r@wd@x@yi@gi@sm@ag@of@oe@{JfToGjp@|^FbDtg@aJtGf[hKDpXfQzXr@dXpKdLzzDo^|Vi~@r`eCvxeB_W~[g^zm@gpAnd@ovArNb[f^jz@bBz^aUrd@u@|aAAppoBn_z@rN`q@tOf_AQf}@pLzLxCjg@fCr_@inApt@nG`j@af@fZdBp]`{@boAt{An`@h|B~KtcAgEcLfd@xKxm@qJn^nd@~T~~@rGb{@wUbWhOuGb}@gi@xQea@uRsQl_@px@lRdq@xe@dHz}@vMn`@`z@D~o@~^|Pzm@o|@vl@wz@rKnT`w@xhAfb@rg@hhA`x@rWrXh\\eSz_Ash@dc@jYeBzx@wH`vCkGzXmc@e@ym@rh@~B~TsUlDiaA}n@mZyRuf@fFq^c`@kt@yUwqAtEuc@gZ{JtEoV~[qKsSeYd[uVrMcgAcXwKpIekAuM__AuOwv@md@uU~Q_|@Dmx@in@yg@l@es@ub@_|@Cox@dOmJx[{jBoe@i_A|Do{@kUyw@}g@sy@ak@{e@tQoWaLcS~@cgBccA{]mT}_ArFsNcs@ow@wpAfNwc@bl@kWgq@ifApAaIjL{qB~dBcr@nHkkAbm@k_AlW}GrZn|@~}A_~@~OeeAnHmp@_Iuw@{n@gIev@}]}Jk^`c@h@zp@rs@na@|h@lXpeAt{@syyAevjArUz@pXec@IsHrZBnQwO~Kt@rWgQnm@qNaEk]rI_UyuAwH}KlOyVxIpKrNi`@nTrPzRqY~O_[fIh`~A|lwC{^?_|AoLg}AnLclA|Y}Y~d@kF|YmAx^v_BrRpdBzNntBtM~aCfKbsCsB~pAyS_JwXmdCcP{t@yScf@_Ze[gV}d@_Ukg@wXbn`C~v{CwkClAueCbEom@wXa`@_U{_AtXjQz^jQb[|aCqGpjCtBjmAyS?mAvjoChejC??{i@iFegAlAkQ{^uBgVf@eq@ob@m\\qx@wHa`@fVuMfV{Yd[yS|YePd[iFb[~InWbPhVlhApGxdAfK~pAg@s]oWnhApGvdArGvn@kQtBwXtzfEjlkCef@_JqnApGqyAzCqcArGqcAkFwc@nb@~o@{CzjAlAblAmAlsAtBt~@gKznnFrznC??oLySsiA~IyoAxHuiAaJnb@`Uvy@|N|uA}CdrwFjnnC??il@oLk}@tMo~AnWtc@mAxoAcE`w~HfoxC}d@iVisBxHm}@rRwn@~TcPd[~vBpG~pAaUtc@_UnAuB_q~IpmdD?liI~b~T??miIsBNev@kc@soBrRgFeA_aA}RsGTiFNmyA~XcnA_YgMqBsvD_Jmz@pMk\\lFg}AxSopD|NwkCrRepFtM}rDcPshGfKquCpRgdDkQylDcPoLm\\`uFmA~hEuMrs@oWtfDmL_Je[gVuXgViVfKuX~fBePvn@_Ut_BsRwvCtBmoCyHsyAxSknBkQyeBgVeq@yS~TwXxoAcPxzAkQn_CuBroBqGdxBcElg@gVvoAsR~o@_UpRafAs]bEgw@rR{eBcEcbBqGmr@|YcbBcEgrAoLkmAcP_fAySg}AcEnAiV~TgVkQaUwoA_Jwc@xSo~AgKegA}NkxAe@msAcEosAuMibAoL{jAmL_p@rByi@|Ca|AqGgrA~IutAg@_qAqGmsAbEa|AbE}uAmAqyAf@_|Ad@utAmAu~@kQ{jAyHkmAnLsiA_JkbAaUkg@pRaU`Ukg@xS{_AkQuiAhVmsAhFggAbPcwAsBqnAaJg}AlAmsArGutA~Ia`@}Yjg@ySr]aUvoA{Cnb@iVnLgV~Tom@wn@pG_qArBwoAsBohAvHs~@jQ}Y`UmsAtByoAqGutAgKclAkFs~@tMgrA{C{t@wn@eq@b[ggA`JimAcEmr@nW_qAlA{jAhFuiAnL_p@gVmWaUm}@nWutAcEu~@lLyi@zSgrAcE{_AoLs~@}N}jAqGcwAiFqnAsGe|@mLwc@sRuM}YjFuXpRoW~ToWrRoWzNaUtBoWcEmWk\\iVoWuXwHoWfK}YhFoWq]e[ia@kQkg@gV{i@sReq@iQmW_Zia@cPef@}N}z@sBef@sRak@gKmr@iFgl@}Nob@sR_p@iFuc@zNfVzSr~@hQ|YnLnm@yHlr@bExi@tMhl@|Nr]jQpGnWuBfVk\\xSzi@vMvy@zCfa@xSvc@pRbf@~YxHfV_UtXa`@rRmr@tMwn@rRuXlWmLhVkQnWk\\xSkQfVqGpx@kQfV{CnWsRnWpG``@ha@vXtc@xSfrApGd[`U|d@xSf}AfVfrAxHhmAlLnsAnLdq@tXjcBnAdmBoAbbB|CfhB?qRnWo~A~IwdAbPef@`UxdArRtjBcEjxAzNtBvXlAnWmhAxSoLfVqnAhVecCvHsoBdPkxApRypBrRozCvH_xCdPoiBjQisBxSe|@j\\s]fV{jA_UyeBkQ}kBsRw`C{NmnBePmzCe@_xCpGc}BtMkg@}Y}uAkQ{|Cg@szBmLqtBoLw`CqGiiC_Ju_B}N`k@aU|Y_U?iVdxBlAn_CxHlyB?bPgVqGqm@c[mLkxAuMihBwM{jAiQ{jAkQiw@oWutAaJosAqGyi@{Cu_BmAyzAsGclAgK}jAuMocAuM}uAqRav@ySyy@kQiQoW`aAuM_UwXsh@qR{_AgKqcAwMs~@qR_p@oWs]k\\gl@ePuiAtBs]xSsiAnAoAiVy^oWibAbE}NhVsiArByoA_JkmAkF_fAtB{YvXqcAySu~@aJ_fAqGwdAqGu~@uMwdAyH{t@mL}d@aUom@|N{_AsGil@l\\ob@~T_fAgKc[mWu~@eP_qAtBoWfVkr@gVkbAkFmhAmAaaAf@ydAhFibAtBk\\xSkg@jQqcA_JmhAmA_fA?ydAg@m}@qGaaAkFcv@cPwy@_Js~@cEwn@ePga@ga@ob@yS{_AvHoW`U{t@tM{_A{Cak@~Tom@|Nu~@uM_U}Yiw@_J{_AySg|@sGmhAgK}o@mLmr@uM}o@oLwy@jFiw@aUmg@cPwy@d@kr@uMgKaUus@cPkr@gKm}@yHqx@{Cav@tBwy@bEeq@bPcE|Yav@xS_e@dPsiAhFsh@dPmr@bP}z@tBeq@gK{t@wXwy@nLg|@hFwy@jFe|@zCm}@?mr@|_AnA|NhFb[~z@|N|o@fVqGnWwdAe@pGlWx^hVj\\tXwn@rRegAbEggAaJga@mWySiVia@qRcf@kQ}NaUa`@s]ef@cE_fAmAk}@kFu~@wHs]oWiQiV{i@gVe|@{Nss@gKia@{Sob@_Jgl@yHm}@bEiw@cEg|@iFocArBil@cPy^sh@gVbPk\\l\\us@dK}z@|C_{@kFu~@|Cwy@d@cf@cEus@tBun@nLiw@qGkbA?ox@sG{_ArGsh@{Sy^yS{i@cPimAqm@mg@pGwn@dPqh@`UsnA|d@e|@f@ox@?kbAkFibAqGkr@cP{i@kQwdAoAqm@mL}o@fKy^pRak@rRqcAmA{i@zNsiA|NkmAbE{_A{C}o@sRsh@qRiw@}Ciw@pG{_AbEwy@wHiw@?cv@bEox@bEiw@aJibAwHu~@oA_fA?ox@cEiw@{CePs]mAuXcf@bPaJd[yStXuXxSss@`J_fAuB_qAg@iw@uBaqA?wy@e@_qAlAwdAzCck@rRfKfVkg@jQibAtMydA|NwoA~IosAxHs~@xH_fAf@mg@{Sav@dPwn@pRav@tM}jAbEegAjFs]nW_fAtMun@`UydAvHegAe@kbAtBsiAg@uiAzCydApG{_AvM{_AfKak@jQjFlW``@`Ub[d[`U`Uj\\tX~pAxHvc@~TvoAnLd[nWxi@fVhl@rRtXtX|NhVbEb[g@hVob@lWmLhVk\\`UisBpGoW|YroBvHn~AnLvuBlArs@nb@~Il\\|YfV``@fVgrAzSy^tX{t@fV{jAxS}uArRg}ApRgnCrRy^r]}rDlLaKxCum@nQskD}NenCrRmseC`~}Aig@tRaz@xFeAzJnPl[|~A`Cp@i`@gHwXqm_HnunAod@dCmCdiAlTpTlEhq@xTcPlj@pj@|KkBle@}@ne@ot@pGgh@`c@mu@s@u[{g@pDk{@pTaa@qGikuFn|}@faA`_@du@jM`Kx_@`VjX`t@n@ff@pDfv@kJ|k@xEzi@zAdd@h`@fQyAh^tP`]zRpl@oA|h@?haA}f@p`@yJk@{b@_^oGsIeMfAoUuFmj@~Ead@``@c~@fIub@uAsb@zWug@r@kQrZ{WxF}o@vb@op@rGsYmZ~Y`T_y@_^bQoQdW`@__@|]ep@~DuRlMuQwEec@yKkNoGg^rEqc@yX}k@uCpn@mY}i@wq@}Sm]sYyn@}Uk[{CgPtFgp@iV{d@}EoHuLoOuDqa@n@u`AiQ_a@wZ}Nm`@uc@u^yA}Ws@_a@wj@ct@iY~t@qYoKfUo\\sRk]qZpLsFqn@ca@w]aNuWm^sI_@mPmZfFc@uNoZ}Ge]mGem@t[ua@~c@cf@Luf@zDdLia@}\\cq@c[kOtHqNcZwb@yd@_U__@jFos@wJb@}^vl@qSg`@aHmh@lNe`@tXss@|N{PiEue@fRqc@}PmVlDsM_Kw[|]tOl`@vVfXlTbAgF|WjQf^dUt]mCtPup@na@co@`Se_@nTel@`d@sPAw_@~NoHhRsz@dTgh@kTgKq`@uKuZwFga@_Rwp@tGg]qCeQfFwb@eGan@_KuKvH{ScNe`@yJia@s@yPeVmVsPp]kCff@qNpFuAfYuUv^uCjb@dAvUoU~o@cg@qVuSlY_]lWlEtZiLrt@oHd^wNrF}Olt@~Dj_@eSji@wbAt_@ek@t\\{h@dZdGbNwb@ff@iWrbA}WwLkX`ZgNsHyIfaAik@je@a\\zVyo@rq@qPdq@s@rb@hCte@w\\bt@pBhv@xI|[zOvv@i@zb@jKvk@rZzw@hm@t]xUlo@xSz]pQ|t@bWd^xNvm@`G`j@eBvRxb@vT|dAfAtx@rXv[fWvd@xYvr@sZhe@aJuHq_@ba@xJvu@fl@`u@}Olb@{Htb@mCn{@cQlg@oe@pJmn@pMs^t]iXb{@qFoSi]`Nkm@p]fj@rv@nJu_@sa@oHac@cWs]~Cgm@xq@ht@`f@jT|Vtp@xo@uX}@e`@bf@il@|_@mVwJmMdoA{d@|j@w@b{@m]znBzD|oAjUbfAzSgd`@u~|AvCnXdb@BaKpLvSfg@zJnItu@p@p^dMrr@yCjxAeO|LuTv|@xIfF|Jzd@}G|^u@f[kJqHiNlAaJ{QmBs^jP}GoOav@rAuk@eJ_]|@oRvKyDsIzGug@mU}FaUy[mm@bScb@qX_UuCqo@`Ri\\gBy[xJ~C|FisyAiwpAqPbA}i@|d@uZhCuI}Nid@eX{_@|_@y^hk@c\\|AgRxOnr@`DzIpo@vIzTzUrMs@|]pNbB|e@w_@qT}]nQiQlVrCthA`m@l@ij@~ZgIpY_PsP{Rh`@oTqKsNxVyI|KmOiNeIsm@|Pu`@vBoGkFx]y`@_cyAitjAzi@iGp^{[|HqV_Lu@oQvOsZCHrHkoz@zuCsBrWmLbMQhSjNbLjWp_@rUrUzX~A~BkjAtNm[}d@|CcRsb@y_KgfbBbFfi@hOjAvE`b@tu@o[`_@zCrj@o\\`\\aX`\\a@~G_Uaq@iK????wl@|C}x@_Lqf@jZggDefKtr@hFjNcj@yAqnCpK{KjAs]tT}TbRmQ_G{_@mTcFwKiZq]yDsLuQ_TiQmUEsn@~b@lAvSaM`d@hKdXqExOh]te@fRbRvJlf@q@vf@vpIegSdCgc@aPoYl@eTsp@yr@eHyi@cPgNe]jGeYuKoGaOoo@_[}JqRmy@}Xka@{GsN~Jag@I|Ch]kGl[eb@xg@}@f]agAdMl@xi@rLtQp]xDvKhZlTbFvu@k@|[}CdS`IpZqCpkB|An@nb@qG`n@xi@cOf\\jAzTtNb[eL|IuSa_tDq`j@h@xk@xTmHcCfq@zPq_@rB{^zJa]bYkc@px@oAuDvXrRxa@rYuK`HjJtPyEdWsDvHmr@rT_n@sIud@ne@wO{LwUcf@iVbl@a`@aUmi@op@`Zy\\`BqDlj@mz@pG_y@[_c@rIx[|s@|ZpBhRpb@ea@l_@gI}f@gPEagk@ukuA_QtXeWqCao@vHwzAhB_^}NqhAqMol@vUwc@pEl_@zXxUtk@eStb@xt@kGt~@rRTb^xw@|D~j@{T`q@dPfm@y@lCih@f^aSgIyGvEmFoI}RyVoRj]_ZrDyUfgyCkis@k\\_Dgh@z@{@fObcA~Hz|vC_ys@kp@b[xIlk@lJ_G_@u_@~ZuW|uwCsfp@yQnA{Tzr@Ifc@hNbBzN_c@jVcQ_gc@shrAhv@uVrVaYxV{Lv[iVnLkRr]g\\aL}XmUjMqL_Le\\k@wt@jIej@[g[zL??uUErNnZc]`WbHj\\tMvAtJtDjSpMa`v@qulBy`AtN{GnNw_@mFc|@zMcEh\\jLzOcf@|g@mXjJvBhJei@~I_QtOhWrLlq@cA`KxDuMvSkN~f@??rt@vBhRtL~Bl^zW_Ejw@~AjOsMlVzInV_Hfp@g@vdA_Nb~@}Clo@l@fa@|Oz\\lAd@{ZhR}[od@wKK}WhPwVvAsZm{@JybAoVoMib@gr@_SzD_[_e@oIlbmD_xa@NeHqF}AkJlFkUwd@{JYGdHyJF^~ObI`ZmDtHpEhU}B~DdFp^hKrOfJ|@lKtTrQ?{CqeArxfCnkTom@fDe_@i@}L}Qsu@iX}_@oVypAqItExm@uF`W~Czh@{bA~v@_eAhIqWjVgi@jK{XbQif@Sic@pQwAbc@eKfQY|YfQ`@aWvgAyvBrAdH`c@uEtWca@nPyMze@bJfp@bPjZ_Erb@nR|K`@iRfy@}^`y@[zkBdQ~\\~u@p@r`@rWxiA`IkLhfAqAjWfq@vc@cl@vpAgNbs@nw@`l@pGnWeuAp`@aeAuRo{@x_@mYhGcl@r]oi@kf@mbAzYqs@kM_TfJeVmWe^g@et@aB}j@mLeTzfgBn}`AhPkb@qZs\\bc@qi@~o@oa@j_Aag@dVx@t}@io@pg@rEkrAetAqeAu{@}h@mXss@oa@i@{p@j^ac@|]|JgKac@oG}c@?ka@nUiJlV`IhVwAhFaWxDgx@tJuQdi@}OpXfK|`A_KcCysAlQwa@oR}K~Dsb@cPkZcJgp@xM{e@ba@oPtEuWeHac@xvBsA`WwgAgQa@X}YdKgQvAcc@hc@qQhf@RzXcQfi@kKpWkV~dAiIzbA_w@_D{h@tFaWuEym@xpApI|_@nVru@hX|L|Qd_@h@nm@gDfb@vIl[eFeC}}Afr@xc@dv@q@rVk`@nh@sBgLyYva@ae@~Xgw@oOmJ@kYwd@aQfEy`@}NwTqCc\\ofAqi@er@_KkGmHiw@|Ac[kjDo@aZxHyb@vZyUIkl@gb@iIoKlEaA}Vrc@mEVcf@wxBl@uSqTkPxReKzc@yJuFka@``@so@aCaKcRom@sMwXgIgFmYsk@yPjBcL|s@kDtGkf@qA{h@~ZeOuJwDim@|Fup@rN_QwM_l@uH{dAkV{U{VhGsPo_@wAqMjMbGlZoTlHiM`\\hP`U~Hdt@_Op^qC|[me@h\\u]bB}EgKwRuAg[_JiSsOqa@hDgNgA}`@bDsDwKlImKgEaQeXnDo\\kEyb@fLiZzKiR}O_MrAqGrP{\\oC_WwVeR_m@}c@ex@iT}AmNpa@ab@flBm`@jIu@bj@~m@lr@mRxQmmBxHiAt}@mn@_h@smAlUyfBde@o]rc@fIpa@ugAgRsxB``@k|AmAm{Avr@ynA~dAco@~Pmt@pAuUtReTpnAkIxd@zWhfBx^xg@bwA~uAxf@reAfm@du@rNf@lP|l@mCbtBlPh_BrEfh@xRrW`JprAj~@rpArIn_Apq@bZrMld@|bAChaB~V~j@xZ~dAfQphAvp@zs@~|@bHtm@kIna@tJb~@bMn]tj@ja@jdA~lB|u@rp@ni@d\\n[nz@un`FosIxAx]tBzf@x\\}@bLfTn[k_@wWkVabrDwfu@mX|RlCle@|q@x@xs@eCff@xHxw@wVj@oKkh@om@w`@yNuk@lM_`@n@onx@tcj@lwA`m@bw@rm@xSth@vQlV~`@~C~I|\\hEnR~f@pMzq@cBx\\oPjYqFn]lMfN|\\r\\xQf^|Zvk@jE~L_UyDae@`d@kz@zOkH@muDs|@eA{@s}Eom@aAk_B{T{VvX{f@oW_RCeb@aMgJtCaW|p@qKbJuRdc@weAtcAwYtEC`UkQrf@ko@pH{mt@cfIrSrE`g@m@`n@qEdVjDjHdNfSz@rWgLrdAd^n[gEpGxCtQvd@rm@eKtl@eExf@aVlr@gTn`@bShWv^rDrj@dg@oBhi@oIfd@b`@v_@by@rEaQvAq[r[aS`Vg_@hDmUp\\u_@aDsQfEiY{Cmo@_NiJk^k~@ur@uCqJaOiId@sNdMumA}VqYkWq_@{TdE_UsPwDk{@zByy@}[el@ecAu^iXqf@sIcFvY_c@`f@EnXbI~X_ClRuT~Pqn@hZga@fXQhSai@p_@_Y~YyNnd@um@vWn|nFou~AjGE~wBk|@tk@_ZdpB{Xxa@iv@}Gke@~nAqY|Imq@rjAkl@h@e_@??wa@c]v@mf@fiBwf@z~@ifAbf@yk@dx@e[bi@sXd`@i_@v}@fSv{@|a@pv@ah@rj@kZz{@iPp|@y@K{bJK_gF??qsB`NmaB`]c`AvD{u@aYujAoR{{ArFs|AoZgeBqN}i@|Xsm@sM_Mm\\ej@tEuhB~v@erAii@mGjn@ykAgIsVgQujArBq~AfYgqC|UauApIe|@_CisAt^|vA~]_pBlLugDkFgt@}IsaAnd@_cAs^x~@qYkg@kTakA{A_q@gEmq@|My}@|`@ydA_DmmBd[_`B}HezAn@fF{e@sv@}Iy_BfTJbz@yf@{p@gq@t@g[y}@|aAqe@|gAgX_DadA{hAkl@mqA`Ig~@pZ{sAneAlv@t]gsBrKH|~@qrA_p@uiAfg@pQjm@m{@bi@g`Acl@ql@_u@mBqcAywAxCk{AdH}rA~]wB~]nm@h`@ak@n`@~Fj]jyBtj@zuAtHr_AyQtQj^d{@ts@fQhZngAhi@lxAbCjp@lYbCrg@tgAxFnkArq@xbAjeAdWhp@nBpgA{zAlIc[ny@g\\ln@mvAkKcsB`Zo}@vVwk@p\\imAdPeaAhYefBrB_cA`EdIbu@mRx}@gl@|dA_|Ajz@co@kSy`@g_Ar_@uaBbk@}_@acBg\\yeAyj@ua@qj@bDyh@li@at@|jAan@whAo`AfZqw@zSs`Boj@mMejB`Pg_A`Ewr@mOey@dT_lAfc@}QfWonBvCz@ns@wS~mAax@vHil@xc@oyAua@yz@_dAih@a\\uo@xv@mpAvnAadA~iAbXff@crAfb@ew@tb@ubBdOcg@zRwW|s@uo@hGcXpVqCdeAjl@nVzk@|T~eBfUrmAhr@thBdItdCeLv|AMv_AhChs@xk@tnAvZdyAtqA|fAtx@ct@gIicBcqAcbCas@o|AgEiv@t]~y@|h@wRjbAmSdn@epAd^gfBaHu}@geAiChl@kg@tUhlA|g@liCdd@~|@fXxdA`l@ln@sClA{s@qkBur@`cB`AldApFzg@ib@AetAvZaQ|h@rIvSmOtn@dn@`Rro@dUl[pYtH~RbBfElNdrB@|}ALd[nJ`aA~k@xFzC~RhWjx@?j|@Ff[|HcIfKsD`Rd@hEvpAb^l_AxHpgAj`@tN?fT{H~E}Gk@oEwL{Tk\\ka@gQ}c@nKiu@hLww@b`Ai\\uFcJbHsFdP?pK{HbByMdKlEvO}@yBeEtMcE`EmOno@_Srq@ySb|@eWry@uU|v@tPlSRzkAgOrq@bGr{@kRx~@}Hrj@{BlRqIbJia@bTHD~Vj`CAxtE@jsE?rzD?nzD?jwD?n}D?l|@?pxD?r`cDi~xBom@y[ytAPh@bKdhAna@bk@m@~xzCeemCvcAc`@sAoUa]eCanCvEwjBha@qDhPlaA{@jbAi@jcAlGtz{CkgxBcWwQqXj@{NxKnWz_@rZiDjOsQxyuDgmqC~`@fWvyAuCvjAiOg`@c[{xAyOqu@|T~gvD_lvCn[x@btB_CrOoPy|B\\{j@rJb~{D{yxCuiAvT|OpUn{AzKzq@oMxYmV|C{X}oAnAjdkDohpC|cBwF`eDcSrTia@rF_^v}@gZf`CsFlgAkRoVsXy_C|BkdAbSazBE}t@pSfMnVwfAbMuf@zMisAvAezAfDibBqLi~BiDodBjC}aApV_MzX~e@rOd|AlL~nAsFfrDrH~hxEqswCcwAxHxStQnsB~Pt{AeSqq@}RfvwEg|xCipArKbkAdKxfBA_@}Gc_AuQ~qkBifcBj`@jf@jh@tu@yg@cT_i@jL|TxTmv@bPy[gNi}@fRhRvl@wj@uI}Fd`@mRxe@hY`v@f[hAbh@yJqLcr@jP}FpgAdu@fd@eAck@k\\~z@eNbbAvBhxB{@pHoQ{e@aUdZ}Oos@ud@q_AobBwe@qb@gu@qT_\\vAtybDkd~BmcAlTsfAnRqDt\\_m@yCsk@tSnv@tRf`BaNbb@c[||@f`@|wAj_@nTqc@tsA~Diu@}]_Gep@iTgx@el@bDqJlZ__@sHdzxC_ilCcz@{WuiCr^auAx\\cGfZasBcMc`Axf@{uCtWmu@dXcz@ny@vqBb\\erCxg@gbBtLyxAnx@iaBbClRzj@tlBpgA|kAuYfaBc{@zoAxFzFxb@u`Ajc@{sAv[wXpOug@z|@pT|k@xmA}Ov{Caq@iwAzt@c`Avd@cIxTlhD}WbeCic@vjAm]yTsPf|Ac_@~yAi]]bQtsD|Hzs@mTeh@_m@mtBc@s_C_GzSiUyTe^{oA{{@dPsZbWkTt~Ak]r}BgT_g@yNbaA{e@bv@oBfp@iTl`@lQhpB`GnbF_MdcCiQjdBmH|r@}Ti`Ao[vwAIxRg~@_o@{v@i_AqXk`DsO~l@lg@gp@|e@wx@kq@k}CuXgjBr_AhH|g@nqwDmxoCgaCdAkvBdNj|Atv@niAbK`bAtm@hfAiA~e@{u@_@a^s_@qYl}nFitsC??aiBwm@k_Cmg@{~AZutAeHpG~n@bo@tTjy@`BdsBvY`cBpHjebGophB_{@_DtQ|eAku@hq@|WCrd@s[bVw[p^mRpJoZwB}Rf`mEk{yCuyBpG_hDxUyn@t\\iW`Y`eB}EzeBgSbjCiAk{@qQrjAaNjfpF{v}Al^tGreBk[vQeU|v@{TfJyPh_AgJbW_a@mDoMq`ArLke@nHwy@rEgTpT{]t\\k}@xXbklFalpCgxA~Ks~ClBw{@bQabAhYpmAvNfxC|j@nlAvj@?fZncDb]~_@kZhoCa`@yYmYij@ul@eu@ah@b|@ie@tqqEkcsCsv@mIo`AvA_Jp]~d@t\\trEtHt|C`Z`~Al@|FkSy`CuZjyGnFjvAeJgtAa|@yy@oP{nDbTanB~c@elBvCjxAyz@gx@wUo_AfFcTv\\t`oEgvmCaeAdXef@|{@kR`k@_hB|]woBr\\vEnZreB~C{f@~V`T|UbpByHnjB{OtgAxBhtBdTj}CjHdnBzDz`@m\\htAaPnv@~E~kAop@qh@uEo_BsIcwAxAqpA{IzwBsMpdC~CrwAi@|_@_V}oC_Xl_BZblBoOms@ym@qj@{WifDae@{~@bKd^f\\ajC{Q}uAp^seA}^ax@nSer@j|@k^{Xjk@a_A_v@cHjdcEc_mCzcA{g@_iAg]oiAdLonB}FgObQjy@|\\s}A|YfJfw@neBdWd{@eDfj@{VhzCgo@g@_SneoE_wnCwrAoAon@vL~u@fh@n`Bwj@fk_E_ztCwn@|[_Ab_@n[lm@`fBlEdbA_Ii@oc@leBxC~Bio@gbA~@e}AiT{vApB~ozDsl|Cij@aRa_AkChZiMipCeBynAj`@ehBjLoeBxJkp@fh@kjAdSztArQlrB~m@pmBnCp`C_GbbAoX]uUmp@sOhqBNzcAySrf@i[d{qDk}~C}{A}J_hAaAsyBcI{zAgVolAfBobAnPon@w`@oqA_IaoB}Ea~DqAe`@vEmsDqIkfC|BkfC~BafDzCeeC~FkqB|OvAtOnwCbZdvCtKpw@~LcgCKnrC|d@zdBtPziB`r@|_CjIxf@vKf|DtEeuAxFdj@dJur@x]lz@lTp_BtPr\\lWhvAtQwGdMyiBmAk@fN~eDnd@hbDgPrvDtH~{AqFduBgBxF_]qrBcMx]cl@ce@kCcfD|YftAag@jdB_Ksq@eWymB{MwPwTfwAmWpYe_@{iDtAip@vEq`BwUvkCgFtyE~BnmBgT`s@gX~gAiQ~{qCgvbCrg@lQ`eAbBpNq]oYab@ix@sGyo@hPUvY`_{DcvfCae@zVze@|TdsA}Q|q@xEhtAa[_v@kRuj@cZiaAvPod@fJl_}Bal`BsTgDeqAtN{~@`Y{@nJl]b@~oAsR|_|BwzzA}Tj]il@jG}x@u@v]rXbV`ChnAqYrN{SsvQiy{AmA`JpHhNg[jJ}^t@~CrXnZpIfm@yFpLdXv\\~@xI}H`b@fTb]|AzYkLnTmZx\\xH[i[wl@cb@~@{Nm[vDePuIct@L{KqLr`eCvxeBApjC}aA@sd@t@tSfXrt@lRt]_A~c@aDjl@yQn`A_HrmA}a@x~@q`@buAaeAqr@bLwvAvh@{qAlUg_@s[iSyi@qx@yXj|fCvia@s]ni@iGbl@y_@lYtRn{@q`@`eAoWduAal@qGsFrNlT|_AbcAz]_AbgB`LbSuQnW`k@ze@|g@ry@jUxw@}Dn{@ne@h_Ay[zjBeOlJBnx@tb@~{@m@ds@hn@xg@Elx@_R~{@ld@tUtOvv@tM~~@qIdkAbXvKsMbgAe[tVrSdY_\\pKuEnVfZzJuEtc@xUvqAb`@jt@gFp^xRtf@|n@lZmDhaA_UrUsh@_Cd@xm@{Xlc@avCjG{x@vHpv@Mb]jNjw@pU`Ijy@nYl@neAiSpfAoj@??vlAwb@pRsf@uPsc@l^qh@~FoiBqYc{@_aAio@x}AeQoz@gv@gTyfBodA~Ts_@o`C|h@qOnR~lAlf@yGsRkxAiTyrBu[ui@~P_|@bDmeAiY_Ake@}cBej@_cBoYc|AlMs|AuQqr@nFelAqc@ikAgJ{wBaSy`CqRwjCpCieB`L_wAe_@}NeytEkpb@fr@kRx@wt@y]i[icAoP}b@l@}LzVlZnZnMbc@gw{C{uqA~Csb@{i@gOfw@skByzB}W__@}Lal@{nB_{BpSwa@g[_Bu}@}r@yDqn@sh@mWcDmOrj@os@b`@exAlVcj@jq@`W~gAoUbZgiAtIesAvGojA|e@se@|Em[rx@uc@`d@}cAm@_`C~LcrAuGu|@hHm{A~d@sjAAuZlRwgAq`@_dBwTu|AiA_hA_U{k@o`@wj@_TbIsS~R_Wy_@ig@eb@rDg_AtKg}@e`@i~AeWyl@ih@_k@yPwyAgGip@~E{EeUrw@uj@dq@_S~n@`Vt|@uHjb@zFbOoXek@o}@m]cn@_jArVawAof@PoZmw@iaAwa@_SVoa@ha@{Msr@a^ulAiJyqAu@q|ArQ{u@~Use@`~@mVzYwTje@cVf|@ykB|R_iAlk@iXvy@_~A@eu@sWgfBmQx_@fw@hWzUjTlcA`i@x{@zjAaJrt@`UoOnt@~GzhA|^t@Kv^jg@{c@xW~a@p_B|YwH|_@~t@gAt\\sR|i@jk@zcAp`@zq@bg@jvAbQ`m@f\\fbA`Pe`@_\\`LiWop@_i@``@w_@lu@`UpeAlj@pe@jg@f|@~Az^b\\}_@hi@cr@fIcA`[mp@fQ_eAsk@ov@hWmg@t@cIt_@nwAnPd\\v`@v{@h^b_@vj@ibAja@oWl|@ae@hx@mi@~n@^lm@ff@`P_Nh`@wc@jRrH|q@zNnp@za@rDtl@tbArq@~pA~x@riA|tArx@|uArs@leAdFde@vZrTgSjb@`^hvAh^daApHhT~`Ara@tBjOkl@wMeWxrA_Sp\\dI|}@gOv\\kX{H_c@bx@mJb]mVft@h`@v{@dFzp@Ip`@fNj_@dHmHnfAh`@w@rDuMz@yXxl@dQbZoJjm@mVeQ}r@pf@cK|Mox@|`AjIoFeiAez@es@oAqr@x@yn@hZ{MzSyc@pc@rCjbAiHcTgYh\\{e@pk@hYls@iN`gAvf@zw@nm@jq@xFjZyO~_@o@tk@mMv`@xNjh@nm@fDgp@be@bLxgAaEveAkMtq@mZpo@iK~S_]bb@_H`~@ug@bq@gR|X~MzuAwj@j|@qf@pP{cA{k@jGaA{^zW__@iE_r@dbAghAveBgXnQao@dm@c\\bJ}PjHsb@eAiW|d@gMpShEzNyx@yPiMrGsMuz@o\\ej@gKcaAjGsV{f@eoAmFiUyWmaB{`@ztN}|RcGsDiPjHgo@NqJgQwIf@aQaFuHvYqM}FyXgHa[rL}ItSc[dL{TuNg\\kAyi@bOqOzwAjYns@fOreAaZxt@xAtWl[Rrj@gK`g@V~hAzIlj@`Qz|@|U`Ku@yCmr@}DyFz@sWnYeYxReCfQePsLwZfEe]{AeQ{HAuBgZxCaK_EuGeVqFlN_q@lM{XaDeT_i[ubXyW~f@eClh@fAph@_a@xw@|a@SrPlCn[gEpLn\\{c@lc@gZrIyGzXuR`j@xH|Oj^j~@~MhJzClo@gEhY`DrQq\\t_@iDlUaVf_@s[`SwAp[sE`QnCv`@tp@wMnq@oOzmAmAxFmB~c@`G|d@kGv\\bCtdBm@cHip@lWkh@n[qItK_[~N_HUgPcOgk@u\\g{@cQQed@sc@uV_@cb@tX}i@aTyD_YaMeXuHs^m`@wXqKwj@iL}LyGm_@oO}f@ss@io@iBySyEgJvW}WaA{Rwhx@fxGgJnx@fEn_@oKfc@gc@~a@w`@vmA??rWkE|rApIvOnFxPzf@_MpZbJ~hAvFv}@{ObJwj@hWcPkJgDjbAzn@OrXka@`VuYzn@uG`Mw_@de@tR`q@uGzSk[tf@wDf\\n@rBmRpTq@l[uBve@jHbZq@nNvDkBkiAzSeVpCme@eHud@tKcWb@if@xjAPmDqUz^FjBxIve@lAtNlc@jHrNpa@yGrSxGhh@`D|Vu_@jMgS|Pmd@jNsm@lwDY|TnFbQc@xXjGvGkR}NsE}@gZgIaOwUcLkOjEkT}Vaa@R_CtPkV`Jwc@cf@mc@q]wN_S`Amr@cZu{@s[e_@eh@c]eF}Rq@}UeIuThBmb@yFkv@eK_f@wQk`@uBwd@sDsj@iWw^o`@cSmr@fTyf@`Vul@dEsm@dKuQwd@qGyCo[fEsdAe^sWfLgS{@kHeNeVkDan@pEag@l@sSsE{d@rr@a[pFwOoI{[bCya@gL{MtY_v@ph@??xB`hAaXnG`SdU~VpO|Vr_@bL`\\nBbq@nMzVPbn@|PlPhAdd@rGxCvDda@uNl[i`c@_zEtBvd@vQj`@dK~e@xFjv@iBlb@dItTp@|UdF|Rdh@b]r[d_@bZt{@aAlr@vN~Rlc@p]vc@bf@jVaJ~BuP`a@SjT|VjOkElVmTzQnIfX~Yhr@eaAqn@oa@pVih@mTwNei@sF}CuZm`@~\\cv@rAeRq\\{Fqh@xEwo@p\\_d@aZkgApNmKnm@bDnPi_@qCgZ{mAlAoq@nOup@vMoCw`@w_@cy@gd@c`@ii@nIvraCimAxJtFdK{c@jPyRtSpTvxBm@Wbf@sc@lE`A|VnKmEfb@hIHjl@wZxUyHxb@n@`Zb[jjDf^e`@tQo@ig@s~@xn@g\\pd@jDpUyIla@nOnm@yFzc@q`Az[aO~Ro\\ph@s\\rO|DvYyMt]uSvP|H`t@uGfN{YrJ^n}@ub@nGkRiVuCvAi^sMuU_^eCkYgf@{Vy_@~U{MwJgc@`Mex@kLkOzH{s@hXi`@aGk]cSnCwJqQnMyc@sFeHg_@~@}m@sj@uXsESuSqJys@yb@_\\kf@e@_D_L{o@dDep@q^kW_Mg]a]cUxBmOlOdK`Tbg@lIzNf^dW|PbQfVtFpk@hPpc@g_@dCaGv[wLvL}CbXlFbVgA`LkNfD{MvTkoA_Eic@~F_k@vt@gXuE_l@jBsb@cFcUvIhJr`@|L~SzCxk@qKph@wPpQeA~Lt^`^uUxLsOxTbf`D{tQdWpDKdX_LfHjHlFmAhJdDrKhBlKz`@{LtKcLeFyIhAyLhP_NpWgKpTaG`CgQlOeJaCdQnK|MfMkPbScEnGsKI_RiGuRtPyGiMaKmHaGeh@pOkMeGyRfDkIzKmQbC}MgL{N~`@cWbXvt_Dihl@_u@nCap@Tuy@hT}WzUky@aFcUtM}s@te@{e@d[qS[id@vKpCrPam@pAgn@pXlFtMph@|F`i@`B`j@}ClxAbE{h@{a@nXgOfg@eCrTaQxMqb@hb@lAfy@wOxQcLlpAuHxTeKmVsNh|@eBzk@l_@|XZ|GfN|]zEvY}D_`@iRqLqUg[{L{^eKkn@_Ew|~@gscAkCKaHaN_l@Zyw@uQdi@rYqCtJvEeA|JvChHi@bBlAf@iEnC{B`KS|OhDw|~@gscAwJfB}OiDaKRoCzBg@hEcBmAiHh@}JwCwEdA}@`D`_AjXr]cGpMaXqi\\eybBs\\bSwm@lD|BdP}`@|KkHcO{i@~E{DpRom@vBw[x]rQ@tHfJjMtA`CfM|J~Av@xDhTlEtZa@zGvLx[yJh\\fBpo@aR~TtCbb@pXlm@cShb@{Yz^_NrEkY|IqQml@sLeVqN{k@cKuN{JoOdFoqZy~gBqMx^jPtOuUfUmNl`@zCpTsXzf@zZpEnOeFtNzJzk@bKdVpNll@rL}IpQsEjY{^~Mib@zY`Ux[lU|F{Gtg@xDrInRwK~\\}@tk@dJ`v@sA|GnOr^kPzQlB|aAcRzKpLbt@M}Fok@q^yi@`yAoJn\\kOqBkZnKcMcFgi@nIo`Aod@?{NoVqNgx@tJcTeKgLgs@kBsJvLmi@y]hMmVzAmb@gn@fG_g@oHc@bWc~@pMTdUq~@uJcb@cPqeArW_vqA{nWwYlDyQiNyMjR~@|Xrb@|MyYbP~Ul`@zLcJ`NlCza@a@^_RzCgPcTi\\ckRmkjB~f@nHfn@gGjXua@z@{~@mI{O{PwQav@{B_UgPgq@sPbAb_@nQjSoFnP{`@lHfNrVrQyE~k@~k@edW}qlB}Rh^nd@rq@j`Aib@vG}Xv`kCyfb@g@_P`OwQgNoIwCaWlD_a@yFuIwo@Had@`OmOq@kJdUea@g@~@rQyZfAu]|UdVlXv\\sLt[rApS}AfJjJ~VzBnHeNtS~G~Wvi@bO}Hv}Ogot@e@aK@eCNaiA}cBcm@k}@qHer@wO{Vi^chAwWuAgm@cc@mDg[cVypAqImJiWlOgLpT_aAvB_e@pV_g@a{@ea@sbA{Imf@wXe{@aR}hBcJkfBaDo^fH{y@sWwaAMmXnMwi@wBtK`_@{Hpz@tMpr@pe@za@qD`n@ar@fd@QbNqe@dXsYdoBgSdv@kB`\\~I~q@oCn[|Fda@mDhf@xWbY_d@pl@iAvYgUza@e\\oJkp@`\\mZbf@duEbvB|sDxyBdwAzZhdAbETyf@|[cI|e@{PzMi\\xqEkgCxqEkgCxerCnHuGln@lRtg@bcAl`AdjArWhe@ju@xJdi@hb@tXfYq^fXwExX~Ct@}UyP{MlF_Yi`@um@pLiZzV~[ld@kZuKsPpIww@}TkHoJ}e@sVgg@jCoXga@mL_j@{Wo}@tb@sJ_@gNzYat@tGwP}Hu]tSc_gA_~i@zvF?nqF?fzF??eeF?g}EvQiq@cOse@tHuYsU_]crAa@e{@pO_}@lQ_\\vHao@yRwX{Pcv@eDmk@zF_P~]oMkScq@vMuo@pBw]wN??{a@bzAgEfOpPbXlLdn@~Op_@rMzIxScSd[}Zrk@qxAlEtD}X|`Ake@x}@gn@j`BaV|`@aShb@aw@ddAjK|I_Arg@ygA`w@{cfAkd[tE_X}Y{zAeEqh@sRcRam@iIs^sb@ic@hgAePjx@ga@l]itA`z@wa@rb@{`@`c@qRnTu]vQxQhNvYmDjTgStXsc@vZaSbOsTlu@aXxi@WbNaLrc@vM|d@k[nRrm@zpMsmgAdDuScVmVsG_PpTqQgPah@`Xod@_ZcDqAq\\cIcHYwo@{[}OnPi^jc@eAvIzFzc@@tNq]nX`HtUzNeBok@pXcZmwAal@okAfJ{rAKoaAtI{r@iBadB`A{WhWarBj[wUoLieAh[mgAcGiBhc@dz@rh@`oAdLrD`Tje@ra@bWzq@kWtb@bc@|ZnLrg@dn@lKfk@`o@jnA\\pz@e@bf@`UzVrVp]eDdVcTtP}b@ysu@edsB??mHzInk@~b@qQhy@xYxRnr@Axt@gVjZsFft@`JgF{c@~UzFrf@gUlD{b@_nAmPwmAaHybAhIo_Ay@yi|AesNpoDpzDlpAvAtv@`k@`g@d@bPtRti@?fXcT`x@bYnQ`Yrh@}CzLeFrMt@vRSbnAat@nj@?jTqS?ab@l_@oI|c@_cAp[oM|I_Xt^m]je@oCiTsb@e`@o@iHcRXew@mQk`As\\oPiEqXwYwn@wd@}]kXq|@_Iut@wgA`LoRsm@}d@j[sc@wMcN`Lyi@Vmu@`XcOrTwZ`SuXrc@kTfS~TrZbTh\\{CfP_@~Q{a@`@aNmC{LbJrLbUaVla@aVb]{VfUikEdiA_zv@q{eCbHvj@u~Ath@rx@bn@ugAbfAbi@pt@iw@pm@pXtg@o{Axi@nVz^`y@bc@xdCvnA????lpB~CzlB|UtdBdLdc@ca@p{@oS}Lq|@j]kw@y\\mc@uw@gf@_nCwbAuh@aLnEmY|uAq\\`TiWt@g_Bn`Bqi@hrAq]md@oOmdA~_@spAaBcbA`Nqz@sZu]yl@_`BeTgoAzW_q~Idk^?n]vf@jN|f@dL~FiVg^yKyRmB{{zI`ea@oNiIoT~PhIt_@ve@pGna@wF~DmZcWoT`d~Ihh^vF`]dDhB?o]~ovBrgdB_jAod@ct@rNod@_X_q@b[vQzTjsAvQb[{Tbt@b[r{cBwbG|c@dx@dR~l@~VvVz\\nCpGsP~LsAhR|OhZ{K}NgYoDs[}I{YpWad@|Cwi@q_@wt@gTzE_m@xMeaAvs@saKor_Bo\\jOayAnJp^xi@|Fnk@dPtIl[wD_AzNvl@bb@Zh[y\\yHoTlZrArPmQnVtT~QcOjo@{`@|FdFbZrw@hb@fzB}O`zAhSbFrd@lgAbGheAi[vUnL`rBk[zWiWi_@od@{Jo{Bn_Aq`A`m@s^p~AaWfEql@_pAsL}gBbOvRweA_z@xYopCwo@wQgr@uu@sK_H~Ta\\`@a\\`Xsj@n\\a_@{Cuu@n[_MjDsaPggrAgg@{VsIrt@rSfo@j[wKnMai@w_UilCw\\cC}d@jG_d@aGyFlBpCfZoPh_@om@cDqNlK`ZjgAq\\~c@yEvo@zFph@dRp\\bv@sAl`@_]|CtZdi@rFlTvNqVhh@pn@na@f_Ac~@hh@qr@|d@q_A_AwSsL_SeNol@sKim@aTsB}yARjbKwehBfn@{Kre@Z{Ko`@zKo`@ks@qA_bAre@j`EyhgBC@eHic@zh@oe@\\[zjA_J|M}OwU{ZpSgPr`@p\\tBg{@p^{^uUs_Aqo@uq@}p@|CkjAgDxaArbAu~@qGocAHhO|q@dw@~v@s_A~B}CpEuv@vhAyi@`Ime@dfAyPtWwjAzJrF~f@x^hQ}Wj_@fw@t_@rrAQjiBdPb\\iKhh@h\\zx@cFzj@zVf`@oKuzAs`A}v@oLNAp`BkItP{Wi`AkRfa@u`@{J}g@e`mAuysAsFkFys@tI_{AbIctA|\\}IrJ}d@yHgy@`LcRtXif@lMfOrGy]x`@nGjFt`@wBrm@}PhNdIxuAvHd{@u]raA|AiHuYrNsi@bc@aVra@eFo@uoTrCnRcYf_@Bjl@}Dfp@uNxUxLfw@}Cb^uOrf@}L|T~`Brc@va@jThw@dQtv@wPyAuW`Zyt@gOseAkYos@pO{wApGan@o@ob@qkB}AqZpCeSaIfwYsqWc]R}k@fNwLk@uC_Fca@|C_HoBsBzU{HAiOiGkI`AkPzNwY~CcPoLeSkG_NwGqKr@{LvLmFdPsXdYxKbOlAhSiLcEyFfFhBrQaR~PlKzC`DdTmMzXmN~p@dVpF~DtGyC`KtBfZzH@tPs@vKdXtPIbKiLcCcXbYge@jO~EhLl@dPpBU}U`IiOaAeQpLgYjPkU~p@ApMvJfPl@tInLdFhPl`@nZjZ_d@hWmW~NcGrNkK`FsZdHyLbQeIwZo]_Rd@iOoIwLC{HgGhDwSyEoErs_@upYacAy@cMwMyR_@uWjNkRFsSoIsK`Q`Z~LbZa@xYgLdVlMdJP~MvG|w@i@hq_@aeWa`@eIuS~@yO_ForBrAd@dTxEnEiDvSzHfGvLBhOnI~Qe@vZn]j`@cYhYeCjMsPKoH`RgLazQwmCudBl@QdjA|yAS`TrBtJmHcjr@g}cAxFlQ~xAhDSiIfkAeKqJqYea@`Tso@qBom@lCn@zIoyk@svoAgm@x@aq@eP_k@zTyw@}DUc^m]pOhRbf@zM~E`e@y@r_@{DtjAfOij@bb@v^dIxa@@``@e_@vJtL_Mjd@g^h\\pVtLya@x[}]bQ]hb@xx@qOmQz^tf@pEuVbv@nh@Xfr@eZlV_q@|Iqh@jWw[~^sb@fCyPa\\i]wBiSiSaHg@mO{g@oDyVuL{`@f@iI}IvizAgk`D{pEid@gzExAwnAaV{{E_EgrNxF}eKpp@lrB`WbnFvAjoIbEo^bJe|E{Ei{DpTixBcR}r@lUrcAhc@c~CgVonHeWkzD`Kab@tYv}Fnk@hb@jMvfExIwoC~AbhApl@hq@pg@}@ndAajAxg@r`BrAveBvRirBb`@uMbt@xaAvD}oAvt@xiCnCmgAlXlS`UbwArHbvADimAji@YxZrzB{Xd_@vOksArN{pAde@uVhq@jnB`Kdo@aWflA}b@kTli@rgAz_@wcDrAcuAlBnfDju@zhDhp@|uDpT|cAFr_AbW|uA|`AleCxj@dj@pAdrAjNxxArMpt@re@Zxj@r^`h@zdB~p@cXxo@`[tr@~^~{@`wAxBh{A_r@|{BIr{@ia@th@_|@hkBwlAt^ug@pGew@puAux@oUam@th@_Uy|@ahAa}AgVuWcYaLyo@lfAbU~`@hHbw@zGtkAkSdCmi@mWg`@_y@]q~BrOljBuf@|v@kTf}@vGds@mNydAgy@~d@iVrp@ej@fjAgaApnAiWWcYvfDqc@tcCqC~eDnAnwCrCpgA}RrkBif@ccDsRy|BiBljGgOzkCoXsGiWskFa]{cF_]eWwUtgDmUou@}WkwEsj@}yAuE`Ya[asCoOe_EyHa_EQecAnRwdDma@etCjVwvA|Cy`ChSrsCu`@fcsDuk[q@eQgFuMzGsJa]_r@goAEq@gTbIyB|EoLbVmMfV{Sg[E?eb@ky@Ayx@TNnp@zCpeAsQ?kShJmDiHiQ|Fn[zVr\\nPjC~J}CfK|KzNrMxBiBjFvJ|ElTvN|@dH`_@}I|e@c@r[kKtlmBwuBfNfApa@iDhSrOf[~IvRtA|EfKt]cBle@i\\pC}[~Nq^_Iet@iPaUhMa\\nTmHcGmZpMkMn_@vAfi@mn@}OePf@{[me@aIoNuJjTeVmDyUqp@uc@_h@~Uue@tg@w@d_@qVn@o`@n]uWvT~Hdw@|d@hOkBvMpJf_@uZjl@aSBeGfb@tkaDgh\\lTg@tGnGtTdGvN?xL|FpKyArIqHpEz@~FzM~DO^zKxTdPpJlFjEvFlQsKnLtO`LMrMl@i@v]dHPxFfMlRpAvIqR~QkDiCaXnGwExKoClZnFhAmGzQaInLmKjQgD}K{N|CgKkC_Ks\\oPo[{VoElAuL}I{P]yDbDuHcBa\\rD{[s@cS{EiF_F}RdB}MfCkOm@kKmDq[tG}Hj@aRtJaQ~LwUpHij_@oyyA{RtFum@xYsr@`KkVkHeNdWyRxP`WpVf[{Ldj@Zvt@kId\\j@pL~KlUkM`L|Xs]f\\oLjRw[hVyVzLsV`Yiv@tVzErI??vy@cVfc@oUdx@qQps@_m@sKuCn[gYb@cTdg@{HdR~YlQ}Sk@uTgA_@qj@bAmJqIgTdIqWf@FoPwTkEaEgX~`kCcoe@mD~`@vC`WfNnIaOvQf@~Onh@sIn\\hCde@oCd\\tJn`@oRoDcSox@tGen@~CoU{Lp[cZO{Vlf@wHaMgPce@vAkcj@kq}Aua@~OkCvOde@bLp\\ji@xd@ji@bq@xJ~e@yAzn@lO??jVjHrr@aKtm@yYzRuFbKaTpIUwSgg@`KqLeb@CwCoXw^~NaVxEos@uF_DqKyWy@m]wHwE~Bk\\yFuMuMmSyB}aA~QokrGnaDa@tjEa@tjEtv@ir@l~@qKlNxPdnA|@qY{q@kf@kPhO}bA~\\os@dxB{s@nr@gDz|Awx@lQj]~VnDdM}UDcZvn@u]ibAqUqk@f@fDqOnzACvWgd@xv@oJlY}]gsAeN__@iSkcBrXyHfVoP`dBu_Ald@es@iaAwfAud@qv@Amt@vTkm@jUqasFxjPiEhKe@|Qxg@tm@nt@vLnFoFsDgT{Yce@cceG|mL`Ean@aJmUcLcTeMhQBv\\sfeFsaGpb@nw@}l@bz@vIv[aeAzx@`iAjFzSri@wArw@b{@vi@r@f}@bWp~AdHgU~eAb[vWee@pk@qBd^_ShiAlUxUg]|g@lBnr@eFpHyrAd^kP~\\mt@tGuu@gF}x@cd@oh@mIvh@wi@hb@ig@uK}f@nCkc@s^_]oDcz@nP}q@iLa_@{uAaWwTuTcfAyfA@ut{FbnDwcAfQwUvn@vs@wXfs@eDfb@bCfj@gAyMia@uxvF|kFdj@oJdK{Yg~@_BoNrSwzxF}fCoCba@}c@nDyDpXfBru@f_@cEnH~d@wX~_@nPnFfXqf@pQ}nAsK}p@_boFuu@{fAsAw|@kl@}I|Lfq@~|@|m@~Jd{@eKbgBbBru@~GzGhn@}v@pv@w`@i[qsBgTdDv[dZaHbZrc@`v@dWez@boAlJlTew@dgAP`h@h`@jQpW_Ug]er@j|@dWpNgPcGeW`l@sc@sC{{@th@~QiDzgAqAjxArf@`HzYiQ}Pqx@tHi{@hYMjRyi@yX}g@{Gsp@m^e}AcLwXct@mm@yo@lQm}iFd`S|qAyj@gy@iK{_@`R{T~QvBzO{~kFptOqh@wCaw@}UdHva@||AvPbrAwFDyUsp@_Li~eFriOqe@aDqNpYhgApKfj@jGr`@OoT_c@ga@OwOaUm{rEjpKoGfUwvBdEyLwX}rB`]wUng@w|AlJukAbd@hfAxVvcAeXpw@t@z_AsCny@eJjgA{Vzl@eE~XxF~pBwXxI{Yfx@sC}i@uz@yjAtBmq@lWczjExbAqIpj@yTza@{l@pDm]pf@vNvlAlAr_BfdAh@rs@gs@foAar@vY{d@hn@{q@~]{m@pn@ovAzu@as@jQwt@`Vyo@hw@if@t_@ot@`n@_b@d`A{cAnDy^gg@nAw_BbKgv@b|@ko@ji@ma@~Xez@dbAq~@\\os@xi@ec@js@qn@n[~W`r@yb@tT}a}Dkev@wCtV|TnJcDle@tk@iJzoAdj@{@xb@na@ls@bBl]zZnr@zo@gMlAt_AbMhTsEpYx]xM|_@cbBfPDfI|f@da@m_@iRqb@}ZqBy[}s@~b@sI~x@Zlz@qGpDmj@x\\aBnp@aZ`Uli@cl@``@bf@hVzLvUoe@vOrItd@sT~m@wHlr@|GxUpi@W~kA|KqB`n@j`@|c@|xA`i@|dAphA~m@lf@f}@zg@Bv[b^lNhw@jUd\\hBvQtn@_LfpAiBzr@lYjz@HdiBh_@~An[tn@aRpS~w@vP`Tni@`X|Pdz@iy@|[qvA~V_~@zTq\\d`@a{@nNemAxI_f@zw@{tAzXcxBtQ}nAEwjA`Koy@~yAld@`k@oFrpAwjAa]sUlQoWhhAat@sh@uh@ohCBjKst@bb@u^bFco@|g@a[{cAo`AsgAvCk`Aq`Aef@k~@s{@w}@\\qk@it@cc@lq@{]vTgi@bUyu@s]}Yy}AfNudAiHi{@os@ebAfhAhE~q@{W~^`Az^zk@kGqPzcAk|@pf@{uAvj@rf@h[hWny@q{@rV}y@t]opA~a@utAbGac@x^go@|DejApMas@a@eFuWfGwf@yC}Yce@cLgDfp@k@nKyw@vVgf@yHys@dC}q@y@mCme@lX}Rkq@yF{w@om@agAwf@ms@hNqk@iYi\\ze@bTfYjbKwehBiItk@fn@xv@xmB|c@lwAmHuq@i`At_@o~@atA_p@gn@e\\{Kn`@zKn`@se@[oz}Ammy@pa@y_@Ri`@~R?gIgl@b_@on@rkAga@fj@mz@mMwo@o^qTvCoc@|g@yQng@oiA??da@cq@eKiRnRufAyi@yP}HpVq^z[{i@hGsU{@uhAam@mVsCoQhQpT|]}e@v_@qNcByR`m@gz@~Kkj@j^{wAxIs`BqO_EsM{u@aKok@wb@wh@x@mZsJmk@vDcdAt^}p@xEmfAjv@qm@dAoDrs@nXzlAdPnl@gZdHvYfa@oSzp@{Ctf@in@nIcDfg@tw@tw@}]z_@eXvd@wz@lZu@`v@}\\bIeDv[dyAh_@pVrgAptB{QbcAkMpeAcGrYskA|\\aJ~n@bJ`~@f]jkAuS`~@ao@d{@yPvh@iz@bm@irAr`@bIvf@uSupkAay}@dXckAkiC_`AsVqjAzDul@ea@mNa_@_f@yYuHugA`G}TzN_]oIog@niA}g@xQwCnc@n^pTlMvo@gj@lz@skAfa@c_@nn@fIfl@_S?Sh`@qa@x_@`d@aB~h@eDzl@~z@fsB_DdoDu|Bb|Awj@xi[ox`ClMlg@seAri@fpAtn@fsDxi@zt@lJhqAgHjmDwRq|@sZ`gCq]umBcKtAkQdbCoMei@wg@w}AeHm`Bji@}}Aaa@smAtP}dBi`@owdAi{~@zItRrUuG`Lrh@uN`F|NpGvAnOm\\oGm@hWb^|bBfEgOza@czA????eQsSfCqBqOe\\sKcn@}G{Nw@S}SBwD}IwOY]pXlGnHukS{qzA{d@|GgF}Jw|@yI}LtTkxAdOvEv]_NrYvp@cHxq@dUmB`^tFxPoSx^sy@l^m^tr@qdAjq@}o@KgNxLpPlK_w@pU{l@|Qst@p_@mEtJtJjUta@e\\fu@gIhYlg@cl@bVjFr_@bYtBj`@rt@`YxCGcRwKo`@qLkLjWec@`Ro^~XyFlQ_Zbg@iJ`ZcXfm@aCxo@g[dx@sg@ni@_c@nRy|@b^gFxq@sSv[lGbc@~[~XpCeFcZz`@}FbOko@uT_RlQoVsAsP{YjLc]}Aab@gTyI|Hw\\_AqLeXgm@xFoZqIqy[_oiAmn@mDnUdp@kHjRbLb_@xn@qVv^wEfvAw^wGa_@chAtDk_Pg{nAg^kRod@jk@vGtqAl[}BnXxStVqOnAkjAfMwb@bovCubc@ai@rDg`@~MiIbP|j@d@|QlI~a@aIvb@wUoFiMiYiCsldAsg~@{IuRsdAvWkyBsaAeXbkAzJlHd|Bj^i}@l}@tSrIfI|Stn@tG~MnU~YfRpdA_I`A_Hc^}bBl@iWeHkQybtGyokAzx@|}@a@n_AnVzp@{Ih^p_@`k@xnAj\\zlBzB`xAhfA~h@_WrAwm@tkBxL|hAl\\dhAd@k~@~l@th@fiBlg@fYf]gWkNiw@pf@eQlX{i@cz@gRw_@if@{}@i_@{l@ui@k{BuQ{aAxKk`AcnBuh@z\\uzAo}@ob@iWif@mkAvIgeAmYof@maAoJaa@tuAimyGqztAgk@oY{LdeAt{AbPvu@`}@haBwi@~`@jcAndA\\pGc}@{]ao@yaAoBeQmuAoQuo@mhA``A}n@~SepaGoj`Aqa@gd@qb@dFuXgY{l@nL_GlTdb@xd@rXaS`_@nMpOpc@vg@wP_siD}b_Bpn@rh@|r@xD~At}@va@f[~zBqS`l@znB~^|LxzB|Wgw@rkBzi@fO_Drb@ne@eHj^mUv{AqErfBu@tUzE~wAgYnb@|KtHzc@xeBoTdh@xG~LjZxb@pJlqApj@jZtk@fVLbPs\\nnA_AtKgr@n]MuCu}@xiAsl@djBzChhAbHtz@kw@br@sVz_Bwk@tJmDz_D|c@mAleF`_@`Bvj@_p@fi@oP|eA~KrZxSnBgNkNaY|JwTlgAiTd[cw@na@yN`AkSy{@|DkAul@ct@cIsu@hHgJ_|@bJse@p}@~Abt@gNjgAnZhy@bLv^cIkEe_@zf@wh@jm@v@`t@ki@cc@kn@fQwKyp@ucAi_Afc@wFsl@a`C_cAs`Bs@whChj@_iAfXiaAkYabBg@}nAl_@eQqQwvAtAuNs\\fdB}i@}z@o]tJ_P_{@gObl@yi@u[iT{hFwTo]mNk{CaVew@}XioBlLuRx_Ag`AgNioAhTdDba@}z@qBs{C_z@zUrRwnAho@ujCt}Cg`@u_@cuA~b@yxAaOoa@fJa]bc@wj@bKqYnYooAkGcqkAhcHtxAo}@fCgc@raFi~BpI{ERgaA{PiXw]kh@wUql@nZwfAhFk^r\\kj@me@id@ki@eh@m_@nI?`b@kTpSoj@?cnA`t@wRRsMu@{LdFsh@|CoQaYax@cYgXbTui@?ru@zeAWtbF_d@pr@vj@~WlN`YlVpCzG`k@`SdXdKrh@criCspqA_MkZeh@yGyeBnTuH{c@ob@}K_xAfYuU{EsfBt@w{ApEk^lUoe@dHxGbMlaBz`@hUxWdoAlFrVzf@baAkGdj@fKtz@n\\sGrMxPhMbuBnHflAiSvbAxC}D_c@_cAlI{UgRqn@bE_oA_l@`iA}_@nk@pNbm@oVms@og@qjgEuxVxMmjA_g@_s@yoA}Jsy@~Gqr@nWg[cj@mv@`VoMrh@vF|iA~gB`o@mZzd@r`ApCbu@bXhs@cHjXq_@}luFkvhA{BsD}ZdAiWe[ek@aBsYaC_HcN}t@vhAmNng@O~fApVja@pw@~J|p@zXhw@jD~Eaa@qJ{m@rZ_`Amm@qI{eg@}vpAdCuU|MkEhLyOuJ_M}MoCsGwSeJmB}GxGsJzBeG|HiI|AcKrJ{GK~EfNnFlFcAtC~LjA|c@tHxAxKmu|Aopy@_LrZpDfMcSbn@dk@r@pNy\\tv@_E{l@_{@mvpEsvZlv@aVf[bj@pr@oWiSe[yA{s@rq@ou@zBu|@pn@wq@fn@iCpKvTrc@x@tQ_Jz`Ahd@n@aw@kN{`Afi@yApBqd@`ZiRiL_Vet@ug@sDtMi`@v@lHofAk_@eHqc@jp@a[vw@}kANgWnu@~f@jOzPnU{iAjd@}r@zhAkf@`v@in@lj@wNdk@y}dAy~_AvOXvD|I|SCgU{q@c^ak@c@eAc[dBgInWba@pVlnOk_NzAdQgEd]rLvZgQdPyRdCoYdY{@rW|DxFxClr@jOPl_Aw\\vw@sn@ft@ea@bi@ig@}M_SiBeQe[{`@c\\e\\iLm@kO_FcYfe@bCbXcKhLuPHwKeXoyo@_~i@?x{BzfADVfYhxFuvBfxFuvBb~@da@dk@fVdb@ka@xaB}YlZcf@jp@a\\d\\nJfU{a@hAwY~c@ql@yWcYlDif@}Fea@nCo[_J_r@jBa\\fSev@o]mMmDmYtE{X}i@aWgRaSm]}PqB_o@khAnTgYkDgs@lI}qA|Zg\\pv@cw@bKawAbYqaAb^o]gO}\\w[pM{n@sRk]al@i\\_j@oGqsAvKiT~ZgVF}RrIa}@jFgNrSrU~\\uHtYbOre@wQhq@?f}Ewv~CeuMlH``AdYxPju@hMv\\up@`J{xAi[mdBej@va@a\\~j@crw@vpw@uTxQdRl]rIjSxa@vHnJ~RjUdEzm@ao@k`@qf@y`@oWg\\uK{vr@}rkB{D~Zfr@~RnMhb@xbAnVl{@K~MiR`_@uE~C}NuEcPrZ{Hn`A}IfLqs@qfAeRygB~Bm|@eEwG~Kg`@`CuxJ_|`BoKbMpBjZ~Ph@~LkDwEab@oht@egoBc]lMiDh]cSzc@dbAbW~d@nI`{@i]f`@aCvG_Ll|@dExgB_CpfAdRcAan@w]gf@{y@iTsp@tm@eq@g@_K}n@gt@aJkZrFyt@fVrfC_ucAqV~f@wB~d@qT~`AmOfLlJhWxpApIf[bVbc@lDtAfm@bhAvWzVh^dr@vOj}@pH|cBbm@O`iAnH?m@l`@re@`AbSdMj[?rUcGrs@vEhSto@pRpCj\\xmAzuAlbArShuArX`[nFnUvkC~C`@A}A_\\_W_PmSq_@~BeTmTak@ya@wf@aTaIoOoc@o@g`@qUse@sh@yUsf@y~@c@[m^_Wcy@}Egp@ui@i^uOes@es@rNwlAwVwt@kG}_@gg@ei@u}@q[im@yXyh@w_AsRke@_m@Hud@nYmz@iCw_AxLu~r@yd}A}MeHqh@eEam@lRuXjAg[xOnCdTwUdIaHbYyT|NlChHuJhEpOrCxc@y@dEuG`L~CmCdJbP|R|IlTtNxEfJq[sEuY~@kZ`c@ed@xRkYjRoQow_BjjWqOpYoNhh@_IdjAgOf\\fE|\\`JjQdTsc@vJnQ{Jhm@nDnYfPlM|B|s@rWzgAx]buAre@luB|VzuAf[ngAzq@vMnu@lY~b@}Nrp@kUfP}_@bCmv@~Typ@vD_l@eJal@y[yICyS{\\kn@sDyf@nMq\\xJmf@~Cqx@yT_b@mGsf@c^iA{a@yKcViJmZYsb@sb@mr@oe@wQm^nGuYqYnFma@mj@e@qd@uS}ZnwcFmp~@afAyCknAyEzDfKk}Aj]qmC~j@i{BMqp@?CyXgkB?yUdU}^vRed@nZuSr_@qNja@i_@zQ{r@vQkf@kp@cr@e@_k@zWk^xi@sTrc@{c@rb@wLvj@oPj\\wo@jRkk@vLkW{@fWzu@|I~k@pCtrA~Dp]yI`a@kRn]oKno@mh@nm@sMtb@mWv]kaApOyXdYyu@oPun@iEym@gJif@uIwf@oX{Mmc@eDqs@wIgQki@kOaaAoMkv@dA{d@iD_NfLbAb]p`@dd@zM~d@oJ|IjH~YrNvo@zNaO`L`@zJXjUvd@jJmFpF|AOdHxx@Ujy@@?db@f[DgVzScVlM}EnLcIxBp@fTfoAD`]~q@{GrJfFtMp@dQteAgbAf_@iS`r@iOza@pCdq@nVn^bEdk@mOxm@{Jly@u[xm@wGveAa\\hs@{\\xNuO|a@wB|~@wR`Yq[bbAmb@h^mf@zMm]yScElEyPkMeOIsT`Ta[rD{W~Sq^`v@c}@x}@yo@l]}e@rt@qXnJgNoHse@x^qM|c@k]pNsj@r`@aDhc@}_@f\\k]vAqRr`@cn@bU{n@]_Wdl@yWzSvArb@gP`IlXkI|\\aE|m@mTxXkm@~i@iIvMoHlCgGnTcJ[oKhg@_RzNiLbUif@x^uSby@qQjZkPh\\mB|_@c]`AaXl[uUzZn@dJhY~U`JInO_e@|g@sb@`l@e]|^{NaAwl@nH{`@v\\kR~i@{ZfG`GvNiOpe@cNxc@ic@qCuCwXpBeVkViAe[bo@qk@tc@iP~Uaf@dV}g@~[_q@yuj@_tqAg^`SmChh@zJ`AhI|Iz`@g@xVtLzg@nD|XeNzGyY}FgT??}FNyAyK}c@uH_MkAgTuBrnUuhW{AoRhDcWlVqPhKyb@zA{e@aTkJoIyc@yRm@sj@jPgb@iKeWbCkH{LwyF_@}Lwj@zIuFb]wlGd]wlGu~Ac@yqEjgCyqEjgC{Mh\\}e@zP}[bIUxf@idAcEE|nCda@vh@hDne@nv@zHftAjDbVfU`g@lA`g@HrN_Kja@zGly@|X|JpRno@~ZnG`OdYtKd]kGbPfNdHxi@rp@xr@m@dT`PnYeCfc@xXfHpM|FtHwY`Q`FvIg@pJfQfo@OhPkHbGrD`R_QiBsQxFgFhLbEmAiSyKcOrXeYlFePzLwLpKs@~MvGdSjGbPnLvY_DjP{NjIaAhOhGzH@gpbEc{f@xb@lMlc@bZbk@xAn[pbAjYjJe]xu@uf@rl@qXfh@zUju@pTnJ}Mj^uh@rp@cF|a@^~[mW~w@ha@fy@f]f_A`Ekm@gR{n@`T_d@cDacAjXk_@jSyiAhJ_nA~Ywr@dh@j^`fApk@`b@qDte@uMoTmlA~Kqy@~o@_gAsFqUpc@_Ghk@_r@bCgq@yTlHi@yk@y]yMrEqYcMiTmAu_A{o@fM{Zor@cBm]oa@ms@z@yb@{oAej@uk@hJbDme@}ToJvCuVqc@sC{Sxc@iZzMy@xn@nApr@dz@ds@nFdiA}`AkI}Mnx@qf@bKdQ|r@km@lVcZnJyl@eQ{@xXdt@tg@mef@ydrAxOpD~BwJbZv]gCzRbLyCnPmS~YkK{EsIcHka@kSqMuJuDqOvIcHrGqSvEyV|KbDjDmkjDah_B}`A{IgvByt@a~Ak\\iu@dRg`AZwh@f\\k}@fAkyAtNw{@oj@jXyc@u_Aw_AaeAxXuw@hFohA`O}Jxm@ywAhYaz@qJanAeGs}@fGe|@~\\}d@|^}x@SwmAdImx@oNiqAkIozA_k@od@vEw_@|SqiAgDl]bn@dk@n}@cOnXkb@{Fu|@tH_o@aVeq@~Rsw@tj@zEdUhp@_FvyAfG~j@xPxl@hh@h~AdWf}@d`@f_AuKdb@sDx_@hg@_S~VcIrSvj@~Szk@n`@~gA~Tt|AhA~cBvTvgAp`@tZmRrjA@l{A_e@t|@iHbrAtG~_C_M|cAl@tc@ad@l[sx@re@}EnjA}e@dsAwGfiAuInUcZaW_hAbj@kq@dxAmVns@c`@_obA~nU_n@aDcjArPiO{Foj@s@iUwQod@^icAgWwp@gc@????aI~ZpAh}@wFxu@mAt`B}Ir]rQrk@fWlj@vf@ve@dx@vVleAh]reAbbA`WjJrj@lk@vXlMfDpk@s\\hn@iKtc@YtQaJcBx@h|@bI~[uMvIfH~XbYdUpr@bTdjAz`@jZ`ViDjY_OdCjDz_@jn@OjDsZfHa[jDmUeJudAhOkk@|\\}vA{`A_fAoOal@mHuDaFwc@`IqQuAum@eKij@BcnAn_@aSv\\qCnLmN|[eLbs@f@`CiV|Dok@u|Dor@_c@~\\ePwDuWxNsB`XdL`\\sC`k@yg@pe@aRkj@aZcLhDkoAdYel@pUeStT\\nPgpAli`@o_h@sLySwsFJzJgyAiNc_@qy@sD~@{~CclEfBEu}AajFhvCt~Ab@e]vlGc]vlG{ItF|Lvj@vyF^jHzLdWcCfb@hKrj@kPxRl@nIxc@`TjJfh@}i@xd@}l@nh@qOx\\kQ|a@Tn]rL`^mDjT`SlDu`@mPy]yFyy@|Ey|@pFa^gEe^bOu\\m~~@|_Qi|@rJqKhPeTb\\oP~sAnPnn@oPfpAuT]qUdSeYdl@iDjoA`ZbL`Rjj@xg@qe@rCak@eLa\\rBaXtWyNdPvD~b@_]z_@eO_Ray@sRwT~Jyr@qKsq@uI}O|Nat@knbE_sK{IeJ_r@jZ{Cb_@gh@oFmSuXkMzD}c@vd@eYxh@sB`i@tEl[aEnTqC~c@aUfPqWfv@d@bThk@dCbz@im@|hAsp@hFy^dc@yh@rGwr@nUaa@yEql@sfeFsaGdu@oIxfAAtTbfA`WvT`_@zuA|q@hLbz@oP~\\nDjc@r^|f@oChg@tKvi@ib@lIwh@yl@jTio@uJqK{s@uYyJ}iAoLyk@op@u]of@o[j_@cLgTy\\|@uB{f@yAy]co@mj@o^{o@iXEa_@r^{AdZeh@jPcs@xQlCnW|h@`BcJp]oze@~jo@@xeFxv@|^p`@pChf@yJ`[oCnIwYtWcP|\\|]lm@gn@nWsl@vL{{@lNgl@|Sg_Bj@wiA~Fca@hWwXh_@sr@x_@_jArLgf@zq@_|@xB}n@a]{Jmd@uIog@z@id@f[mHkCi|FuAij@|\\ivCzG{qBoXer@eMog@pBuWbMMdDdb@`M~QBzf@nWzVwXj_BzTnm@`Az@r}Er|@dAgxbIndh@gr@ve@o_@v[vV~Mja@{Ovk@c[fg@c`@jh@ak@rGeT{YZ_b@fToZfTe_\\}sk@kNb`BkVhO_@zR_YjTpL|YbWx}BfBhpAvnA|y@~YhqAaYbVDfg@cg@l@fEl\\rPpB`AzRrJj@fi@kcAtMoAzo@|a@jo@gQr`@sB`QvGrc@{@zc@rYz^n@rjAi_@r\\jN|^a@lVsVr}@iVdbAlFfOnLxG|b@zPdXjCxv@rn@_c@lUD~ShQm@yi@`gAeM|@g]db@yg@jGm[}Ci]ag@mAcVgUgtAkDov@{HiDoe@ea@wh@D}nCewA{Z}sDyyBeuEcvByaB|Yeb@ja@ggDefKqBwcBp@wf@wJmf@gRcRi]ue@pEyOiKeX`Mad@mAwSkCyv@{PeXyG}b@gOoLebAmFs}@hVmVrV}^`@s\\kNsjAh_@{^o@{c@sYsc@z@aQwGs`@rBko@fQ{o@}a@uMnAgi@jcAsJk@wW|WxEfJhBxSrs@ho@nO|f@xGl_@hL|LpKvj@l`@vXtHr^`MdXxD~X|i@`Tbb@uXtV^dd@rc@bQPt\\f{@bOfk@z_AnUtViB`W~L~p@i@l`@cf@pSgl@fk@eh@~m@XnkbDujT|MfLlQcCjI{KxRgDjMdGdh@qOlH`GpTuRf\\gXvLaTjYsRf^g[}EuHiIlHuCmCmRqAyFgMeHQh@w]sMm@aLLoLuOmQrKkEwFqJmFyTeP_@{K_EN_G{MqE{@sIpHqKxAyL}FwN?uTeGuGoGmTf@jD~DdB|LkEzUjMhTvEbX~@pZiBbOs@b[pHbEzDvYiCnOvK~N{AzOqnLsmgBuJbTpNfx@zNnVnd@?oIn`Aja@qMpf@kZ|x@~Kvl@}C??e_@ePwu@}zAotAcYmq\\srzCwVkTwzAeAymAxTwlErm@h|CpWta@~l@zu@xJv\\xr@hjAlAjeCce@uw@gUt|AaQxxBws@po@}o@kiDkUga@zTyv{@kzfChiB`Xnq@vDoYyj@foA{W~_BdTt]xl@pz@rZbbAaNrpA`BldA_`@ld@nOxe@pAbHbh@xtB_IpOva@~z@Efh@nk@p}@fdA~_B|vAwUjTvTvW~|@a@pg@ry@yB~qA}f@r^tSnhA~r@zi@pZ~b@zh@ke@lzBhgAhrArMluAy^jUebAvRgoCqx@eg@_dDos@mzBo_AkqBcvAeuCuwBugB_n@wjDkmAchCkZ{eBhBe~Awr@}pBvAgoBmKmbEtl@noAvO_pt@oj{Ct{Ar`@htDjFhwDmIbJePtxAc@jcAu[_`EmPwyA~Me~@uQa}CrNgho@{`wCrjCpXfmBoMcj@cOvd@_So`CoKyWlVobkDimu@xC|YgGvf@dFtW`s@`@djAqMfo@}D`c@y^ttAcGnpA_b@|y@u]p{@sViWoy@sf@i[}X_Ncq@fRa~@tg@cb@~G_T~\\qo@hKuq@lZweAjMknxIbgmArVt`@~]xi@fo@zWvIkO`Y_Hac@mr@nSka@fbA_Xw@sUel@yToIco@zAmg@hX{h@u@_Jz\\yXdp@iv@bYgk@eV{C_a@ta@so@dOuPtv@il@x`Ai@ui@e[`PiHfn@iq@jSgi@~Cub@yVu^dFbNnv@`Rlc@tn@g@tO~QyDzYgkjIdatAqt@u_@od@m_@yZsm@uVyNgH{a@{j@{[yLpYeMxXmk@iXcQjYAhYhV|[xg@`m@~^bXaV`]do@Xnt@pVvOzg@nb@f~@bp@|Zd^xPpx@i@lg@sS|bAkCnI}Uq`@km@smAu|@ig@wJoyjBgjk@s@eXgQ{XEqXg[iK`JuGcDug@}^G_[ti@{a@tU{l@dG_d@jJg[zb@yOvSkUzFB|LvUfd@~HpPhY~RhVxi@j[gB~KzM~Ht^uFvh@|DtFv[E~e@jVbEl]fMdL|e@OlWvNIfXf]hPna@{Dvh@`Tz[pBlSuj@zo@cfBozDo}@uh@_|Bi{lBefq@zJgTeQiTwFlD|DxXy_wCkidAh{@ns@tdAhHx}AgNr]|YcUxu@wTfi@mq@z]ht@bc@]pk@r{@v}@df@j~@j`Ap`ArgAwCzcAn`A}g@`[cFbo@cb@t^kKrt@nhCCrh@th@xl@yNtQ}k@fo@qn@drBvJndBd@`wAvGqVsgAeyAi_@dDw[|\\cIt@av@vz@mZdXwd@|]{_@wgBz^o}@iHkd@|FsKuLqj@nDepA_YeAet@{a@kb@om@B{EoPwn@cGcVxDmWqPlBqd@oYud@yf@{NpWih@mz@|@ePoUrA_Wc^gYbFc^xMmYoc@gZcbAcLwfAgFw^qJkc@_Fem@b\\oQ`o@pavC}|OrFdHoMxc@vJpQbSoC`Gj]xS_QjLw`@mNuOxNiCtJsSb^kPjZ~BtKtTdXvNtLdAbE~Ky\\z`@`P~F~GfH`\\dBzIid@bGrIrSuBpKcXrXcCfOiFxY@|@pLdFmHiBmKeDsKlAiJkHmF~KgHJeXeWqDmUlUh@dL}WxA}DaDePjNw]qCqYwN}d@sKkTuQoa@tBhAbEya@dAyZvIkSxQjogCrkGhw@}AjGlHdr@~JnfApi@pCb\\|NvTgEx`@vd@`QAjYnOlJ_Yfw@wa@`e@fLxYoh@rBsVj`@ev@p@gr@yc@dC|}Am[dFgb@wIau@pcBlLdT`B|j@f@dt@lWd^gJdVjM~S{Yps@jf@lbAvO`_@d_@|Nr}@{b@lDuX|zBw}@`oBicAdo@qe@zXsr@gI_Q|s@_qAr|@irB`z@m{BpXo[tRam@no@wg@pk@iXgS{Zh]sz@mRyj@yp@mf@mF~XxPzMu@|UyX_DgXvEgYp^ib@uXyJei@ie@ku@ejAsWccAm`AmRug@tGmn@sO}Dqh@r\\_Sn\\{[`O{c@p`Aom@xFma@oOqUxIqd@kDyn@f\\hg@r~@uQn@c_kF_yW|^sn@qt@fAuTnUpO~t@slnFynRuNoP{Eye@oa@uB`Ibi@gm@k{@~Drz@lUpSpRnf@rRnQne@ej@qyuF}lOkEph@sB`b@fTdx@zUw~@d\\v^}R~l@zPh\\phAgc@pPgl@aRw\\rf@q\\rR|Xj\\kAhm@za@hIiQoWus@kf@qPca@qVaUh[on@cPgI{Zck@u@tBio@uq@r\\gDn^qmfFgeQdrAfz@s]uj@el@se@od@ej@w_@c}@eJ~q@hh@ja@a}mFarb@dI|XkTvk@nO~r@xc@tSzHjq@_Mxp@c`@zEsZmFamAta@|D~`@kS~MnEx[to@u]`Vy_@bO|Uvf@kd@xw@dH`^yLcByXqR{NtQoM`GpUz]}b@hHeZhA{z@cXpSoEw`BkSsw@yd@@qe@xPgRgOkjmFohUrHw\\od@jRwf@Cd@bY|[pYtf@vQfAa\\}btFewVoPxdAdo@qOi@|SgNpe@t\\~LrA}j@xQgBvHyd@wc@|CXsVde@wn@_{@j@okrGnaDmkB`j@qrBvb@aj@`_@ya@j^oHzc@cgBre@eNb`@nx@vEyLrh@yv@~g@qg@haAyb@cAnAtZgo@rIvQxJmaAhY|E`Qlh@hCjNeOtt@_Fb~@mHro@{f@lb@ia@n_@wu@npAiZ|s@xPde@rS_Gbm@bp@nT~a@mIr_AsA`@ujE_ciHvcFwV~RoFn_@pRrOvJ{c@pMcWh[oSpb@uYbl@kQkPaNw`@nPgTvLgY~MiofH`lJda@dN`_@rMd`@Afr@eQtb@mPeDiR_w@bHga@{CkH_]_Hq@aEd`@sb@wCuPkT{a@iUzEyc@md@e@sKfIf@ta@~Sbe@v_@bDogmHvlI}QdMi]rf@o\\dTvGnPnPfE`Z_WjZuf@lLsn@uGaEwzl@ohhBwArZiPvVJ|Wnd@vKiR|[e@zZm^pu@tEnP~]fFxw@~r@cOb[rLuBjz@_W~k@xGn\\kE|c@jLn^eUtXnGpBwBv[y]nm@wBzDqRzi@_FjHbO|`@}K}BePvm@mDr\\cSrX{f@{CqTlNm`@tUgUkPuOpMy^ui@kQo`B{[wmAeTk}@pIuCfNi{@X}kA`F}qB]a_@tErm`Cedc@}^nDgJlK~NvN`n@Knc@dArBuYyGeHwl~FwmqA????_d~FuxqA??wG|IvVwBbZdTtQfTkAzk@h_@xLbJ`JpVlQrh@hIbZvO|@`ZhF|E{WbImb@lZ~GbNrY`Cdk@`BhWd[|ZeAzBrDj]{JpFvJhQdDdAwJdOwDxO}HcPoZwMkFpDmJ{Nu`@bCeInc@yEl\\wO{q@cg@{cAq`@}i@kk@u\\rR_u@fAvH}_@q_B}YyW_b@tsPqxpAuU{NoXaHuNp]{c@AwI{Fkc@dAoPh^z[|OXvo@bIbHpAp\\~YbDaXnd@fP`h@qTpQrG~ObVlVeDtSbXfO|_@yGf_@zEqH{o@zDme@|ZwD~MuV_D}g@}WuUmCgX_Lsd@j@mYnKmUjrpB`lf@mQva@bCxsA}`A~JqXgKei@|OuJtQyDfx@iF`WiVvAmVaIoUhJ?ja@nG|c@fK`c@fIdv@tw@zn@lp@~HdeAoH~}@_Po|@_~A|GsZj_AmWjkAcm@br@oHzqB_eBsWyiAq@s`@_]_v@{kBeQay@Zgy@|^kcdAao|@l\\nGwAoO}NqGtNaFaLsh@sUtG@de@sfbBejo@bCml@yOy_@aPwE}QrRc@pc@pLxc@jPlCscv@_zwA{ZnJk\\aIi[vIo@bOh]lL~Q{DnPljAvc@qEnl@wUphApM~]|NvzAiB`o@wHdWpC~PuXlJ{IoMqIlNyFrR`Mlc@eQzCwXbe@uM~E}Rz`@oWcq@yJyd@ki@q\\ki@ee@cL}YkLue@zEag@F_\\fNkTqHcm@_EuNsMkY?aRbEkRnQyRjYac@dd@_AjZrEtYia|IuziCunAaY?vi@pcAdBy{~A}ryAn[`d@p{@hIb}@n_Ayw@hz@bE`i@ecArhA??hd@dXtI|NtZiC|i@}d@pPcAhf@mMbRuXfy@aL|d@xH|IsJbtA}\\~zAcIxs@uIrFjFtnAys@hfAqV~t@wc@ol@_I{r@gs@|a@wWc{AoXt@sL`w@`I}@wZg_@oPm{@qC{HySxLoa@kXu_@VkQb{AiSnc@Rre@g\\|n@zHjnA}Tk@iKfUcZxp@_BdDkRsNuK|f@kb@x_A`E~QeBxNfMhVqA??jN_g@tMwSaKyDmq@bAiWsL~PuOdi@_JwBiJlXkJbf@}g@kL{ObEi\\b|@{Mv_@lFzGoNx`AuNbS{c@hDi]b]mMyYyRpQiy@ok@_c@lH{I??afAqa@n`Aw\\??ydCwnAay@cc@oV{^n{Ayi@qXug@hw@qm@ci@qt@tgAcfAsx@cn@t~Auh@cHwj@oq@wDiiBaX??o_AwTseBxd@ejDzMckFteA_o@t\\cCph@jdAz_@`eBrO~uGon@|l@|F}dBxl@_C~[aCz~@moA`R{o@dOaGi]rd@yYwf@uVavCze@us@eN`i@yl@spCe|@ux@pBky@zTkc@}i@bs@gd@s]md@|l@we@ymD`Sub@~a@bnAtFMxa@ep@jTq_BqLiNyf@qaCy\\ayEst@en@`Br|@|d@olAnEyk@kTctBu@y{A}XefAtd@afAmh@n`Aec@o_@sSswD|QouAnRoaFlfAyh@w_@p~@_`@x@gLhjAeEsSs\\l`@wo@z@_SirBsw@_h@ww@om@iKodDnO_Lva@fz@tq@{e@|RcStj@dMrtA}cAhe@xYvh@lyBvwAmfAdH{WoUwcA_OsO}]au@w\\lc@qb@e\\gh@jcAcD~Mya@{p@w}@dpA}q@{nBci@nMmk@e^m@{_@ra@tWh{@{aAlJn[al@sgBqWu`CiBorBrb@pv@as@fEqaAukBsKiuCvAmfCeGvq@u_@igA_h@yfAw@oxB_^adDiGyScPccDyDcr@`MikCg`@yqB`@eP_Zwz@sYqrCsXejBfSbtAlNqlCpH{Oz]cx@eNuuDX}kCn]cq@jVpNn_@bdAnQfcDta@|m@pQolAvGm{AvNiw@yJ{^bg@mZgO}bB{HogEhIgNf\\idGhHqBwn@scC|IwbBI}cBz_@y[~f@~c@dYomAdp@iaBjXi{@q`AgcBb[oiByO_xBdR_m@oPgeBvGbl@_y@oqAaZosPpg@et@bd@sbDvn@k{FyJm{BfI_s@zXpFtl@_lAxPsrAyKymBs@_uBfKouB}E{kBpv@mlA_Spq@}f@yZwZmfEnP_aCwBwrDx\\ovAfZ?~wFLJjoAlZ~oAqCkw@f`@ed@nr@{[xOgFzXbOpOnsBsLtmD`n@pv@fFr~A|j@tyAje@~Uj[lxAgj@xaD`p@l[eVd{@vYrrAqGbSbh@~iAn{@gAfXefA~LjG~yA~x@hAxYfs@_Y|YflB|^tThfAd|AfNvQn~@`yAfy@bVaj@vYezAza@{iC_]uuAws@id@gBe\\c`B_MunBumAqjBg_AkoB{p@gq@cwA~jAhDnd@lr@p}CtcAdr@{kAh`DfTl{CvgBsr@he@njChOr_BlEoCel@b`BoHllAv]b~DwIplEnQniE~xBnnFjrCoaBzFu]df@w{@zL_g@g^qcA`CeyAvcAcAdt@zo@l}@fDriAd[|bBd}AlyA|Sfj@zsAvgAdsAdgAjg@|c@frAtc@lf@Xff@m]zrAvl@vHxS??????vG}I??Jw^}^u@_H{hAnOot@st@aU{jA`Jai@y{@kTmcAiW{Uy_@gw@ffBlQdu@rW~}AAhXwy@~hAmk@xkB}RbVg|@vTke@lV{Yre@a~@zu@_Vp|AsQxqAt@tlAhJrr@`^ia@zMWna@va@~Rlw@haAQnZ`wAnf@~iAsVpiAfDv_@}Snd@wEnzA~j@hqAjIlx@nNvmAeI|x@R|d@}^d|@_]r}@gG`nAdG`z@pJxwAiY|Jym@nhAaOtw@iF`eAyXt_Av_AkXxc@v{@nj@jyAuNj}@gAvh@g\\f`A[hu@eR`~Aj\\fvBxt@|`AzIlWbDd`@ge@noAjGpYoYvj@cK`]cc@na@gJxxA`ObuA_c@f`@t_@tjCu}CvnAio@{UsRr{C~y@|z@pBeDca@hoAiTf`AfNtRy_AhoBmLdw@|Xj{C`Vn]lNzhFvTt[hTcl@xi@~z@fOuJ~O|z@n]gdB|i@tNr\\vvAuAdQpQ|nAm_@`bBf@haAjY~hAgXvhCij@r`Br@``C~bAvFrl@h_Agc@xp@tcAgQvKbc@jn@at@ji@km@w@{f@vh@jEd_@cdvDag}CefCaMmxBl^}nCl{@lNdw@jgCxF`mDaQvfB{V~n@yk@ftAiKkzgEazyCk}Cnb@pQjXh_JbWeqBaqAir@_F}cnGqusCadDvA{`Fb`@bp@lm@jeFw@tfBxMxzBug@s`@}i@{n`HcdrC{{CjOfgAtW|bBqDbsBuW}MgSmdpGshnCiz@uWcmAyDywA|VqFlOv}ALb_C_F}qvA{k|C_yBkJ}}AWyKxO{b@}M}y@iIu{AtLdWpHzrAfGfw@tCtGhI`hAhItbAyMqb@oRukk@obiB|qB\\|kAaFeMoZguAgSo`A|IsZzHtEbPgogBk`oCstCyu@zOk[yjC_`@imEeg@_oEuJajBeVsxBcGmj@tW|h@lRn|E~]x}Dx\\daEnz@b|A~{@~`Bb{@wKzr@qvBhr@|c@lDfkEcGpOwZbpBwObHw`@{~@kLbAca@_{Bit@ecvGq{gBsTf{@r@n|@yX`~@{}@vmBn{AuSle@hyA{{@`_Av@tj@hn@ud@~g@jo@pJms@}E{{@bFmbAoMgn@wAqrArc@m|@qDmtAwx@w[xW}[yZyG~stIkgbCjDze@ci@nNnMkl@uhDhHiyBny@||@fZleBlEp@`|@~W~Kpy@{@rn@wTbrAgQ|LcZn~@eI`fA`G|`@yTqLgVziAxMe[l\\lb@nY?_xFcxCvn@j_|IymiCrpAxB?wi@_GsA_t@BkyA|PjDnGwh`AgxxAmOoNmk@lLcSlAcGjKmHz@OlDq]`Nw~@wBdKhUlcAxIxsAdc@xa@wKyLk\\hcAgQaJ_Kyz@ySelz@|eAyWfb@rBvc@~P|F??f`@cCbRrb@|d@}CwDea@sGyCiAed@}PmPeNjEr|Oo_u@AdCd@`KDt}AblEgB_Az~Cpy@rDhNb_@{JfyAvsFKrLxSuAkYa@@wkC_DoFoUsXa[sSiuA{uAmbAk\\ymAqRqCiSuo@ss@wEsUbGk[?cSeMse@aAl@m`@wgcAyix@qdA~H_ZgR_NoUun@uGgI}SuSsIh}@m}@e|Bk^{JmHijA|Oc|Avj@eoDt|BgsB~Cuv@~DqNx\\ek@s@oWzt@w]hMuI|Tqi@fYyBxXfExS}F~S}PnPkGnSiHhN{QlKkPmC{JzVkAlM}Vh~@{zDn^qKeLu[fk@th@~{BnzDn}@dsD|Vjy@b[vk@r`Ad\\lIrNyS|VbBl{@gElJgEbgAl@|OrDtXgOpOv]kEhYlZ|R`GuYzQyQxC}Wh_@kUh`@ms@rP{q@dj@aj@zZgIlh@qz@dFmj@sAad@xb@gdAh\\mWv`@{KpSyb@kBeMhPk_@fQ}LlWom@`e@mq@z^{i@b^FwHga@wA{Tm~n@iaOpn@iZtT_Q~BmRcI_YDoX~b@af@bFwYWeN|UkQTic@bLcW|TrBiE}UeOaYbF{XqSeR~KsMoOqe@q[am@{t@jC`BawFWgY{fAE?y{BgzF?oqF?{vF?eSh|@vLjJcHh_A}UriAyVjNea@bVr^rb@`m@hIrRbRdEph@|YzzAuE~W~Htt@jXp|@vd@|]vYvn@hEpXr\\nPlQj`AYdw@Vuo@rGg@a@c^nFmTd_@uWnFal@oFcm@~[iCfC|Lpd@fB_NfQkDnd@ha@ja@b^`l@d_@lEps@oc@rVzKlEfQd_@xJbAzKf}@?pG{K`l@eApUvIdPkDd_@mc@tIeP`l@pGdP~[bOvv@lTxJdRxEcf{@izE~u@qh@zMuYxa@fLz[cCvOnI`[qFzd@sr@`IyRtm@wWxNod@~X_Z`i@q_@PiSfa@gXni@mWeRyEmTyJcOwv@eP_\\al@qGuIdPe_@lc@ePjDqUwIal@dAqGzKg}@?cA{Ke_@yJmEgQsV{Kqs@nc@e_@mEc^al@ia@ka@jDod@~MgQqd@gBgC}L_\\hCnFbm@oF`l@e_@tWoFlT`@b^sGf@Wto@hHbRd`@n@hTrb@ke@nCu^l]}I~Wq[nM}c@~bAji@dh@le@hd@le@v[~j@Chq@rMtf@_Mrs_@upYvXuo@d^gUoZyJg]}j@{Ma_@kTaSa^lDo]sL}a@Uy\\jQoh@pOyd@|l@gh@|i@{Aze@iKxb@mVpPiDbWzAnR~GnBba@}CtC~EvLj@|k@gNb]SnrBsAxO~EtS_A``@dIhI{n@}w@h@_NwGeJQeVmMyYfLcZ`@aZ_MrKaQrSnIjRGtWkNxR^bMvMms{HdnSoPlTtj@KvVme@id@bN_xzH~vQlHnJhm@cu@~Kkd@gT?oU~p@gdyH`hRhWj@je@iE`LsH}ByWgh@xHkSbLoxvHftNuMxRsApK|o@oYfa@mUlVySiHkEw[~Mg|qHzuL{WjSlKpBhZgMtXuXgBmI|zXmkPm`@oZeFiPuIoLgPm@qMwJ_q@@kPjUqLfY`AdQaIhOT|UePqBb\\d\\d[z`@hBdQ|M~RxOsC~k@eXp_@o`@|IyUpomDod[kQfDoLlK{Q`IiAlGmZoFyKnCoGvEhC`X|EtMdc@]nU_EzXmKta@{BvPkL}@eHmTwNwJ}EhBkFgr~AehUJ`@FvX?~}@?r_@d[je@rj@ds@ps@JhkEeiAzVgU`Vc]`Vma@sLcU_Vm`@kSnJgKzXe[bY_^F}y@_O_cAmFav@kR_^cCiUkJqb@gAafpAdhB~c@qr@VubFsu@{eAcPuRag@e@uv@ak@mpAwAqoDqzDsj@es@e[ke@?s_@?_~@GwXKa@_Se@y[iHc`@iEq\\kTuVEm@hPvDhc@Ez_@dLpUrPpbA`]xdAre@xnArt@rzAjt@~dAnhAftAp}@pq@n|A`}@fy@pn@jcAtjAlM|_@{wc@itxA??{n@mO_f@xA{`@nW_F|Rce@tM{CvXmc@dQsRaMmNxFnMpImJzIlNdMsDxUk]~YxVnRnI|RwElFfIxG~[^fTtBbAuCoFmF_FgNzGJbKsJhI}AdG}HrJ{B|GyGdJlBrGvS|MnCcDkDxV}KpSwEbHsGpOwIuMwAcHk\\b]aWsNoZtUD??aWqVxRyPxniBooCxb@gLn\\jEdXoDfE`QmIlKrDvK|`@cDde@iu@dGgb@`SCtZkl@qJg_@jBwM}d@iO_Iew@{iAnKuEgJqq@oCebAvOp_@vt@}Cvi@qW`d@|IzYnDr[{`k@{z~AhPhOdKdXjLjE|aA_RlSxBtMtMj\\xFvE_Cl]vHxWx@~CpKns@tF`VyEv^_OfEuT_D}F{GwLuZ`@iTmEw@yD}J_BaCgMkMuAuHgJsQAqBvBuXoGo^dU}c@kLo\\jE_l@yG{}YyyyAsr@xCq^eMuu@q@{JoIqITcK`Tvp@rO`EfXvTjEGnPpWg@fTeIlJpIpj@cA}LuD~MsYepTo}qBqZ_c@_s@{i@uSohA|f@s^xB_rAqg@sy@_}@`@wTwWvUkT_`B}vAq}@gdAgh@ok@_{@DqOwa@ytB~HcHch@ye@qAirAp]o`Bpi@u@f_BaThWnjBtPp{@rj@wHfe@lbBfq@twBxt@nl@~vAmk@~j@yz@ta@lx@neA~_ArMxV|gBnb@py@xjAaEjb@pp@jgAzAzRaz@hs@}eAos}@zes@vKvZpc@vEhd@{`@PsTaPmV{DgQaQmCq^lJgH`[owdAi{~@d@MmGoH\\qXiNga@ca@qVfIoWb[eBxDyn@iNwXwOuLuOuLkB{a@oSdKycAkPg`@vJmr@E{fAmVu`@`@cfAwH`_@~e@da@lN{Dtl@rVpjAjiC~_AjyBraA{pm@wfe@aB`wFzt@kCp[`m@nOpe@_LrMpSdRcFzXdO`YhE|U}TsBcLbWUhc@}UjQVdNpf@rIt^hXdl@dcAxy@|[j{@{BrPvDeE~Tp_@zTpYjWtmA|VrNeMhIe@pJ`Otr@tCyH}OtRaj@xG{XfZsIzc@mc@qLo\\o[fEsPmC}a@R~`@yw@gAqh@dCmh@xW_g@gEm\\bg@m@Egg@`YcV_ZiqAwnA}y@gBipAcWy}BqL}Y~XkT^{RjViOjNc`Bc~@ea@gxFtvBgw@inT~Fz_@cRlQuT|TkAr]qKzKxApnCkNbj@hq@hL|L}TtOsf@|Cc^yLgw@tNyU|Dgp@Ckl@bYg_@sCoReolEa{Zry@_HxoA|J~f@~r@yMljAbw@u[lt@d@cHcp@~u@J|CvcAv`@hzAhSdv@gCfl@wg@|@kX`x@eJ`u@{a@xb@{d@fFk_@l_@lStXfh@nFzCc_@~q@kZzIdJtW_WtI}]f`@ib@f]s\\fItc@zJua@yE_f@mQ}z@g]g_Aia@gy@lW_x@_@_\\bF}a@th@sp@|Mk^qToJ{Uku@pXgh@tf@sl@d]yu@kYkJo[qbAck@yAmc@cZyb@mMaZhRqBpd@gi@xAjNz`Ao@`w@{`Aid@uQ~Isc@y@qKwTgn@hCqn@vq@{Bt|@sq@nu@xAzs@kncCqpgAcb@g~@nLqm@zl@{MeOoZes@|Aw\\qa@yRcg@srAoM`L~[}GhPyXq@zUfR~bAmI|D~b@wbAyCglAhScuBoH{Nxx@qSiE}d@fMdAhWkHrb@l_AC`j@qC|e@|ZvZfEvTbLvWoSyDos@|Q}AyEcRx`@eM|YvTpEdXrHdHjd@i@dSr[`TaKdl@`SkpeBmrpAsZyS}eA_Lgi@nPwj@~o@a_@aBoeAYfIo^mt@qTss@ic@esA``@uEzp@}VxKqbA{A_ThJu]l_AofAdj@wg@l\\k`Ap]crAvYt@fe@zQ}@l\\uOxHfUts@`KnK~p@db@~Qhp@lH`Lh[bn@hGv~@uVnDss@pm@eAlfAkv@|p@yEbdAu^lk@wDlZrJvh@y@nk@vb@zu@`KrJek@aHk`Avo@eTaOwi@nh@uByLus@}y@jN}u@_Spl@od@zPwb@hq@|NjExl@qasFxjPiFwMyt@aMsj@cAoRyFuVvF~U|Ob`AjZhs@|Pd@}Q~mwBo_T}b@cGcLdAnApm@ds@zEfJsDcQePsoQgez@rYeoBpe@eXPcN`r@gd@pDan@qe@{a@uMqr@zHqz@uKa_@acAgXwj@nFx@r^_t@_VmC~Jf^r]L|[uTnNfG`u@bh@l^{J`a@i_@`@wNv\\wVvHpB~n@l]|PfR`S|i@`WuEzXlDlYimvAcrgA~\\nI|T{NtgAaGxYtHbfAvHt`@a@zfAlVlr@Df`@wJxcAjPnSeKjBza@tOtLvOtL~Ui[uVoVbe@jDfs@mM~i@~b@z}A~Epq@o`@jbAcAlM|Xdj@lFl{@i`@fcAb@~c@c}@tl@ua@m]so@rf@{\\idAwz@g_BoAgYon@cvBfGcjAog@ygAuPmfBi@alB`k@uxAbWygAsHwt@pDyhAs_@saA}Ae{@t]sI~T`Ej]om@pNsWfQxi@xPoRtfAdKhRea@bq@i_r@eupAu~@sRyt@jGmF~Vou@dSjJhNdiAlBtYhRbs@t`@tRc\\[{K{M_FiRcf@czlFssn@rd@dcBxYfr@|_@ws@bFim@yc@k|@_q@in@o[pQ_faAjz@qIzEsaFh~BgCfc@uxAn}@x[~kAuBlb@_g@vU{@fOdPvd@qB~Q`Cz\\yTbf@{Xr|@}UtL??vp@fc@hcAfWnd@_@hUvQnj@r@hOzFbjAsP~m@`DnP_tAdTc\\pKiPh|@sJlb@yQvf@oIzWmIbY}N??v`@wmAfc@_b@nKgc@gEo_@fJox@{X_BsUsUkWq_@kNcLPiSlLcMrBsW??_Q}FsBwc@xWgb@}ToFocAV_faAjz@j~BxCncAW|TnFhd@fRdNkEQcn@oM{VoBcq@cLa\\}Vs_@_WqOaSeU`XoGyBahA??wXaPuf@~Liq@sM_k@Bme@w[s\\jj@iFj^oZvfAvUpl@v]jh@zPhXsa}@kwdBiVpAyNgM_RdBy_AaE}f@jb@rNtKeDjRyp@~AgUbZj@hKknA|T}n@{Hse@f\\oc@Sc{AhSWjQjXt_@yLna@zHxSl{@pCf_@nP|@vZ|p@~Cph@dSny@hBzt@hVeBl`@lH{@bGkKbSmAlk@mLlOnNpGyEd`BwNhCiVzx@tFdVla@lo@dm@h[wIj\\`IzZoJuNyE}ImTcP}RlCeJaL_DeEtGyc@x@qOsCtJiEmCiHxT}N`HcYvUeIoCeTf[yOtXkA`m@mRph@dE|MdHjY?tNrMbm@~DjTpH~[gN`g@Gte@{E|YjLjCwOta@_PeKeXiPiOsLtBbOc[yw@_s@_^gFuEoPl^qu@{\\mAga@}Omo@m@c~@|CwdA~Mgp@f@oV~GmV{IkOrMkw@_B{W~D_Cm^iRuLppoBn_z@qg@sEu}@ho@eVy@k_A`g@_p@na@cc@pi@pZr\\iPjb@~Yhf@reAva@bm@oKx`@tExx@{Yji@`A`e@sa@yCkg@qL{LPg}@uOg_An|nFou~AopD?qxD?m|@?o}D?kwD?ozD?szD?ksE?ytEAk`C@E_WcTIcJha@mRpIsj@zBy~@|Hs{@jRsq@cG{kAfOmSS}v@uPsy@tUc|@dWsq@xSoo@~RaElOuMbExBdEwO|@eKmEcBxMqKzHeP?cHrFtFbJc`Ah\\iLvw@oKhu@fQ|c@j\\ja@vLzTj@nE_F|GgTzHuN?qgAk`@m_AyHwpAc^e@iErDaRbIgKg[}Hk|@Gkx@?_SiWyF{CaaA_l@e[oJ}}AMerBAgEmN_ScBqYuHeUm[aRso@un@en@wSlO}h@sIwZ`Q@dtA{g@hb@wInSvaAh]d_ApT~`AnQ``@bd@rI`MRb`@sSb`@}Xp@pEyUwQzL~CzPdi@bI~\\e@fm@zIdZbBhc@`Bbs@bQyzAwJoQxJnvAvQxf@B{@uF`RhPmQzAnL|k@nl@`o@rC_OvLgBnSuN_Lt`@oNbJ]rV~RfWdb@|p@tDoAiRoi@|^{VhF}r@`K~YkLtf@hh@yH_j@bSuAnz@}PhCoErTyGn}@vf@jm@t_ApQ`h@tc@d^~Bt^|U|G~SpcApg@fb@v\\l\\`d@rHjk@_Jjj@{Snt@wZfk@K~Yq\\ngA|@bi@vAhWpNde@tQzFv]qFzHmZvVkMb`@wt@`\\yn@jHmWyKoh@nPka@vo@is@jWqH`~@j[dJcBh]e\\df@mNreAzFnv@}Ern@hCzXvHgJrO^hXgLjKzJdGdVeHnVzJhl@_Atm@_`@nu@xFll@oMze@jCrs@rMzw@hm@b}@~Yba@x\\jMb[Rbj@cB~\\{JfTjWz@jk@wLvo@kRnPk\\vLwj@zc@sb@rTsc@j^yi@~j@{Wbr@d@jf@jp@zr@wQh_@{QpNka@tSs_@dd@oZ|^wRxUeUfkB?BxXpp@?h{BLpmC_k@j}Ak]{DgKjnAxE`fAxCnI}^ng@}b@d\\oFxE}P`b@cBjU{O`y@eE|NcIpFga@t{@y}@~r@{uAeAmMpZuSjo@ks@rG}q@h`@ca@uLyr@dAst@|R{n@mW{y@qFww@sFuw@hJ{rAvRmt@dQ_\\qFgKkyAfTi`@~y@mNoO~Hgr@ronH_ff@aJlDeIjG}NzTn@nBlWhL~RxHbHlIpN}Gy@oPhIwUaB}E{IeIhCiKsByDwCb@vtoHwpg@dDnF|SnCxIeLdFaDP}BcEiDgU|DjdqHqjh@|@vEn`@y@uCsFpssHili@eD~BaQtSjBrBnCYvTeA|FeMlAoAjgvHmkj@i@pMlFdE`TkJgBqCqHcEfcdI_}tBsp@rD}D~Vje@vH|g@uJ|d@_PxgjHafpBoh@fCoYjR`u@t\\l}@xV|^cOtHg\\ww@gUrjrG_dgC??J~fFJzbJq|@x@{{@hPsj@jZqv@`h@w{@}a@w}@gSe`@h_@ci@rXex@d[cf@xk@{~@hfAgiBvf@w@lf@va@b]????ja@oV`v@}RtPou@poAqq@t`@_z@~z@aCjbBo@fhA_Qf`C{_Axz@{JhlBgUpuAhD|yBw[fiAsYjdAfL{Klj@pa@~BhgA~K~u@bTfdAfL|Gyc@a[i|@maAgRbPsNtnAxa@ri@ph@`yAnk@ul@h]~y@|k@dbAbYp}@`RnNtZp`Bf_@vRj\\bhAtY|i@yChy@lPl~@hT|r@zShjBzPvHoIkcAe\\c|@iRsaAea@olAaFy]sXuuAmd@}LoKcm@aUyIkn@w^}c@`gA|QbSwIz`@vUxg@u^xOjUjVc^n}@~Wje@AjDed@iJ}Ufg@gUfpA~Jvs@i\\vi@_NHmb@bo@sYeW}b@}q@{a@gUa_@sq@qC{i@~Hkq@e]ml@jDqn@kRpJq[~a@gJgm@cWje@VhaArL`RvLfp@wLlwA~EnzA_NfYcXbnAic@{vAcYkjCq]kr@?nGf^}bCmAvq@we@zkAwVlk@g^|z@uYztAwR}a@w_@{mBaA{mAm[{Mm]{~@u\\{{@eFouBwZmx@dCe_Bi`@q}AbLgl@f[wZcKshBvBvBjMs~ArIw~@gEubCvRewBzDco@bGerAeIw}AxQflnImq{Bse@|J}e@mEoq@nOc}@hGdDxEhn@fLrn@qLvVkJbv@rBzMoD_ilBytoAlAmeF{_D}c@uJlD{_Bvk@cr@rVuz@jw@ihAcHejB{CyiArl@tCt}@o]LuKfr@onA~@cPr\\gVMkZuk@mqAqj@yb@qJqQbEls@ng@cm@nVok@qNaiA|_@~nA~k@pn@cExXp@|GiPaL_\\rrAnMxRbg@v\\pa@ds@}AdOnZ{l@zMoLpm@bb@f~@bn@eLxa@Mu@ge@brAwYj`Aq]vg@m\\nfAej@t]m_A~SiJpbAzA|VyKtE{p@dsAa`@rs@hc@lt@pTgIn^zruB_dIiGrPzUzVzdAjV~k@tH~PvMtp@sNhm@}FtJvD_[dOpAzh@uGjf@}s@jDkBbLrk@xPfFlYvXfInm@rM`KbRro@`Cja@a`@`Rk}@rOyTtUyLu^a^dA_MvPqQpKqh@{Cyk@}L_TiJs`@bUwIrb@bF~k@kBfXtE~j@wt@hc@_GjoA~DzMwTjNgDfAaLmFcV|CcXvLwL`Gw[f_@eCiPqc@uFqk@cQgVeW}P{Ng^cg@mIv@vMtc@hFkSj[Vt_@pZfc@sVrp@}YaCaMel@jR_UdBin@{lAkXtGo\\}TuRmUzj@yj@`@sg@xa@mAtScw@PwaAmEyb@~Zyn@vFab@qRUuNmlAyB{iA[`t@nQiTn\\_q@tCkn@v]_I`q@q_@m@oWvMpp@tc@lDxUkTdVnNtJle@`Ig@z[|OdP{wjEmnScu@cXs`AqClZ{d@_hBao@wF}iAnMsh@kJo}@vNek@hn@mj@jf@av@|r@{hAziAkd@{PoU_g@kOfWou@|kAO`[ww@pc@kp@q`@gN{p@Hw{@eFgt@i`@c]lVcx@lJzH~b@w\\jX}}@fOlrAlt@`s@`z@vLjj@yn@z`Amy@tpAuw@pe@_e@dq@s[trBlG|lBbs@dh@pfAfg@~q@`s@|lAdy@tUag@qPii@areIf`^gf@zb@rSfG|SkZqwdIhr]|GgPh@}n@}\\fRcIjq@xOyF_qdBobd@{o@bfBmStj@fl@xO`KvZn@hTd}@jYzbBb\\~v@bk@nZlBvQuBpc@|Xxf@~Jls@fBxNpBtLnOjOpCrHzN|]k@~RnGfj@eBfOoc@w@ea@dImQfKem@|PuXoKaBlEq[sFaKxAgZmZ}RjEiYqOw]uXfO}OsDcgAm@mJfEm{@fE}VcBsNxSe\\mIwk@s`Aky@c[q|^`yv@}\\}]uWbPoIvYa[nCif@xJq`@qCyv@}^AyeF{OjHad@jz@xD`e@_M~Twk@kEg^}Zs\\yQgN}\\o]mMkYpFy\\nP{q@bB_g@qMiEoR_J}\\_a@_DwQmVySuh@cw@sm@mwAam@mXTg]rIaToFe`@fE}\\|vAiOjk@dJtdAkDlUp^mJ`QlCzDfQ`PlVQrTid@z`@qc@wEwKwZkn@NrNnl@jF|r@dOd[ri@p^dK`HnYv^lPb_@lb@vk@reAn_Abk@nd@dn@l[j`AfWx^fB`GjP~d@gH|]zJvbAaKzd@rFzXgBl_AtWjt@zHre@rVl[n@lYgUbTe@zY{Z~AtGhGyOKuc@hS{h@eSkJr@}n@|g@oy@l^}s@@Ecrw@vpw@fZgRf\\tKx`@nWj`@pf@{m@`o@kUeEoJ_Sya@wHsIkSeRm]g`{@fhOcY|N{WlIwf@nImb@xQo\\zZ}N`t@tI|OpKrq@_Kxr@rRvT~Q`y@{_@dOt|Dnr@}Dnk@hn@pGrb@zWpFtTjUzCju@lr@ra@lg@`Tl@hSeFzdAyEfJuCLeDtWcMng@qBdr@dMxg@af@bi@cr@{A{eEcaCXhDqTiHmV~Ii\\cFi]rEkRqTp@sBlRg\\o@uf@vD{Sj[aq@tGee@uRaMv_@{n@tGaVtYsXja@{n@NfDkbAbPjJvj@iWzOcJwFw}@cJ_iA~LqZyP{f@wOoF}rAqIm|{@vmj@d`@gE`TnFf]sIlXUxf@g[jo@qHjQsf@BaUvYuEveAucAtRec@pKcJ`W}p@{dAxEiSdFaTm@sa@mg@ku@mr@kU{CqFuTsb@{Win@qGaChVcs@g@}[dLoLlNw\\pCo_@`SCbnAdKhj@tAtm@aIpQ`Fvc@lHtDnO`l@";
|
|
25
|
+
//# sourceMappingURL=ne-110m.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ne-110m.d.ts","sourceRoot":"","sources":["../../../src/globe/data/ne-110m.ts"],"names":[],"mappings":"AAQA,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAA;IACV,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,8CAA8C;AAC9C,eAAO,MAAM,SAAS,OAAO,CAAA;AAE7B,sDAAsD;AACtD,eAAO,MAAM,SAAS,EAAE,SAAS,UAAU,EAkL1C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,ylhDACqkhD,CAAA"}
|