From e3b1c7a2c78f2ccb87553e9f2817c1c99879f9dd Mon Sep 17 00:00:00 2001 From: xiaoiver Date: Tue, 14 Nov 2023 21:04:31 +0800 Subject: [PATCH] feat: implement renderer service with g-device-api (#1961) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: rebase conflict * chore: rebase conflict * chore: rebase conflict * chore: rebase conflict * fix: render tsc 配置 * chore: rebase conflict * chore: 版本依赖 * chore: 更新 point fill layer * fix: demo * chore: rest fill demo * fix: add picking ubo * chore: add a WebGPU example * chore: g device 依赖 --------- Co-authored-by: lzxue <120635640@qq.com> --- .eslintrc.js | 1 + .gitignore | 1 - .umirc.ts | 5 +- .../features/point/demos/circle-webgpu.tsx | 77 +++ .../features/point/demos/circlemeter.tsx | 26 +- .../features/point/demos/normal-device.tsx | 63 +++ dev-demos/features/point/demos/normal.tsx | 90 ++-- dev-demos/features/point/pointCircleWebGPU.md | 3 + dev-demos/features/point/pointNormalDevice.md | 3 + packages/core/src/index.ts | 2 + .../src/services/config/IConfigService.ts | 4 + .../core/src/services/layer/ILayerService.ts | 3 + .../core/src/services/layer/LayerService.ts | 3 + .../core/src/services/renderer/IAttribute.ts | 5 + .../core/src/services/renderer/IBuffer.ts | 5 + packages/core/src/services/renderer/IModel.ts | 7 + .../src/services/renderer/IRendererService.ts | 11 + .../services/shader/ShaderModuleService.ts | 17 +- packages/core/src/shaders/picking.frag.glsl | 20 +- packages/core/src/shaders/picking.vert.glsl | 26 +- packages/core/src/shaders/projection.glsl | 38 +- packages/core/src/utils/shader-module.ts | 49 +- packages/layers/src/core/BaseLayer.ts | 47 +- packages/layers/src/core/BaseModel.ts | 67 ++- .../layers/src/core/CommonStyleAttribute.ts | 22 + .../layers/src/plugins/PixelPickingPlugin.ts | 54 ++ .../plugins/RegisterStyleAttributePlugin.ts | 27 +- .../layers/src/plugins/ShaderUniformPlugin.ts | 148 ++++-- packages/layers/src/point/index.ts | 4 +- packages/layers/src/point/models/fill.ts | 45 +- packages/layers/src/point/models/normal.ts | 42 +- .../layers/src/point/shaders/fill_frag.glsl | 34 +- .../layers/src/point/shaders/fill_vert.glsl | 37 +- .../layers/src/point/shaders/normal_frag.glsl | 7 +- .../layers/src/point/shaders/normal_vert.glsl | 23 +- packages/renderer/package.json | 22 +- .../renderer/src/device/DeviceAttribute.ts | 72 +++ packages/renderer/src/device/DeviceBuffer.ts | 63 +++ .../renderer/src/device/DeviceElements.ts | 55 ++ .../renderer/src/device/DeviceFramebuffer.ts | 56 +++ packages/renderer/src/device/DeviceModel.ts | 474 ++++++++++++++++++ .../renderer/src/device/DeviceTexture2D.ts | 121 +++++ packages/renderer/src/device/constants.ts | 129 +++++ packages/renderer/src/device/index.ts | 344 +++++++++++++ .../renderer/src/device/utils/pipeline.ts | 1 + .../renderer/src/device/utils/typedarray.ts | 28 ++ packages/renderer/src/device/utils/webgl.ts | 14 + packages/renderer/src/index.ts | 3 +- packages/renderer/src/regl/ReglModel.ts | 28 +- packages/renderer/src/regl/index.ts | 4 + packages/scene/src/index.ts | 6 +- packages/test-utils/package.json | 4 +- public/antv.png | Bin 0 -> 11160 bytes public/glsl_wgsl_compiler_bg.wasm | Bin 0 -> 875346 bytes 54 files changed, 2168 insertions(+), 272 deletions(-) create mode 100644 dev-demos/features/point/demos/circle-webgpu.tsx create mode 100644 dev-demos/features/point/demos/normal-device.tsx create mode 100644 dev-demos/features/point/pointCircleWebGPU.md create mode 100644 dev-demos/features/point/pointNormalDevice.md create mode 100644 packages/renderer/src/device/DeviceAttribute.ts create mode 100644 packages/renderer/src/device/DeviceBuffer.ts create mode 100644 packages/renderer/src/device/DeviceElements.ts create mode 100644 packages/renderer/src/device/DeviceFramebuffer.ts create mode 100644 packages/renderer/src/device/DeviceModel.ts create mode 100644 packages/renderer/src/device/DeviceTexture2D.ts create mode 100644 packages/renderer/src/device/constants.ts create mode 100644 packages/renderer/src/device/index.ts create mode 100644 packages/renderer/src/device/utils/pipeline.ts create mode 100644 packages/renderer/src/device/utils/typedarray.ts create mode 100644 packages/renderer/src/device/utils/webgl.ts create mode 100644 public/antv.png create mode 100644 public/glsl_wgsl_compiler_bg.wasm diff --git a/.eslintrc.js b/.eslintrc.js index 7c11b791ce..b46ba964b2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -29,6 +29,7 @@ module.exports = { 'no-useless-catch': 0, '@typescript-eslint/explicit-module-boundary-types': 0, '@typescript-eslint/no-explicit-any':0, + "@typescript-eslint/no-unused-vars": 0, 'prefer-rest-params':0, }, settings: { diff --git a/.gitignore b/.gitignore index 6a1191cbf4..c243c0dc26 100644 --- a/.gitignore +++ b/.gitignore @@ -71,7 +71,6 @@ dist/ es/ .DS_Store -public .cache .idea diff --git a/.umirc.ts b/.umirc.ts index a70f871f92..95dcdb7a55 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -29,7 +29,7 @@ export default defineConfig({ title: '特性', path: '/features', }, - + { title: '图库', path: '/gallery', @@ -101,7 +101,8 @@ export default defineConfig({ // "https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=zLhopYPPERGtpGOgimcdKcCimGRyyIsh", /** lodash */ 'https://gw.alipayobjects.com/os/lib/lodash/4.17.20/lodash.min.js', - ] + ], + publicPath: '/public/', // more config: https://d.umijs.org/config }); diff --git a/dev-demos/features/point/demos/circle-webgpu.tsx b/dev-demos/features/point/demos/circle-webgpu.tsx new file mode 100644 index 0000000000..f4bc011cfb --- /dev/null +++ b/dev-demos/features/point/demos/circle-webgpu.tsx @@ -0,0 +1,77 @@ +// @ts-ignore +import { PointLayer, Scene } from '@antv/l7'; +// @ts-ignore +import { GaodeMap } from '@antv/l7-maps'; +import React, { useEffect } from 'react'; + +export default () => { + useEffect(() => { + const scene = new Scene({ + id: 'point_circle', + pickBufferScale: 1.0, + renderer: 'device', + enableWebGPU: true, + shaderCompilerPath: '/glsl_wgsl_compiler_bg.wasm', + map: new GaodeMap({ + style: 'light', + center: [-121.24357, 37.58264], + pitch: 0, + zoom: 6.45, + }), + }); + scene.on('loaded', () => { + fetch( + 'https://gw.alipayobjects.com/os/basement_prod/6c4bb5f2-850b-419d-afc4-e46032fc9f94.csv', + ) + .then((res) => res.text()) + .then((data) => { + const pointLayer = new PointLayer() + .source(data, { + parser: { + type: 'csv', + x: 'Longitude', + y: 'Latitude', + }, + }) + .shape('circle') + .size(16) + .active(true) + .select({ + color: 'red', + }) + .color('Magnitude', [ + '#0A3663', + '#1558AC', + '#3771D9', + '#4D89E5', + '#64A5D3', + '#72BED6', + '#83CED6', + '#A6E1E0', + '#B8EFE2', + '#D7F9F0', + ]) + .style({ + opacity: 1, + strokeWidth: 0, + stroke: '#fff', + }); + scene.addLayer(pointLayer); + // let i =0; + // setInterval(() => { + // i++ % 2 === 0 ? pointLayer.setBlend('additive') : pointLayer.setBlend('normal'); + + // },20) + }); + }); + }, []); + return ( +
+ ); +}; diff --git a/dev-demos/features/point/demos/circlemeter.tsx b/dev-demos/features/point/demos/circlemeter.tsx index 5f9020e0d4..03cf71e867 100644 --- a/dev-demos/features/point/demos/circlemeter.tsx +++ b/dev-demos/features/point/demos/circlemeter.tsx @@ -1,5 +1,5 @@ import { Scene, PointLayer,PolygonLayer } from "@antv/l7"; -import { GaodeMap } from "@antv/l7-maps"; +import { GaodeMap,Map } from "@antv/l7-maps"; import React, { useEffect } from 'react'; import * as turf from '@turf/turf' @@ -7,6 +7,7 @@ export default () => { useEffect( () => { const scene = new Scene({ id: "map", + renderer: 'device', map: new GaodeMap({ style: "light", center: [120.099658370018, 30.263445807542666], @@ -14,18 +15,9 @@ const scene = new Scene({ }) }); scene.on("loaded", () => { - const size = 1000; - const circle = turf.circle([120.099658370018, 30.263445807542666],size/1000,{ - steps: 60, units: 'kilometers' - }); -const player = new PolygonLayer().source(turf.featureCollection([circle])) -.shape('fill') -.color('blue') -.style({ - opacity:0.5 -}) + const pointLayer = new PointLayer({ - autoFit: false + autoFit: true }) .source({ type: "FeatureCollection", @@ -39,18 +31,14 @@ const player = new PolygonLayer().source(turf.featureCollection([circle])) } } ] - }) - .shape("triangle") - .size(size) + }) + .shape("circle") + .size(100) .color("#ff0000") - .active(true) .style({ opacity: 1, strokeWidth: 1, - rotation: 30, - unit:'meter' }); - scene.addLayer(player); scene.addLayer(pointLayer); }); }, []); diff --git a/dev-demos/features/point/demos/normal-device.tsx b/dev-demos/features/point/demos/normal-device.tsx new file mode 100644 index 0000000000..b4b3d77e0e --- /dev/null +++ b/dev-demos/features/point/demos/normal-device.tsx @@ -0,0 +1,63 @@ +// @ts-ignore +import { PointLayer, Scene } from '@antv/l7'; +// @ts-ignore +import { GaodeMap } from '@antv/l7-maps'; +import React, { useEffect } from 'react'; + +export default () => { + useEffect(() => { + const scene = new Scene({ + id: 'map', + renderer: 'device', + map: new GaodeMap({ + // style: 'blank', + center: [120.099658370018, 30.263445807542666], + pitch: 0, + zoom: 11, + }), + }); + scene.on('loaded', () => { + // fetch( + // 'https://gw.alipayobjects.com/os/rmsportal/BElVQFEFvpAKzddxFZxJ.txt', + // ) + // .then((res) => res.text()) + // .then((data) => { + const pointLayer = new PointLayer({ blend: 'additive' }) + .source({ + type: "FeatureCollection", + features: [ + { + type: "Feature", + properties: {}, + geometry: { + type: "Point", + coordinates: [120.099658370018, 30.263445807542666] + } + } + ] + }) + .size(40) + .shape('dot') + .color('#f00') + .style({ + sizeScale:0.5, + opacity: 0.6, + stroke:'#00f', + + + }); + + scene.addLayer(pointLayer); + // }); + }); + }, []); + return ( +
+ ); +}; diff --git a/dev-demos/features/point/demos/normal.tsx b/dev-demos/features/point/demos/normal.tsx index f6ffa70aed..238aa17d50 100644 --- a/dev-demos/features/point/demos/normal.tsx +++ b/dev-demos/features/point/demos/normal.tsx @@ -1,51 +1,51 @@ // @ts-ignore import { PointLayer, Scene } from '@antv/l7'; // @ts-ignore -import { GaodeMap, Mapbox } from '@antv/l7-maps'; +import { GaodeMap } from '@antv/l7-maps'; import React, { useEffect } from 'react'; - + export default () => { - useEffect( () => { - const scene = new Scene({ - id: 'map', - map: new GaodeMap({ - style: 'dark', - center: [ 121.417463, 31.215175 ], - pitch: 0, - zoom: 11 - }) - }); - scene.on('loaded', () => { - fetch('https://gw.alipayobjects.com/os/rmsportal/BElVQFEFvpAKzddxFZxJ.txt') - .then(res => res.text()) - .then(data => { - const pointLayer = new PointLayer({blend:'additive'}) - .source(data, { - parser: { - type: 'csv', - y: 'lat', - x: 'lng' - } - }) - .size(0.5) - .color('#080298') - .style({ - opacity: 1 - }); + useEffect(() => { + const scene = new Scene({ + id: 'map', + map: new GaodeMap({ + style: 'dark', + center: [121.417463, 31.215175], + pitch: 0, + zoom: 11, + }), + }); + scene.on('loaded', () => { + fetch( + 'https://gw.alipayobjects.com/os/rmsportal/BElVQFEFvpAKzddxFZxJ.txt', + ) + .then((res) => res.text()) + .then((data) => { + const pointLayer = new PointLayer({ blend: 'additive' }) + .source(data, { + parser: { + type: 'csv', + y: 'lat', + x: 'lng', + }, + }) + .size(0.5) + .color('#080298') + .style({ + opacity: 1, + }); - scene.addLayer(pointLayer); - }); - }); - - }, []); - return ( -
- ); - }; - \ No newline at end of file + scene.addLayer(pointLayer); + }); + }); + }, []); + return ( +
+ ); +}; diff --git a/dev-demos/features/point/pointCircleWebGPU.md b/dev-demos/features/point/pointCircleWebGPU.md new file mode 100644 index 0000000000..c1bdddfbb8 --- /dev/null +++ b/dev-demos/features/point/pointCircleWebGPU.md @@ -0,0 +1,3 @@ +### point - circle - WebGPU + + diff --git a/dev-demos/features/point/pointNormalDevice.md b/dev-demos/features/point/pointNormalDevice.md new file mode 100644 index 0000000000..cca7565418 --- /dev/null +++ b/dev-demos/features/point/pointNormalDevice.md @@ -0,0 +1,3 @@ +### Point - normal - Device API + + diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 8b0d4d4382..ec3303ee4b 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -6,6 +6,7 @@ import container, { } from './inversify.config'; import BasePostProcessingPass from './services/renderer/passes/BasePostProcessingPass'; import { TYPES } from './types'; +import { removeDuplicateUniforms } from './utils/shader-module'; import { packCircleVertex } from './utils/vertex-compression'; export * from './services/asset/IFontService'; @@ -54,4 +55,5 @@ export { lazyInject, lazyMultiInject, packCircleVertex, + removeDuplicateUniforms, }; diff --git a/packages/core/src/services/config/IConfigService.ts b/packages/core/src/services/config/IConfigService.ts index 3aafc902ea..eb1bb4cf4d 100644 --- a/packages/core/src/services/config/IConfigService.ts +++ b/packages/core/src/services/config/IConfigService.ts @@ -17,6 +17,10 @@ export interface ISceneConfig extends IRenderConfig { // TODO: 场景是否支持 stencil mask stencil?: boolean; debug?: boolean; + /** + * Support regl & @antv/g-device-api now + */ + renderer?: 'regl' | 'device'; } export interface IGlobalConfigService { diff --git a/packages/core/src/services/layer/ILayerService.ts b/packages/core/src/services/layer/ILayerService.ts index 7137177df3..dfdda8683e 100644 --- a/packages/core/src/services/layer/ILayerService.ts +++ b/packages/core/src/services/layer/ILayerService.ts @@ -17,6 +17,7 @@ import { } from '../interaction/IPickingService'; import { IMapService } from '../map/IMapService'; import { IAttribute } from '../renderer/IAttribute'; +import { IBuffer } from '../renderer/IBuffer'; import { IBlendOptions, IModel, @@ -87,6 +88,8 @@ export interface ILayerModelInitializationOptions { } export interface ILayerModel { + uniformBuffers: IBuffer[]; + textures: ITexture2D[]; renderUpdate?(): void; getBlend(): Partial; getStencil(option?: Partial): Partial; diff --git a/packages/core/src/services/layer/LayerService.ts b/packages/core/src/services/layer/LayerService.ts index f56d47e01e..96369a930b 100644 --- a/packages/core/src/services/layer/LayerService.ts +++ b/packages/core/src/services/layer/LayerService.ts @@ -145,6 +145,8 @@ export default class LayerService this.debugService.renderStart(renderUid); this.alreadyInRendering = true; this.clear(); + + this.renderService.beginFrame(); for (const layer of this.layerList) { const { enableMask } = layer.getLayerConfig(); if (layer.masks.filter((m) => m.inited).length > 0 && enableMask) { @@ -158,6 +160,7 @@ export default class LayerService await layer.render(); } } + this.renderService.endFrame(); this.debugService.renderEnd(renderUid); this.alreadyInRendering = false; } diff --git a/packages/core/src/services/renderer/IAttribute.ts b/packages/core/src/services/renderer/IAttribute.ts index ac99d6ba09..1fc60e47b4 100644 --- a/packages/core/src/services/renderer/IAttribute.ts +++ b/packages/core/src/services/renderer/IAttribute.ts @@ -3,6 +3,11 @@ import { IBuffer } from './IBuffer'; export interface IAttributeInitializationOptions { buffer: IBuffer; + /** + * layout(location = x) + */ + shaderLocation?: number; + /** * vertexAttribPointer 单位为 byte,默认值均为 0 */ diff --git a/packages/core/src/services/renderer/IBuffer.ts b/packages/core/src/services/renderer/IBuffer.ts index 60d47352c4..6f37eb0eda 100644 --- a/packages/core/src/services/renderer/IBuffer.ts +++ b/packages/core/src/services/renderer/IBuffer.ts @@ -19,6 +19,11 @@ export interface IBufferInitializationOptions { */ type?: gl.FLOAT | gl.UNSIGNED_BYTE; length?: number; + + /** + * UniformBuffer + */ + isUBO?: boolean; } export interface IBuffer { diff --git a/packages/core/src/services/renderer/IModel.ts b/packages/core/src/services/renderer/IModel.ts index 8ef43099e3..e4da22d8f2 100644 --- a/packages/core/src/services/renderer/IModel.ts +++ b/packages/core/src/services/renderer/IModel.ts @@ -1,6 +1,8 @@ import { gl } from './gl'; import { IAttribute } from './IAttribute'; +import { IBuffer } from './IBuffer'; import { IElements } from './IElements'; +import { ITexture2D } from './ITexture2D'; import { IUniform } from './IUniform'; export interface IBlendOptions { @@ -160,6 +162,9 @@ export interface IModelInitializationOptions { uniforms?: { [key: string]: IUniform; }; + // UBOs + uniformBuffers?: IBuffer[]; + textures?: ITexture2D[]; attributes: { [key: string]: IAttribute; @@ -246,6 +251,8 @@ export interface IModelDrawOptions { }; elements?: IElements; + uniformBuffers?: IBuffer[]; + blend?: Partial; stencil?: Partial; diff --git a/packages/core/src/services/renderer/IRendererService.ts b/packages/core/src/services/renderer/IRendererService.ts index a25873ca1b..b6dbf5e96c 100644 --- a/packages/core/src/services/renderer/IRendererService.ts +++ b/packages/core/src/services/renderer/IRendererService.ts @@ -19,6 +19,14 @@ export interface IRenderConfig { preserveDrawingBuffer?: boolean; // Tip: 场景是否支持 stencil mask stencil?: boolean; + /** + * Whether to use WebGPU Device. + */ + enableWebGPU?: boolean; + /** + * Path of WASM shader compiler. + */ + shaderCompilerPath?: string; } export interface IClearOptions { @@ -47,6 +55,7 @@ export interface IExtensions { } export interface IRendererService { + uniformBuffers: IBuffer[]; extensionObject: IExtensions; init(canvas: HTMLCanvasElement, cfg: IRenderConfig, gl: any): Promise; testExtension(name: string): boolean; @@ -74,4 +83,6 @@ export interface IRendererService { setDirty(flag: boolean): void; getDirty(): boolean; destroy(): void; + beginFrame(): void; + endFrame(): void; } diff --git a/packages/core/src/services/shader/ShaderModuleService.ts b/packages/core/src/services/shader/ShaderModuleService.ts index 3183472ba9..d4dc0ca2ca 100644 --- a/packages/core/src/services/shader/ShaderModuleService.ts +++ b/packages/core/src/services/shader/ShaderModuleService.ts @@ -30,7 +30,7 @@ export default class ShaderModuleService implements IShaderModuleService { this.destroy(); this.registerModule('common', { vs: common, fs: common }); this.registerModule('decode', { vs: decode, fs: '' }); - this.registerModule('projection', { vs: projection, fs: '' }); + this.registerModule('projection', { vs: projection, fs: projection }); this.registerModule('project', { vs: project, fs: '' }); this.registerModule('sdf_2d', { vs: '', fs: sdf2d }); this.registerModule('lighting', { vs: lighting, fs: '' }); @@ -70,7 +70,7 @@ export default class ShaderModuleService implements IShaderModuleService { // } let rawVS = this.rawContentCache[moduleName].vs; - const rawFS = this.rawContentCache[moduleName].fs; + let rawFS = this.rawContentCache[moduleName].fs; const inject = this.rawContentCache[moduleName].inject; let declaredUniforms = {}; if (inject?.['vs:#decl']) { @@ -84,6 +84,10 @@ export default class ShaderModuleService implements IShaderModuleService { return match + inject?.['vs:#main-start']; }); } + if (inject?.['fs:#decl']) { + // 头部注入 + rawFS = inject?.['fs:#decl'] + rawFS; + } const { content: vs, includeList: vsIncludeList } = this.processModule( rawVS, @@ -118,13 +122,18 @@ export default class ShaderModuleService implements IShaderModuleService { if (!precisionRegExp.test(fs)) { compiledFs = compiledFs + globalDefaultprecision; } - compiledFs = compiledFs + fs; + let compiledVs = ''; + if (!precisionRegExp.test(vs)) { + compiledVs = compiledVs + globalDefaultprecision; + } + compiledVs = compiledVs + vs; + this.moduleCache[moduleName] = { fs: compiledFs.trim(), uniforms, - vs: vs.trim(), + vs: compiledVs.trim(), }; return this.moduleCache[moduleName]; } diff --git a/packages/core/src/shaders/picking.frag.glsl b/packages/core/src/shaders/picking.frag.glsl index 7afade6481..dd771525c1 100644 --- a/packages/core/src/shaders/picking.frag.glsl +++ b/packages/core/src/shaders/picking.frag.glsl @@ -1,10 +1,18 @@ -varying vec4 v_PickingResult; -uniform vec4 u_HighlightColor : [0, 0, 0, 0]; -uniform vec4 u_SelectColor : [0, 0, 0, 0]; -uniform float u_PickingStage : 0.0; -uniform float u_shaderPick; -uniform float u_activeMix: 0; +in vec4 v_PickingResult; + +layout(std140) uniform PickingUniforms { + vec4 u_HighlightColor; + vec4 u_SelectColor; + vec3 u_PickingColor; + float u_PickingStage; + vec3 u_CurrentSelectedId; + float u_PickingThreshold; + float u_PickingBuffer; + float u_shaderPick; + float u_EnableSelect; + float u_activeMix; +}; #define PICKING_NONE 0.0 #define PICKING_ENCODE 1.0 diff --git a/packages/core/src/shaders/picking.vert.glsl b/packages/core/src/shaders/picking.vert.glsl index 575fdb146c..c1753b6a10 100644 --- a/packages/core/src/shaders/picking.vert.glsl +++ b/packages/core/src/shaders/picking.vert.glsl @@ -1,15 +1,19 @@ -attribute vec3 a_PickingColor; -varying vec4 v_PickingResult; +layout(location = 2) in vec3 a_PickingColor; +out vec4 v_PickingResult; -uniform vec3 u_PickingColor : [0, 0, 0]; -uniform vec3 u_CurrentSelectedId : [0, 0, 0]; -uniform vec4 u_HighlightColor : [0, 0, 0, 0]; -uniform vec4 u_SelectColor : [0, 0, 0, 0]; -uniform float u_PickingStage : 0.0; -uniform float u_PickingThreshold : 1.0; -uniform float u_PickingBuffer: 0.0; -uniform float u_shaderPick; -uniform float u_EnableSelect: 0.0; + +layout(std140) uniform PickingUniforms { + vec4 u_HighlightColor; + vec4 u_SelectColor; + vec3 u_PickingColor; + float u_PickingStage; + vec3 u_CurrentSelectedId; + float u_PickingThreshold; + float u_PickingBuffer; + float u_shaderPick; + float u_EnableSelect; + float u_activeMix; +}; #define PICKING_NONE 0.0 #define PICKING_ENCODE 1.0 diff --git a/packages/core/src/shaders/projection.glsl b/packages/core/src/shaders/projection.glsl index 9da3160d26..7ba43d593e 100644 --- a/packages/core/src/shaders/projection.glsl +++ b/packages/core/src/shaders/projection.glsl @@ -12,24 +12,26 @@ #define COORDINATE_SYSTEM_P20_2 8.0 // amap2.0 -uniform mat4 u_ViewMatrix; -uniform mat4 u_ProjectionMatrix; -uniform mat4 u_ViewProjectionMatrix; -uniform float u_Zoom : 1; -uniform float u_ZoomScale : 1; - -uniform float u_CoordinateSystem; -uniform vec2 u_ViewportCenter; -uniform vec4 u_ViewportCenterProjection; -uniform vec3 u_PixelsPerDegree; -uniform vec3 u_PixelsPerDegree2; -uniform vec3 u_PixelsPerMeter; - -uniform vec2 u_ViewportSize; -uniform float u_DevicePixelRatio; -uniform float u_FocalDistance; -uniform vec3 u_CameraPosition; -uniform mat4 u_Mvp; +layout(std140) uniform SceneUniforms { + mat4 u_ViewMatrix; + mat4 u_ProjectionMatrix; + mat4 u_ViewProjectionMatrix; + mat4 u_ModelMatrix; + mat4 u_Mvp; + vec4 u_ViewportCenterProjection; + vec3 u_PixelsPerDegree; + float u_Zoom; + vec3 u_PixelsPerDegree2; + float u_ZoomScale; + vec3 u_PixelsPerMeter; + float u_CoordinateSystem; + vec3 u_CameraPosition; + float u_DevicePixelRatio; + vec2 u_ViewportCenter; + vec2 u_ViewportSize; + vec2 u_sceneCenterMercator; + float u_FocalDistance; +}; // web mercator coords -> world coords vec2 project_mercator(vec2 lnglat) { diff --git a/packages/core/src/utils/shader-module.ts b/packages/core/src/utils/shader-module.ts index 57e96ac9c5..6cd672472d 100644 --- a/packages/core/src/utils/shader-module.ts +++ b/packages/core/src/utils/shader-module.ts @@ -27,7 +27,10 @@ export function getUniformLengthByType(type: string): number { const uniformRegExp = /uniform\s+(bool|float|int|vec2|vec3|vec4|ivec2|ivec3|ivec4|mat2|mat3|mat4|sampler2D|samplerCube)\s+([\s\S]*?);/g; -export function extractUniforms(content: string): { +function fillUniforms( + content: string, + uniformPrefix = false, +): { content: string; uniforms: { [key: string]: any; @@ -79,10 +82,52 @@ export function extractUniforms(content: string): { // @ts-ignore uniforms[uniformName] = defaultValue; - return `uniform ${type} ${uniformName};\n`; + return `${uniformPrefix ? 'uniform ' : ''}${type} ${uniformName};\n`; }); + return { content, uniforms, }; } +export function extractUniforms(content: string): { + content: string; + uniforms: { + [key: string]: any; + }; +} { + // eslint-disable-next-line prefer-const + let { content: c, uniforms: u } = fillUniforms(content, true); + + c = c.replace( + /(\s*uniform\s*.*\s*){((?:\s*.*\s*)*?)};/g, + (substr, header, uniforms) => { + uniforms = uniforms.trim().replace(/^.*$/gm, (uniform: string) => { + return `uniform ${uniform}`; + }); + + const { content: cc, uniforms: uu } = fillUniforms(uniforms); + Object.assign(u, uu); + + return `${header}{\n${cc}\n};`; + }, + ); + + return { + content: c, + uniforms: u, + }; +} + +export function removeDuplicateUniforms(content: string) { + const uniforms: Record = {}; + return content.replace(uniformRegExp, (_, type, uniformName) => { + const name = uniformName.trim(); + if (!uniforms[name]) { + uniforms[name] = true; + return `uniform ${type} ${name};\n`; + } else { + return ''; + } + }); +} diff --git a/packages/layers/src/core/BaseLayer.ts b/packages/layers/src/core/BaseLayer.ts index e8cd2b5dc3..674a737795 100644 --- a/packages/layers/src/core/BaseLayer.ts +++ b/packages/layers/src/core/BaseLayer.ts @@ -40,8 +40,8 @@ import { IPass, IPickingService, IPostProcessingPass, - IRendererService, IRenderOptions, + IRendererService, IScale, IScaleOptions, IShaderModuleService, @@ -50,12 +50,12 @@ import { IStyleAttributeUpdateOptions, ITextureService, LayerEventType, - lazyInject, LegendItems, StyleAttributeField, StyleAttributeOption, - Triangulation, TYPES, + Triangulation, + lazyInject, } from '@antv/l7-core'; import Source from '@antv/l7-source'; import { encodePickingColor, lodashUtil } from '@antv/l7-utils'; @@ -496,7 +496,6 @@ export default class BaseLayer } } - public setLayerPickService(layerPickService: ILayerPickService): void { this.layerPickService = layerPickService; } @@ -668,17 +667,17 @@ export default class BaseLayer }, ); } - // 兼容 borderColor borderWidth - // @ts-ignore - if(rest.borderColor) { - // @ts-ignore - rest.stroke = rest.borderColor; - } - // @ts-ignore - if(rest.borderWidth) { - // @ts-ignore - rest.strokeWidth = rest.borderWidth; - } + // 兼容 borderColor borderWidth + // @ts-ignore + if (rest.borderColor) { + // @ts-ignore + rest.stroke = rest.borderColor; + } + // @ts-ignore + if (rest.borderWidth) { + // @ts-ignore + rest.strokeWidth = rest.borderWidth; + } // 兼容老版本的写法 ['field, 'value'] const newOption: { [key: string]: any } = rest; @@ -698,8 +697,6 @@ export default class BaseLayer } }); - - this.encodeStyle(newOption); this.updateLayerConfig(newOption); @@ -1055,6 +1052,12 @@ export default class BaseLayer if (this.isDestroyed) { return; } + + // destroy all UBOs + this.layerModel.uniformBuffers.forEach((buffer) => { + buffer.destroy(); + }); + // remove child layer this.layerChildren.map((child: ILayer) => child.destroy(false)); this.layerChildren = []; @@ -1270,6 +1273,7 @@ export default class BaseLayer inject, }); const { vs, fs, uniforms } = this.shaderModuleService.getModule(moduleName); + console.log(vs, fs); const { createModel } = this.rendererService; return new Promise((resolve) => { // console.log(this.encodedData) @@ -1286,6 +1290,11 @@ export default class BaseLayer vs, elements, blend: BlendTypes[BlendType.normal], + uniformBuffers: [ + ...this.layerModel.uniformBuffers, + ...this.rendererService.uniformBuffers, + ], + textures: this.layerModel.textures, ...rest, }; if (count) { @@ -1375,6 +1384,10 @@ export default class BaseLayer this.models.forEach((model) => { model.draw( { + uniformBuffers: [ + ...this.layerModel.uniformBuffers, + ...this.rendererService.uniformBuffers, + ], uniforms: this.layerModel.getUninforms(), blend: this.layerModel.getBlend(), stencil: this.layerModel.getStencil(options), diff --git a/packages/layers/src/core/BaseModel.ts b/packages/layers/src/core/BaseModel.ts index 8061cfc38c..80332f7356 100644 --- a/packages/layers/src/core/BaseModel.ts +++ b/packages/layers/src/core/BaseModel.ts @@ -3,6 +3,7 @@ import { IAnimateOption, IAttribute, IBlendOptions, + IBuffer, ICameraService, IElements, IFontService, @@ -33,9 +34,11 @@ import { import { rgb2arr } from '@antv/l7-utils'; import { BlendTypes } from '../utils/blend'; import { getStencil, getStencilMask } from '../utils/stencil'; -import { getCommonStyleAttributeOptions } from './CommonStyleAttribute'; -import { DefaultUniformStyleType, DefaultUniformStyleValue} from './constant' - +import { DefaultUniformStyleType, DefaultUniformStyleValue } from './constant' +import { + getCommonStyleAttributeOptions, + ShaderLocation, +} from './CommonStyleAttribute'; export type styleSingle = | number | string @@ -60,11 +63,21 @@ export interface ICellProperty { count: number; } +const shaderLocationMap: Record = { + opacity: ShaderLocation.OPACITY, + stroke: ShaderLocation.STROKE, + offsets: ShaderLocation.OFFSETS, + rotation: ShaderLocation.ROTATION, + extrusionBase: ShaderLocation.EXTRUSION_BASE, +}; + // eslint-disable-next-line @typescript-eslint/no-unused-vars export default class BaseModel implements ILayerModel { public triangulation: Triangulation; + public uniformBuffers: IBuffer[] = []; + public textures: ITexture2D[] = []; // style texture data mapping public createTexture2D: ( @@ -232,33 +245,51 @@ export default class BaseModel protected getInject(): IInject { const encodeStyleAttribute = this.layer.encodeStyleAttribute; let str = ''; + // a_Position = 0 + // a_Color = 1 + // a_PickingColor = 2 + + const uniforms: string[] = []; + // 支持数据映射的类型 this.layer.enableShaderEncodeStyles.forEach((key: string) => { - if (encodeStyleAttribute[key]) { + if (encodeStyleAttribute[key]) { // 配置了数据映射的类型 str += `#define USE_ATTRIBUTE_${key.toUpperCase()} 0.0; \n\n`; + } else { + uniforms.push(` ${DefaultUniformStyleType[key]} u_${key};`); } str += ` #ifdef USE_ATTRIBUTE_${key.toUpperCase()} - attribute ${DefaultUniformStyleType[key]} a_${ + layout(location = ${shaderLocationMap[key]}) in ${ + DefaultUniformStyleType[key] + } a_${key.charAt(0).toUpperCase() + key.slice(1)}; + #endif\n + `; + }); + const attributeUniforms = uniforms.length + ? ` +layout(std140) uniform AttributeUniforms { +${uniforms.join('\n')} +}; + ` + : ''; + str += attributeUniforms; + + let innerStr = ''; + this.layer.enableShaderEncodeStyles.forEach((key) => { + innerStr += `\n + #ifdef USE_ATTRIBUTE_${key.toUpperCase()} + ${DefaultUniformStyleType[key]} ${key} = a_${ key.charAt(0).toUpperCase() + key.slice(1) }; #else - uniform ${DefaultUniformStyleType[key]} u_${key}; + ${DefaultUniformStyleType[key]} ${key} = u_${key}; #endif\n `; }); - let innerStr = ''; - this.layer.enableShaderEncodeStyles.forEach((key) => { - innerStr += `\n -#ifdef USE_ATTRIBUTE_${key.toUpperCase()} - ${DefaultUniformStyleType[key]} ${key} = a_${key.charAt(0).toUpperCase() + key.slice(1)}; -#else - ${DefaultUniformStyleType[key]} ${key} = u_${key}; -#endif\n -`; - }); return { 'vs:#decl': str, + 'fs:#decl': attributeUniforms, 'vs:#main-start': innerStr, }; } @@ -289,6 +320,10 @@ export default class BaseModel const options = getCommonStyleAttributeOptions(key); if (options) { this.styleAttributeService.registerStyleAttribute(options); + + if (options.descriptor) { + options.descriptor.shaderLocation = shaderLocationMap[key]; + } } }); } diff --git a/packages/layers/src/core/CommonStyleAttribute.ts b/packages/layers/src/core/CommonStyleAttribute.ts index 2c6cc9c804..5231da7414 100644 --- a/packages/layers/src/core/CommonStyleAttribute.ts +++ b/packages/layers/src/core/CommonStyleAttribute.ts @@ -4,6 +4,23 @@ import { IEncodeFeature, IStyleAttribute, } from '@antv/l7-core'; + +export enum ShaderLocation { + POSITION = 0, + COLOR, + VERTEX_ID, + PICKING_COLOR, + STROKE, + OPACITY, + OFFSETS, + ROTATION, + EXTRUSION_BASE, + SIZE, + SHAPE, + EXTRUDE, + MAX, +} + export function getCommonStyleAttributeOptions( name: string, ): Partial | undefined { @@ -15,6 +32,7 @@ export function getCommonStyleAttributeOptions( type: AttributeType.Attribute, descriptor: { name: 'a_Rotation', + shaderLocation: ShaderLocation.ROTATION, buffer: { usage: gl.DYNAMIC_DRAW, data: [], @@ -35,6 +53,7 @@ export function getCommonStyleAttributeOptions( type: AttributeType.Attribute, descriptor: { name: 'a_Stroke', + shaderLocation: ShaderLocation.STROKE, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.DYNAMIC_DRAW, @@ -54,6 +73,7 @@ export function getCommonStyleAttributeOptions( type: AttributeType.Attribute, descriptor: { name: 'a_Opacity', + shaderLocation: ShaderLocation.OPACITY, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.STATIC_DRAW, @@ -73,6 +93,7 @@ export function getCommonStyleAttributeOptions( type: AttributeType.Attribute, descriptor: { name: 'a_ExtrusionBase', + shaderLocation: ShaderLocation.EXTRUSION_BASE, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.STATIC_DRAW, @@ -92,6 +113,7 @@ export function getCommonStyleAttributeOptions( type: AttributeType.Attribute, descriptor: { name: 'a_Offsets', + shaderLocation: ShaderLocation.OFFSETS, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.STATIC_DRAW, diff --git a/packages/layers/src/plugins/PixelPickingPlugin.ts b/packages/layers/src/plugins/PixelPickingPlugin.ts index f69346fadc..bdcc35a053 100644 --- a/packages/layers/src/plugins/PixelPickingPlugin.ts +++ b/packages/layers/src/plugins/PixelPickingPlugin.ts @@ -14,6 +14,7 @@ import { } from '@antv/l7-utils'; import { injectable } from 'inversify'; import 'reflect-metadata'; +import { ShaderLocation } from '../core/CommonStyleAttribute'; const PickingStage = { NONE: 0.0, @@ -26,12 +27,46 @@ export default class PixelPickingPlugin implements ILayerPlugin { public apply( layer: ILayer, { + rendererService, styleAttributeService, }: { rendererService: IRendererService; styleAttributeService: IStyleAttributeService; }, ) { + if (!rendererService.uniformBuffers[1]) { + // Create a Uniform Buffer Object(UBO). + const uniformBuffer = rendererService.createBuffer({ + // vec4 u_HighlightColor; + // vec4 u_SelectColor; + // vec3 u_PickingColor; + // float u_PickingStage; + // vec3 u_CurrentSelectedId; + // float u_PickingThreshold; + // float u_PickingBuffer; + // float u_shaderPick; + // float u_EnableSelect; + // float u_activeMix; + data: new Float32Array([ + ...[1, 0, 0, 1], + ...[1, 0, 0, 1], + ...[0, 0, 0], + 0, + ...[0, 0, 0], + 0, + 0, + 0, + 0, + 0, + ]), + isUBO: true, + }); + rendererService.uniformBuffers[1] = uniformBuffer; + } + // u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0, + // // Tip: 当前地图是否在拖动 + // u_shaderPick: Number(layer.getShaderPickStat()), + // TODO: 由于 Shader 目前无法根据是否开启拾取进行内容修改,因此即使不开启也需要生成 a_PickingColor layer.hooks.init.tapPromise('PixelPickingPlugin', () => { const { enablePicking } = layer.getLayerConfig(); @@ -40,6 +75,7 @@ export default class PixelPickingPlugin implements ILayerPlugin { type: AttributeType.Attribute, descriptor: { name: 'a_PickingColor', + shaderLocation: ShaderLocation.PICKING_COLOR, buffer: { data: [], type: gl.FLOAT, @@ -58,6 +94,12 @@ export default class PixelPickingPlugin implements ILayerPlugin { layer.hooks.beforePickingEncode.tap('PixelPickingPlugin', () => { const { enablePicking } = layer.getLayerConfig(); if (enablePicking && layer.isVisible()) { + // rendererService.uniformBuffers[1].subData({ + // offset: 11, + // data: new Uint8Array(new Float32Array([ + // PickingStage.ENCODE + // ])), + // }) layer.models.forEach((model) => model.addUniforms({ u_PickingStage: PickingStage.ENCODE, @@ -70,6 +112,12 @@ export default class PixelPickingPlugin implements ILayerPlugin { const { enablePicking } = layer.getLayerConfig(); // 区分选中高亮 和滑过高亮 if (enablePicking && layer.isVisible()) { + // rendererService.uniformBuffers[1].subData({ + // offset: 11, + // data: new Uint8Array(new Float32Array([ + // PickingStage.HIGHLIGHT + // ])), + // }) layer.models.forEach((model) => model.addUniforms({ u_PickingStage: PickingStage.HIGHLIGHT, @@ -91,6 +139,12 @@ export default class PixelPickingPlugin implements ILayerPlugin { layer.updateLayerConfig({ pickedFeatureID: decodePickingColor(new Uint8Array(pickedColor)), }); + // rendererService.uniformBuffers[1].subData({ + // offset: 11, + // data: new Uint8Array(new Float32Array([ + // PickingStage.HIGHLIGHT + // ])), + // }) layer.models.forEach((model) => model.addUniforms({ u_PickingStage: PickingStage.HIGHLIGHT, diff --git a/packages/layers/src/plugins/RegisterStyleAttributePlugin.ts b/packages/layers/src/plugins/RegisterStyleAttributePlugin.ts index 1240bc9077..35c2417e13 100644 --- a/packages/layers/src/plugins/RegisterStyleAttributePlugin.ts +++ b/packages/layers/src/plugins/RegisterStyleAttributePlugin.ts @@ -8,6 +8,7 @@ import { } from '@antv/l7-core'; import { injectable } from 'inversify'; import 'reflect-metadata'; +import { ShaderLocation } from '../core/CommonStyleAttribute'; import { isTileGroup } from '../tile/utils/utils'; /** @@ -55,6 +56,7 @@ export default class RegisterStyleAttributePlugin implements ILayerPlugin { type: AttributeType.Attribute, descriptor: { name: 'a_Position', + shaderLocation: ShaderLocation.POSITION, buffer: { data: [], type: gl.FLOAT, @@ -73,29 +75,6 @@ export default class RegisterStyleAttributePlugin implements ILayerPlugin { }); } - private registerFilterAttribute( - styleAttributeService: IStyleAttributeService, - ) { - styleAttributeService.registerStyleAttribute({ - name: 'filter', - type: AttributeType.Attribute, - descriptor: { - name: 'filter', - buffer: { - // give the WebGL driver a hint that this buffer may change - usage: gl.DYNAMIC_DRAW, - data: [], - type: gl.FLOAT, - }, - size: 1, - update: (feature: IEncodeFeature) => { - const { filter } = feature; - return filter ? [1] : [0]; - }, - }, - }); - } - private registerColorAttribute( styleAttributeService: IStyleAttributeService, ) { @@ -104,6 +83,7 @@ export default class RegisterStyleAttributePlugin implements ILayerPlugin { type: AttributeType.Attribute, descriptor: { name: 'a_Color', + shaderLocation: ShaderLocation.COLOR, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.DYNAMIC_DRAW, @@ -128,6 +108,7 @@ export default class RegisterStyleAttributePlugin implements ILayerPlugin { type: AttributeType.Attribute, descriptor: { name: 'a_vertexId', + shaderLocation: ShaderLocation.VERTEX_ID, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.DYNAMIC_DRAW, diff --git a/packages/layers/src/plugins/ShaderUniformPlugin.ts b/packages/layers/src/plugins/ShaderUniformPlugin.ts index 9bae3c95cd..c5d0a88002 100644 --- a/packages/layers/src/plugins/ShaderUniformPlugin.ts +++ b/packages/layers/src/plugins/ShaderUniformPlugin.ts @@ -1,10 +1,12 @@ import { CameraUniform, CoordinateUniform, + IBuffer, ICameraService, ICoordinateSystemService, ILayer, ILayerPlugin, + ILayerService, IMapService, IRendererService, TYPES, @@ -33,11 +35,25 @@ export default class ShaderUniformPlugin implements ILayerPlugin { @inject(TYPES.IMapService) private readonly mapService: IMapService; + @inject(TYPES.ILayerService) + private readonly layerService: ILayerService; + public apply(layer: ILayer) { const version = this.mapService.version; let mvp = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]; // default matrix (for gaode2.x) - let sceneCenterMercator = [0, 0]; + let sceneCenterMercator: [number, number] = [0, 0]; + + let uniformBuffer: IBuffer; + if (!this.rendererService.uniformBuffers[0]) { + // Create a Uniform Buffer Object(UBO). + uniformBuffer = this.rendererService.createBuffer({ + data: new Float32Array(16 * 5 + 4 * 6 + 4), + isUBO: true, + }); + this.rendererService.uniformBuffers[0] = uniformBuffer; + } + layer.hooks.beforeRender.tap('ShaderUniformPlugin', () => { // @ts-ignore const offset = layer.getLayerConfig().tileOrigin; @@ -54,47 +70,31 @@ export default class ShaderUniformPlugin implements ILayerPlugin { } const { width, height } = this.rendererService.getViewportSize(); + + const { data, uniforms } = this.generateUBO( + mvp, + sceneCenterMercator, + width, + height, + ); + + if (this.layerService.alreadyInRendering && uniformBuffer) { + // Update only once since all models can share one UBO. + uniformBuffer.subData({ + offset: 0, + data, + }); + } + // For WebGL1. regl layer.models.forEach((model) => { model.addUniforms({ - // 相机参数,包含 VP 矩阵、缩放等级 - [CameraUniform.ProjectionMatrix]: - this.cameraService.getProjectionMatrix(), - [CameraUniform.ViewMatrix]: this.cameraService.getViewMatrix(), - [CameraUniform.ViewProjectionMatrix]: - this.cameraService.getViewProjectionMatrix(), - [CameraUniform.Zoom]: this.cameraService.getZoom(), - [CameraUniform.ZoomScale]: this.cameraService.getZoomScale(), - [CameraUniform.FocalDistance]: this.cameraService.getFocalDistance(), - [CameraUniform.CameraPosition]: - this.cameraService.getCameraPosition(), - // 坐标系参数 - [CoordinateUniform.CoordinateSystem]: - this.coordinateSystemService.getCoordinateSystem(), - [CoordinateUniform.ViewportCenter]: - this.coordinateSystemService.getViewportCenter(), - [CoordinateUniform.ViewportCenterProjection]: - this.coordinateSystemService.getViewportCenterProjection(), - [CoordinateUniform.PixelsPerDegree]: - this.coordinateSystemService.getPixelsPerDegree(), - [CoordinateUniform.PixelsPerDegree2]: - this.coordinateSystemService.getPixelsPerDegree2(), - [CoordinateUniform.PixelsPerMeter]: - this.coordinateSystemService.getPixelsPerMeter(), - // 坐标系是高德2.0的时候单独计算 - [CoordinateUniform.Mvp]: mvp, - u_sceneCenterMercator: sceneCenterMercator, - // 其他参数,例如视口大小、DPR 等 - u_ViewportSize: [width, height], - u_ModelMatrix: this.cameraService.getModelMatrix(), - u_DevicePixelRatio: window.devicePixelRatio, - // u_ModelMatrix: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + ...uniforms, + // TODO: move these 2 uniforms to PixelPickingPlugin u_PickingBuffer: layer.getLayerConfig().pickingBuffer || 0, // Tip: 当前地图是否在拖动 u_shaderPick: Number(layer.getShaderPickStat()), }); }); - - // TODO:脏检查,决定是否需要渲染 }); } @@ -110,4 +110,82 @@ export default class ShaderUniformPlugin implements ILayerPlugin { this.mapService.setCoordCenter(layer.coordCenter); } } + + private generateUBO( + u_Mvp: number[], + sceneCenterMercator: [number, number], + width: number, + height: number, + ) { + const u_ProjectionMatrix = this.cameraService.getProjectionMatrix(); + const u_ViewMatrix = this.cameraService.getViewMatrix(); + const u_ViewProjectionMatrix = this.cameraService.getViewProjectionMatrix(); + const u_ModelMatrix = this.cameraService.getModelMatrix(); + const u_ViewportCenterProjection = + this.coordinateSystemService.getViewportCenterProjection(); + const u_PixelsPerDegree = this.coordinateSystemService.getPixelsPerDegree(); + const u_Zoom = this.cameraService.getZoom(); + const u_PixelsPerDegree2 = + this.coordinateSystemService.getPixelsPerDegree2(); + const u_ZoomScale = this.cameraService.getZoomScale(); + const u_PixelsPerMeter = this.coordinateSystemService.getPixelsPerMeter(); + const u_CoordinateSystem = + this.coordinateSystemService.getCoordinateSystem(); + const u_CameraPosition = this.cameraService.getCameraPosition(); + const u_DevicePixelRatio = window.devicePixelRatio; + const u_ViewportCenter = this.coordinateSystemService.getViewportCenter(); + const u_ViewportSize = [width, height]; + const u_FocalDistance = this.cameraService.getFocalDistance(); + + const data: number[] = [ + ...u_ViewMatrix, // 16 + ...u_ProjectionMatrix, // 16 + ...u_ViewProjectionMatrix, // 16 + ...u_ModelMatrix, // 16 + ...u_Mvp, // 16 + ...u_ViewportCenterProjection, // 4 + ...u_PixelsPerDegree, // 4 + u_Zoom, + ...u_PixelsPerDegree2, // 4 + u_ZoomScale, + ...u_PixelsPerMeter, // 4 + u_CoordinateSystem, + ...u_CameraPosition, // 4 + u_DevicePixelRatio, + ...u_ViewportCenter, // 4 + ...u_ViewportSize, // 2 + ...sceneCenterMercator, // 2 + u_FocalDistance, // 1 + 0, + ]; + + return { + data, + uniforms: { + // 相机参数,包含 VP 矩阵、缩放等级 + [CameraUniform.ProjectionMatrix]: u_ProjectionMatrix, + [CameraUniform.ViewMatrix]: u_ViewMatrix, + [CameraUniform.ViewProjectionMatrix]: u_ViewProjectionMatrix, + [CameraUniform.Zoom]: u_Zoom, + [CameraUniform.ZoomScale]: u_ZoomScale, + [CameraUniform.FocalDistance]: u_FocalDistance, + [CameraUniform.CameraPosition]: u_CameraPosition, + // 坐标系参数 + [CoordinateUniform.CoordinateSystem]: u_CoordinateSystem, + [CoordinateUniform.ViewportCenter]: u_ViewportCenter, + [CoordinateUniform.ViewportCenterProjection]: + u_ViewportCenterProjection, + [CoordinateUniform.PixelsPerDegree]: u_PixelsPerDegree, + [CoordinateUniform.PixelsPerDegree2]: u_PixelsPerDegree2, + [CoordinateUniform.PixelsPerMeter]: u_PixelsPerMeter, + // 坐标系是高德2.0的时候单独计算 + [CoordinateUniform.Mvp]: u_Mvp, + u_sceneCenterMercator: sceneCenterMercator, + // 其他参数,例如视口大小、DPR 等 + u_ViewportSize: u_ViewportSize, + u_ModelMatrix, + u_DevicePixelRatio: u_DevicePixelRatio, + }, + }; + } } diff --git a/packages/layers/src/point/index.ts b/packages/layers/src/point/index.ts index c112197336..40f91bb472 100644 --- a/packages/layers/src/point/index.ts +++ b/packages/layers/src/point/index.ts @@ -6,9 +6,9 @@ import PointModels, { PointType } from './models/index'; export default class PointLayer extends BaseLayer { public type: string = 'PointLayer'; public enableShaderEncodeStyles = [ - 'opacity', - 'offsets', 'stroke', + 'offsets', + 'opacity', 'rotation', ]; public enableDataEncodeStyles = ['textOffset', 'textAnchor']; diff --git a/packages/layers/src/point/models/fill.ts b/packages/layers/src/point/models/fill.ts index 64a7dd597a..7a23635174 100644 --- a/packages/layers/src/point/models/fill.ts +++ b/packages/layers/src/point/models/fill.ts @@ -11,6 +11,7 @@ import { } from '@antv/l7-core'; import { PointFillTriangulation } from '@antv/l7-utils'; import BaseModel from '../../core/BaseModel'; +import { ShaderLocation } from '../../core/CommonStyleAttribute'; import { IPointLayerStyleOptions, SizeUnitType } from '../../core/interface'; // animate pointLayer shader - support animate import waveFillFrag from '../shaders/animate/wave_frag.glsl'; @@ -29,7 +30,8 @@ export default class FillModel extends BaseModel { heightfixed = false, unit = 'pixel', } = this.layer.getLayerConfig() as IPointLayerStyleOptions; - return { + + const commonIniform = { u_blur_height_fixed: [blur, Number(raisingHeight), Number(heightfixed)], u_additive: blend === 'additive' ? 1.0 : 0.0, u_stroke_opacity: strokeOpacity, @@ -37,6 +39,33 @@ export default class FillModel extends BaseModel { u_size_unit: SizeUnitType[unit] as SizeUnitType, ...this.getStyleAttribute(), }; + + const attributes = this.getStyleAttribute(); + this.uniformBuffers[0].subData({ + offset: 0, + data: new Uint8Array( + new Float32Array([ + ...attributes.u_stroke, + ...attributes.u_offsets, + attributes.u_opacity, + attributes.u_rotation, + ]).buffer, + ), + }); + + this.uniformBuffers[1].subData({ + offset: 0, + data: new Uint8Array( + new Float32Array([ + ...commonIniform.u_blur_height_fixed, + commonIniform.u_stroke_width, + commonIniform.u_stroke_opacity, + commonIniform.u_additive, + commonIniform.u_size_unit, + ]).buffer, + ), + }); + return commonIniform; } public getAnimateUniforms(): IModelUniform { const { animateOption = { enable: false } } = @@ -70,6 +99,17 @@ export default class FillModel extends BaseModel { >; const { frag, vert, type } = this.getShaders(animateOption); this.layer.triangulation = PointFillTriangulation; + const attributeUniformBuffer = this.rendererService.createBuffer({ + data: new Float32Array(4 + 2 + 1 + 1), + isUBO: true, + }); + + const commonUniforms = this.rendererService.createBuffer({ + data: new Float32Array(8), + isUBO: true, + }); + + this.uniformBuffers.push(attributeUniformBuffer, commonUniforms); const model = await this.layer.buildLayerModel({ moduleName: type, vertexShader: vert, @@ -127,6 +167,7 @@ export default class FillModel extends BaseModel { type: AttributeType.Attribute, descriptor: { name: 'a_Extrude', + shaderLocation: ShaderLocation.EXTRUDE, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.DYNAMIC_DRAW, @@ -157,6 +198,7 @@ export default class FillModel extends BaseModel { type: AttributeType.Attribute, descriptor: { name: 'a_Size', + shaderLocation: ShaderLocation.SIZE, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.DYNAMIC_DRAW, @@ -177,6 +219,7 @@ export default class FillModel extends BaseModel { type: AttributeType.Attribute, descriptor: { name: 'a_Shape', + shaderLocation: ShaderLocation.SHAPE, buffer: { // give the WebGL driver a hint that this buffer may change usage: gl.DYNAMIC_DRAW, diff --git a/packages/layers/src/point/models/normal.ts b/packages/layers/src/point/models/normal.ts index 4b9e424c1c..aae3839463 100644 --- a/packages/layers/src/point/models/normal.ts +++ b/packages/layers/src/point/models/normal.ts @@ -5,12 +5,11 @@ import { IModel, IModelUniform, } from '@antv/l7-core'; -import { lodashUtil } from '@antv/l7-utils'; import BaseModel from '../../core/BaseModel'; +import { ShaderLocation } from '../../core/CommonStyleAttribute'; import { IPointLayerStyleOptions } from '../../core/interface'; import normalFrag from '../shaders/normal_frag.glsl'; import normalVert from '../shaders/normal_vert.glsl'; -const { isNumber } = lodashUtil; export function PointTriangulation(feature: IEncodeFeature) { const coordinates = feature.coordinates as number[]; @@ -28,11 +27,32 @@ export default class NormalModel extends BaseModel { }; } public getUninforms(): IModelUniform { - const { opacity = 1 } = - this.layer.getLayerConfig() as IPointLayerStyleOptions; + const attributes = this.getStyleAttribute(); + // FIXME: No need to update each frame + this.uniformBuffers[0].subData({ + offset: 0, + data: new Uint8Array( + new Float32Array([ + ...attributes.u_stroke, + ...attributes.u_offsets, + attributes.u_opacity, + attributes.u_rotation, + ]).buffer, + ), + }); + + this.uniformBuffers[1].subData({ + offset: 0, + data: new Uint8Array( + new Float32Array([0.5 + ]).buffer, + ) + }); + return { - ...this.getStyleAttribute(), + u_size_scale: 0.5, + ...attributes, }; } @@ -43,6 +63,17 @@ export default class NormalModel extends BaseModel { public async buildModels(): Promise { this.layer.triangulation = PointTriangulation; + const uniformBuffer = this.rendererService.createBuffer({ + data: new Float32Array(4 + 2 + 1 + 1), + isUBO: true, + }); + + const commonBuffer = this.rendererService.createBuffer({ + data: new Float32Array(4), + isUBO: true, + }); + + this.uniformBuffers.push(uniformBuffer,commonBuffer); const model = await this.layer.buildLayerModel({ moduleName: 'pointNormal', vertexShader: normalVert, @@ -67,6 +98,7 @@ export default class NormalModel extends BaseModel { type: AttributeType.Attribute, descriptor: { name: 'a_Size', + shaderLocation: ShaderLocation.SIZE, buffer: { usage: gl.DYNAMIC_DRAW, data: [], diff --git a/packages/layers/src/point/shaders/fill_frag.glsl b/packages/layers/src/point/shaders/fill_frag.glsl index 8a5e0ec075..33cca4b076 100644 --- a/packages/layers/src/point/shaders/fill_frag.glsl +++ b/packages/layers/src/point/shaders/fill_frag.glsl @@ -1,16 +1,22 @@ -uniform float u_additive; -uniform float u_stroke_opacity : 1; -uniform float u_stroke_width : 2; -varying vec4 v_data; -varying vec4 v_color; -varying float v_radius; -varying vec4 v_stroke; +layout(std140) uniform commonUniforms { + vec3 u_blur_height_fixed; + float u_stroke_width; + float u_additive; + float u_stroke_opacity; + float u_size_unit; +}; +in vec4 v_color; +in vec4 v_stroke; +in vec4 v_data; +in float v_radius; +#pragma include "projection" #pragma include "sdf_2d" #pragma include "picking" +out vec4 outputColor; void main() { int shape = int(floor(v_data.w + 0.5)); @@ -58,20 +64,20 @@ void main() { ); if(u_stroke_width < 0.01) { - gl_FragColor = v_color; + outputColor = v_color; } else { - gl_FragColor = mix(v_color, v_stroke * u_stroke_opacity, color_t); + outputColor = mix(v_color, v_stroke * u_stroke_opacity, color_t); } if(u_additive > 0.0) { - gl_FragColor *= opacity_t; - gl_FragColor = filterColorAlpha(gl_FragColor, gl_FragColor.a); + outputColor *= opacity_t; + outputColor = filterColorAlpha(outputColor, outputColor.a); } else { - gl_FragColor.a *= opacity_t; - gl_FragColor = filterColor(gl_FragColor); + outputColor.a *= opacity_t; + outputColor = filterColor(outputColor); } // 作为 mask 模板时需要丢弃透明的像素 - if(gl_FragColor.a < 0.01) { + if(outputColor.a < 0.01) { discard; } } diff --git a/packages/layers/src/point/shaders/fill_vert.glsl b/packages/layers/src/point/shaders/fill_vert.glsl index 74dd1ff08c..5cff862dd6 100644 --- a/packages/layers/src/point/shaders/fill_vert.glsl +++ b/packages/layers/src/point/shaders/fill_vert.glsl @@ -1,25 +1,26 @@ -attribute vec4 a_Color; -attribute vec3 a_Position; -attribute vec3 a_Extrude; -attribute float a_Size; -attribute float a_Shape; -uniform mat4 u_ModelMatrix; - -uniform int u_size_unit; - -varying vec4 v_data; -varying vec4 v_color; -varying float v_radius; -varying vec4 v_stroke; -uniform float u_stroke_width: 2; -uniform vec3 u_blur_height_fixed: [0, 0, 0]; - +layout(location = 0) in vec3 a_Position; +layout(location = 1) in vec4 a_Color; +layout(location = 9) in float a_Size; +layout(location = 11) in vec3 a_Extrude; +layout(location = 10) in float a_Shape; + +layout(std140) uniform commonUniforms { + vec3 u_blur_height_fixed; + float u_stroke_width; + float u_additive; + float u_stroke_opacity; + float u_size_unit; +}; + +out vec4 v_color; +out vec4 v_stroke; +out vec4 v_data; +out float v_radius; #pragma include "projection" #pragma include "picking" #pragma include "rotation_2d" - void main() { // 透明度计算 v_stroke = stroke; @@ -37,7 +38,7 @@ void main() { // unpack color(vec2) v_color = vec4(a_Color.xyz, a_Color.w * opacity); - if(u_size_unit == 1) { + if(u_size_unit == 1.0) { newSize = newSize * u_PixelsPerMeter.z; } diff --git a/packages/layers/src/point/shaders/normal_frag.glsl b/packages/layers/src/point/shaders/normal_frag.glsl index 0bb78f16c0..b465f61595 100644 --- a/packages/layers/src/point/shaders/normal_frag.glsl +++ b/packages/layers/src/point/shaders/normal_frag.glsl @@ -1,4 +1,5 @@ -varying vec4 v_color; +in vec4 v_color; +out vec4 outputColor; void main() { - gl_FragColor = v_color; -} + outputColor = v_color; +} \ No newline at end of file diff --git a/packages/layers/src/point/shaders/normal_vert.glsl b/packages/layers/src/point/shaders/normal_vert.glsl index 0a133c04bf..e7a784ed18 100644 --- a/packages/layers/src/point/shaders/normal_vert.glsl +++ b/packages/layers/src/point/shaders/normal_vert.glsl @@ -1,11 +1,12 @@ +layout(location = 0) in vec3 a_Position; +layout(location = 1) in vec4 a_Color; +layout(location = 9) in float a_Size; -attribute vec3 a_Position; -uniform mat4 u_ModelMatrix; +layout(std140) uniform u_Common { + float u_size_scale; +}; -attribute float a_Size; -attribute vec4 a_Color; - -varying vec4 v_color; +out vec4 v_color; #pragma include "projection" #pragma include "project" @@ -13,12 +14,12 @@ varying vec4 v_color; void main() { v_color = vec4(a_Color.xyz, a_Color.w * opacity); - if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x - gl_Position = u_Mvp * vec4(a_Position.xy, a_Position.z, 1.0); + if (u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x + gl_Position = u_Mvp * vec4(a_Position, 1.0); } else { - vec4 project_pos = project_position(vec4(a_Position, 1.0)) + vec4(a_Size / 2.,-a_Size /2.,0.,0.); - gl_Position = project_common_position_to_clipspace(vec4(vec2(project_pos.xy),project_pos.z,project_pos.w)); + vec4 project_pos = project_position(vec4(a_Position, 1.0)) + vec4(a_Size / 2., -a_Size /2., 0., 0.); + gl_Position = project_common_position_to_clipspace(project_pos); } - gl_PointSize = a_Size * 2.0 * u_DevicePixelRatio; + gl_PointSize = a_Size * u_size_scale * 2.0 * u_DevicePixelRatio; } diff --git a/packages/renderer/package.json b/packages/renderer/package.json index c7db692cad..728ebf6db8 100644 --- a/packages/renderer/package.json +++ b/packages/renderer/package.json @@ -2,10 +2,12 @@ "name": "@antv/l7-renderer", "version": "2.19.10", "description": "", + "license": "ISC", + "author": "xiaoiver", + "sideEffects": false, "main": "lib/index.js", "module": "es/index.js", "types": "es/index.d.ts", - "sideEffects": false, "files": [ "lib", "es", @@ -13,31 +15,29 @@ ], "scripts": { "tsc": "tsc --project tsconfig.build.json", - "clean": "rimraf dist; rimraf es; rimraf lib;", "build": "father build", "build:cjs": "BABEL_ENV=cjs babel src --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments", "build:esm": "BABEL_ENV=esm babel src --root-mode upward --out-dir es --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments", - "watch": "BABEL_ENV=cjs babel src --watch --root-mode upward --out-dir lib --source-maps --extensions .ts,.tsx --delete-dir-on-start --no-comments", + "clean": "rimraf dist; rimraf es; rimraf lib;", "sync": "tnpm sync", "test": "umi-test --passWithNoTests", "test-live": "umi-test --watch" }, - "author": "xiaoiver", - "license": "ISC", - "devDependencies": { - "@antv/l7-test-utils": "2.19.10", - "gl": "^5.0.3" - }, "dependencies": { "@antv/l7-core": "2.19.10", "@antv/l7-utils": "2.19.10", "@babel/runtime": "^7.7.7", "inversify": "^5.0.1", "reflect-metadata": "^0.1.13", + "@antv/g-device-api":"^1.3.6", "regl": "1.7.0" }, - "gitHead": "684ba4eb806a798713496d3fc0b4d1e17517dc31", + "devDependencies": { + "@antv/l7-test-utils": "2.19.10", + "gl": "^6.0.2" + }, "publishConfig": { "access": "public" - } + }, + "gitHead": "684ba4eb806a798713496d3fc0b4d1e17517dc31" } diff --git a/packages/renderer/src/device/DeviceAttribute.ts b/packages/renderer/src/device/DeviceAttribute.ts new file mode 100644 index 0000000000..4a0009dc88 --- /dev/null +++ b/packages/renderer/src/device/DeviceAttribute.ts @@ -0,0 +1,72 @@ +import { Buffer, Device } from '@antv/g-device-api'; +import { + IAttribute, + IAttributeInitializationOptions, + IBuffer, +} from '@antv/l7-core'; +import DeviceBuffer from './DeviceBuffer'; + +interface AttributeConfig { + shaderLocation?: number; + /** A REGLBuffer wrapping the buffer object. (Default: null) */ + buffer?: Buffer; + /** The offset of the vertexAttribPointer in bytes. (Default: 0) */ + offset?: number | undefined; + /** The stride of the vertexAttribPointer in bytes. (Default: 0) */ + stride?: number | undefined; + /** Whether the pointer is normalized. (Default: false) */ + normalized?: boolean; + /** The size of the vertex attribute. (Default: Inferred from shader) */ + size?: number | undefined; + /** Sets gl.vertexAttribDivisorANGLE. Only supported if the ANGLE_instanced_arrays extension is available. (Default: 0) */ + divisor?: number | undefined; + /** Data type for attribute */ + type?: 'uint8' | 'uint16' | 'uint32' | 'float' | 'int8' | 'int16' | 'int32'; +} + +export default class DeviceAttribute implements IAttribute { + private attribute: AttributeConfig; + private buffer: IBuffer; + + constructor(device: Device, options: IAttributeInitializationOptions) { + const { + buffer, + offset, + stride, + normalized, + size, + divisor, + shaderLocation, + } = options; + this.buffer = buffer; + this.attribute = { + shaderLocation, + buffer: (buffer as DeviceBuffer).get(), + offset: offset || 0, + stride: stride || 0, + normalized: normalized || false, + divisor: divisor || 0, + }; + + if (size) { + this.attribute.size = size; + } + } + + get() { + return this.buffer; + } + + updateBuffer(options: { + // 用于替换的数据 + data: number[] | number[][] | Uint8Array | Uint16Array | Uint32Array; + // 原 Buffer 替换位置,单位为 byte + offset: number; + }) { + this.buffer.subData(options); + } + + destroy() { + this.buffer.destroy(); + } +} diff --git a/packages/renderer/src/device/DeviceBuffer.ts b/packages/renderer/src/device/DeviceBuffer.ts new file mode 100644 index 0000000000..31cb056587 --- /dev/null +++ b/packages/renderer/src/device/DeviceBuffer.ts @@ -0,0 +1,63 @@ +import { Buffer, BufferUsage, Device } from '@antv/g-device-api'; +import { IBuffer, IBufferInitializationOptions, gl } from '@antv/l7-core'; +import { hintMap, typedArrayCtorMap } from './constants'; +import { TypedArray, isTypedArray } from './utils/typedarray'; + +/** + * Use Buffer from @antv/g-device-api + */ +export default class DeviceBuffer implements IBuffer { + private buffer: Buffer; + + private isDestroyed: boolean = false; + private type; + private size: number; + + constructor(device: Device, options: IBufferInitializationOptions) { + const { data, usage, type, isUBO } = options; + + let typed: TypedArray; + if (isTypedArray(data)) { + typed = data; + } else { + typed = new typedArrayCtorMap[this.type || gl.FLOAT](data as number[]); + } + + this.type = type; + this.size = typed.byteLength; + + // @see https://www.npmjs.com/package/@antv/g-device-api#createBuffer + this.buffer = device.createBuffer({ + viewOrSize: typed, + usage: isUBO ? BufferUsage.UNIFORM : BufferUsage.VERTEX, + hint: hintMap[usage || gl.STATIC_DRAW], + }); + } + + get() { + return this.buffer; + } + + destroy() { + if (!this.isDestroyed) { + this.buffer.destroy(); + } + this.isDestroyed = true; + } + + subData({ + data, + offset, + }: { + data: number[] | number[][] | Uint8Array | Uint16Array | Uint32Array; + offset: number; + }) { + let typed: TypedArray; + if (isTypedArray(data)) { + typed = data; + } else { + typed = new typedArrayCtorMap[this.type || gl.FLOAT](data as number[]); + } + this.buffer.setSubData(offset, new Uint8Array(typed.buffer)); + } +} diff --git a/packages/renderer/src/device/DeviceElements.ts b/packages/renderer/src/device/DeviceElements.ts new file mode 100644 index 0000000000..8d1d5a0a1a --- /dev/null +++ b/packages/renderer/src/device/DeviceElements.ts @@ -0,0 +1,55 @@ +import { Buffer, BufferUsage, Device } from '@antv/g-device-api'; +import { IElements, IElementsInitializationOptions, gl } from '@antv/l7-core'; +import { typedArrayCtorMap } from './constants'; +import { TypedArray, isTypedArray } from './utils/typedarray'; + +export default class DeviceElements implements IElements { + private indexBuffer: Buffer; + private type; + private count: number; + + constructor(device: Device, options: IElementsInitializationOptions) { + const { data, type, count = 0 } = options; + + let typed: TypedArray; + if (isTypedArray(data)) { + typed = data; + } else { + typed = new typedArrayCtorMap[this.type || gl.UNSIGNED_INT]( + data as number[], + ); + } + + this.type = type; + this.count = count; + + this.indexBuffer = device.createBuffer({ + viewOrSize: typed, + usage: BufferUsage.INDEX, + }); + } + + public get() { + return this.indexBuffer; + } + + public subData({ + data, + }: { + data: number[] | number[][] | Uint8Array | Uint16Array | Uint32Array; + }) { + let typed: TypedArray; + if (isTypedArray(data)) { + typed = data; + } else { + typed = new typedArrayCtorMap[this.type || gl.UNSIGNED_INT]( + data as number[], + ); + } + this.indexBuffer.setSubData(0, new Uint8Array(typed.buffer)); + } + + public destroy() { + this.indexBuffer.destroy(); + } +} diff --git a/packages/renderer/src/device/DeviceFramebuffer.ts b/packages/renderer/src/device/DeviceFramebuffer.ts new file mode 100644 index 0000000000..653d8a79bb --- /dev/null +++ b/packages/renderer/src/device/DeviceFramebuffer.ts @@ -0,0 +1,56 @@ +import { Device, Format, RenderTarget, Texture } from '@antv/g-device-api'; +import { IFramebuffer, IFramebufferInitializationOptions } from '@antv/l7-core'; +import DeviceTexture2D, { isTexture2D } from './DeviceTexture2D'; + +export default class DeviceFramebuffer implements IFramebuffer { + private renderTarget: RenderTarget; + private width: number; + private height: number; + + constructor( + private device: Device, + options: IFramebufferInitializationOptions, + ) { + // TODO: depth + const { width, height, color } = options; + + if (isTexture2D(color)) { + this.renderTarget = device.createRenderTargetFromTexture( + color.get() as Texture, + ); + this.width = (color as DeviceTexture2D)['width']; + this.height = (color as DeviceTexture2D)['height']; + } else if (width && height) { + this.renderTarget = device.createRenderTarget({ + format: Format.U8_RGBA_RT, + width, + height, + }); + this.width = width; + this.height = height; + } + } + + public get() { + return this.renderTarget; + } + + public destroy() { + this.renderTarget.destroy(); + } + + public resize({ width, height }: { width: number; height: number }) { + if (this.width !== width || this.height !== height) { + if (this.renderTarget) { + this.renderTarget.destroy(); + } + this.renderTarget = this.device.createRenderTarget({ + format: Format.U8_RGBA_RT, + width, + height, + }); + this.width = width; + this.height = height; + } + } +} diff --git a/packages/renderer/src/device/DeviceModel.ts b/packages/renderer/src/device/DeviceModel.ts new file mode 100644 index 0000000000..0e970cd6be --- /dev/null +++ b/packages/renderer/src/device/DeviceModel.ts @@ -0,0 +1,474 @@ +import { + Bindings, + BlendFactor, + BlendMode, + Buffer, + ChannelWriteMask, + CompareFunction, + CullMode, + Device, + Format, + InputLayout, + InputLayoutBufferDescriptor, + Program, + RenderPipeline, + TransparentBlack, + VertexStepMode, +} from '@antv/g-device-api'; +import { + IModel, + IModelDrawOptions, + IModelInitializationOptions, + IUniform, + gl, +} from '@antv/l7-core'; +import { lodashUtil } from '@antv/l7-utils'; +import DeviceAttribute from './DeviceAttribute'; +import DeviceBuffer from './DeviceBuffer'; +import DeviceElements from './DeviceElements'; +import { + blendEquationMap, + blendFuncMap, + cullFaceMap, + depthFuncMap, + primitiveMap, + sizeFormatMap, +} from './constants'; +const { isPlainObject, isTypedArray } = lodashUtil; + +export default class DeviceModel implements IModel { + private destroyed: boolean = false; + private uniforms: { + [key: string]: IUniform; + } = {}; + + private program: Program; + private inputLayout: InputLayout; + private pipeline: RenderPipeline; + private indexBuffer: Buffer; + private vertexBuffers: Buffer[] = []; + private bindings: Bindings; + + constructor( + private device: Device, + private options: IModelInitializationOptions, + ) { + const { vs, fs, attributes, uniforms, count, elements } = options; + this.options = options; + + const program = device.createProgram({ + vertex: { + glsl: vs, + }, + fragment: { + glsl: fs, + }, + }); + this.program = program; + + // console.log(vs, fs); + + if (uniforms) { + this.uniforms = this.extractUniforms(uniforms); + } + + const vertexBufferDescriptors: InputLayoutBufferDescriptor[] = []; + + // Infer count from data if not provided. + let inferredCount = 0; + Object.keys(attributes).forEach((name: string) => { + const attribute = attributes[name] as DeviceAttribute; + + const buffer = attribute.get() as DeviceBuffer; + // Bind at each frame. + this.vertexBuffers.push(buffer.get()); + + const { + offset = 0, + stride = 0, + // TODO: normalized + size = 1, + divisor = 0, + shaderLocation = 0, + } = attribute['attribute']; + + vertexBufferDescriptors.push({ + arrayStride: stride || size * 4, + // TODO: L7 hasn't use instanced array for now. + stepMode: VertexStepMode.VERTEX, + attributes: [ + { + format: sizeFormatMap[size], + shaderLocation, + offset, + divisor, + }, + ], + }); + + inferredCount = buffer['size'] / size; + }); + + if (!count) { + this.options.count = inferredCount; + } + + if (elements) { + this.indexBuffer = (elements as DeviceElements).get(); + } + + const inputLayout = device.createInputLayout({ + vertexBufferDescriptors, + indexBufferFormat: elements ? Format.U32_R : null, + program, + }); + this.inputLayout = inputLayout; + + this.pipeline = this.createPipeline(options); + } + + private createPipeline(options: IModelInitializationOptions) { + const { primitive = gl.TRIANGLES, depth, cull, blend } = options; + + const depthParams = this.initDepthDrawParams({ depth }); + const depthEnabled = !!(depthParams && depthParams.enable); + const cullParams = this.initCullDrawParams({ cull }); + const cullEnabled = !!(cullParams && cullParams.enable); + const blendParams = this.getBlendDrawParams({ blend }); + const blendEnabled = !!(blendParams && blendParams.enable); + + return this.device.createRenderPipeline({ + inputLayout: this.inputLayout, + program: this.program, + topology: primitiveMap[primitive], + colorAttachmentFormats: [Format.U8_RGBA_RT], + depthStencilAttachmentFormat: Format.D24_S8, + megaStateDescriptor: { + attachmentsState: [ + { + channelWriteMask: ChannelWriteMask.ALL, + rgbBlendState: { + blendMode: + (blendEnabled && blendParams.equation.rgb) || BlendMode.ADD, + blendSrcFactor: + (blendEnabled && blendParams.func.srcRGB) || + BlendFactor.SRC_ALPHA, + blendDstFactor: + (blendEnabled && blendParams.func.dstRGB) || + BlendFactor.ONE_MINUS_SRC_ALPHA, + }, + alphaBlendState: { + blendMode: + (blendEnabled && blendParams.equation.alpha) || BlendMode.ADD, + blendSrcFactor: + (blendEnabled && blendParams.func.srcAlpha) || BlendFactor.ONE, + blendDstFactor: + (blendEnabled && blendParams.func.dstAlpha) || + BlendFactor.ONE_MINUS_SRC_ALPHA, + }, + }, + ], + blendConstant: TransparentBlack, + depthWrite: depthEnabled, + depthCompare: + (depthEnabled && depthParams.func) || CompareFunction.LESS, + cullMode: (cullEnabled && cullParams.face) || CullMode.NONE, + stencilWrite: false, + }, + }); + } + + updateAttributesAndElements() // elements: IElements, // attributes: { [key: string]: IAttribute }, + { + // TODO: implement + } + + updateAttributes() { // attributes: { [key: string]: IAttribute } + // TODO: implement + // Object.keys(attributes).forEach((name: string) => { + // const attribute = attributes[name] as DeviceAttribute; + // attribute.updateBuffer(); + // }); + } + + addUniforms(uniforms: { [key: string]: IUniform }) { + this.uniforms = { + ...this.uniforms, + ...this.extractUniforms(uniforms), + }; + } + + draw( + options: IModelDrawOptions, + // pick?: boolean + ) { + const mergedOptions = { + ...this.options, + ...options, + }; + const { + count = 0, + instances, + elements, + uniforms = {}, + uniformBuffers, + textures, + } = mergedOptions; + + this.uniforms = { + ...this.uniforms, + ...this.extractUniforms(uniforms), + }; + + // @ts-ignore + const { width, height } = this.device; + + // @ts-ignore + // const renderTarget = this.device.currentFramebuffer; + // const { onscreen } = renderTarget + + // @ts-ignore + const renderPass = this.device.renderPass; + // TODO: Recreate pipeline only when blend / cull changed. + this.pipeline = this.createPipeline(mergedOptions); + renderPass.setPipeline(this.pipeline); + renderPass.setVertexInput( + this.inputLayout, + this.vertexBuffers.map((buffer) => ({ + buffer, + })), + elements + ? { + buffer: this.indexBuffer, + offset: 0, // TODO: use defaule value + } + : null, + ); + renderPass.setViewport(0, 0, width, height); + + if (uniformBuffers) { + console.log('uniformBuffers', uniformBuffers); + this.bindings = this.device.createBindings({ + pipeline: this.pipeline, + uniformBufferBindings: uniformBuffers.map((uniformBuffer, i) => { + const buffer = uniformBuffer as DeviceBuffer; + return { + binding: i, + buffer: buffer.get(), + size: buffer['size'], + }; + }), + samplerBindings: textures?.map((t: any) => ({ + texture: t['texture'], + sampler: t['sampler'], + })), + }); + } + + if (this.bindings) { + renderPass.setBindings(this.bindings); + // Compatible to WebGL1. + this.program.setUniformsLegacy(this.uniforms); + } + + if (elements) { + const indexCount = (elements as DeviceElements)['count']; + if (indexCount === 0) { + renderPass.draw(count, instances); + } else { + renderPass.drawIndexed(indexCount, instances); + } + } else { + renderPass.draw(count, instances); + } + } + + destroy() { + this.program.destroy(); + this.vertexBuffers?.forEach((buffer) => buffer.destroy()); + this.indexBuffer?.destroy(); + this.bindings?.destroy(); + this.inputLayout.destroy(); + this.pipeline.destroy(); + this.destroyed = true; + } + + private initDepthDrawParams({ + depth, + }: Pick) { + if (depth) { + return { + enable: depth.enable === undefined ? true : !!depth.enable, + mask: depth.mask === undefined ? true : !!depth.mask, + func: depthFuncMap[depth.func || gl.LESS], + range: depth.range || [0, 1], + }; + } + } + + private getBlendDrawParams({ + blend, + }: Pick) { + const { enable, func, equation, color = [0, 0, 0, 0] } = blend || {}; + return { + enable: !!enable, + func: { + srcRGB: blendFuncMap[(func && func.srcRGB) || gl.SRC_ALPHA], + srcAlpha: blendFuncMap[(func && func.srcAlpha) || gl.SRC_ALPHA], + dstRGB: blendFuncMap[(func && func.dstRGB) || gl.ONE_MINUS_SRC_ALPHA], + dstAlpha: + blendFuncMap[(func && func.dstAlpha) || gl.ONE_MINUS_SRC_ALPHA], + }, + equation: { + rgb: blendEquationMap[(equation && equation.rgb) || gl.FUNC_ADD], + alpha: blendEquationMap[(equation && equation.alpha) || gl.FUNC_ADD], + }, + color, + }; + } + + // /** + // * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#stencil + // */ + // private getStencilDrawParams({ + // stencil, + // }: Pick) { + // const { + // enable, + // mask = -1, + // func = { + // cmp: gl.ALWAYS, + // ref: 0, + // mask: -1, + // }, + // opFront = { + // fail: gl.KEEP, + // zfail: gl.KEEP, + // zpass: gl.KEEP, + // }, + // opBack = { + // fail: gl.KEEP, + // zfail: gl.KEEP, + // zpass: gl.KEEP, + // }, + // } = stencil || {}; + // return { + // enable: !!enable, + // mask, + // func: { + // ...func, + // cmp: stencilFuncMap[func.cmp], + // }, + // opFront: { + // fail: stencilOpMap[opFront.fail], + // zfail: stencilOpMap[opFront.zfail], + // zpass: stencilOpMap[opFront.zpass], + // }, + // opBack: { + // fail: stencilOpMap[opBack.fail], + // zfail: stencilOpMap[opBack.zfail], + // zpass: stencilOpMap[opBack.zpass], + // }, + // }; + // } + + // private getColorMaskDrawParams( + // { stencil }: Pick, + // pick: boolean, + // ) { + // // TODO: 重构相关参数 + // // 掩膜模式下,颜色通道全部关闭 + // const colorMask = + // stencil?.enable && stencil.opFront && !pick + // ? [false, false, false, false] + // : [true, true, true, true]; // 非掩码模式下,颜色通道全部开启 + // return colorMask; + // } + + /** + * @see https://github.com/regl-project/regl/blob/gh-pages/API.md#culling + */ + private initCullDrawParams({ + cull, + }: Pick) { + if (cull) { + const { enable, face = gl.BACK } = cull; + return { + enable: !!enable, + face: cullFaceMap[face], + }; + } + } + + /** + * 考虑结构体命名, eg: + * a: { b: 1 } -> 'a.b' + * a: [ { b: 1 } ] -> 'a[0].b' + */ + private extractUniforms(uniforms: { [key: string]: IUniform }): { + [key: string]: IUniform; + } { + const extractedUniforms = {}; + Object.keys(uniforms).forEach((uniformName) => { + this.extractUniformsRecursively( + uniformName, + uniforms[uniformName], + extractedUniforms, + '', + ); + }); + + return extractedUniforms; + } + + private extractUniformsRecursively( + uniformName: string, + uniformValue: IUniform, + uniforms: { + [key: string]: IUniform; + }, + prefix: string, + ) { + if ( + uniformValue === null || + typeof uniformValue === 'number' || // u_A: 1 + typeof uniformValue === 'boolean' || // u_A: false + (Array.isArray(uniformValue) && typeof uniformValue[0] === 'number') || // u_A: [1, 2, 3] + isTypedArray(uniformValue) || // u_A: Float32Array + // @ts-ignore + uniformValue === '' || + 'resize' in uniformValue + ) { + uniforms[`${prefix && prefix + '.'}${uniformName}`] = uniformValue; + return; + } + + // u_Struct.a.b.c + if (isPlainObject(uniformValue)) { + Object.keys(uniformValue).forEach((childName) => { + this.extractUniformsRecursively( + childName, + // @ts-ignore + uniformValue[childName], + uniforms, + `${prefix && prefix + '.'}${uniformName}`, + ); + }); + } + + // u_Struct[0].a + if (Array.isArray(uniformValue)) { + uniformValue.forEach((child, idx) => { + Object.keys(child).forEach((childName) => { + this.extractUniformsRecursively( + childName, + // @ts-ignore + child[childName], + uniforms, + `${prefix && prefix + '.'}${uniformName}[${idx}]`, + ); + }); + }); + } + } +} diff --git a/packages/renderer/src/device/DeviceTexture2D.ts b/packages/renderer/src/device/DeviceTexture2D.ts new file mode 100644 index 0000000000..acd4b1590a --- /dev/null +++ b/packages/renderer/src/device/DeviceTexture2D.ts @@ -0,0 +1,121 @@ +import { + Device, + FilterMode, + Format, + MipmapFilterMode, + Sampler, + Texture, + TextureUsage, +} from '@antv/g-device-api'; +import { ITexture2D, ITexture2DInitializationOptions, gl } from '@antv/l7-core'; +import { wrapModeMap } from './constants'; + +export function isTexture2D(t: any): t is ITexture2D { + return false; +} + +export default class DeviceTexture2D implements ITexture2D { + private texture: Texture; + private sampler: Sampler; + private width: number; + private height: number; + private isDestroy: boolean = false; + + constructor(device: Device, options: ITexture2DInitializationOptions) { + const { + data, + type = gl.UNSIGNED_BYTE, + width, + height, + flipY = false, + format = gl.RGBA, + wrapS = gl.CLAMP_TO_EDGE, + wrapT = gl.CLAMP_TO_EDGE, + // aniso = 0, + alignment = 1, + // mipmap = false, + // premultiplyAlpha = false, + // mag = gl.NEAREST, + // min = gl.NEAREST, + // colorSpace = gl.BROWSER_DEFAULT_WEBGL, + // x = 0, + // y = 0, + // copy = false, + } = options; + this.width = width; + this.height = height; + + let pixelFormat: Format = Format.U8_RGBA_RT; + if (type === gl.UNSIGNED_BYTE && format === gl.RGBA) { + pixelFormat = Format.U8_RGBA_RT; + } else if (format === gl.LUMINANCE && type === gl.FLOAT) { + pixelFormat = Format.F32_LUMINANCE; + } else if (format === gl.LUMINANCE && type === gl.UNSIGNED_BYTE) { + pixelFormat = Format.U8_LUMINANCE; + } else { + throw new Error(`create texture error, type: ${type}, format: ${format}`); + } + + // // copy pixels from current bind framebuffer + // x, + // y, + // copy, + // }; + + this.texture = device.createTexture({ + format: pixelFormat!, + width, + height, + usage: TextureUsage.SAMPLED, + pixelStore: { + unpackFlipY: flipY, + packAlignment: alignment, + }, + }); + if (data) { + // @ts-ignore + this.texture.setImageData([data]); + } + + this.sampler = device.createSampler({ + addressModeU: wrapModeMap[wrapS], + addressModeV: wrapModeMap[wrapT], + minFilter: FilterMode.POINT, // TODO: use mag & min + magFilter: FilterMode.BILINEAR, + mipmapFilter: MipmapFilterMode.NO_MIP, + lodMinClamp: 0, + lodMaxClamp: 0, + // maxAnisotropy: aniso, + }); + } + + get() { + return this.texture; + } + + update(props: any) { + const { data } = props; + this.texture.setImageData([data]); + } + + bind() { + // this.texture._texture.bind(); + } + + resize({ width, height }: { width: number; height: number }): void { + // this.texture.resize(width, height); + this.width = width; + this.height = height; + } + + getSize(): [number, number] { + return [this.width, this.height]; + } + + destroy() { + if (!this.isDestroy) { + this.texture?.destroy(); + } + this.isDestroy = true; + } +} diff --git a/packages/renderer/src/device/constants.ts b/packages/renderer/src/device/constants.ts new file mode 100644 index 0000000000..88b0fae9fd --- /dev/null +++ b/packages/renderer/src/device/constants.ts @@ -0,0 +1,129 @@ +import { + AddressMode, + BlendFactor, + BlendMode, + BufferFrequencyHint, + CompareFunction, + CullMode, + Format, + PrimitiveTopology, +} from '@antv/g-device-api'; +import { gl } from '@antv/l7-core'; +import { TypedArray } from './utils/typedarray'; + +export const typedArrayCtorMap: { + [key: string]: new (data: number[]) => TypedArray; +} = { + [gl.FLOAT]: Float32Array, + [gl.UNSIGNED_BYTE]: Uint8Array, + [gl.SHORT]: Int16Array, + [gl.UNSIGNED_SHORT]: Uint16Array, + [gl.INT]: Int32Array, + [gl.UNSIGNED_INT]: Uint32Array, +}; + +export const primitiveMap: { + [key: string]: PrimitiveTopology; +} = { + [gl.POINTS]: PrimitiveTopology.POINTS, + [gl.LINES]: PrimitiveTopology.LINES, + [gl.LINE_LOOP]: PrimitiveTopology.LINES, + [gl.LINE_STRIP]: PrimitiveTopology.LINE_STRIP, + [gl.TRIANGLES]: PrimitiveTopology.TRIANGLES, + [gl.TRIANGLE_FAN]: PrimitiveTopology.TRIANGLES, + [gl.TRIANGLE_STRIP]: PrimitiveTopology.TRIANGLE_STRIP, +}; + +export const sizeFormatMap: { + [key: number]: Format; +} = { + [1]: Format.F32_R, + [2]: Format.F32_RG, + [3]: Format.F32_RGB, + [4]: Format.F32_RGBA, +}; + +export const hintMap: { + [key: string]: BufferFrequencyHint; +} = { + [gl.STATIC_DRAW]: BufferFrequencyHint.STATIC, + [gl.DYNAMIC_DRAW]: BufferFrequencyHint.DYNAMIC, + [gl.STREAM_DRAW]: BufferFrequencyHint.DYNAMIC, +}; + +export const wrapModeMap: { + [key: string]: AddressMode; +} = { + [gl.REPEAT]: AddressMode.REPEAT, + [gl.CLAMP_TO_EDGE]: AddressMode.CLAMP_TO_EDGE, + [gl.MIRRORED_REPEAT]: AddressMode.MIRRORED_REPEAT, +}; + +export const depthFuncMap: { + [key: string]: CompareFunction; +} = { + [gl.NEVER]: CompareFunction.NEVER, + [gl.ALWAYS]: CompareFunction.ALWAYS, + [gl.LESS]: CompareFunction.LESS, + [gl.LEQUAL]: CompareFunction.LEQUAL, + [gl.GREATER]: CompareFunction.GREATER, + [gl.GEQUAL]: CompareFunction.GEQUAL, + [gl.EQUAL]: CompareFunction.EQUAL, + [gl.NOTEQUAL]: CompareFunction.NOTEQUAL, +}; + +export const cullFaceMap: { + [key: string]: CullMode; +} = { + [gl.FRONT]: CullMode.FRONT, + [gl.BACK]: CullMode.BACK, +}; + +export const blendEquationMap: { + [key: string]: BlendMode; +} = { + [gl.FUNC_ADD]: BlendMode.ADD, + [gl.MIN_EXT]: BlendMode.MIN, + [gl.MAX_EXT]: BlendMode.MAX, + [gl.FUNC_SUBTRACT]: BlendMode.SUBSTRACT, + [gl.FUNC_REVERSE_SUBTRACT]: BlendMode.REVERSE_SUBSTRACT, +}; + +export const blendFuncMap: { + [key: string]: BlendFactor; +} = { + [gl.ZERO]: BlendFactor.ZERO, + [gl.ONE]: BlendFactor.ONE, + [gl.SRC_COLOR]: BlendFactor.SRC, + [gl.ONE_MINUS_SRC_COLOR]: BlendFactor.ONE_MINUS_SRC, + [gl.SRC_ALPHA]: BlendFactor.SRC_ALPHA, + [gl.ONE_MINUS_SRC_ALPHA]: BlendFactor.ONE_MINUS_SRC_ALPHA, + [gl.DST_COLOR]: BlendFactor.DST, + [gl.ONE_MINUS_DST_COLOR]: BlendFactor.ONE_MINUS_DST, + [gl.DST_ALPHA]: BlendFactor.DST_ALPHA, + [gl.ONE_MINUS_DST_ALPHA]: BlendFactor.ONE_MINUS_DST_ALPHA, + [gl.CONSTANT_COLOR]: BlendFactor.CONST, + [gl.ONE_MINUS_CONSTANT_COLOR]: BlendFactor.ONE_MINUS_CONSTANT, + [gl.CONSTANT_ALPHA]: BlendFactor.CONST, + [gl.ONE_MINUS_CONSTANT_ALPHA]: BlendFactor.ONE_MINUS_CONSTANT, + [gl.SRC_ALPHA_SATURATE]: BlendFactor.SRC_ALPHA_SATURATE, +}; + +// export const filterMap: { +// [key: string]: FilterMode; +// } = { +// [gl.NEAREST]: 'nearest', +// [gl.LINEAR]: 'linear', +// [gl.LINEAR_MIPMAP_LINEAR]: 'mipmap', +// [gl.NEAREST_MIPMAP_LINEAR]: 'nearest mipmap linear', +// [gl.LINEAR_MIPMAP_NEAREST]: 'linear mipmap nearest', +// [gl.NEAREST_MIPMAP_NEAREST]: 'nearest mipmap nearest', +// }; + +// export const mipmapMap: { +// [key: string]: MipmapFilterMode; +// } = { +// [gl.DONT_CARE]: MipmapFilterMode, +// [gl.NICEST]: 'nice', +// [gl.FASTEST]: 'fast', +// }; diff --git a/packages/renderer/src/device/index.ts b/packages/renderer/src/device/index.ts new file mode 100644 index 0000000000..f70c306a37 --- /dev/null +++ b/packages/renderer/src/device/index.ts @@ -0,0 +1,344 @@ +import { + Device, + Format, + RenderPass, + RenderTarget, + SwapChain, + TextureUsage, + TransparentBlack, + WebGLDeviceContribution, + WebGPUDeviceContribution, +} from '@antv/g-device-api'; +import { + IAttribute, + IAttributeInitializationOptions, + IBuffer, + IBufferInitializationOptions, + IElements, + IElementsInitializationOptions, + IExtensions, + IFramebufferInitializationOptions, + IModel, + IModelInitializationOptions, + IRenderConfig, + IRendererService, + ITexture2D, + ITexture2DInitializationOptions, +} from '@antv/l7-core'; +import { injectable } from 'inversify'; +import 'reflect-metadata'; +import DeviceAttribute from './DeviceAttribute'; +import DeviceBuffer from './DeviceBuffer'; +import DeviceElements from './DeviceElements'; +import DeviceFramebuffer from './DeviceFramebuffer'; +import DeviceModel from './DeviceModel'; +import DeviceTexture2D from './DeviceTexture2D'; +import { isWebGL2 } from './utils/webgl'; + +/** + * Device API renderer + */ +@injectable() +export default class DeviceRendererService implements IRendererService { + uniformBuffers: IBuffer[] = []; + extensionObject: IExtensions; + private device: Device; + private swapChain: SwapChain; + private $container: HTMLDivElement | null; + private canvas: HTMLCanvasElement; + private width: number; + private height: number; + private isDirty: boolean; + private renderPass: RenderPass; + private renderTarget: RenderTarget; + private mainDepthRT: RenderTarget; + + async init(canvas: HTMLCanvasElement, cfg: IRenderConfig): Promise { + const { enableWebGPU, shaderCompilerPath } = cfg; + + console.log(cfg); + + // this.$container = $container; + this.canvas = canvas; + + // TODO: use antialias from cfg + const deviceContribution = enableWebGPU + ? new WebGPUDeviceContribution({ + shaderCompilerPath, + }) + : new WebGLDeviceContribution({ + // Use WebGL2 first and downgrade to WebGL1 if WebGL2 is not supported. + targets: ['webgl2', 'webgl1'], + onContextLost(e) { + console.warn('context lost', e); + }, + onContextCreationError(e) { + console.warn('context creation error', e); + }, + onContextRestored(e) { + console.warn('context restored', e); + }, + }); + + const swapChain = await deviceContribution.createSwapChain(canvas); + swapChain.configureSwapChain(canvas.width, canvas.height); + this.device = swapChain.getDevice(); + this.swapChain = swapChain; + + // Create default RT + // @ts-ignore + // this.device.onscreenFramebuffer = this.createFramebuffer({ + // width: canvas.width, + // height: canvas.height, + // }); + // // @ts-ignore + // this.device.onscreenFramebuffer.onscreen = true; + // // @ts-ignore + // this.device.currentFramebuffer = this.device.onscreenFramebuffer; + + // @ts-ignore + const gl = this.device['gl']; + this.extensionObject = { + // @ts-ignore + OES_texture_float: !isWebGL2(gl) && this.device['OES_texture_float'], + }; + + const renderTargetTexture = this.device.createTexture({ + format: Format.U8_RGBA_RT, + width: canvas.width, + height: canvas.height, + usage: TextureUsage.RENDER_TARGET, + }); + this.renderTarget = + this.device.createRenderTargetFromTexture(renderTargetTexture); + + this.mainDepthRT = this.device.createRenderTargetFromTexture( + this.device.createTexture({ + format: Format.D24_S8, + width: canvas.width, + height: canvas.height, + usage: TextureUsage.RENDER_TARGET, + }), + ); + } + + beginFrame(): void { + const onscreenTexture = this.swapChain.getOnscreenTexture(); + this.renderPass = this.device.createRenderPass({ + colorAttachment: [this.renderTarget], + // colorResolveTo: [onscreen ? onscreenTexture : onscreenTexture], + colorResolveTo: [onscreenTexture], + colorClearColor: [TransparentBlack], + depthStencilAttachment: this.mainDepthRT, + depthClearValue: 1, + }); + // @ts-ignore + this.device.renderPass = this.renderPass; + } + + endFrame(): void { + this.device.submitPass(this.renderPass); + } + + getPointSizeRange() { + // @ts-ignore + const gl = this.device['gl']; + console.log(gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)); + // FIXME: implement this method in Device API. + return gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE); + } + + public testExtension(name: string) { + // OES_texture_float + return !!this.getGLContext().getExtension(name); + } + + createModel = (options: IModelInitializationOptions): IModel => + new DeviceModel(this.device, options); + + createAttribute = (options: IAttributeInitializationOptions): IAttribute => + new DeviceAttribute(this.device, options); + + createBuffer = (options: IBufferInitializationOptions): IBuffer => + new DeviceBuffer(this.device, options); + + createElements = (options: IElementsInitializationOptions): IElements => + new DeviceElements(this.device, options); + + createTexture2D = (options: ITexture2DInitializationOptions): ITexture2D => + new DeviceTexture2D(this.device, options); + + createFramebuffer = (options: IFramebufferInitializationOptions) => + new DeviceFramebuffer(this.device, options); + + useFramebuffer = () => + // framebuffer: IFramebuffer | null, + // drawCommands: () => void, + { + // if (framebuffer == null) { + // // @ts-ignore + // this.device.currentFramebuffer = this.device.onscreenFramebuffer; + // } else { + // // @ts-ignore + // this.device.currentFramebuffer = framebuffer; + // } + // drawCommands(); + }; + + clear = () => + // options: IClearOptions + { + // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clear-the-draw-buffer + // const { color, depth, stencil, framebuffer = null } = options; + // const reglClearOptions: regl.ClearOptions = { + // color, + // depth, + // stencil, + // }; + // reglClearOptions.framebuffer = + // framebuffer === null + // ? framebuffer + // : (framebuffer as DeviceFramebuffer).get(); + // this.gl?.clear(reglClearOptions); + // TODO: clear + }; + + viewport = ({ + // x, + // y, + width, + height, + }: { + x: number; + y: number; + width: number; + height: number; + }) => { + // use WebGL context directly + // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#unsafe-escape-hatch + // this.gl._gl.viewport(x, y, width, height); + this.width = width; + this.height = height; + // Will be used in `setViewport` from RenderPass later. + // @ts-ignore + this.device.width = width; + // @ts-ignore + this.device.height = height; + + // this.gl._refresh(); + }; + + readPixels = () => + // options: IReadPixelsOptions + { + // const { framebuffer, x, y, width, height } = options; + + // const readback = this.device.createReadback(); + + // if (framebuffer) { + // readPixelsOptions.framebuffer = (framebuffer as DeviceFramebuffer).get(); + // } + // return readback.readTextureSync(null, x, y, width, height, new Uint8Array()) as Uint8Array; + return new Uint8Array(); + }; + + getViewportSize = () => { + // FIXME: add viewport size in Device API. + return { + // @ts-ignore + width: this.device.width, + // @ts-ignore + height: this.device.height, + }; + }; + + getContainer = () => { + return this.canvas?.parentElement; + }; + + getCanvas = () => { + // return this.$container?.getElementsByTagName('canvas')[0] || null; + return this.canvas; + }; + + getGLContext = () => { + // @ts-ignore + return this.device['gl'] as WebGLRenderingContext; + }; + + // TODO: 临时方法 + setState() { + // this.gl({ + // cull: { + // enable: false, + // face: 'back', + // }, + // viewport: { + // x: 0, + // y: 0, + // height: this.width, + // width: this.height, + // }, + // blend: { + // enable: true, + // equation: 'add', + // }, + // framebuffer: null, + // }); + // this.gl._refresh(); + } + + setBaseState() { + // this.gl({ + // cull: { + // enable: false, + // face: 'back', + // }, + // viewport: { + // x: 0, + // y: 0, + // height: this.width, + // width: this.height, + // }, + // blend: { + // enable: false, + // equation: 'add', + // }, + // framebuffer: null, + // }); + // this.gl._refresh(); + } + setCustomLayerDefaults() { + // const gl = this.getGLContext(); + // gl.disable(gl.CULL_FACE); + } + + setDirty(flag: boolean): void { + this.isDirty = flag; + } + + getDirty(): boolean { + return this.isDirty; + } + + destroy = () => { + // this.canvas = null 清除对 webgl 实例的引用 + // @ts-ignore + this.canvas = null; + + this.uniformBuffers?.forEach((buffer) => { + buffer.destroy(); + }); + + this.device.destroy(); + + // make sure release webgl context + // this.gl?._gl?.getExtension('WEBGL_lose_context')?.loseContext(); + + // @see https://github.com/regl-project/regl/blob/gh-pages/API.md#clean-up + // this.gl.destroy(); + + // @ts-ignore + // this.gl = null; + }; +} diff --git a/packages/renderer/src/device/utils/pipeline.ts b/packages/renderer/src/device/utils/pipeline.ts new file mode 100644 index 0000000000..38194e0881 --- /dev/null +++ b/packages/renderer/src/device/utils/pipeline.ts @@ -0,0 +1 @@ +export function pipelineEquals() {} diff --git a/packages/renderer/src/device/utils/typedarray.ts b/packages/renderer/src/device/utils/typedarray.ts new file mode 100644 index 0000000000..e580b3aafd --- /dev/null +++ b/packages/renderer/src/device/utils/typedarray.ts @@ -0,0 +1,28 @@ +const dtypes = { + '[object Int8Array]': 5120, + '[object Int16Array]': 5122, + '[object Int32Array]': 5124, + '[object Uint8Array]': 5121, + '[object Uint8ClampedArray]': 5121, + '[object Uint16Array]': 5123, + '[object Uint32Array]': 5125, + '[object Float32Array]': 5126, + '[object Float64Array]': 5121, + '[object ArrayBuffer]': 5121, +}; + +export type TypedArray = + | Int8Array + | Uint8Array + | Uint8ClampedArray + | Int16Array + | Uint16Array + | Int32Array + | Uint32Array + | Float32Array + | Float64Array; + +// eslint-disable-next-line +export function isTypedArray(x: any): x is TypedArray { + return Object.prototype.toString.call(x) in dtypes; +} diff --git a/packages/renderer/src/device/utils/webgl.ts b/packages/renderer/src/device/utils/webgl.ts new file mode 100644 index 0000000000..9f010ea55d --- /dev/null +++ b/packages/renderer/src/device/utils/webgl.ts @@ -0,0 +1,14 @@ +// @see https://github.com/visgl/luma.gl/blob/30a1039573576d73641de7c1ba222e8992eb526e/modules/gltools/src/utils/webgl-checks.ts#L22 +export function isWebGL2( + gl: WebGL2RenderingContext | WebGLRenderingContext, +): gl is WebGL2RenderingContext { + if ( + typeof WebGL2RenderingContext !== 'undefined' && + gl instanceof WebGL2RenderingContext + ) { + return true; + } + // Look for debug contexts, headless gl etc + // @ts-ignore + return Boolean(gl && gl._version === 2); +} diff --git a/packages/renderer/src/index.ts b/packages/renderer/src/index.ts index 01b1f9ad66..66b481d62e 100644 --- a/packages/renderer/src/index.ts +++ b/packages/renderer/src/index.ts @@ -1,6 +1,7 @@ /** * */ +import DeviceRendererService from './device'; import ReglRendererService from './regl'; -export { ReglRendererService }; +export { DeviceRendererService, ReglRendererService }; diff --git a/packages/renderer/src/regl/ReglModel.ts b/packages/renderer/src/regl/ReglModel.ts index 89ee5b253f..21be561b4f 100644 --- a/packages/renderer/src/regl/ReglModel.ts +++ b/packages/renderer/src/regl/ReglModel.ts @@ -1,3 +1,8 @@ +import { + ClipSpaceNearZ, + preprocessShader_GLSL, + ViewportOrigin, +} from '@antv/g-device-api'; import { gl, IAttribute, @@ -7,6 +12,7 @@ import { IModelDrawOptions, IModelInitializationOptions, IUniform, + removeDuplicateUniforms, } from '@antv/l7-core'; import { lodashUtil } from '@antv/l7-utils'; import regl from 'regl'; @@ -52,6 +58,20 @@ export default class ReglModel implements IModel { cull, instances, } = options; + + /** + * try to compile GLSL 300 to 100 + */ + const vendorInfo = { + platformString: 'WebGL1', + glslVersion: '#version 100', + explicitBindingLocations: false, + separateSamplerTextures: false, + viewportOrigin: ViewportOrigin.LOWER_LEFT, + clipSpaceNearZ: ClipSpaceNearZ.NEGATIVE_ONE, + supportMRT: false, + }; + const reglUniforms: { [key: string]: IUniform } = {}; this.options = options; if (uniforms) { @@ -69,9 +89,13 @@ export default class ReglModel implements IModel { }); const drawParams: regl.DrawConfig = { attributes: reglAttributes, - frag: fs, + frag: removeDuplicateUniforms( + preprocessShader_GLSL(vendorInfo, 'frag', fs, null, false), + ), uniforms: reglUniforms, - vert: vs, + vert: removeDuplicateUniforms( + preprocessShader_GLSL(vendorInfo, 'vert', vs, null, false), + ), // @ts-ignore colorMask: reGl.prop('colorMask'), lineWidth: 1, diff --git a/packages/renderer/src/regl/index.ts b/packages/renderer/src/regl/index.ts index 441671903e..c382968b58 100644 --- a/packages/renderer/src/regl/index.ts +++ b/packages/renderer/src/regl/index.ts @@ -36,6 +36,7 @@ import ReglTexture2D from './ReglTexture2D'; */ @injectable() export default class ReglRendererService implements IRendererService { + uniformBuffers: IBuffer[] = []; public extensionObject: IExtensions; private gl: regl.Regl; private $container: HTMLDivElement | null; @@ -277,4 +278,7 @@ export default class ReglRendererService implements IRendererService { // @ts-ignore this.gl = null; }; + + beginFrame(): void {} + endFrame(): void {} } diff --git a/packages/scene/src/index.ts b/packages/scene/src/index.ts index 7c88b7ce77..e75319996e 100644 --- a/packages/scene/src/index.ts +++ b/packages/scene/src/index.ts @@ -32,7 +32,7 @@ import { TYPES, } from '@antv/l7-core'; import { MaskLayer } from '@antv/l7-layers'; -import { ReglRendererService } from '@antv/l7-renderer'; +import { DeviceRendererService, ReglRendererService } from '@antv/l7-renderer'; import { DOM, IProtocolHandler, SceneConifg } from '@antv/l7-utils'; import { Container } from 'inversify'; import BoxSelect, { BoxSelectEventList } from './boxSelect'; @@ -69,7 +69,7 @@ class Scene private container: Container; public constructor(config: ISceneConfig) { - const { id, map, canvas, hasBaseMap } = config; + const { id, map, canvas, hasBaseMap, renderer = 'regl' } = config; // 创建场景容器 const sceneContainer = createSceneContainer(); this.container = sceneContainer; @@ -79,7 +79,7 @@ class Scene // 绑定渲染引擎服务 sceneContainer .bind(TYPES.IRendererService) - .to(ReglRendererService) + .to(renderer === 'regl' ? ReglRendererService : DeviceRendererService) .inSingletonScope(); // 依赖注入 diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index a262c63660..4a8df35f23 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -42,8 +42,8 @@ "@antv/l7-map": "2.19.10", "@antv/l7-maps": "2.19.10", "@antv/l7-scene": "2.19.10", - "gl": "^5.0.3", - "regl": "1.6.1" + "gl": "^6.0.2", + "regl": "^1.7.0" }, "homepage": "https://github.com/antvis/L7#readme" } diff --git a/public/antv.png b/public/antv.png new file mode 100644 index 0000000000000000000000000000000000000000..2764f6117a5f66b8fc53a8e9286df1f0cf381fdf GIT binary patch literal 11160 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 literal 0 HcmV?d00001 diff --git a/public/glsl_wgsl_compiler_bg.wasm b/public/glsl_wgsl_compiler_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..172b691daabe35c642a9d08a70019ebad78d4f0b GIT binary patch literal 875346 zcmeFa542oYUH5(d%sDf2XXf6yxi|mQ^voo{tu!<~)+7Yh`}B0#R9_wzu4ldLUAkV^ zYO6)?Qlu?ifRCjOwqS*-5i1le7#|8PQY1owf)zq35Tr_lssRH;MGe{qqE@L`>HGQq z_C9CM%$=K?CTVV{ByG-_ea_iu@8AD_d!OL4m%lU&f*^e74ZC*-=Uo~Emj>bWmxk8| z{BI}Wb(coh^OJx0t$(k(G`?Of`j;jv#>*y3SAU z)&6*`jxo)=qvo#KfuD(fI#{U>e)_)b+1m9S>>=x-c0C7v#yn#O>oI!u_2H{8jb8og z@YT_qUjwd^_?18TqLr6i^2(q5nV-GOJ07>)j#vIFS_JsU--%()wOk%YcKoB z`4|4wHJ4m|^~};+hv<{jyim{JxtQ+`h(CXEvFdY4K;O)#!9O zt=7ye|8`cl(oWKto@ykmRy@;~?X(){R5HaaG51clI?Yz6!AU&bnxZX7-N5sn+yNCvL=PLJy4=hlnejOmUiY68& z%y75paw}>~Yov`S%@N4+dLH8cIF1-Z)MQF&`{{`dOHcBL>BqXAKf(j#0hZlw162be zNZW%(O;>G@uc7kQ5ILzZh6+~WRn{^lby2@XiIO5fs4JTnToWTti7!f)1zSI`YjFuFch2c z7|@MlC?rW@_(;IyeN3ZOz{?(9>>nQDu>=V4OcR=5`2IhGSR6k~lL#8RFRl&!N%<9| zVHi)gn~b5R8~M`!^8Cv|KkS#lZ+~jPxEr|`S26_@eH25UV7OTSG??}g1<^uR2r{-p=1}RsW0V zJ@p&Yf33Yc{X+Vs+82A`|9sV-dlffdVBqk(!WUl zI=Ur!Q{#*2UFp9kf0}%<_ABXMr~i?>HF;n9cCxn`Yj3Z8 zHhm=hVEVq=TO0qB+@5|Wxi7iBc29aw@}>IMYd0qMC!a`uHN7o;H2Glt{q;TR$CD2w z@2h_-`9ShV$-U_xq#sF-*7hgAQTwCXqqV#0@2b5q{ZRdnYwxbVCw*Jvx01Kle=U7S z?ND-i@~-f+(VJ@jQUA~MosHMTTYoLwo$PMxuK#Z1f$+EDx26AC|5WYI)4#0$d;Q>%W}b*?2H{ zfBMe)yXv>3ch=vXoc;g(R{F2?e@cHdeM{q!kp={sed?mOMIyI)%thpkEicy z+*A9<@W%M>lh-ufT>EtLc>UdtUufLbcu(Wu+V3@fvG%6)7wW%}Hhw++aP8sxr{g!o zH`L$T*w=U{`TfTGk~gQ1C->KHO%K<1r*|i>O+Hb7toDz|7n1iUpRE5`^83kOq`wir zC%!-Z&Dtl@kEeI12h%@IKbd|k{ZzU?y)XSv?R||uNe)LhC7(}U+qkiDNBVgDn&e1w zWBrE4`x~E2-cXY795_@({aa{3(-Q z$LT$ss>fQspPusFwVYRUUsKD{xoB&z)(%@)Evx5;zPLZ={!J}tX~L)fZ&uq91e2{G ztaaK^qmFI}7#A?^O}L3>VHRbvni_fBO*Hy@qJAx(ytuQ1JMNDR_H|D8yVHhlxi{*! zI@5Wp$Ef=@W^k9ti9<6i8>^I+I-T%^&=MGu9{qkTnQ>;7`RmCsJOLO;BKck?bAOxctH?(zqNtQ9}9WLwmxtLC<-!2v+lH~_bxy&a6`ojs$R z2g6=nYykYbf`6V~>;`o(>_M514)TLyskHlr`b8c1$jC4UDFWI9Odh=G^p?LA3yUYk z!^V&+Jf;j6CF|ZCd7LpFZU%nco1!eZ@C}euSGe#n(AXIkw}3GQr`H6U+W8!q+Sc~@ zt*q6VY5z9{1p(&K#hCM3iyyl>=ZW7UX3Bwyx_1p&td>XJWK;+UIt9xG0EVBiSIr2= zv!7<@*-vaCrd!Ask-&#Moyfxcxf*>xdO>GhR_jG{8ZvX5vI)u6xoAz^c9hxO7X2us zjDVB~1TYL%NEdl`Kg+p|&3JZ$8(EL{6n92hGfTSv!0_z039+{QU;+~oJaG*hSN8)? z_Y|bDA# z7$w(xZqu_R%Nsk6a69u7dAKo5XbjI5c!Qn6{bAc64ekIv@>z$lKhgaIBv01b8GHoH zWD`4s4~v?3!1x7;#jlbpJ`uNtUOgK3dFGEjHCT`B(H=jh9@{&EkNTefP(6n`1FuH^ zIE3rQz2$wew4=R+aqbNMgtxd?(%I*bpYE@JU4HF6Zfy_*A*w6Qu_1QYAWb2_z>og- z?J-=VDebU+aRhchh6H-98_fL#I3iGN+XlgMyt|ZB7q+&?KqSt;R`5gjHmC`y=bjBv zTzXt$$00dKHwEn<)Eth4QWKnjG)~0f-j>moHN_R9v;JzQVsxcD4>7o>j4u0Y2G@9< zyV4NF_Sf1KvE1IUzixYc1k7v+J{k7f+=h;maP;rgFP?Vq$>{PyM=NUd-Oz!g3Q$4D zEEFyRpvjF`awEvYo;M3jWliLv6HzTEqIfNx30=bLVv@?bT2<{TYrBrZx#*^_H^H+H zi2#_17x1Q1XaE9HupNyQXdKcgMg%Qu1&?}Eua(IAyTp2u`FC~J&f@OdW3D#bNMXxk z2~!)QiLiU4p0Vu8a)wMzc-KVhI|JZz?1|EgzX2XMwGnrJ5&rRTH7ia8DGRS56KTCn z>hrVCMV%kyQBc_ZvzmyDo6cdn+a=oa^FO9MAVMDJYGH)J_=ttW$Hb`pEzz;i0D#cEfl%|EhR#Axu)mv52cXD2cuS@8#I@~^F$r($ ztv$vxhj4SY9IAH2ew@>L7nqDos9LNLlVU+ZR<6iY1?gr*QuMD*~eHB zW<4-9n<7&)0H0bb0@!RvHqYsYic%jidc_KzHf<41=3?;F% ztaednBj@MOGolbJ2_uL3W5GN|bGIj*9lCHrzs;F5lRKtoF2pH22zh56@8&a=dn1%V zOSnM^p|`yc*Zp!0ZBXz2x_(O;qw?f(dW90^H_~R#Lk;DDxf+_SvLEeoEq$Rf_exg| z#0#F0xyTMa9yTr0irnXAK;bFddwN}mntmG(DWAl3>Y}x#dedeai3J%`njgZBMyVCv zCM{nxFW%WH$oz*2$MM0ahrd4;JrMO~bUYCCW_84&oYrxFRBC5z0h0kX1Q=xss|(pP z?Zi+AkhPIafXy(|0M3RPyw9`2K|?s0i#GRH>hRqDs$uA_^3X>o8uS~2KB8eP^yy%? z+$@gQ%IR{33p!jaH%i+JEzH^>$>YZWD@;#s<0g(^e7BBZT=+qMzlsC&ehmlSeI*B2 zxT2iXT!En&lkKL(xK%BQ|{ETsrjtI@0Ir;&$vrabMl_6>@Hzl$%g8M^I zo!3N3TQJ%CQxL$^WRljBx7yrU46;n_bjAD#~3QtvZMTBHe zl-09|?jAYR7E7sPRVCMyaTJ0NYqB7l*%r-mnB5i;QW23!=tE-?`jD7}J{XgUPq%w8 zx;AhMN~Hwx$I%qdw7S(f!MaoS7t&QSrHwzMC&juv2~C&_2l2Vsi7Y%lG0r+0XT>eF z_8@8*g9TM8y3|`E>On??^o;H1-hm{u*`UcZZ+rkv80rh!&urykZ-oRyl*ieOY|p&5 zYkhA;3nA4NDG#Jy3*sy^gC|mB8)msBfJnL92vn*$noQy_div9`n+1gMqtW&-WlWQW z!8193P8e(t1%XvX+p0m^#-eTGpzY~J+tUYa&nnuUHE7#bv~8O|FAScecVy{#;l0sw zLgCcreU9cW_txg!D(B63y8ximhdpO@2Dgb#yE}uo>WDM?He=hJ!Ec8S5c&1liY&fZ z|M=Ku^t8YtVWk{#qM%Q_+%%1lhBR=h1@PV`&(#U2x9ao)UXZi~% z%?PjeFqnZ~7NW)rsU^zt)FIK+-Yi6xBRU$0cZNrFWjUa?4F>evg8}Ux3>nrOC$JXA}@a4;tD+7FTcTq>& zT`Q!8;)rMNEZWaF^SDbYul+O=1%zF9b6b3{#Zjf@a?aO$NjZ|fLrVmjMqP)y@S0`Kk32c>_9_8UxN>_LUkx+vuQGvC7bWvxP zW@iRt_gh>?c2c?x4aJlY#1>;iw$Lg85adDkP6FXv1VleftEUof{UPjA=TxHdb>mlS zmWG1he$?H+B+SlUewdvnq^}jyJL{R=m|)~Hd@%B{V+SMK>jykGw`dxp^y$Vh3aN{M z#t_W&B~urs*-nXPf5w@c&yvuA@r*JdJ}A>-d&CyyrE*b*kYb7uXw5XL4@5mfp+Y z%Q~OvC@wXD7x-T#E(PzMj<}Qo7d-3v3h-9Td|FV``sqwXzj_%p%Sd z13Tbo;UR2}zKdI2jFPhm6(-78u}my*L0FY~w$MzII!5C>H)CH4)SymvC1&)8?)F?p zG?5IReXhu(W(gFls|nP-@bZv#{ahs+id=APH8zlyvOS6sMM~AI;b19n+4bebBj**X z%`!#0-Mx^P_o1Wb0w&HdbZ0b<3>}TA+7@l*b@+!_+j3B+RmPt}MqvhGl!a+vW*D^3 zDTrH!CBEu;g1Ga>jd)~WO2VHz5Yh#yFIO-ZDhk?jc&V~=OyQ8ZM`qXCc<856nibV3 z#^%eMK#=tJvLw!IghxFmB6q0&D{@3fyzR~5>R}dUq>R<3K4bG4~s(e ziPqUoBy!tDNXo^n`pQ)5`8D(X>FOnZ7x7|>hPu^D{GRkr&CT~$R4?&+rmX3)G0Ty` z{xt^(F>hgkSy$H7&KmyN>8#_=y4jRJTaiurvsyOe&n%{DNmUFYGlYN&YHYv2%q+TZ zF%mSYL{J)C5;*EpboC>^nZvG5w>?E_q%#Sv)^v)EG|SmKQSBJ3ceA&8zhc#XdePVv ze0wA15(vKAF^;WT4`yd<%jCwHP{~fWE7@Liy5A@ui?UoyRPhtxVL2ghF`Q0kb^EMV ze%pclLH^AA0Eh0qNwBa1DPh3_$Zy&Wo4G7+3VlK_T)S|n`6F+=FUYs#N8ff|(0wzL zfm@I*l*Xdj0Jwfo8tZ>ZpbReQ7uQ^rF~8~4BW1Hs+opQLG~Z_zjFtD^uX_%Nt2sJG zml!RIYUvS&NDuMan+4y8H6)Chi)Fr;ERgk}q&TKaB7s{7-GxcR6RDI#x=>ok#JvuH z1d(zG08;@M*r{m%LP-j6+E6jj{@k?X-tZ!pBGE=d*Zexd`6kv-CCql5UuU z29S^-w2@DeM7Ve;sI^E$YXP-5LBkNo$M7VAq`wVf%OUmkYJ=v=WgG-!01!cYc7PI; zJY@g*GCxzW;=-dx8HEaF6G@-L!{G5sd>45jpGO`HlKxzRQScfuc1Xp`66<~m2sl#= zKc{GteI{99adc6^B+Hg+O$VlB7r0gwvFQvMj1dri76GGxO5jPB7g7$dUz1T7u~-Z# z>VC#y8n{cAB&XW5HrCS34z;Yh_B2H)l z0yb2ASybQc4g1tRtrQXBLk29@w({Ke%2O?ilI6!Rv7%BIc|&`#<#Evko-NN5LtA4v zBY~)|$s)*UoGfB__BdID=sgKpbo|!HiOM3ss&t_&@)ogrQ|*PS`O!BV^Ga=F(c<>*TC6$vBx(qE;+kwIq&@ zdt+yUl%mT@ilpJaJ>r8Sj+w`+W7#@h@J%Z)P57|z9_d691ic}91hzy%F4~E$2}HNs z5M+<|_>6y=*dKi@{_00`at4S`K?cBCCsn_Gy={ytqn4_!SkioX9$bGN#ip8^`H% z777(Qeb~b|KDkgKJ;%`}BoAyEzF65)zn2HjxIbnzf7B-M%lnq}PrMuQJ)6K~I!`;* zYH93gmJ<_*_|dfTlP=;l%ZhlE;&EP)mE#UsBJ9>RC}JU}Dt>UwjV(2YW>SVVzEXYM z7`m0fyZt^L*Y-%E6-v)7GJSyO&H1;)z2)j;;}2>H>DKv_H!(bkQ%n zI98CMSXOHhYuVU3~3 zRPa|mw#Od3#XTlHkJH;1-@7$$w$=#JvaLmmRk}rE#>yb|EH%$^IC~kVtkq+&HP7&3 z#;N#20Sb++ShlkSAaLg{W-D6FL}IB;Qg?{N@v5xf(n-f99_P%DbNc6sXODkJB1Ri5 zAoyh%g8^h{AzpNWVC0tKDbG|c#j{(lbQ@Z{%2|uoXj==n(pT$zbzZLXMY%12aO~?F zpH$Go(Sb`!8?O6x()y}~3Cy^3rK}BB1E|=T#c#G1SpE6LT^oMGg9a)4eE*++Jjl<= zA6A{C)qzpok#D|2>3B^#CFn!F$0sSdQhiR=uWQk&C|k5C>zTYZt8jq`mwSWieWOFD zc`n*fE#X4Eupy0_9n%(xR)}?Z3+0SZ5qMUibbgzui*1&DScYUb7$-Q3(3Vi+x9d?I zhafuVHqUhXW=d)o)fH?VP*n0AK-MDg)BF*uv5@R3OY$h>&;o#RGeZKNUQmN$L->hq zl7~Ff5``PTTolt5E3Nmc7I@gmgCn>00;b!h8I9%)ATiBcS?zj}OZUOSC=6Rbn zDox~A)E`SXi4crBid7BEQKeRlfh1*hd?*)(wbP_!3=ZCyJ2O}o8_(}&X^8}u(I{cU zI29Hk)<=k8At6Ra#g6a`!C0VtSwPAx%qEh>wpUW4$_}uhvBOsjaSl7|B8nkGI3tjN zn!bpYr&4HsZ&SCIAsmJI3og!gHNTY`kfgp7o%Vk$}gHJaarXcI6=+ z5V@)!w^~ijS#nPNC@H)LG@8AvHo2AIaGn496Is*mlVmLz_f1x}xSf-%h4nPhO|^w( zG#Eie3!T$3J1atEiFQI^+as((_Dyl1?J+OgBvJ1)P>A~l?qV$Yqwl>>*u7l0YJ6sj zdCSr@D4a6XfZS~kHGuVrqCxXjCReW3tS}0krSX`)UC_o%nD{omGSwIAt$xP7qficm z2TR$+o0EaGPb~sCz`p4y-lF|T$b?Fmxfv9xLfWiTO|z0xw0FCy`!`vN(mgxug}Ams zDldF|Fjvk}(AFimRVVt?Y| zLSzw%qX{=`l{=$-lvqZneU#V(UZ^pQiL>xU z49~Y)xq@h5Zv=>}1l+h?d> z30utGCLFx_?a%_F^_-6N4qWUdaASoY)pl5(^?o1etr-NjG*|wdO-*v#|pE zu39rv%-?NX(_inJx0+x;!l*|q_4V$IX1I(USJli9*vocdwQ1t^@-7KJHEwlxIO@{u zw~A4+HFxx)_SueGU?sP;6I8Mf#_7TX(k&*JY^!!*>(nzbQRSc*!!k(^5t?9#^tc=9 z(x(Yn?z2&6tW&^a${TE(F8WRKqa}*Y6`^V!v>rWDHrvjqpx>}^xNNq~QQc;{Nq(?w zw*67H?XEh(+v8seL)#)1^s8BV=Ju$+!O^XxTJJ0gEXdYj1hO+~3)tu$WE+;)fYoTq zaA;%{WE&iQ&oZH?6+QuL-rNgC+TFL=+~FpOdKcS>Kh-9?VR*77vm-p5F*1r$Ns5KOxR=2=!PJ*UF-|n~Wmy!$NfNFU2&3`|gQ~TpT#}GN z-#gxrf?gn`bWO6}i6=9g9+e1#(peCMB}uqKN0Y*~3Q_0!@A)n z5t?J$3o9jSR&k>yXr{O(?^KBwH@Z?<#Y5UeS4tatNTKLTX>kwf6kRbx==jyjNr@g( zt5#z0Uy0f&@HbDEe-|Zme+?J%M1-vq-2-#*6pCBP*FxS(a+%3Ekh2H1aGTZMrOcHa z)-+2&dtOz}&LHqkLe7>SmtjO6VoyxYQWx@HiSlf^Lppw;i1l!M3R2!PtCTmr%#=q( z(0?V$v*}8?Y<2;>MFpRQ<#ZJSG;{I{)bOQ#X9M(77#^Q4pW*?5;VG-jsoD9jMAtUm zrwUygF%K+P1=F12TJ^Dx%Vd?Q{gfti3L2|q?lp^r26W}A6&heAMs>1Jb#K(BJ7guD zTqL9#rtP;Xp67AIW~FLIV;}?y%<8rX!a)DX$W~nL8-s8`+l8vk#;#;qGzJ%*z&$*% zC5!mu6*GLkAK)7OL7Qb)0_&r}`Iin=RjHiT4VYKrJWHST^w9#;jc7C;yZ9}EQ#eCXf_AXb9(i6$pLP4?7-%Wsin z9PDCPJ@1pzt8hagLb&YlF?F8_D+2n*B#*&oK*u;=ib0b&Gc4VOo7m>m2e=gOY9l|n zwp{r?i{Q5@?y8D44=#&lE15hh!!1m=OyOO7_lbsgEuzSdO=Bi&3QNBF=wy9x=|~w5 z9*QhIxp|6{3Mg4Do1*2#CaZMdQ){v-TKSQK`?V3_E&7tQZA3WQFlN%<-Q-Np-dUL6 zB}r6ipCU^EiBfVA>ziY=N^P&XgR+iqD4(okH@c0TlBF!sl=@N_Z4?=3#*1n?9xc-s zrX0VEGt85k=_rqWcay74$+?Nl?aa^lSIL!fvG0*9SSyk`W<6C3BB)1ss*$Tr>AQ$r z2RR9qsIas!)e@7@3JqF@D>PWB5qJMxc{o-GL*rILbo;PqrW#HwflMwp$I4}AN1irl z9iMwKHeEg-;VOT#r^)yD`xyLfZo*Sb9l2#KrT^QsAb_jrXk~-UdB=8WcX@K35ci32 zp8zkC=APQd1|}BP@L{W1UF*Usz8#JQRUk_hpQ_M&P{Xo^$Xr$Nc|*sS;VicoX@ukJ zz_zLmY(nEZzfuP_VRA?QHTOzPm@jW^Y=#{(5d5|-T4*R=-u)d+-Pw3|x$l0eW2H=- zJ1;YGHk-Mc(qTb5t6hyjIm6qv3qE3zHJIpolJdY3 zMG9a-tE@-DD~ra=Eam94I@Q9)CsI9h3d1X7lGrK`T9CJX9W%57A^&k$2XdVfkL z0zikwQ&gae**cOTAKUr$zHh4!m5a*O;`|GK`>fk5$_615mG%+$yOfLja2zJ&C9vE= zha|t37H21meb^^CQH4JWO@-z9Y(=64U?akwu@Y`WF-pzphl>Zbd*QfnkelZzDaf|T zED|F!FP>=BLc{92J1}8OL(77Pg;ivOf(8d>PlTy>g-L8 zTe&deOY3e*ZN<4$V)~GM<)M_%PNxH<$740tr%bX!A&A%}(i!+PaV9CTl!~&2nTm5d zGrfTG4V3JFQ*aGmHan zzV6Bb+}_HV-m0{sRWK87ZQ4Y+Hf?c9>t1CklW$cae z!$J3RDFyb=*cp&P$yxlML<%~PHB%SfuzUAztVYU=MOIreIkkcQr$9WnP$Zhq>CCji zUcW+vgw8;#kXO{ioQgr;_)QAh=KUY3ME(aBNIn|*_eHa#D-_(qk_9UiToJ7|W0>Iq zY%2SB_y!&QN(CaiX2jU~1nd^3Ky5ETvNP(X-AV-@WcAX1eF6}eW3Dm}WVZ~+ZFrf2 zgwIpUm&2r}PByCW)l+Plf{a~lt|6;{g_n>+YE@zw5v)!uT2%W@3npsOf~4i64O)v> zv``N_Nee4KU5g21+_Fji)*>23N+^)-RDZ)e?dosXXQKG+mwCE%Q!JH2L$&j;x6*~7 z#t0dt-cu1fSe;KAc2KRS3_mjF&c$tGDe|`HT(3JON-Iy!FL!L!&VPxVEJY-!au^$t z@aED)$$8_dE*7T9$FEz3sGOQB*V~Ra(jiWFpRKHMN`P@{0g0+HjDo9C35=FuGp`Ks zLiSTj#~~(I@c3!7(C*TPiF9@+B<`nfon!7z7J&c}e4KUoY|ljZpY18aADya_F76Ka zM9lT#Pr%KW7ANzYEZxhH5 zwY~zheb1c_3>t+z#54tZR_rHvW}lBt^27VIJXnsnzA1>~J>#&}-Kz~R+x)*m`#UnR zT5kpNqTMD8<9=nU_!W=wiASjEbwe00c3G;qB&cw#xz$}B!CS*qeVK69jXR87^ zS7L#ijWg|HIZ3v{M{K}>r6kw@;ZX)=(HlB3uJ67{zD%K3zELd1bV{X&F;oh^Mn%P7 zSLsx8=De*`ed@676K|t<3+K(YOAwwZEJyI!-RtKA#I1% zQ-Z-IV{x4^lBn>e8OWKR(H>3_MhcOy_95~xixeWC?S;mn zMOB1$Wm7G zyBvuPyX2>0i4NCu1<^f)Rv_vVbDAHk`QL_A^{e^u6J4%&%@ywJ0AsU&-?b8r^gz&V zoB=hM>|~edld2`Xx(e04=aw?zv0MC$!eb4vuOs#hRd9i&HxxWEYpZ6~R<*bcNr#htb4r}a6so)26~U5+QVZjKym7u@DS?;R>&Oyl zVy=aueA~}zL=PwsXEdSQBNTzob6eaDX5>=5OBWzoHdso}727`vmcfptx3p3G2Jrb< zsu7Y({mrVUv5eD*{hmUGs$o4HW2!AXDXP3+OfuY-i!VsE_X~;RAm~6rwVN zLaz>XtV%&5MPsfebTY#S1!oB@u)mpzq7+J}*`L6inqf%%kCClGw)HP}SZA-nzv}r0H&?JJT|j4~S%w z%JsKIe+rcpx&C3|!vHkzMCP5T#3#Kv0ZVX^op&ljMp{&cJnH_RK7J7-wOw*kpv1aT z(w2`G`>&Rn0=s9}kR4w$bWbR|&4^baCzS{W!W;>$=Wkp7c#|QP?^0wK{-Ny#-fE634Gdn-EI#A?)iw*Ei6MfgjVgn>(e}#lB zUn7$}hmB`0jBT?jpi9dfwry5_?cHIt@%p&fX0^FF$eP-n700Eihc4iNEB;&#Jh(%< zTT9+?0PWE=^OAZ^9zpYMi++fcBS^5OW^gE!!pvB3$xc~5!_-tnU3+BfeuY_G!nc{@ z{7~rNn#*KE(|j>Yp}8xindz=jmeBFflpC!umUH5JNHFgX_3FDL6fDPm5g&}_NWP%! z26ZGRyi0EN==r$2VRClUbX;ol2m}1Zktz0dW*NVg|Y|WP;6t?cV z@Vp7<8btyq`#!my&}di@n-I=sg^f1pBiO@mj)rcm59+n8u`~rZ=6e%BYD%|H_iFJ44${z=n2!xA7^UyF_F_#)vIaWO^Hza(8z>VW<-cxZ!qRPXVFm z24n$zBZ2P03X$2oP=pMpH^FtHOq@CpGd4c2fanMA$k7to(xJUBH}hO?hWR%0{caD; zXIz-wbVtAAb$}&80&=-@v@hzmS{CB4rjDg}s6h#@ zdWlHYemD4LsmPZPBW1Ohm}!2c z$FqQSx&C=Ens=>yRUzb}PDZN9DE-C#8U~{7>UVpSOc|>B5oTA*uhk2qS1^n|*t$xn z;qpXYdjSyE)7+o&uvn&*f9LVXAFp4Mz}{;^ux(~b{}XcoggD3a(fO}@dH&&l z`SL&g+!d8mx|@Ix`ja56Lng1^F{I3h^xF)DJ|;&W=b1^B{7|4qZvA=C6;Ep`P;rOm z;{L)(A*pp6{S-s5xvJ->oDo0HV^8CT=o*Jrog=e%M?XSS&jKCUgmCSiLH~FEPpZ;r zSeSop3Ht%0oGj4$bwuLq4;_oqqXC;ilF($ca7-RFAY&5~_!4eWhd!pEYPL4_P1eIG z2!f4gfyHLVN{qYJE2~lVam>%&7Tv7ly>C#A_$E%3M%*2?O>m1%qfE)ODUl$@Nq_9v z5t$-I*8P9lK(3ZsBc$FGEBj~q@TPm}3ahxX5B=IKk7^u9&(c{#ZimvCs0TskO5P*EA<=@6k@u04{_K9$q=&~8WT?-r$TgFI^!Lw2SCZ=I zfq{gxTX+(53AO_GtNIfVCQY1Q!z^YUP{pntb!TF)#EGP^M+@T5qXnJ751ti5C={DV zY)pU`G4q70K(i7#eQdo8p*x9;@cd!s2V zcnO2%>d~-|$ds;evzHd1=zb}7*E9w$q9YfyYng4=T@DL@c8Q643M40^fk;DO>} z8ctWAFNrOsf4+#&o;U4&Zqa^jQU2oYr|!z#Z%e(EWp(ZB66@M+3&BAjSnH$|jrjTkLN#@ziQ zCJQKW?ZXC(f^p&~L0KCVRED-mCZItYQsY>~P;G!A2?WDX%`gN(05SKR$B=Bk_Iy9d zW(l6LA8;|{F+(y?EH;J3ro0%4#(-43TuvEcvgty~U;+s`Ee5uOX$Sp=wYNprI?%}i z!9i~g7}8SviOE>ws}7}`j|L{}#Fmcx%$kYvN30z&FBVnhMt{n&Xdy6F@F3>wRAnY2 zCqjUAj5#rm=8-H@V$P`+BE3togefR5Ns#X0Rg-ZLg*B8{Z-(#&C0JcWIe25-V?zLr zv_ z7E4d@=~gF2&{dGaWZa$B#_G)+d;V5PPl*iSLAkrvh!m&t_~m`RGrC)ih4hq|7wnx( zDP&2)&8m^*Kz9K%_hZ; z)e8IBnUpPkUc-St(Yew`_X=AL6cL}<_$*iynH?~Q+eaPtSCM(IBQ8{PcbsZAHkTeK zRr9@kC&kE-a{UVO>C?=8Sb-w_II6)GPK=+CS_ppf!y6+iO%#{ZQX!%zRr^Q`J2+Dy z)qT76Z~~>oPVbkk=D$_1Tlb?2!LlRXic5*0SJrHQDB>|I2(zY{e+ahagS{S^ z(2qVkq+cK4Lf4(TG9x1x{6sw^yvv6CyTq#1@H;ThCzDkhHf&hUhT)h`NY|ag7cf&K zUfYGh^!LfO4TDyG7bKoPGrt)-*6mM%F@+z2q&BOXLi=1{d_S2;v~45Gn&$;~M$ZXJ zS(-T84bkBU#j;LC)|f|-{LWxVKzZSVz;rMyL?)AURJtuXSb2_j(EoFSudA(PZ~jMh zkC3+4$v@!FqyOE%mh;C5&*;?!TUZ1}U^>Pt4~3@^8SNkW-JoXT5Ac5xOK z=Bfn3VF2O&N{!3gGxJrU00GfL0Zn~mz&M?|lj9?-y zBi1j3iWtHq_xg(H4`>}|36GNlA<~fM{oeS6m`mgLKPPJJMw3x3Ealo6VZ%8q z+6m_=$+QyspM!fxJ&;{kR8A0fGteh&T`P+0Y0<3VjUJ2=XSO)Dt8hRw)V6 zP;IW|HYz%-o%J`{RO6w0zMylH5(19#O7{`X9_vMM2U+G7nMs}=sj>$reL$-!&wuiv zbu)zD%x|^0nRg&uFm;bj#&8r860lBMT&Z|k&VS!L_I0Hv*ew)z#e~)LPrv!Wr(GN&oH;|1fw4?R z{`B&_y1RU@W-Y^V0erIj@bGQeitfY19n^mr)GEG9eCyXg?k+FdaF?u1`*N}3x1X&O zTAjqa?2!*3(oCFEG3jjbydWq7)4i6yY=l^KQ7YDU5HkZ5GONnqS)flSxwbNJW;-&v zwlZjD%NAW*88EX2jION=mRXL_wUvP~BF{*2=L#&3cT1YPa5Dvd=Vp@6^QLa$`z=(I z%QoDaf;G5fs024wtStB*AO*&t$yPqF4^TS zO0AYllCbn-xn6BZTOLNhk6y^P3K>~$NEvvjWkw;xK6yvWkKv>9Gn;URuHy<)3KrdQ z?nB`@7xW=#T|oq+57_A>=tIGU<$+X%vzoRAr-DHQntlAM$`|4&FD>SxYsUw^Dokh` zhyb_nrU#EgE62eu>9T=?8e#K#ZxYW_YNWwRR2pvGVlM_tMQbzhgv4Z>Q6RuJk z%v=r-iB>W>-A|$&wghX){MM?%XTXj~hb_U{u0nEy&=HGad4Pnxt1qzt$F=78=6KO= z!(4NWP3y~x!a0VL#l=N(fkL4QVOMQ{!JBrmLA}M%%INB8MQ&1B!jBb}u+7^H+2s0_R$o(de%2*w-y#0J?-sx6Q~+q1tQ{QgdbC+->vO7Y+^j zCTd_wsFVmc%z|KCS>YL)VZSFzT%Ccjqj=VqkC}Wa#~C;{+NjC`T6-l;rTGy!=-Fu8 zU9D`zMV&UaUMq_7Tj8*1I-J;7Vi8~!BcmLDJ)o+RV zGgeDj)3PgOxhLw)nkiw0!naZihMmb~q z6|v;Kl(!?Y!&qd7uzX}Is;E6`UO*~I7UJM^hcu80Dg}9YA*0&b>nQAN=f{_y(gJ-+ zE%l)wFMv6q(OE?qg(&j?&MMcaM?~tvycr9_VHZ4lWRX+ zWm`-N(}{5>L*q^aD_642996^2`kc~GumVv-V{`#XH0;=F5Y8IHrAh{+0dSkP`kKAA zucM?K2weGEy|(Iz+tqTQwkW6gYo$SxDcR;)OaG$Dtv%v|_2UAO@At z5f$7Lgd_A|cISW|T2GK36vP`(4^X%^uz~)+E6|NnDZ;FWim0kG%aAIn`W9R2F(@%W zZ4qwB2oTBI(XT<3fqr%7vzg;4H1Od(>LY#OJmQIzHX2{mcD)JcNNB5pKK@5qw7L&! zL_Q~tErAHFqS@z@*n`gCfVn%0dn2rdz)351IgT6In;$ zWbU~?v`4AX8b-Mj0LJYVaOsI7q1GY*pt88r_7@O2oRq!bCs{+R&^4kK;MwUOmV&rN zLj-=&w z`V*`&c+Z8!dWi74-Z?yx$w#wlof++mDZfo?8CqIA(SJsE&TCmUas6wvxeFiv&;R(= zH^2I^$FIBgh6{%lRj@!p(wb*kn~(>^nur!ue$`9ZqRXvKu=Kg2&MHUqD^t2(s8hDd zDvArQzc!m=ea4S=qBbh85Yz6Mp$1Wct0b3Ei~qL}jt@ZD6TbZ_3HnuLk5i|wVwF|7 ziXBz=-Tl)#iz}=iKTnV(a!PGDworoI!91nUMYH|YjEZmr`%CNDp4LKWZ_#y#uk{jP z{J+6;(&~N}9mD3M&1{2J^KXzpz%@qH1$#i#V(ob_7ahFqqMXWp2uBeG)_Q`@n^nCh zJ4j9U>d0@^)TqACqG^WnvbJWwyqVo{ha?k|{B}CXKgf7k;P)EQL-nr*)maWyp#XH2 z0CbjHDdYfj764i+*sMh=DGqF~Q8yW@T)Ix)bg@RvHsU%3<-LsnfV1A&U?OwMxz~eK zh#6;7EN<&_Uw92mKG>Mb)Vfu_%jR5I9roVvVX0!*i^?` zS;1tBwc%@uFxreKTi5-NhedIh>KQU!>wWP@!GK$loyEj#nbwL56?&trg;Ca@)vT!2wh&NT ze9(e*`YUPC8W+$*C>@KqPxb=+58Nukh%KDW8HhXbTRI=prIx(WOG*yHSC4h^DGH1;2HVsnBupoteH;epk z`DJmjRFax*(UIS~b);U|xSFFeJX~$wj-i@(1@~|l-cHHk7P~Od$QLo0G?3i)-2P_; zw~M?Fh0Z3y8FGSB1}SUWBw7tNc19bz(6po5Qvf-#%v%O7>sSS$>F)R@~ zEIT?e_labOKbsX4{XI`t-~@pnZL~7mq}M#n%FBa`v&}lW=;aI!Nufn@tkf6FceeyR zxr*)lpbF3#Gu}*bx~s=WR9o4~t1dEM>gn0cRoRS-^x-WU$Z!6YMM3_jg(TI90sZrw zjDb2OkR{X)>)b>Au$DC%)Xl&F^xd08cB-s~5;<7O_B!eVigInJislys5|wI0V&2zo zUHAqnK5bQR%hhkUT>W;-IpG+mWg%I$bX%YVy9Y!1Vl&GC?qUg`%38H3L5lA#0AMo2 zBsGZX-V<`)43O+&kIGGGA4e}xu9HN=wB(lWwO~D`B-#}0|79dxQtg1^ond`d@mmY} z(p?=EpAP=|!M7QFf0kjb%G$zle`Yd`LjGvuO)lp5mhXo?kZMp-W)qs>)st})280}$ z4)R+zS1V_21PXLk9GhW!i3y zw-rNVUK&NWx1KH;ojJUPywuXj_1c)&4-)fb0u8-N&AKxd#wA)UgpcZ0Bb{?JdD~)t zxiw_reb)e+AqYps3)~d#CJm56GQk3=Lu653^g!@xRjmvVogOmIGLxh*MZ`Z^uBIT- zfMdiZ@|EBZ{>2=ra7nGgCAE@EfV6Q*&A0@w%NfwDNFA_A&9O<%v57YFr1P8nR}6!! z$|PpiVD}kd)*DdVa>4aP5V~L2l9K(5Z9Od3{X{KWza{ARdO8HM*Kz{G1Xs8mi!{x( z%+{Y5gwF}@4YTzMEu76=_%c)ZU?~K_W8iR3Jg0(BE(4;Yz_Qp!EIz^yId;7bI$qOT zH{gk5o$2ORxd4{xg*junUzXY#mn^W%Dm{L8O;cL=c4Hn2DT-1tRU;*&u~nmdKgTTF zfNGfTwX${Q^%lkj3ruYBWgg|RxeSiU*LO*)+4_4@wYL7=*5Tvx*4)6=isw7y)?3y( zQN9|Mxt))O_98f^mbX|q1=%?t#ay}v2P2ufBcm-@5MSJcagqFAKtLSWb<{aFbTCu?U} z88(^5agZb-Nj$(V@q;*zIYR=dv!YsGwk}I|JFKXSOivUM30aN2a8ef1tNNW6bn4Ck z>-D+MtftAqI=WeBH}(B!E9>a$S>KNq>#2_Q*%zOsrZZLR%OVn7I#EJ z2$$1W!-V-JhR&oDz;VIkLx>mMNa!@nNuAjg7g9tX)U$q|k-xanGTODT1*Ljc8kDk1aEK5VY5n z-oV4MyT-c*G6l+t)2xFkfy#}%S>$BIJ^LIZYE{9RVT$$`L(w9I0pR7(_WPJV&K>kd z_h2!tg(BOI&xuRUnc038@&-Y$@%e;CU|ws3mzyv)&8)YTeCWTx%xjYigY~seDx76J zWj8+`nd?P>#1+4^WG#Wmn|2Y$Nl<@uF!5Se_hgRo_-+ zC4w#JZxkA884s}GnIzpLLa=6c%0KS$gP;ipCV+0pdsFeM;4vw=Y%t-0jXcubwZ7js zTdw5lAs`icq#;NlCy~y+FTozzYReET!DBzI7dKv^y&SBQ)JX(I`{|#Ea7?7t>u#ORZO>2neK56bIc^MbB}+LZg!nh zF*^u%vDs}h-MUdOkg8%!%ywUKVzV8Phiw1lob9GDxZIe>BlBGI3QxdK0HdlncYsnn zW;y3*$pZ8Fpq3NRiEy>dKxbQwD(ur_ppZgO+bg|Zhl`D`t6bdamRyW-a9qqjOmH!Z zLR{Q&T+D`zqH`<=FyG4TtD)}O$fomYBIm9p7Ksj|<)v=qoZIq?uB2eseC*XC{d^Un z0QTtoh=TEKCXw~jD!q}f_f@p)fU{fjp|D`&sSeV42s<-f3OQw^y*R==FtVaftLUV! zGdi>w5d}=9CqOTH!u+m&@glu|Z(&AQhWvB>eD~K)?2&sk{c{APU?4K2=VlPh%6v}( zXobmZNO3|qiGsYGHxZ;J=GnhV!e8bpR<4x^L*&PpAOf75P33jvwJ{F)Ix23!nsD*7 z0yIRr7&wuoPWN6LFVL}yAv2Y?Dl-uAwKyI{Q{AYr6vt~7>LZ8Q{c7x*6Xm4&(xm*t&vN$~&dG52jmNZ$k0O|=5fDspHr(FnIDAE=5@4?>479w)v1oj( zO@F$qb4qHUa%ZfooCn-FKYBFzDF3ANTLKZJyRUQ*eDYEEmHvuPKB}#BSFDDJS({BnZEkYb zW)t=yCN((o)uL7Q0m)NNW}3bcS(sIb%!T7r-VS7>7;oX!hk5scDxb6BXj)`A%d_V3!ec&9QnzJn066{9YZR^M@*%3Zwh+^1Qm)U_Ss)&8)nv6)k+|^W+oN;()JrVn~Y*@ z!Xs790;FxhyHW5ue+|@gC+Fvd@3g+Q1n&s-#x23^VUN9R*&I96yUvMk4fT4q90+^s z)P8fwhU;z&vL*8G$2!6^iMIuU6=jR`{%-&4&jYNH=Y+cOXPl}afzyXLZMf41ImIJX z>j6&fd!ZKf_TNO!pNn*H*LV1Rwh`Am1BwJM4EfY2TOfkxa7%Ehj1AXDUp?+1lLpoZ z(EMZ`_XrZWznMV=P)*i?Fp3d(^^f+>%GTXsr68fAn(XwL)%l`q$Y(jghprRvFwAJU z*e=H$u7$uNt!ncV10-kdux9{O-R7<0I8A}wCj1nl{2iv;gfp9pQC&%Jj!cY5LTH;Q z-We-o$%!OZX$QD=B$;b3MY3y$pIv(?zFm8xXfFzqL?cS+@bTIhDp_}jBc^^c--Iz6 zT|m~ZnO~}{tR}MN^VZ9!1t!A$U10t%In(*O@YxRPEP5bzG;<&pjZyL*JDR#Db~JT2 zMVY#9U)+n^cnXH39xE9k#fdz7UgvDE+|28?X-&@7w&2!=-hE>%JiBR}0&r+>s=nTb z)`28rV>yPF?~lc58f|{JYh@xfV3;Mp$FBC*-qC9ogtqiCTWfsVGKSS^0cHqYHoDVE z6i!Z0O)pN`=eJ1G#MM_|lNp85qkQPv(^34Qo{#hNfn!??sE6A z*C6TNesgDVY1X``BO+v`S=jw547Vk?Gj_bXg^zZ50cjix7WYX5IKKA4bkBD0DnQy2 zNY9~l53nm`hV57YkYY){Phdj;2%Y``rv~(M0J?9}g9sIW^KSRc^=E6xOoV!{uiGBH zUjl<6?O|y7gG^)X|0Q{;8*Yn9t@sfi(B(Dr`N7wJBIv#o{>u;1Ge(bwLEiT;*DZg` z9^%nMy7}&w4+|mgZ+epu9*uoLw?Yt}ARKFA1tEgGuIpWiMBwQ#uBzua}KZLs{cL(Kw+T zul*96Bj}qYKLRb1UBMTl_Bn%@?sY@8Cr-&UwbybLjF_JjnhvEfp5{NTVTuN5f~G~2 zAG0RrN7H&IJtlO%VY{+Oh%BH}2W|pU%kh&frnJW?1lI?S=!l9`4v`VyBXMr30^M^Y z?pw()rw_+O+?**J<&La~Lb+2$%DNia%U#~>@a!qFHPpcOvDx*W8T3~a?GDUPqPW0Q zW2tDok}+E{e=H!If@La&$`)ae@3;QJ1c-) z#kEydI$Tp?Wo`?V$-3WI*Q0ceZ=eRgxO6;7bYV(?5Cx-c#@q-Xu~tq6l`c@4w8?RS z$d=iyQg%p+%Sm(hh20Vh+2?{k&i)Y-# z99q=aG)D4DMRI^OPmY=_FY5Gw+MA_v(y!@J@qsLE7H>5jgSvP`D#!^niIS%&Q@T=P z0CThAiPa<-jk#S5^QW$HfZZs+sb)HFz*A~Kyc=?bqHNaYbd!ACmfmkV&NT{bj@SjX z-;O(H`|H5Gx8O+QN$Yhh$N>K^4>FsSVxRSf&+Xra3=`hI4O}IAC212P&Xj5G;XLOYJnliB#2ASUt!x^%5&He z3yDyY2@*78F{HbHG+rl)BBRAi>%Xx!5t?npRLFIwq6%9^V#C?Lq8zM79yWi6MluS8 z$So`wTBXJ_y%P@Y-j(#3_ip`EzobQ)Ou<$H86|gL545T0+8GEorXawyq<2XK#A|`e z&=hUpBAh(~ZnLREb*3k<5YKZYL0?weeV$$e#W_OKq)S2N+Dn6_qO)~By4UgCz>q2U z=3Sa8#I*;*KsJ`Wnz_+vDhg83w^pDPN9@DKstR4V=+ZYUa-bp}j?he}rada+fxwM# z91;&2>NxSB_JMfNFT_J!S{G_y=K5xZ2_+%Ea@f9as``d$m{ORUJ8a|>ujtb zlb?>^c=COk4~=31FLu4hKqKyU6g;ruDM{G z8|1%P%U%YKl+sk7j_?;Ce8Jc=LHKueZWIf5h1~cRTDD+0_a?*>H`V&FLff3)T+3p| z9+qS-zz-t$gsNrdpg4TtzqW0~xAv$k8}Sb11}I-1JSWr&XwXhw1lU2#gz9Ch<>{a% z!~7`k#o|3p6?me5q%r&mksT&R7@?CLx{tBG9M_YZPGqFPa{_X;lJv(KY5QD}u@}El z{(4{?ib#e%l{dO(s8CG!Z9~iLuFBXbOcnqlv|=@&ll|RC?e5-LPq~q=3?;5Y}M4T*- zbea1elN&WWwV5228ZbFLd`9s3Grz~@r_YMOnzpRSknEO-FBTc2k@%oDvYsd;)g>^yMp$6jGtUI*7-W7z`bl;%q)?iZ&JT|_mB}m070_% zA_9}4f_;~oPV1wcW_5P1mbX%*%YgZ68wKoAhk*+T$|d|(a+`+q zbiJ4Ch_Z1O_~cyKIB6UO{#XiPHnhu-kbSeP+g@)nke!S9_6Q*IK7yujj}#O-%^VQ9 zgW~Z4AglJ>uFhtz0g)%q@K@4o6tb&iutdvXG~&hcg_oTn2(>RuRJ@l5& zCMad;O^HEbK~}>P%_iW({-liVEx~0yEW`ZcbR6bivE`I5QL1FiMAp3eBKOm$Kyd`; zoIhn)C-~3YDz2{BvsZB;%=Icg7Xr9}?$FpR>pbGQ$SWMLC^Yk4Sl6X%xZ>urL$Bb%0{6*_y~~s?O!AM3 zA}q7yGsCBdA_ino$&{T4MYtrm=)xhK)VUnN?;-q&Bb+blB<%8?fBga0FJ7q$a0^xOAXYiZV6r?9cWYc8V|XaGM6Anj%D0DjE!iLyWl~QM+fN|ctJ>=tI%BPn4@|@tSE-hThu_BeI zZ1KA+h3;y`pGeG2FhcXkRznULC6MhgU1m;2cJ?iR3h*bn`>x zMe}FoHzC`s42pM_vi`J1sfIR2PVlo} zmbZ$F{Jtr4UX~ld37QpxQ@atIqr8$3)oui*_6otN-3U(Y@J5B;emCA8eo0m)_|BQwCkNQIW zACsd)$8*t76j8XG72(?LNo$iEhd(f=lS&t1Pc?A`77E;l#Sj$W*cx8r2aetdz(VeOtg$Z3GmRHXmy9S(~D* z%)z=>p`}>;@FXOv)v4m=CsvJdj|)^9+*~Qf{z}Vm9mb;=?D@;Mu-19H7&^we2z8Nj0*knNQo>3oWB^NKU91Si;b5 zUyq_xtW~50TtDR%Da%fcPJl@Ys0yNl3xT4tq})Iyp#0y$n*bhzrA_(+_sB`7!9BgknCDS|U8b0-gE^Su?3tV{b8 zf|Pcct?2$zL^v;W+b6Tp;FT(QT6^Kzn=X7jxS_gp<9e&I;7;3c5aEW?M{Bby^qA@dSNJc+vUBt2L;Yt~dB6TXC% z%%tLPfn*4c7)4ux;35I=a7>u=2jbmr_AC^*MbSi< z4AMo^nhI1^qU3BrEf2R8!w^X!hV8Tz!*&;75B!R^CA)!|wPQiK z`<*pcwiomOVHEdEA`|R0_b3Z_OjEF4y8CL~Kf>2ieGOQ0kXQFAsyRNii59dunN}rl z(thBUD!GjQD^b*}aZzWYT_44<=S~RD73ZA{nvs~LzH(^R?mL6OOGhh@!qY`5d_l&9 zrF}UPUdn+Q_Bo-Z)All8t3-;&edRswKd&MO$P{R>2*OW` zHhS9@U7Dr&ifz%gG^es9Wss#zX_m7W(?s>n|8R#N;&AV8?}uV8u$vLm+JPVIypu~2_vazntM+Ug`-RbSa?PR!1<+AF5JQ)i!jcIWI#ZDmmW%_b&mVbo{cdVc7R z{feqR{GRlON@v zt+fv?mWR&G08}vFeWQRa2!jMc|1suc(03qT2<%P|c>2-yCr#9p0|whh9{dBt2i-S@ zl~MFqhe8EFz{4y^)82N`HDZTJs5zB%6Dce=@355Mj+Y-}8GAhHdBqqvi)Hzgqd7Uo19zSq!06K6rW>!fS>e z0;-z7sG=#VKu|iW2tqgnF{dXudea1Wi#?!4PXwqO$Y)VV-}2#MNE@u-!y%62rRBJ^ z=fw!BLA%x!9qTo>4ZVimMqhDJXM-4CW2XSYpD~LiCW~bl=ri)Lp}0}IKRX^|+pRyW zDLQctGZK?J(!HOVLHe4{1B258AF2X@Ys6D8r!z0U;1^C2&Q7)=kNAlwVndfSzX8j| zQKwUW0eyp@_{H0UpJyHs19X#k)%F3#9xtp>jUC`^3E+S24*PMoY}C_4Yc8c*hI$1J zF%kd$;-8}*LkPfbj(cvzd75^U;ZTvcyM+-O)Ij#SHSVdlw2>qri7NhoXk_LzIUy_& z$Pc!;tcu<$A@DJ%6Ci{IJhhMz)>qN*NCGGUR>{Hv42P-S2w{T}LW9M)A_Aiav6T~p zY*$)Hu7ZZ$Bujz21Zxp9l*QutihUQ3Meut@0K0(To%oWLHb9H0Y(sUS`BolwqBVa! zc%G>=swOtzw{n=3?M6(!`z>3XvcYOz_4OBu62$visJrw%oo&$u8?ecCdk-5Tb}__w zBWJs7vdN&n{J&p?Gj;XO;5qhd#Vhio`nAJ;rLQP2@3e;YpyAnUU~85`wUhF$!(%&n zHu)_N$H9xAUA$_)JwsBlDgCb5+GP3@FUgwvo&)nHYRgI}O|d$2!)>$sP<`ONThy^ zrw4!pA_Wl$rsMx|3wH8|q%{=q@dBsG*rV8go`y5${b5~69OZmKOR}F#>Q;N3J~jcS zg^7iudt|ZEjT-|#K`Aqb#XX<9(mu;eqI=koqqhYVCF|5%!0gmn(J1x`slz2GYUx+V ziSVzG=R6=27Hfz7^fF72!X#)ib&#dUm+Q_O!p4yBf4H%jGDxJ0ye9$zXrqrj-?uxmN0Sz78hdjOHTR~NW$V3V}zJC za`r;(q~BB@ylIROYhaiS{<^&HDVW~m;HAUj%pr-Ifyrd17Dpi~#+KkEW4>p4YCJi- zRwN(0NskIyxa{QdTA8@M;XEYAcd^yl5|cH-!CnQYb|ecXyNk`>j%Ot2oQ9E19oI-$ zaM)zGx254SB4-v@C>PO-m*cGF^k>pk$F{zW3eR{ocD(Mjk(tz(dtg{oxwf@lFl65B zIB7ZLe6cJfHacu}$Shro@s7jnsQ6#Syl^0vK&t^_jky#J=ULR8XJLw1eg@8`{0w|c zi+T5#Fux8A8RP@W>dugg3oK?vSZIP_QF**R*b~xc!*;*DLiJQG6nyd)bHz5F92I{T zcTztI^Pw0ZkQ@b%(w*05|cg-5;-C9V_{CA&B&52t-qSjR(hY- z5}x)?U{t$PoQ>}p_3Vf$Mm^qVThA7ows)w*7M-SxSS(agNe3@H-S;2!VB@tx3s2jz zm2cn~?27+S(YljZf{v53pO_$p3Qh$1%WWNsB~0Q=He}0D$?hV)MI-k4Y|SZW&%u+_v{>3a_li%`)^A8O56|kPio2XQ83GR-QNT&g^qLJjTlde_G>}(Z7Jc| z?F=``CfYc8y#tqm>$})wHi~FzYu2O)+ks7uu%8k>U ztl6HJK6t=(IF>6_LVl*|jp>=@?A)sP)oa$SJ8S)hjhoKqO!M}+o6kG{f`u(xw{72X z;YB;&@WwY?{N`P|_gu2~(#yW?EnmMc-T&6h53pU~=QYOqlj-yB?(3)0FS)C?xbiQ!yRVx{Kku$CbLF3NcbB@m-*$I< z-Q8#0-6ihsH{IPH*PCB=ce~x)WA1L3yZgAid$YUyFYb<04yyF;=iS|#+}%U&?v1X6 z2i@Hp+;<;#cRStPPq@2_+})45y9?djz3y&@tK}Ydx7|Jaes{Oc-QDHxwoavYxT`Jh zo3H#QgZTn5cUKp<@|WG+`BUj%yQ}l2(!X+7o3)p9GW{cWcdo1d3+}G%=ID3bU27_> z@aAXT9UD?6xcd!vcaApLPNpAscV|1Oe9YaE7()>IId`|w_2^-Dw_z&%8F#gQDt*9R zo#o#6u)E`I+)2LvQFpi2J^K-Nx5l;l0e2_$L`(Z(Y(|I-S6#f#JznKr{+pjO5OE^b z9M7I}ce7J$TxV$RuIWJXYwm8wefNmFn|60U=k6M=a}T(?`V^76lj#TD-PBY%!`%^g zH|gqp<(RcT;qG2^cQs`WnM}Xv?$}(cyWe(q>{Qj=ue&=o7f*Bd|GGQER(1EVyDPf( ze!|_cg-osgpt~avhwcvBop|x2kC<6<-ImymoRIMn;P`_>B(76Z`;A0cX7Iyw+X$H- zX3F%Gq-G&^I`K)u3<iDJ3C)^6m%=v47va@v< zO|hG7W^tU!Ch3dms-~IRtP+0rH$VxPB0^rWE91Dtv^#5ll7Jh|h${eLE=d4McoSNN zy(t(&93muO`_&|*6LYDJ!KoT~h&tE;v~gg|x<9b>UPXM20%Q1VP;XCXr@vLw2W`3I zMu*Awxf|OCo8eb3~41!Ju2IrcS#c4VqlWcFX#^h`7}}X2w<)3g8@rP ziP65srQDeZX=0p7I1!5QBxG?LBL*=B0!;=4A}B~g#5tQGFavRkoZqI%=qzT7SJU=A zgcy!A7gWm|@uh|Dg|Z}&Ik09jC6HICD(D*^NTx3>ya&z1J%5H(TLLuAYs2Z-9ZHmB zyTOs?+uY9(2f|S2zm5g-pdo#sv5kRaI9$N$vpq~iox9Gb6FR{S>8h?8W+*T(^!XLn zXXou9s8pSHUN1O^!R+L_UJG4E(=nM#9TuQF~>xx zxgy)Z(&NAVXq0YBUm@DL`9XPF$H8in$J%Ga-|G|o}`U~8;B2f z{iHud^V#tQ;nXP^^>0a^OAg@-MB5gP6>ayf=P>fd5d>Txv{m5#k9AuK13k9#WC{tF z<*`+|Vh4f2I|UfH=QvEI@CsAsuyD(;Eg;!P=wBcVk7LjeBN_wMdSlkz2;6?5oUUyg z@<5{=Pz^azN$0}`gayVf<<-cSdH~3`5WH&yc=dQ|GeHk0AYk`e#hj*_e86iK zDnFz}M6`&1z_6BRG0(?H+LFE??9|4d^rQ4V-IhKp2;0H{9ZK(HV~gAO1HI!;=9oZ> z!%f#OlfXMR+#Z{(CHPatluL0sVd`0@uc5Ljt)U^Ncm&JxQ+&@uMkC7@QOT6y(9pV( z4f&b%e&J;_R8*1(7mR=GKQNtZn;%jH!Y|v>iraI!3o^8YWp?mrLj)$-p0LFH^?nB) zCb|yz3=Lme5C?}IZ#HHxG(Jl0fesN+@8CIf2vhKcp_%jcRrg>h$F6ob0MR+Z=y$w3 z1}n?;LLlM}USr6jRco{l%2!(KIh@h00Zo@M)$ubJG6e19%3ABKxM&}+Er5Qyyxc~bOA3nU(wpj0<*0yW^rfu)JvrxZ` zW)3tqu=GZnZXU|*QdO4=?YMbwoYZuDb-R#GU%>{ua$2~iv8nSeZWw#L_sz4lrB>T0 z_~8s}kfcEW%V|*?hA6A4pEaGhd^43@xHozyKk%XV@B_Zw$TN`o9sJ<)x*=&PljutNQQ0VKbiqRvRfe0N#zc*rfy23kH}T#%eL!4 zDwjrpQ^eeRn>%G2L)peo*?cIo1Fqb+^-yLf%2}D4ic8P~>3=NUFXr#vcZ3bO)|QP% zJ87YuZc;edc=M}h7<)7c@imPL0TF=$9eNPKIm1dcCjuRZM%>UWyUv-Sk=@veaGEyf zsa*?W5-Oq4XOn`tfNME$G)>K`7snWiam!fTl7DQ!XjKgDY!|$yr&YCk@&UjD?WKxr zU(Huwum}Zx=Zotte1x?GwF*9~6`&5E74uylpFP;PI631?ahK;K7jz~WKGIe|m6KYp z>N%$OHLbt__;j@=Kua8bLpGeejAOR@7~&ZvH}yZrDM{|td5rRsTZdk}hK3`d+d`Yr zM*G~fAb}Y~QbvC(^=0bi?-nuui;>IvnPzT4IP%nF$8UCAa5(D(?JzK zQ^QiCvpU0a<59x2OY&kziO}G5!C;gQ<#eBDH?}i!7S(jVl0&+az0F^E! zL~gOzVa_VeGRr#}GozFp;0!bu7c@vU^O%oNyrQwnb5G79)$;TKQa;vLQ^Y@Bay4B~ zy?_Ff{5lF8E7q2*YV%LKT>JB##SK?wo8Ga`tu+R&+(`|E;yx;2l}f#Z4|PP{5blg+ z9a^#OT7v#Xb5%jU*Wa0UNn|io<4 zeg)JILXrqRbs2D`)9&PA?j)%0)rU+VQM7tjFM#>YKPnqFqv-%SGDNHeM zX>sn%Q5#Ber2XAzvJXb_=a~wBbz@Un0BfJg_&ID~RS;peKA=3m&0h%I-3vESaeI4JGWY&=Q;C3^LlXfv#Txjqxj*_w2&4JE96!Y;?@gL_ zAQr31d^nSaT8SmGjK2waM(x0vWL2_iK;~e{vT=Ios2N8|O5rxrkbL9tn}Y%J zU`)u0?=1x{2y!62*p_1Y)sZ~B9=SbeTOuI%)~jH#jXg5z=o7EPu2~+gGsopll?P6XWIhK z@Z7Uk%H}?BIg>T7gt@o7N3!`9CfuDtvxu&Ae|9Gs^-y-FCGAH#cRag4)M9w?>fj6P ze=wC9-H*L0t-4c8ZTXX}4X|5^?Hsb8-8n_~GpOF-uN1lv%@Xm&gaTQKrcneT(z4yK z^zS?<`c(P~wjxlJnt7Nuq^g=K$c+n6)#|fVat*Sv;e%5f+F8}$TLqam6lBV+f=mf* zZb(s=VvRB^#afDhSE&nBWU%W=m0 zzy>Wxcp_oHnh%15cfp0}SNfgVo%evkVR9JENQ{6jtMwTl7SvQiHE%UA847gNN9{Gt znh>RFIGIxl&qHv@1>V#*I2S#Ki_8{i8K74+i^M{t7(F|pdF=OuJ#L(rQ7p#=tbc*Q zJG5#R2JZ}03(RVh3L-l7jy~6`_PoLuBAB+kd^D5H=bU|L-i0(a7lwvQcsJY}4s1Y@ zP-Ww)`F`uI85t_uJO>f%hLsf9CIr>Am8aHPoJJQ}56 zW^R*O^R^Pf%uGQseTqt)3s$PYbJ?Aqy_DT4v* zYy$1@NQ;?@WbD<o-Mz_Gcr0aH#+8y}M%_AJm)5qbVRFskJ`YfwJ1MKA9g$5T2y@I2g|-+V?HE= z72DR4+b0w}j&6+Y(*$xv3!-o*xZ99!a?cA>(CT221H;PMBVawS5bzQUBi4}^Tr1F- za%x9MP*!)|e^{I1$q<;iRW101m>7)-!M--#|gw;{NJ9x~LtKW;}`uI#4UN=vWziTo!aPbj|&M zV$eEYmvq5?hP@H#1LU-~tZ|$`SHB4d8iXOkEf(}ym(qWgYa0u?<@gL8vc=&ctY4JU zh7PTx3=*g>Qe##?6)O8KSDUMfEoQ_a^Q6sr)?885y1`Z5*wcymtP|&lPAp(Q3UV!~ zQI!=P;Iu(~p_98f+l0}HJ{g_plaP9i?qBy*ysp1uJASQcqhkoFK%)y4e5b1b&o%TK zD;*xscSJyGZ*;Ep1cEM1&o!Gf&E~ZIX*3$s(~Smu47&ikF>88r7}Il+2E~z^(v>QJ z2g$+M`XK$U20;4T2b6uA%IKIy)frdGc}C9o1JVNYx}bv(|` z>HjpK*8kCn*LGB<9GqCHQ(!=-w5xlgw`QZ1^T2I@1$j0x8kg#iamhzf6Yk1mpfeHW z44|~hW}1f90b}%HpbL(cy)z+Z+cTgrw7jNq4&`pME11OA7CulF1^E-eTKN+~4hb5u z1wczI5m`^Qb+KgItxzIOb1Z4EP`Kn|L&{%f@)7#!(La5Zt9Nq6&yD=BJ77EGEzvPq z?z&=&oAwLpk_;|v2Ik^vguXSRqpV8lXYJO_r*^^d?v~>9yQ8aNgan_nW(0UBi>|cI zThg&h>8Ha{R^pc02gYR4578XZDhMwUK+a^MSYRzkNM{uB!CNxY_5DwX+DaetJO%>S9vpL!j76da_GRhl1<>;FayU&UCc zb7KXZ3;oSw-kuEeDhJpJB_cKC73LXc*QH1r@7c^VCPW+8{?`+00_5J41muppo3Og& zEQ8ZIlwb%BCAeTFg%$iv)DPtc`_AR`WOp`Lda`@To=nGZynI9dOaA76UQVlT&bRvJ zA+0iH4g#^fd>Sz_h94LwnFS2~mjf7W7Y&x;03wH$MdKgsrST`A^K3a z(MoPRawI{8mx@qIxoPSKaWBxcV>u=Y^><{qg{vF?%2k8mdLHY?0x&1^QGTe# zjNMS}v4pu)mDeb`zQ((6YEy?K{N!j#@>3|a=`}n@>V7w|d4kXA&GbB&r73T`d@g55 zqoVAHZUpt~2OHmt22x#A!A(x_ld^JA^j()qm05^y2K~)1h*I-Tw_z0NYECVbIj7#3 z0;6`82gsLRO}rURSL}eOs>TKN>%+|zjc-wL5smem4Rg?MWe=d&i*39;(}-~md!?vw zZR30?Ku!UUo%SjvDs~Dm$G784%qzf3D$r4Y7xFR^!wkNfsUh4*0ghpz)`ZtW3QDwQ z*3e0CnjdCPmk^AbPp4os6}8KD`RBrGUvitQ8I8~Bx%K}cZ*JwlegU6=n`U?z(15hG zKxR{xqqBR*c>i0N{jpyLEe5=7v(xE_mQuSBz%n2OZL}K!w&W3DOE&_LWz8Xgb1CJK zAXW-P@~|yO-1Jf4@0~&Ih-oT{)XV{*q2R(07Ti|3R6Y!;FSYuA@4-#Bs1Cg?Wb=!g z?pk)+3-WmJD&8h(S1l5?iXqT#2837g^tUYoKW4zTU40t>A1bDX%0k6g84;`nhcCV{<# zA7rxr&%P=U{p;dLh|&@7rR)XU)?Tmy=&}7^9hL#uwr5~l$`3{isZYHb1dGI;pU-O= z7v=H%qO3+bRZmINDUTB>%Hl;)WQc28W&K)4=lBXgusp{uu$pXwy1mSNUbsToZgYe8 zZ9Hs$@dUB`i}|@B-^~DQS4V==6ZEgw-w@;WmwNfUkHtFdU0>2N)W^H5oPr0IymW03Sa=0DdSBKt%8W0MZd7 z;+mLp2MKYzZ#T#~cdOHRO{rLxv;D$6OSmv&34@u8xLN;SII{#J%1C{>QHsd%T;k7L z5J6o`$i*C9)3_{av3P(Rp}Uqr${I{f+sCNS%pGwhRXR0UtJTUC{;O4qJ<7;g?~8!Z zI6@@_u9{(0Md{ z{`rY9pzqIsuy4$Hg8$2}KfQ=%dlmTCHH!m5h7`~jGwzGMV|)S6v*iN(1LRZ7qshPq zZ2lx%uWIZX1p#;$cf!U8W04NEb74%R9%Ih7b+h<#zzk|zHw;JpFF{ye>m$oiC!|p zV+t-=KiEAKBfnP7h5}|lFD=c6EEFy76Z+D0fUfh?t==Fdp?jGg#Se$|vIs?{8G#W5`Bl8+goC0v6 zd`78U(F10x<{WcF+$T}5U|x=mqy0=-JPcF@{Dv(DApLVr6z?%zFAFlInOE7i+%A!KD6K-Sk9>MpLc zdRWUPb_kC2E~Z|`s}~F^)$}aO#URLT75KFb#prd1xbfG-I0@KVdQd1-^Dz=PaD^nl zQ7G1BJ4qMqvzpBR=pBzH|4joafyZ6&wIKfi@cm8i2JKs&IFqp(q8qJ-S}?o;Qy%*6 z<%GVdB3%CpzjpM?asp}x2&e@FbNxfE<})OY%FU0sqo{j145FAdfaZ?I>#LA548Me< zhxI~RH;@_|@rrDA@^aYpgY`mwpswXZ7bAx(6Yg`v$+do>=@OGiibF%HZv{D%sm$_h;HuGhbPK-ssc%xUWB842gM zg`&Z++;S;Jh%IdiN1U)m-7WQ)e-~S^61?rrF|?&lDE1i--o_B>1aA{Jp{cI=$ZeMQ z@q{q5Cm6O}`|5^mS30P6ilem$){H{+RSVM2b>Q^JX6G7P3CSM3Ltwce@;WuKGT5pv z&c?^e@KZz+M^7~Gid0VTlQETZXe9QD_uvEruurVPmAGqLM?8f_iXE z=5wbp@e^E;wq5NtJjffQu$lAJQ+Xio%#>V-yB=%b+sVgWOP_H;*G^Mqg?qH7IwZ<^ z(0V7TFW!>r*hg986_lIAyFZ5cu!dRtul^`&tt3FMJyF&k$ej>tIgx;Ke|+^)Z{{Ma zmwGK1QypHDOIK#dSd%*>g1UQh<$0DLkDC1i$1Z|;SrgpnqddbA)SA6k5ofNswVj76 zi=Z|SdM<+619w3tyqR#F@M)|(XBZIYjLUOCoU`l*GyAV0sx#-~+-C6--p7ecSqp9= z$clW>&If53#lnhy&^o%pq{$yjfLzB{n%nYgCTKZ?N#n-T3PK2zwq2h-Oj?gD`0-@I zq;2KI#o2knK#qC!4RB5X(H{Q-nWVuLhkj1T>h=mkX2jbFdATqA>3a$3 z%q`yyOloxDbHtU)-QE}W?042%tYjzb`Lx6D1j3#@khU%hNJD~Pdx4Z^(=W$02X!O03lUI|V{L;hL`PJUr{a59M|)8UW%;#W>j0oH8@ zP9EMD3)RaWkAK(KWec0?RHWeK?5^+SzJil!Siy$Fo9eE)ui;S89h|&Gb@G)g`M9#g zj*e8sXMhfrh%M}|;jADc5E6nQu?dACKyEgwV$#n+mX&xay&GMaPy$nmGLd?>Py z#`Mb!KMP^1%C{^S*p~yL}`Zy8D!~@AYulVCJ7SD!+9QQK<=k7NwcYe;E zkYmtVYiSD>N&NZ@Ic6C}OEL;M?kphqkYkw2u#n@WR6MHs+6+1VldrjuV`!4Kx&9o| z>qvH3t|$TOwyjh3#`Mg_=Iq?6`PFOIp5`3VH}}N*c5+CQ&J(Rdo|(akpKp@%3kitv z;>e_3bhTwEXV`|@W-I%JrdJ<(-tW(}<;iwci;ZMJ&^wi@EG0@M?Rv+juJP|wuOd$e z8^%VwvoPo#w0_1yA~*fA6na2c3~fkG>+k3RN+$@KG%F4$19Mt$7E|E)(45xq=&87q z(>kjdcCGzAc+Iu*qO)&Sic76dC=m^Ga{71xxB3ChnE)HmfZ{r*z3CGd(QVLXM$YQ_ zz?fNIX6)J7x!KuO_Gf;6e$}e^dG;7;fZdhN^iSXS|Ak5sjnY%4xT@QYfsjd&_Npsc{>P=Kc zmg~-K-XZ{k&VOW6_Qw<6GI9KG@$f z?6;js+ExU4Xj@TkQQk#R6xm+r0=>FoWQHlPugW~!mL{#UE7q?@DXI(01#Utpkmcb9 zzC-uMYW>Q6A^sD-U^Txx0h=v%4b8*d`H;nZ&D%+aYM-7A+gUc>?mYoP{fzTT8rT4L zNj^Bl%pKc&hKdv^nf7bkzr9UXmfE?RPWdQv2QD)waWJj2znR zU@@!ALP!4f7#-+Dp3{M)XCo;(jlE-x#&+e&aMzI0N=vZu5`q#5ey^L1*{2Ld z9RMveJp0>E)g*O#uylC#x1HJs6`pNp3wRHP+g)TOAuYB=s)n@KJ{}VSw6xfq0pRc{ zB`x+p4=j%&t=C)3tKUVLU#r)_0lDB<9|4?&{z_85hAo)ac=t^wVYYI~&AHQ*Ds)l-ocTkR|lkbNPgXL8%SA{CJ*DQU46lnm0{ zDAJKDLPKp;(n4QyX|b=))NXPxnaOc&~_Ch|~4TJ_VCaOX(wK-4~8R$0L@!aRSSt?>1==p}?D;oRx)*7Lx zutdc6l>-Tj9LfX8?VwFhCr`EKfES*60s!1Hb2?e61%dIiQeRH@yYtyy#&`xNsyxx< zw=5@h{W8E}NlEH^!`VlHvc-=PS)((+#{06wshX0(_;?z#Myn&i zQ;mC~Uf-81U|qIe|9a&D8=N(oM~sJ)4VDik7HeD<* zN3|J(=C)eCC1C7WfIW?&({zM>mQE*Zh6hOx0L<4d3oxfKNScnw2`+8M=}4y%X&kW+ z{@){1Pxj`WbB3`%)x-vCoeIxJYM!@#A>Ldz*Q%E zGdV!X4kahTNn~%P_OY@zs~2*bS#CH>iKVENj0s&jlnI@D_U21b&6U0R5_-yDbGZeH z?F9&m@+CaPVtdhu(47t96ZKuX8I--bA97Oft|f6ZtOa-WfUMUO^*5`wkiGe0BMas> z4}{_QVoyGMv*nA`v6%TIrZnVkpokAMl#spo!tSTs^@9va46;npIFiB&!IjZGnqt1iNJ@!9I9` zxs4x=LssT3SPw(9GV2(1pOslLs(o3RRk&nUW>$oU=sPDL_`F%%FrSqXH9S8QmzBAi z&&pgAXdy&pWoDy6XLVWWjr0r^L~dQIGG*wrtjuCexEoF&D{}}w&2o93sR9ha`gs~g z&PCGKmr;+g%sUR2zOPSZK^9(o5|u6yG<;TnPQ=hqCrr2tR^VA*o?OYY`Wm6&;Ecwr zMdT-$(b%#gch+ug-2o<%Q-$Z$N?vas#@rOR-~^2#Rz1OsHWb5Zhqv`-GgIjcumv8DVNUg(RpU6Ov(L8S6ot9n0g_ z2~$K*DU6VH(3W?6C?$job9lW)7Y8EC*denuct)zsi2lNMfl5B>v4s_r_4sQ#)OaQ9 zade78jkW00lk+%4dW=YQ408Hp#{_K2tCtJd5}V-Z7(q#6??7-J{n`pVE=wfj7j|uh zZg}8vakyOXu$*PCU4Hb{bfhnqJa~U%*^O61jnmTA88ardCd2sQ3}U>f?#g&KD%lb5wS7}@5})HtLMJAp+j(toXl8k+}ZCDa)9X(YW8YRoZAo#^84$lsi@I9k)=WqK1ku@Y*G z)ndzCxVYWM=3MMK09pw(<{+Y#P~%Ujgzm@P~!{>EckVNbA2V$SlIy; zOHMp-tzPR71Y8LXL& zZ`NspE|&cih8pJ>#Y(6#p0kr(s#^&)?qLrn6Kedk*T-|W7ToaH&B&()w#2~ASf`pwHnz)2k-fyc(k9(^6P@vyXtCw?DYhoKO%_|qJ!G%6 zj2i2$x`?vbZYaWKx*kuZ&pdEEN*B^QA3Pp4A1V8)*#S-qwbl&U_=a8a#f+fB?#Es6 zPOh{MvfbPjCzO#r;a|9)xAXJJzdugS+UvOD=Sur%Cm&sp@4Z5A(r52|6kw!}v-tU? zLL;J>EHl1@4!PKXiiQy`cUmU#d2Jo8r1#RteD&$9buE3+%GI?p3qZT#b)A;&Y8_>J ztOvev&i1xmBn37ulmmzowmxib&+2EP`Ml-%zOp@+mak~6;dOeV4O1G10o1ybRJIh8 z-9?(#pxg}5iC_Hk@Bi2DxtW^vS@RRhJwbqb$X{x9VN2}=1?4kCY$f12! zvhMxu_4{vqf3kl6SN`!I{`N2b;NxF;-+S-ae>gO8>mBX&*EJ&haweH)OYQpaeIPBq zJDFRgmYbAbxm~`f5D{87810jp>B)(xP>ZXTV!1Rim8?$6VD=S_$$IW)0*xknQmX^1 zH3`)ckX4l&4>uM6&cQ}GUtG>UE!UCpp@mY?P+P2jmFkG9a8t})C_)`sahw&$I#ME3 z!ljT-JL^HZbS{vJFi!Z`O(lfBh)Rz4pfN>DQwj4@bbF86Ga0=Y?iStdd|g^>6}gLVAv;WKrf6$n%JX1d6mEfHBILt&io~wx3d*+59?jDn zJuyn?B4l+b(&9~2PlUxr37)WedPE#R=*oK++cS-bZI2_n@Kg`HM2bBfSQ9$1Nn1oJ zTcWFWM+M4^VjbxP^-r6cBPGT5UEVMScHjEmWW8{iq0pnVlC$;~?&`vGo)nU~WQrQw zQ;V%~o%hn`?>HW%Ytm!%ulYf-PG99}zkM&@Jm4<3*CbO5@x|?;5;v?#3)G>4ovpRu zt)$`UeOerSl_qLF<0b84KW+1V1R3+Q4ie{QzO@=cZqnQ;w4#}1ka26h(eV2H(Kj)f zgU4TF{7sF&2`-5?W|R3Gz0VLrddp4fdhr?pB|S`A>tQIXg}$%?2`yNG<{UPfOj2x2 zj9=SC-@H(?wI-#7S$8D*MFhgySLONmMFW*FyzL@|UAMbcAFk6JxXD z2i2|@^6bJMlR#9W2T7R}9V3IE1-VnpP_ZM{#0?hW>$35^&9Nsj8ZXfj2DKD-dFVrV z?n3u^NxK0;l#}Yg#u`u~BQR*zlNyTa8c^ZchakZ(mZZHTv+0As`w4%iXD?>YMsbE& zaRwS3=e?-}={-+#PI}kpg-m^OYN`@YOn5ln#5!)k>*yI>Oin12_z4-tteK;8F>jBIX=+Pj_g5fOK z=n^Lt<9%KI6#i!YG)*4%pU2z-jhZC+NQ{~jMxB*m)Vl0y?dWe!-w^(e&`ajkhOpbI zQeF5vF7%c~Tv<~j(J%rTZtaoGVtE8IfSQegQPEN;`$!kcf|COz0&vX4+>9p-y_s<* zUXZ=LR6CDkQ>i9sp!+6tYK8EG&WnLBq!SA!WuprC6Dk*>@sxSx)^_o9ya zOQKnH8z><`y{4*+>>i7}QL?Pbq=sHebO6HhNJ@L7Tkw?qQrFySSW7VeVrT(Hy&{N_ zBx;=>n>gdBQJqMeG8jz6pk8Ec0!IhYabS5OtumjTR@1Y3Ey$CftT;5VUXz7Fd$GYj zn5f+i_z~Rm&@zN{1~(YwNXomjr{+GPl(Qz+g)}HeM)Tt^kdKV2zEP0rGP0Y;yUbog z)oyi6_Mo4*yj<|=o2T|b`lfH00gfn@_1)oMUd6gRr(&6)lBH}a){F$Ivy=q}njIVa zmn99lhBHD`nK(oU&L3b1GnCjb=SeCZU6&qxYhj zG`6{*v6;0e<=r&49D-#UTeA9HJxW_9J-R{T`NhjUy$1-xl=?;)mg-FpueEtKZWLXZ z=|OHfM;9H_!_(Yqv$C@ZU5G_f!AuX_ZeZ{49bYn;CL0`FtGm?lqI0=bk`XgK+U7OK zL`FtSLw;FwR0|X!mNkOLSsRV&-HNW0Q)8&IW=NkhS{*>71E+CWpqL1tXi6$(z|M1l zE*{_!{qgY;9or(b!9MO~v~g@XZB#=W(<7~1oI1;AYQxwWl`X~2?(G>vKRYV~HelYS zrRutWWL@2!uRdE@EBkV3E!D_Ksyx84gdO?euRtDu#T5H1CSnwAnMv3fiWKc-&eRFc z(cPoqDiPoZMQ8n0UCvdBPaLtbG#Kmne z77fk-23NzOZYqK>YanxIcWX6%wPg4LXiyIT-XI0R%dnynUtrYA0X~;rY-_vo*8<}? zmI{#TN=`6`C24N)xgAlHJ3Ch|=FDZx%4CL#u{y3{nSo>mRs){O80UTXoR#01gpcd3 zIj>-=bv!pp10e@JANJK&&DT~9wb`Ko2W8ZDX|%Y1!$MRh6@k}M^mlZmCpf=mJKHaL zi*?Xsq+Wll2PyjbQr=09a-Q?M*-+#pA2F1Xwgbx}9dHd8iq1bB(Z&;_?URgR#}L>i z?7MwW6H9VlWQez5ixVv7_P zFrVGARK_C=3n?_6B|Yn8mTf70yStcz7uUU zFG4HBu0ymDO^Baa7@1|ZZx@@l!^fD&Vr_R(0WEIWTm<`>3AvnG?-=n$(JMUx8oUs+ zI*iwDzZsgyFgi8Am)sInttYW)uD*;|M;px-q%#J-&?nCc6&i`SCQHUp>a~8O8BMev z-msttLAu^8xSS0=?vj&b?KYn@l(S4=m{MoB)VGeD0i>IUWxCo3ppU`B@Oi)vE~54WsRRj#JxU#(9&AUve9c?X2tr+pyh^G}CY8wi>>)t5<;FB{mO1RD|y5T`$`cV<*L zQJ>R%R1MT$RPk)q%Fq#F9;Zd>T5X^5`7k)Vqzc!lok{y()f8jbcx!ax1OLE7^-LlT zn1|a&jGRl0X@Now#(KYj=4R9!UoJ#Z`lS~i{o&$4{AhOf< zk$?7uU;U*YBLvKU_k}TU4Pm%i}%A6MOV`f4qPr~HPA7vK$t>EmbVxb^Ws zqppDBIK3wf1xKGgrs#(|MHviyz4i$Vq^`HaV}AP@rKX^13aQ(orgM;;gQZQ(u-IY z5$wl9p%bo10s&k>XM1EuwCcrusU7mDimmc;T0BGuOH^Qrv~?Z$6|u7qLfI5o#xKNmjEBdxlZ_))&h3!X=5ICuS1=hi{PL+#$&1K#^^?pDC@ zwf(0~ajasC;zBVA#X!(hATc?eshA-?RTd68sN{f0;k%WxJYw9O?JZ6fkev#u#CdrootW<1EFZvP+pePoux~S0w9Z}DIjqau#p}^59=71ph6cS zE-MVmj&i${{ty~nvU)FZc&@}_>xAH-^^Y)}LU%bGRO(y@@`RAMa!YaD?xGS`LL)ja zj#F}FHSS@zlYPX0O`{QI@NzT~i!?4$V5Lo{C&;G)tR2(&o$lMu-5Y_rKPH#w5(-+aBv|U{~7HyZXX?2)V zr*VI((vEa`+I*6+Ui7aSJxFSw-!j)qNJZo7n;hF$!&_GiSp=;8aYA1o2 zYKdf(iDQ^J){PE$bzH*>

