summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-03-15 10:02:47 +0100
committerKonstantin Käfer <mail@kkaefer.com>2019-03-15 11:55:30 +0100
commit2d799cc74a0f1c845d436b3bc23fce7ec70dbf49 (patch)
tree4b93f13513752632ebfd58504c8a367ae20b043c
parent7a6d9f537335a9f1e46f49da4ba4d79723fb1c2e (diff)
downloadqtlocation-mapboxgl-upstream/gfx-refactor-4.tar.gz
[core] make Program interface backend-agnosticupstream/gfx-refactor-4
-rwxr-xr-xscripts/generate-shaders.js138
-rw-r--r--src/core-files.json104
-rw-r--r--src/mbgl/gfx/context.hpp17
-rw-r--r--src/mbgl/gfx/context_impl.hpp23
-rw-r--r--src/mbgl/gfx/program.hpp6
-rw-r--r--src/mbgl/gfx/types.hpp4
-rw-r--r--src/mbgl/gl/context.cpp2
-rw-r--r--src/mbgl/gl/program.hpp16
-rw-r--r--src/mbgl/programs/background_pattern_program.hpp4
-rw-r--r--src/mbgl/programs/background_program.cpp4
-rw-r--r--src/mbgl/programs/background_program.hpp9
-rw-r--r--src/mbgl/programs/circle_program.cpp3
-rw-r--r--src/mbgl/programs/circle_program.hpp4
-rw-r--r--src/mbgl/programs/clipping_mask_program.cpp8
-rw-r--r--src/mbgl/programs/clipping_mask_program.hpp2
-rw-r--r--src/mbgl/programs/collision_box_program.cpp4
-rw-r--r--src/mbgl/programs/collision_box_program.hpp24
-rw-r--r--src/mbgl/programs/collision_circle_program.hpp4
-rw-r--r--src/mbgl/programs/debug_program.cpp8
-rw-r--r--src/mbgl/programs/debug_program.hpp2
-rw-r--r--src/mbgl/programs/extrusion_texture_program.cpp3
-rw-r--r--src/mbgl/programs/extrusion_texture_program.hpp2
-rw-r--r--src/mbgl/programs/fill_extrusion_pattern_program.hpp4
-rw-r--r--src/mbgl/programs/fill_extrusion_program.cpp4
-rw-r--r--src/mbgl/programs/fill_extrusion_program.hpp6
-rw-r--r--src/mbgl/programs/fill_outline_pattern_program.hpp4
-rw-r--r--src/mbgl/programs/fill_outline_program.hpp4
-rw-r--r--src/mbgl/programs/fill_pattern_program.hpp4
-rw-r--r--src/mbgl/programs/fill_program.cpp6
-rw-r--r--src/mbgl/programs/fill_program.hpp10
-rw-r--r--src/mbgl/programs/gl/background.cpp47
-rw-r--r--src/mbgl/programs/gl/background_pattern.cpp (renamed from src/mbgl/shaders/background_pattern.cpp)22
-rw-r--r--src/mbgl/programs/gl/circle.cpp (renamed from src/mbgl/shaders/circle.cpp)22
-rw-r--r--src/mbgl/programs/gl/clipping_mask.cpp40
-rw-r--r--src/mbgl/programs/gl/collision_box.cpp (renamed from src/mbgl/shaders/collision_box.cpp)22
-rw-r--r--src/mbgl/programs/gl/collision_circle.cpp (renamed from src/mbgl/shaders/collision_circle.cpp)22
-rw-r--r--src/mbgl/programs/gl/debug.cpp42
-rw-r--r--src/mbgl/programs/gl/extrusion_texture.cpp (renamed from src/mbgl/shaders/extrusion_texture.cpp)22
-rw-r--r--src/mbgl/programs/gl/fill.cpp (renamed from src/mbgl/shaders/fill.cpp)22
-rw-r--r--src/mbgl/programs/gl/fill_extrusion.cpp (renamed from src/mbgl/shaders/fill_extrusion.cpp)22
-rw-r--r--src/mbgl/programs/gl/fill_extrusion_pattern.cpp (renamed from src/mbgl/shaders/fill_extrusion_pattern.cpp)22
-rw-r--r--src/mbgl/programs/gl/fill_outline.cpp (renamed from src/mbgl/shaders/fill_outline.cpp)22
-rw-r--r--src/mbgl/programs/gl/fill_outline_pattern.cpp (renamed from src/mbgl/shaders/fill_outline_pattern.cpp)22
-rw-r--r--src/mbgl/programs/gl/fill_pattern.cpp (renamed from src/mbgl/shaders/fill_pattern.cpp)22
-rw-r--r--src/mbgl/programs/gl/heatmap.cpp (renamed from src/mbgl/shaders/heatmap.cpp)22
-rw-r--r--src/mbgl/programs/gl/heatmap_texture.cpp (renamed from src/mbgl/shaders/heatmap_texture.cpp)22
-rw-r--r--src/mbgl/programs/gl/hillshade.cpp (renamed from src/mbgl/shaders/hillshade.cpp)22
-rw-r--r--src/mbgl/programs/gl/hillshade_prepare.cpp (renamed from src/mbgl/shaders/hillshade_prepare.cpp)22
-rw-r--r--src/mbgl/programs/gl/line.cpp (renamed from src/mbgl/shaders/line.cpp)22
-rw-r--r--src/mbgl/programs/gl/line_gradient.cpp (renamed from src/mbgl/shaders/line_gradient.cpp)22
-rw-r--r--src/mbgl/programs/gl/line_pattern.cpp (renamed from src/mbgl/shaders/line_pattern.cpp)22
-rw-r--r--src/mbgl/programs/gl/line_sdf.cpp (renamed from src/mbgl/shaders/line_sdf.cpp)22
-rw-r--r--src/mbgl/programs/gl/preludes.cpp15
-rw-r--r--src/mbgl/programs/gl/preludes.hpp14
-rw-r--r--src/mbgl/programs/gl/raster.cpp (renamed from src/mbgl/shaders/raster.cpp)22
-rw-r--r--src/mbgl/programs/gl/shader_source.cpp471
-rw-r--r--src/mbgl/programs/gl/shader_source.hpp (renamed from src/mbgl/shaders/source.hpp)8
-rw-r--r--src/mbgl/programs/gl/shaders.cpp (renamed from src/mbgl/shaders/shaders.cpp)14
-rw-r--r--src/mbgl/programs/gl/shaders.hpp (renamed from src/mbgl/shaders/shaders.hpp)6
-rw-r--r--src/mbgl/programs/gl/symbol_icon.cpp (renamed from src/mbgl/shaders/symbol_icon.cpp)22
-rw-r--r--src/mbgl/programs/gl/symbol_sdf_icon.cpp (renamed from src/mbgl/shaders/symbol_sdf.cpp)26
-rw-r--r--src/mbgl/programs/gl/symbol_sdf_text.cpp317
-rw-r--r--src/mbgl/programs/heatmap_program.cpp3
-rw-r--r--src/mbgl/programs/heatmap_program.hpp4
-rw-r--r--src/mbgl/programs/heatmap_texture_program.cpp3
-rw-r--r--src/mbgl/programs/heatmap_texture_program.hpp2
-rw-r--r--src/mbgl/programs/hillshade_prepare_program.cpp3
-rw-r--r--src/mbgl/programs/hillshade_prepare_program.hpp2
-rw-r--r--src/mbgl/programs/hillshade_program.cpp3
-rw-r--r--src/mbgl/programs/hillshade_program.hpp4
-rw-r--r--src/mbgl/programs/line_gradient_program.hpp4
-rw-r--r--src/mbgl/programs/line_pattern_program.hpp4
-rw-r--r--src/mbgl/programs/line_program.cpp6
-rw-r--r--src/mbgl/programs/line_program.hpp10
-rw-r--r--src/mbgl/programs/line_sdf_program.hpp4
-rw-r--r--src/mbgl/programs/program.hpp25
-rw-r--r--src/mbgl/programs/programs.cpp2
-rw-r--r--src/mbgl/programs/programs.hpp4
-rw-r--r--src/mbgl/programs/raster_program.cpp3
-rw-r--r--src/mbgl/programs/raster_program.hpp4
-rw-r--r--src/mbgl/programs/symbol_icon_program.hpp4
-rw-r--r--src/mbgl/programs/symbol_program.cpp5
-rw-r--r--src/mbgl/programs/symbol_program.hpp29
-rw-r--r--src/mbgl/programs/symbol_sdf_icon_program.hpp4
-rw-r--r--src/mbgl/programs/symbol_sdf_text_program.hpp4
-rw-r--r--src/mbgl/renderer/layers/render_background_layer.cpp3
-rw-r--r--src/mbgl/renderer/layers/render_circle_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp3
-rw-r--r--src/mbgl/renderer/layers/render_fill_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_heatmap_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_hillshade_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_raster_layer.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_symbol_layer.cpp2
-rw-r--r--src/mbgl/renderer/render_static_data.cpp1
-rw-r--r--src/mbgl/renderer/render_static_data.hpp1
-rw-r--r--src/mbgl/renderer/render_tile.cpp1
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp1
-rw-r--r--src/mbgl/shaders/background.cpp41
-rw-r--r--src/mbgl/shaders/background.hpp16
-rw-r--r--src/mbgl/shaders/background_pattern.hpp16
-rw-r--r--src/mbgl/shaders/circle.hpp16
-rw-r--r--src/mbgl/shaders/clipping_mask.cpp34
-rw-r--r--src/mbgl/shaders/clipping_mask.hpp16
-rw-r--r--src/mbgl/shaders/collision_box.hpp16
-rw-r--r--src/mbgl/shaders/collision_circle.hpp16
-rw-r--r--src/mbgl/shaders/debug.cpp36
-rw-r--r--src/mbgl/shaders/debug.hpp16
-rw-r--r--src/mbgl/shaders/extrusion_texture.hpp16
-rw-r--r--src/mbgl/shaders/fill.hpp16
-rw-r--r--src/mbgl/shaders/fill_extrusion.hpp16
-rw-r--r--src/mbgl/shaders/fill_extrusion_pattern.hpp16
-rw-r--r--src/mbgl/shaders/fill_outline.hpp16
-rw-r--r--src/mbgl/shaders/fill_outline_pattern.hpp16
-rw-r--r--src/mbgl/shaders/fill_pattern.hpp16
-rw-r--r--src/mbgl/shaders/heatmap.hpp16
-rw-r--r--src/mbgl/shaders/heatmap_texture.hpp16
-rw-r--r--src/mbgl/shaders/hillshade.hpp16
-rw-r--r--src/mbgl/shaders/hillshade_prepare.hpp16
-rw-r--r--src/mbgl/shaders/line.hpp16
-rw-r--r--src/mbgl/shaders/line_gradient.hpp16
-rw-r--r--src/mbgl/shaders/line_pattern.hpp16
-rw-r--r--src/mbgl/shaders/line_sdf.hpp16
-rw-r--r--src/mbgl/shaders/preludes.cpp13
-rw-r--r--src/mbgl/shaders/preludes.hpp12
-rw-r--r--src/mbgl/shaders/raster.hpp16
-rw-r--r--src/mbgl/shaders/source.cpp917
-rw-r--r--src/mbgl/shaders/symbol_icon.hpp16
-rw-r--r--src/mbgl/shaders/symbol_sdf.hpp16
129 files changed, 1638 insertions, 1870 deletions
diff --git a/scripts/generate-shaders.js b/scripts/generate-shaders.js
index 78d8911839..59544d0b34 100755
--- a/scripts/generate-shaders.js
+++ b/scripts/generate-shaders.js
@@ -3,7 +3,7 @@
require('flow-remove-types/register');
const path = require('path');
-const outputPath = 'src/mbgl/shaders';
+const outputPath = 'src/mbgl/programs/gl';
const zlib = require('zlib');
var shaders = require('../mapbox-gl-js/src/shaders');
@@ -31,52 +31,82 @@ for (const key in shaders) {
concatenated += basicMinify(shaders[key].fragmentSource);
concatenated += '\n\0';
- offsets[key] = {vertex, fragment};
+ offsets[key] = {
+ vertex,
+ fragment,
+ originalKey: key,
+ shaderName: key.replace(/[A-Z]+/g, (match) => `_${match.toLowerCase()}`),
+ ShaderName: key.replace(/^[a-z]/g, (match) => match.toUpperCase())
+ };
}
+// Overrides: The symbolSDF shader is used for two underlying programs.
+offsets.symbolSDFIcon = {
+ vertex: offsets.symbolSDF.vertex,
+ fragment: offsets.symbolSDF.fragment,
+ originalKey: 'symbolSDF',
+ shaderName: 'symbol_sdf_icon',
+ ShaderName: 'SymbolSDFIcon',
+};
+
+offsets.symbolSDFText = {
+ vertex: offsets.symbolSDF.vertex,
+ fragment: offsets.symbolSDF.fragment,
+ originalKey: 'symbolSDF',
+ shaderName: 'symbol_sdf_text',
+ ShaderName: 'SymbolSDFText',
+};
+
+delete offsets.symbolSDF;
+
const compressed = zlib.deflateSync(concatenated, {level: zlib.Z_BEST_COMPRESSION})
.toString('hex')
- .match(/.{1,16}/g)
+ .match(/.{1,32}/g)
.map(line => line.match(/.{1,2}/g).map(n => `0x${n}`).join(', '))
- .join(',\n ')
+ .join(',\n ')
.trim();
function sourceOffset(key, type) {
- return `source() + ${offsets[key][type]}`
+ return `programs::gl::shaderSource() + ${offsets[key][type]}`
}
-writeIfModified(path.join(outputPath, 'source.hpp'), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+writeIfModified(path.join(outputPath, 'shader_source.hpp'), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
#pragma once
namespace mbgl {
-namespace shaders {
+namespace programs {
+namespace gl {
-const char* source();
+const char* shaderSource();
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
`);
-writeIfModified(path.join(outputPath, 'source.cpp'), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+writeIfModified(path.join(outputPath, 'shader_source.cpp'), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
#include <mbgl/util/compression.hpp>
#include <cstdint>
namespace mbgl {
-namespace shaders {
+namespace programs {
+namespace gl {
-const char* source() {
- static const uint8_t compressed[] = {
- ${compressed}
- };
- static std::string decompressed = util::decompress(std::string(reinterpret_cast<const char*>(compressed), sizeof(compressed)));
+constexpr const uint8_t compressedShaderSource[] = {
+ ${compressed}
+};
+
+const char* shaderSource() {
+ static std::string decompressed = util::decompress(std::string(reinterpret_cast<const char*>(compressedShaderSource), sizeof(compressedShaderSource)));
return decompressed.c_str();
};
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
`);
@@ -85,77 +115,69 @@ writeIfModified(path.join(outputPath, 'preludes.hpp'), `// NOTE: DO NOT CHANGE T
#pragma once
namespace mbgl {
-namespace shaders {
+namespace programs {
+namespace gl {
-extern const char* vertexPrelude;
-extern const char* fragmentPrelude;
+extern const char* vertexShaderPrelude;
+extern const char* fragmentShaderPrelude;
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
`);
writeIfModified(path.join(outputPath, 'preludes.cpp'), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/preludes.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/gl/preludes.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
namespace mbgl {
-namespace shaders {
+namespace programs {
+namespace gl {
-const char* vertexPrelude = ${sourceOffset('prelude', 'vertex')};
-const char* fragmentPrelude = ${sourceOffset('prelude', 'fragment')};
+const char* vertexShaderPrelude = ${sourceOffset('prelude', 'vertex')};
+const char* fragmentShaderPrelude = ${sourceOffset('prelude', 'fragment')};
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
`);
-for (const key in shaders) {
+for (const key in offsets) {
if (key === 'prelude')
continue;
- const shaderName = key.replace(/[A-Z]+/g, (match) => `_${match.toLowerCase()}`);
-
- writeIfModified(path.join(outputPath, `${shaderName}.hpp`), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class ${shaderName} {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
-`);
+ const { shaderName, ShaderName, originalKey } = offsets[key];
writeIfModified(path.join(outputPath, `${shaderName}.cpp`), `// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/${shaderName}.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/${shaderName}_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<${ShaderName}Program>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<${ShaderName}Program>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "${shaderName}",
+ ${sourceOffset(key, 'vertex')}, ${sourceOffset(key, 'fragment')});
+}
-const char* ${shaderName}::name = "${shaderName}";
-const char* ${shaderName}::vertexSource = ${sourceOffset(key, 'vertex')};
-const char* ${shaderName}::fragmentSource = ${sourceOffset(key, 'fragment')};
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of ${shaderName}.vertex.glsl:
/*
-${shaders[key].vertexSource}
+${shaders[originalKey].vertexSource}
*/
// Uncompressed source of ${shaderName}.fragment.glsl:
/*
-${shaders[key].fragmentSource}
+${shaders[originalKey].fragmentSource}
*/
-} // namespace shaders
-} // namespace mbgl
`);
}
diff --git a/src/core-files.json b/src/core-files.json
index 4c2e4b07a7..272faaf9b6 100644
--- a/src/core-files.json
+++ b/src/core-files.json
@@ -54,10 +54,41 @@
"src/mbgl/platform/gl_functions.cpp",
"src/mbgl/programs/background_program.cpp",
"src/mbgl/programs/circle_program.cpp",
+ "src/mbgl/programs/clipping_mask_program.cpp",
"src/mbgl/programs/collision_box_program.cpp",
+ "src/mbgl/programs/debug_program.cpp",
"src/mbgl/programs/extrusion_texture_program.cpp",
"src/mbgl/programs/fill_extrusion_program.cpp",
"src/mbgl/programs/fill_program.cpp",
+ "src/mbgl/programs/gl/background.cpp",
+ "src/mbgl/programs/gl/background_pattern.cpp",
+ "src/mbgl/programs/gl/circle.cpp",
+ "src/mbgl/programs/gl/clipping_mask.cpp",
+ "src/mbgl/programs/gl/collision_box.cpp",
+ "src/mbgl/programs/gl/collision_circle.cpp",
+ "src/mbgl/programs/gl/debug.cpp",
+ "src/mbgl/programs/gl/extrusion_texture.cpp",
+ "src/mbgl/programs/gl/fill.cpp",
+ "src/mbgl/programs/gl/fill_extrusion.cpp",
+ "src/mbgl/programs/gl/fill_extrusion_pattern.cpp",
+ "src/mbgl/programs/gl/fill_outline.cpp",
+ "src/mbgl/programs/gl/fill_outline_pattern.cpp",
+ "src/mbgl/programs/gl/fill_pattern.cpp",
+ "src/mbgl/programs/gl/heatmap.cpp",
+ "src/mbgl/programs/gl/heatmap_texture.cpp",
+ "src/mbgl/programs/gl/hillshade.cpp",
+ "src/mbgl/programs/gl/hillshade_prepare.cpp",
+ "src/mbgl/programs/gl/line.cpp",
+ "src/mbgl/programs/gl/line_gradient.cpp",
+ "src/mbgl/programs/gl/line_pattern.cpp",
+ "src/mbgl/programs/gl/line_sdf.cpp",
+ "src/mbgl/programs/gl/preludes.cpp",
+ "src/mbgl/programs/gl/raster.cpp",
+ "src/mbgl/programs/gl/shader_source.cpp",
+ "src/mbgl/programs/gl/shaders.cpp",
+ "src/mbgl/programs/gl/symbol_icon.cpp",
+ "src/mbgl/programs/gl/symbol_sdf_icon.cpp",
+ "src/mbgl/programs/gl/symbol_sdf_text.cpp",
"src/mbgl/programs/heatmap_program.cpp",
"src/mbgl/programs/heatmap_texture_program.cpp",
"src/mbgl/programs/hillshade_prepare_program.cpp",
@@ -110,34 +141,6 @@
"src/mbgl/renderer/sources/render_vector_source.cpp",
"src/mbgl/renderer/style_diff.cpp",
"src/mbgl/renderer/tile_pyramid.cpp",
- "src/mbgl/shaders/background.cpp",
- "src/mbgl/shaders/background_pattern.cpp",
- "src/mbgl/shaders/circle.cpp",
- "src/mbgl/shaders/clipping_mask.cpp",
- "src/mbgl/shaders/collision_box.cpp",
- "src/mbgl/shaders/collision_circle.cpp",
- "src/mbgl/shaders/debug.cpp",
- "src/mbgl/shaders/extrusion_texture.cpp",
- "src/mbgl/shaders/fill.cpp",
- "src/mbgl/shaders/fill_extrusion.cpp",
- "src/mbgl/shaders/fill_extrusion_pattern.cpp",
- "src/mbgl/shaders/fill_outline.cpp",
- "src/mbgl/shaders/fill_outline_pattern.cpp",
- "src/mbgl/shaders/fill_pattern.cpp",
- "src/mbgl/shaders/heatmap.cpp",
- "src/mbgl/shaders/heatmap_texture.cpp",
- "src/mbgl/shaders/hillshade.cpp",
- "src/mbgl/shaders/hillshade_prepare.cpp",
- "src/mbgl/shaders/line.cpp",
- "src/mbgl/shaders/line_gradient.cpp",
- "src/mbgl/shaders/line_pattern.cpp",
- "src/mbgl/shaders/line_sdf.cpp",
- "src/mbgl/shaders/preludes.cpp",
- "src/mbgl/shaders/raster.cpp",
- "src/mbgl/shaders/shaders.cpp",
- "src/mbgl/shaders/source.cpp",
- "src/mbgl/shaders/symbol_icon.cpp",
- "src/mbgl/shaders/symbol_sdf.cpp",
"src/mbgl/sprite/sprite_loader.cpp",
"src/mbgl/sprite/sprite_loader_worker.cpp",
"src/mbgl/sprite/sprite_parser.cpp",
@@ -506,12 +509,14 @@
"mbgl/gfx/attribute.hpp": "src/mbgl/gfx/attribute.hpp",
"mbgl/gfx/color_mode.hpp": "src/mbgl/gfx/color_mode.hpp",
"mbgl/gfx/context.hpp": "src/mbgl/gfx/context.hpp",
+ "mbgl/gfx/context_impl.hpp": "src/mbgl/gfx/context_impl.hpp",
"mbgl/gfx/cull_face_mode.hpp": "src/mbgl/gfx/cull_face_mode.hpp",
"mbgl/gfx/depth_mode.hpp": "src/mbgl/gfx/depth_mode.hpp",
"mbgl/gfx/draw_mode.hpp": "src/mbgl/gfx/draw_mode.hpp",
"mbgl/gfx/draw_scope.hpp": "src/mbgl/gfx/draw_scope.hpp",
"mbgl/gfx/index_buffer.hpp": "src/mbgl/gfx/index_buffer.hpp",
"mbgl/gfx/index_vector.hpp": "src/mbgl/gfx/index_vector.hpp",
+ "mbgl/gfx/program.hpp": "src/mbgl/gfx/program.hpp",
"mbgl/gfx/stencil_mode.hpp": "src/mbgl/gfx/stencil_mode.hpp",
"mbgl/gfx/texture.hpp": "src/mbgl/gfx/texture.hpp",
"mbgl/gfx/types.hpp": "src/mbgl/gfx/types.hpp",
@@ -556,25 +561,40 @@
"mbgl/map/transform_state.hpp": "src/mbgl/map/transform_state.hpp",
"mbgl/map/zoom_history.hpp": "src/mbgl/map/zoom_history.hpp",
"mbgl/programs/attributes.hpp": "src/mbgl/programs/attributes.hpp",
+ "mbgl/programs/background_pattern_program.hpp": "src/mbgl/programs/background_pattern_program.hpp",
"mbgl/programs/background_program.hpp": "src/mbgl/programs/background_program.hpp",
"mbgl/programs/circle_program.hpp": "src/mbgl/programs/circle_program.hpp",
"mbgl/programs/clipping_mask_program.hpp": "src/mbgl/programs/clipping_mask_program.hpp",
"mbgl/programs/collision_box_program.hpp": "src/mbgl/programs/collision_box_program.hpp",
+ "mbgl/programs/collision_circle_program.hpp": "src/mbgl/programs/collision_circle_program.hpp",
"mbgl/programs/debug_program.hpp": "src/mbgl/programs/debug_program.hpp",
"mbgl/programs/extrusion_texture_program.hpp": "src/mbgl/programs/extrusion_texture_program.hpp",
+ "mbgl/programs/fill_extrusion_pattern_program.hpp": "src/mbgl/programs/fill_extrusion_pattern_program.hpp",
"mbgl/programs/fill_extrusion_program.hpp": "src/mbgl/programs/fill_extrusion_program.hpp",
+ "mbgl/programs/fill_outline_pattern_program.hpp": "src/mbgl/programs/fill_outline_pattern_program.hpp",
+ "mbgl/programs/fill_outline_program.hpp": "src/mbgl/programs/fill_outline_program.hpp",
+ "mbgl/programs/fill_pattern_program.hpp": "src/mbgl/programs/fill_pattern_program.hpp",
"mbgl/programs/fill_program.hpp": "src/mbgl/programs/fill_program.hpp",
+ "mbgl/programs/gl/preludes.hpp": "src/mbgl/programs/gl/preludes.hpp",
+ "mbgl/programs/gl/shader_source.hpp": "src/mbgl/programs/gl/shader_source.hpp",
+ "mbgl/programs/gl/shaders.hpp": "src/mbgl/programs/gl/shaders.hpp",
"mbgl/programs/heatmap_program.hpp": "src/mbgl/programs/heatmap_program.hpp",
"mbgl/programs/heatmap_texture_program.hpp": "src/mbgl/programs/heatmap_texture_program.hpp",
"mbgl/programs/hillshade_prepare_program.hpp": "src/mbgl/programs/hillshade_prepare_program.hpp",
"mbgl/programs/hillshade_program.hpp": "src/mbgl/programs/hillshade_program.hpp",
+ "mbgl/programs/line_gradient_program.hpp": "src/mbgl/programs/line_gradient_program.hpp",
+ "mbgl/programs/line_pattern_program.hpp": "src/mbgl/programs/line_pattern_program.hpp",
"mbgl/programs/line_program.hpp": "src/mbgl/programs/line_program.hpp",
+ "mbgl/programs/line_sdf_program.hpp": "src/mbgl/programs/line_sdf_program.hpp",
"mbgl/programs/program.hpp": "src/mbgl/programs/program.hpp",
"mbgl/programs/program_parameters.hpp": "src/mbgl/programs/program_parameters.hpp",
"mbgl/programs/programs.hpp": "src/mbgl/programs/programs.hpp",
"mbgl/programs/raster_program.hpp": "src/mbgl/programs/raster_program.hpp",
"mbgl/programs/segment.hpp": "src/mbgl/programs/segment.hpp",
+ "mbgl/programs/symbol_icon_program.hpp": "src/mbgl/programs/symbol_icon_program.hpp",
"mbgl/programs/symbol_program.hpp": "src/mbgl/programs/symbol_program.hpp",
+ "mbgl/programs/symbol_sdf_icon_program.hpp": "src/mbgl/programs/symbol_sdf_icon_program.hpp",
+ "mbgl/programs/symbol_sdf_text_program.hpp": "src/mbgl/programs/symbol_sdf_text_program.hpp",
"mbgl/programs/textures.hpp": "src/mbgl/programs/textures.hpp",
"mbgl/programs/uniforms.hpp": "src/mbgl/programs/uniforms.hpp",
"mbgl/renderer/bucket.hpp": "src/mbgl/renderer/bucket.hpp",
@@ -630,34 +650,6 @@
"mbgl/renderer/tile_pyramid.hpp": "src/mbgl/renderer/tile_pyramid.hpp",
"mbgl/renderer/transition_parameters.hpp": "src/mbgl/renderer/transition_parameters.hpp",
"mbgl/renderer/update_parameters.hpp": "src/mbgl/renderer/update_parameters.hpp",
- "mbgl/shaders/background.hpp": "src/mbgl/shaders/background.hpp",
- "mbgl/shaders/background_pattern.hpp": "src/mbgl/shaders/background_pattern.hpp",
- "mbgl/shaders/circle.hpp": "src/mbgl/shaders/circle.hpp",
- "mbgl/shaders/clipping_mask.hpp": "src/mbgl/shaders/clipping_mask.hpp",
- "mbgl/shaders/collision_box.hpp": "src/mbgl/shaders/collision_box.hpp",
- "mbgl/shaders/collision_circle.hpp": "src/mbgl/shaders/collision_circle.hpp",
- "mbgl/shaders/debug.hpp": "src/mbgl/shaders/debug.hpp",
- "mbgl/shaders/extrusion_texture.hpp": "src/mbgl/shaders/extrusion_texture.hpp",
- "mbgl/shaders/fill.hpp": "src/mbgl/shaders/fill.hpp",
- "mbgl/shaders/fill_extrusion.hpp": "src/mbgl/shaders/fill_extrusion.hpp",
- "mbgl/shaders/fill_extrusion_pattern.hpp": "src/mbgl/shaders/fill_extrusion_pattern.hpp",
- "mbgl/shaders/fill_outline.hpp": "src/mbgl/shaders/fill_outline.hpp",
- "mbgl/shaders/fill_outline_pattern.hpp": "src/mbgl/shaders/fill_outline_pattern.hpp",
- "mbgl/shaders/fill_pattern.hpp": "src/mbgl/shaders/fill_pattern.hpp",
- "mbgl/shaders/heatmap.hpp": "src/mbgl/shaders/heatmap.hpp",
- "mbgl/shaders/heatmap_texture.hpp": "src/mbgl/shaders/heatmap_texture.hpp",
- "mbgl/shaders/hillshade.hpp": "src/mbgl/shaders/hillshade.hpp",
- "mbgl/shaders/hillshade_prepare.hpp": "src/mbgl/shaders/hillshade_prepare.hpp",
- "mbgl/shaders/line.hpp": "src/mbgl/shaders/line.hpp",
- "mbgl/shaders/line_gradient.hpp": "src/mbgl/shaders/line_gradient.hpp",
- "mbgl/shaders/line_pattern.hpp": "src/mbgl/shaders/line_pattern.hpp",
- "mbgl/shaders/line_sdf.hpp": "src/mbgl/shaders/line_sdf.hpp",
- "mbgl/shaders/preludes.hpp": "src/mbgl/shaders/preludes.hpp",
- "mbgl/shaders/raster.hpp": "src/mbgl/shaders/raster.hpp",
- "mbgl/shaders/shaders.hpp": "src/mbgl/shaders/shaders.hpp",
- "mbgl/shaders/source.hpp": "src/mbgl/shaders/source.hpp",
- "mbgl/shaders/symbol_icon.hpp": "src/mbgl/shaders/symbol_icon.hpp",
- "mbgl/shaders/symbol_sdf.hpp": "src/mbgl/shaders/symbol_sdf.hpp",
"mbgl/sprite/sprite_loader.hpp": "src/mbgl/sprite/sprite_loader.hpp",
"mbgl/sprite/sprite_loader_observer.hpp": "src/mbgl/sprite/sprite_loader_observer.hpp",
"mbgl/sprite/sprite_loader_worker.hpp": "src/mbgl/sprite/sprite_loader_worker.hpp",
diff --git a/src/mbgl/gfx/context.hpp b/src/mbgl/gfx/context.hpp
index f98b2266f4..90b62c94a4 100644
--- a/src/mbgl/gfx/context.hpp
+++ b/src/mbgl/gfx/context.hpp
@@ -6,14 +6,21 @@
#include <mbgl/gfx/index_buffer.hpp>
#include <mbgl/gfx/texture.hpp>
#include <mbgl/gfx/draw_scope.hpp>
+#include <mbgl/gfx/program.hpp>
#include <mbgl/gfx/types.hpp>
namespace mbgl {
+
+class ProgramParameters;
+
namespace gfx {
class Context {
protected:
- Context() = default;
+ Context(ContextType type_) : backend(type_) {
+ }
+
+ const ContextType backend;
public:
Context(Context&&) = delete;
@@ -98,6 +105,14 @@ public:
protected:
virtual std::unique_ptr<DrawScopeResource> createDrawScopeResource() = 0;
+
+public:
+ template <typename Name>
+ std::unique_ptr<Program<Name>> createProgram(const ProgramParameters&);
+
+private:
+ template <typename Backend, typename Name>
+ std::unique_ptr<Program<Name>> createProgram(const ProgramParameters&);
};
} // namespace gfx
diff --git a/src/mbgl/gfx/context_impl.hpp b/src/mbgl/gfx/context_impl.hpp
new file mode 100644
index 0000000000..0145535bb3
--- /dev/null
+++ b/src/mbgl/gfx/context_impl.hpp
@@ -0,0 +1,23 @@
+#pragma once
+
+#include <mbgl/gfx/context.hpp>
+
+namespace mbgl {
+
+namespace gl {
+class Context;
+} // namespace gl
+
+namespace gfx {
+
+template <typename Name>
+std::unique_ptr<Program<Name>> Context::createProgram(const ProgramParameters& programParameters) {
+ if (backend == ContextType::OpenGL) {
+ return createProgram<gl::Context, Name>(programParameters);
+ }
+ assert(false);
+ return nullptr;
+}
+
+} // namespace gfx
+} // namespace mbgl
diff --git a/src/mbgl/gfx/program.hpp b/src/mbgl/gfx/program.hpp
index b72aea4b30..94ba3b18ef 100644
--- a/src/mbgl/gfx/program.hpp
+++ b/src/mbgl/gfx/program.hpp
@@ -17,7 +17,7 @@ template <class> class UniformValues;
template <class> class AttributeBindings;
template <class> class TextureBindings;
-template <class AttributeList, class UniformList, class TextureList>
+template <class Name>
class Program {
protected:
Program() = default;
@@ -30,6 +30,10 @@ public:
Program& operator=(Program&&) = delete;
Program& operator=(const Program&) = delete;
+ using AttributeList = typename Name::AttributeList;
+ using UniformList = typename Name::UniformList;
+ using TextureList = typename Name::TextureList;
+
virtual void draw(Context&,
const DrawMode&,
const DepthMode&,
diff --git a/src/mbgl/gfx/types.hpp b/src/mbgl/gfx/types.hpp
index 42647eb9a8..da2bc14ddd 100644
--- a/src/mbgl/gfx/types.hpp
+++ b/src/mbgl/gfx/types.hpp
@@ -5,6 +5,10 @@
namespace mbgl {
namespace gfx {
+enum class ContextType : uint8_t {
+ OpenGL,
+};
+
enum class PrimitiveType : uint8_t {
Point,
Line,
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp
index 4195bb98c5..5193381251 100644
--- a/src/mbgl/gl/context.cpp
+++ b/src/mbgl/gl/context.cpp
@@ -67,7 +67,7 @@ static_assert(underlying_type(UniformDataType::SamplerCube) == GL_SAMPLER_CUBE,
static_assert(std::is_same<BinaryProgramFormat, GLenum>::value, "OpenGL type mismatch");
Context::Context()
- : maximumVertexBindingCount([] {
+ : gfx::Context(gfx::ContextType::OpenGL), maximumVertexBindingCount([] {
GLint value;
MBGL_CHECK_ERROR(glGetIntegerv(GL_MAX_VERTEX_ATTRIBS, &value));
return value;
diff --git a/src/mbgl/gl/program.hpp b/src/mbgl/gl/program.hpp
index 921362e4f3..9028ffdf53 100644
--- a/src/mbgl/gl/program.hpp
+++ b/src/mbgl/gl/program.hpp
@@ -18,16 +18,20 @@
#include <mbgl/util/logging.hpp>
#include <mbgl/programs/program_parameters.hpp>
-#include <mbgl/shaders/shaders.hpp>
+#include <mbgl/programs/gl/shaders.hpp>
#include <string>
namespace mbgl {
namespace gl {
-template <class AttributeList, class UniformList, class TextureList>
-class Program final : public gfx::Program<AttributeList, UniformList, TextureList> {
+template <class Name>
+class Program final : public gfx::Program<Name> {
public:
+ using AttributeList = typename Name::AttributeList;
+ using UniformList = typename Name::UniformList;
+ using TextureList = typename Name::TextureList;
+
Program(Context& context, const std::string& vertexSource, const std::string& fragmentSource)
: program(
context.createProgram(context.createShader(ShaderType::Vertex, vertexSource),
@@ -57,13 +61,13 @@ public:
const char* name,
const char* vertexSource_,
const char* fragmentSource_) {
- const std::string vertexSource = shaders::vertexSource(programParameters, vertexSource_);
- const std::string fragmentSource = shaders::fragmentSource(programParameters, fragmentSource_);
+ const std::string vertexSource = programs::gl::vertexSource(programParameters, vertexSource_);
+ const std::string fragmentSource = programs::gl::fragmentSource(programParameters, fragmentSource_);
#if MBGL_HAS_BINARY_PROGRAMS
optional<std::string> cachePath = programParameters.cachePath(name);
if (cachePath && context.supportsProgramBinaries()) {
- const std::string identifier = shaders::programIdentifier(vertexSource, fragmentSource);
+ const std::string identifier = programs::gl::programIdentifier(vertexSource, fragmentSource);
try {
if (auto cachedBinaryProgram = util::readFile(*cachePath)) {
diff --git a/src/mbgl/programs/background_pattern_program.hpp b/src/mbgl/programs/background_pattern_program.hpp
new file mode 100644
index 0000000000..4b66065670
--- /dev/null
+++ b/src/mbgl/programs/background_pattern_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/background_program.hpp>
diff --git a/src/mbgl/programs/background_program.cpp b/src/mbgl/programs/background_program.cpp
index ce4715f4b9..7d68f62fb1 100644
--- a/src/mbgl/programs/background_program.cpp
+++ b/src/mbgl/programs/background_program.cpp
@@ -1,4 +1,5 @@
#include <mbgl/programs/background_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
#include <mbgl/renderer/image_atlas.hpp>
#include <mbgl/renderer/cross_faded_property_evaluator.hpp>
#include <mbgl/tile/tile_id.hpp>
@@ -6,6 +7,9 @@
namespace mbgl {
+template std::unique_ptr<gfx::Program<BackgroundProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<BackgroundPatternProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
using namespace style;
static_assert(sizeof(BackgroundLayoutVertex) == 4, "expected BackgroundLayoutVertex size");
diff --git a/src/mbgl/programs/background_program.hpp b/src/mbgl/programs/background_program.hpp
index a8bcd9dc3c..b1ade6dc84 100644
--- a/src/mbgl/programs/background_program.hpp
+++ b/src/mbgl/programs/background_program.hpp
@@ -4,14 +4,9 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/background.hpp>
-#include <mbgl/shaders/background_pattern.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/util/mat4.hpp>
#include <mbgl/util/size.hpp>
-#include <mbgl/style/layers/background_layer_properties.hpp>
-
-#include <string>
namespace mbgl {
@@ -46,7 +41,6 @@ using BackgroundPatternUniforms = TypeList<
class BackgroundProgram : public Program<
BackgroundProgram,
- shaders::background,
gfx::PrimitiveType::Triangle,
BackgroundLayoutAttributes,
BackgroundUniforms,
@@ -59,7 +53,6 @@ public:
class BackgroundPatternProgram : public Program<
BackgroundPatternProgram,
- shaders::background_pattern,
gfx::PrimitiveType::Triangle,
BackgroundLayoutAttributes,
BackgroundPatternUniforms,
@@ -85,7 +78,7 @@ using BackgroundAttributes = BackgroundProgram::AttributeList;
class BackgroundLayerPrograms final : public LayerTypePrograms {
public:
- BackgroundLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ BackgroundLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: background(context, programParameters),
backgroundPattern(context, programParameters) {}
BackgroundProgram background;
diff --git a/src/mbgl/programs/circle_program.cpp b/src/mbgl/programs/circle_program.cpp
index 99b47dd5c0..577410d94e 100644
--- a/src/mbgl/programs/circle_program.cpp
+++ b/src/mbgl/programs/circle_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/circle_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<CircleProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(CircleLayoutVertex) == 4, "expected CircleLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/circle_program.hpp b/src/mbgl/programs/circle_program.hpp
index 136a6f89cf..0caa1b2a15 100644
--- a/src/mbgl/programs/circle_program.hpp
+++ b/src/mbgl/programs/circle_program.hpp
@@ -3,7 +3,6 @@
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
-#include <mbgl/shaders/circle.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/style/layers/circle_layer_properties.hpp>
@@ -15,7 +14,6 @@ MBGL_DEFINE_UNIFORM_SCALAR(bool, u_scale_with_map);
class CircleProgram : public Program<
CircleProgram,
- shaders::circle,
gfx::PrimitiveType::Triangle,
TypeList<
attributes::a_pos>,
@@ -52,7 +50,7 @@ using CircleAttributes = CircleProgram::AttributeList;
class CircleLayerPrograms final : public LayerTypePrograms {
public:
- CircleLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ CircleLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: circle(context, programParameters) {}
ProgramMap<CircleProgram> circle;
};
diff --git a/src/mbgl/programs/clipping_mask_program.cpp b/src/mbgl/programs/clipping_mask_program.cpp
new file mode 100644
index 0000000000..9b1a9ef4fc
--- /dev/null
+++ b/src/mbgl/programs/clipping_mask_program.cpp
@@ -0,0 +1,8 @@
+#include <mbgl/programs/clipping_mask_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
+
+namespace mbgl {
+
+template std::unique_ptr<gfx::Program<ClippingMaskProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
+} // namespace mbgl
diff --git a/src/mbgl/programs/clipping_mask_program.hpp b/src/mbgl/programs/clipping_mask_program.hpp
index 687b76fcb9..874708a52f 100644
--- a/src/mbgl/programs/clipping_mask_program.hpp
+++ b/src/mbgl/programs/clipping_mask_program.hpp
@@ -3,14 +3,12 @@
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
-#include <mbgl/shaders/clipping_mask.hpp>
#include <mbgl/style/properties.hpp>
namespace mbgl {
class ClippingMaskProgram : public Program<
ClippingMaskProgram,
- shaders::clipping_mask,
gfx::PrimitiveType::Triangle,
PositionOnlyLayoutAttributes,
TypeList<
diff --git a/src/mbgl/programs/collision_box_program.cpp b/src/mbgl/programs/collision_box_program.cpp
index 584013640e..885894526e 100644
--- a/src/mbgl/programs/collision_box_program.cpp
+++ b/src/mbgl/programs/collision_box_program.cpp
@@ -1,7 +1,11 @@
#include <mbgl/programs/collision_box_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<CollisionBoxProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<CollisionCircleProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(CollisionBoxProgram::LayoutVertex) == 24, "expected CollisionBoxVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/collision_box_program.hpp b/src/mbgl/programs/collision_box_program.hpp
index 2434324299..7b81752a94 100644
--- a/src/mbgl/programs/collision_box_program.hpp
+++ b/src/mbgl/programs/collision_box_program.hpp
@@ -3,8 +3,6 @@
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
-#include <mbgl/shaders/collision_box.hpp>
-#include <mbgl/shaders/collision_circle.hpp>
#include <mbgl/style/properties.hpp>
#include <mbgl/util/geometry.hpp>
@@ -22,7 +20,6 @@ using CollisionBoxDynamicAttributes = TypeList<attributes::a_placed>;
class CollisionBoxProgram : public Program<
CollisionBoxProgram,
- shaders::collision_box,
gfx::PrimitiveType::Line,
TypeListConcat<CollisionBoxLayoutAttributes, CollisionBoxDynamicAttributes>,
TypeList<
@@ -64,11 +61,11 @@ public:
template <class DrawMode>
void draw(gfx::Context& context,
- DrawMode drawMode,
- gfx::DepthMode depthMode,
- gfx::StencilMode stencilMode,
- gfx::ColorMode colorMode,
- gfx::CullFaceMode cullFaceMode,
+ const DrawMode& drawMode,
+ const gfx::DepthMode& depthMode,
+ const gfx::StencilMode& stencilMode,
+ const gfx::ColorMode& colorMode,
+ const gfx::CullFaceMode& cullFaceMode,
const LayoutUniformValues& layoutUniformValues,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxLayoutAttributes>>& layoutVertexBuffer,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxDynamicAttributes>>& dynamicVertexBuffer,
@@ -116,7 +113,6 @@ public:
class CollisionCircleProgram : public Program<
CollisionCircleProgram,
- shaders::collision_circle,
gfx::PrimitiveType::Triangle,
TypeListConcat<CollisionBoxLayoutAttributes, CollisionBoxDynamicAttributes>,
TypeList<
@@ -153,11 +149,11 @@ public:
template <class DrawMode>
void draw(gfx::Context& context,
- DrawMode drawMode,
- gfx::DepthMode depthMode,
- gfx::StencilMode stencilMode,
- gfx::ColorMode colorMode,
- gfx::CullFaceMode cullFaceMode,
+ const DrawMode& drawMode,
+ const gfx::DepthMode& depthMode,
+ const gfx::StencilMode& stencilMode,
+ const gfx::ColorMode& colorMode,
+ const gfx::CullFaceMode& cullFaceMode,
const LayoutUniformValues& layoutUniformValues,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxLayoutAttributes>>& layoutVertexBuffer,
const gfx::VertexBuffer<gfx::Vertex<CollisionBoxDynamicAttributes>>& dynamicVertexBuffer,
diff --git a/src/mbgl/programs/collision_circle_program.hpp b/src/mbgl/programs/collision_circle_program.hpp
new file mode 100644
index 0000000000..1fd36af360
--- /dev/null
+++ b/src/mbgl/programs/collision_circle_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/collision_box_program.hpp>
diff --git a/src/mbgl/programs/debug_program.cpp b/src/mbgl/programs/debug_program.cpp
new file mode 100644
index 0000000000..9b8df789e4
--- /dev/null
+++ b/src/mbgl/programs/debug_program.cpp
@@ -0,0 +1,8 @@
+#include <mbgl/programs/debug_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
+
+namespace mbgl {
+
+template std::unique_ptr<gfx::Program<DebugProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
+} // namespace mbgl
diff --git a/src/mbgl/programs/debug_program.hpp b/src/mbgl/programs/debug_program.hpp
index f1b814d5e0..61125b55bf 100644
--- a/src/mbgl/programs/debug_program.hpp
+++ b/src/mbgl/programs/debug_program.hpp
@@ -3,14 +3,12 @@
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
-#include <mbgl/shaders/debug.hpp>
#include <mbgl/style/properties.hpp>
namespace mbgl {
class DebugProgram : public Program<
DebugProgram,
- shaders::debug,
gfx::PrimitiveType::Line,
TypeList<
attributes::a_pos>,
diff --git a/src/mbgl/programs/extrusion_texture_program.cpp b/src/mbgl/programs/extrusion_texture_program.cpp
index afda4384b7..50fcd76221 100644
--- a/src/mbgl/programs/extrusion_texture_program.cpp
+++ b/src/mbgl/programs/extrusion_texture_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/extrusion_texture_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<ExtrusionTextureProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(ExtrusionTextureLayoutVertex) == 4, "expected ExtrusionTextureLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/extrusion_texture_program.hpp b/src/mbgl/programs/extrusion_texture_program.hpp
index eb97b9e11f..bdeeabb8cd 100644
--- a/src/mbgl/programs/extrusion_texture_program.hpp
+++ b/src/mbgl/programs/extrusion_texture_program.hpp
@@ -4,7 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/extrusion_texture.hpp>
#include <mbgl/style/properties.hpp>
#include <mbgl/util/geometry.hpp>
@@ -12,7 +11,6 @@ namespace mbgl {
class ExtrusionTextureProgram : public Program<
ExtrusionTextureProgram,
- shaders::extrusion_texture,
gfx::PrimitiveType::Triangle,
TypeList<attributes::a_pos>,
TypeList<
diff --git a/src/mbgl/programs/fill_extrusion_pattern_program.hpp b/src/mbgl/programs/fill_extrusion_pattern_program.hpp
new file mode 100644
index 0000000000..b723ce0614
--- /dev/null
+++ b/src/mbgl/programs/fill_extrusion_pattern_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/fill_extrusion_program.hpp>
diff --git a/src/mbgl/programs/fill_extrusion_program.cpp b/src/mbgl/programs/fill_extrusion_program.cpp
index a2117bddef..7688d09299 100644
--- a/src/mbgl/programs/fill_extrusion_program.cpp
+++ b/src/mbgl/programs/fill_extrusion_program.cpp
@@ -1,4 +1,5 @@
#include <mbgl/programs/fill_extrusion_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
#include <mbgl/renderer/image_atlas.hpp>
#include <mbgl/renderer/cross_faded_property_evaluator.hpp>
#include <mbgl/tile/tile_id.hpp>
@@ -7,6 +8,9 @@
namespace mbgl {
+template std::unique_ptr<gfx::Program<FillExtrusionProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<FillExtrusionPatternProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
using namespace style;
static_assert(sizeof(FillExtrusionLayoutVertex) == 12, "expected FillExtrusionLayoutVertex size");
diff --git a/src/mbgl/programs/fill_extrusion_program.hpp b/src/mbgl/programs/fill_extrusion_program.hpp
index 23a38e2469..e1c3ca7f17 100644
--- a/src/mbgl/programs/fill_extrusion_program.hpp
+++ b/src/mbgl/programs/fill_extrusion_program.hpp
@@ -5,8 +5,6 @@
#include <mbgl/programs/extrusion_texture_program.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/fill_extrusion.hpp>
-#include <mbgl/shaders/fill_extrusion_pattern.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/util/mat4.hpp>
#include <mbgl/util/size.hpp>
@@ -54,7 +52,6 @@ using FillExtrusionPatternUniforms = TypeList<
class FillExtrusionProgram : public Program<
FillExtrusionProgram,
- shaders::fill_extrusion,
gfx::PrimitiveType::Triangle,
FillExtrusionLayoutAttributes,
FillExtrusionUniforms,
@@ -90,7 +87,6 @@ public:
class FillExtrusionPatternProgram : public Program<
FillExtrusionPatternProgram,
- shaders::fill_extrusion_pattern,
gfx::PrimitiveType::Triangle,
FillExtrusionLayoutAttributes,
FillExtrusionPatternUniforms,
@@ -117,7 +113,7 @@ using FillExtrusionAttributes = FillExtrusionProgram::AttributeList;
class FillExtrusionLayerPrograms final : public LayerTypePrograms {
public:
- FillExtrusionLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ FillExtrusionLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: fillExtrusion(context, programParameters),
fillExtrusionPattern(context, programParameters),
extrusionTexture(context, programParameters) {}
diff --git a/src/mbgl/programs/fill_outline_pattern_program.hpp b/src/mbgl/programs/fill_outline_pattern_program.hpp
new file mode 100644
index 0000000000..a2c26a168d
--- /dev/null
+++ b/src/mbgl/programs/fill_outline_pattern_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/fill_program.hpp>
diff --git a/src/mbgl/programs/fill_outline_program.hpp b/src/mbgl/programs/fill_outline_program.hpp
new file mode 100644
index 0000000000..a2c26a168d
--- /dev/null
+++ b/src/mbgl/programs/fill_outline_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/fill_program.hpp>
diff --git a/src/mbgl/programs/fill_pattern_program.hpp b/src/mbgl/programs/fill_pattern_program.hpp
new file mode 100644
index 0000000000..a2c26a168d
--- /dev/null
+++ b/src/mbgl/programs/fill_pattern_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/fill_program.hpp>
diff --git a/src/mbgl/programs/fill_program.cpp b/src/mbgl/programs/fill_program.cpp
index 6f1509245f..e0dfc71f81 100644
--- a/src/mbgl/programs/fill_program.cpp
+++ b/src/mbgl/programs/fill_program.cpp
@@ -1,4 +1,5 @@
#include <mbgl/programs/fill_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
#include <mbgl/renderer/image_atlas.hpp>
#include <mbgl/renderer/cross_faded_property_evaluator.hpp>
#include <mbgl/tile/tile_id.hpp>
@@ -6,6 +7,11 @@
namespace mbgl {
+template std::unique_ptr<gfx::Program<FillProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<FillPatternProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<FillOutlineProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<FillOutlinePatternProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
using namespace style;
static_assert(sizeof(FillLayoutVertex) == 4, "expected FillLayoutVertex size");
diff --git a/src/mbgl/programs/fill_program.hpp b/src/mbgl/programs/fill_program.hpp
index 5778dfe2d9..8519e482d6 100644
--- a/src/mbgl/programs/fill_program.hpp
+++ b/src/mbgl/programs/fill_program.hpp
@@ -4,10 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/fill.hpp>
-#include <mbgl/shaders/fill_pattern.hpp>
-#include <mbgl/shaders/fill_outline.hpp>
-#include <mbgl/shaders/fill_outline_pattern.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/util/mat4.hpp>
#include <mbgl/util/size.hpp>
@@ -39,7 +35,6 @@ using FillPatternUniforms = TypeList<
class FillProgram : public Program<
FillProgram,
- shaders::fill,
gfx::PrimitiveType::Triangle,
FillLayoutAttributes,
FillUniforms,
@@ -61,7 +56,6 @@ public:
class FillPatternProgram : public Program<
FillPatternProgram,
- shaders::fill_pattern,
gfx::PrimitiveType::Triangle,
FillLayoutAttributes,
FillPatternUniforms,
@@ -83,7 +77,6 @@ public:
class FillOutlineProgram : public Program<
FillOutlineProgram,
- shaders::fill_outline,
gfx::PrimitiveType::Line,
FillLayoutAttributes,
FillUniforms,
@@ -96,7 +89,6 @@ public:
class FillOutlinePatternProgram : public Program<
FillOutlinePatternProgram,
- shaders::fill_outline_pattern,
gfx::PrimitiveType::Line,
FillLayoutAttributes,
FillPatternUniforms,
@@ -113,7 +105,7 @@ using FillAttributes = FillProgram::AttributeList;
class FillLayerPrograms final : public LayerTypePrograms {
public:
- FillLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ FillLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: fill(context, programParameters),
fillPattern(context, programParameters),
fillOutline(context, programParameters),
diff --git a/src/mbgl/programs/gl/background.cpp b/src/mbgl/programs/gl/background.cpp
new file mode 100644
index 0000000000..da5ea25410
--- /dev/null
+++ b/src/mbgl/programs/gl/background.cpp
@@ -0,0 +1,47 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#include <mbgl/programs/background_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
+
+namespace mbgl {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<BackgroundProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<BackgroundProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "background",
+ programs::gl::shaderSource() + 1429, programs::gl::shaderSource() + 1525);
+}
+
+} // namespace gfx
+} // namespace mbgl
+
+// Uncompressed source of background.vertex.glsl:
+/*
+attribute vec2 a_pos;
+
+uniform mat4 u_matrix;
+
+void main() {
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
+}
+
+*/
+
+// Uncompressed source of background.fragment.glsl:
+/*
+uniform vec4 u_color;
+uniform float u_opacity;
+
+void main() {
+ gl_FragColor = u_color * u_opacity;
+
+#ifdef OVERDRAW_INSPECTOR
+ gl_FragColor = vec4(1.0);
+#endif
+}
+
+*/
+
diff --git a/src/mbgl/shaders/background_pattern.cpp b/src/mbgl/programs/gl/background_pattern.cpp
index 35023455ea..af5d87129e 100644
--- a/src/mbgl/shaders/background_pattern.cpp
+++ b/src/mbgl/programs/gl/background_pattern.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/background_pattern.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/background_pattern_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<BackgroundPatternProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<BackgroundPatternProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "background_pattern",
+ programs::gl::shaderSource() + 1675, programs::gl::shaderSource() + 2266);
+}
-const char* background_pattern::name = "background_pattern";
-const char* background_pattern::vertexSource = source() + 1675;
-const char* background_pattern::fragmentSource = source() + 2266;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of background_pattern.vertex.glsl:
/*
@@ -68,5 +76,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/circle.cpp b/src/mbgl/programs/gl/circle.cpp
index e5da9fb37e..04c3f60870 100644
--- a/src/mbgl/shaders/circle.cpp
+++ b/src/mbgl/programs/gl/circle.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/circle.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/circle_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<CircleProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<CircleProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "circle",
+ programs::gl::shaderSource() + 2927, programs::gl::shaderSource() + 6093);
+}
-const char* circle::name = "circle";
-const char* circle::vertexSource = source() + 2927;
-const char* circle::fragmentSource = source() + 6093;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of circle.vertex.glsl:
/*
@@ -290,5 +298,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/programs/gl/clipping_mask.cpp b/src/mbgl/programs/gl/clipping_mask.cpp
new file mode 100644
index 0000000000..311877f065
--- /dev/null
+++ b/src/mbgl/programs/gl/clipping_mask.cpp
@@ -0,0 +1,40 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#include <mbgl/programs/clipping_mask_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
+
+namespace mbgl {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<ClippingMaskProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<ClippingMaskProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "clipping_mask",
+ programs::gl::shaderSource() + 7848, programs::gl::shaderSource() + 7944);
+}
+
+} // namespace gfx
+} // namespace mbgl
+
+// Uncompressed source of clipping_mask.vertex.glsl:
+/*
+attribute vec2 a_pos;
+
+uniform mat4 u_matrix;
+
+void main() {
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
+}
+
+*/
+
+// Uncompressed source of clipping_mask.fragment.glsl:
+/*
+void main() {
+ gl_FragColor = vec4(1.0);
+}
+
+*/
+
diff --git a/src/mbgl/shaders/collision_box.cpp b/src/mbgl/programs/gl/collision_box.cpp
index b016d48cc8..9af67f7981 100644
--- a/src/mbgl/shaders/collision_box.cpp
+++ b/src/mbgl/programs/gl/collision_box.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/collision_box.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/collision_box_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<CollisionBoxProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<CollisionBoxProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "collision_box",
+ programs::gl::shaderSource() + 9956, programs::gl::shaderSource() + 10635);
+}
-const char* collision_box::name = "collision_box";
-const char* collision_box::vertexSource = source() + 9956;
-const char* collision_box::fragmentSource = source() + 10635;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of collision_box.vertex.glsl:
/*
@@ -67,5 +75,3 @@ void main() {
}
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/collision_circle.cpp b/src/mbgl/programs/gl/collision_circle.cpp
index 0700ecead5..843f9161bb 100644
--- a/src/mbgl/shaders/collision_circle.cpp
+++ b/src/mbgl/programs/gl/collision_circle.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/collision_circle.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/collision_circle_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<CollisionCircleProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<CollisionCircleProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "collision_circle",
+ programs::gl::shaderSource() + 10858, programs::gl::shaderSource() + 11774);
+}
-const char* collision_circle::name = "collision_circle";
-const char* collision_circle::vertexSource = source() + 10858;
-const char* collision_circle::fragmentSource = source() + 11774;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of collision_circle.vertex.glsl:
/*
@@ -90,5 +98,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/programs/gl/debug.cpp b/src/mbgl/programs/gl/debug.cpp
new file mode 100644
index 0000000000..8b7aee5a0b
--- /dev/null
+++ b/src/mbgl/programs/gl/debug.cpp
@@ -0,0 +1,42 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#include <mbgl/programs/debug_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
+
+namespace mbgl {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<DebugProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<DebugProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "debug",
+ programs::gl::shaderSource() + 12450, programs::gl::shaderSource() + 12546);
+}
+
+} // namespace gfx
+} // namespace mbgl
+
+// Uncompressed source of debug.vertex.glsl:
+/*
+attribute vec2 a_pos;
+
+uniform mat4 u_matrix;
+
+void main() {
+ gl_Position = u_matrix * vec4(a_pos, 0, 1);
+}
+
+*/
+
+// Uncompressed source of debug.fragment.glsl:
+/*
+uniform highp vec4 u_color;
+
+void main() {
+ gl_FragColor = u_color;
+}
+
+*/
+
diff --git a/src/mbgl/shaders/extrusion_texture.cpp b/src/mbgl/programs/gl/extrusion_texture.cpp
index c254413513..bd320d52cf 100644
--- a/src/mbgl/shaders/extrusion_texture.cpp
+++ b/src/mbgl/programs/gl/extrusion_texture.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/extrusion_texture.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/extrusion_texture_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<ExtrusionTextureProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<ExtrusionTextureProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "extrusion_texture",
+ programs::gl::shaderSource() + 27554, programs::gl::shaderSource() + 27734);
+}
-const char* extrusion_texture::name = "extrusion_texture";
-const char* extrusion_texture::vertexSource = source() + 27554;
-const char* extrusion_texture::fragmentSource = source() + 27734;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of extrusion_texture.vertex.glsl:
/*
@@ -42,5 +50,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill.cpp b/src/mbgl/programs/gl/fill.cpp
index 93d69f7e4b..c15c2774ab 100644
--- a/src/mbgl/shaders/fill.cpp
+++ b/src/mbgl/programs/gl/fill.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/fill.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/fill_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<FillProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<FillProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "fill",
+ programs::gl::shaderSource() + 12610, programs::gl::shaderSource() + 13254);
+}
-const char* fill::name = "fill";
-const char* fill::vertexSource = source() + 12610;
-const char* fill::fragmentSource = source() + 13254;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of fill.vertex.glsl:
/*
@@ -94,5 +102,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_extrusion.cpp b/src/mbgl/programs/gl/fill_extrusion.cpp
index 79241afcc3..45ebb68dd4 100644
--- a/src/mbgl/shaders/fill_extrusion.cpp
+++ b/src/mbgl/programs/gl/fill_extrusion.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/fill_extrusion.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/fill_extrusion_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<FillExtrusionProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<FillExtrusionProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "fill_extrusion",
+ programs::gl::shaderSource() + 21238, programs::gl::shaderSource() + 23121);
+}
-const char* fill_extrusion::name = "fill_extrusion";
-const char* fill_extrusion::vertexSource = source() + 21238;
-const char* fill_extrusion::fragmentSource = source() + 23121;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of fill_extrusion.vertex.glsl:
/*
@@ -132,5 +140,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_extrusion_pattern.cpp b/src/mbgl/programs/gl/fill_extrusion_pattern.cpp
index 8ac17828cf..9c2da87b11 100644
--- a/src/mbgl/shaders/fill_extrusion_pattern.cpp
+++ b/src/mbgl/programs/gl/fill_extrusion_pattern.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/fill_extrusion_pattern.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/fill_extrusion_pattern_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<FillExtrusionPatternProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<FillExtrusionPatternProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "fill_extrusion_pattern",
+ programs::gl::shaderSource() + 23237, programs::gl::shaderSource() + 26157);
+}
-const char* fill_extrusion_pattern::name = "fill_extrusion_pattern";
-const char* fill_extrusion_pattern::vertexSource = source() + 23237;
-const char* fill_extrusion_pattern::fragmentSource = source() + 26157;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of fill_extrusion_pattern.vertex.glsl:
/*
@@ -231,5 +239,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_outline.cpp b/src/mbgl/programs/gl/fill_outline.cpp
index 43d92857d5..07615b2138 100644
--- a/src/mbgl/shaders/fill_outline.cpp
+++ b/src/mbgl/programs/gl/fill_outline.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/fill_outline.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/fill_outline_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<FillOutlineProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<FillOutlineProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "fill_outline",
+ programs::gl::shaderSource() + 13678, programs::gl::shaderSource() + 14503);
+}
-const char* fill_outline::name = "fill_outline";
-const char* fill_outline::vertexSource = source() + 13678;
-const char* fill_outline::fragmentSource = source() + 14503;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of fill_outline.vertex.glsl:
/*
@@ -102,5 +110,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_outline_pattern.cpp b/src/mbgl/programs/gl/fill_outline_pattern.cpp
index eeb2177582..7e0bf19655 100644
--- a/src/mbgl/shaders/fill_outline_pattern.cpp
+++ b/src/mbgl/programs/gl/fill_outline_pattern.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/fill_outline_pattern.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/fill_outline_pattern_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<FillOutlinePatternProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<FillOutlinePatternProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "fill_outline_pattern",
+ programs::gl::shaderSource() + 15092, programs::gl::shaderSource() + 16952);
+}
-const char* fill_outline_pattern::name = "fill_outline_pattern";
-const char* fill_outline_pattern::vertexSource = source() + 15092;
-const char* fill_outline_pattern::fragmentSource = source() + 16952;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of fill_outline_pattern.vertex.glsl:
/*
@@ -176,5 +184,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_pattern.cpp b/src/mbgl/programs/gl/fill_pattern.cpp
index d062ae7ecc..256b1ede99 100644
--- a/src/mbgl/shaders/fill_pattern.cpp
+++ b/src/mbgl/programs/gl/fill_pattern.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/fill_pattern.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/fill_pattern_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<FillPatternProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<FillPatternProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "fill_pattern",
+ programs::gl::shaderSource() + 18259, programs::gl::shaderSource() + 20038);
+}
-const char* fill_pattern::name = "fill_pattern";
-const char* fill_pattern::vertexSource = source() + 18259;
-const char* fill_pattern::fragmentSource = source() + 20038;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of fill_pattern.vertex.glsl:
/*
@@ -164,5 +172,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/heatmap.cpp b/src/mbgl/programs/gl/heatmap.cpp
index a768a6d4ad..59f8ad9f69 100644
--- a/src/mbgl/shaders/heatmap.cpp
+++ b/src/mbgl/programs/gl/heatmap.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/heatmap.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/heatmap_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<HeatmapProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<HeatmapProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "heatmap",
+ programs::gl::shaderSource() + 7983, programs::gl::shaderSource() + 9030);
+}
-const char* heatmap::name = "heatmap";
-const char* heatmap::vertexSource = source() + 7983;
-const char* heatmap::fragmentSource = source() + 9030;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of heatmap.vertex.glsl:
/*
@@ -131,5 +139,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/heatmap_texture.cpp b/src/mbgl/programs/gl/heatmap_texture.cpp
index 9b881b416f..530e9fa18b 100644
--- a/src/mbgl/shaders/heatmap_texture.cpp
+++ b/src/mbgl/programs/gl/heatmap_texture.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/heatmap_texture.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/heatmap_texture_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<HeatmapTextureProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<HeatmapTextureProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "heatmap_texture",
+ programs::gl::shaderSource() + 9491, programs::gl::shaderSource() + 9671);
+}
-const char* heatmap_texture::name = "heatmap_texture";
-const char* heatmap_texture::vertexSource = source() + 9491;
-const char* heatmap_texture::fragmentSource = source() + 9671;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of heatmap_texture.vertex.glsl:
/*
@@ -45,5 +53,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/hillshade.cpp b/src/mbgl/programs/gl/hillshade.cpp
index 48ddabcba1..dcf90f1149 100644
--- a/src/mbgl/shaders/hillshade.cpp
+++ b/src/mbgl/programs/gl/hillshade.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/hillshade.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/hillshade_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<HillshadeProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<HillshadeProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "hillshade",
+ programs::gl::shaderSource() + 29340, programs::gl::shaderSource() + 29511);
+}
-const char* hillshade::name = "hillshade";
-const char* hillshade::vertexSource = source() + 29340;
-const char* hillshade::fragmentSource = source() + 29511;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of hillshade.vertex.glsl:
/*
@@ -83,5 +91,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/hillshade_prepare.cpp b/src/mbgl/programs/gl/hillshade_prepare.cpp
index 9517e1f489..b445713530 100644
--- a/src/mbgl/shaders/hillshade_prepare.cpp
+++ b/src/mbgl/programs/gl/hillshade_prepare.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/hillshade_prepare.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/hillshade_prepare_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<HillshadePrepareProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<HillshadePrepareProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "hillshade_prepare",
+ programs::gl::shaderSource() + 27925, programs::gl::shaderSource() + 28218);
+}
-const char* hillshade_prepare::name = "hillshade_prepare";
-const char* hillshade_prepare::vertexSource = source() + 27925;
-const char* hillshade_prepare::fragmentSource = source() + 28218;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of hillshade_prepare.vertex.glsl:
/*
@@ -107,5 +115,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line.cpp b/src/mbgl/programs/gl/line.cpp
index a7f2a6d439..c25679ae1f 100644
--- a/src/mbgl/shaders/line.cpp
+++ b/src/mbgl/programs/gl/line.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/line.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/line_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<LineProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<LineProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "line",
+ programs::gl::shaderSource() + 30585, programs::gl::shaderSource() + 33509);
+}
-const char* line::name = "line";
-const char* line::vertexSource = source() + 30585;
-const char* line::fragmentSource = source() + 33509;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of line.vertex.glsl:
/*
@@ -243,5 +251,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line_gradient.cpp b/src/mbgl/programs/gl/line_gradient.cpp
index d9ce2af7b1..fae94b4596 100644
--- a/src/mbgl/shaders/line_gradient.cpp
+++ b/src/mbgl/programs/gl/line_gradient.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/line_gradient.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/line_gradient_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<LineGradientProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<LineGradientProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "line_gradient",
+ programs::gl::shaderSource() + 34335, programs::gl::shaderSource() + 37054);
+}
-const char* line_gradient::name = "line_gradient";
-const char* line_gradient::vertexSource = source() + 34335;
-const char* line_gradient::fragmentSource = source() + 37054;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of line_gradient.vertex.glsl:
/*
@@ -225,5 +233,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line_pattern.cpp b/src/mbgl/programs/gl/line_pattern.cpp
index 2c05c8c7ec..2e9ebaf5ea 100644
--- a/src/mbgl/shaders/line_pattern.cpp
+++ b/src/mbgl/programs/gl/line_pattern.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/line_pattern.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/line_pattern_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<LinePatternProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<LinePatternProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "line_pattern",
+ programs::gl::shaderSource() + 37841, programs::gl::shaderSource() + 41162);
+}
-const char* line_pattern::name = "line_pattern";
-const char* line_pattern::vertexSource = source() + 37841;
-const char* line_pattern::fragmentSource = source() + 41162;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of line_pattern.vertex.glsl:
/*
@@ -312,5 +320,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line_sdf.cpp b/src/mbgl/programs/gl/line_sdf.cpp
index 05695abd1b..0886bfcdf0 100644
--- a/src/mbgl/shaders/line_sdf.cpp
+++ b/src/mbgl/programs/gl/line_sdf.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/line_sdf.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/line_sdf_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<LineSDFProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<LineSDFProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "line_sdf",
+ programs::gl::shaderSource() + 43475, programs::gl::shaderSource() + 47089);
+}
-const char* line_sdf::name = "line_sdf";
-const char* line_sdf::vertexSource = source() + 43475;
-const char* line_sdf::fragmentSource = source() + 47089;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of line_sdf.vertex.glsl:
/*
@@ -305,5 +313,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/programs/gl/preludes.cpp b/src/mbgl/programs/gl/preludes.cpp
new file mode 100644
index 0000000000..6c895c0d36
--- /dev/null
+++ b/src/mbgl/programs/gl/preludes.cpp
@@ -0,0 +1,15 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#include <mbgl/programs/gl/preludes.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+
+namespace mbgl {
+namespace programs {
+namespace gl {
+
+const char* vertexShaderPrelude = programs::gl::shaderSource() + 0;
+const char* fragmentShaderPrelude = programs::gl::shaderSource() + 1252;
+
+} // namespace gl
+} // namespace programs
+} // namespace mbgl
diff --git a/src/mbgl/programs/gl/preludes.hpp b/src/mbgl/programs/gl/preludes.hpp
new file mode 100644
index 0000000000..6d86ee45c5
--- /dev/null
+++ b/src/mbgl/programs/gl/preludes.hpp
@@ -0,0 +1,14 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#pragma once
+
+namespace mbgl {
+namespace programs {
+namespace gl {
+
+extern const char* vertexShaderPrelude;
+extern const char* fragmentShaderPrelude;
+
+} // namespace gl
+} // namespace programs
+} // namespace mbgl
diff --git a/src/mbgl/shaders/raster.cpp b/src/mbgl/programs/gl/raster.cpp
index 9fcf995915..512dc81a30 100644
--- a/src/mbgl/shaders/raster.cpp
+++ b/src/mbgl/programs/gl/raster.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/raster.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/raster_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<RasterProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<RasterProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "raster",
+ programs::gl::shaderSource() + 48592, programs::gl::shaderSource() + 48941);
+}
-const char* raster::name = "raster";
-const char* raster::vertexSource = source() + 48592;
-const char* raster::fragmentSource = source() + 48941;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of raster.vertex.glsl:
/*
@@ -93,5 +101,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/programs/gl/shader_source.cpp b/src/mbgl/programs/gl/shader_source.cpp
new file mode 100644
index 0000000000..4a986403f7
--- /dev/null
+++ b/src/mbgl/programs/gl/shader_source.cpp
@@ -0,0 +1,471 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/util/compression.hpp>
+
+#include <cstdint>
+
+namespace mbgl {
+namespace programs {
+namespace gl {
+
+constexpr const uint8_t compressedShaderSource[] = {
+ 0x78, 0xda, 0xed, 0x3d, 0xfd, 0x6f, 0xe3, 0x36, 0xb2, 0xf7, 0x73, 0xfe, 0x0a, 0x17, 0x05, 0x0e,
+ 0x92, 0x2c, 0x5b, 0xb6, 0x93, 0xec, 0x97, 0x4e, 0xaf, 0x08, 0x76, 0xb3, 0x7d, 0x01, 0xda, 0xdd,
+ 0x60, 0xd3, 0xf6, 0x15, 0x57, 0x2c, 0x0c, 0xc9, 0x56, 0x6c, 0xdf, 0xd9, 0x96, 0x9f, 0xad, 0x24,
+ 0x76, 0x0e, 0xf9, 0xdf, 0x1f, 0x87, 0xdf, 0xa4, 0x48, 0x59, 0x76, 0x12, 0xe7, 0xe3, 0x19, 0x45,
+ 0x37, 0x16, 0x39, 0x1c, 0x0e, 0xc9, 0xe1, 0x70, 0x66, 0x48, 0x0e, 0x7f, 0x1c, 0x5d, 0xf6, 0xd3,
+ 0xcb, 0xda, 0xcf, 0xbf, 0x74, 0x4f, 0x2f, 0x0e, 0x66, 0xf3, 0xb4, 0x37, 0x5a, 0x8c, 0xb2, 0x69,
+ 0x6d, 0x38, 0x1a, 0x0c, 0x67, 0xb5, 0xcb, 0x71, 0x16, 0xe7, 0xe1, 0xc1, 0x8f, 0xe9, 0x78, 0x91,
+ 0x1e, 0xfc, 0x38, 0xba, 0xac, 0xfd, 0x80, 0x60, 0x47, 0xd3, 0xb4, 0xef, 0x8c, 0xb3, 0x9b, 0x99,
+ 0x7b, 0xf0, 0x23, 0xf9, 0xac, 0xc1, 0x17, 0x82, 0x9a, 0xf6, 0x47, 0x97, 0x2a, 0xd8, 0x24, 0xed,
+ 0x8f, 0xae, 0x26, 0x12, 0x24, 0x4d, 0x30, 0x02, 0xe3, 0x3a, 0x05, 0x28, 0xfe, 0xe4, 0x80, 0xe4,
+ 0xcf, 0x75, 0xda, 0xeb, 0xd4, 0xae, 0xa6, 0xb3, 0xb8, 0xf7, 0xef, 0x2e, 0x26, 0xce, 0xe9, 0x65,
+ 0xd3, 0x45, 0x4e, 0x08, 0xad, 0x41, 0x72, 0xda, 0xff, 0x23, 0x1e, 0x5f, 0xa5, 0x6e, 0xed, 0x3f,
+ 0xa3, 0x29, 0x4b, 0x39, 0x9b, 0xe6, 0x38, 0x31, 0x42, 0x49, 0x8e, 0x0c, 0x14, 0x02, 0xcc, 0x75,
+ 0x2b, 0x52, 0xc1, 0x82, 0xce, 0xf1, 0x9b, 0x70, 0x9e, 0xe6, 0x57, 0xf3, 0x69, 0x0d, 0x2a, 0x74,
+ 0xae, 0x5b, 0xbe, 0x0a, 0xd1, 0xb8, 0x6e, 0x79, 0x08, 0xc8, 0x0d, 0xef, 0x64, 0x82, 0x32, 0xf4,
+ 0xef, 0x28, 0x5f, 0x19, 0x48, 0xfa, 0x4a, 0x72, 0x28, 0x51, 0xe8, 0x7f, 0x9a, 0x20, 0x11, 0xc4,
+ 0x40, 0x82, 0x8e, 0x52, 0x35, 0x69, 0xa4, 0x28, 0xe1, 0x06, 0xed, 0xce, 0xdb, 0x66, 0xcb, 0x9f,
+ 0x64, 0x7d, 0xb5, 0xa0, 0xdf, 0x69, 0xb6, 0x5c, 0x42, 0xd0, 0x51, 0xad, 0x9f, 0xf6, 0xb2, 0x7e,
+ 0xda, 0xed, 0x65, 0xe3, 0x6c, 0x4e, 0xc9, 0xc1, 0x84, 0xa6, 0x53, 0x48, 0xef, 0x7f, 0x84, 0x74,
+ 0x44, 0x8c, 0xa8, 0xe8, 0xc8, 0x51, 0x3a, 0x55, 0x86, 0xfb, 0xab, 0xf5, 0x1d, 0x11, 0x75, 0x7c,
+ 0x8c, 0x2a, 0xb5, 0xc3, 0xb4, 0x19, 0xcc, 0x01, 0x22, 0x81, 0xb4, 0x9c, 0x02, 0x4f, 0x46, 0xcb,
+ 0x2e, 0x6e, 0x89, 0x44, 0x86, 0x34, 0x04, 0xbe, 0xdc, 0x59, 0xb9, 0xa0, 0x09, 0x15, 0x93, 0x47,
+ 0x0a, 0x11, 0xe1, 0xcb, 0x9f, 0xed, 0xef, 0x7e, 0xce, 0x1a, 0x2b, 0x55, 0xa4, 0x35, 0xf8, 0x88,
+ 0xd6, 0x84, 0x69, 0x5c, 0x14, 0xaa, 0xc2, 0x10, 0x93, 0xd1, 0x14, 0x67, 0x47, 0x4a, 0x9f, 0x61,
+ 0x8a, 0xe5, 0xc2, 0x82, 0x00, 0xfa, 0x8d, 0x5a, 0xec, 0x86, 0x04, 0x43, 0xbc, 0xac, 0x84, 0xa1,
+ 0xa3, 0x61, 0x38, 0x04, 0x0c, 0x52, 0x73, 0x19, 0x25, 0x3e, 0x43, 0xc8, 0x9a, 0xd8, 0xa9, 0x0d,
+ 0xd2, 0xbc, 0x3b, 0x8b, 0xf3, 0x3c, 0x9d, 0x4f, 0xbb, 0xb3, 0x6c, 0xa1, 0xf4, 0xe5, 0x68, 0x99,
+ 0x8e, 0x51, 0x9d, 0xd9, 0xbc, 0xdf, 0xbd, 0x9a, 0xcd, 0xd2, 0xb9, 0x6f, 0xc9, 0x44, 0x73, 0x54,
+ 0xcb, 0xa4, 0x08, 0x17, 0xa3, 0x5b, 0x6d, 0x18, 0x46, 0xe3, 0xb4, 0x7b, 0x35, 0x1d, 0xe5, 0x8b,
+ 0x6e, 0x9e, 0x75, 0x31, 0x8e, 0x85, 0x52, 0x30, 0x5b, 0x90, 0xde, 0xeb, 0xd4, 0xb2, 0xcb, 0xcb,
+ 0x45, 0x9a, 0x47, 0xc0, 0x8d, 0xec, 0xff, 0x22, 0x41, 0x72, 0x45, 0x2e, 0xcc, 0x9b, 0x66, 0xcb,
+ 0x94, 0x56, 0x2f, 0x52, 0xab, 0x40, 0xb1, 0xbe, 0x72, 0x4c, 0xf4, 0x79, 0x88, 0xa8, 0x3a, 0xa1,
+ 0xc6, 0x0d, 0xe4, 0x62, 0xe1, 0xdd, 0xc1, 0xdf, 0x7e, 0x34, 0xcb, 0x38, 0x2a, 0x8b, 0x9e, 0x9f,
+ 0x94, 0xfb, 0x1b, 0xa2, 0x7f, 0x3e, 0x4a, 0xae, 0xf2, 0x94, 0x74, 0x78, 0x0c, 0x83, 0x1e, 0xa2,
+ 0x16, 0x5f, 0x66, 0xf3, 0x09, 0xe2, 0xb7, 0x1c, 0x31, 0x7d, 0x17, 0xfd, 0x99, 0x8f, 0x96, 0xe1,
+ 0x75, 0x36, 0xea, 0xa3, 0xa4, 0xd1, 0xd4, 0x41, 0x63, 0x32, 0x18, 0x77, 0xcf, 0xb3, 0xc5, 0x28,
+ 0x47, 0xad, 0x8b, 0x18, 0x84, 0x87, 0xa7, 0x37, 0x46, 0xe1, 0xb7, 0xfc, 0xb6, 0x0b, 0x1d, 0xc2,
+ 0x50, 0x91, 0xf9, 0x43, 0x38, 0x96, 0xe3, 0xa7, 0xd3, 0x97, 0x89, 0xb3, 0x42, 0x0d, 0x9f, 0xe7,
+ 0xf1, 0x80, 0x30, 0x3c, 0x2d, 0xe9, 0x09, 0xd8, 0x03, 0xda, 0xd5, 0x5f, 0xff, 0x38, 0xfd, 0xf6,
+ 0xe9, 0xdb, 0xc9, 0xff, 0x74, 0xcf, 0xbe, 0x5c, 0x9c, 0x9f, 0x7e, 0xfc, 0xed, 0xeb, 0xb7, 0x03,
+ 0xa5, 0x24, 0xa6, 0xa9, 0x8d, 0x24, 0x56, 0xc8, 0xda, 0x2c, 0x51, 0xa5, 0x36, 0x50, 0xa2, 0x15,
+ 0x49, 0xda, 0xae, 0x3c, 0xb6, 0xdd, 0xb8, 0x34, 0x37, 0x29, 0xe4, 0xea, 0xac, 0x59, 0x06, 0x80,
+ 0x39, 0xb0, 0xd0, 0x29, 0x8b, 0x5e, 0x3c, 0x96, 0xeb, 0x55, 0xd3, 0x93, 0x42, 0xba, 0x89, 0x57,
+ 0x43, 0xe3, 0xf0, 0x5e, 0xc7, 0xf3, 0xd5, 0x68, 0x3a, 0x20, 0x49, 0xd7, 0x90, 0x84, 0xaa, 0x31,
+ 0x24, 0x26, 0x5b, 0x0c, 0x39, 0x45, 0x17, 0xe9, 0x72, 0xc4, 0xd0, 0x25, 0xbe, 0xa1, 0x17, 0x7c,
+ 0xde, 0x6e, 0x4f, 0x1f, 0x00, 0xdf, 0xdc, 0x44, 0x1f, 0x57, 0xce, 0x2a, 0x4e, 0xee, 0x5d, 0x71,
+ 0xa2, 0x57, 0x9c, 0xac, 0xa9, 0x58, 0x65, 0x72, 0x99, 0x35, 0xf2, 0xb1, 0x9d, 0x6d, 0x92, 0xb9,
+ 0x3d, 0x0f, 0x95, 0x4b, 0x4a, 0xca, 0x15, 0xf2, 0xf2, 0x74, 0x89, 0xe5, 0x8f, 0xce, 0x11, 0x13,
+ 0x89, 0xa7, 0xf5, 0xa9, 0xc6, 0xd2, 0x17, 0xf1, 0x64, 0x36, 0x4e, 0xe7, 0x9d, 0x4f, 0x28, 0x6f,
+ 0x34, 0x89, 0x07, 0xe9, 0xb6, 0xdc, 0x81, 0x73, 0x30, 0x06, 0xdc, 0xab, 0x58, 0x50, 0xd3, 0xd2,
+ 0x3e, 0x9e, 0x7e, 0x4c, 0xa0, 0x47, 0xb0, 0x02, 0xa9, 0x9d, 0x14, 0xf0, 0x36, 0xf8, 0x6a, 0x0f,
+ 0x49, 0x19, 0x02, 0x35, 0x5d, 0x0c, 0xb1, 0x40, 0x68, 0x47, 0x28, 0x1f, 0xc9, 0xea, 0xb4, 0xf3,
+ 0xc9, 0xa1, 0x0d, 0xf0, 0x09, 0x3b, 0xa8, 0xe4, 0x20, 0xc6, 0x10, 0x04, 0x25, 0x2a, 0x41, 0x9d,
+ 0x22, 0x45, 0x89, 0x8d, 0xa2, 0xc4, 0x48, 0x51, 0x37, 0x91, 0x69, 0xea, 0x98, 0x69, 0xea, 0xb8,
+ 0xa1, 0x22, 0x98, 0xa0, 0x52, 0xd2, 0x06, 0x9f, 0x14, 0xf3, 0xf1, 0x88, 0xb9, 0xbb, 0x91, 0x71,
+ 0x49, 0x96, 0x8d, 0xb9, 0x30, 0xb9, 0x19, 0xe5, 0x43, 0x04, 0x30, 0xd3, 0x73, 0x67, 0xa3, 0xbc,
+ 0x37, 0x2c, 0xe6, 0x52, 0xb6, 0x43, 0x8d, 0x9c, 0x5f, 0x21, 0x2d, 0x04, 0xe3, 0xe0, 0x99, 0x92,
+ 0x3a, 0x0f, 0xf2, 0x3e, 0x9e, 0xa4, 0xf3, 0x18, 0x26, 0x4d, 0x2f, 0x9d, 0xa2, 0x4e, 0xec, 0xf6,
+ 0x47, 0x8b, 0x3c, 0x9e, 0xf6, 0x52, 0xb3, 0x64, 0x82, 0x06, 0x4f, 0xa1, 0xc5, 0xff, 0x7d, 0x72,
+ 0xd1, 0xfd, 0xfd, 0xcb, 0xd9, 0xe7, 0xaf, 0xdf, 0x7e, 0xed, 0x52, 0xd9, 0x7f, 0xc0, 0x6a, 0x80,
+ 0xc5, 0x91, 0x56, 0x10, 0x93, 0xac, 0x6e, 0x2e, 0xa1, 0x23, 0x04, 0xe0, 0xe1, 0xa0, 0xd9, 0x9c,
+ 0x7b, 0xa5, 0x2c, 0x92, 0x41, 0x57, 0x62, 0x95, 0x76, 0x65, 0xa9, 0x92, 0x16, 0x56, 0x03, 0x61,
+ 0xf3, 0x18, 0xad, 0xbe, 0x0b, 0x33, 0x65, 0x24, 0x4f, 0x21, 0x8d, 0xa9, 0x01, 0xb4, 0xc5, 0x04,
+ 0x82, 0x53, 0xa7, 0x28, 0x09, 0x35, 0x9a, 0xa9, 0x51, 0xa8, 0xc2, 0x30, 0x02, 0xd6, 0x50, 0x99,
+ 0x8c, 0xaf, 0x2c, 0xbd, 0x07, 0x39, 0x0a, 0x85, 0x38, 0x97, 0x92, 0x07, 0x99, 0x9c, 0x38, 0xa9,
+ 0x18, 0x4e, 0xd7, 0xe8, 0x92, 0xb2, 0x49, 0x7d, 0x6b, 0x48, 0xa2, 0x1c, 0x6e, 0xa6, 0x8a, 0x66,
+ 0x5a, 0x09, 0xe3, 0xea, 0x42, 0x91, 0x36, 0x31, 0x73, 0xec, 0xe4, 0x49, 0x30, 0x25, 0x14, 0x2e,
+ 0xf2, 0x79, 0xf6, 0xef, 0xb4, 0x8c, 0xf5, 0x64, 0x08, 0x3b, 0x07, 0xca, 0x50, 0x26, 0x46, 0x54,
+ 0xf2, 0xcb, 0xf8, 0x51, 0x07, 0x5c, 0x4f, 0xfb, 0xcd, 0xa8, 0x9f, 0x0f, 0x4b, 0x69, 0xc7, 0x10,
+ 0x65, 0x2c, 0x2a, 0xc3, 0x59, 0x18, 0x55, 0x01, 0x59, 0xc3, 0xae, 0x3a, 0xec, 0xfa, 0x36, 0x94,
+ 0x32, 0x8a, 0x0a, 0x63, 0xe5, 0x17, 0x15, 0xcc, 0xc4, 0x36, 0x1a, 0x44, 0x19, 0xf7, 0x14, 0x41,
+ 0x89, 0xbb, 0x40, 0x2c, 0x90, 0x87, 0x68, 0x81, 0xec, 0xc7, 0x79, 0x2c, 0xad, 0x8f, 0xf0, 0x0b,
+ 0xad, 0x91, 0xa5, 0xe2, 0xad, 0x47, 0x14, 0x5d, 0xdd, 0xc4, 0xa4, 0x32, 0xcc, 0xe7, 0xa2, 0xce,
+ 0x65, 0xe4, 0xe9, 0xd2, 0x2c, 0xda, 0x48, 0x66, 0x91, 0x3f, 0x91, 0x6e, 0x3b, 0x33, 0xa9, 0xe4,
+ 0x0b, 0x01, 0xc6, 0x2b, 0x34, 0x09, 0xa8, 0x68, 0x13, 0x19, 0x04, 0xff, 0x18, 0x6a, 0x84, 0x64,
+ 0x9f, 0x09, 0x23, 0x5e, 0x9b, 0x26, 0x71, 0xa2, 0x8d, 0xe4, 0x0a, 0xfd, 0x6b, 0xa8, 0x8c, 0xe6,
+ 0xf8, 0x92, 0x98, 0x31, 0x55, 0xc9, 0x11, 0x6c, 0x23, 0x2e, 0xe4, 0x0f, 0xd3, 0x88, 0xca, 0xf9,
+ 0xbe, 0x2e, 0x48, 0x4c, 0xe3, 0xab, 0x22, 0xdc, 0x5a, 0x14, 0xc8, 0x1f, 0x86, 0xae, 0x91, 0xb3,
+ 0x7d, 0x5d, 0x46, 0x58, 0xb8, 0x40, 0x45, 0x79, 0x8f, 0x09, 0xae, 0x7e, 0xda, 0xa9, 0x13, 0xe3,
+ 0xa7, 0xcf, 0x7e, 0xd3, 0x30, 0xea, 0x58, 0xad, 0xd3, 0x17, 0xfb, 0xac, 0x88, 0x42, 0x13, 0xe1,
+ 0x0a, 0x41, 0x5d, 0x24, 0x76, 0x0d, 0xb8, 0xbb, 0x3c, 0xf4, 0x4f, 0x43, 0x68, 0x8d, 0xbd, 0xd1,
+ 0xbc, 0x87, 0xf4, 0x26, 0xa2, 0xd3, 0x44, 0xa8, 0x2a, 0x3c, 0xac, 0x08, 0xd8, 0x6b, 0x35, 0x8f,
+ 0xdd, 0x10, 0x19, 0xe1, 0x8e, 0xae, 0x3d, 0x31, 0x15, 0xb9, 0x97, 0xcd, 0xa7, 0x48, 0x0f, 0x9a,
+ 0x31, 0x4b, 0x4a, 0x41, 0x45, 0x4b, 0xaa, 0x5a, 0x19, 0x2a, 0xa9, 0x15, 0xaa, 0x47, 0x94, 0x54,
+ 0xcf, 0x21, 0x93, 0xaf, 0x2e, 0xf7, 0x3b, 0x68, 0x90, 0xaa, 0x6e, 0x76, 0x57, 0x83, 0x7e, 0xa1,
+ 0x6e, 0xa8, 0xd9, 0x3c, 0xfb, 0x57, 0xda, 0xcb, 0xd3, 0x3e, 0x23, 0x5f, 0xb5, 0xe5, 0x14, 0x7a,
+ 0x88, 0x4d, 0x77, 0xbf, 0xda, 0x3d, 0x47, 0xaf, 0xb1, 0x79, 0x13, 0x94, 0x68, 0x86, 0xc8, 0xa2,
+ 0xb2, 0x5b, 0x9a, 0x1a, 0x29, 0xd4, 0xcd, 0x40, 0x9b, 0x57, 0x52, 0xac, 0xd8, 0x28, 0x4b, 0x4f,
+ 0x4b, 0x38, 0x9a, 0xcb, 0xd5, 0xa6, 0x4d, 0x2d, 0x53, 0x78, 0x0d, 0x54, 0x6e, 0x51, 0x83, 0x5c,
+ 0xfa, 0x26, 0xbc, 0xbb, 0x93, 0xd7, 0xc3, 0x69, 0x3e, 0x8a, 0xc7, 0xa3, 0x78, 0x81, 0xc5, 0x25,
+ 0x62, 0xd6, 0xe0, 0xd3, 0xe9, 0x1f, 0x67, 0x1f, 0x4f, 0xbb, 0xe7, 0x67, 0x7f, 0x9e, 0xfe, 0xd2,
+ 0xfd, 0x76, 0xf2, 0xdb, 0xd9, 0xd7, 0xc0, 0x58, 0x4b, 0x48, 0x16, 0x2c, 0x60, 0xfc, 0x43, 0x87,
+ 0xd6, 0xd7, 0x5c, 0xfa, 0xec, 0x17, 0x9a, 0x6c, 0x32, 0x6a, 0x97, 0x3a, 0xba, 0xac, 0x2b, 0xd9,
+ 0x63, 0xab, 0xdb, 0xbb, 0x51, 0x98, 0x1f, 0x59, 0xf3, 0xdd, 0x9d, 0xf2, 0xfa, 0x14, 0x4a, 0xe7,
+ 0x53, 0xaa, 0x8a, 0x4f, 0xa0, 0xdf, 0x51, 0xdd, 0xce, 0x36, 0x21, 0xaa, 0x68, 0x6a, 0x56, 0x6e,
+ 0xaf, 0xac, 0x75, 0x59, 0xf8, 0x78, 0xbd, 0x1e, 0x65, 0x67, 0xd2, 0xaa, 0x0a, 0xd1, 0x1a, 0x0e,
+ 0xdc, 0x5c, 0x93, 0x59, 0xc3, 0x5e, 0x5b, 0xe9, 0x20, 0x6b, 0x19, 0xe7, 0xde, 0x7a, 0x03, 0x66,
+ 0x0b, 0x24, 0xd4, 0x43, 0x82, 0x84, 0x49, 0xee, 0x71, 0x3a, 0x1d, 0x20, 0xca, 0xc8, 0x1f, 0x26,
+ 0x5f, 0xdd, 0xd0, 0x2a, 0xba, 0x29, 0x9e, 0xdb, 0x50, 0xcb, 0x44, 0x0b, 0x28, 0xce, 0x6f, 0x4c,
+ 0xe2, 0xa5, 0x43, 0x94, 0x66, 0x55, 0x2e, 0x2b, 0x23, 0xd5, 0xcd, 0xa3, 0xc5, 0x24, 0xcb, 0xf2,
+ 0xe1, 0x22, 0x4f, 0x67, 0x4e, 0xab, 0xd9, 0xf2, 0x75, 0x44, 0xbe, 0x4a, 0x20, 0xd1, 0x6f, 0x08,
+ 0x0e, 0xaa, 0x8b, 0x46, 0x72, 0x5f, 0xd6, 0xfe, 0x51, 0x43, 0x58, 0xda, 0xb5, 0x9f, 0xe0, 0x4f,
+ 0xed, 0x43, 0x4d, 0xc2, 0x5e, 0xc0, 0x0c, 0xd5, 0x69, 0xd8, 0x09, 0xc3, 0x9a, 0x17, 0x20, 0xcd,
+ 0x35, 0xc6, 0x5b, 0xe0, 0x71, 0x27, 0x99, 0xc7, 0xf4, 0x3e, 0x99, 0x63, 0x3c, 0x4d, 0x27, 0x94,
+ 0x34, 0xe8, 0x7b, 0x38, 0xce, 0x1e, 0x7b, 0x4b, 0xc4, 0xbe, 0xcb, 0x21, 0xc8, 0xb1, 0xae, 0xb0,
+ 0x37, 0x29, 0x9a, 0x4b, 0xb9, 0xd9, 0x1c, 0x26, 0x79, 0x66, 0x57, 0x44, 0x87, 0xe7, 0x6b, 0x4e,
+ 0x08, 0x52, 0x98, 0x66, 0x19, 0x97, 0x02, 0x26, 0x19, 0x05, 0xcc, 0x63, 0x7b, 0xc4, 0x36, 0x5b,
+ 0xc3, 0xcb, 0x1d, 0x9d, 0xac, 0x90, 0xd9, 0x5b, 0x69, 0x73, 0x8b, 0xb3, 0xf4, 0x11, 0xd2, 0xe1,
+ 0xa6, 0x0b, 0xc8, 0xa9, 0xb2, 0x93, 0x42, 0xeb, 0x08, 0xc9, 0x0e, 0xa6, 0xdc, 0x7b, 0xff, 0x3c,
+ 0xfd, 0xf6, 0x15, 0xab, 0x64, 0x78, 0xeb, 0x3a, 0x68, 0xbf, 0x69, 0xb6, 0x42, 0xbe, 0x31, 0xf7,
+ 0xf3, 0xc9, 0xef, 0x17, 0x17, 0xdd, 0x8f, 0x5f, 0x4f, 0x3f, 0xa3, 0x99, 0x75, 0xf8, 0xfe, 0xdd,
+ 0xfb, 0xa3, 0x4e, 0xe7, 0x5d, 0xeb, 0xa8, 0xd5, 0x3e, 0x3a, 0xec, 0xbc, 0x3d, 0xa8, 0xea, 0x45,
+ 0xa0, 0x9c, 0x41, 0xfe, 0x18, 0xec, 0x27, 0x92, 0xe1, 0x0b, 0x36, 0xd1, 0x0c, 0x4d, 0x99, 0x11,
+ 0xa2, 0xcd, 0x46, 0xdb, 0xbc, 0x44, 0x3d, 0xb8, 0x67, 0x81, 0x9e, 0x80, 0xc0, 0x23, 0xd8, 0xef,
+ 0x56, 0xb2, 0xd6, 0x08, 0xc2, 0x8b, 0x68, 0xf1, 0xbf, 0xf3, 0xdc, 0x69, 0xa0, 0x64, 0x6f, 0x9c,
+ 0x0d, 0x1c, 0x18, 0x8d, 0x80, 0x34, 0x30, 0x90, 0xc6, 0x38, 0x10, 0x03, 0xe1, 0xba, 0xc1, 0x21,
+ 0x1a, 0x22, 0x3e, 0xa4, 0xd1, 0x85, 0xa7, 0x57, 0x1c, 0x6a, 0xb2, 0x9f, 0xe9, 0xf1, 0x84, 0xe8,
+ 0x82, 0x0d, 0x46, 0x6c, 0xaf, 0x6c, 0x41, 0x26, 0xb9, 0x6e, 0x32, 0xd6, 0x29, 0x30, 0x11, 0x12,
+ 0x46, 0x49, 0x02, 0xfc, 0xb6, 0x4e, 0x2c, 0x3c, 0xd0, 0xd4, 0x36, 0x03, 0x89, 0xb9, 0x60, 0x61,
+ 0xfb, 0x8d, 0x19, 0xda, 0xaa, 0x36, 0xd1, 0xe6, 0x54, 0x61, 0x4c, 0x92, 0xdb, 0x8f, 0x1a, 0xa8,
+ 0x1b, 0x3d, 0x34, 0x66, 0xf8, 0xff, 0x7e, 0x96, 0x3b, 0x9c, 0x2e, 0x9f, 0xff, 0x62, 0xfc, 0x70,
+ 0x1d, 0x8f, 0x23, 0x82, 0xc6, 0x93, 0x9a, 0xe5, 0x09, 0xb2, 0xbd, 0x74, 0x39, 0x73, 0xfa, 0xda,
+ 0xaa, 0x84, 0x07, 0x0e, 0x15, 0x85, 0xdd, 0x23, 0xf6, 0xbf, 0xbb, 0x83, 0x7d, 0xe8, 0x9b, 0x6c,
+ 0x3e, 0xee, 0x57, 0xdd, 0xc9, 0xdd, 0x68, 0x49, 0xf2, 0x28, 0x72, 0x69, 0xeb, 0xb6, 0xb9, 0x8c,
+ 0x62, 0xf2, 0x97, 0x7e, 0xaf, 0x40, 0x6c, 0x35, 0x48, 0xda, 0x4a, 0xde, 0xec, 0x2c, 0xee, 0x1c,
+ 0x9a, 0x72, 0xc8, 0x92, 0x3c, 0x47, 0x29, 0xf6, 0x5d, 0xff, 0x35, 0x8d, 0xa0, 0x47, 0x45, 0x0c,
+ 0xbb, 0x6a, 0x18, 0xd8, 0x6d, 0xce, 0xa5, 0xcd, 0x37, 0x05, 0x4a, 0x54, 0xee, 0x63, 0x29, 0x91,
+ 0xfb, 0x30, 0xd7, 0xb4, 0x61, 0xbd, 0xd7, 0xc1, 0x82, 0x56, 0x15, 0xdd, 0xa1, 0x90, 0x18, 0x4f,
+ 0x7b, 0xc3, 0x6c, 0x6e, 0xce, 0x63, 0x93, 0xa9, 0x88, 0x69, 0x1c, 0xf7, 0x52, 0x03, 0x1f, 0x2c,
+ 0x86, 0xa3, 0xcb, 0x3c, 0xac, 0xc4, 0x49, 0xe5, 0x6b, 0xa0, 0xdd, 0x75, 0xc1, 0x46, 0x88, 0xce,
+ 0x1e, 0x46, 0x8a, 0x9e, 0x3c, 0xcd, 0xf2, 0xdf, 0x17, 0x90, 0xae, 0xed, 0x0b, 0x4b, 0x3e, 0xa7,
+ 0xf3, 0x0c, 0x4d, 0xb7, 0x02, 0x2b, 0x8a, 0xfe, 0x20, 0x9c, 0x28, 0xcf, 0x7b, 0x41, 0x15, 0x85,
+ 0x62, 0x54, 0x45, 0x2a, 0xd2, 0xe6, 0x8d, 0x5a, 0x2c, 0x1b, 0x8f, 0xf1, 0xd9, 0x9b, 0xee, 0x2c,
+ 0x9d, 0x2f, 0x66, 0x08, 0x6e, 0x74, 0x9d, 0x22, 0x56, 0x40, 0x53, 0x21, 0xea, 0x8d, 0x11, 0x47,
+ 0xa0, 0xa1, 0x3b, 0xae, 0x83, 0xcc, 0x70, 0x4a, 0x5a, 0x1e, 0x58, 0x6b, 0x77, 0xb1, 0x8a, 0x7b,
+ 0x04, 0xc3, 0xbf, 0x56, 0xef, 0x63, 0xa2, 0x42, 0xf7, 0xfc, 0x38, 0x7c, 0xb4, 0xeb, 0x74, 0x18,
+ 0xd7, 0xf8, 0x7b, 0xbc, 0x92, 0x56, 0x85, 0x6c, 0x58, 0x22, 0xc6, 0x2a, 0x78, 0x0a, 0xd3, 0x31,
+ 0x11, 0x89, 0x78, 0x0e, 0xdf, 0x67, 0x40, 0xa9, 0x36, 0x37, 0x9e, 0x0d, 0xe3, 0x08, 0xf5, 0x5f,
+ 0x68, 0x94, 0x72, 0xb8, 0xd1, 0xac, 0xe1, 0x1e, 0x06, 0xc6, 0x1e, 0x37, 0x56, 0x55, 0xed, 0xbf,
+ 0x6a, 0x30, 0x15, 0x4d, 0xfa, 0xaf, 0x54, 0x12, 0x4f, 0x57, 0x5a, 0xfa, 0x8e, 0x14, 0xa7, 0x24,
+ 0x19, 0xcb, 0x7b, 0x51, 0xb3, 0x1d, 0xde, 0xed, 0x64, 0x16, 0x3e, 0xab, 0xe9, 0xa6, 0xa5, 0x6b,
+ 0xdb, 0xca, 0xda, 0x22, 0x6d, 0x4e, 0x66, 0x4a, 0xca, 0x7e, 0xe6, 0x1a, 0x67, 0xae, 0x4c, 0xdf,
+ 0x2c, 0xee, 0xf7, 0x51, 0x07, 0x76, 0x2f, 0xe3, 0x5e, 0x9e, 0x81, 0x9f, 0xb5, 0x53, 0x98, 0xd8,
+ 0x9c, 0x7f, 0x0a, 0xd3, 0x59, 0x2d, 0xfc, 0x18, 0xb3, 0x9b, 0x8d, 0x7f, 0x14, 0x27, 0x0b, 0x21,
+ 0x60, 0x9a, 0x2b, 0x57, 0x52, 0x66, 0x05, 0x7d, 0x2a, 0x3d, 0xa1, 0xc6, 0x0f, 0xd1, 0x06, 0xfe,
+ 0xed, 0x52, 0xea, 0x25, 0xb5, 0x81, 0xaf, 0xfe, 0xd7, 0x08, 0x0a, 0x7b, 0xdf, 0x59, 0xdd, 0xcf,
+ 0x83, 0xeb, 0x75, 0xf1, 0x26, 0xa9, 0x16, 0x1b, 0x0b, 0xb7, 0xde, 0xb6, 0x52, 0xad, 0x47, 0xc5,
+ 0x59, 0x87, 0x1d, 0x71, 0x56, 0x08, 0xd6, 0x1c, 0x4a, 0x5a, 0x73, 0xdc, 0x52, 0xef, 0x93, 0xd0,
+ 0x85, 0x3d, 0x13, 0xce, 0xd0, 0xe0, 0x51, 0x6b, 0x23, 0x8b, 0xd5, 0x08, 0x1c, 0x18, 0x46, 0x51,
+ 0xb1, 0xe0, 0xd8, 0xa8, 0x94, 0x55, 0xc5, 0xf8, 0x07, 0x58, 0x2a, 0xed, 0x0f, 0x52, 0xcc, 0xb7,
+ 0x46, 0xd7, 0x51, 0xa9, 0x7f, 0xab, 0xa1, 0x6c, 0x5e, 0x42, 0x4f, 0x37, 0x74, 0xcc, 0x56, 0x27,
+ 0x13, 0xf1, 0x3e, 0xde, 0xed, 0xee, 0x30, 0xac, 0x61, 0xe3, 0x63, 0xed, 0xd1, 0xd7, 0x0d, 0xe9,
+ 0x7b, 0x69, 0x27, 0xa9, 0x9e, 0xd3, 0x81, 0xa0, 0x82, 0x81, 0xfa, 0xe4, 0x67, 0x36, 0x76, 0x70,
+ 0xac, 0xa1, 0x2a, 0x0f, 0x3f, 0xc9, 0xc6, 0xdf, 0x03, 0x6f, 0x9a, 0x3d, 0xf2, 0xc6, 0xcd, 0x46,
+ 0xbb, 0x27, 0x06, 0x5b, 0xf4, 0x41, 0x8e, 0x7f, 0x6e, 0x20, 0x2b, 0x8c, 0xfe, 0x06, 0x83, 0x55,
+ 0x6e, 0x1b, 0x9c, 0xab, 0x7c, 0x3c, 0x9a, 0x96, 0x1e, 0x95, 0x53, 0x40, 0xec, 0x32, 0x46, 0x01,
+ 0x33, 0xc9, 0x1a, 0x15, 0xa0, 0x8c, 0xab, 0x0a, 0x90, 0xaf, 0x48, 0xf6, 0xa8, 0x1d, 0xae, 0x7c,
+ 0x99, 0x64, 0x91, 0x02, 0xe0, 0x17, 0x06, 0xc3, 0x24, 0x9b, 0x34, 0x9c, 0x5b, 0xf5, 0xe6, 0x53,
+ 0xcb, 0x2a, 0xcc, 0xb3, 0x91, 0xa3, 0xea, 0xe6, 0x81, 0xa2, 0x71, 0xd7, 0x61, 0xd2, 0x04, 0xe0,
+ 0x15, 0x66, 0x5c, 0x6f, 0x15, 0x70, 0x6a, 0x9f, 0xef, 0x9c, 0x35, 0x1f, 0x8a, 0xbb, 0xd6, 0xb8,
+ 0xda, 0x2c, 0xf2, 0x4c, 0x69, 0xfb, 0x36, 0x6c, 0x72, 0x4f, 0x19, 0x29, 0x34, 0x45, 0xa1, 0xc6,
+ 0x22, 0xda, 0x1b, 0x5c, 0x0a, 0x66, 0x73, 0x64, 0x0f, 0xad, 0x98, 0x82, 0x48, 0x94, 0x77, 0x70,
+ 0x5b, 0x6a, 0x1b, 0xa0, 0xa0, 0x7c, 0x03, 0x16, 0x5d, 0x13, 0x94, 0xc9, 0xf6, 0x1c, 0x5c, 0x9c,
+ 0x09, 0xe1, 0xdd, 0x39, 0x78, 0x1f, 0xee, 0x06, 0x11, 0x3b, 0xbb, 0x81, 0x8d, 0x9b, 0xfb, 0xde,
+ 0x00, 0xaa, 0xbe, 0x0c, 0x3c, 0xfb, 0x23, 0xdd, 0xec, 0x1e, 0xc7, 0xe5, 0x3c, 0x9b, 0x98, 0xc9,
+ 0x94, 0x21, 0x8c, 0xb4, 0x1e, 0x69, 0x40, 0x2a, 0xc1, 0xf4, 0x22, 0xa8, 0x94, 0x6d, 0x22, 0x9a,
+ 0x0e, 0x8f, 0x0e, 0x57, 0x81, 0xf0, 0x3c, 0x2b, 0x27, 0x1b, 0x19, 0x3a, 0xeb, 0x88, 0xce, 0xb3,
+ 0x12, 0x92, 0x51, 0x66, 0x05, 0x82, 0x09, 0x54, 0xf5, 0xd5, 0xea, 0xa9, 0x8e, 0xe4, 0x2a, 0xc3,
+ 0x2d, 0x7f, 0x44, 0x71, 0xd7, 0x34, 0x48, 0xd2, 0x5e, 0xb4, 0x3a, 0x8a, 0xd1, 0xb6, 0x83, 0x25,
+ 0x7e, 0x46, 0x71, 0xb7, 0xd8, 0xc9, 0xc6, 0x0a, 0x11, 0xac, 0xb9, 0xab, 0xe5, 0x8b, 0xb4, 0x70,
+ 0x69, 0x2a, 0x92, 0x69, 0x82, 0x43, 0x27, 0x0a, 0x04, 0xdc, 0x9e, 0x52, 0x21, 0x6e, 0x6f, 0x42,
+ 0x1d, 0x47, 0x12, 0x89, 0x8a, 0x4c, 0x18, 0x94, 0x7c, 0x54, 0x9e, 0x3a, 0xc0, 0x40, 0xf0, 0x7c,
+ 0xc3, 0xfe, 0x38, 0x2a, 0x64, 0x9a, 0xcb, 0x50, 0xdc, 0xe7, 0x55, 0x73, 0xd8, 0x59, 0x18, 0x20,
+ 0xe1, 0x82, 0xfa, 0x94, 0x48, 0x0e, 0x3b, 0xde, 0x92, 0x67, 0x6a, 0xfa, 0x4d, 0x58, 0x6d, 0x79,
+ 0x07, 0x5a, 0x91, 0x30, 0x9f, 0x8d, 0xe3, 0x15, 0xbd, 0x21, 0x48, 0xb6, 0x82, 0x1d, 0xb9, 0x0b,
+ 0x9a, 0xcb, 0x86, 0xdc, 0x67, 0xcd, 0xa5, 0x1b, 0x08, 0xf2, 0x7d, 0x15, 0x74, 0xa5, 0x82, 0xae,
+ 0x64, 0x50, 0x53, 0x7d, 0x49, 0xb1, 0xbe, 0x44, 0xad, 0x2f, 0x29, 0xa9, 0x2f, 0x51, 0xeb, 0x4b,
+ 0x0a, 0xf5, 0xdd, 0xf3, 0x22, 0x25, 0xef, 0x70, 0x4f, 0xed, 0x24, 0x9f, 0x8f, 0xd1, 0x43, 0xdd,
+ 0x9c, 0xa4, 0x03, 0xa8, 0xd6, 0x93, 0x58, 0xea, 0xd9, 0x42, 0x21, 0x5b, 0x73, 0xdb, 0xd1, 0xbe,
+ 0x0f, 0xc9, 0x56, 0x87, 0xcb, 0xb8, 0x9f, 0x3e, 0xea, 0x92, 0xb7, 0xbb, 0x55, 0x6b, 0xd7, 0xcb,
+ 0xcd, 0x63, 0xae, 0x15, 0x8f, 0x71, 0xec, 0x50, 0xe9, 0xac, 0x6d, 0x04, 0x7a, 0x69, 0x6f, 0xbc,
+ 0x38, 0x81, 0xbd, 0xd9, 0xa5, 0x5c, 0xcb, 0x95, 0xdc, 0x27, 0xba, 0x90, 0x6b, 0xb9, 0x8e, 0xfb,
+ 0x60, 0x97, 0x71, 0x1f, 0xd9, 0xa8, 0x30, 0x5d, 0xef, 0x05, 0x41, 0x44, 0x3d, 0xff, 0xde, 0x0e,
+ 0xe3, 0x18, 0x3c, 0x0f, 0x4b, 0x62, 0x6f, 0x36, 0xec, 0xcd, 0x86, 0xbd, 0xd9, 0xb0, 0x37, 0x1b,
+ 0x2c, 0x66, 0xc3, 0x3f, 0xb3, 0x6c, 0x72, 0x7f, 0xd3, 0xe1, 0xb5, 0x5b, 0x05, 0x3b, 0x89, 0xc1,
+ 0x52, 0x6a, 0x3a, 0xf0, 0x71, 0xda, 0x81, 0xf9, 0x50, 0xa8, 0x6b, 0xbd, 0x35, 0xa0, 0xe8, 0xfc,
+ 0x0f, 0x11, 0xe4, 0x64, 0xaf, 0xfa, 0xef, 0x55, 0xff, 0xbd, 0xea, 0xff, 0xba, 0x54, 0xff, 0x8a,
+ 0x8a, 0xfa, 0x6e, 0x54, 0xf4, 0x43, 0x94, 0x3a, 0x86, 0xb3, 0xe8, 0x6a, 0x6c, 0x34, 0x36, 0xa5,
+ 0x78, 0xb6, 0xbc, 0x7f, 0xab, 0xc8, 0x12, 0x9c, 0x2b, 0x0e, 0xe7, 0xeb, 0x92, 0xf0, 0x3a, 0x9d,
+ 0xe7, 0x23, 0x24, 0x61, 0xbb, 0x03, 0x38, 0x46, 0x93, 0x4e, 0xf3, 0x70, 0xfd, 0xf1, 0x48, 0x50,
+ 0xfd, 0xa6, 0x08, 0x09, 0x2a, 0x95, 0x2a, 0x5b, 0xc1, 0x47, 0x48, 0x2e, 0xb2, 0xdd, 0x1d, 0xf3,
+ 0xd5, 0xd9, 0xd8, 0x2c, 0xf2, 0x62, 0x9c, 0x63, 0xbf, 0x9b, 0x04, 0xb9, 0xe5, 0x77, 0x14, 0x18,
+ 0x44, 0x89, 0xf4, 0x1a, 0x96, 0x5c, 0x8e, 0x1a, 0xae, 0xb9, 0x1c, 0x35, 0xac, 0x70, 0x4d, 0x62,
+ 0x58, 0xe5, 0x4e, 0xcc, 0x7d, 0x8f, 0xd8, 0x54, 0x3f, 0x2b, 0x51, 0x45, 0x8d, 0xc6, 0xe3, 0x21,
+ 0xb7, 0x02, 0x12, 0x4c, 0x31, 0x38, 0x50, 0xb2, 0xcf, 0x06, 0xc9, 0x78, 0x33, 0x88, 0x14, 0xdc,
+ 0x60, 0x18, 0xe4, 0xc2, 0x43, 0xdb, 0xad, 0xa4, 0x21, 0xbb, 0x95, 0x34, 0x2c, 0xbb, 0x95, 0xc4,
+ 0x8a, 0x6f, 0x32, 0x02, 0xc5, 0xb3, 0x1b, 0x0f, 0x78, 0x4c, 0x07, 0x4f, 0x4c, 0x32, 0x43, 0x22,
+ 0x69, 0xaa, 0x20, 0xc1, 0x7c, 0x1b, 0xe2, 0x8e, 0x82, 0x2b, 0x9a, 0xe0, 0x1d, 0x80, 0x0f, 0x37,
+ 0xa4, 0xf4, 0xb3, 0x44, 0xf2, 0xc9, 0x3c, 0x0b, 0x24, 0xa8, 0x25, 0xc1, 0xd1, 0x5c, 0xe2, 0x0b,
+ 0x4c, 0x6b, 0xf5, 0xbc, 0x1c, 0x1f, 0x15, 0x6c, 0xd5, 0x7e, 0xa2, 0x5d, 0x53, 0xfb, 0x80, 0xc7,
+ 0x07, 0xb4, 0x3f, 0xe9, 0x02, 0xe7, 0x35, 0x0e, 0x45, 0x8b, 0x7f, 0x36, 0xe7, 0x5e, 0xab, 0xd9,
+ 0x69, 0x77, 0xde, 0xd4, 0xc9, 0xe7, 0x00, 0x7d, 0xbe, 0x6d, 0x1f, 0x77, 0xe8, 0x67, 0x82, 0x3e,
+ 0x5b, 0x6f, 0x3b, 0x9d, 0x90, 0x4e, 0x6f, 0xf5, 0xd0, 0x22, 0x3f, 0x07, 0x4b, 0x18, 0x75, 0x92,
+ 0x80, 0x18, 0xc1, 0x62, 0x87, 0xc3, 0x1d, 0xfa, 0xe2, 0x1f, 0x0c, 0x8a, 0xd1, 0xd4, 0x23, 0x19,
+ 0x98, 0xbb, 0x5c, 0xe6, 0x70, 0x38, 0x34, 0x9b, 0xa2, 0xbe, 0x23, 0x07, 0x7a, 0xe1, 0xba, 0x0e,
+ 0x69, 0x7f, 0xd0, 0x7e, 0x73, 0xf8, 0xee, 0x08, 0x02, 0xc0, 0x72, 0xa1, 0xe7, 0x8a, 0xea, 0xe5,
+ 0x92, 0x20, 0xb6, 0x41, 0xd8, 0x36, 0x74, 0x01, 0xe8, 0x42, 0x54, 0x53, 0x92, 0x25, 0x3a, 0xa1,
+ 0x5e, 0x84, 0x02, 0x8c, 0xbe, 0x84, 0x91, 0x84, 0x84, 0xa0, 0xc3, 0xb0, 0xaa, 0xfd, 0x10, 0xc1,
+ 0xdd, 0x8e, 0xda, 0x7f, 0x24, 0x08, 0x2f, 0x62, 0x35, 0x16, 0x64, 0xaa, 0x5b, 0x77, 0x0c, 0xa9,
+ 0x1e, 0x69, 0x9e, 0x93, 0xd7, 0x31, 0x1b, 0x78, 0xb3, 0xec, 0xc6, 0x21, 0xe3, 0x15, 0xb4, 0x8f,
+ 0x5b, 0xf4, 0x24, 0xa8, 0x0f, 0x2d, 0x41, 0x83, 0x81, 0x3e, 0xde, 0xbf, 0xf3, 0xcd, 0x2d, 0x02,
+ 0x5a, 0x71, 0xc8, 0xdd, 0x2e, 0x1d, 0xcc, 0x3a, 0xed, 0x39, 0x36, 0xb6, 0x32, 0x95, 0xf2, 0x72,
+ 0xd2, 0x9c, 0x53, 0xf4, 0x50, 0xd7, 0xa1, 0x8c, 0x9d, 0x66, 0xbb, 0x74, 0x60, 0x29, 0xe2, 0x81,
+ 0x8a, 0x78, 0x60, 0x47, 0x3c, 0x28, 0x47, 0x3c, 0xd0, 0x10, 0x27, 0x2a, 0xe2, 0xc4, 0x8e, 0x38,
+ 0x29, 0x47, 0x9c, 0x50, 0xc4, 0xd2, 0x2d, 0x06, 0x65, 0x5d, 0x2a, 0xb9, 0x5d, 0x2b, 0xad, 0x5c,
+ 0xcf, 0xd6, 0xe3, 0xa6, 0x2e, 0x35, 0xec, 0x54, 0xad, 0xd1, 0x1f, 0xb7, 0x7e, 0xa1, 0x7f, 0x44,
+ 0x2d, 0xe3, 0x1e, 0x3a, 0x44, 0xf5, 0xed, 0x17, 0x18, 0x55, 0x5a, 0xef, 0xe0, 0x01, 0x14, 0x0e,
+ 0x25, 0xb8, 0x1d, 0x2c, 0x63, 0xa6, 0x10, 0x1f, 0x06, 0x3d, 0x44, 0x0d, 0xf1, 0xf1, 0xe0, 0x6a,
+ 0x88, 0x4c, 0xd6, 0x50, 0xbd, 0xa2, 0x2d, 0x15, 0x35, 0xeb, 0x27, 0x0a, 0x69, 0x95, 0x16, 0xc7,
+ 0xbd, 0x37, 0xf3, 0x29, 0xbc, 0x99, 0x98, 0x4b, 0x37, 0x52, 0xbd, 0x34, 0x9e, 0xdc, 0x4c, 0xf3,
+ 0xda, 0x5c, 0xdb, 0x2a, 0x70, 0x5a, 0xb4, 0x0d, 0x3f, 0xed, 0xdd, 0xa5, 0x2f, 0xe7, 0x94, 0x45,
+ 0x99, 0x0a, 0x4b, 0x6f, 0x90, 0xf4, 0x07, 0x29, 0xbf, 0xb3, 0x25, 0x83, 0xbc, 0x7e, 0x3f, 0xeb,
+ 0x43, 0xe8, 0xf0, 0x24, 0xe7, 0x36, 0xb2, 0xe8, 0xea, 0x6b, 0x75, 0xfc, 0x5b, 0x7e, 0xcc, 0x05,
+ 0xbc, 0x34, 0x0c, 0x77, 0x04, 0x7b, 0x90, 0xb5, 0xbf, 0xff, 0xbd, 0xc6, 0x34, 0xd5, 0x08, 0x14,
+ 0x55, 0x29, 0xe1, 0x16, 0x41, 0x10, 0x25, 0xfa, 0xe0, 0x27, 0xb2, 0x2e, 0x1f, 0x7c, 0x20, 0x2f,
+ 0x3c, 0xc8, 0xe3, 0xe9, 0xdf, 0x7a, 0x9a, 0x92, 0xb1, 0x93, 0x23, 0x27, 0xbb, 0x39, 0x70, 0x42,
+ 0x6b, 0x61, 0xaa, 0x83, 0xc5, 0x98, 0xa9, 0x68, 0x8d, 0x1c, 0x3e, 0x84, 0x35, 0x02, 0x57, 0x16,
+ 0x5f, 0x8b, 0x09, 0xc2, 0xba, 0xb5, 0x39, 0x1f, 0x70, 0xad, 0xde, 0xa6, 0xcd, 0x63, 0xcc, 0x38,
+ 0xac, 0x1c, 0x34, 0xc5, 0xa7, 0xbf, 0x0e, 0xdd, 0x82, 0x5e, 0x4f, 0xf3, 0xda, 0xe4, 0x69, 0x91,
+ 0xdd, 0xbb, 0xf9, 0xb7, 0xd1, 0x3a, 0x1f, 0x57, 0x7d, 0xdc, 0x95, 0x0e, 0xf8, 0xba, 0xf7, 0x15,
+ 0xf0, 0x40, 0xad, 0xd7, 0xa5, 0xac, 0xa3, 0x50, 0x4d, 0x2f, 0xda, 0xef, 0x46, 0xec, 0x77, 0x23,
+ 0xb6, 0xde, 0x8d, 0xa0, 0x8f, 0x03, 0x2d, 0xe9, 0x73, 0x3d, 0xf6, 0x0d, 0x89, 0xc2, 0xbe, 0x05,
+ 0x2d, 0xe1, 0x69, 0xf2, 0x6a, 0x1f, 0x8e, 0xc6, 0x78, 0x0c, 0xb4, 0x6a, 0xbc, 0x19, 0xa5, 0x9f,
+ 0x6c, 0x41, 0x67, 0x1e, 0x2a, 0x60, 0x4c, 0xa5, 0x2e, 0xef, 0x8f, 0x26, 0xb0, 0x0c, 0x67, 0xd3,
+ 0xb0, 0x5a, 0x64, 0x0b, 0x4a, 0xf4, 0x43, 0x8c, 0x89, 0x1c, 0xd6, 0x81, 0x04, 0xbc, 0x9a, 0x2d,
+ 0x46, 0x63, 0x04, 0x0b, 0xc1, 0xcc, 0x64, 0xca, 0xe8, 0xc5, 0x71, 0x6c, 0x64, 0x38, 0x52, 0x06,
+ 0xd2, 0xc9, 0x41, 0x1b, 0x0e, 0x94, 0x24, 0x76, 0x16, 0x58, 0x21, 0x35, 0x78, 0xd7, 0x7e, 0x8f,
+ 0xa3, 0x77, 0x61, 0x24, 0x75, 0x5a, 0x51, 0xc9, 0xab, 0x4a, 0xda, 0xcb, 0x71, 0x4a, 0xe8, 0xaa,
+ 0x2a, 0xba, 0x80, 0xbd, 0x9b, 0x75, 0xd6, 0xb9, 0xcd, 0x90, 0x70, 0x2e, 0x3c, 0xaf, 0x12, 0x2f,
+ 0x71, 0x3a, 0xf9, 0x46, 0xca, 0xec, 0xe9, 0x38, 0xbd, 0x06, 0xfd, 0x73, 0xea, 0xd0, 0x48, 0xcf,
+ 0x48, 0x08, 0xf8, 0x74, 0xd9, 0x19, 0xc5, 0x0b, 0x16, 0x52, 0x03, 0x87, 0xda, 0x2d, 0xf2, 0x15,
+ 0x91, 0x60, 0x1e, 0x0e, 0x10, 0xc7, 0x1f, 0xa0, 0xc2, 0x81, 0x20, 0xe7, 0x75, 0xfc, 0x67, 0x40,
+ 0x1f, 0xaf, 0xc2, 0x1f, 0x09, 0xf9, 0x20, 0xff, 0xba, 0x01, 0xd2, 0xf6, 0x91, 0x6a, 0x56, 0x78,
+ 0x8f, 0xa5, 0x7c, 0xb0, 0xb0, 0xa6, 0x2f, 0x11, 0x0d, 0x7d, 0x52, 0xc7, 0x96, 0x42, 0x83, 0x16,
+ 0x44, 0xa6, 0x0c, 0xff, 0xb9, 0xc2, 0xaa, 0x2f, 0x53, 0x9b, 0x13, 0x6b, 0xd9, 0x96, 0xad, 0x48,
+ 0xcf, 0x5a, 0x64, 0x6d, 0x6d, 0xfd, 0x2a, 0x94, 0xb6, 0x94, 0x22, 0xa9, 0xa1, 0x88, 0x9c, 0x7f,
+ 0x59, 0x81, 0x1a, 0x15, 0xe3, 0xa0, 0x0a, 0x11, 0x66, 0xfa, 0x87, 0x25, 0xbd, 0x65, 0x2e, 0x31,
+ 0xaa, 0x40, 0x9e, 0xb9, 0x64, 0xba, 0x8c, 0x07, 0x83, 0x14, 0xc7, 0xdd, 0x80, 0x19, 0x0d, 0x2c,
+ 0x5a, 0xfb, 0x47, 0xad, 0x83, 0x0d, 0xd0, 0x56, 0xf3, 0x08, 0x59, 0x9f, 0x3c, 0xf1, 0xa8, 0x79,
+ 0x8c, 0x13, 0x0f, 0x8f, 0x51, 0x2a, 0xfa, 0x43, 0xcd, 0xec, 0x74, 0x3e, 0xba, 0xa6, 0xd6, 0x75,
+ 0xaf, 0x7e, 0x89, 0xfe, 0x1b, 0xb9, 0x0d, 0x27, 0xae, 0xf7, 0xd1, 0x7f, 0x03, 0xd7, 0x77, 0x06,
+ 0xf5, 0x21, 0xfa, 0x8f, 0xa4, 0x25, 0xe8, 0xbf, 0x9e, 0xeb, 0x06, 0x35, 0xb0, 0x2b, 0x50, 0x1d,
+ 0xbe, 0x43, 0x90, 0x37, 0xf8, 0xf4, 0x80, 0x38, 0x13, 0x82, 0xa0, 0x7a, 0xfb, 0x7d, 0x13, 0xb1,
+ 0x6c, 0xa7, 0x41, 0xc0, 0xf4, 0x50, 0x5c, 0xd8, 0x96, 0xc0, 0xc2, 0x07, 0x13, 0xd1, 0x5c, 0xc2,
+ 0x5d, 0x00, 0x88, 0xf5, 0xe2, 0x93, 0xef, 0x15, 0xff, 0x66, 0xf1, 0xd7, 0x84, 0x39, 0xf6, 0x08,
+ 0x2b, 0xdf, 0x13, 0x49, 0x5b, 0x22, 0x1c, 0x4d, 0xb2, 0xb1, 0x7c, 0xc1, 0x5b, 0x2f, 0xe1, 0xc6,
+ 0xa8, 0xc2, 0x78, 0x2a, 0xad, 0x8d, 0x2c, 0x1d, 0x2b, 0xb4, 0xfa, 0x2e, 0xc3, 0x30, 0xee, 0x67,
+ 0x37, 0x7a, 0x2a, 0x08, 0x5d, 0x23, 0x78, 0xdc, 0x83, 0x88, 0x30, 0x22, 0x08, 0xe0, 0xf9, 0x59,
+ 0xed, 0xb0, 0xd9, 0x3e, 0x6a, 0x1f, 0xbf, 0xef, 0xbc, 0x39, 0x3e, 0x3c, 0x7e, 0xf7, 0xfe, 0xed,
+ 0xfb, 0xc3, 0x03, 0x43, 0x80, 0x21, 0x30, 0xef, 0xad, 0xcb, 0xac, 0xcc, 0x91, 0x0e, 0x79, 0xf0,
+ 0x0f, 0x99, 0x9d, 0x10, 0xdf, 0xd1, 0x95, 0x03, 0x3c, 0xe2, 0x15, 0xe3, 0x33, 0x09, 0xc8, 0xd3,
+ 0xcb, 0x16, 0x38, 0xc6, 0x6c, 0x3c, 0x5d, 0x38, 0x8e, 0x68, 0xf2, 0x5f, 0xad, 0xef, 0x0d, 0xe9,
+ 0xab, 0xfd, 0xdd, 0xf5, 0xb0, 0x25, 0x4d, 0xd5, 0x0a, 0xb7, 0xae, 0x66, 0x72, 0xcc, 0xe3, 0x6c,
+ 0x96, 0x46, 0x48, 0xe2, 0x4e, 0x11, 0x74, 0xe7, 0xd8, 0xa3, 0x47, 0xc5, 0x31, 0x45, 0x6e, 0x20,
+ 0xd5, 0xcb, 0xcf, 0x89, 0xe3, 0xd0, 0x37, 0x11, 0xe5, 0x5f, 0x62, 0xc3, 0xa3, 0x49, 0x86, 0x31,
+ 0x50, 0x26, 0xf6, 0x1b, 0x34, 0xd7, 0x45, 0xd3, 0xee, 0xfc, 0x0c, 0xdf, 0x77, 0x61, 0x79, 0xdc,
+ 0x57, 0x04, 0x5e, 0x9e, 0x0f, 0x72, 0x1b, 0xb9, 0x2d, 0x1e, 0xd1, 0xf1, 0xe2, 0xfe, 0xc0, 0xf8,
+ 0x76, 0x34, 0xb9, 0xc2, 0xa1, 0x8f, 0x49, 0xfa, 0xaa, 0x7e, 0x7e, 0x16, 0x4a, 0xe6, 0x4e, 0xbb,
+ 0xf9, 0xee, 0xed, 0x71, 0x43, 0xc4, 0x39, 0x6c, 0x37, 0xdf, 0x1e, 0xd3, 0x7c, 0x34, 0x49, 0xc9,
+ 0x7b, 0xa5, 0x10, 0x4f, 0x89, 0x97, 0x22, 0x81, 0x2e, 0x2f, 0x70, 0xd3, 0x79, 0x31, 0xdc, 0x14,
+ 0x90, 0x17, 0x68, 0x1c, 0xd0, 0x64, 0xc7, 0x5e, 0x6b, 0xdc, 0x3b, 0x64, 0x24, 0x02, 0x91, 0xca,
+ 0x90, 0x92, 0x0c, 0xd7, 0x63, 0xdf, 0x10, 0x33, 0x18, 0x0a, 0x30, 0xb2, 0x31, 0xc3, 0xe0, 0xf1,
+ 0x92, 0x2a, 0x64, 0x9b, 0xcc, 0x38, 0x93, 0x6e, 0x46, 0xe3, 0x81, 0x22, 0x29, 0xa0, 0x78, 0x91,
+ 0x5f, 0xd4, 0xb3, 0x21, 0x9a, 0xd5, 0x29, 0x3a, 0x77, 0x80, 0x85, 0x49, 0x44, 0x19, 0xd0, 0xf1,
+ 0x1d, 0x32, 0x36, 0x75, 0xda, 0x5f, 0x6e, 0x70, 0x7e, 0x86, 0x65, 0x89, 0xe0, 0x26, 0x12, 0xa2,
+ 0x1a, 0x0a, 0xd1, 0x9a, 0xc9, 0xcb, 0x60, 0x64, 0x26, 0xf8, 0x12, 0xf3, 0xfb, 0x18, 0x08, 0xa9,
+ 0x2a, 0x88, 0x93, 0x65, 0xe2, 0xcb, 0x89, 0x52, 0xe4, 0x90, 0xdc, 0x42, 0xc2, 0x8a, 0x52, 0xc5,
+ 0xcd, 0xd8, 0xad, 0x4b, 0x9f, 0xf7, 0x13, 0x6e, 0x7c, 0x4a, 0x9e, 0x7c, 0xf9, 0xed, 0xec, 0xe4,
+ 0x97, 0xb3, 0x93, 0x8b, 0xb3, 0x2f, 0x3f, 0xd7, 0x2c, 0x0f, 0x04, 0x20, 0x82, 0x39, 0x3c, 0x6e,
+ 0x19, 0x0e, 0xfa, 0x7c, 0xfc, 0xee, 0xed, 0x61, 0xab, 0xfd, 0xe6, 0xa0, 0xb0, 0xc3, 0x07, 0x56,
+ 0x13, 0x71, 0x58, 0x15, 0x77, 0xff, 0x70, 0x90, 0xf4, 0x72, 0x05, 0xb7, 0x18, 0xda, 0x17, 0xc2,
+ 0x45, 0x69, 0xd2, 0x09, 0xb5, 0x50, 0x7f, 0xd7, 0x50, 0x13, 0x75, 0x94, 0x02, 0x2d, 0x15, 0xc7,
+ 0x02, 0xea, 0x14, 0x22, 0x45, 0x0d, 0xe2, 0xc9, 0x24, 0x66, 0xa1, 0x9f, 0x0c, 0x01, 0x53, 0xc1,
+ 0x9a, 0x9a, 0xa6, 0x8b, 0xec, 0x32, 0x9e, 0xbf, 0xb8, 0x30, 0x3a, 0xfb, 0xa7, 0xbe, 0xb6, 0x38,
+ 0x66, 0x3b, 0x88, 0x67, 0x25, 0x4f, 0x65, 0xb1, 0xdc, 0xb2, 0xb8, 0xd5, 0x0c, 0x66, 0x5d, 0xe4,
+ 0x6a, 0x19, 0xae, 0xac, 0xcb, 0xf0, 0xeb, 0xb2, 0x96, 0x1e, 0xc3, 0x79, 0xf6, 0x0e, 0xc3, 0xd9,
+ 0xe5, 0x9d, 0xc2, 0x41, 0x4a, 0x48, 0x28, 0xe9, 0x90, 0xb5, 0xbd, 0x51, 0xa9, 0x2b, 0xd4, 0x7e,
+ 0x78, 0x7e, 0x21, 0x97, 0x5e, 0xfb, 0x83, 0x55, 0x9c, 0xe9, 0xd5, 0x81, 0x61, 0xc9, 0x06, 0x42,
+ 0x58, 0x96, 0x2f, 0xcf, 0x09, 0x4b, 0x08, 0x6f, 0x81, 0x66, 0x43, 0x9e, 0x97, 0x5b, 0x44, 0x5e,
+ 0x7c, 0x36, 0xf4, 0x08, 0xce, 0xf0, 0xc5, 0x5c, 0x30, 0xf6, 0x07, 0x2d, 0xbd, 0x09, 0xbb, 0xab,
+ 0x6d, 0xb0, 0xf5, 0x03, 0xeb, 0x84, 0xf2, 0x1e, 0x60, 0xcd, 0xd7, 0xf8, 0x5c, 0x09, 0x2f, 0x1a,
+ 0xc5, 0xec, 0xc5, 0x88, 0x46, 0xbb, 0xf3, 0x0e, 0xa9, 0xf7, 0x6c, 0x8a, 0xf1, 0xed, 0x94, 0x88,
+ 0x04, 0x36, 0x27, 0xef, 0x41, 0xe0, 0xa0, 0x95, 0xa0, 0xa8, 0x84, 0xd2, 0x12, 0x15, 0xf1, 0x58,
+ 0xe2, 0x04, 0x08, 0x5c, 0x01, 0x6e, 0x9d, 0x7e, 0xdd, 0x78, 0x6f, 0x8e, 0x68, 0x3c, 0x74, 0xe1,
+ 0x61, 0x95, 0x17, 0x6d, 0xf0, 0xdd, 0x2a, 0xb3, 0x97, 0x6f, 0x08, 0x4b, 0x30, 0xe0, 0xbf, 0xa5,
+ 0xbf, 0xe9, 0x36, 0x64, 0xc8, 0xc7, 0x97, 0xfd, 0x00, 0xbd, 0x81, 0x19, 0xbb, 0xf1, 0xf8, 0x92,
+ 0x64, 0x8a, 0x1c, 0x3a, 0x1a, 0x40, 0xbc, 0x47, 0x07, 0x84, 0x69, 0xb5, 0x90, 0xce, 0xb0, 0xd4,
+ 0x1d, 0xf6, 0x8b, 0xeb, 0xc1, 0x8a, 0xce, 0x02, 0x56, 0x2a, 0x57, 0xee, 0xb2, 0xab, 0x5c, 0x29,
+ 0xcb, 0xeb, 0xf5, 0x8a, 0x58, 0x3a, 0xf8, 0xc5, 0x0a, 0x50, 0x8c, 0xea, 0x8e, 0xa0, 0x8f, 0xea,
+ 0xe6, 0xe4, 0x39, 0x0b, 0xb9, 0x22, 0x57, 0xed, 0x14, 0x7c, 0x49, 0x94, 0x54, 0xe7, 0x89, 0xd8,
+ 0x99, 0x44, 0x83, 0xd0, 0xe4, 0x1a, 0x56, 0xa4, 0xa5, 0x01, 0xd4, 0xf2, 0x73, 0xe2, 0xbe, 0x44,
+ 0x0a, 0xe9, 0x95, 0x56, 0x07, 0xe9, 0x95, 0x4e, 0x44, 0xfe, 0xea, 0xd5, 0x78, 0x6c, 0x53, 0x10,
+ 0x29, 0xd3, 0x39, 0x04, 0xb2, 0x6e, 0x5c, 0xf9, 0x57, 0xf0, 0x6a, 0xbb, 0xf6, 0xa4, 0x17, 0x63,
+ 0x2c, 0xd5, 0xb6, 0x04, 0xfa, 0x03, 0xaa, 0x5c, 0xb1, 0x3d, 0xd0, 0xb2, 0x33, 0xa6, 0xe2, 0x85,
+ 0xf3, 0x8e, 0x52, 0x0c, 0xf7, 0x5f, 0xa1, 0x32, 0x63, 0xbc, 0x49, 0xfc, 0xa6, 0x16, 0xea, 0x32,
+ 0x39, 0x18, 0x28, 0xbb, 0x67, 0x4b, 0x6e, 0xcb, 0x5a, 0x4b, 0x99, 0x8a, 0x14, 0x2a, 0x2d, 0x84,
+ 0x0e, 0xf0, 0x4c, 0x7a, 0x22, 0xd8, 0xd2, 0x92, 0xba, 0x17, 0xad, 0xa7, 0x31, 0x58, 0x43, 0x50,
+ 0xc8, 0xd4, 0x4a, 0xe2, 0x20, 0x21, 0x4c, 0xe1, 0x63, 0x2e, 0x7e, 0xba, 0xf0, 0x78, 0x2f, 0xe8,
+ 0xbd, 0xaa, 0x72, 0x15, 0xdd, 0xac, 0xce, 0x1b, 0x15, 0xf7, 0xc7, 0x0d, 0xe1, 0xb7, 0x9b, 0x97,
+ 0x93, 0x4c, 0x57, 0xd0, 0x49, 0xdb, 0x5d, 0x8f, 0xf5, 0x4d, 0x73, 0x11, 0x0a, 0x12, 0x3a, 0x11,
+ 0x7e, 0xf7, 0xa7, 0x6e, 0xb6, 0xdd, 0xa0, 0x90, 0xdc, 0x47, 0xf2, 0xc5, 0x75, 0x62, 0x97, 0x4e,
+ 0x50, 0x7f, 0x41, 0x75, 0x0d, 0x87, 0xa3, 0xcf, 0x1b, 0x18, 0xb1, 0xeb, 0x8b, 0x0a, 0x71, 0xe4,
+ 0x54, 0x37, 0xc0, 0xe9, 0x16, 0xe3, 0xf5, 0x11, 0x42, 0x65, 0x71, 0xab, 0xf3, 0xd7, 0x93, 0x3f,
+ 0xbb, 0xbf, 0x9c, 0x7d, 0x39, 0xed, 0x7e, 0x3a, 0xbb, 0xf8, 0xed, 0xe4, 0xcb, 0xc7, 0xd3, 0xda,
+ 0x61, 0xe7, 0xed, 0x9b, 0xb7, 0x92, 0x5d, 0xba, 0xb7, 0x63, 0xab, 0xdb, 0xb1, 0x48, 0x72, 0x0e,
+ 0xe6, 0xe9, 0xc2, 0x1a, 0xc3, 0x64, 0x6f, 0x31, 0xee, 0x2d, 0xc6, 0xd7, 0x6a, 0x31, 0xee, 0x6d,
+ 0xb8, 0xbd, 0x0d, 0xf7, 0xcc, 0x6d, 0x38, 0x26, 0x9e, 0xab, 0x9a, 0x71, 0x41, 0x61, 0x75, 0xdc,
+ 0x1b, 0x76, 0x7b, 0xc3, 0x6e, 0x6f, 0xd8, 0x3d, 0x91, 0x61, 0xf7, 0x82, 0x2c, 0xaf, 0xca, 0xfb,
+ 0xc6, 0xdb, 0xdb, 0x64, 0xeb, 0x95, 0xd0, 0x2a, 0x27, 0x36, 0xf7, 0xa6, 0x97, 0x6e, 0x7a, 0x59,
+ 0x9e, 0x37, 0xa3, 0x1b, 0xe5, 0xc0, 0xae, 0x6a, 0x37, 0xdb, 0x9f, 0x39, 0x7b, 0x1c, 0x8b, 0xad,
+ 0x68, 0x5f, 0xb1, 0x1c, 0x65, 0xa5, 0xea, 0x5e, 0x7c, 0x3c, 0xf9, 0xe5, 0xb4, 0xd6, 0xd9, 0xc2,
+ 0x92, 0x7b, 0x68, 0x7b, 0xcd, 0x6e, 0x91, 0x95, 0x5b, 0x74, 0xf7, 0xb1, 0xd7, 0xc4, 0xae, 0x62,
+ 0xd9, 0x24, 0xda, 0x9b, 0x69, 0x0f, 0x67, 0xa6, 0x3d, 0x03, 0xab, 0xe8, 0xd9, 0x59, 0x8a, 0x3b,
+ 0x36, 0xd3, 0xf6, 0x97, 0x50, 0x9f, 0xd1, 0x25, 0xd4, 0x57, 0x6e, 0x0e, 0x3f, 0xad, 0xf9, 0xf9,
+ 0xdc, 0x8c, 0xf1, 0x5d, 0x99, 0xc3, 0xff, 0x6f, 0xae, 0x05, 0xdf, 0xdf, 0xe4, 0x67, 0x70, 0x9b,
+ 0x6d, 0xde, 0x1a, 0x74, 0xa8, 0xbd, 0xcd, 0xbf, 0xb7, 0xf9, 0xf7, 0x36, 0xff, 0x43, 0xd8, 0xfc,
+ 0x62, 0x2a, 0xc6, 0xb2, 0x82, 0x5e, 0xee, 0x0b, 0xd8, 0xe6, 0x72, 0xaa, 0x22, 0x6f, 0xf4, 0x10,
+ 0x2e, 0x6b, 0x6d, 0xf2, 0xdd, 0x19, 0x1a, 0xaf, 0xe5, 0x6e, 0xe8, 0xcb, 0xdf, 0x29, 0x5f, 0xef,
+ 0x2a, 0x79, 0x46, 0x97, 0x4c, 0x9f, 0xd0, 0x95, 0xb3, 0x0f, 0x71, 0xfc, 0xba, 0x1e, 0x3e, 0x91,
+ 0xbb, 0x5a, 0x6e, 0x9f, 0xda, 0xe6, 0xe6, 0xd2, 0xe3, 0xbd, 0x16, 0xa8, 0xc1, 0x82, 0x35, 0xc0,
+ 0x95, 0x09, 0x67, 0x62, 0xc0, 0x89, 0xa8, 0xf6, 0x68, 0x7f, 0x97, 0x61, 0x04, 0x8a, 0xc3, 0x17,
+ 0xe5, 0x3f, 0x24, 0xd8, 0x96, 0xa8, 0x23, 0xc9, 0x55, 0x67, 0xbe, 0x40, 0x04, 0x6a, 0x3f, 0x37,
+ 0x97, 0x2a, 0x7c, 0x52, 0x0e, 0x9f, 0xa8, 0xf0, 0xab, 0x2e, 0x7e, 0x31, 0xb9, 0xce, 0x7b, 0x02,
+ 0x29, 0x38, 0xf4, 0x46, 0x17, 0xa7, 0x0f, 0xd3, 0xe4, 0x68, 0xb5, 0xae, 0xea, 0x1d, 0xfa, 0xec,
+ 0x8b, 0xab, 0x13, 0xb4, 0x12, 0xc8, 0x93, 0x6d, 0x90, 0x27, 0x76, 0xe4, 0x89, 0x60, 0x0c, 0x1c,
+ 0xf5, 0x64, 0xf3, 0x8b, 0xe7, 0x98, 0x83, 0x50, 0xaf, 0xfa, 0xa8, 0xe5, 0xae, 0x84, 0x2b, 0xd9,
+ 0xe2, 0xda, 0x38, 0xc5, 0x95, 0x20, 0x5c, 0x89, 0xab, 0x78, 0x7c, 0x01, 0x97, 0xf1, 0xea, 0x38,
+ 0xaa, 0xd4, 0x37, 0x67, 0x24, 0xae, 0xf9, 0xca, 0x38, 0xf1, 0x01, 0x3f, 0xe0, 0xfb, 0x13, 0x2f,
+ 0xd8, 0x03, 0x5c, 0xe9, 0xc4, 0x0e, 0x1d, 0x2c, 0xf2, 0x6c, 0x75, 0x5c, 0x50, 0xf0, 0x50, 0xef,
+ 0x77, 0x57, 0x52, 0xba, 0xa9, 0x54, 0x62, 0x29, 0x95, 0x3c, 0xd2, 0xe9, 0x20, 0x9a, 0x0a, 0x95,
+ 0xc4, 0xa6, 0xc4, 0x64, 0x1b, 0xa5, 0x70, 0x7f, 0xdf, 0x65, 0x7f, 0x7a, 0x69, 0x7f, 0x7a, 0xa9,
+ 0xdc, 0x2d, 0xce, 0x86, 0xcc, 0xe0, 0x33, 0x7b, 0x08, 0x97, 0x39, 0x76, 0x14, 0x95, 0x50, 0x29,
+ 0xf2, 0xad, 0x7d, 0x25, 0x40, 0x4c, 0xfc, 0x25, 0xe5, 0x96, 0xf5, 0xa6, 0x0a, 0xb6, 0xbf, 0xbc,
+ 0xb3, 0x3f, 0xf8, 0xf5, 0x4c, 0x0e, 0x7e, 0xed, 0xce, 0xb7, 0x2d, 0x4d, 0x45, 0xf1, 0xd3, 0x50,
+ 0xb3, 0xc8, 0xf4, 0xd5, 0xf9, 0x69, 0x6a, 0xb2, 0x8c, 0xc9, 0x38, 0xc9, 0xf6, 0x2e, 0xe8, 0xbd,
+ 0x0b, 0x7a, 0xef, 0x82, 0x7e, 0x85, 0x2e, 0x68, 0xac, 0xaa, 0x47, 0x54, 0x66, 0xf0, 0x79, 0xe9,
+ 0xe9, 0xd6, 0x47, 0x73, 0x19, 0x48, 0x02, 0x85, 0x8f, 0x5f, 0x01, 0x6c, 0x55, 0xe7, 0x86, 0x89,
+ 0x4b, 0xb1, 0x27, 0x6b, 0xb1, 0x27, 0xd5, 0xb0, 0x27, 0x12, 0x76, 0x88, 0x6e, 0x56, 0xcd, 0x4d,
+ 0xbe, 0x3e, 0x34, 0xd7, 0xa2, 0x7f, 0x89, 0xbb, 0xb5, 0x18, 0x63, 0x09, 0x59, 0x6c, 0xcf, 0xcc,
+ 0x0a, 0xda, 0xdf, 0xe2, 0x2a, 0x5f, 0x87, 0x77, 0xa7, 0x07, 0x3f, 0xae, 0x12, 0xfb, 0x12, 0x2f,
+ 0x94, 0x19, 0x31, 0x94, 0x1c, 0x04, 0x28, 0xf6, 0x78, 0x69, 0x87, 0x6f, 0xa0, 0xae, 0xbc, 0x40,
+ 0xff, 0x28, 0x12, 0x42, 0x90, 0xdb, 0x8d, 0x8d, 0xd1, 0x88, 0xb0, 0x28, 0x71, 0x9b, 0xb1, 0x06,
+ 0x9c, 0x58, 0x81, 0x93, 0x02, 0x30, 0x76, 0xe5, 0xf1, 0x5a, 0x7c, 0x8e, 0xc2, 0xc7, 0x72, 0xce,
+ 0x0d, 0x89, 0x63, 0x2e, 0x52, 0xde, 0x97, 0x3d, 0x6e, 0x08, 0xe9, 0x28, 0x4b, 0x68, 0x12, 0x50,
+ 0xd8, 0x94, 0x43, 0xd1, 0x3e, 0xfe, 0xf1, 0xcf, 0x4a, 0x27, 0x2c, 0xf3, 0x31, 0x5a, 0x41, 0xe6,
+ 0xf2, 0x63, 0x14, 0x5c, 0xe6, 0xe3, 0x15, 0xc5, 0x92, 0x99, 0x5c, 0x5d, 0x5e, 0xa6, 0xf3, 0xb2,
+ 0x87, 0x67, 0x37, 0x0c, 0xc3, 0xd5, 0x32, 0xa4, 0xb5, 0xb7, 0x8d, 0xcd, 0xd5, 0x8a, 0x1c, 0xc7,
+ 0x1c, 0xbb, 0xb0, 0x01, 0x27, 0x6f, 0x03, 0x95, 0xfe, 0x9a, 0x0b, 0x51, 0x86, 0x48, 0xc9, 0x76,
+ 0x44, 0x42, 0xb9, 0xc1, 0x03, 0xe7, 0x72, 0x07, 0x40, 0xf8, 0x29, 0xd1, 0x55, 0x52, 0xe7, 0xca,
+ 0x7b, 0xc9, 0xdd, 0xdc, 0x1a, 0xd3, 0xd2, 0xba, 0xd4, 0xb6, 0xec, 0x59, 0xed, 0xca, 0xdd, 0x54,
+ 0x18, 0x9d, 0x39, 0xc4, 0x40, 0x42, 0xaa, 0xc4, 0x02, 0x22, 0x72, 0x97, 0x65, 0x83, 0xb0, 0x2c,
+ 0x8e, 0x7c, 0x8c, 0xba, 0x0d, 0x87, 0x83, 0xd3, 0xdf, 0x37, 0x61, 0x10, 0xbd, 0x6c, 0x9a, 0xcf,
+ 0xe3, 0x85, 0xe9, 0xfd, 0x13, 0x78, 0xa9, 0x64, 0x31, 0x1b, 0x4d, 0xbb, 0x37, 0x38, 0x0a, 0xaf,
+ 0x76, 0xa4, 0x5c, 0x88, 0xe5, 0x56, 0x71, 0x62, 0xb6, 0x48, 0x50, 0xb1, 0xd6, 0x9a, 0x30, 0xb1,
+ 0x6d, 0x02, 0xd6, 0x26, 0xd1, 0xb8, 0x09, 0xb2, 0x66, 0x4c, 0x54, 0x7f, 0x54, 0x05, 0x4d, 0x98,
+ 0x0f, 0x92, 0x48, 0xfc, 0x0c, 0x18, 0x58, 0x78, 0xc7, 0x0b, 0xb5, 0xf5, 0x42, 0x6d, 0x51, 0xa8,
+ 0x2d, 0x0a, 0xb5, 0xa1, 0x90, 0xe6, 0xef, 0x27, 0xd8, 0x7c, 0x1a, 0x05, 0x96, 0x8d, 0x3e, 0x7d,
+ 0x54, 0xa9, 0x89, 0x64, 0x84, 0x14, 0xcd, 0x14, 0xba, 0x84, 0xe3, 0x05, 0xb4, 0x21, 0x7c, 0xe1,
+ 0x68, 0xda, 0x10, 0xc9, 0x1c, 0x7d, 0xf8, 0x6a, 0x8f, 0x41, 0x84, 0x7f, 0xd7, 0xb7, 0xe4, 0xdd,
+ 0x2e, 0x57, 0xd6, 0xbc, 0xd5, 0xed, 0x92, 0xc7, 0x45, 0x8b, 0xaf, 0x53, 0x24, 0x1d, 0xd2, 0x88,
+ 0xbd, 0x40, 0xc4, 0x9e, 0x95, 0x62, 0xef, 0x49, 0xb9, 0xc1, 0x21, 0x84, 0xb1, 0x84, 0x08, 0xe1,
+ 0x0e, 0x85, 0x6d, 0xa0, 0x2f, 0x08, 0xdf, 0x55, 0x1c, 0x7e, 0x20, 0x18, 0x2a, 0xc4, 0xb3, 0xc7,
+ 0x2b, 0x0c, 0x3f, 0x99, 0x3e, 0x64, 0xe8, 0x81, 0xa1, 0xc0, 0xbe, 0x26, 0x0d, 0xd4, 0x59, 0xd1,
+ 0x5f, 0x9b, 0xe0, 0x32, 0x44, 0xe8, 0xb7, 0x05, 0x0f, 0x54, 0xe1, 0x57, 0x48, 0xd1, 0x24, 0x2c,
+ 0x96, 0x14, 0x24, 0x5e, 0x18, 0x23, 0xd2, 0xe7, 0xd5, 0xf8, 0xb8, 0xed, 0x74, 0xf8, 0x7c, 0x16,
+ 0xe2, 0xeb, 0x7e, 0xf2, 0x17, 0xf5, 0xd2, 0x22, 0xa7, 0x53, 0xe6, 0xfc, 0x2c, 0x2a, 0x04, 0xdb,
+ 0x0b, 0x8d, 0x5b, 0x26, 0xd4, 0x5a, 0x36, 0x6f, 0x99, 0x28, 0xa9, 0x87, 0x50, 0x82, 0xdb, 0x49,
+ 0xaa, 0xcc, 0xe5, 0x5e, 0x47, 0x60, 0x4c, 0x5d, 0x08, 0x25, 0x59, 0x36, 0x06, 0x21, 0xb3, 0x20,
+ 0x1b, 0x6d, 0x10, 0xe8, 0xb1, 0x8b, 0x89, 0x8d, 0x25, 0x49, 0xaf, 0x01, 0x5d, 0xa6, 0x31, 0x96,
+ 0xa5, 0x05, 0x38, 0xf5, 0x05, 0x3e, 0x0c, 0x5b, 0x96, 0x69, 0xc9, 0xea, 0xc5, 0x13, 0xc4, 0x83,
+ 0x60, 0xc8, 0x41, 0xd0, 0x35, 0x24, 0x99, 0xd9, 0x3b, 0x08, 0x16, 0xf8, 0xd9, 0x28, 0xef, 0x0d,
+ 0x75, 0x5a, 0xe7, 0x59, 0x1e, 0xe7, 0x69, 0x77, 0xb1, 0x9a, 0x24, 0xd9, 0xd8, 0x52, 0x90, 0x84,
+ 0x98, 0xd3, 0x76, 0x93, 0x14, 0x21, 0xde, 0x1b, 0xe2, 0x08, 0x8c, 0x2f, 0x60, 0xf7, 0x60, 0xcd,
+ 0x06, 0x1a, 0x49, 0x1d, 0xc7, 0x49, 0x8a, 0x16, 0xae, 0x71, 0x3c, 0x4d, 0x2d, 0x10, 0x03, 0xf6,
+ 0x7a, 0x83, 0x96, 0x2d, 0x38, 0x00, 0x44, 0xb0, 0x9e, 0x8c, 0x47, 0x80, 0x98, 0xcb, 0x93, 0x78,
+ 0x16, 0x5a, 0x8e, 0x5c, 0x15, 0x4d, 0xbb, 0x82, 0x61, 0xa7, 0xb0, 0xe8, 0x33, 0x79, 0x79, 0x5c,
+ 0xe8, 0x31, 0x91, 0x3c, 0x2b, 0xf9, 0x49, 0x13, 0xe6, 0x1d, 0x55, 0x73, 0xd9, 0x39, 0x15, 0xac,
+ 0x79, 0x08, 0x0f, 0x20, 0x4b, 0x84, 0x0e, 0x61, 0xa9, 0x08, 0x54, 0xe6, 0xcb, 0x45, 0x3a, 0x98,
+ 0x40, 0xb0, 0x41, 0xc4, 0x79, 0xe3, 0x34, 0x6a, 0x68, 0xf3, 0xfa, 0xaf, 0xce, 0x77, 0xa6, 0xa8,
+ 0x42, 0x9f, 0xc2, 0x02, 0xf6, 0x83, 0x65, 0xfa, 0xc2, 0x3b, 0x23, 0x3f, 0xd8, 0x67, 0x2d, 0xea,
+ 0x54, 0x4c, 0x05, 0x88, 0x41, 0x42, 0xd0, 0x5f, 0xad, 0xef, 0x3e, 0xfd, 0xd5, 0xfe, 0xee, 0xb3,
+ 0x09, 0xec, 0x06, 0x38, 0x6e, 0x71, 0x78, 0x57, 0x83, 0x3e, 0xab, 0x41, 0x8d, 0xf7, 0xab, 0x90,
+ 0x57, 0x56, 0x44, 0x5c, 0xd6, 0x94, 0xf5, 0x88, 0xa9, 0x54, 0xa1, 0xf8, 0xd4, 0x34, 0xd5, 0x57,
+ 0x76, 0x9e, 0x8d, 0xa6, 0xf9, 0xba, 0x10, 0xda, 0x34, 0x12, 0x32, 0x97, 0x46, 0x48, 0x04, 0x0d,
+ 0x33, 0x21, 0x8d, 0x22, 0x15, 0x5b, 0x53, 0x1d, 0x45, 0x06, 0x45, 0xa4, 0x4b, 0xa4, 0xcf, 0x91,
+ 0xda, 0x4f, 0x07, 0x56, 0xc4, 0x41, 0x89, 0x08, 0xac, 0x7d, 0x38, 0x28, 0xc9, 0x0d, 0xac, 0x38,
+ 0x15, 0xda, 0x24, 0x97, 0x16, 0x25, 0x8f, 0x98, 0x65, 0x60, 0xa7, 0x80, 0x0b, 0x53, 0xa5, 0x1d,
+ 0x9b, 0x5e, 0xe0, 0x59, 0x0e, 0xa1, 0x27, 0xbd, 0xa8, 0x50, 0x9a, 0x9d, 0x8b, 0x42, 0x8a, 0x00,
+ 0x3b, 0xff, 0x44, 0xe5, 0x44, 0xed, 0x27, 0xcc, 0xa5, 0x41, 0xe7, 0x08, 0x7b, 0x59, 0xf1, 0x48,
+ 0x28, 0xac, 0x8e, 0xa5, 0x33, 0x91, 0xd5, 0xa0, 0xc9, 0xa3, 0x9a, 0x42, 0xc2, 0x5f, 0x8a, 0xf8,
+ 0x66, 0xba, 0x22, 0x99, 0x5a, 0xe7, 0x6b, 0x07, 0x91, 0xc4, 0x5e, 0x6e, 0xe3, 0x90, 0xd0, 0xfc,
+ 0x5d, 0x9e, 0x58, 0x1f, 0xaf, 0xe5, 0x2a, 0x28, 0x8c, 0x20, 0x86, 0x4c, 0x22, 0x53, 0x45, 0x00,
+ 0x6f, 0x4c, 0xbf, 0x09, 0xf5, 0x66, 0xe0, 0xf8, 0xb1, 0x0e, 0x9c, 0x9d, 0xc2, 0x07, 0xb4, 0xd4,
+ 0x85, 0xc6, 0x87, 0xe3, 0x57, 0x70, 0xc6, 0x2b, 0xbc, 0x93, 0xbb, 0x02, 0xcf, 0x76, 0xc4, 0xab,
+ 0xd3, 0x08, 0x87, 0x29, 0x95, 0x65, 0x40, 0x5d, 0xc3, 0xaf, 0xf2, 0x27, 0x29, 0xd8, 0x43, 0xd2,
+ 0x09, 0x07, 0x67, 0x2d, 0x2f, 0x08, 0x0e, 0xe4, 0x1a, 0xfb, 0xa4, 0x1d, 0x17, 0x61, 0xaf, 0x32,
+ 0x47, 0xe3, 0x63, 0x3f, 0x3d, 0x27, 0xc7, 0xd7, 0x7f, 0xf5, 0x68, 0xa4, 0x5f, 0xd9, 0xf3, 0x0c,
+ 0xb2, 0xd1, 0xb4, 0xba, 0xf0, 0x31, 0x91, 0x21, 0x51, 0x47, 0x2a, 0x81, 0x6a, 0x24, 0x3b, 0x4e,
+ 0x5b, 0x7d, 0xa8, 0x43, 0x5a, 0x2b, 0x1c, 0xa8, 0x09, 0x37, 0x75, 0xad, 0x3d, 0x1e, 0xdf, 0xb8,
+ 0x0a, 0x0e, 0x21, 0x5a, 0x2f, 0xe7, 0x4b, 0x29, 0xfe, 0xf4, 0x35, 0x95, 0xca, 0xe8, 0xdf, 0x40,
+ 0x5a, 0xa0, 0x60, 0xf4, 0xe5, 0x25, 0x88, 0x2d, 0x27, 0xf4, 0xd3, 0x51, 0x75, 0x28, 0x1e, 0x9d,
+ 0x5c, 0x68, 0x0a, 0x91, 0x9c, 0x8f, 0x84, 0x28, 0xb6, 0x29, 0x20, 0x0e, 0xaf, 0xa2, 0x4f, 0xd4,
+ 0x3e, 0x34, 0x54, 0xfd, 0x42, 0x5d, 0xf8, 0xf8, 0xb3, 0x55, 0xe0, 0x26, 0x81, 0xd8, 0xd9, 0x0a,
+ 0xd2, 0xd6, 0xf7, 0xba, 0x54, 0xd4, 0xb5, 0x3a, 0x6f, 0xa9, 0xa9, 0x14, 0x3e, 0x49, 0xa8, 0xa8,
+ 0xcd, 0xd7, 0xf6, 0x7b, 0x3a, 0xd3, 0x64, 0xd5, 0x0b, 0x3b, 0x9a, 0x28, 0x80, 0xa7, 0xd5, 0x6b,
+ 0x7d, 0x2f, 0x82, 0xfe, 0x26, 0xfe, 0x20, 0x97, 0x9c, 0xbb, 0xda, 0xab, 0xfc, 0x0f, 0xaf, 0xf2,
+ 0xdb, 0x3c, 0xc5, 0xa3, 0xf1, 0xb8, 0xec, 0xe4, 0x92, 0xc8, 0xb7, 0x1f, 0x5f, 0x12, 0x30, 0xa6,
+ 0x33, 0x4c, 0x52, 0x6e, 0x99, 0xf3, 0x5f, 0x05, 0x2b, 0x7b, 0xf9, 0x29, 0x1e, 0x67, 0x65, 0x14,
+ 0x8b, 0x7c, 0x3b, 0xc5, 0x02, 0xc6, 0x44, 0xb1, 0x94, 0x5b, 0x46, 0xb1, 0x0a, 0xf6, 0xa2, 0x0f,
+ 0x3b, 0xe1, 0xa6, 0x94, 0x9c, 0x9b, 0x11, 0xf9, 0xf6, 0x47, 0x59, 0x39, 0x88, 0xf1, 0x61, 0x56,
+ 0x91, 0x5b, 0xfa, 0x30, 0x97, 0x02, 0xb6, 0x8e, 0x60, 0xfb, 0xb9, 0x36, 0x9e, 0x5d, 0x4e, 0xae,
+ 0xed, 0x84, 0x9b, 0xc8, 0x5c, 0x4b, 0xac, 0xb2, 0x37, 0xf1, 0x1c, 0x6d, 0xc1, 0xc7, 0x34, 0xd9,
+ 0x37, 0x75, 0x1f, 0x98, 0x4c, 0xfc, 0x6a, 0x36, 0x2b, 0x48, 0x61, 0xc5, 0xed, 0x7a, 0x48, 0x13,
+ 0xdb, 0x95, 0xac, 0x55, 0x49, 0xca, 0x89, 0x9f, 0xa6, 0x23, 0x56, 0x22, 0xd7, 0x57, 0x65, 0x9f,
+ 0xe9, 0xb0, 0x95, 0x8c, 0x6a, 0x2b, 0xf9, 0x25, 0x7e, 0x9a, 0x68, 0x11, 0xb9, 0xbe, 0x2a, 0xd5,
+ 0x4c, 0xb4, 0xc8, 0xa8, 0x36, 0x97, 0x4c, 0x3b, 0x3f, 0x9b, 0x25, 0x09, 0x1c, 0xf1, 0xd3, 0xf4,
+ 0x16, 0x2f, 0xcf, 0xf4, 0x55, 0x29, 0x64, 0x7c, 0x93, 0x57, 0xc2, 0xb4, 0x8d, 0x28, 0xe1, 0xbf,
+ 0x6c, 0x84, 0xd0, 0x53, 0x71, 0x92, 0x74, 0xb1, 0x92, 0x41, 0xb7, 0x2e, 0x8b, 0x32, 0x62, 0xef,
+ 0xd5, 0xd8, 0x7b, 0x35, 0xf6, 0x5e, 0x8d, 0xbd, 0x57, 0x63, 0xef, 0xd5, 0x78, 0x3d, 0x5e, 0x0d,
+ 0x76, 0x22, 0x58, 0x9c, 0x79, 0x53, 0x4e, 0xc9, 0x11, 0x3e, 0x78, 0x56, 0x8e, 0x0f, 0xf1, 0x5a,
+ 0xd2, 0x7c, 0x96, 0x8d, 0x63, 0x68, 0xfd, 0x3d, 0x3c, 0x21, 0x54, 0x3f, 0x23, 0x27, 0xdc, 0x50,
+ 0xdb, 0x9a, 0x4b, 0xb8, 0x73, 0x85, 0xaf, 0x8e, 0x11, 0x25, 0x8d, 0x6c, 0x20, 0x4a, 0x1d, 0xe4,
+ 0x93, 0x67, 0x40, 0x6d, 0xf5, 0x93, 0x60, 0x72, 0xf4, 0xf2, 0xd3, 0xc5, 0xa7, 0xcf, 0xdd, 0xf3,
+ 0x3f, 0x6b, 0xef, 0xa4, 0xfb, 0x50, 0xa7, 0x9f, 0x7e, 0x3e, 0xed, 0xfe, 0x7c, 0xf2, 0xeb, 0xaf,
+ 0x27, 0xa8, 0xb5, 0xed, 0xd6, 0xb1, 0xe1, 0x30, 0xcc, 0x41, 0x51, 0x6b, 0x86, 0xc5, 0xb8, 0x82,
+ 0x1d, 0xbc, 0x5b, 0x1b, 0x76, 0x87, 0xf6, 0xe7, 0xae, 0x4c, 0xc8, 0x9d, 0xda, 0x7f, 0x8f, 0x60,
+ 0xbe, 0x99, 0xbc, 0x79, 0x66, 0x93, 0x47, 0x3e, 0x6d, 0x65, 0xb1, 0xd2, 0xee, 0x61, 0xc8, 0x94,
+ 0x72, 0xe9, 0x66, 0x76, 0x48, 0xb9, 0x19, 0xb2, 0x91, 0x19, 0xf1, 0x18, 0xa7, 0xef, 0x24, 0xe6,
+ 0xd9, 0x4c, 0x9f, 0x2f, 0xe3, 0x8c, 0xcd, 0x54, 0x72, 0x10, 0xcf, 0x74, 0x78, 0x40, 0xb1, 0x2e,
+ 0x8a, 0x74, 0x3a, 0x4c, 0xfc, 0xb2, 0x3a, 0xd6, 0x07, 0x59, 0xe2, 0x4a, 0x96, 0xcc, 0xac, 0xf1,
+ 0x34, 0x53, 0xe8, 0xd8, 0x15, 0x75, 0x1a, 0x11, 0xb4, 0x81, 0x8c, 0x84, 0x34, 0xa4, 0x32, 0xfb,
+ 0x61, 0xe2, 0x22, 0x21, 0x0a, 0x03, 0x87, 0xe3, 0xf7, 0x14, 0xd6, 0x74, 0x43, 0xf9, 0x4c, 0xe5,
+ 0xd5, 0xe5, 0x65, 0xe4, 0x60, 0x55, 0xb9, 0x81, 0xef, 0x2d, 0x50, 0xb5, 0x99, 0x2b, 0xe2, 0xd0,
+ 0x3f, 0xec, 0x30, 0x4e, 0x24, 0xb1, 0x00, 0xa9, 0xce, 0xe1, 0xdd, 0xe7, 0xb5, 0x9b, 0xed, 0xf7,
+ 0x01, 0x11, 0xce, 0x75, 0x41, 0x85, 0x5b, 0x42, 0x06, 0xa9, 0x1b, 0x6a, 0x16, 0xa3, 0x19, 0x88,
+ 0x05, 0x95, 0x22, 0x0b, 0xef, 0x24, 0x72, 0xf1, 0x91, 0x40, 0x93, 0xbf, 0x18, 0xbc, 0xc5, 0xcd,
+ 0xb8, 0xd8, 0x21, 0xa4, 0xae, 0x7e, 0x84, 0x3f, 0x3c, 0x79, 0x82, 0x2a, 0x6a, 0x0e, 0xf6, 0x55,
+ 0x4b, 0x87, 0x08, 0x81, 0xb4, 0x86, 0x8c, 0xc0, 0x87, 0x94, 0xba, 0x92, 0x52, 0xf1, 0xc4, 0xa0,
+ 0xa7, 0xae, 0x64, 0xf7, 0xf2, 0x65, 0xff, 0x1f, 0x03, 0x90, 0xfe, 0x1c
+};
+
+const char* shaderSource() {
+ static std::string decompressed = util::decompress(std::string(reinterpret_cast<const char*>(compressedShaderSource), sizeof(compressedShaderSource)));
+ return decompressed.c_str();
+};
+
+} // namespace gl
+} // namespace programs
+} // namespace mbgl
diff --git a/src/mbgl/shaders/source.hpp b/src/mbgl/programs/gl/shader_source.hpp
index 38a5ea6ece..f6de8a56cc 100644
--- a/src/mbgl/shaders/source.hpp
+++ b/src/mbgl/programs/gl/shader_source.hpp
@@ -3,9 +3,11 @@
#pragma once
namespace mbgl {
-namespace shaders {
+namespace programs {
+namespace gl {
-const char* source();
+const char* shaderSource();
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
diff --git a/src/mbgl/shaders/shaders.cpp b/src/mbgl/programs/gl/shaders.cpp
index 578c2db624..3cc33992de 100644
--- a/src/mbgl/shaders/shaders.cpp
+++ b/src/mbgl/programs/gl/shaders.cpp
@@ -1,19 +1,20 @@
-#include <mbgl/shaders/shaders.hpp>
-#include <mbgl/shaders/preludes.hpp>
+#include <mbgl/programs/gl/shaders.hpp>
+#include <mbgl/programs/gl/preludes.hpp>
#include <mbgl/programs/program_parameters.hpp>
#include <mbgl/util/string.hpp>
#include <cassert>
namespace mbgl {
-namespace shaders {
+namespace programs {
+namespace gl {
std::string fragmentSource(const ProgramParameters& parameters, const char* fragmentSource) {
- return parameters.getDefines() + fragmentPrelude + fragmentSource;
+ return parameters.getDefines() + fragmentShaderPrelude + fragmentSource;
}
std::string vertexSource(const ProgramParameters& parameters, const char* vertexSource) {
- return parameters.getDefines() + vertexPrelude + vertexSource;
+ return parameters.getDefines() + vertexShaderPrelude + vertexSource;
}
std::string programIdentifier(const std::string& vertexSource, const std::string& fragmentSource) {
@@ -25,5 +26,6 @@ std::string programIdentifier(const std::string& vertexSource, const std::string
return result;
}
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
diff --git a/src/mbgl/shaders/shaders.hpp b/src/mbgl/programs/gl/shaders.hpp
index 513d37fa6f..5278ea54da 100644
--- a/src/mbgl/shaders/shaders.hpp
+++ b/src/mbgl/programs/gl/shaders.hpp
@@ -6,11 +6,13 @@ namespace mbgl {
class ProgramParameters;
-namespace shaders {
+namespace programs {
+namespace gl {
std::string fragmentSource(const ProgramParameters&, const char* fragmentSource);
std::string vertexSource(const ProgramParameters&, const char* vertexSource);
std::string programIdentifier(const std::string& vertexSource, const std::string& fragmentSource);
-} // namespace shaders
+} // namespace gl
+} // namespace programs
} // namespace mbgl
diff --git a/src/mbgl/shaders/symbol_icon.cpp b/src/mbgl/programs/gl/symbol_icon.cpp
index 7e10f23aa2..733d3b7ebd 100644
--- a/src/mbgl/shaders/symbol_icon.cpp
+++ b/src/mbgl/programs/gl/symbol_icon.cpp
@@ -1,14 +1,22 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/symbol_icon.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/symbol_icon_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<SymbolIconProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<SymbolIconProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "symbol_icon",
+ programs::gl::shaderSource() + 50000, programs::gl::shaderSource() + 52654);
+}
-const char* symbol_icon::name = "symbol_icon";
-const char* symbol_icon::vertexSource = source() + 50000;
-const char* symbol_icon::fragmentSource = source() + 52654;
+} // namespace gfx
+} // namespace mbgl
// Uncompressed source of symbol_icon.vertex.glsl:
/*
@@ -152,5 +160,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/symbol_sdf.cpp b/src/mbgl/programs/gl/symbol_sdf_icon.cpp
index 1ffc4c338c..ef3ecd138c 100644
--- a/src/mbgl/shaders/symbol_sdf.cpp
+++ b/src/mbgl/programs/gl/symbol_sdf_icon.cpp
@@ -1,16 +1,24 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-#include <mbgl/shaders/symbol_sdf.hpp>
-#include <mbgl/shaders/source.hpp>
+#include <mbgl/programs/symbol_sdf_icon_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
namespace mbgl {
-namespace shaders {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<SymbolSDFIconProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<SymbolSDFIconProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "symbol_sdf_icon",
+ programs::gl::shaderSource() + 53059, programs::gl::shaderSource() + 57099);
+}
-const char* symbol_sdf::name = "symbol_sdf";
-const char* symbol_sdf::vertexSource = source() + 53059;
-const char* symbol_sdf::fragmentSource = source() + 57099;
+} // namespace gfx
+} // namespace mbgl
-// Uncompressed source of symbol_sdf.vertex.glsl:
+// Uncompressed source of symbol_sdf_icon.vertex.glsl:
/*
const float PI = 3.141592653589793;
@@ -202,7 +210,7 @@ void main() {
*/
-// Uncompressed source of symbol_sdf.fragment.glsl:
+// Uncompressed source of symbol_sdf_icon.fragment.glsl:
/*
#define SDF_PX 8.0
#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO
@@ -307,5 +315,3 @@ void main() {
*/
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/programs/gl/symbol_sdf_text.cpp b/src/mbgl/programs/gl/symbol_sdf_text.cpp
new file mode 100644
index 0000000000..a0d810d1ce
--- /dev/null
+++ b/src/mbgl/programs/gl/symbol_sdf_text.cpp
@@ -0,0 +1,317 @@
+// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
+
+#include <mbgl/programs/symbol_sdf_text_program.hpp>
+#include <mbgl/programs/gl/shader_source.hpp>
+#include <mbgl/gl/program.hpp>
+
+namespace mbgl {
+namespace gfx {
+
+template <>
+std::unique_ptr<Program<SymbolSDFTextProgram>>
+Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
+ return gl::Program<SymbolSDFTextProgram>::createProgram(
+ reinterpret_cast<gl::Context&>(*this), programParameters, "symbol_sdf_text",
+ programs::gl::shaderSource() + 53059, programs::gl::shaderSource() + 57099);
+}
+
+} // namespace gfx
+} // namespace mbgl
+
+// Uncompressed source of symbol_sdf_text.vertex.glsl:
+/*
+const float PI = 3.141592653589793;
+
+attribute vec4 a_pos_offset;
+attribute vec4 a_data;
+attribute vec3 a_projected_pos;
+attribute float a_fade_opacity;
+
+// contents of a_size vary based on the type of property value
+// used for {text,icon}-size.
+// For constants, a_size is disabled.
+// For source functions, we bind only one value per vertex: the value of {text,icon}-size evaluated for the current feature.
+// For composite functions:
+// [ text-size(lowerZoomStop, feature),
+// text-size(upperZoomStop, feature) ]
+uniform bool u_is_size_zoom_constant;
+uniform bool u_is_size_feature_constant;
+uniform highp float u_size_t; // used to interpolate between zoom stops when size is a composite function
+uniform highp float u_size; // used when size is both zoom and feature constant
+
+
+#ifndef HAS_UNIFORM_u_fill_color
+uniform lowp float a_fill_color_t;
+attribute highp vec4 a_fill_color;
+varying highp vec4 fill_color;
+#else
+uniform highp vec4 u_fill_color;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_color
+uniform lowp float a_halo_color_t;
+attribute highp vec4 a_halo_color;
+varying highp vec4 halo_color;
+#else
+uniform highp vec4 u_halo_color;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_opacity
+uniform lowp float a_opacity_t;
+attribute lowp vec2 a_opacity;
+varying lowp float opacity;
+#else
+uniform lowp float u_opacity;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_width
+uniform lowp float a_halo_width_t;
+attribute lowp vec2 a_halo_width;
+varying lowp float halo_width;
+#else
+uniform lowp float u_halo_width;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_blur
+uniform lowp float a_halo_blur_t;
+attribute lowp vec2 a_halo_blur;
+varying lowp float halo_blur;
+#else
+uniform lowp float u_halo_blur;
+#endif
+
+
+uniform mat4 u_matrix;
+uniform mat4 u_label_plane_matrix;
+uniform mat4 u_gl_coord_matrix;
+
+uniform bool u_is_text;
+uniform bool u_pitch_with_map;
+uniform highp float u_pitch;
+uniform bool u_rotate_symbol;
+uniform highp float u_aspect_ratio;
+uniform highp float u_camera_to_center_distance;
+uniform float u_fade_change;
+
+uniform vec2 u_texsize;
+
+varying vec2 v_data0;
+varying vec3 v_data1;
+
+void main() {
+
+#ifndef HAS_UNIFORM_u_fill_color
+ fill_color = unpack_mix_color(a_fill_color, a_fill_color_t);
+#else
+ highp vec4 fill_color = u_fill_color;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_color
+ halo_color = unpack_mix_color(a_halo_color, a_halo_color_t);
+#else
+ highp vec4 halo_color = u_halo_color;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_opacity
+ opacity = unpack_mix_vec2(a_opacity, a_opacity_t);
+#else
+ lowp float opacity = u_opacity;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_width
+ halo_width = unpack_mix_vec2(a_halo_width, a_halo_width_t);
+#else
+ lowp float halo_width = u_halo_width;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_blur
+ halo_blur = unpack_mix_vec2(a_halo_blur, a_halo_blur_t);
+#else
+ lowp float halo_blur = u_halo_blur;
+#endif
+
+
+ vec2 a_pos = a_pos_offset.xy;
+ vec2 a_offset = a_pos_offset.zw;
+
+ vec2 a_tex = a_data.xy;
+ vec2 a_size = a_data.zw;
+
+ highp float segment_angle = -a_projected_pos[2];
+ float size;
+
+ if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {
+ size = mix(a_size[0], a_size[1], u_size_t) / 256.0;
+ } else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {
+ size = a_size[0] / 256.0;
+ } else if (!u_is_size_zoom_constant && u_is_size_feature_constant) {
+ size = u_size;
+ } else {
+ size = u_size;
+ }
+
+ vec4 projectedPoint = u_matrix * vec4(a_pos, 0, 1);
+ highp float camera_to_anchor_distance = projectedPoint.w;
+ // If the label is pitched with the map, layout is done in pitched space,
+ // which makes labels in the distance smaller relative to viewport space.
+ // We counteract part of that effect by multiplying by the perspective ratio.
+ // If the label isn't pitched with the map, we do layout in viewport space,
+ // which makes labels in the distance larger relative to the features around
+ // them. We counteract part of that effect by dividing by the perspective ratio.
+ highp float distance_ratio = u_pitch_with_map ?
+ camera_to_anchor_distance / u_camera_to_center_distance :
+ u_camera_to_center_distance / camera_to_anchor_distance;
+ highp float perspective_ratio = clamp(
+ 0.5 + 0.5 * distance_ratio,
+ 0.0, // Prevents oversized near-field symbols in pitched/overzoomed tiles
+ 4.0);
+
+ size *= perspective_ratio;
+
+ float fontScale = u_is_text ? size / 24.0 : size;
+
+ highp float symbol_rotation = 0.0;
+ if (u_rotate_symbol) {
+ // Point labels with 'rotation-alignment: map' are horizontal with respect to tile units
+ // To figure out that angle in projected space, we draw a short horizontal line in tile
+ // space, project it, and measure its angle in projected space.
+ vec4 offsetProjectedPoint = u_matrix * vec4(a_pos + vec2(1, 0), 0, 1);
+
+ vec2 a = projectedPoint.xy / projectedPoint.w;
+ vec2 b = offsetProjectedPoint.xy / offsetProjectedPoint.w;
+
+ symbol_rotation = atan((b.y - a.y) / u_aspect_ratio, b.x - a.x);
+ }
+
+ highp float angle_sin = sin(segment_angle + symbol_rotation);
+ highp float angle_cos = cos(segment_angle + symbol_rotation);
+ mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);
+
+ vec4 projected_pos = u_label_plane_matrix * vec4(a_projected_pos.xy, 0.0, 1.0);
+ gl_Position = u_gl_coord_matrix * vec4(projected_pos.xy / projected_pos.w + rotation_matrix * (a_offset / 32.0 * fontScale), 0.0, 1.0);
+ float gamma_scale = gl_Position.w;
+
+ vec2 tex = a_tex / u_texsize;
+ vec2 fade_opacity = unpack_opacity(a_fade_opacity);
+ float fade_change = fade_opacity[1] > 0.5 ? u_fade_change : -u_fade_change;
+ float interpolated_fade_opacity = max(0.0, min(1.0, fade_opacity[0] + fade_change));
+
+ v_data0 = vec2(tex.x, tex.y);
+ v_data1 = vec3(gamma_scale, size, interpolated_fade_opacity);
+}
+
+*/
+
+// Uncompressed source of symbol_sdf_text.fragment.glsl:
+/*
+#define SDF_PX 8.0
+#define EDGE_GAMMA 0.105/DEVICE_PIXEL_RATIO
+
+uniform bool u_is_halo;
+
+#ifndef HAS_UNIFORM_u_fill_color
+varying highp vec4 fill_color;
+#else
+uniform highp vec4 u_fill_color;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_color
+varying highp vec4 halo_color;
+#else
+uniform highp vec4 u_halo_color;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_opacity
+varying lowp float opacity;
+#else
+uniform lowp float u_opacity;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_width
+varying lowp float halo_width;
+#else
+uniform lowp float u_halo_width;
+#endif
+
+
+#ifndef HAS_UNIFORM_u_halo_blur
+varying lowp float halo_blur;
+#else
+uniform lowp float u_halo_blur;
+#endif
+
+
+uniform sampler2D u_texture;
+uniform highp float u_gamma_scale;
+uniform bool u_is_text;
+
+varying vec2 v_data0;
+varying vec3 v_data1;
+
+void main() {
+
+#ifdef HAS_UNIFORM_u_fill_color
+ highp vec4 fill_color = u_fill_color;
+#endif
+
+
+#ifdef HAS_UNIFORM_u_halo_color
+ highp vec4 halo_color = u_halo_color;
+#endif
+
+
+#ifdef HAS_UNIFORM_u_opacity
+ lowp float opacity = u_opacity;
+#endif
+
+
+#ifdef HAS_UNIFORM_u_halo_width
+ lowp float halo_width = u_halo_width;
+#endif
+
+
+#ifdef HAS_UNIFORM_u_halo_blur
+ lowp float halo_blur = u_halo_blur;
+#endif
+
+
+ vec2 tex = v_data0.xy;
+ float gamma_scale = v_data1.x;
+ float size = v_data1.y;
+ float fade_opacity = v_data1[2];
+
+ float fontScale = u_is_text ? size / 24.0 : size;
+
+ lowp vec4 color = fill_color;
+ highp float gamma = EDGE_GAMMA / (fontScale * u_gamma_scale);
+ lowp float buff = (256.0 - 64.0) / 256.0;
+ if (u_is_halo) {
+ color = halo_color;
+ gamma = (halo_blur * 1.19 / SDF_PX + EDGE_GAMMA) / (fontScale * u_gamma_scale);
+ buff = (6.0 - halo_width / fontScale) / SDF_PX;
+ }
+
+ lowp float dist = texture2D(u_texture, tex).a;
+ highp float gamma_scaled = gamma * gamma_scale;
+ highp float alpha = smoothstep(buff - gamma_scaled, buff + gamma_scaled, dist);
+
+ gl_FragColor = color * (alpha * opacity * fade_opacity);
+
+#ifdef OVERDRAW_INSPECTOR
+ gl_FragColor = vec4(1.0);
+#endif
+}
+
+*/
+
diff --git a/src/mbgl/programs/heatmap_program.cpp b/src/mbgl/programs/heatmap_program.cpp
index 67f84fbd52..32c30ea313 100644
--- a/src/mbgl/programs/heatmap_program.cpp
+++ b/src/mbgl/programs/heatmap_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/heatmap_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<HeatmapProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(HeatmapLayoutVertex) == 4, "expected HeatmapLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/heatmap_program.hpp b/src/mbgl/programs/heatmap_program.hpp
index 9e8b9c5357..9563dd8d1b 100644
--- a/src/mbgl/programs/heatmap_program.hpp
+++ b/src/mbgl/programs/heatmap_program.hpp
@@ -4,7 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/heatmap_texture_program.hpp>
#include <mbgl/programs/uniforms.hpp>
-#include <mbgl/shaders/heatmap.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/style/layers/heatmap_layer_properties.hpp>
@@ -16,7 +15,6 @@ MBGL_DEFINE_UNIFORM_SCALAR(float, u_intensity);
class HeatmapProgram : public Program<
HeatmapProgram,
- shaders::heatmap,
gfx::PrimitiveType::Triangle,
TypeList<
attributes::a_pos>,
@@ -51,7 +49,7 @@ using HeatmapAttributes = HeatmapProgram::AttributeList;
class HeatmapLayerPrograms final : public LayerTypePrograms {
public:
- HeatmapLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ HeatmapLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: heatmap(context, programParameters),
heatmapTexture(context, programParameters) {}
ProgramMap<HeatmapProgram> heatmap;
diff --git a/src/mbgl/programs/heatmap_texture_program.cpp b/src/mbgl/programs/heatmap_texture_program.cpp
index 3b0e24eab8..04c5ff56a7 100644
--- a/src/mbgl/programs/heatmap_texture_program.cpp
+++ b/src/mbgl/programs/heatmap_texture_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/heatmap_texture_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<HeatmapTextureProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(HeatmapTextureLayoutVertex) == 4, "expected HeatmapTextureLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/heatmap_texture_program.hpp b/src/mbgl/programs/heatmap_texture_program.hpp
index d718d6961a..954e03f9b6 100644
--- a/src/mbgl/programs/heatmap_texture_program.hpp
+++ b/src/mbgl/programs/heatmap_texture_program.hpp
@@ -4,7 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/heatmap_texture.hpp>
#include <mbgl/style/properties.hpp>
#include <mbgl/util/geometry.hpp>
@@ -12,7 +11,6 @@ namespace mbgl {
class HeatmapTextureProgram : public Program<
HeatmapTextureProgram,
- shaders::heatmap_texture,
gfx::PrimitiveType::Triangle,
TypeList<attributes::a_pos>,
TypeList<
diff --git a/src/mbgl/programs/hillshade_prepare_program.cpp b/src/mbgl/programs/hillshade_prepare_program.cpp
index 0c0446d3f5..5bbac9eaec 100644
--- a/src/mbgl/programs/hillshade_prepare_program.cpp
+++ b/src/mbgl/programs/hillshade_prepare_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/hillshade_prepare_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<HillshadePrepareProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(HillshadePrepareLayoutVertex) == 8, "expected HillshadeLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/hillshade_prepare_program.hpp b/src/mbgl/programs/hillshade_prepare_program.hpp
index 9560a4acb0..0243cc1879 100644
--- a/src/mbgl/programs/hillshade_prepare_program.hpp
+++ b/src/mbgl/programs/hillshade_prepare_program.hpp
@@ -4,7 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/hillshade_prepare.hpp>
#include <mbgl/util/geometry.hpp>
namespace mbgl {
@@ -16,7 +15,6 @@ MBGL_DEFINE_UNIFORM_SCALAR(float, u_maxzoom);
class HillshadePrepareProgram : public Program<
HillshadePrepareProgram,
- shaders::hillshade_prepare,
gfx::PrimitiveType::Triangle,
TypeList<
attributes::a_pos,
diff --git a/src/mbgl/programs/hillshade_program.cpp b/src/mbgl/programs/hillshade_program.cpp
index f054ad4b74..31673afcd4 100644
--- a/src/mbgl/programs/hillshade_program.cpp
+++ b/src/mbgl/programs/hillshade_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/hillshade_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<HillshadeProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(HillshadeLayoutVertex) == 8, "expected HillshadeLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/hillshade_program.hpp b/src/mbgl/programs/hillshade_program.hpp
index a82220ed51..68d67917df 100644
--- a/src/mbgl/programs/hillshade_program.hpp
+++ b/src/mbgl/programs/hillshade_program.hpp
@@ -5,7 +5,6 @@
#include <mbgl/programs/hillshade_prepare_program.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/hillshade.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/style/layers/hillshade_layer_properties.hpp>
@@ -21,7 +20,6 @@ MBGL_DEFINE_UNIFORM_VECTOR(float, 2, u_latrange);
class HillshadeProgram : public Program<
HillshadeProgram,
- shaders::hillshade,
gfx::PrimitiveType::Triangle,
TypeList<
attributes::a_pos,
@@ -58,7 +56,7 @@ using HillshadeAttributes = HillshadeProgram::AttributeList;
class HillshadeLayerPrograms final : public LayerTypePrograms {
public:
- HillshadeLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ HillshadeLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: hillshade(context, programParameters),
hillshadePrepare(context, programParameters) {}
HillshadeProgram hillshade;
diff --git a/src/mbgl/programs/line_gradient_program.hpp b/src/mbgl/programs/line_gradient_program.hpp
new file mode 100644
index 0000000000..c98cd37e98
--- /dev/null
+++ b/src/mbgl/programs/line_gradient_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/line_program.hpp>
diff --git a/src/mbgl/programs/line_pattern_program.hpp b/src/mbgl/programs/line_pattern_program.hpp
new file mode 100644
index 0000000000..c98cd37e98
--- /dev/null
+++ b/src/mbgl/programs/line_pattern_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/line_program.hpp>
diff --git a/src/mbgl/programs/line_program.cpp b/src/mbgl/programs/line_program.cpp
index 2a325e2086..74a1ba3162 100644
--- a/src/mbgl/programs/line_program.cpp
+++ b/src/mbgl/programs/line_program.cpp
@@ -1,4 +1,5 @@
#include <mbgl/programs/line_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
#include <mbgl/style/layers/line_layer_properties.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/renderer/image_atlas.hpp>
@@ -8,6 +9,11 @@
namespace mbgl {
+template std::unique_ptr<gfx::Program<LineProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<LinePatternProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<LineGradientProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<LineSDFProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
using namespace style;
static_assert(sizeof(LineLayoutVertex) == 12, "expected LineLayoutVertex size");
diff --git a/src/mbgl/programs/line_program.hpp b/src/mbgl/programs/line_program.hpp
index a325e9f5fd..05546e3cbe 100644
--- a/src/mbgl/programs/line_program.hpp
+++ b/src/mbgl/programs/line_program.hpp
@@ -4,10 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/line.hpp>
-#include <mbgl/shaders/line_gradient.hpp>
-#include <mbgl/shaders/line_pattern.hpp>
-#include <mbgl/shaders/line_sdf.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/renderer/layers/render_line_layer.hpp>
#include <mbgl/renderer/cross_faded_property_evaluator.hpp>
@@ -36,7 +32,6 @@ using LineLayoutAttributes = TypeList<
class LineProgram : public Program<
LineProgram,
- shaders::line,
gfx::PrimitiveType::Triangle,
LineLayoutAttributes,
TypeList<
@@ -103,7 +98,6 @@ public:
class LinePatternProgram : public Program<
LinePatternProgram,
- shaders::line_pattern,
gfx::PrimitiveType::Triangle,
LineLayoutAttributes,
TypeList<
@@ -132,7 +126,6 @@ public:
class LineSDFProgram : public Program<
LineSDFProgram,
- shaders::line_sdf,
gfx::PrimitiveType::Triangle,
LineLayoutAttributes,
TypeList<
@@ -166,7 +159,6 @@ public:
class LineGradientProgram : public Program<
LineGradientProgram,
- shaders::line_gradient,
gfx::PrimitiveType::Triangle,
LineLayoutAttributes,
TypeList<
@@ -192,7 +184,7 @@ using LineAttributes = LineProgram::AttributeList;
class LineLayerPrograms final : public LayerTypePrograms {
public:
- LineLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ LineLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: line(context, programParameters),
lineGradient(context, programParameters),
lineSDF(context, programParameters),
diff --git a/src/mbgl/programs/line_sdf_program.hpp b/src/mbgl/programs/line_sdf_program.hpp
new file mode 100644
index 0000000000..c98cd37e98
--- /dev/null
+++ b/src/mbgl/programs/line_sdf_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/line_program.hpp>
diff --git a/src/mbgl/programs/program.hpp b/src/mbgl/programs/program.hpp
index 351bf5bbb1..240da22b4f 100644
--- a/src/mbgl/programs/program.hpp
+++ b/src/mbgl/programs/program.hpp
@@ -2,13 +2,11 @@
#include <mbgl/gfx/attribute.hpp>
#include <mbgl/gfx/uniform.hpp>
-#include <mbgl/gl/program.hpp>
#include <mbgl/programs/segment.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/program_parameters.hpp>
#include <mbgl/style/paint_property.hpp>
#include <mbgl/renderer/paint_property_binder.hpp>
-#include <mbgl/shaders/shaders.hpp>
#include <mbgl/util/io.hpp>
#include <unordered_map>
@@ -16,7 +14,6 @@
namespace mbgl {
template <class Name,
- class Shaders,
gfx::PrimitiveType Primitive,
class LayoutAttributeList,
class LayoutUniformList,
@@ -41,17 +38,10 @@ public:
using TextureList = Textures;
using TextureBindings = gfx::TextureBindings<TextureList>;
- using ProgramType = gl::Program<AttributeList, UniformList, TextureList>;
+ std::unique_ptr<gfx::Program<Name>> program;
- std::unique_ptr<gfx::Program<AttributeList, UniformList, TextureList>> program;
-
- Program(gl::Context& context, const ProgramParameters& programParameters)
- : program(ProgramType::createProgram(
- context,
- programParameters,
- Shaders::name,
- Shaders::vertexSource,
- Shaders::fragmentSource)) {
+ Program(gfx::Context& context, const ProgramParameters& programParameters)
+ : program(context.createProgram<Name>(programParameters)) {
}
static UniformValues computeAllUniformValues(
@@ -89,6 +79,11 @@ public:
const TextureBindings& textureBindings,
const std::string& layerID) {
static_assert(Primitive == gfx::PrimitiveTypeOf<DrawMode>::value, "incompatible draw mode");
+
+ if (!program) {
+ return;
+ }
+
for (auto& segment : segments) {
auto drawScopeIt = segment.drawScopes.find(layerID);
@@ -121,7 +116,7 @@ public:
using Binders = typename Program::Binders;
using Bitset = typename Binders::Bitset;
- ProgramMap(gl::Context& context_, ProgramParameters parameters_)
+ ProgramMap(gfx::Context& context_, ProgramParameters parameters_)
: context(context_),
parameters(std::move(parameters_)) {
}
@@ -139,7 +134,7 @@ public:
}
private:
- gl::Context& context;
+ gfx::Context& context;
ProgramParameters parameters;
std::unordered_map<Bitset, Program> programs;
};
diff --git a/src/mbgl/programs/programs.cpp b/src/mbgl/programs/programs.cpp
index f3b3af8ac9..f82e46c9a2 100644
--- a/src/mbgl/programs/programs.cpp
+++ b/src/mbgl/programs/programs.cpp
@@ -12,7 +12,7 @@
namespace mbgl {
-Programs::Programs(gl::Context& context_, const ProgramParameters& programParameters_)
+Programs::Programs(gfx::Context& context_, const ProgramParameters& programParameters_)
: debug(context_, programParameters_),
clippingMask(context_, programParameters_),
context(context_),
diff --git a/src/mbgl/programs/programs.hpp b/src/mbgl/programs/programs.hpp
index a12a0e8fa6..ca9359b267 100644
--- a/src/mbgl/programs/programs.hpp
+++ b/src/mbgl/programs/programs.hpp
@@ -20,7 +20,7 @@ class SymbolLayerPrograms;
class Programs {
public:
- Programs(gl::Context&, const ProgramParameters&);
+ Programs(gfx::Context&, const ProgramParameters&);
~Programs();
BackgroundLayerPrograms& getBackgroundLayerPrograms() noexcept;
@@ -47,7 +47,7 @@ private:
std::unique_ptr<LayerTypePrograms> linePrograms;
std::unique_ptr<LayerTypePrograms> symbolPrograms;
- gl::Context& context;
+ gfx::Context& context;
ProgramParameters programParameters;
};
diff --git a/src/mbgl/programs/raster_program.cpp b/src/mbgl/programs/raster_program.cpp
index 6906903e6b..f3b1052284 100644
--- a/src/mbgl/programs/raster_program.cpp
+++ b/src/mbgl/programs/raster_program.cpp
@@ -1,7 +1,10 @@
#include <mbgl/programs/raster_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
+template std::unique_ptr<gfx::Program<RasterProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
static_assert(sizeof(RasterLayoutVertex) == 8, "expected RasterLayoutVertex size");
} // namespace mbgl
diff --git a/src/mbgl/programs/raster_program.hpp b/src/mbgl/programs/raster_program.hpp
index da3676b542..55f1fb0a2e 100644
--- a/src/mbgl/programs/raster_program.hpp
+++ b/src/mbgl/programs/raster_program.hpp
@@ -4,7 +4,6 @@
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
-#include <mbgl/shaders/raster.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/style/layers/raster_layer_properties.hpp>
@@ -24,7 +23,6 @@ MBGL_DEFINE_UNIFORM_VECTOR(float, 2, u_tl_parent);
class RasterProgram : public Program<
RasterProgram,
- shaders::raster,
gfx::PrimitiveType::Triangle,
TypeList<
attributes::a_pos,
@@ -68,7 +66,7 @@ using RasterAttributes = RasterProgram::AttributeList;
class RasterLayerPrograms final : public LayerTypePrograms {
public:
- RasterLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ RasterLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: raster(context, programParameters) {}
RasterProgram raster;
};
diff --git a/src/mbgl/programs/symbol_icon_program.hpp b/src/mbgl/programs/symbol_icon_program.hpp
new file mode 100644
index 0000000000..57f27518d1
--- /dev/null
+++ b/src/mbgl/programs/symbol_icon_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/symbol_program.hpp>
diff --git a/src/mbgl/programs/symbol_program.cpp b/src/mbgl/programs/symbol_program.cpp
index 3baac795ab..2300dedff3 100644
--- a/src/mbgl/programs/symbol_program.cpp
+++ b/src/mbgl/programs/symbol_program.cpp
@@ -1,4 +1,5 @@
#include <mbgl/programs/symbol_program.hpp>
+#include <mbgl/gfx/context_impl.hpp>
#include <mbgl/renderer/render_tile.hpp>
#include <mbgl/map/transform_state.hpp>
#include <mbgl/style/layers/symbol_layer_impl.hpp>
@@ -9,6 +10,10 @@
namespace mbgl {
+template std::unique_ptr<gfx::Program<SymbolIconProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<SymbolSDFTextProgram>> gfx::Context::createProgram(const ProgramParameters&);
+template std::unique_ptr<gfx::Program<SymbolSDFIconProgram>> gfx::Context::createProgram(const ProgramParameters&);
+
using namespace style;
static_assert(sizeof(SymbolLayoutVertex) == 16, "expected SymbolLayoutVertex size");
diff --git a/src/mbgl/programs/symbol_program.hpp b/src/mbgl/programs/symbol_program.hpp
index 2a5fff53ca..383f5162d8 100644
--- a/src/mbgl/programs/symbol_program.hpp
+++ b/src/mbgl/programs/symbol_program.hpp
@@ -9,8 +9,6 @@
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
#include <mbgl/programs/segment.hpp>
-#include <mbgl/shaders/symbol_icon.hpp>
-#include <mbgl/shaders/symbol_sdf.hpp>
#include <mbgl/util/geometry.hpp>
#include <mbgl/util/size.hpp>
#include <mbgl/style/layers/symbol_layer_properties.hpp>
@@ -240,11 +238,10 @@ public:
};
template <class Name,
- class Shaders,
gfx::PrimitiveType Primitive,
class LayoutAttributeList,
class LayoutUniformList,
- class TextureList,
+ class Textures,
class PaintProps>
class SymbolProgram : public SymbolProgramBase {
public:
@@ -265,19 +262,13 @@ public:
using UniformList = TypeListConcat<LayoutUniformList, SizeUniformList, PaintUniformList>;
using UniformValues = gfx::UniformValues<UniformList>;
+ using TextureList = Textures;
using TextureBindings = gfx::TextureBindings<TextureList>;
- using ProgramType = gl::Program<AttributeList, UniformList, TextureList>;
+ std::unique_ptr<gfx::Program<Name>> program;
- std::unique_ptr<ProgramType> program;
-
- SymbolProgram(gl::Context& context, const ProgramParameters& programParameters)
- : program(ProgramType::createProgram(
- context,
- programParameters,
- Shaders::name,
- Shaders::vertexSource,
- Shaders::fragmentSource)) {
+ SymbolProgram(gfx::Context& context, const ProgramParameters& programParameters)
+ : program(context.createProgram<Name>(programParameters)) {
}
static UniformValues computeAllUniformValues(
@@ -322,6 +313,11 @@ public:
const TextureBindings& textureBindings,
const std::string& layerID) {
static_assert(Primitive == gfx::PrimitiveTypeOf<DrawMode>::value, "incompatible draw mode");
+
+ if (!program) {
+ return;
+ }
+
for (auto& segment : segments) {
auto drawScopeIt = segment.drawScopes.find(layerID);
@@ -349,7 +345,6 @@ public:
class SymbolIconProgram : public SymbolProgram<
SymbolIconProgram,
- shaders::symbol_icon,
gfx::PrimitiveType::Triangle,
SymbolLayoutAttributes,
TypeList<
@@ -390,7 +385,6 @@ enum class SymbolSDFPart {
template <class Name, class PaintProperties>
class SymbolSDFProgram : public SymbolProgram<
Name,
- shaders::symbol_sdf,
gfx::PrimitiveType::Triangle,
SymbolLayoutAttributes,
TypeList<
@@ -415,7 +409,6 @@ class SymbolSDFProgram : public SymbolProgram<
public:
using BaseProgram = SymbolProgram<
Name,
- shaders::symbol_sdf,
gfx::PrimitiveType::Triangle,
SymbolLayoutAttributes,
TypeList<
@@ -470,7 +463,7 @@ using SymbolTextAttributes = SymbolSDFTextProgram::AttributeList;
class SymbolLayerPrograms final : public LayerTypePrograms {
public:
- SymbolLayerPrograms(gl::Context& context, const ProgramParameters& programParameters)
+ SymbolLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: symbolIcon(context, programParameters),
symbolIconSDF(context, programParameters),
symbolGlyph(context, programParameters),
diff --git a/src/mbgl/programs/symbol_sdf_icon_program.hpp b/src/mbgl/programs/symbol_sdf_icon_program.hpp
new file mode 100644
index 0000000000..57f27518d1
--- /dev/null
+++ b/src/mbgl/programs/symbol_sdf_icon_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/symbol_program.hpp>
diff --git a/src/mbgl/programs/symbol_sdf_text_program.hpp b/src/mbgl/programs/symbol_sdf_text_program.hpp
new file mode 100644
index 0000000000..57f27518d1
--- /dev/null
+++ b/src/mbgl/programs/symbol_sdf_text_program.hpp
@@ -0,0 +1,4 @@
+#pragma once
+
+// Alias
+#include <mbgl/programs/symbol_program.hpp>
diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp
index df2abc5da8..32e05a38ab 100644
--- a/src/mbgl/renderer/layers/render_background_layer.cpp
+++ b/src/mbgl/renderer/layers/render_background_layer.cpp
@@ -8,7 +8,8 @@
#include <mbgl/programs/background_program.hpp>
#include <mbgl/util/tile_cover.hpp>
#include <mbgl/map/transform_state.hpp>
-#include <mbgl/gfx/context.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
namespace mbgl {
diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp
index 9ef02e7e45..60a3bf8e01 100644
--- a/src/mbgl/renderer/layers/render_circle_layer.cpp
+++ b/src/mbgl/renderer/layers/render_circle_layer.cpp
@@ -7,6 +7,8 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/style/layers/circle_layer_impl.hpp>
#include <mbgl/geometry/feature_index.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
index 9a93a2e6c5..5af4732aa3 100644
--- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
@@ -13,7 +13,8 @@
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
#include <mbgl/tile/geometry_tile.hpp>
-#include <mbgl/gfx/context.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
namespace mbgl {
diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp
index d17bde005e..64f3448c69 100644
--- a/src/mbgl/renderer/layers/render_fill_layer.cpp
+++ b/src/mbgl/renderer/layers/render_fill_layer.cpp
@@ -8,6 +8,8 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/style/layers/fill_layer_impl.hpp>
#include <mbgl/geometry/feature_index.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
#include <mbgl/tile/geometry_tile.hpp>
diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
index 5bb2bddd74..efc16fb28a 100644
--- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp
@@ -9,6 +9,8 @@
#include <mbgl/style/layers/heatmap_layer.hpp>
#include <mbgl/style/layers/heatmap_layer_impl.hpp>
#include <mbgl/geometry/feature_index.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
index f75c0ef3a5..00ecad444c 100644
--- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp
@@ -9,6 +9,8 @@
#include <mbgl/programs/hillshade_prepare_program.hpp>
#include <mbgl/tile/tile.hpp>
#include <mbgl/style/layers/hillshade_layer_impl.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/util/geo.hpp>
#include <mbgl/util/offscreen_texture.hpp>
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index 858ecce9ac..eee151ccaa 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -8,6 +8,8 @@
#include <mbgl/geometry/line_atlas.hpp>
#include <mbgl/tile/tile.hpp>
#include <mbgl/style/layers/line_layer_impl.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/geometry/feature_index.hpp>
#include <mbgl/util/math.hpp>
#include <mbgl/util/intersection_tests.hpp>
diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp
index 8907d5f9a6..c8f00eb1fd 100644
--- a/src/mbgl/renderer/layers/render_raster_layer.cpp
+++ b/src/mbgl/renderer/layers/render_raster_layer.cpp
@@ -7,6 +7,8 @@
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/raster_program.hpp>
#include <mbgl/tile/tile.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/style/layers/raster_layer_impl.hpp>
namespace mbgl {
diff --git a/src/mbgl/renderer/layers/render_symbol_layer.cpp b/src/mbgl/renderer/layers/render_symbol_layer.cpp
index d20473e5d1..31d92dd414 100644
--- a/src/mbgl/renderer/layers/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/layers/render_symbol_layer.cpp
@@ -12,6 +12,8 @@
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>
#include <mbgl/style/layers/symbol_layer_impl.hpp>
+#include <mbgl/gfx/cull_face_mode.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/layout/symbol_projection.hpp>
#include <mbgl/util/math.hpp>
diff --git a/src/mbgl/renderer/render_static_data.cpp b/src/mbgl/renderer/render_static_data.cpp
index cae0e0a820..16d0d64a33 100644
--- a/src/mbgl/renderer/render_static_data.cpp
+++ b/src/mbgl/renderer/render_static_data.cpp
@@ -1,4 +1,5 @@
#include <mbgl/renderer/render_static_data.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/programs/program_parameters.hpp>
namespace mbgl {
diff --git a/src/mbgl/renderer/render_static_data.hpp b/src/mbgl/renderer/render_static_data.hpp
index da887dff22..b9b52b09ca 100644
--- a/src/mbgl/renderer/render_static_data.hpp
+++ b/src/mbgl/renderer/render_static_data.hpp
@@ -2,6 +2,7 @@
#include <mbgl/gfx/vertex_buffer.hpp>
#include <mbgl/gfx/index_buffer.hpp>
+#include <mbgl/gl/renderbuffer.hpp>
#include <mbgl/programs/background_program.hpp>
#include <mbgl/programs/extrusion_texture_program.hpp>
#include <mbgl/programs/programs.hpp>
diff --git a/src/mbgl/renderer/render_tile.cpp b/src/mbgl/renderer/render_tile.cpp
index 55f9276947..24826bfd78 100644
--- a/src/mbgl/renderer/render_tile.cpp
+++ b/src/mbgl/renderer/render_tile.cpp
@@ -4,6 +4,7 @@
#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/map/transform_state.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/tile/tile.hpp>
#include <mbgl/util/math.hpp>
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index 51b145d28c..1b135a2838 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -7,6 +7,7 @@
#include <mbgl/renderer/tile_parameters.hpp>
#include <mbgl/renderer/render_static_data.hpp>
#include <mbgl/programs/programs.hpp>
+#include <mbgl/gl/context.hpp>
#include <mbgl/util/tile_coordinate.hpp>
#include <mbgl/util/tile_cover.hpp>
#include <mbgl/util/logging.hpp>
diff --git a/src/mbgl/shaders/background.cpp b/src/mbgl/shaders/background.cpp
deleted file mode 100644
index 60f2d228be..0000000000
--- a/src/mbgl/shaders/background.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#include <mbgl/shaders/background.hpp>
-#include <mbgl/shaders/source.hpp>
-
-namespace mbgl {
-namespace shaders {
-
-const char* background::name = "background";
-const char* background::vertexSource = source() + 1429;
-const char* background::fragmentSource = source() + 1525;
-
-// Uncompressed source of background.vertex.glsl:
-/*
-attribute vec2 a_pos;
-
-uniform mat4 u_matrix;
-
-void main() {
- gl_Position = u_matrix * vec4(a_pos, 0, 1);
-}
-
-*/
-
-// Uncompressed source of background.fragment.glsl:
-/*
-uniform vec4 u_color;
-uniform float u_opacity;
-
-void main() {
- gl_FragColor = u_color * u_opacity;
-
-#ifdef OVERDRAW_INSPECTOR
- gl_FragColor = vec4(1.0);
-#endif
-}
-
-*/
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/background.hpp b/src/mbgl/shaders/background.hpp
deleted file mode 100644
index 2fa6f56e29..0000000000
--- a/src/mbgl/shaders/background.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class background {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/background_pattern.hpp b/src/mbgl/shaders/background_pattern.hpp
deleted file mode 100644
index e970ffd670..0000000000
--- a/src/mbgl/shaders/background_pattern.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class background_pattern {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/circle.hpp b/src/mbgl/shaders/circle.hpp
deleted file mode 100644
index d14b26b783..0000000000
--- a/src/mbgl/shaders/circle.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class circle {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/clipping_mask.cpp b/src/mbgl/shaders/clipping_mask.cpp
deleted file mode 100644
index 717ebd3e84..0000000000
--- a/src/mbgl/shaders/clipping_mask.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#include <mbgl/shaders/clipping_mask.hpp>
-#include <mbgl/shaders/source.hpp>
-
-namespace mbgl {
-namespace shaders {
-
-const char* clipping_mask::name = "clipping_mask";
-const char* clipping_mask::vertexSource = source() + 7848;
-const char* clipping_mask::fragmentSource = source() + 7944;
-
-// Uncompressed source of clipping_mask.vertex.glsl:
-/*
-attribute vec2 a_pos;
-
-uniform mat4 u_matrix;
-
-void main() {
- gl_Position = u_matrix * vec4(a_pos, 0, 1);
-}
-
-*/
-
-// Uncompressed source of clipping_mask.fragment.glsl:
-/*
-void main() {
- gl_FragColor = vec4(1.0);
-}
-
-*/
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/clipping_mask.hpp b/src/mbgl/shaders/clipping_mask.hpp
deleted file mode 100644
index bd01ab62fa..0000000000
--- a/src/mbgl/shaders/clipping_mask.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class clipping_mask {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/collision_box.hpp b/src/mbgl/shaders/collision_box.hpp
deleted file mode 100644
index e0f70c7968..0000000000
--- a/src/mbgl/shaders/collision_box.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class collision_box {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/collision_circle.hpp b/src/mbgl/shaders/collision_circle.hpp
deleted file mode 100644
index 12b1bcd445..0000000000
--- a/src/mbgl/shaders/collision_circle.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class collision_circle {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/debug.cpp b/src/mbgl/shaders/debug.cpp
deleted file mode 100644
index 9f3a9cbc37..0000000000
--- a/src/mbgl/shaders/debug.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#include <mbgl/shaders/debug.hpp>
-#include <mbgl/shaders/source.hpp>
-
-namespace mbgl {
-namespace shaders {
-
-const char* debug::name = "debug";
-const char* debug::vertexSource = source() + 12450;
-const char* debug::fragmentSource = source() + 12546;
-
-// Uncompressed source of debug.vertex.glsl:
-/*
-attribute vec2 a_pos;
-
-uniform mat4 u_matrix;
-
-void main() {
- gl_Position = u_matrix * vec4(a_pos, 0, 1);
-}
-
-*/
-
-// Uncompressed source of debug.fragment.glsl:
-/*
-uniform highp vec4 u_color;
-
-void main() {
- gl_FragColor = u_color;
-}
-
-*/
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/debug.hpp b/src/mbgl/shaders/debug.hpp
deleted file mode 100644
index 207c7bf075..0000000000
--- a/src/mbgl/shaders/debug.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class debug {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/extrusion_texture.hpp b/src/mbgl/shaders/extrusion_texture.hpp
deleted file mode 100644
index 05e54c5499..0000000000
--- a/src/mbgl/shaders/extrusion_texture.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class extrusion_texture {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill.hpp b/src/mbgl/shaders/fill.hpp
deleted file mode 100644
index 29fede7b55..0000000000
--- a/src/mbgl/shaders/fill.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class fill {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_extrusion.hpp b/src/mbgl/shaders/fill_extrusion.hpp
deleted file mode 100644
index 949ae57f12..0000000000
--- a/src/mbgl/shaders/fill_extrusion.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class fill_extrusion {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_extrusion_pattern.hpp b/src/mbgl/shaders/fill_extrusion_pattern.hpp
deleted file mode 100644
index e9ae001d4e..0000000000
--- a/src/mbgl/shaders/fill_extrusion_pattern.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class fill_extrusion_pattern {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_outline.hpp b/src/mbgl/shaders/fill_outline.hpp
deleted file mode 100644
index ef685e62fa..0000000000
--- a/src/mbgl/shaders/fill_outline.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class fill_outline {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_outline_pattern.hpp b/src/mbgl/shaders/fill_outline_pattern.hpp
deleted file mode 100644
index e1c7a173f4..0000000000
--- a/src/mbgl/shaders/fill_outline_pattern.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class fill_outline_pattern {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/fill_pattern.hpp b/src/mbgl/shaders/fill_pattern.hpp
deleted file mode 100644
index 4d09519ed8..0000000000
--- a/src/mbgl/shaders/fill_pattern.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class fill_pattern {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/heatmap.hpp b/src/mbgl/shaders/heatmap.hpp
deleted file mode 100644
index a3c64db942..0000000000
--- a/src/mbgl/shaders/heatmap.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class heatmap {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/heatmap_texture.hpp b/src/mbgl/shaders/heatmap_texture.hpp
deleted file mode 100644
index c51dc6b178..0000000000
--- a/src/mbgl/shaders/heatmap_texture.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class heatmap_texture {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/hillshade.hpp b/src/mbgl/shaders/hillshade.hpp
deleted file mode 100644
index a4a27cb595..0000000000
--- a/src/mbgl/shaders/hillshade.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class hillshade {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/hillshade_prepare.hpp b/src/mbgl/shaders/hillshade_prepare.hpp
deleted file mode 100644
index c38b4a0d19..0000000000
--- a/src/mbgl/shaders/hillshade_prepare.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class hillshade_prepare {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line.hpp b/src/mbgl/shaders/line.hpp
deleted file mode 100644
index c0d81e6202..0000000000
--- a/src/mbgl/shaders/line.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class line {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line_gradient.hpp b/src/mbgl/shaders/line_gradient.hpp
deleted file mode 100644
index 87a9d6d38c..0000000000
--- a/src/mbgl/shaders/line_gradient.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class line_gradient {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line_pattern.hpp b/src/mbgl/shaders/line_pattern.hpp
deleted file mode 100644
index 0394e83fe0..0000000000
--- a/src/mbgl/shaders/line_pattern.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class line_pattern {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/line_sdf.hpp b/src/mbgl/shaders/line_sdf.hpp
deleted file mode 100644
index 1d4b566f25..0000000000
--- a/src/mbgl/shaders/line_sdf.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class line_sdf {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/preludes.cpp b/src/mbgl/shaders/preludes.cpp
deleted file mode 100644
index a9a507742c..0000000000
--- a/src/mbgl/shaders/preludes.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#include <mbgl/shaders/preludes.hpp>
-#include <mbgl/shaders/source.hpp>
-
-namespace mbgl {
-namespace shaders {
-
-const char* vertexPrelude = source() + 0;
-const char* fragmentPrelude = source() + 1252;
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/preludes.hpp b/src/mbgl/shaders/preludes.hpp
deleted file mode 100644
index a3abc9001f..0000000000
--- a/src/mbgl/shaders/preludes.hpp
+++ /dev/null
@@ -1,12 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-extern const char* vertexPrelude;
-extern const char* fragmentPrelude;
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/raster.hpp b/src/mbgl/shaders/raster.hpp
deleted file mode 100644
index 791e2c8be0..0000000000
--- a/src/mbgl/shaders/raster.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class raster {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/source.cpp b/src/mbgl/shaders/source.cpp
deleted file mode 100644
index bc105946ba..0000000000
--- a/src/mbgl/shaders/source.cpp
+++ /dev/null
@@ -1,917 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#include <mbgl/shaders/source.hpp>
-#include <mbgl/util/compression.hpp>
-
-#include <cstdint>
-
-namespace mbgl {
-namespace shaders {
-
-const char* source() {
- static const uint8_t compressed[] = {
- 0x78, 0xda, 0xed, 0x3d, 0xfd, 0x6f, 0xe3, 0x36,
- 0xb2, 0xf7, 0x73, 0xfe, 0x0a, 0x17, 0x05, 0x0e,
- 0x92, 0x2c, 0x5b, 0xb6, 0x93, 0xec, 0x97, 0x4e,
- 0xaf, 0x08, 0x76, 0xb3, 0x7d, 0x01, 0xda, 0xdd,
- 0x60, 0xd3, 0xf6, 0x15, 0x57, 0x2c, 0x0c, 0xc9,
- 0x56, 0x6c, 0xdf, 0xd9, 0x96, 0x9f, 0xad, 0x24,
- 0x76, 0x0e, 0xf9, 0xdf, 0x1f, 0x87, 0xdf, 0xa4,
- 0x48, 0x59, 0x76, 0x12, 0xe7, 0xe3, 0x19, 0x45,
- 0x37, 0x16, 0x39, 0x1c, 0x0e, 0xc9, 0xe1, 0x70,
- 0x66, 0x48, 0x0e, 0x7f, 0x1c, 0x5d, 0xf6, 0xd3,
- 0xcb, 0xda, 0xcf, 0xbf, 0x74, 0x4f, 0x2f, 0x0e,
- 0x66, 0xf3, 0xb4, 0x37, 0x5a, 0x8c, 0xb2, 0x69,
- 0x6d, 0x38, 0x1a, 0x0c, 0x67, 0xb5, 0xcb, 0x71,
- 0x16, 0xe7, 0xe1, 0xc1, 0x8f, 0xe9, 0x78, 0x91,
- 0x1e, 0xfc, 0x38, 0xba, 0xac, 0xfd, 0x80, 0x60,
- 0x47, 0xd3, 0xb4, 0xef, 0x8c, 0xb3, 0x9b, 0x99,
- 0x7b, 0xf0, 0x23, 0xf9, 0xac, 0xc1, 0x17, 0x82,
- 0x9a, 0xf6, 0x47, 0x97, 0x2a, 0xd8, 0x24, 0xed,
- 0x8f, 0xae, 0x26, 0x12, 0x24, 0x4d, 0x30, 0x02,
- 0xe3, 0x3a, 0x05, 0x28, 0xfe, 0xe4, 0x80, 0xe4,
- 0xcf, 0x75, 0xda, 0xeb, 0xd4, 0xae, 0xa6, 0xb3,
- 0xb8, 0xf7, 0xef, 0x2e, 0x26, 0xce, 0xe9, 0x65,
- 0xd3, 0x45, 0x4e, 0x08, 0xad, 0x41, 0x72, 0xda,
- 0xff, 0x23, 0x1e, 0x5f, 0xa5, 0x6e, 0xed, 0x3f,
- 0xa3, 0x29, 0x4b, 0x39, 0x9b, 0xe6, 0x38, 0x31,
- 0x42, 0x49, 0x8e, 0x0c, 0x14, 0x02, 0xcc, 0x75,
- 0x2b, 0x52, 0xc1, 0x82, 0xce, 0xf1, 0x9b, 0x70,
- 0x9e, 0xe6, 0x57, 0xf3, 0x69, 0x0d, 0x2a, 0x74,
- 0xae, 0x5b, 0xbe, 0x0a, 0xd1, 0xb8, 0x6e, 0x79,
- 0x08, 0xc8, 0x0d, 0xef, 0x64, 0x82, 0x32, 0xf4,
- 0xef, 0x28, 0x5f, 0x19, 0x48, 0xfa, 0x4a, 0x72,
- 0x28, 0x51, 0xe8, 0x7f, 0x9a, 0x20, 0x11, 0xc4,
- 0x40, 0x82, 0x8e, 0x52, 0x35, 0x69, 0xa4, 0x28,
- 0xe1, 0x06, 0xed, 0xce, 0xdb, 0x66, 0xcb, 0x9f,
- 0x64, 0x7d, 0xb5, 0xa0, 0xdf, 0x69, 0xb6, 0x5c,
- 0x42, 0xd0, 0x51, 0xad, 0x9f, 0xf6, 0xb2, 0x7e,
- 0xda, 0xed, 0x65, 0xe3, 0x6c, 0x4e, 0xc9, 0xc1,
- 0x84, 0xa6, 0x53, 0x48, 0xef, 0x7f, 0x84, 0x74,
- 0x44, 0x8c, 0xa8, 0xe8, 0xc8, 0x51, 0x3a, 0x55,
- 0x86, 0xfb, 0xab, 0xf5, 0x1d, 0x11, 0x75, 0x7c,
- 0x8c, 0x2a, 0xb5, 0xc3, 0xb4, 0x19, 0xcc, 0x01,
- 0x22, 0x81, 0xb4, 0x9c, 0x02, 0x4f, 0x46, 0xcb,
- 0x2e, 0x6e, 0x89, 0x44, 0x86, 0x34, 0x04, 0xbe,
- 0xdc, 0x59, 0xb9, 0xa0, 0x09, 0x15, 0x93, 0x47,
- 0x0a, 0x11, 0xe1, 0xcb, 0x9f, 0xed, 0xef, 0x7e,
- 0xce, 0x1a, 0x2b, 0x55, 0xa4, 0x35, 0xf8, 0x88,
- 0xd6, 0x84, 0x69, 0x5c, 0x14, 0xaa, 0xc2, 0x10,
- 0x93, 0xd1, 0x14, 0x67, 0x47, 0x4a, 0x9f, 0x61,
- 0x8a, 0xe5, 0xc2, 0x82, 0x00, 0xfa, 0x8d, 0x5a,
- 0xec, 0x86, 0x04, 0x43, 0xbc, 0xac, 0x84, 0xa1,
- 0xa3, 0x61, 0x38, 0x04, 0x0c, 0x52, 0x73, 0x19,
- 0x25, 0x3e, 0x43, 0xc8, 0x9a, 0xd8, 0xa9, 0x0d,
- 0xd2, 0xbc, 0x3b, 0x8b, 0xf3, 0x3c, 0x9d, 0x4f,
- 0xbb, 0xb3, 0x6c, 0xa1, 0xf4, 0xe5, 0x68, 0x99,
- 0x8e, 0x51, 0x9d, 0xd9, 0xbc, 0xdf, 0xbd, 0x9a,
- 0xcd, 0xd2, 0xb9, 0x6f, 0xc9, 0x44, 0x73, 0x54,
- 0xcb, 0xa4, 0x08, 0x17, 0xa3, 0x5b, 0x6d, 0x18,
- 0x46, 0xe3, 0xb4, 0x7b, 0x35, 0x1d, 0xe5, 0x8b,
- 0x6e, 0x9e, 0x75, 0x31, 0x8e, 0x85, 0x52, 0x30,
- 0x5b, 0x90, 0xde, 0xeb, 0xd4, 0xb2, 0xcb, 0xcb,
- 0x45, 0x9a, 0x47, 0xc0, 0x8d, 0xec, 0xff, 0x22,
- 0x41, 0x72, 0x45, 0x2e, 0xcc, 0x9b, 0x66, 0xcb,
- 0x94, 0x56, 0x2f, 0x52, 0xab, 0x40, 0xb1, 0xbe,
- 0x72, 0x4c, 0xf4, 0x79, 0x88, 0xa8, 0x3a, 0xa1,
- 0xc6, 0x0d, 0xe4, 0x62, 0xe1, 0xdd, 0xc1, 0xdf,
- 0x7e, 0x34, 0xcb, 0x38, 0x2a, 0x8b, 0x9e, 0x9f,
- 0x94, 0xfb, 0x1b, 0xa2, 0x7f, 0x3e, 0x4a, 0xae,
- 0xf2, 0x94, 0x74, 0x78, 0x0c, 0x83, 0x1e, 0xa2,
- 0x16, 0x5f, 0x66, 0xf3, 0x09, 0xe2, 0xb7, 0x1c,
- 0x31, 0x7d, 0x17, 0xfd, 0x99, 0x8f, 0x96, 0xe1,
- 0x75, 0x36, 0xea, 0xa3, 0xa4, 0xd1, 0xd4, 0x41,
- 0x63, 0x32, 0x18, 0x77, 0xcf, 0xb3, 0xc5, 0x28,
- 0x47, 0xad, 0x8b, 0x18, 0x84, 0x87, 0xa7, 0x37,
- 0x46, 0xe1, 0xb7, 0xfc, 0xb6, 0x0b, 0x1d, 0xc2,
- 0x50, 0x91, 0xf9, 0x43, 0x38, 0x96, 0xe3, 0xa7,
- 0xd3, 0x97, 0x89, 0xb3, 0x42, 0x0d, 0x9f, 0xe7,
- 0xf1, 0x80, 0x30, 0x3c, 0x2d, 0xe9, 0x09, 0xd8,
- 0x03, 0xda, 0xd5, 0x5f, 0xff, 0x38, 0xfd, 0xf6,
- 0xe9, 0xdb, 0xc9, 0xff, 0x74, 0xcf, 0xbe, 0x5c,
- 0x9c, 0x9f, 0x7e, 0xfc, 0xed, 0xeb, 0xb7, 0x03,
- 0xa5, 0x24, 0xa6, 0xa9, 0x8d, 0x24, 0x56, 0xc8,
- 0xda, 0x2c, 0x51, 0xa5, 0x36, 0x50, 0xa2, 0x15,
- 0x49, 0xda, 0xae, 0x3c, 0xb6, 0xdd, 0xb8, 0x34,
- 0x37, 0x29, 0xe4, 0xea, 0xac, 0x59, 0x06, 0x80,
- 0x39, 0xb0, 0xd0, 0x29, 0x8b, 0x5e, 0x3c, 0x96,
- 0xeb, 0x55, 0xd3, 0x93, 0x42, 0xba, 0x89, 0x57,
- 0x43, 0xe3, 0xf0, 0x5e, 0xc7, 0xf3, 0xd5, 0x68,
- 0x3a, 0x20, 0x49, 0xd7, 0x90, 0x84, 0xaa, 0x31,
- 0x24, 0x26, 0x5b, 0x0c, 0x39, 0x45, 0x17, 0xe9,
- 0x72, 0xc4, 0xd0, 0x25, 0xbe, 0xa1, 0x17, 0x7c,
- 0xde, 0x6e, 0x4f, 0x1f, 0x00, 0xdf, 0xdc, 0x44,
- 0x1f, 0x57, 0xce, 0x2a, 0x4e, 0xee, 0x5d, 0x71,
- 0xa2, 0x57, 0x9c, 0xac, 0xa9, 0x58, 0x65, 0x72,
- 0x99, 0x35, 0xf2, 0xb1, 0x9d, 0x6d, 0x92, 0xb9,
- 0x3d, 0x0f, 0x95, 0x4b, 0x4a, 0xca, 0x15, 0xf2,
- 0xf2, 0x74, 0x89, 0xe5, 0x8f, 0xce, 0x11, 0x13,
- 0x89, 0xa7, 0xf5, 0xa9, 0xc6, 0xd2, 0x17, 0xf1,
- 0x64, 0x36, 0x4e, 0xe7, 0x9d, 0x4f, 0x28, 0x6f,
- 0x34, 0x89, 0x07, 0xe9, 0xb6, 0xdc, 0x81, 0x73,
- 0x30, 0x06, 0xdc, 0xab, 0x58, 0x50, 0xd3, 0xd2,
- 0x3e, 0x9e, 0x7e, 0x4c, 0xa0, 0x47, 0xb0, 0x02,
- 0xa9, 0x9d, 0x14, 0xf0, 0x36, 0xf8, 0x6a, 0x0f,
- 0x49, 0x19, 0x02, 0x35, 0x5d, 0x0c, 0xb1, 0x40,
- 0x68, 0x47, 0x28, 0x1f, 0xc9, 0xea, 0xb4, 0xf3,
- 0xc9, 0xa1, 0x0d, 0xf0, 0x09, 0x3b, 0xa8, 0xe4,
- 0x20, 0xc6, 0x10, 0x04, 0x25, 0x2a, 0x41, 0x9d,
- 0x22, 0x45, 0x89, 0x8d, 0xa2, 0xc4, 0x48, 0x51,
- 0x37, 0x91, 0x69, 0xea, 0x98, 0x69, 0xea, 0xb8,
- 0xa1, 0x22, 0x98, 0xa0, 0x52, 0xd2, 0x06, 0x9f,
- 0x14, 0xf3, 0xf1, 0x88, 0xb9, 0xbb, 0x91, 0x71,
- 0x49, 0x96, 0x8d, 0xb9, 0x30, 0xb9, 0x19, 0xe5,
- 0x43, 0x04, 0x30, 0xd3, 0x73, 0x67, 0xa3, 0xbc,
- 0x37, 0x2c, 0xe6, 0x52, 0xb6, 0x43, 0x8d, 0x9c,
- 0x5f, 0x21, 0x2d, 0x04, 0xe3, 0xe0, 0x99, 0x92,
- 0x3a, 0x0f, 0xf2, 0x3e, 0x9e, 0xa4, 0xf3, 0x18,
- 0x26, 0x4d, 0x2f, 0x9d, 0xa2, 0x4e, 0xec, 0xf6,
- 0x47, 0x8b, 0x3c, 0x9e, 0xf6, 0x52, 0xb3, 0x64,
- 0x82, 0x06, 0x4f, 0xa1, 0xc5, 0xff, 0x7d, 0x72,
- 0xd1, 0xfd, 0xfd, 0xcb, 0xd9, 0xe7, 0xaf, 0xdf,
- 0x7e, 0xed, 0x52, 0xd9, 0x7f, 0xc0, 0x6a, 0x80,
- 0xc5, 0x91, 0x56, 0x10, 0x93, 0xac, 0x6e, 0x2e,
- 0xa1, 0x23, 0x04, 0xe0, 0xe1, 0xa0, 0xd9, 0x9c,
- 0x7b, 0xa5, 0x2c, 0x92, 0x41, 0x57, 0x62, 0x95,
- 0x76, 0x65, 0xa9, 0x92, 0x16, 0x56, 0x03, 0x61,
- 0xf3, 0x18, 0xad, 0xbe, 0x0b, 0x33, 0x65, 0x24,
- 0x4f, 0x21, 0x8d, 0xa9, 0x01, 0xb4, 0xc5, 0x04,
- 0x82, 0x53, 0xa7, 0x28, 0x09, 0x35, 0x9a, 0xa9,
- 0x51, 0xa8, 0xc2, 0x30, 0x02, 0xd6, 0x50, 0x99,
- 0x8c, 0xaf, 0x2c, 0xbd, 0x07, 0x39, 0x0a, 0x85,
- 0x38, 0x97, 0x92, 0x07, 0x99, 0x9c, 0x38, 0xa9,
- 0x18, 0x4e, 0xd7, 0xe8, 0x92, 0xb2, 0x49, 0x7d,
- 0x6b, 0x48, 0xa2, 0x1c, 0x6e, 0xa6, 0x8a, 0x66,
- 0x5a, 0x09, 0xe3, 0xea, 0x42, 0x91, 0x36, 0x31,
- 0x73, 0xec, 0xe4, 0x49, 0x30, 0x25, 0x14, 0x2e,
- 0xf2, 0x79, 0xf6, 0xef, 0xb4, 0x8c, 0xf5, 0x64,
- 0x08, 0x3b, 0x07, 0xca, 0x50, 0x26, 0x46, 0x54,
- 0xf2, 0xcb, 0xf8, 0x51, 0x07, 0x5c, 0x4f, 0xfb,
- 0xcd, 0xa8, 0x9f, 0x0f, 0x4b, 0x69, 0xc7, 0x10,
- 0x65, 0x2c, 0x2a, 0xc3, 0x59, 0x18, 0x55, 0x01,
- 0x59, 0xc3, 0xae, 0x3a, 0xec, 0xfa, 0x36, 0x94,
- 0x32, 0x8a, 0x0a, 0x63, 0xe5, 0x17, 0x15, 0xcc,
- 0xc4, 0x36, 0x1a, 0x44, 0x19, 0xf7, 0x14, 0x41,
- 0x89, 0xbb, 0x40, 0x2c, 0x90, 0x87, 0x68, 0x81,
- 0xec, 0xc7, 0x79, 0x2c, 0xad, 0x8f, 0xf0, 0x0b,
- 0xad, 0x91, 0xa5, 0xe2, 0xad, 0x47, 0x14, 0x5d,
- 0xdd, 0xc4, 0xa4, 0x32, 0xcc, 0xe7, 0xa2, 0xce,
- 0x65, 0xe4, 0xe9, 0xd2, 0x2c, 0xda, 0x48, 0x66,
- 0x91, 0x3f, 0x91, 0x6e, 0x3b, 0x33, 0xa9, 0xe4,
- 0x0b, 0x01, 0xc6, 0x2b, 0x34, 0x09, 0xa8, 0x68,
- 0x13, 0x19, 0x04, 0xff, 0x18, 0x6a, 0x84, 0x64,
- 0x9f, 0x09, 0x23, 0x5e, 0x9b, 0x26, 0x71, 0xa2,
- 0x8d, 0xe4, 0x0a, 0xfd, 0x6b, 0xa8, 0x8c, 0xe6,
- 0xf8, 0x92, 0x98, 0x31, 0x55, 0xc9, 0x11, 0x6c,
- 0x23, 0x2e, 0xe4, 0x0f, 0xd3, 0x88, 0xca, 0xf9,
- 0xbe, 0x2e, 0x48, 0x4c, 0xe3, 0xab, 0x22, 0xdc,
- 0x5a, 0x14, 0xc8, 0x1f, 0x86, 0xae, 0x91, 0xb3,
- 0x7d, 0x5d, 0x46, 0x58, 0xb8, 0x40, 0x45, 0x79,
- 0x8f, 0x09, 0xae, 0x7e, 0xda, 0xa9, 0x13, 0xe3,
- 0xa7, 0xcf, 0x7e, 0xd3, 0x30, 0xea, 0x58, 0xad,
- 0xd3, 0x17, 0xfb, 0xac, 0x88, 0x42, 0x13, 0xe1,
- 0x0a, 0x41, 0x5d, 0x24, 0x76, 0x0d, 0xb8, 0xbb,
- 0x3c, 0xf4, 0x4f, 0x43, 0x68, 0x8d, 0xbd, 0xd1,
- 0xbc, 0x87, 0xf4, 0x26, 0xa2, 0xd3, 0x44, 0xa8,
- 0x2a, 0x3c, 0xac, 0x08, 0xd8, 0x6b, 0x35, 0x8f,
- 0xdd, 0x10, 0x19, 0xe1, 0x8e, 0xae, 0x3d, 0x31,
- 0x15, 0xb9, 0x97, 0xcd, 0xa7, 0x48, 0x0f, 0x9a,
- 0x31, 0x4b, 0x4a, 0x41, 0x45, 0x4b, 0xaa, 0x5a,
- 0x19, 0x2a, 0xa9, 0x15, 0xaa, 0x47, 0x94, 0x54,
- 0xcf, 0x21, 0x93, 0xaf, 0x2e, 0xf7, 0x3b, 0x68,
- 0x90, 0xaa, 0x6e, 0x76, 0x57, 0x83, 0x7e, 0xa1,
- 0x6e, 0xa8, 0xd9, 0x3c, 0xfb, 0x57, 0xda, 0xcb,
- 0xd3, 0x3e, 0x23, 0x5f, 0xb5, 0xe5, 0x14, 0x7a,
- 0x88, 0x4d, 0x77, 0xbf, 0xda, 0x3d, 0x47, 0xaf,
- 0xb1, 0x79, 0x13, 0x94, 0x68, 0x86, 0xc8, 0xa2,
- 0xb2, 0x5b, 0x9a, 0x1a, 0x29, 0xd4, 0xcd, 0x40,
- 0x9b, 0x57, 0x52, 0xac, 0xd8, 0x28, 0x4b, 0x4f,
- 0x4b, 0x38, 0x9a, 0xcb, 0xd5, 0xa6, 0x4d, 0x2d,
- 0x53, 0x78, 0x0d, 0x54, 0x6e, 0x51, 0x83, 0x5c,
- 0xfa, 0x26, 0xbc, 0xbb, 0x93, 0xd7, 0xc3, 0x69,
- 0x3e, 0x8a, 0xc7, 0xa3, 0x78, 0x81, 0xc5, 0x25,
- 0x62, 0xd6, 0xe0, 0xd3, 0xe9, 0x1f, 0x67, 0x1f,
- 0x4f, 0xbb, 0xe7, 0x67, 0x7f, 0x9e, 0xfe, 0xd2,
- 0xfd, 0x76, 0xf2, 0xdb, 0xd9, 0xd7, 0xc0, 0x58,
- 0x4b, 0x48, 0x16, 0x2c, 0x60, 0xfc, 0x43, 0x87,
- 0xd6, 0xd7, 0x5c, 0xfa, 0xec, 0x17, 0x9a, 0x6c,
- 0x32, 0x6a, 0x97, 0x3a, 0xba, 0xac, 0x2b, 0xd9,
- 0x63, 0xab, 0xdb, 0xbb, 0x51, 0x98, 0x1f, 0x59,
- 0xf3, 0xdd, 0x9d, 0xf2, 0xfa, 0x14, 0x4a, 0xe7,
- 0x53, 0xaa, 0x8a, 0x4f, 0xa0, 0xdf, 0x51, 0xdd,
- 0xce, 0x36, 0x21, 0xaa, 0x68, 0x6a, 0x56, 0x6e,
- 0xaf, 0xac, 0x75, 0x59, 0xf8, 0x78, 0xbd, 0x1e,
- 0x65, 0x67, 0xd2, 0xaa, 0x0a, 0xd1, 0x1a, 0x0e,
- 0xdc, 0x5c, 0x93, 0x59, 0xc3, 0x5e, 0x5b, 0xe9,
- 0x20, 0x6b, 0x19, 0xe7, 0xde, 0x7a, 0x03, 0x66,
- 0x0b, 0x24, 0xd4, 0x43, 0x82, 0x84, 0x49, 0xee,
- 0x71, 0x3a, 0x1d, 0x20, 0xca, 0xc8, 0x1f, 0x26,
- 0x5f, 0xdd, 0xd0, 0x2a, 0xba, 0x29, 0x9e, 0xdb,
- 0x50, 0xcb, 0x44, 0x0b, 0x28, 0xce, 0x6f, 0x4c,
- 0xe2, 0xa5, 0x43, 0x94, 0x66, 0x55, 0x2e, 0x2b,
- 0x23, 0xd5, 0xcd, 0xa3, 0xc5, 0x24, 0xcb, 0xf2,
- 0xe1, 0x22, 0x4f, 0x67, 0x4e, 0xab, 0xd9, 0xf2,
- 0x75, 0x44, 0xbe, 0x4a, 0x20, 0xd1, 0x6f, 0x08,
- 0x0e, 0xaa, 0x8b, 0x46, 0x72, 0x5f, 0xd6, 0xfe,
- 0x51, 0x43, 0x58, 0xda, 0xb5, 0x9f, 0xe0, 0x4f,
- 0xed, 0x43, 0x4d, 0xc2, 0x5e, 0xc0, 0x0c, 0xd5,
- 0x69, 0xd8, 0x09, 0xc3, 0x9a, 0x17, 0x20, 0xcd,
- 0x35, 0xc6, 0x5b, 0xe0, 0x71, 0x27, 0x99, 0xc7,
- 0xf4, 0x3e, 0x99, 0x63, 0x3c, 0x4d, 0x27, 0x94,
- 0x34, 0xe8, 0x7b, 0x38, 0xce, 0x1e, 0x7b, 0x4b,
- 0xc4, 0xbe, 0xcb, 0x21, 0xc8, 0xb1, 0xae, 0xb0,
- 0x37, 0x29, 0x9a, 0x4b, 0xb9, 0xd9, 0x1c, 0x26,
- 0x79, 0x66, 0x57, 0x44, 0x87, 0xe7, 0x6b, 0x4e,
- 0x08, 0x52, 0x98, 0x66, 0x19, 0x97, 0x02, 0x26,
- 0x19, 0x05, 0xcc, 0x63, 0x7b, 0xc4, 0x36, 0x5b,
- 0xc3, 0xcb, 0x1d, 0x9d, 0xac, 0x90, 0xd9, 0x5b,
- 0x69, 0x73, 0x8b, 0xb3, 0xf4, 0x11, 0xd2, 0xe1,
- 0xa6, 0x0b, 0xc8, 0xa9, 0xb2, 0x93, 0x42, 0xeb,
- 0x08, 0xc9, 0x0e, 0xa6, 0xdc, 0x7b, 0xff, 0x3c,
- 0xfd, 0xf6, 0x15, 0xab, 0x64, 0x78, 0xeb, 0x3a,
- 0x68, 0xbf, 0x69, 0xb6, 0x42, 0xbe, 0x31, 0xf7,
- 0xf3, 0xc9, 0xef, 0x17, 0x17, 0xdd, 0x8f, 0x5f,
- 0x4f, 0x3f, 0xa3, 0x99, 0x75, 0xf8, 0xfe, 0xdd,
- 0xfb, 0xa3, 0x4e, 0xe7, 0x5d, 0xeb, 0xa8, 0xd5,
- 0x3e, 0x3a, 0xec, 0xbc, 0x3d, 0xa8, 0xea, 0x45,
- 0xa0, 0x9c, 0x41, 0xfe, 0x18, 0xec, 0x27, 0x92,
- 0xe1, 0x0b, 0x36, 0xd1, 0x0c, 0x4d, 0x99, 0x11,
- 0xa2, 0xcd, 0x46, 0xdb, 0xbc, 0x44, 0x3d, 0xb8,
- 0x67, 0x81, 0x9e, 0x80, 0xc0, 0x23, 0xd8, 0xef,
- 0x56, 0xb2, 0xd6, 0x08, 0xc2, 0x8b, 0x68, 0xf1,
- 0xbf, 0xf3, 0xdc, 0x69, 0xa0, 0x64, 0x6f, 0x9c,
- 0x0d, 0x1c, 0x18, 0x8d, 0x80, 0x34, 0x30, 0x90,
- 0xc6, 0x38, 0x10, 0x03, 0xe1, 0xba, 0xc1, 0x21,
- 0x1a, 0x22, 0x3e, 0xa4, 0xd1, 0x85, 0xa7, 0x57,
- 0x1c, 0x6a, 0xb2, 0x9f, 0xe9, 0xf1, 0x84, 0xe8,
- 0x82, 0x0d, 0x46, 0x6c, 0xaf, 0x6c, 0x41, 0x26,
- 0xb9, 0x6e, 0x32, 0xd6, 0x29, 0x30, 0x11, 0x12,
- 0x46, 0x49, 0x02, 0xfc, 0xb6, 0x4e, 0x2c, 0x3c,
- 0xd0, 0xd4, 0x36, 0x03, 0x89, 0xb9, 0x60, 0x61,
- 0xfb, 0x8d, 0x19, 0xda, 0xaa, 0x36, 0xd1, 0xe6,
- 0x54, 0x61, 0x4c, 0x92, 0xdb, 0x8f, 0x1a, 0xa8,
- 0x1b, 0x3d, 0x34, 0x66, 0xf8, 0xff, 0x7e, 0x96,
- 0x3b, 0x9c, 0x2e, 0x9f, 0xff, 0x62, 0xfc, 0x70,
- 0x1d, 0x8f, 0x23, 0x82, 0xc6, 0x93, 0x9a, 0xe5,
- 0x09, 0xb2, 0xbd, 0x74, 0x39, 0x73, 0xfa, 0xda,
- 0xaa, 0x84, 0x07, 0x0e, 0x15, 0x85, 0xdd, 0x23,
- 0xf6, 0xbf, 0xbb, 0x83, 0x7d, 0xe8, 0x9b, 0x6c,
- 0x3e, 0xee, 0x57, 0xdd, 0xc9, 0xdd, 0x68, 0x49,
- 0xf2, 0x28, 0x72, 0x69, 0xeb, 0xb6, 0xb9, 0x8c,
- 0x62, 0xf2, 0x97, 0x7e, 0xaf, 0x40, 0x6c, 0x35,
- 0x48, 0xda, 0x4a, 0xde, 0xec, 0x2c, 0xee, 0x1c,
- 0x9a, 0x72, 0xc8, 0x92, 0x3c, 0x47, 0x29, 0xf6,
- 0x5d, 0xff, 0x35, 0x8d, 0xa0, 0x47, 0x45, 0x0c,
- 0xbb, 0x6a, 0x18, 0xd8, 0x6d, 0xce, 0xa5, 0xcd,
- 0x37, 0x05, 0x4a, 0x54, 0xee, 0x63, 0x29, 0x91,
- 0xfb, 0x30, 0xd7, 0xb4, 0x61, 0xbd, 0xd7, 0xc1,
- 0x82, 0x56, 0x15, 0xdd, 0xa1, 0x90, 0x18, 0x4f,
- 0x7b, 0xc3, 0x6c, 0x6e, 0xce, 0x63, 0x93, 0xa9,
- 0x88, 0x69, 0x1c, 0xf7, 0x52, 0x03, 0x1f, 0x2c,
- 0x86, 0xa3, 0xcb, 0x3c, 0xac, 0xc4, 0x49, 0xe5,
- 0x6b, 0xa0, 0xdd, 0x75, 0xc1, 0x46, 0x88, 0xce,
- 0x1e, 0x46, 0x8a, 0x9e, 0x3c, 0xcd, 0xf2, 0xdf,
- 0x17, 0x90, 0xae, 0xed, 0x0b, 0x4b, 0x3e, 0xa7,
- 0xf3, 0x0c, 0x4d, 0xb7, 0x02, 0x2b, 0x8a, 0xfe,
- 0x20, 0x9c, 0x28, 0xcf, 0x7b, 0x41, 0x15, 0x85,
- 0x62, 0x54, 0x45, 0x2a, 0xd2, 0xe6, 0x8d, 0x5a,
- 0x2c, 0x1b, 0x8f, 0xf1, 0xd9, 0x9b, 0xee, 0x2c,
- 0x9d, 0x2f, 0x66, 0x08, 0x6e, 0x74, 0x9d, 0x22,
- 0x56, 0x40, 0x53, 0x21, 0xea, 0x8d, 0x11, 0x47,
- 0xa0, 0xa1, 0x3b, 0xae, 0x83, 0xcc, 0x70, 0x4a,
- 0x5a, 0x1e, 0x58, 0x6b, 0x77, 0xb1, 0x8a, 0x7b,
- 0x04, 0xc3, 0xbf, 0x56, 0xef, 0x63, 0xa2, 0x42,
- 0xf7, 0xfc, 0x38, 0x7c, 0xb4, 0xeb, 0x74, 0x18,
- 0xd7, 0xf8, 0x7b, 0xbc, 0x92, 0x56, 0x85, 0x6c,
- 0x58, 0x22, 0xc6, 0x2a, 0x78, 0x0a, 0xd3, 0x31,
- 0x11, 0x89, 0x78, 0x0e, 0xdf, 0x67, 0x40, 0xa9,
- 0x36, 0x37, 0x9e, 0x0d, 0xe3, 0x08, 0xf5, 0x5f,
- 0x68, 0x94, 0x72, 0xb8, 0xd1, 0xac, 0xe1, 0x1e,
- 0x06, 0xc6, 0x1e, 0x37, 0x56, 0x55, 0xed, 0xbf,
- 0x6a, 0x30, 0x15, 0x4d, 0xfa, 0xaf, 0x54, 0x12,
- 0x4f, 0x57, 0x5a, 0xfa, 0x8e, 0x14, 0xa7, 0x24,
- 0x19, 0xcb, 0x7b, 0x51, 0xb3, 0x1d, 0xde, 0xed,
- 0x64, 0x16, 0x3e, 0xab, 0xe9, 0xa6, 0xa5, 0x6b,
- 0xdb, 0xca, 0xda, 0x22, 0x6d, 0x4e, 0x66, 0x4a,
- 0xca, 0x7e, 0xe6, 0x1a, 0x67, 0xae, 0x4c, 0xdf,
- 0x2c, 0xee, 0xf7, 0x51, 0x07, 0x76, 0x2f, 0xe3,
- 0x5e, 0x9e, 0x81, 0x9f, 0xb5, 0x53, 0x98, 0xd8,
- 0x9c, 0x7f, 0x0a, 0xd3, 0x59, 0x2d, 0xfc, 0x18,
- 0xb3, 0x9b, 0x8d, 0x7f, 0x14, 0x27, 0x0b, 0x21,
- 0x60, 0x9a, 0x2b, 0x57, 0x52, 0x66, 0x05, 0x7d,
- 0x2a, 0x3d, 0xa1, 0xc6, 0x0f, 0xd1, 0x06, 0xfe,
- 0xed, 0x52, 0xea, 0x25, 0xb5, 0x81, 0xaf, 0xfe,
- 0xd7, 0x08, 0x0a, 0x7b, 0xdf, 0x59, 0xdd, 0xcf,
- 0x83, 0xeb, 0x75, 0xf1, 0x26, 0xa9, 0x16, 0x1b,
- 0x0b, 0xb7, 0xde, 0xb6, 0x52, 0xad, 0x47, 0xc5,
- 0x59, 0x87, 0x1d, 0x71, 0x56, 0x08, 0xd6, 0x1c,
- 0x4a, 0x5a, 0x73, 0xdc, 0x52, 0xef, 0x93, 0xd0,
- 0x85, 0x3d, 0x13, 0xce, 0xd0, 0xe0, 0x51, 0x6b,
- 0x23, 0x8b, 0xd5, 0x08, 0x1c, 0x18, 0x46, 0x51,
- 0xb1, 0xe0, 0xd8, 0xa8, 0x94, 0x55, 0xc5, 0xf8,
- 0x07, 0x58, 0x2a, 0xed, 0x0f, 0x52, 0xcc, 0xb7,
- 0x46, 0xd7, 0x51, 0xa9, 0x7f, 0xab, 0xa1, 0x6c,
- 0x5e, 0x42, 0x4f, 0x37, 0x74, 0xcc, 0x56, 0x27,
- 0x13, 0xf1, 0x3e, 0xde, 0xed, 0xee, 0x30, 0xac,
- 0x61, 0xe3, 0x63, 0xed, 0xd1, 0xd7, 0x0d, 0xe9,
- 0x7b, 0x69, 0x27, 0xa9, 0x9e, 0xd3, 0x81, 0xa0,
- 0x82, 0x81, 0xfa, 0xe4, 0x67, 0x36, 0x76, 0x70,
- 0xac, 0xa1, 0x2a, 0x0f, 0x3f, 0xc9, 0xc6, 0xdf,
- 0x03, 0x6f, 0x9a, 0x3d, 0xf2, 0xc6, 0xcd, 0x46,
- 0xbb, 0x27, 0x06, 0x5b, 0xf4, 0x41, 0x8e, 0x7f,
- 0x6e, 0x20, 0x2b, 0x8c, 0xfe, 0x06, 0x83, 0x55,
- 0x6e, 0x1b, 0x9c, 0xab, 0x7c, 0x3c, 0x9a, 0x96,
- 0x1e, 0x95, 0x53, 0x40, 0xec, 0x32, 0x46, 0x01,
- 0x33, 0xc9, 0x1a, 0x15, 0xa0, 0x8c, 0xab, 0x0a,
- 0x90, 0xaf, 0x48, 0xf6, 0xa8, 0x1d, 0xae, 0x7c,
- 0x99, 0x64, 0x91, 0x02, 0xe0, 0x17, 0x06, 0xc3,
- 0x24, 0x9b, 0x34, 0x9c, 0x5b, 0xf5, 0xe6, 0x53,
- 0xcb, 0x2a, 0xcc, 0xb3, 0x91, 0xa3, 0xea, 0xe6,
- 0x81, 0xa2, 0x71, 0xd7, 0x61, 0xd2, 0x04, 0xe0,
- 0x15, 0x66, 0x5c, 0x6f, 0x15, 0x70, 0x6a, 0x9f,
- 0xef, 0x9c, 0x35, 0x1f, 0x8a, 0xbb, 0xd6, 0xb8,
- 0xda, 0x2c, 0xf2, 0x4c, 0x69, 0xfb, 0x36, 0x6c,
- 0x72, 0x4f, 0x19, 0x29, 0x34, 0x45, 0xa1, 0xc6,
- 0x22, 0xda, 0x1b, 0x5c, 0x0a, 0x66, 0x73, 0x64,
- 0x0f, 0xad, 0x98, 0x82, 0x48, 0x94, 0x77, 0x70,
- 0x5b, 0x6a, 0x1b, 0xa0, 0xa0, 0x7c, 0x03, 0x16,
- 0x5d, 0x13, 0x94, 0xc9, 0xf6, 0x1c, 0x5c, 0x9c,
- 0x09, 0xe1, 0xdd, 0x39, 0x78, 0x1f, 0xee, 0x06,
- 0x11, 0x3b, 0xbb, 0x81, 0x8d, 0x9b, 0xfb, 0xde,
- 0x00, 0xaa, 0xbe, 0x0c, 0x3c, 0xfb, 0x23, 0xdd,
- 0xec, 0x1e, 0xc7, 0xe5, 0x3c, 0x9b, 0x98, 0xc9,
- 0x94, 0x21, 0x8c, 0xb4, 0x1e, 0x69, 0x40, 0x2a,
- 0xc1, 0xf4, 0x22, 0xa8, 0x94, 0x6d, 0x22, 0x9a,
- 0x0e, 0x8f, 0x0e, 0x57, 0x81, 0xf0, 0x3c, 0x2b,
- 0x27, 0x1b, 0x19, 0x3a, 0xeb, 0x88, 0xce, 0xb3,
- 0x12, 0x92, 0x51, 0x66, 0x05, 0x82, 0x09, 0x54,
- 0xf5, 0xd5, 0xea, 0xa9, 0x8e, 0xe4, 0x2a, 0xc3,
- 0x2d, 0x7f, 0x44, 0x71, 0xd7, 0x34, 0x48, 0xd2,
- 0x5e, 0xb4, 0x3a, 0x8a, 0xd1, 0xb6, 0x83, 0x25,
- 0x7e, 0x46, 0x71, 0xb7, 0xd8, 0xc9, 0xc6, 0x0a,
- 0x11, 0xac, 0xb9, 0xab, 0xe5, 0x8b, 0xb4, 0x70,
- 0x69, 0x2a, 0x92, 0x69, 0x82, 0x43, 0x27, 0x0a,
- 0x04, 0xdc, 0x9e, 0x52, 0x21, 0x6e, 0x6f, 0x42,
- 0x1d, 0x47, 0x12, 0x89, 0x8a, 0x4c, 0x18, 0x94,
- 0x7c, 0x54, 0x9e, 0x3a, 0xc0, 0x40, 0xf0, 0x7c,
- 0xc3, 0xfe, 0x38, 0x2a, 0x64, 0x9a, 0xcb, 0x50,
- 0xdc, 0xe7, 0x55, 0x73, 0xd8, 0x59, 0x18, 0x20,
- 0xe1, 0x82, 0xfa, 0x94, 0x48, 0x0e, 0x3b, 0xde,
- 0x92, 0x67, 0x6a, 0xfa, 0x4d, 0x58, 0x6d, 0x79,
- 0x07, 0x5a, 0x91, 0x30, 0x9f, 0x8d, 0xe3, 0x15,
- 0xbd, 0x21, 0x48, 0xb6, 0x82, 0x1d, 0xb9, 0x0b,
- 0x9a, 0xcb, 0x86, 0xdc, 0x67, 0xcd, 0xa5, 0x1b,
- 0x08, 0xf2, 0x7d, 0x15, 0x74, 0xa5, 0x82, 0xae,
- 0x64, 0x50, 0x53, 0x7d, 0x49, 0xb1, 0xbe, 0x44,
- 0xad, 0x2f, 0x29, 0xa9, 0x2f, 0x51, 0xeb, 0x4b,
- 0x0a, 0xf5, 0xdd, 0xf3, 0x22, 0x25, 0xef, 0x70,
- 0x4f, 0xed, 0x24, 0x9f, 0x8f, 0xd1, 0x43, 0xdd,
- 0x9c, 0xa4, 0x03, 0xa8, 0xd6, 0x93, 0x58, 0xea,
- 0xd9, 0x42, 0x21, 0x5b, 0x73, 0xdb, 0xd1, 0xbe,
- 0x0f, 0xc9, 0x56, 0x87, 0xcb, 0xb8, 0x9f, 0x3e,
- 0xea, 0x92, 0xb7, 0xbb, 0x55, 0x6b, 0xd7, 0xcb,
- 0xcd, 0x63, 0xae, 0x15, 0x8f, 0x71, 0xec, 0x50,
- 0xe9, 0xac, 0x6d, 0x04, 0x7a, 0x69, 0x6f, 0xbc,
- 0x38, 0x81, 0xbd, 0xd9, 0xa5, 0x5c, 0xcb, 0x95,
- 0xdc, 0x27, 0xba, 0x90, 0x6b, 0xb9, 0x8e, 0xfb,
- 0x60, 0x97, 0x71, 0x1f, 0xd9, 0xa8, 0x30, 0x5d,
- 0xef, 0x05, 0x41, 0x44, 0x3d, 0xff, 0xde, 0x0e,
- 0xe3, 0x18, 0x3c, 0x0f, 0x4b, 0x62, 0x6f, 0x36,
- 0xec, 0xcd, 0x86, 0xbd, 0xd9, 0xb0, 0x37, 0x1b,
- 0x2c, 0x66, 0xc3, 0x3f, 0xb3, 0x6c, 0x72, 0x7f,
- 0xd3, 0xe1, 0xb5, 0x5b, 0x05, 0x3b, 0x89, 0xc1,
- 0x52, 0x6a, 0x3a, 0xf0, 0x71, 0xda, 0x81, 0xf9,
- 0x50, 0xa8, 0x6b, 0xbd, 0x35, 0xa0, 0xe8, 0xfc,
- 0x0f, 0x11, 0xe4, 0x64, 0xaf, 0xfa, 0xef, 0x55,
- 0xff, 0xbd, 0xea, 0xff, 0xba, 0x54, 0xff, 0x8a,
- 0x8a, 0xfa, 0x6e, 0x54, 0xf4, 0x43, 0x94, 0x3a,
- 0x86, 0xb3, 0xe8, 0x6a, 0x6c, 0x34, 0x36, 0xa5,
- 0x78, 0xb6, 0xbc, 0x7f, 0xab, 0xc8, 0x12, 0x9c,
- 0x2b, 0x0e, 0xe7, 0xeb, 0x92, 0xf0, 0x3a, 0x9d,
- 0xe7, 0x23, 0x24, 0x61, 0xbb, 0x03, 0x38, 0x46,
- 0x93, 0x4e, 0xf3, 0x70, 0xfd, 0xf1, 0x48, 0x50,
- 0xfd, 0xa6, 0x08, 0x09, 0x2a, 0x95, 0x2a, 0x5b,
- 0xc1, 0x47, 0x48, 0x2e, 0xb2, 0xdd, 0x1d, 0xf3,
- 0xd5, 0xd9, 0xd8, 0x2c, 0xf2, 0x62, 0x9c, 0x63,
- 0xbf, 0x9b, 0x04, 0xb9, 0xe5, 0x77, 0x14, 0x18,
- 0x44, 0x89, 0xf4, 0x1a, 0x96, 0x5c, 0x8e, 0x1a,
- 0xae, 0xb9, 0x1c, 0x35, 0xac, 0x70, 0x4d, 0x62,
- 0x58, 0xe5, 0x4e, 0xcc, 0x7d, 0x8f, 0xd8, 0x54,
- 0x3f, 0x2b, 0x51, 0x45, 0x8d, 0xc6, 0xe3, 0x21,
- 0xb7, 0x02, 0x12, 0x4c, 0x31, 0x38, 0x50, 0xb2,
- 0xcf, 0x06, 0xc9, 0x78, 0x33, 0x88, 0x14, 0xdc,
- 0x60, 0x18, 0xe4, 0xc2, 0x43, 0xdb, 0xad, 0xa4,
- 0x21, 0xbb, 0x95, 0x34, 0x2c, 0xbb, 0x95, 0xc4,
- 0x8a, 0x6f, 0x32, 0x02, 0xc5, 0xb3, 0x1b, 0x0f,
- 0x78, 0x4c, 0x07, 0x4f, 0x4c, 0x32, 0x43, 0x22,
- 0x69, 0xaa, 0x20, 0xc1, 0x7c, 0x1b, 0xe2, 0x8e,
- 0x82, 0x2b, 0x9a, 0xe0, 0x1d, 0x80, 0x0f, 0x37,
- 0xa4, 0xf4, 0xb3, 0x44, 0xf2, 0xc9, 0x3c, 0x0b,
- 0x24, 0xa8, 0x25, 0xc1, 0xd1, 0x5c, 0xe2, 0x0b,
- 0x4c, 0x6b, 0xf5, 0xbc, 0x1c, 0x1f, 0x15, 0x6c,
- 0xd5, 0x7e, 0xa2, 0x5d, 0x53, 0xfb, 0x80, 0xc7,
- 0x07, 0xb4, 0x3f, 0xe9, 0x02, 0xe7, 0x35, 0x0e,
- 0x45, 0x8b, 0x7f, 0x36, 0xe7, 0x5e, 0xab, 0xd9,
- 0x69, 0x77, 0xde, 0xd4, 0xc9, 0xe7, 0x00, 0x7d,
- 0xbe, 0x6d, 0x1f, 0x77, 0xe8, 0x67, 0x82, 0x3e,
- 0x5b, 0x6f, 0x3b, 0x9d, 0x90, 0x4e, 0x6f, 0xf5,
- 0xd0, 0x22, 0x3f, 0x07, 0x4b, 0x18, 0x75, 0x92,
- 0x80, 0x18, 0xc1, 0x62, 0x87, 0xc3, 0x1d, 0xfa,
- 0xe2, 0x1f, 0x0c, 0x8a, 0xd1, 0xd4, 0x23, 0x19,
- 0x98, 0xbb, 0x5c, 0xe6, 0x70, 0x38, 0x34, 0x9b,
- 0xa2, 0xbe, 0x23, 0x07, 0x7a, 0xe1, 0xba, 0x0e,
- 0x69, 0x7f, 0xd0, 0x7e, 0x73, 0xf8, 0xee, 0x08,
- 0x02, 0xc0, 0x72, 0xa1, 0xe7, 0x8a, 0xea, 0xe5,
- 0x92, 0x20, 0xb6, 0x41, 0xd8, 0x36, 0x74, 0x01,
- 0xe8, 0x42, 0x54, 0x53, 0x92, 0x25, 0x3a, 0xa1,
- 0x5e, 0x84, 0x02, 0x8c, 0xbe, 0x84, 0x91, 0x84,
- 0x84, 0xa0, 0xc3, 0xb0, 0xaa, 0xfd, 0x10, 0xc1,
- 0xdd, 0x8e, 0xda, 0x7f, 0x24, 0x08, 0x2f, 0x62,
- 0x35, 0x16, 0x64, 0xaa, 0x5b, 0x77, 0x0c, 0xa9,
- 0x1e, 0x69, 0x9e, 0x93, 0xd7, 0x31, 0x1b, 0x78,
- 0xb3, 0xec, 0xc6, 0x21, 0xe3, 0x15, 0xb4, 0x8f,
- 0x5b, 0xf4, 0x24, 0xa8, 0x0f, 0x2d, 0x41, 0x83,
- 0x81, 0x3e, 0xde, 0xbf, 0xf3, 0xcd, 0x2d, 0x02,
- 0x5a, 0x71, 0xc8, 0xdd, 0x2e, 0x1d, 0xcc, 0x3a,
- 0xed, 0x39, 0x36, 0xb6, 0x32, 0x95, 0xf2, 0x72,
- 0xd2, 0x9c, 0x53, 0xf4, 0x50, 0xd7, 0xa1, 0x8c,
- 0x9d, 0x66, 0xbb, 0x74, 0x60, 0x29, 0xe2, 0x81,
- 0x8a, 0x78, 0x60, 0x47, 0x3c, 0x28, 0x47, 0x3c,
- 0xd0, 0x10, 0x27, 0x2a, 0xe2, 0xc4, 0x8e, 0x38,
- 0x29, 0x47, 0x9c, 0x50, 0xc4, 0xd2, 0x2d, 0x06,
- 0x65, 0x5d, 0x2a, 0xb9, 0x5d, 0x2b, 0xad, 0x5c,
- 0xcf, 0xd6, 0xe3, 0xa6, 0x2e, 0x35, 0xec, 0x54,
- 0xad, 0xd1, 0x1f, 0xb7, 0x7e, 0xa1, 0x7f, 0x44,
- 0x2d, 0xe3, 0x1e, 0x3a, 0x44, 0xf5, 0xed, 0x17,
- 0x18, 0x55, 0x5a, 0xef, 0xe0, 0x01, 0x14, 0x0e,
- 0x25, 0xb8, 0x1d, 0x2c, 0x63, 0xa6, 0x10, 0x1f,
- 0x06, 0x3d, 0x44, 0x0d, 0xf1, 0xf1, 0xe0, 0x6a,
- 0x88, 0x4c, 0xd6, 0x50, 0xbd, 0xa2, 0x2d, 0x15,
- 0x35, 0xeb, 0x27, 0x0a, 0x69, 0x95, 0x16, 0xc7,
- 0xbd, 0x37, 0xf3, 0x29, 0xbc, 0x99, 0x98, 0x4b,
- 0x37, 0x52, 0xbd, 0x34, 0x9e, 0xdc, 0x4c, 0xf3,
- 0xda, 0x5c, 0xdb, 0x2a, 0x70, 0x5a, 0xb4, 0x0d,
- 0x3f, 0xed, 0xdd, 0xa5, 0x2f, 0xe7, 0x94, 0x45,
- 0x99, 0x0a, 0x4b, 0x6f, 0x90, 0xf4, 0x07, 0x29,
- 0xbf, 0xb3, 0x25, 0x83, 0xbc, 0x7e, 0x3f, 0xeb,
- 0x43, 0xe8, 0xf0, 0x24, 0xe7, 0x36, 0xb2, 0xe8,
- 0xea, 0x6b, 0x75, 0xfc, 0x5b, 0x7e, 0xcc, 0x05,
- 0xbc, 0x34, 0x0c, 0x77, 0x04, 0x7b, 0x90, 0xb5,
- 0xbf, 0xff, 0xbd, 0xc6, 0x34, 0xd5, 0x08, 0x14,
- 0x55, 0x29, 0xe1, 0x16, 0x41, 0x10, 0x25, 0xfa,
- 0xe0, 0x27, 0xb2, 0x2e, 0x1f, 0x7c, 0x20, 0x2f,
- 0x3c, 0xc8, 0xe3, 0xe9, 0xdf, 0x7a, 0x9a, 0x92,
- 0xb1, 0x93, 0x23, 0x27, 0xbb, 0x39, 0x70, 0x42,
- 0x6b, 0x61, 0xaa, 0x83, 0xc5, 0x98, 0xa9, 0x68,
- 0x8d, 0x1c, 0x3e, 0x84, 0x35, 0x02, 0x57, 0x16,
- 0x5f, 0x8b, 0x09, 0xc2, 0xba, 0xb5, 0x39, 0x1f,
- 0x70, 0xad, 0xde, 0xa6, 0xcd, 0x63, 0xcc, 0x38,
- 0xac, 0x1c, 0x34, 0xc5, 0xa7, 0xbf, 0x0e, 0xdd,
- 0x82, 0x5e, 0x4f, 0xf3, 0xda, 0xe4, 0x69, 0x91,
- 0xdd, 0xbb, 0xf9, 0xb7, 0xd1, 0x3a, 0x1f, 0x57,
- 0x7d, 0xdc, 0x95, 0x0e, 0xf8, 0xba, 0xf7, 0x15,
- 0xf0, 0x40, 0xad, 0xd7, 0xa5, 0xac, 0xa3, 0x50,
- 0x4d, 0x2f, 0xda, 0xef, 0x46, 0xec, 0x77, 0x23,
- 0xb6, 0xde, 0x8d, 0xa0, 0x8f, 0x03, 0x2d, 0xe9,
- 0x73, 0x3d, 0xf6, 0x0d, 0x89, 0xc2, 0xbe, 0x05,
- 0x2d, 0xe1, 0x69, 0xf2, 0x6a, 0x1f, 0x8e, 0xc6,
- 0x78, 0x0c, 0xb4, 0x6a, 0xbc, 0x19, 0xa5, 0x9f,
- 0x6c, 0x41, 0x67, 0x1e, 0x2a, 0x60, 0x4c, 0xa5,
- 0x2e, 0xef, 0x8f, 0x26, 0xb0, 0x0c, 0x67, 0xd3,
- 0xb0, 0x5a, 0x64, 0x0b, 0x4a, 0xf4, 0x43, 0x8c,
- 0x89, 0x1c, 0xd6, 0x81, 0x04, 0xbc, 0x9a, 0x2d,
- 0x46, 0x63, 0x04, 0x0b, 0xc1, 0xcc, 0x64, 0xca,
- 0xe8, 0xc5, 0x71, 0x6c, 0x64, 0x38, 0x52, 0x06,
- 0xd2, 0xc9, 0x41, 0x1b, 0x0e, 0x94, 0x24, 0x76,
- 0x16, 0x58, 0x21, 0x35, 0x78, 0xd7, 0x7e, 0x8f,
- 0xa3, 0x77, 0x61, 0x24, 0x75, 0x5a, 0x51, 0xc9,
- 0xab, 0x4a, 0xda, 0xcb, 0x71, 0x4a, 0xe8, 0xaa,
- 0x2a, 0xba, 0x80, 0xbd, 0x9b, 0x75, 0xd6, 0xb9,
- 0xcd, 0x90, 0x70, 0x2e, 0x3c, 0xaf, 0x12, 0x2f,
- 0x71, 0x3a, 0xf9, 0x46, 0xca, 0xec, 0xe9, 0x38,
- 0xbd, 0x06, 0xfd, 0x73, 0xea, 0xd0, 0x48, 0xcf,
- 0x48, 0x08, 0xf8, 0x74, 0xd9, 0x19, 0xc5, 0x0b,
- 0x16, 0x52, 0x03, 0x87, 0xda, 0x2d, 0xf2, 0x15,
- 0x91, 0x60, 0x1e, 0x0e, 0x10, 0xc7, 0x1f, 0xa0,
- 0xc2, 0x81, 0x20, 0xe7, 0x75, 0xfc, 0x67, 0x40,
- 0x1f, 0xaf, 0xc2, 0x1f, 0x09, 0xf9, 0x20, 0xff,
- 0xba, 0x01, 0xd2, 0xf6, 0x91, 0x6a, 0x56, 0x78,
- 0x8f, 0xa5, 0x7c, 0xb0, 0xb0, 0xa6, 0x2f, 0x11,
- 0x0d, 0x7d, 0x52, 0xc7, 0x96, 0x42, 0x83, 0x16,
- 0x44, 0xa6, 0x0c, 0xff, 0xb9, 0xc2, 0xaa, 0x2f,
- 0x53, 0x9b, 0x13, 0x6b, 0xd9, 0x96, 0xad, 0x48,
- 0xcf, 0x5a, 0x64, 0x6d, 0x6d, 0xfd, 0x2a, 0x94,
- 0xb6, 0x94, 0x22, 0xa9, 0xa1, 0x88, 0x9c, 0x7f,
- 0x59, 0x81, 0x1a, 0x15, 0xe3, 0xa0, 0x0a, 0x11,
- 0x66, 0xfa, 0x87, 0x25, 0xbd, 0x65, 0x2e, 0x31,
- 0xaa, 0x40, 0x9e, 0xb9, 0x64, 0xba, 0x8c, 0x07,
- 0x83, 0x14, 0xc7, 0xdd, 0x80, 0x19, 0x0d, 0x2c,
- 0x5a, 0xfb, 0x47, 0xad, 0x83, 0x0d, 0xd0, 0x56,
- 0xf3, 0x08, 0x59, 0x9f, 0x3c, 0xf1, 0xa8, 0x79,
- 0x8c, 0x13, 0x0f, 0x8f, 0x51, 0x2a, 0xfa, 0x43,
- 0xcd, 0xec, 0x74, 0x3e, 0xba, 0xa6, 0xd6, 0x75,
- 0xaf, 0x7e, 0x89, 0xfe, 0x1b, 0xb9, 0x0d, 0x27,
- 0xae, 0xf7, 0xd1, 0x7f, 0x03, 0xd7, 0x77, 0x06,
- 0xf5, 0x21, 0xfa, 0x8f, 0xa4, 0x25, 0xe8, 0xbf,
- 0x9e, 0xeb, 0x06, 0x35, 0xb0, 0x2b, 0x50, 0x1d,
- 0xbe, 0x43, 0x90, 0x37, 0xf8, 0xf4, 0x80, 0x38,
- 0x13, 0x82, 0xa0, 0x7a, 0xfb, 0x7d, 0x13, 0xb1,
- 0x6c, 0xa7, 0x41, 0xc0, 0xf4, 0x50, 0x5c, 0xd8,
- 0x96, 0xc0, 0xc2, 0x07, 0x13, 0xd1, 0x5c, 0xc2,
- 0x5d, 0x00, 0x88, 0xf5, 0xe2, 0x93, 0xef, 0x15,
- 0xff, 0x66, 0xf1, 0xd7, 0x84, 0x39, 0xf6, 0x08,
- 0x2b, 0xdf, 0x13, 0x49, 0x5b, 0x22, 0x1c, 0x4d,
- 0xb2, 0xb1, 0x7c, 0xc1, 0x5b, 0x2f, 0xe1, 0xc6,
- 0xa8, 0xc2, 0x78, 0x2a, 0xad, 0x8d, 0x2c, 0x1d,
- 0x2b, 0xb4, 0xfa, 0x2e, 0xc3, 0x30, 0xee, 0x67,
- 0x37, 0x7a, 0x2a, 0x08, 0x5d, 0x23, 0x78, 0xdc,
- 0x83, 0x88, 0x30, 0x22, 0x08, 0xe0, 0xf9, 0x59,
- 0xed, 0xb0, 0xd9, 0x3e, 0x6a, 0x1f, 0xbf, 0xef,
- 0xbc, 0x39, 0x3e, 0x3c, 0x7e, 0xf7, 0xfe, 0xed,
- 0xfb, 0xc3, 0x03, 0x43, 0x80, 0x21, 0x30, 0xef,
- 0xad, 0xcb, 0xac, 0xcc, 0x91, 0x0e, 0x79, 0xf0,
- 0x0f, 0x99, 0x9d, 0x10, 0xdf, 0xd1, 0x95, 0x03,
- 0x3c, 0xe2, 0x15, 0xe3, 0x33, 0x09, 0xc8, 0xd3,
- 0xcb, 0x16, 0x38, 0xc6, 0x6c, 0x3c, 0x5d, 0x38,
- 0x8e, 0x68, 0xf2, 0x5f, 0xad, 0xef, 0x0d, 0xe9,
- 0xab, 0xfd, 0xdd, 0xf5, 0xb0, 0x25, 0x4d, 0xd5,
- 0x0a, 0xb7, 0xae, 0x66, 0x72, 0xcc, 0xe3, 0x6c,
- 0x96, 0x46, 0x48, 0xe2, 0x4e, 0x11, 0x74, 0xe7,
- 0xd8, 0xa3, 0x47, 0xc5, 0x31, 0x45, 0x6e, 0x20,
- 0xd5, 0xcb, 0xcf, 0x89, 0xe3, 0xd0, 0x37, 0x11,
- 0xe5, 0x5f, 0x62, 0xc3, 0xa3, 0x49, 0x86, 0x31,
- 0x50, 0x26, 0xf6, 0x1b, 0x34, 0xd7, 0x45, 0xd3,
- 0xee, 0xfc, 0x0c, 0xdf, 0x77, 0x61, 0x79, 0xdc,
- 0x57, 0x04, 0x5e, 0x9e, 0x0f, 0x72, 0x1b, 0xb9,
- 0x2d, 0x1e, 0xd1, 0xf1, 0xe2, 0xfe, 0xc0, 0xf8,
- 0x76, 0x34, 0xb9, 0xc2, 0xa1, 0x8f, 0x49, 0xfa,
- 0xaa, 0x7e, 0x7e, 0x16, 0x4a, 0xe6, 0x4e, 0xbb,
- 0xf9, 0xee, 0xed, 0x71, 0x43, 0xc4, 0x39, 0x6c,
- 0x37, 0xdf, 0x1e, 0xd3, 0x7c, 0x34, 0x49, 0xc9,
- 0x7b, 0xa5, 0x10, 0x4f, 0x89, 0x97, 0x22, 0x81,
- 0x2e, 0x2f, 0x70, 0xd3, 0x79, 0x31, 0xdc, 0x14,
- 0x90, 0x17, 0x68, 0x1c, 0xd0, 0x64, 0xc7, 0x5e,
- 0x6b, 0xdc, 0x3b, 0x64, 0x24, 0x02, 0x91, 0xca,
- 0x90, 0x92, 0x0c, 0xd7, 0x63, 0xdf, 0x10, 0x33,
- 0x18, 0x0a, 0x30, 0xb2, 0x31, 0xc3, 0xe0, 0xf1,
- 0x92, 0x2a, 0x64, 0x9b, 0xcc, 0x38, 0x93, 0x6e,
- 0x46, 0xe3, 0x81, 0x22, 0x29, 0xa0, 0x78, 0x91,
- 0x5f, 0xd4, 0xb3, 0x21, 0x9a, 0xd5, 0x29, 0x3a,
- 0x77, 0x80, 0x85, 0x49, 0x44, 0x19, 0xd0, 0xf1,
- 0x1d, 0x32, 0x36, 0x75, 0xda, 0x5f, 0x6e, 0x70,
- 0x7e, 0x86, 0x65, 0x89, 0xe0, 0x26, 0x12, 0xa2,
- 0x1a, 0x0a, 0xd1, 0x9a, 0xc9, 0xcb, 0x60, 0x64,
- 0x26, 0xf8, 0x12, 0xf3, 0xfb, 0x18, 0x08, 0xa9,
- 0x2a, 0x88, 0x93, 0x65, 0xe2, 0xcb, 0x89, 0x52,
- 0xe4, 0x90, 0xdc, 0x42, 0xc2, 0x8a, 0x52, 0xc5,
- 0xcd, 0xd8, 0xad, 0x4b, 0x9f, 0xf7, 0x13, 0x6e,
- 0x7c, 0x4a, 0x9e, 0x7c, 0xf9, 0xed, 0xec, 0xe4,
- 0x97, 0xb3, 0x93, 0x8b, 0xb3, 0x2f, 0x3f, 0xd7,
- 0x2c, 0x0f, 0x04, 0x20, 0x82, 0x39, 0x3c, 0x6e,
- 0x19, 0x0e, 0xfa, 0x7c, 0xfc, 0xee, 0xed, 0x61,
- 0xab, 0xfd, 0xe6, 0xa0, 0xb0, 0xc3, 0x07, 0x56,
- 0x13, 0x71, 0x58, 0x15, 0x77, 0xff, 0x70, 0x90,
- 0xf4, 0x72, 0x05, 0xb7, 0x18, 0xda, 0x17, 0xc2,
- 0x45, 0x69, 0xd2, 0x09, 0xb5, 0x50, 0x7f, 0xd7,
- 0x50, 0x13, 0x75, 0x94, 0x02, 0x2d, 0x15, 0xc7,
- 0x02, 0xea, 0x14, 0x22, 0x45, 0x0d, 0xe2, 0xc9,
- 0x24, 0x66, 0xa1, 0x9f, 0x0c, 0x01, 0x53, 0xc1,
- 0x9a, 0x9a, 0xa6, 0x8b, 0xec, 0x32, 0x9e, 0xbf,
- 0xb8, 0x30, 0x3a, 0xfb, 0xa7, 0xbe, 0xb6, 0x38,
- 0x66, 0x3b, 0x88, 0x67, 0x25, 0x4f, 0x65, 0xb1,
- 0xdc, 0xb2, 0xb8, 0xd5, 0x0c, 0x66, 0x5d, 0xe4,
- 0x6a, 0x19, 0xae, 0xac, 0xcb, 0xf0, 0xeb, 0xb2,
- 0x96, 0x1e, 0xc3, 0x79, 0xf6, 0x0e, 0xc3, 0xd9,
- 0xe5, 0x9d, 0xc2, 0x41, 0x4a, 0x48, 0x28, 0xe9,
- 0x90, 0xb5, 0xbd, 0x51, 0xa9, 0x2b, 0xd4, 0x7e,
- 0x78, 0x7e, 0x21, 0x97, 0x5e, 0xfb, 0x83, 0x55,
- 0x9c, 0xe9, 0xd5, 0x81, 0x61, 0xc9, 0x06, 0x42,
- 0x58, 0x96, 0x2f, 0xcf, 0x09, 0x4b, 0x08, 0x6f,
- 0x81, 0x66, 0x43, 0x9e, 0x97, 0x5b, 0x44, 0x5e,
- 0x7c, 0x36, 0xf4, 0x08, 0xce, 0xf0, 0xc5, 0x5c,
- 0x30, 0xf6, 0x07, 0x2d, 0xbd, 0x09, 0xbb, 0xab,
- 0x6d, 0xb0, 0xf5, 0x03, 0xeb, 0x84, 0xf2, 0x1e,
- 0x60, 0xcd, 0xd7, 0xf8, 0x5c, 0x09, 0x2f, 0x1a,
- 0xc5, 0xec, 0xc5, 0x88, 0x46, 0xbb, 0xf3, 0x0e,
- 0xa9, 0xf7, 0x6c, 0x8a, 0xf1, 0xed, 0x94, 0x88,
- 0x04, 0x36, 0x27, 0xef, 0x41, 0xe0, 0xa0, 0x95,
- 0xa0, 0xa8, 0x84, 0xd2, 0x12, 0x15, 0xf1, 0x58,
- 0xe2, 0x04, 0x08, 0x5c, 0x01, 0x6e, 0x9d, 0x7e,
- 0xdd, 0x78, 0x6f, 0x8e, 0x68, 0x3c, 0x74, 0xe1,
- 0x61, 0x95, 0x17, 0x6d, 0xf0, 0xdd, 0x2a, 0xb3,
- 0x97, 0x6f, 0x08, 0x4b, 0x30, 0xe0, 0xbf, 0xa5,
- 0xbf, 0xe9, 0x36, 0x64, 0xc8, 0xc7, 0x97, 0xfd,
- 0x00, 0xbd, 0x81, 0x19, 0xbb, 0xf1, 0xf8, 0x92,
- 0x64, 0x8a, 0x1c, 0x3a, 0x1a, 0x40, 0xbc, 0x47,
- 0x07, 0x84, 0x69, 0xb5, 0x90, 0xce, 0xb0, 0xd4,
- 0x1d, 0xf6, 0x8b, 0xeb, 0xc1, 0x8a, 0xce, 0x02,
- 0x56, 0x2a, 0x57, 0xee, 0xb2, 0xab, 0x5c, 0x29,
- 0xcb, 0xeb, 0xf5, 0x8a, 0x58, 0x3a, 0xf8, 0xc5,
- 0x0a, 0x50, 0x8c, 0xea, 0x8e, 0xa0, 0x8f, 0xea,
- 0xe6, 0xe4, 0x39, 0x0b, 0xb9, 0x22, 0x57, 0xed,
- 0x14, 0x7c, 0x49, 0x94, 0x54, 0xe7, 0x89, 0xd8,
- 0x99, 0x44, 0x83, 0xd0, 0xe4, 0x1a, 0x56, 0xa4,
- 0xa5, 0x01, 0xd4, 0xf2, 0x73, 0xe2, 0xbe, 0x44,
- 0x0a, 0xe9, 0x95, 0x56, 0x07, 0xe9, 0x95, 0x4e,
- 0x44, 0xfe, 0xea, 0xd5, 0x78, 0x6c, 0x53, 0x10,
- 0x29, 0xd3, 0x39, 0x04, 0xb2, 0x6e, 0x5c, 0xf9,
- 0x57, 0xf0, 0x6a, 0xbb, 0xf6, 0xa4, 0x17, 0x63,
- 0x2c, 0xd5, 0xb6, 0x04, 0xfa, 0x03, 0xaa, 0x5c,
- 0xb1, 0x3d, 0xd0, 0xb2, 0x33, 0xa6, 0xe2, 0x85,
- 0xf3, 0x8e, 0x52, 0x0c, 0xf7, 0x5f, 0xa1, 0x32,
- 0x63, 0xbc, 0x49, 0xfc, 0xa6, 0x16, 0xea, 0x32,
- 0x39, 0x18, 0x28, 0xbb, 0x67, 0x4b, 0x6e, 0xcb,
- 0x5a, 0x4b, 0x99, 0x8a, 0x14, 0x2a, 0x2d, 0x84,
- 0x0e, 0xf0, 0x4c, 0x7a, 0x22, 0xd8, 0xd2, 0x92,
- 0xba, 0x17, 0xad, 0xa7, 0x31, 0x58, 0x43, 0x50,
- 0xc8, 0xd4, 0x4a, 0xe2, 0x20, 0x21, 0x4c, 0xe1,
- 0x63, 0x2e, 0x7e, 0xba, 0xf0, 0x78, 0x2f, 0xe8,
- 0xbd, 0xaa, 0x72, 0x15, 0xdd, 0xac, 0xce, 0x1b,
- 0x15, 0xf7, 0xc7, 0x0d, 0xe1, 0xb7, 0x9b, 0x97,
- 0x93, 0x4c, 0x57, 0xd0, 0x49, 0xdb, 0x5d, 0x8f,
- 0xf5, 0x4d, 0x73, 0x11, 0x0a, 0x12, 0x3a, 0x11,
- 0x7e, 0xf7, 0xa7, 0x6e, 0xb6, 0xdd, 0xa0, 0x90,
- 0xdc, 0x47, 0xf2, 0xc5, 0x75, 0x62, 0x97, 0x4e,
- 0x50, 0x7f, 0x41, 0x75, 0x0d, 0x87, 0xa3, 0xcf,
- 0x1b, 0x18, 0xb1, 0xeb, 0x8b, 0x0a, 0x71, 0xe4,
- 0x54, 0x37, 0xc0, 0xe9, 0x16, 0xe3, 0xf5, 0x11,
- 0x42, 0x65, 0x71, 0xab, 0xf3, 0xd7, 0x93, 0x3f,
- 0xbb, 0xbf, 0x9c, 0x7d, 0x39, 0xed, 0x7e, 0x3a,
- 0xbb, 0xf8, 0xed, 0xe4, 0xcb, 0xc7, 0xd3, 0xda,
- 0x61, 0xe7, 0xed, 0x9b, 0xb7, 0x92, 0x5d, 0xba,
- 0xb7, 0x63, 0xab, 0xdb, 0xb1, 0x48, 0x72, 0x0e,
- 0xe6, 0xe9, 0xc2, 0x1a, 0xc3, 0x64, 0x6f, 0x31,
- 0xee, 0x2d, 0xc6, 0xd7, 0x6a, 0x31, 0xee, 0x6d,
- 0xb8, 0xbd, 0x0d, 0xf7, 0xcc, 0x6d, 0x38, 0x26,
- 0x9e, 0xab, 0x9a, 0x71, 0x41, 0x61, 0x75, 0xdc,
- 0x1b, 0x76, 0x7b, 0xc3, 0x6e, 0x6f, 0xd8, 0x3d,
- 0x91, 0x61, 0xf7, 0x82, 0x2c, 0xaf, 0xca, 0xfb,
- 0xc6, 0xdb, 0xdb, 0x64, 0xeb, 0x95, 0xd0, 0x2a,
- 0x27, 0x36, 0xf7, 0xa6, 0x97, 0x6e, 0x7a, 0x59,
- 0x9e, 0x37, 0xa3, 0x1b, 0xe5, 0xc0, 0xae, 0x6a,
- 0x37, 0xdb, 0x9f, 0x39, 0x7b, 0x1c, 0x8b, 0xad,
- 0x68, 0x5f, 0xb1, 0x1c, 0x65, 0xa5, 0xea, 0x5e,
- 0x7c, 0x3c, 0xf9, 0xe5, 0xb4, 0xd6, 0xd9, 0xc2,
- 0x92, 0x7b, 0x68, 0x7b, 0xcd, 0x6e, 0x91, 0x95,
- 0x5b, 0x74, 0xf7, 0xb1, 0xd7, 0xc4, 0xae, 0x62,
- 0xd9, 0x24, 0xda, 0x9b, 0x69, 0x0f, 0x67, 0xa6,
- 0x3d, 0x03, 0xab, 0xe8, 0xd9, 0x59, 0x8a, 0x3b,
- 0x36, 0xd3, 0xf6, 0x97, 0x50, 0x9f, 0xd1, 0x25,
- 0xd4, 0x57, 0x6e, 0x0e, 0x3f, 0xad, 0xf9, 0xf9,
- 0xdc, 0x8c, 0xf1, 0x5d, 0x99, 0xc3, 0xff, 0x6f,
- 0xae, 0x05, 0xdf, 0xdf, 0xe4, 0x67, 0x70, 0x9b,
- 0x6d, 0xde, 0x1a, 0x74, 0xa8, 0xbd, 0xcd, 0xbf,
- 0xb7, 0xf9, 0xf7, 0x36, 0xff, 0x43, 0xd8, 0xfc,
- 0x62, 0x2a, 0xc6, 0xb2, 0x82, 0x5e, 0xee, 0x0b,
- 0xd8, 0xe6, 0x72, 0xaa, 0x22, 0x6f, 0xf4, 0x10,
- 0x2e, 0x6b, 0x6d, 0xf2, 0xdd, 0x19, 0x1a, 0xaf,
- 0xe5, 0x6e, 0xe8, 0xcb, 0xdf, 0x29, 0x5f, 0xef,
- 0x2a, 0x79, 0x46, 0x97, 0x4c, 0x9f, 0xd0, 0x95,
- 0xb3, 0x0f, 0x71, 0xfc, 0xba, 0x1e, 0x3e, 0x91,
- 0xbb, 0x5a, 0x6e, 0x9f, 0xda, 0xe6, 0xe6, 0xd2,
- 0xe3, 0xbd, 0x16, 0xa8, 0xc1, 0x82, 0x35, 0xc0,
- 0x95, 0x09, 0x67, 0x62, 0xc0, 0x89, 0xa8, 0xf6,
- 0x68, 0x7f, 0x97, 0x61, 0x04, 0x8a, 0xc3, 0x17,
- 0xe5, 0x3f, 0x24, 0xd8, 0x96, 0xa8, 0x23, 0xc9,
- 0x55, 0x67, 0xbe, 0x40, 0x04, 0x6a, 0x3f, 0x37,
- 0x97, 0x2a, 0x7c, 0x52, 0x0e, 0x9f, 0xa8, 0xf0,
- 0xab, 0x2e, 0x7e, 0x31, 0xb9, 0xce, 0x7b, 0x02,
- 0x29, 0x38, 0xf4, 0x46, 0x17, 0xa7, 0x0f, 0xd3,
- 0xe4, 0x68, 0xb5, 0xae, 0xea, 0x1d, 0xfa, 0xec,
- 0x8b, 0xab, 0x13, 0xb4, 0x12, 0xc8, 0x93, 0x6d,
- 0x90, 0x27, 0x76, 0xe4, 0x89, 0x60, 0x0c, 0x1c,
- 0xf5, 0x64, 0xf3, 0x8b, 0xe7, 0x98, 0x83, 0x50,
- 0xaf, 0xfa, 0xa8, 0xe5, 0xae, 0x84, 0x2b, 0xd9,
- 0xe2, 0xda, 0x38, 0xc5, 0x95, 0x20, 0x5c, 0x89,
- 0xab, 0x78, 0x7c, 0x01, 0x97, 0xf1, 0xea, 0x38,
- 0xaa, 0xd4, 0x37, 0x67, 0x24, 0xae, 0xf9, 0xca,
- 0x38, 0xf1, 0x01, 0x3f, 0xe0, 0xfb, 0x13, 0x2f,
- 0xd8, 0x03, 0x5c, 0xe9, 0xc4, 0x0e, 0x1d, 0x2c,
- 0xf2, 0x6c, 0x75, 0x5c, 0x50, 0xf0, 0x50, 0xef,
- 0x77, 0x57, 0x52, 0xba, 0xa9, 0x54, 0x62, 0x29,
- 0x95, 0x3c, 0xd2, 0xe9, 0x20, 0x9a, 0x0a, 0x95,
- 0xc4, 0xa6, 0xc4, 0x64, 0x1b, 0xa5, 0x70, 0x7f,
- 0xdf, 0x65, 0x7f, 0x7a, 0x69, 0x7f, 0x7a, 0xa9,
- 0xdc, 0x2d, 0xce, 0x86, 0xcc, 0xe0, 0x33, 0x7b,
- 0x08, 0x97, 0x39, 0x76, 0x14, 0x95, 0x50, 0x29,
- 0xf2, 0xad, 0x7d, 0x25, 0x40, 0x4c, 0xfc, 0x25,
- 0xe5, 0x96, 0xf5, 0xa6, 0x0a, 0xb6, 0xbf, 0xbc,
- 0xb3, 0x3f, 0xf8, 0xf5, 0x4c, 0x0e, 0x7e, 0xed,
- 0xce, 0xb7, 0x2d, 0x4d, 0x45, 0xf1, 0xd3, 0x50,
- 0xb3, 0xc8, 0xf4, 0xd5, 0xf9, 0x69, 0x6a, 0xb2,
- 0x8c, 0xc9, 0x38, 0xc9, 0xf6, 0x2e, 0xe8, 0xbd,
- 0x0b, 0x7a, 0xef, 0x82, 0x7e, 0x85, 0x2e, 0x68,
- 0xac, 0xaa, 0x47, 0x54, 0x66, 0xf0, 0x79, 0xe9,
- 0xe9, 0xd6, 0x47, 0x73, 0x19, 0x48, 0x02, 0x85,
- 0x8f, 0x5f, 0x01, 0x6c, 0x55, 0xe7, 0x86, 0x89,
- 0x4b, 0xb1, 0x27, 0x6b, 0xb1, 0x27, 0xd5, 0xb0,
- 0x27, 0x12, 0x76, 0x88, 0x6e, 0x56, 0xcd, 0x4d,
- 0xbe, 0x3e, 0x34, 0xd7, 0xa2, 0x7f, 0x89, 0xbb,
- 0xb5, 0x18, 0x63, 0x09, 0x59, 0x6c, 0xcf, 0xcc,
- 0x0a, 0xda, 0xdf, 0xe2, 0x2a, 0x5f, 0x87, 0x77,
- 0xa7, 0x07, 0x3f, 0xae, 0x12, 0xfb, 0x12, 0x2f,
- 0x94, 0x19, 0x31, 0x94, 0x1c, 0x04, 0x28, 0xf6,
- 0x78, 0x69, 0x87, 0x6f, 0xa0, 0xae, 0xbc, 0x40,
- 0xff, 0x28, 0x12, 0x42, 0x90, 0xdb, 0x8d, 0x8d,
- 0xd1, 0x88, 0xb0, 0x28, 0x71, 0x9b, 0xb1, 0x06,
- 0x9c, 0x58, 0x81, 0x93, 0x02, 0x30, 0x76, 0xe5,
- 0xf1, 0x5a, 0x7c, 0x8e, 0xc2, 0xc7, 0x72, 0xce,
- 0x0d, 0x89, 0x63, 0x2e, 0x52, 0xde, 0x97, 0x3d,
- 0x6e, 0x08, 0xe9, 0x28, 0x4b, 0x68, 0x12, 0x50,
- 0xd8, 0x94, 0x43, 0xd1, 0x3e, 0xfe, 0xf1, 0xcf,
- 0x4a, 0x27, 0x2c, 0xf3, 0x31, 0x5a, 0x41, 0xe6,
- 0xf2, 0x63, 0x14, 0x5c, 0xe6, 0xe3, 0x15, 0xc5,
- 0x92, 0x99, 0x5c, 0x5d, 0x5e, 0xa6, 0xf3, 0xb2,
- 0x87, 0x67, 0x37, 0x0c, 0xc3, 0xd5, 0x32, 0xa4,
- 0xb5, 0xb7, 0x8d, 0xcd, 0xd5, 0x8a, 0x1c, 0xc7,
- 0x1c, 0xbb, 0xb0, 0x01, 0x27, 0x6f, 0x03, 0x95,
- 0xfe, 0x9a, 0x0b, 0x51, 0x86, 0x48, 0xc9, 0x76,
- 0x44, 0x42, 0xb9, 0xc1, 0x03, 0xe7, 0x72, 0x07,
- 0x40, 0xf8, 0x29, 0xd1, 0x55, 0x52, 0xe7, 0xca,
- 0x7b, 0xc9, 0xdd, 0xdc, 0x1a, 0xd3, 0xd2, 0xba,
- 0xd4, 0xb6, 0xec, 0x59, 0xed, 0xca, 0xdd, 0x54,
- 0x18, 0x9d, 0x39, 0xc4, 0x40, 0x42, 0xaa, 0xc4,
- 0x02, 0x22, 0x72, 0x97, 0x65, 0x83, 0xb0, 0x2c,
- 0x8e, 0x7c, 0x8c, 0xba, 0x0d, 0x87, 0x83, 0xd3,
- 0xdf, 0x37, 0x61, 0x10, 0xbd, 0x6c, 0x9a, 0xcf,
- 0xe3, 0x85, 0xe9, 0xfd, 0x13, 0x78, 0xa9, 0x64,
- 0x31, 0x1b, 0x4d, 0xbb, 0x37, 0x38, 0x0a, 0xaf,
- 0x76, 0xa4, 0x5c, 0x88, 0xe5, 0x56, 0x71, 0x62,
- 0xb6, 0x48, 0x50, 0xb1, 0xd6, 0x9a, 0x30, 0xb1,
- 0x6d, 0x02, 0xd6, 0x26, 0xd1, 0xb8, 0x09, 0xb2,
- 0x66, 0x4c, 0x54, 0x7f, 0x54, 0x05, 0x4d, 0x98,
- 0x0f, 0x92, 0x48, 0xfc, 0x0c, 0x18, 0x58, 0x78,
- 0xc7, 0x0b, 0xb5, 0xf5, 0x42, 0x6d, 0x51, 0xa8,
- 0x2d, 0x0a, 0xb5, 0xa1, 0x90, 0xe6, 0xef, 0x27,
- 0xd8, 0x7c, 0x1a, 0x05, 0x96, 0x8d, 0x3e, 0x7d,
- 0x54, 0xa9, 0x89, 0x64, 0x84, 0x14, 0xcd, 0x14,
- 0xba, 0x84, 0xe3, 0x05, 0xb4, 0x21, 0x7c, 0xe1,
- 0x68, 0xda, 0x10, 0xc9, 0x1c, 0x7d, 0xf8, 0x6a,
- 0x8f, 0x41, 0x84, 0x7f, 0xd7, 0xb7, 0xe4, 0xdd,
- 0x2e, 0x57, 0xd6, 0xbc, 0xd5, 0xed, 0x92, 0xc7,
- 0x45, 0x8b, 0xaf, 0x53, 0x24, 0x1d, 0xd2, 0x88,
- 0xbd, 0x40, 0xc4, 0x9e, 0x95, 0x62, 0xef, 0x49,
- 0xb9, 0xc1, 0x21, 0x84, 0xb1, 0x84, 0x08, 0xe1,
- 0x0e, 0x85, 0x6d, 0xa0, 0x2f, 0x08, 0xdf, 0x55,
- 0x1c, 0x7e, 0x20, 0x18, 0x2a, 0xc4, 0xb3, 0xc7,
- 0x2b, 0x0c, 0x3f, 0x99, 0x3e, 0x64, 0xe8, 0x81,
- 0xa1, 0xc0, 0xbe, 0x26, 0x0d, 0xd4, 0x59, 0xd1,
- 0x5f, 0x9b, 0xe0, 0x32, 0x44, 0xe8, 0xb7, 0x05,
- 0x0f, 0x54, 0xe1, 0x57, 0x48, 0xd1, 0x24, 0x2c,
- 0x96, 0x14, 0x24, 0x5e, 0x18, 0x23, 0xd2, 0xe7,
- 0xd5, 0xf8, 0xb8, 0xed, 0x74, 0xf8, 0x7c, 0x16,
- 0xe2, 0xeb, 0x7e, 0xf2, 0x17, 0xf5, 0xd2, 0x22,
- 0xa7, 0x53, 0xe6, 0xfc, 0x2c, 0x2a, 0x04, 0xdb,
- 0x0b, 0x8d, 0x5b, 0x26, 0xd4, 0x5a, 0x36, 0x6f,
- 0x99, 0x28, 0xa9, 0x87, 0x50, 0x82, 0xdb, 0x49,
- 0xaa, 0xcc, 0xe5, 0x5e, 0x47, 0x60, 0x4c, 0x5d,
- 0x08, 0x25, 0x59, 0x36, 0x06, 0x21, 0xb3, 0x20,
- 0x1b, 0x6d, 0x10, 0xe8, 0xb1, 0x8b, 0x89, 0x8d,
- 0x25, 0x49, 0xaf, 0x01, 0x5d, 0xa6, 0x31, 0x96,
- 0xa5, 0x05, 0x38, 0xf5, 0x05, 0x3e, 0x0c, 0x5b,
- 0x96, 0x69, 0xc9, 0xea, 0xc5, 0x13, 0xc4, 0x83,
- 0x60, 0xc8, 0x41, 0xd0, 0x35, 0x24, 0x99, 0xd9,
- 0x3b, 0x08, 0x16, 0xf8, 0xd9, 0x28, 0xef, 0x0d,
- 0x75, 0x5a, 0xe7, 0x59, 0x1e, 0xe7, 0x69, 0x77,
- 0xb1, 0x9a, 0x24, 0xd9, 0xd8, 0x52, 0x90, 0x84,
- 0x98, 0xd3, 0x76, 0x93, 0x14, 0x21, 0xde, 0x1b,
- 0xe2, 0x08, 0x8c, 0x2f, 0x60, 0xf7, 0x60, 0xcd,
- 0x06, 0x1a, 0x49, 0x1d, 0xc7, 0x49, 0x8a, 0x16,
- 0xae, 0x71, 0x3c, 0x4d, 0x2d, 0x10, 0x03, 0xf6,
- 0x7a, 0x83, 0x96, 0x2d, 0x38, 0x00, 0x44, 0xb0,
- 0x9e, 0x8c, 0x47, 0x80, 0x98, 0xcb, 0x93, 0x78,
- 0x16, 0x5a, 0x8e, 0x5c, 0x15, 0x4d, 0xbb, 0x82,
- 0x61, 0xa7, 0xb0, 0xe8, 0x33, 0x79, 0x79, 0x5c,
- 0xe8, 0x31, 0x91, 0x3c, 0x2b, 0xf9, 0x49, 0x13,
- 0xe6, 0x1d, 0x55, 0x73, 0xd9, 0x39, 0x15, 0xac,
- 0x79, 0x08, 0x0f, 0x20, 0x4b, 0x84, 0x0e, 0x61,
- 0xa9, 0x08, 0x54, 0xe6, 0xcb, 0x45, 0x3a, 0x98,
- 0x40, 0xb0, 0x41, 0xc4, 0x79, 0xe3, 0x34, 0x6a,
- 0x68, 0xf3, 0xfa, 0xaf, 0xce, 0x77, 0xa6, 0xa8,
- 0x42, 0x9f, 0xc2, 0x02, 0xf6, 0x83, 0x65, 0xfa,
- 0xc2, 0x3b, 0x23, 0x3f, 0xd8, 0x67, 0x2d, 0xea,
- 0x54, 0x4c, 0x05, 0x88, 0x41, 0x42, 0xd0, 0x5f,
- 0xad, 0xef, 0x3e, 0xfd, 0xd5, 0xfe, 0xee, 0xb3,
- 0x09, 0xec, 0x06, 0x38, 0x6e, 0x71, 0x78, 0x57,
- 0x83, 0x3e, 0xab, 0x41, 0x8d, 0xf7, 0xab, 0x90,
- 0x57, 0x56, 0x44, 0x5c, 0xd6, 0x94, 0xf5, 0x88,
- 0xa9, 0x54, 0xa1, 0xf8, 0xd4, 0x34, 0xd5, 0x57,
- 0x76, 0x9e, 0x8d, 0xa6, 0xf9, 0xba, 0x10, 0xda,
- 0x34, 0x12, 0x32, 0x97, 0x46, 0x48, 0x04, 0x0d,
- 0x33, 0x21, 0x8d, 0x22, 0x15, 0x5b, 0x53, 0x1d,
- 0x45, 0x06, 0x45, 0xa4, 0x4b, 0xa4, 0xcf, 0x91,
- 0xda, 0x4f, 0x07, 0x56, 0xc4, 0x41, 0x89, 0x08,
- 0xac, 0x7d, 0x38, 0x28, 0xc9, 0x0d, 0xac, 0x38,
- 0x15, 0xda, 0x24, 0x97, 0x16, 0x25, 0x8f, 0x98,
- 0x65, 0x60, 0xa7, 0x80, 0x0b, 0x53, 0xa5, 0x1d,
- 0x9b, 0x5e, 0xe0, 0x59, 0x0e, 0xa1, 0x27, 0xbd,
- 0xa8, 0x50, 0x9a, 0x9d, 0x8b, 0x42, 0x8a, 0x00,
- 0x3b, 0xff, 0x44, 0xe5, 0x44, 0xed, 0x27, 0xcc,
- 0xa5, 0x41, 0xe7, 0x08, 0x7b, 0x59, 0xf1, 0x48,
- 0x28, 0xac, 0x8e, 0xa5, 0x33, 0x91, 0xd5, 0xa0,
- 0xc9, 0xa3, 0x9a, 0x42, 0xc2, 0x5f, 0x8a, 0xf8,
- 0x66, 0xba, 0x22, 0x99, 0x5a, 0xe7, 0x6b, 0x07,
- 0x91, 0xc4, 0x5e, 0x6e, 0xe3, 0x90, 0xd0, 0xfc,
- 0x5d, 0x9e, 0x58, 0x1f, 0xaf, 0xe5, 0x2a, 0x28,
- 0x8c, 0x20, 0x86, 0x4c, 0x22, 0x53, 0x45, 0x00,
- 0x6f, 0x4c, 0xbf, 0x09, 0xf5, 0x66, 0xe0, 0xf8,
- 0xb1, 0x0e, 0x9c, 0x9d, 0xc2, 0x07, 0xb4, 0xd4,
- 0x85, 0xc6, 0x87, 0xe3, 0x57, 0x70, 0xc6, 0x2b,
- 0xbc, 0x93, 0xbb, 0x02, 0xcf, 0x76, 0xc4, 0xab,
- 0xd3, 0x08, 0x87, 0x29, 0x95, 0x65, 0x40, 0x5d,
- 0xc3, 0xaf, 0xf2, 0x27, 0x29, 0xd8, 0x43, 0xd2,
- 0x09, 0x07, 0x67, 0x2d, 0x2f, 0x08, 0x0e, 0xe4,
- 0x1a, 0xfb, 0xa4, 0x1d, 0x17, 0x61, 0xaf, 0x32,
- 0x47, 0xe3, 0x63, 0x3f, 0x3d, 0x27, 0xc7, 0xd7,
- 0x7f, 0xf5, 0x68, 0xa4, 0x5f, 0xd9, 0xf3, 0x0c,
- 0xb2, 0xd1, 0xb4, 0xba, 0xf0, 0x31, 0x91, 0x21,
- 0x51, 0x47, 0x2a, 0x81, 0x6a, 0x24, 0x3b, 0x4e,
- 0x5b, 0x7d, 0xa8, 0x43, 0x5a, 0x2b, 0x1c, 0xa8,
- 0x09, 0x37, 0x75, 0xad, 0x3d, 0x1e, 0xdf, 0xb8,
- 0x0a, 0x0e, 0x21, 0x5a, 0x2f, 0xe7, 0x4b, 0x29,
- 0xfe, 0xf4, 0x35, 0x95, 0xca, 0xe8, 0xdf, 0x40,
- 0x5a, 0xa0, 0x60, 0xf4, 0xe5, 0x25, 0x88, 0x2d,
- 0x27, 0xf4, 0xd3, 0x51, 0x75, 0x28, 0x1e, 0x9d,
- 0x5c, 0x68, 0x0a, 0x91, 0x9c, 0x8f, 0x84, 0x28,
- 0xb6, 0x29, 0x20, 0x0e, 0xaf, 0xa2, 0x4f, 0xd4,
- 0x3e, 0x34, 0x54, 0xfd, 0x42, 0x5d, 0xf8, 0xf8,
- 0xb3, 0x55, 0xe0, 0x26, 0x81, 0xd8, 0xd9, 0x0a,
- 0xd2, 0xd6, 0xf7, 0xba, 0x54, 0xd4, 0xb5, 0x3a,
- 0x6f, 0xa9, 0xa9, 0x14, 0x3e, 0x49, 0xa8, 0xa8,
- 0xcd, 0xd7, 0xf6, 0x7b, 0x3a, 0xd3, 0x64, 0xd5,
- 0x0b, 0x3b, 0x9a, 0x28, 0x80, 0xa7, 0xd5, 0x6b,
- 0x7d, 0x2f, 0x82, 0xfe, 0x26, 0xfe, 0x20, 0x97,
- 0x9c, 0xbb, 0xda, 0xab, 0xfc, 0x0f, 0xaf, 0xf2,
- 0xdb, 0x3c, 0xc5, 0xa3, 0xf1, 0xb8, 0xec, 0xe4,
- 0x92, 0xc8, 0xb7, 0x1f, 0x5f, 0x12, 0x30, 0xa6,
- 0x33, 0x4c, 0x52, 0x6e, 0x99, 0xf3, 0x5f, 0x05,
- 0x2b, 0x7b, 0xf9, 0x29, 0x1e, 0x67, 0x65, 0x14,
- 0x8b, 0x7c, 0x3b, 0xc5, 0x02, 0xc6, 0x44, 0xb1,
- 0x94, 0x5b, 0x46, 0xb1, 0x0a, 0xf6, 0xa2, 0x0f,
- 0x3b, 0xe1, 0xa6, 0x94, 0x9c, 0x9b, 0x11, 0xf9,
- 0xf6, 0x47, 0x59, 0x39, 0x88, 0xf1, 0x61, 0x56,
- 0x91, 0x5b, 0xfa, 0x30, 0x97, 0x02, 0xb6, 0x8e,
- 0x60, 0xfb, 0xb9, 0x36, 0x9e, 0x5d, 0x4e, 0xae,
- 0xed, 0x84, 0x9b, 0xc8, 0x5c, 0x4b, 0xac, 0xb2,
- 0x37, 0xf1, 0x1c, 0x6d, 0xc1, 0xc7, 0x34, 0xd9,
- 0x37, 0x75, 0x1f, 0x98, 0x4c, 0xfc, 0x6a, 0x36,
- 0x2b, 0x48, 0x61, 0xc5, 0xed, 0x7a, 0x48, 0x13,
- 0xdb, 0x95, 0xac, 0x55, 0x49, 0xca, 0x89, 0x9f,
- 0xa6, 0x23, 0x56, 0x22, 0xd7, 0x57, 0x65, 0x9f,
- 0xe9, 0xb0, 0x95, 0x8c, 0x6a, 0x2b, 0xf9, 0x25,
- 0x7e, 0x9a, 0x68, 0x11, 0xb9, 0xbe, 0x2a, 0xd5,
- 0x4c, 0xb4, 0xc8, 0xa8, 0x36, 0x97, 0x4c, 0x3b,
- 0x3f, 0x9b, 0x25, 0x09, 0x1c, 0xf1, 0xd3, 0xf4,
- 0x16, 0x2f, 0xcf, 0xf4, 0x55, 0x29, 0x64, 0x7c,
- 0x93, 0x57, 0xc2, 0xb4, 0x8d, 0x28, 0xe1, 0xbf,
- 0x6c, 0x84, 0xd0, 0x53, 0x71, 0x92, 0x74, 0xb1,
- 0x92, 0x41, 0xb7, 0x2e, 0x8b, 0x32, 0x62, 0xef,
- 0xd5, 0xd8, 0x7b, 0x35, 0xf6, 0x5e, 0x8d, 0xbd,
- 0x57, 0x63, 0xef, 0xd5, 0x78, 0x3d, 0x5e, 0x0d,
- 0x76, 0x22, 0x58, 0x9c, 0x79, 0x53, 0x4e, 0xc9,
- 0x11, 0x3e, 0x78, 0x56, 0x8e, 0x0f, 0xf1, 0x5a,
- 0xd2, 0x7c, 0x96, 0x8d, 0x63, 0x68, 0xfd, 0x3d,
- 0x3c, 0x21, 0x54, 0x3f, 0x23, 0x27, 0xdc, 0x50,
- 0xdb, 0x9a, 0x4b, 0xb8, 0x73, 0x85, 0xaf, 0x8e,
- 0x11, 0x25, 0x8d, 0x6c, 0x20, 0x4a, 0x1d, 0xe4,
- 0x93, 0x67, 0x40, 0x6d, 0xf5, 0x93, 0x60, 0x72,
- 0xf4, 0xf2, 0xd3, 0xc5, 0xa7, 0xcf, 0xdd, 0xf3,
- 0x3f, 0x6b, 0xef, 0xa4, 0xfb, 0x50, 0xa7, 0x9f,
- 0x7e, 0x3e, 0xed, 0xfe, 0x7c, 0xf2, 0xeb, 0xaf,
- 0x27, 0xa8, 0xb5, 0xed, 0xd6, 0xb1, 0xe1, 0x30,
- 0xcc, 0x41, 0x51, 0x6b, 0x86, 0xc5, 0xb8, 0x82,
- 0x1d, 0xbc, 0x5b, 0x1b, 0x76, 0x87, 0xf6, 0xe7,
- 0xae, 0x4c, 0xc8, 0x9d, 0xda, 0x7f, 0x8f, 0x60,
- 0xbe, 0x99, 0xbc, 0x79, 0x66, 0x93, 0x47, 0x3e,
- 0x6d, 0x65, 0xb1, 0xd2, 0xee, 0x61, 0xc8, 0x94,
- 0x72, 0xe9, 0x66, 0x76, 0x48, 0xb9, 0x19, 0xb2,
- 0x91, 0x19, 0xf1, 0x18, 0xa7, 0xef, 0x24, 0xe6,
- 0xd9, 0x4c, 0x9f, 0x2f, 0xe3, 0x8c, 0xcd, 0x54,
- 0x72, 0x10, 0xcf, 0x74, 0x78, 0x40, 0xb1, 0x2e,
- 0x8a, 0x74, 0x3a, 0x4c, 0xfc, 0xb2, 0x3a, 0xd6,
- 0x07, 0x59, 0xe2, 0x4a, 0x96, 0xcc, 0xac, 0xf1,
- 0x34, 0x53, 0xe8, 0xd8, 0x15, 0x75, 0x1a, 0x11,
- 0xb4, 0x81, 0x8c, 0x84, 0x34, 0xa4, 0x32, 0xfb,
- 0x61, 0xe2, 0x22, 0x21, 0x0a, 0x03, 0x87, 0xe3,
- 0xf7, 0x14, 0xd6, 0x74, 0x43, 0xf9, 0x4c, 0xe5,
- 0xd5, 0xe5, 0x65, 0xe4, 0x60, 0x55, 0xb9, 0x81,
- 0xef, 0x2d, 0x50, 0xb5, 0x99, 0x2b, 0xe2, 0xd0,
- 0x3f, 0xec, 0x30, 0x4e, 0x24, 0xb1, 0x00, 0xa9,
- 0xce, 0xe1, 0xdd, 0xe7, 0xb5, 0x9b, 0xed, 0xf7,
- 0x01, 0x11, 0xce, 0x75, 0x41, 0x85, 0x5b, 0x42,
- 0x06, 0xa9, 0x1b, 0x6a, 0x16, 0xa3, 0x19, 0x88,
- 0x05, 0x95, 0x22, 0x0b, 0xef, 0x24, 0x72, 0xf1,
- 0x91, 0x40, 0x93, 0xbf, 0x18, 0xbc, 0xc5, 0xcd,
- 0xb8, 0xd8, 0x21, 0xa4, 0xae, 0x7e, 0x84, 0x3f,
- 0x3c, 0x79, 0x82, 0x2a, 0x6a, 0x0e, 0xf6, 0x55,
- 0x4b, 0x87, 0x08, 0x81, 0xb4, 0x86, 0x8c, 0xc0,
- 0x87, 0x94, 0xba, 0x92, 0x52, 0xf1, 0xc4, 0xa0,
- 0xa7, 0xae, 0x64, 0xf7, 0xf2, 0x65, 0xff, 0x1f,
- 0x03, 0x90, 0xfe, 0x1c
- };
- static std::string decompressed = util::decompress(std::string(reinterpret_cast<const char*>(compressed), sizeof(compressed)));
- return decompressed.c_str();
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/symbol_icon.hpp b/src/mbgl/shaders/symbol_icon.hpp
deleted file mode 100644
index eccf17602d..0000000000
--- a/src/mbgl/shaders/symbol_icon.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class symbol_icon {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl
diff --git a/src/mbgl/shaders/symbol_sdf.hpp b/src/mbgl/shaders/symbol_sdf.hpp
deleted file mode 100644
index d5761d5fdb..0000000000
--- a/src/mbgl/shaders/symbol_sdf.hpp
+++ /dev/null
@@ -1,16 +0,0 @@
-// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
-
-#pragma once
-
-namespace mbgl {
-namespace shaders {
-
-class symbol_sdf {
-public:
- static const char* name;
- static const char* vertexSource;
- static const char* fragmentSource;
-};
-
-} // namespace shaders
-} // namespace mbgl