vx%?u306?v$4z$}WHlDZ&GAvYZj?C`<2=O0`8tiZNs9_Vtk$sBqj??F}nO4`K;u+u=7x$$F9u^O^*=q!nGoSF|^ziLR zP)O7G-H-<}YN;HXSGA`wXxIX#kc*i^?>^KjrkDBovT^b?8eLjQVY(Z@0$iE85WCQ% zO=#GhozBo@x!I7+qi59FB1M~Z@M((2_NtrIOkhmxjTRCk zUePdfsF`*&9MmXJx!V?#x|_tU*%WWdrkH7W7@=wBdjTm-dnq-iO{Qycw~#hX#1tiB zM8ldP*a0(?ZfAzl851~Cs0L4yyhA})tP=5hVG*<2%W>pC>zy!BrZ@_(c#Y@9@QUr_ ziV~(WVOv;pRsD_dXQ*+5{z1abgb_8sIoNm;LxYS(3sU1CV-Uc|SR~9fBpho(ZBpgu zZxem+ZXpRDYKFtC(^!+Jgn}klv&wH#<`hW2$X$4iM-$=Iq-utlX$HLQzcSQ7U*PGK zy`e9vj(UNr=9I|q9Q88o%#dhtU8Wj)$sK4>XSfO{_yI#i*Pfc0U>8Q7O>mTg9G>by z4*zsZ57ombgcU~OrYnS&h*L;3n;F&f*7gpg7=%8&PmCC-A+jEpL?A{b}&U?Q!qO@%>S27A^qCW-gH7qHlH-?q?IVS~^@v zW{*73n%sZ;UH9B`?C@>35%0=<#&JOj<$D#NJ)32|G*K!QxPZGSC*YnFn1gg1RE$&% zA7i>#zX9vS?guJ4JgbFg(sa^E)4RL0onWIJ%|I}i+p4o;ir(4%wfC|X?j`Vq*Z91u z+peUy-F`RQpCgE(oKC?Gr;I>MO@hjD+8}gjkdM<$Cu9)3E{0i0j>T!F9ZF7TwjW9N zg6-$n4?Pz`4M&Q$*p=~}(9f#+xsHA^^?kjP`I7ZXkgYQgRIH&r;;7YJj~pyTcSCwK zurrB(Hsv&ke3xh*uZ~~>xcWObZl}OOfr-A2=v4i}jBuVs%{IcJ2UVF=hKF&Q*=Y3b zQE_MUdgP2X%0J=C=`;#S_GMN)(Kt1;i;Z01I@mFKqx9=cmo{F0-1RQAYS~;6x5GVcZCEPOM6>bYH3%f*zlZnZH= zUe&zFGT#E0-PX@au;o5pQ}4ob=DnpD2PaKz^#E$NP7GkLav~q;?LM1J;WPg z@E1+XJR|q??D$NK_U!iPWzyAi9Dd|Ox$8Kv7{YhyV@^Cdi;sqGJ8}dus;1l(kPJri z_;rV&box(aNIhSzI@&3R)t?}UAlMUI`sAKY(@L6`FLmI?+ zdd7~LYu#1Vk83(-N^r%0}4oK@igbs*5awZHPMObdPO^ef#w%W0koD* z{bH%x?I3AsTg`-iU5CG%|vQanHD77;->+g zB3FF2#G0+pQj46jEZX{2*KcCS2mC5ul})fOv8oi4rr`@kwA{j9>1E!et7M-TApex-wrRi+F$zn-iT#b$W=Dj0HU zJ>8LtLs1yx9Bj=mvE1oJXb5;CZWXm{)wer%5j%{8BfUn&Nkj`FL( z20J|yo>^qcRyZ0Q!ij=Wr4GbFk>z(w(bjTxdVoQm->k@%qMT33y~QYL3Qcnt|NGD- z8+_lW3$M>X6INv7{$!OE2M>UBfCOVt>%b5T?7{TQ^I)Cxs0720IcP#etsklh}@p>ONKS*%uz4}5e|R_0h% z7NaF3wt8`pOSE*}qc%txk1M5FNEREv?~C8$!w=(|+QrRLQfPii*(D*pj9%$`i#3h? zx8V_e7Lt91EIQ$)_`Fi;F!+0v(|#uobpTXMpC@C~H&dYaZ>vY#>9C0RKHlg0`Dn3? z|L$J9+ZErVTKI@hE+Z^Gy@&5VT#zVKFz^e7RE~GuhQCS4ECTrm8O*KU(8eEuOigME zX>=Z=5?=XIt7etN>AeM;15=15)1Q3o$n4dGHcY0M-Q1o^Z+)9xf0)v%NG0dP9ElD} z>aCiZm`dtYjFuX_UxtH6U7fb--0*dhS2C+p*8}U6FC)~6bi~^mG#fy3#ML^@09p9a zo73qZJ@KP&x|(41X%gwR>*}wr|Cmzi?~DzyPJd_I7j<&K(O)oo$~-+7)9iB#f7SCv|xqiZn&?J*#?tv9$_d+eXJWdm|(--FC^< z?2&*DTS^|sR?D^EB*da*s_7T_Ju6w=S`X`B^OF7+Gn91qqy7g+=UHt6X>potNRMOs z;MEel((+%G>xrbP{hh=9va_IMe1dc!b&!OJf_0^hldV>{QbP#Lrj5lNk&o16E@snd z-M4Ggr9vTU!bP>XR42XUba}SfY!+~)vBG$;(bNM4zOKVX!gkxn41=6N>SR?;aODmy z@%C0v<#Sef9nYI8Uo|&3S6~YhM0l`4mOOBU#2caVSt_sBX**PDD`*;XXs%sz)fDJ9 zn6i#Rs8@4*h@ip^oz`x7S9ru>TL5+ zqmXP&5C2o~5Zyd{xS)=1)EaOtykJsDl_=Fs=u(?V8fC2H)At=pD}2RL|E4`8HS&4ZruxbX`w?vNlQ|4iw3zhIak}B+sRf9sePUXb-oR%keqL;t}(26 zTT*Rpm*ULp>4U$A+HW}^9pK6u-WCH~T23YaUgcnWb^{Z>1?=HsJH_xv6<1lWr?{SQ zv27|jKdBv(;7D3by81MmTtIg;MRcl`{w2<26AP}TDYdlF+LX+;cHpxLgbVbyGLJ&I zP~?7@kF7?*7cwL5t<#NiR47*}L(x)kLN{Wo(nsFAy$zS&CC_bnb*!qfZy_)$xE zs<#yTlU%p}=i|F|8+6%JIl$2+S5Ds%D^~T6hGrMr7bIt2-EfjtpkRF499KV2VxM^b zgo_d~(w=c$Yh9$GI^*T1+1g2!it6A^1d|d!OV?ZAtyx~Fw{|9kFsRvWz?XklE22T7 z$peFVQ6MaJ&7-lM2S&HGi@mM+f`GWLwa(Lz=9?dwqb#Fc`x6#owJ1r zV>7*bgCKXlSep=RtAoZl$%5Vm>ZtNyP*x$s6x_hfTT~10Y-wFg10_M&sZg!-or}#6 z*cQtdE%ZPNloYsy_<88jsH}CdxCv5d1HC8INEe$DWRfm+cm^@SFy({Y_VE7XuH?Lj z?`-W#79_S7Xnvz8K1tuP*iK*&W)FL4-IqbD##|f;WEp_@^5;A-8NUP(8LH{JuHfhN zrFn~*wT&e8@3QkM(<{<{$pgja)MSqw{UEclEq&xisYog7sYpV{RivwYMV1VB!dLVy zor>sM4;dvBH-o5x?ar-q*3PseZk^(k;^ zrrP0eN%%X(gx6qL=!jY~dpXRLf2Zi*(XIljp-Kl|FL*&sH&IwnS+f(lX3bS8`6T|i zNn_(k0tv3#Rg7(d`koFgg3dP93FGxO@%n|dc!&w-P1j>dL38TyCGTF|o)UzD3~$*8 z=_HT#F_xleLt6)Ho`+G&rExKl)do1xjQ){9nhDXQaJ4B>HP(xPcF zlnR=V20vnb{M1^g5mh8TQ4rk1y=-!7P9%zdxwfjb#Xnlu3VFL0YGOY&QwSuhU3|}) zuwK_&TU`^hzmTp@zl9N!o@0aL4gz5U@IT)HAHyp-u*`bIp}<3-J*y_q7J?+RM#yK2 zkeO4*Q_l8`S{;%C$Vk~9mp&e9_l$O{7;P)L2*lY56gG(^x6YS%aTC^CbLk`ntC1_!P1!I>JVn6Gd5LTbXx@_?u_Oz~z#txVTx3x*L`L`q*R(5mLM1JQJ z{6uDnyJGVNVRLKbd)iIuLxx6#prJBg3M%rcq#eYY`Pph?Z#{hHZVOhkY}-VOXtAo4 z?2xTcN;b(>C?y+ZD-de9i(LmLSq`iqLOb*tf_XEnol04XSdYEXUZ3Egiy*SVeb;wb zF9t^!>$M%QZ{8biPa;kRpmPxoN5q-ZFwO&TeV2u7ZP*pDF6kB$rEZ8j?_!mbUt`d_ zqB_@(eea5DTwiR1dlQ4hVwK08OzqD+1A8=mXf`;AWEGmH2yWGLAD{vQ?h^ib27Y!#I5K2OZn%gu zsS7u9)xtr(yLcs6TXhv(OBE(c>+PCojp{IZ*Q;VU0?K(w7OoCRp)x1%o49{kVoXgZ z`Q@rWL4q~WuU1L=FJG06QCi#=%hpjFyIpJ&=4*$8lq7JOBr#GJL(QMxREwoh8Fg&D z+01RDmYO*$5_$r*YE<<4qQZ^ZSWrsV?~R1o#Vtkh$SR( zM-yN>w9TiV<}Ts^ON_$nx}yYq6j5vte!AeG2e6+)rx^mff`eTlgB`|x9(J0mC+V9u z+E`6CYtB^x51R%7U;5o_#0yZtIIZ^0SWl~N1g>3%t`T(F4cc&6+;j9nRB-xSgdQ(; z4X!)9MiIfOPX&qo+uQ^@cSJuKr}4pth)881B0n3&NHKt$pSN*t7D`M|p{=Lt^BS%y zAqeyEd_f-jl05d-3K!lPZ?Pw?Ec4kb?#92DIqel-;me5sc3yi3FqAEH%65h_;+?{K zEWEfj_J|OiLkAH8XV@$vSVUY^)BC~xs<2=0{=z4C?Q*X8VbuGf(>+N8RuE}CH5VA` zB4rhiT7>)fnj?9cigeAlPN2W;vk|jxSNGXyZS7aiAoo7TmPvX%8>$f#FVnxpd?vgE zxKGM9vjBep!VCB~TP6WKuoW|EA_g@;^qFybM3E*!s<`A)#_3}y!VTnb+%uAw3q3=5 zF%(Fi6D{Ffigo;v)ms*k;SSWW6s@SkE5&5BCtm!PQj!`4);sOpUmig{CR#BpGNA%$sHE3F2ZAvEe6&;_}7r5xM zFIxD<3v#J$;VZpSOwQXIeUb{2^Y=!-q2H~$;s^E1e1D`6?~@u+cZ{7YlmD3e&EKkG zVg|hbC~y(tALCb;|Dd^Qf%* z{k(pO-H?b+rYu$pc@6hSAB-VIiT5aX-$qej|#crM$H)xQ)=TMvfC+M&w5C}^rYd7hcgt(j8 z>)hl>l5_gjSH2P*a)!&>+7t3A3qjW|L_&;sCul!wB2lCVQ#`WwTj{ zDkQ=)EKtYXH;ln!k=VRBxTIF-O{aG_%Z2e`QTjJ)nzTfY3&(U(myA?b2mCe-%IIcO zhoE_jqH3}r>M~MNMk1(iA(`(gf>b#~$kS;tnYJo!1mR}vwJRA6P<*ft%ImwJ3^Avm$5Zam1T z6w;51>1Sh+nAi}E%JCOoc8uhc!gr~!CUqTW&1OL5Gx}ELIi`w=g~C<5G2IFSt+h7D zWHYY7fW`5X%_h9kzcSjUz#)%EsGkaeXY+Fkme3r6ZnIp0G7J2GFPj0KXU*4XIn_k{Kb9%T%IS_Ulx=I#;hw z)~&PAs`W^Vyxl#54*GiJ0_t!jWSkf?-b8KXmN_L8i7M@U3TsD-YE0l6_36m7SklnkzA-#mHY?hgJ7&kMz^XX&5>{ZJCDUUC z5_lDCKvhMnnGFbGi)*Wkrc5BRdDr^oEFEU8C|2nhh?Kz6yBL8#jH*KV0<42YH4NNuIh#>#5+Q~TqYTdT@ybi901ySzCHYUAkNq(E%M z%Z0Y>@v8tdiT+CZZx+*5!tK=??V6HR44s=qJNA!_0$I40(rK4MlFEXT^Ag&tG0&Y2d z4oOQjB~5U9UJQ#5tn40Fw%V0FWo1WP*&0{&gq0n3Woup8V^;QZ(duK9rs{jd$~2cd zt@tb}R)3x^w%6~D5f>4U5^J7}B8!PNYEr?PvJKeQfYF>)Yogd{iW2Iuoc%VV9=k6Q zJ|7o8%Mn8_o+xUf(K+3`8@Z#B^VVZU_OuvA8Z8ZkWjC$3JHhvn82CDZAu0wYVu&c@ zUL6d*a;hh2k3vN~LG^TEPLmq_5_-u|I=B#jEGEL6-;Z+qqkfOYEwCMzO^mt9?^7|h zs2zg6Ea%q@-Lk1@{seE^OiXAdbYL2|lu`Er9mt^` zD3wuc!jSaHV<4D?o7_#FPF~R?kBA^xd(JxQ=kB@FrlC{#R+(f{=)^zS*ajQFb ziI7ll3KEYOMGzpT4O&yAiERFV8a>GDjQk^o<~!Z^h@^2iC4oi;}30%O0!bku4joNaPG2mEA8>&ttX@SzMirt9PG!`G&u)p@3@4A^N%=>$Ku7MS#P_7q zU`ei=z64TPOjubFV@9T}UGWnF`Qe|I*YI&J_fPFc%At`{>%=Fr7&}-SbIz1T|{U03=_&P!|QI$>q7?ED)xLTUO6eNoID>>iYwjP9tf4nw=Xm2=Q393dBXGoSo$$ssPbj&1@ePAj@R1W{g@=yAlcn#E-^O zWj?}OoBk$uD|+NBrG5hwWQurNBCi2jEz^UigUE91apEu2-?v%PycA!=7Loge%X`Ys zs=$w4rv#3SaNd6hvLjKK3QTJHn|!IMFtO`KC777VHt~G8+>zH<08TsxM&oQ1`xayC zL&&mJ$btlG7n;8Us}shrv!E&AH!FYyHfYWOm6=};yH7eV6ZI?CXe^&4?<@bk-ZvYT zCVsK^eZ14|eRTrQg1s+N;^kk_%P7gse?qM8h|Xbm?7Q|x=h#C^f4KlOGD&LU6`)-Q zKFB>tWiJ!0uiux5nAGo!C7jP?GC%Cayx>BV?{r15r+F7Ld`I*|(d-T>rIO%MN+t7+ zXTWew`63eB?AP$U^Zj!P-y;vy(XZbz_EaZ$p z>4v|{q$rSuI8;7$Oj6krEc>-N?wABw`@+ipz6|cOL9b_QhLt@qFtk%yPLVX!Qdw}1 zC>eHx_;Y3jf{=1$C`%hm_Hc`SyG^|CLcD}f9PuQu5Ob;Hg3zOljxX^Db7``R0}&k| z-ozu!rH)%dUwP)lBiWDPE0KB9%bX-5V3}f0!F8Y_C`#-p*c>WCCo_+lx7SpJ(IOU= zw>4<6;q5QaHaQc@Yl}|LXio>*%`ssN!j68}&E$gFVWh!G#{nv8QRc=Wua_S@o9X>k zt>dv70FXw;ripuFXhN;&j4?Nt;>hZ(`D)J5Hqs8o7n?^R+KwNiB46Z@0_NX>s8)|2 zv$L}ZoM&CmnONEeM18^GA*z4e`93Pr38e&B6m|(~9TrHWihPZv^^6L}126U_gK!n8 zD**^|QT&stdd28!s39RHDqg>xUn=l?E0O6+({3oHYEY*nD*tyYn#;3X9mcx09I*w2 z5{^M~r`GUy0TBX-v2ih_JhL>JE*(dP5E~hDZOP@8BwV=&^`%rFJ5=i(tNBV2Q2QMmfV2>)a z)2TxEf%U4_itGxcFx9UkQL)OzaZEIs$ayeVV9JqWhv6kv@G&W2%BSk1(O-a0{n2B3 zd}buJaE7jmBr@xir3YA$DLkftNEtNOQ1d6f&Fa~NDI=m7Kw!F_G%3ejJ|h0sVJ~VT zbB!5y(TgX~T{@0yljEnEwMap5dSQ;IXmwWzVhWhF891^H{fyW_=uQ1h;5E(Hv}h@t z$E2bQIW?_J220n!_F}|e+E3UfXdE}m>#}D6n2WCOFRj??Z`TZoNW(rynYtIEX3of<_NyH~I9i+ALB$@B|zCC}P z59MJSAFk*9x4yTvnw}Jr`R{#zsGs!N;-Q<`5r@vBS2?lI|;&&V-%>14a!YBPI&n6Qd?Q!KMiTi|&cpTzY~@V}=mo(>)Pm zHE%n(VM@K8h(zVXP)vmI0D3_Sw#8EDIy{xr1A!a*P*Bf8vjvfMXsJN6&SD77QVB;` z(K17B?r=zdEN&y7v|LCJ2_y%Kl}d#%bShqW>E+N513Q; zcv)c*|M`-5(q&(GF=rDdAcUsN4-2RvD+mCnOKGuEv#qQhZ zyKg^m+b0Ms;amwUHS4PO3)5|BNu*@b%Q~#;K%>p=Q@LAS(u*3KHtrt{^>BKPPg7P) zZzuZ=0az{$jo3$No22mB72gQf<0E>9ySss(yPjja$8}slB2t;2jf6Q*MwS3b49^^u z>>_!ZupXjkNSt3y@38u@A{FOmx!-d2gFNHbFCS=6)f@mp*H25;w^vSE)pwk}s_#5~ zRo_n1ywe2hJ5FEKcb@91>*tE(4ns(Gz8CZuwfXW9F*I&!dG=V$UaWo@yNb519f5 zVdKawdQ77~G6;otYFkY=6n8LFWOC&N`~$`@#XPNpT%awQLM;8^y4^+bSPCv@9MgNF z{cfNsKju5=VY|m2+f}W`7MYX+ep;ojkmSnpygf-*U7k1V*`I&@hkl+Nx7xQ4ru?HY z#ZJ{)gG6SoB?@c%!Df_Y+l8P*TX>?xwG_Cd?^%*}O>(Rx@b?{i_VDfOpc4wXR9oCR%cW#$qFD%KUC3r(G#Jr)g-G zyT#9%C1sU4>aKZ2v-E?JJckn*Rw{LV5yrdp3 zhTxRt3=Gh-z~ESNuh#FGF>sJMAdqwcA{2VYY@`k}G~y04B7+89KlMWzIU3V@GaDv1 z8XokI#uvV7M`KFspwaN4e>A>uFUTZ1k81$8|zN4Bjg1s?t|yl^iOBWp)y6ZtcXPE0JtCuM1hd1nT`FX$6BH?X0&4()DjXUr7u>csV(xI>HL2#lbfARxR zGu1zJew1Eb27T*+Ks-v<|J4x$p0$p#xon@7!=P|bT4ohv)V;xFu9Je1zNyu1WgEL> z%8|edxDJaM);;eJd|C52lXljtd&7`cYCBz+r{SbNIjZ~b+GXAwnS!M8T5!fq zrZL`*@szV$y~?;2*5s5&PAoG*&Tv@`1K>fnYchk|V=R2h>sWF(d2fSrHNo3F>N+1$ z4lK>NkEJ~Kz~n^W z5s>ucK~dj-*OH*%`I4aE`Cw2Cl-PhlsdxYgV6f99PZ~8&9VnR9B|+gSYWY|(P-g%X z=E*t57$Fhw8N@vqgE0SbXn5 zf!a{pKxVtPWV@@!{qKDor1L|c$QF|1F`Y+ys0G5Do~}maYPCSdc%}Z6eU~i|vCjt% z=L&PHH`Vlf$f#=tM``R#!O2#W5CE%vJG`2$Dp9=FiYd(2mKr4Ip^y$-q>9y9zqVCz z+%j`2lVOhTq&s<=%#pf0&$^QHVk>oKI@Ox6?qus#v|HpO@~Vmjkg!~CYPSg1IkxOY z3Y|S5A*lGNbWMxHH=GUzZu`}yuGJt>4x&|jWC+KkC#<*EiB09l7WNuRHA@&z1RBNi z{V7|#^e`nm(gd4w#7_Mr_+Op6g%C&W((+ooH6g* z>eZ`P^;D9co}RvMmE`0pv0{ZW zlCj-E*Av@uJHZA*cV=}O0%R>%vez2R@wgL4u@$TY0j5!R%wU2OM8{1ujooc}xf=uS z!&;?6bel zK6~fC1|NJkzo7+HgFN^Vd_E6E&&0MdZmy(sKrUR&11qZ4#kOtzAg#OmuJRS|>l1}YCold39YV*YxG0cEl3<3jyI{up17?1{P3OGT#6$E#ZJZSzX||;l6tJw* zZ0V!xXyvDxi3Q}Z4WIR6L4;!WVhwKEge?ihe%3D>>T@Uxw0_nvc;yZtZcYh0-Uo!G zz%W%D(F2_OSr)zRKn2A{?h0Jt1rZMT;rkE{_~G#o&WEEs`T20p_!$hg`%ymt5YR^x zXr2`6&och=z_4&uf1&I@o+pEYew+_1AK-YRqyL37plUOPO|`k3ptX;Uo&pGr56bSK zKw;#11`-AE=q@V`B5TY9%VUV|1Qx*cgyxG^+>^bSuoR!8dVZGT4+y!KGEVnh*V(|V z2V?}Z)J73PCQ=jT$qtYW%QSFzGBx#212|Y9l+6JoirR$Hj$HIfSjF;;v@dCE!Kl## zF)K>T4YM%hs~$oSoR5aSI!z}^nTGYIBt`# zC)Ou#pHt~pYLWMcs8&G z-b)xeN5+746Yo_2+=&5W77(Oa=f-&*m;&ZF% zCw_j_nhcIc;e1{ZH5lvu^c)ot7gr0`!BygY;0^+z`C(08zVIWh3X#$tTfx<349(Os z21bGTgwQY=o(__gOu=akjG-VgCT!@9Qx?&{`K+jNAlgQ(W_z7PCOn7=LPGaLNr-8K zU`2Yv9KNp8$MZljx*j#X;lVAIh2!!DRq7=JL-HJz@~%bXc<+@;akc#B{8THr0ei9E37ZCrb)Ed8#L&gslaATdwC2%0Oi$k&Q&0 zBO$9bEODhf1YD1u7l1pd&Pi>Xu%dQWM@NUU1KgYp2LKi-ia8Ua_1X?+sC1}L!L^_< z%46Hd*CrtzqHc&R!ekJ``57>iXCzb5FCnWH?--HO1V;kdN(jPvLqZT4ctmDdqWg^& zcezB`B)F{^BQ! z^A;l8}4PH7{gGb>o(HQZb`RjU`9}l-im<~EA`l3wcF-8H{S3~o?nh&N5j`rnhEqM$t(k(3V&l){e-j-Ok1}&C zy`XoZwUj_}4QZQ3vcNUEX$-oQU<@}a_;1i0;JzS$Y;Amj9}u8GJ4G64DJw`lf6#R$ z!t@9hq|z25^k>c6XjV4?|7J`4LykB6YZ(4D6f=DvkOA>B0Z3#69Z9?4fJq)mMAs5F zj^G#=?>Lqm83P6&uqgo;GLnp9o5?kPD3DH=gSutQnR^EiZG?F=o3qnJTjVe{x8=hHUpQA<#O=7yGJOILLv@g}B zxMP`!q)-LM9^=H&zNd(46vhoLlxL4Jt!KqI=&T+%3;jvFD|k9PhXvzemSPp%`$t|h=tO9rbuu$n;Pu;YZ&T2BK5KdogrH)l9!$Q5vIZk;#> zbe4p3@+>k85ItICLR1lx}j3$XLh1J#3O z=9teuSRUxErq)Wq6UC0xyIgJx<)HR$LeXWi=!Ml~rW;i~@5h1pTC0PW+F=W?p&ArK z#t-VS^1_u%%OKUf3Q86MRuu<}OL^Mr(i`D?v5|hTfSzl@>C1uWQ7MNb5m&zb==|0s ziK~BVev^v+ayUZrBlU_>m&9|KNiZ=2L2d;xIbY6CJ{)X;Aoi8l7gQ4&2V9xVwIQ}f zHD`=!vJEV%IiucY{1|P<_0hLpiLfLmbK8%pQq91ZJGC*2$lQRAh84ePc9<_JjSCZl zKx{;d0Q#GCkA23%tsx*Iu=-z>qe?GWpd4yimr)G%2cy(Rar^d8oHc1~789z|mVq=6 zP4VS%u%rvl$+UVZ;?o2%E8FZ6s0lWa3pS>QbK*%%M?$JXSSaa@40HTbq9^DbX@Rmf z!GWX;IYX-J1GWXl+u-KRlHCM4(=6!>-dHwEvo=e!`gorz(=5%ZL*$Q5>9$ z>R@JL1V-XizcqETCTSfwJAHu2#R`}XKQUrXge9$po9VJoQ!w~#$TpR)fUX$TL1%<_fiMNLJKydU05@2ptCJ|wV z{}ohTDmWj`qW}7;W(Vsgy;m&r02YrBZ;FQ*^h5F2i2V{2i{N?V5Bc3{f3{i1P(M$3BpS8j@TF_h$~)FDzuwaVBALx9PTqo0>Dt)H=j0e5Faw`AV-X z)`aXHqF8i;%`I(qee7Ve>+YJxGH%_{uU$wiWARdxB>O#1-Ri2@@81k-dovWU zm+d{?-|@-RQW*YlXgbW>tlY2`Vv3zWfk`}s4ECdXBAzwt!KtrkBax97J3%NhZtJ{mJP^|rjGVZWAcUb9wN zO1C_rS6#;@Ipp8h=X84JmM4gs^=~Sb__bHUby*4W>X*Nq9@D#2D<*n|Ei|G`wW#QR zG6K}{GalpA)Z-V^ev1{=BI6qdnHxI|uwagrgI=hEjc6IiEIk1i7;-4?@NZrU_*{P1 zF?0Gs=T^m!b&Mde;$h^8lt`}F$=&iCJ>b;=jLSj$+jm&@GUlpR;Q);mF%F6j;ox4Y)`vT;y_ zj17=8(mH}`adFrys|$N)RlU)DoBvrUaWYp}LXh+r%`;;1og6d$m+a?CHCF4z*F?RZ zWTj^QGMPhWNU~RyI&OSp5?#}}E9)Ka_e3oUj3|m(Oyv_(-#U|?5cvu$8h;`R)9X5mMsk1!C+n)Vdail7KEnunz+v4bI(H4YJ*0!HBGO2hb%>ASMn$mzck>jaC8ImaSA+=8LId+gcm8 zqGyiDqp&TXytc3{p=q#fy;9hMd zU@=yNp7K$t@5YSo$0g)>MKgP{G4?J+d7^if=F+GfA)Db+`HM4S?^49sU*07k2%UB| zM9#Yw z+j~18730K}?5+h(6@6h9uSHa;aHqO^;eX+LcXnTWR*C8|Pw zm${z<-wg%SiK1|M|CL>1lfA)3;O8rzw5Sw6$F$lb0D^ zFqL$SH(Ze3v{QnL!~|)#terw{V&pcNmLwZ^Zq0V;UomyC@70zQl?~=>of;E{7->xG zp6SOHZCmTgre}k4Ic-=|l3{&IX9MG5nBT(qu!qQ25o9k@ zV$e%Pe(*8y<LBj3Xm7$9h5U-tPv&##kV>jn^1J0A2wzt_Nzo3fT1VR9fhfwq2^z-{ z9aGVH4QVb`acoP!1J%iP+(_7G4l3a8lQm?llH*>IzZu#9Om+yH6W-_P4oiPZ;db>% zX;u%4fVkpm$-8^@F^}^HegaE^WcU0zYzp~yS3w`I)0t8|m7!t$@vf?@KmK^b>W_!D zU1*6nJV6sCmty|1tRMDls9FG9(ULXX{9cVm9cCp~o;fg(U^C!wRm^sMw%z?X@PQU8 zt+cRTBG;*ohl)D*>f-h84TateOR! zEuXx$a4jKeaNYB&!F7+|Dho5?1W+Zu?h#yxWL3-dSSWAQTDX5uZP8Jf>LDt@x7CGQ zngi6`U;f5q$K9#+2F?+{&-Mmnpl$Z+B3+i)*vzZAh~XbG5{k38N9VY*Js!rBXgKZfOnq}EMj?{6yoM?XbsHdHd-FJo}3L(hpo%zhI z>fQ~u;UJ$NDD}$em5Adl`H7SKM#ay`PjCnA@9t6~IVT9{1n}`D-|gv;W2LgCd_uGD z<)d@#UQTKnni%IV$r8@Df}3sL2oN>_IWWV}L7h5DQ~U;6QQ8 zfw2*}4!&#qdA5aJWKr+6s3*Z1V-=Z_GDlW*_Vrr%Uq{Yu*=+5#Lxb--DyC;9i4-zM9+9gN}PINeE^LZk!{c08BF^8lsZVH)~4cb#CT zLw@yYcqTsq|D7=$PTc1W0YM=>T{xiI<{HF4g3sWEtQSIT_QTynSnL z6R(qKE7~(<5-s4bQ5iF4swCQ>d+x_QJa{dR36IW2`p!_ zE!tJUB%Uqc8=!g{T$wL3uGwbt>e2`{ZO!7<{0NZ_C0B5T)&6pRUjC#C4*DC*OoVbU z=jZNwLi`Q~?LUYan67{lme<7AQuQv}w%h=TGg7v!EdhSfMtqCnbTx6zOtIwyw z|3RN8)&sW2kf8?ITaWg(0)r(0UCY_l!EBemXdPji)Y{Dy01QDVz~u3t8Lpov-J?Lw zpd3(koc4kEE`kK{ptGNrG z$mx=f(bcjoKGu}5C^W%;Mp8&ha}+D!A`|aMKpFxnj(gVQ?vH@{UYP!i$MDhLNCM{o(6Kz?Xl*I}zQr>6}6%C**HgYI=8?!`C8M7mE z)`gOBj70F%Dt*XT&R{JsQ>5en)Y#Bj+nvFu2AsPAFItHXK$hc2e`gg!Q+a+zF=r!e|F_%Ao4}5zuKUvmf@YpX$7|kZ$dw@Ec5hAT?C=ad$63xV` zK~IZ%=p-a&A|F|cCd)YuLJ7OocI)JUi|}+^l7P7lC?VjHGi(%7Lz7LG{n3mPT_SI& zI#%NXthv9Cb)h57N1{V;B6{1nba{ncOEH3-Of3Qp2j36~q;wk}L*qUM3u~HP7dFw% zc3y{^>ulN3+vFg!9_?}#ELm$V+tMTT-jXI7s3>HW6KqyqAkj1g6JCWVFRY&^v%W-> zjT*lJOJ0R2D{SU#OO$t4iE?pcM7g*zqP%^KC=Zo1GJiV|<)LTw@QgFvru~KnMNBJ1 zxwuKow~Z(l#YtIgM7ijj5#@!8Aj&WN(lAA0u7j8W4oo1*1qEI*ikx+2bO$)L3C{fNFjz(jHI%?K zXEwuM27+!^8Y8lSDG{SU0@Kxk=$N>cQij!C&*GdQzJYI2ix*b+N+SQoC9C^$NY|n zCwlf#zvK9o?takjvh4>V0LF2^IR9al2-WIfXWrqRzxcEo79L=9=-GNiXMHnxOpz#qj`PsSIQhVc7r$fDr2MMtHk&w8ypyKz2fDf16kn9W>$`a{tWK?rsC|{D zzBr;x={%m#H!n?FPA{z`_Gqs2_^McRa6wu566{bxbZGks;zt$9{En~cSsANQ88hSQWVKN3=C``r8h{9A9 zuc9zXM-tMNdJ`DNT!A`lXs3`}BOXR!KBai(8slyvTaQUg|5+suLowU9jVE}Ituu>YP2p| zy(Vv-$rcfD(ZLkL2d={u+8BK%>D;&(Yi;$TWUm+w*3TYyialas8P?!FSFlHi&Bj85 z<1mD2aBFdBIqVdF;i&focNFKZr|nLf2A17hG1?HCOMDW$UmC1@ZScB*rh(1JyJ`?) z&YH4GGlH4?YP?u6{XBqJ%kfULiVqCDWW1NPeK+H>W8t)!(m9P4DoQL<^95j_1+4tn z&BFZ|+1li9mJ{P%siZNBVU5UCuCsllAV58YNh+Fgo>ku2MLs3Xle~1$CtLit97T$a zkNy41NE@g>6k=O%G<9=X?>2QT#Uzwq28r@SheiTCX}J5n>Y#(OUA2o|2q;IauUg?j zZ)VjaQAxsQbgl^lEjk|tgT-6=F!;TtzzeM0h8I`Go9IJei7gimgcB_$Xb2}-K1iX( z*jP}|ZXg~V#1BS;lP#y0()Ip$eC5M!tZcatlCd4ZFIf>JgR_-S&~ zxtZ@e%C-Rl$kEq&}5!8;`dx@EO_;685@**1_Z^GE426d0Wgle0;sk6shO3cbh6n-EH zS>!-hazr;A3m2WWSO$34C^_Il_-Hwsg-m6$MpzW$Q5!*~m}opYx5yqGnb;*CCObGL zM(E?~`UHMl#3us__YQh7)7`4QsBV8Y?_b~9tLvQ%f}bUb8petRMo`vDZ~^Uk==<`+ zL?8C;L!x7ZZ?i210IMKd*wI^PUp8s%J1=JJ_R;v*gB2%f`mI<))5( zG(JW?8Q|n#sCXGoZlWA2>!R$c4RmJWKxH5;U~MC+Ppf%q=K-R9RPDS0an6_Hpx3tH zItegkulJAkdhf(uxA#v%v5l_)#Ws$%Ga1D;Tnu#VqjBgMm97xSuJ(7|z_PNiCVh~E zZ-ytw=5SR2RzI<6pA105@BJof8tSSUTbh^m@kNtlWV3b<^jBCG2wzDmbqS$_+b?r6 zh8{j$tPkO8S<$6K6^)UQ_UrxQ;l0& z-dlt@i2iyPU@slm$9VtM%TZFlRWC1%llVmJNX&)f5et%0vu!>hwVNQrko){jm45*`j2*X0}iEU1uQO$8aNb<)Du<`d)5Ct(iD=ZJVVK z9dUE%U6LL#!R``wlG)ZXb}P{c%BHdO_Swk#Jjpmf`r)Dd+w4pTsu$$T)VuW2we+O+n4YL$=lgdUL)Si@uTyNI7*Uw z4MC1z!b};z)KsZQdPcPdMTEk5WYC?-wswD)4S7|}GL`;hE*3z?LK+}D(#ia>rwS9c z*@M+Ue>d2%MIKR$zWWX;Ge*=Cc8D}CoagCebzF-Ym*Thu*wCv*8<%b2P8?UG&bWx~ z2M+QZ#ue%T#zQrPNLQ6{0lH#j(rl_DV?z@krk*_IV3Aiv9sillBKgfJmc-sGqb7G- z4@Gvk8&*o;1`bI3)m(9vDRq7Opw49M$e*kLN<9~#dO#-WWo(c$DLr{JB?vka4w`a) z5Z1E>g!QuE@q;S_Q3-5(%d+o`JK!?M;T^9EAx4VG*2qGnr;VG&2E>c1{q{%~K50F6_aoA#=`39@AK_rzIn9G0_2d$v&dZuHrfRh|uxeR?e@5>sng?b#9|y8kx|>9CaCYc9DH97&Qp zlW0Oevio(+Hu!s4wDGDa*46$rvtW-o395N%vn`Tr(`8XuTN{pMn{e1ZAghHI5>^Ja z;&fep$At5ftxQ51I=(Mc$u72&ZNXMHc?7-SmZmaIR}2)9Zj zjD5;XyIf+k!KQ34CkU33Bj$Go*~~dCLL*z*J=($lG5^b6l3vGKVirphShl)Wxhv?@ z*FBt>5LJ_zcRxU+X&4KGh zF2z@G5a{{7NUMXGu>Kf?2B~En7Ik4}aDzaYN3GF*Vv~u`!DPC{VaM=5x2&7yym|v& zZMH}QB??%~mIeWvxAB6!8n2&*9;m!QDcNQLBBb(;3-kkVJ{eX(_$U$=A6Gskn}X2; zMl#Mx2cy(s_)`VHqAPR~ zH4W9kqf{Z}XR|k8sZ!@qNS0l}lDY-yIA){@lEh8z2Hr^W^Wt*F}YBl7Iq%qPsO^d9GwM;wm<8RT#M?X8bzE{dp&g` zv@auF*)-3kRx!DSZ4mOsHu{xjtI{wtL~=PF@D;*Tt-AlB33i1KP?>qe5NeVJF1VNq zsE!TPcGJO4mqs%$#ua8(6u!VHQLZMtSp{bpvdM6&%WZ9p!Vv2MOiN&6%@@IF^T1`O z6?<*c(8__~7dJYzu)s#@*2olMXB-*JrL@MgsRCI5+Jc-OXhr`e{3Fk+GdRoyP(!AC zKoe!)&sw(=G9k(4Ztuykk588(e06X$!OpG#JOxwhxPU~wE-5g5BUpI{LF%%obrmRV zfut=MpKY_u`3oj#b#PEAB`uU5ICpDMB;E0#_5%K|%aZopiN(0$9LwxJG%30UCMdpG z(yQR#urmC$cc&n_OXOQI)w?a#dwwT>B3xiPmnUAE?Dqt8 zGcy(&I;9y4ROY7bQMMIGg)mZ`n>syCakg~bf*ceSxF%JaZ~}IGB%9k|8#OKVkT451 z(6qh>B zq<0mZ&B#yt9rUZ^8=-ynNTn8s5dki0;bS6}Yb~_dHzj0p-oC!`j~L=;O?8~T%bHr9 zUFAOg{hvpTkyn@XSHn=o2pN%e_APM;R5 z%mxox3jAqKMmJ4&1|MKMx-vr+>~F69ol~0Y8G2lJbHR8zt+{_J@xUhDVgt5)m`v$H z9}H~v)!{rAHVT7fixOhq!QAh~g=w<>UeZ-8uzPq9%_X(?U)OBVEFAz?Oc! zVs-nD??{vH(8j2i6u;Chu(7&s>b#CX)ohtNoR$<0_uGZj?9nOAn4MOr>%E)oGuZa( zjdj`^HgxAv5a}`@9;vCulF(>CRDNn&OA)HoT=&VEIujrY4u8 zS~qpx>a#GX;yK}IO#+E83sx5B5Qs?of0{D?hI$t<|Cg*j|L>a8+&%*cM9$=k>FaXR zcp-DI8y#}B|N6$c{}qgrR^B+J6TT5ml}L>OYtQ z)JwhT>F6?rjK9g7o)Y&lXmGUx~zCm1NY` zPaB4U5X?WMUz>M7)U6ZOMp#`C0cmZZ1+qh1tMVK-?aFtEhJheAZ|eLH-sAewK8BKt z;Gpz5NKTRl#S2C_0F>N5Tn$8)rX>iFMT2zo8@<6XS<*n%G9f>!+16G~TV*ci(c@C& zvIh3yY0JD1n<+*72Z-qXQmq!m}-bHIk?>p zep>!hVR<(hdNg4J0}SXQ#ZE>9JJD)x7viuE9wzik@3d3BNr*7`4rhsg2nhIBd#Bku z;fQ;s(`zDveYhHwCLsbHeTz4^4n$~9Mg*&1wT34l0u3MWh9?tQl=BfpfIWY+!}P+) zIS7sh+WK?4~hu&9+S>G~6^@`b3ncYt514Rlc zoX_w7uQ-F6QmgU5_#5G|L1R!6fUQ)dH>W@2pl$)hRck>_sqB2Jg_VnFU2Ak;y%h!z zdN%xQxYx23PycTCS!1Zq>a*cGF9b@}e!e>2X+(pu%Zq$4J`k(&OgLSAHr$utXVtN5 zm#+HVT%}IA5D%WokT>XyOtyn(qkS3f=Wt(Edsdxy9UmODH{8$F@GKB2e7>EKKs;do z^N^3T#X^xHnm<|GK@mE>c%kW$QHau*6yY>d6R}|FnxK?5k7XE{pq9jA#qWYlN=LgN ztwVJP1|n)zl3sHPZ(kKBkj}q{7A!Auokw`SXjg=cwxJjjz=)*N$DS3-Vxp>xXu|Ue@j^G6gk0l#v#uMuwja{ix{gCv#3JIX zeMi1{ti#p@x<>-K(G&T0LC`YDEG$ve!LUQ349~SYoAFxk43t#tLKLChu+K~QZqf^hfIvqK zp--6i6mz780rrzE6Yw$2O0Q|Cm^!Ehmrpqc3_XumDSzBNm?VfW{LaMOb_=Z*hOP0Be-LMc4=i&*p^56bC1Z2oU96L6^O;#lz8Nuoh5S zDSi_?)cY&)>c_IAQz_>QJpR!GN$c)dhW#_KWop-BPa1-&5-0H`Ah36sN92Wi;M%+< zW2|L`!4ZI@;gTNwmM9>_?UFJ*=TxI--0)_&IrkS&F#e2UewL`6pA*VH!!gf0xV5S* z%{rG0c)7pd3Y%QrMhSKC#{c_7l>au!n$^1>vc%yFGK57LU1Vmm+U?dbizX$`@v*)S zKy!)#lebt|7^xW=Xw)Ssn@ofz#`q~!s^zKTDUAQMZ~8ShH8uVD<1f>bwENoxi;9i( zK%Bo^7U_-OE^a+78}`E)7FjAE34XP5Wszi)(Cq1HUcZr5xPgv;^D!;GUUJQcPTqUw z%sDXO;cL>5^f#O$S+lu(sZ4j^(zV)BTJ{4$ATY+;{8UZeI<r-?|!nyyZ}Hop>1qB{176C zNL&cC&!$#t6Rt@#`p!EfS-MSW=W1Foj*#Irw#uwp+TcRu#oj}>_4i2dQXzU+o76{R(WH_p1^OaS$+iATlF-;cf}RTSo81C=Cc? zn8QJ~j|oFA73Sm{gaBzkxvX{}SVTb7*BXoFuEQlsSfm*?q+x48E>R7bVgBd8_3=L^ zohZlcar4zdK$uO;U{9PrWyx7=H9Or>g$ ztVV65hO&vPaRfRaI(>@76A*8~WBt(S*y5M~oWCGsA4jSrQH`5=O<5APafT(h@)(6i1r^E6*vQZS4OlcMEV7_Tjr<<9)G-m+qEt2V(<0aaw^Fu2(u=sB)OAzolpuyKJ?a=u>3{Zbe}?ai{IU~Y>-5VQ`~+KQ2EUjZTm5tGgvLiGIKF+%T< z1}G-0blO2K=4T)mOKdVZnC!i4$-$T+f*j1+D6t8(-{?l+T~~14WCG_+CUD+l0_Oz= zt8?DL^u#_X@R%??;x+=m;2|J=bx+RU?OB1xg;^1|`~TCd3@9(YUFBMNO?WJJzo08V zFs3UOPtHRyY#RYGfi8nxL>35ipviyT3X$d?I66PaiNGZ0Uy`Jd0`#%Jgu2ccbv3u^ zTK?lI2_(5$A&rg?dF%SV6s=nR^LnpkUrNO-n6;KNDbeR^X#x(ZiGQaToq*%vl;*AL zj9cU5o#wY6oo^|cmc>TRUr@=G&_f0M%0DDsdfrN!qQ~@EB@0$E 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
    odG*{Jt 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